← pm-claude-skills-mcp

pm-claude-skills-mcp 77.0.0

npm · pm-claude-skills · current release

8
Tools
1117
Resources
0
Templates
1117
Prompts

Observation

Observed 2026-08-18T13:41:06.234Z using mcpSecurity-inventory. Status: partial. Negotiated protocol: 2025-06-18.

Server capabilities
{
  "tools": {},
  "prompts": {},
  "resources": {}
}

Tools 8

ToolCategoryAnnotationsRisk
check_contrastCompute the real WCAG 2.1 contrast ratio and APCA lightness contrast for a foreground/background pair, and return the nearest passing colour in the same hue. Use whenever a skill needs a contrast number — accessibility-audit, design-system-audit, design-handoff-brief, brand-guidelines, any Figma review. A ratio cannot be judged by eye: #777777 on white is 4.478 (fails AA) and #767676 is 4.542 (passes), and no amount of looking separates those. Deterministic arithmetic — no model call, no network.
Input schema
{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "foreground": {
      "type": "string",
      "description": "The text colour, as a six-digit hex, e.g. \"#8ab4f8\"."
    },
    "background": {
      "type": "string",
      "description": "The colour it sits on, as a six-digit hex, e.g. \"#ffffff\"."
    },
    "level": {
      "type": "string",
      "enum": [
        "AA",
        "AA-large",
        "AAA"
      ],
      "description": "The bar to clear. Defaults to AA (4.5:1), the legal standard in most jurisdictions."
    }
  },
  "required": [
    "foreground",
    "background"
  ]
}
Output schema
{
  "type": "object",
  "properties": {
    "ratio": {
      "type": "number",
      "description": "WCAG 2.1 contrast ratio, 1 to 21."
    },
    "passes": {
      "type": "boolean",
      "description": "Whether it clears the requested level."
    },
    "grade": {
      "type": "string",
      "description": "fail / aa-large / aa / aaa."
    },
    "apca": {
      "type": "number",
      "description": "APCA Lc, signed. Positive is dark text on light."
    },
    "apcaUse": {
      "type": "string",
      "description": "What APCA says this contrast is good enough for."
    },
    "nearestPassing": {
      "type": "string",
      "description": "A close colour to the foreground that clears the level, holding the hue roughly steady. Null if it already passes. For an exact perceptual answer on saturated colours, run `npx notugly fix <fg> <bg>`, which walks OKLCh lightness instead of RGB."
    },
    "says": {
      "type": "string",
      "description": "A one-line summary suitable for pasting into an audit table."
    }
  },
  "required": [
    "ratio",
    "passes",
    "grade",
    "says"
  ]
}
Annotations
{
  "title": "Check colour contrast",
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": false
}
Read only · Non-destructive
get_skillGet the full instructions (the SKILL.md body) for one skill by name. Apply these instructions to the user's task.
Input schema
{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "name": {
      "type": "string",
      "description": "The exact skill id, e.g. \"rice-prioritisation\" (from list_skills / search_skills)."
    }
  },
  "required": [
    "name"
  ]
}
Output schema
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "The skill id."
    },
    "title": {
      "type": "string",
      "description": "Human-readable title."
    },
    "instructions": {
      "type": "string",
      "description": "The full SKILL.md body to apply to the task."
    }
  },
  "required": [
    "name",
    "instructions"
  ]
}
Annotations
{
  "title": "Get a skill",
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": false
}
Read only · Non-destructive
get_skill_inputsGet the structured inputs a skill declares (parsed from its Required Inputs section) as a JSON-schema-shaped object — render a form or collect fields instead of sending a blob of free text. Pass the collected fields to run_skill as `inputs`.
Input schema
{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "name": {
      "type": "string",
      "description": "The exact skill id (from list_skills / search_skills)."
    }
  },
  "required": [
    "name"
  ]
}
Output schema
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "The skill id."
    },
    "schema": {
      "type": "object",
      "description": "JSON-schema object: one string property per declared input; required lists the non-optional ones."
    }
  },
  "required": [
    "name",
    "schema"
  ]
}
Annotations
{
  "title": "Get skill input schema",
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": false
}
Read only · Non-destructive
get_workflowGet one workflow recipe by id: the ordered list of skills to run and what each produces. Run each step in order with get_skill, carrying every output forward as context for the next.
Input schema
{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "id": {
      "type": "string",
      "description": "The workflow id, e.g. \"ship-a-feature\" (from list_workflows)."
    }
  },
  "required": [
    "id"
  ]
}
Output schema
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Recipe id."
    },
    "name": {
      "type": "string",
      "description": "Recipe name."
    },
    "lifecycle": {
      "type": "string",
      "description": "The lifecycle stages it spans."
    },
    "summary": {
      "type": "string",
      "description": "What the recipe accomplishes."
    },
    "steps": {
      "type": "array",
      "description": "Ordered steps; run each with get_skill, carrying output forward.",
      "items": {
        "type": "object",
        "properties": {
          "skill": {
            "type": "string",
            "description": "The skill id to run at this step."
          },
          "produces": {
            "type": "string",
            "description": "What this step produces."
          },
          "passes": {
            "type": [
              "string",
              "null"
            ],
            "description": "What to carry forward to the next step."
          }
        },
        "required": [
          "skill"
        ]
      }
    }
  },
  "required": [
    "id",
    "name",
    "steps"
  ]
}
Annotations
{
  "title": "Get a workflow recipe",
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": false
}
Read only · Non-destructive
list_skillsList available professional skills (name, title, tier, one-line description). Optionally filter by maturity tier.
Input schema
{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "tier": {
      "type": "string",
      "enum": [
        "production",
        "stable",
        "experimental"
      ],
      "description": "Optional. Only return skills in this maturity tier."
    }
  }
}
Output schema
{
  "type": "object",
  "properties": {
    "count": {
      "type": "integer",
      "description": "Number of skills returned."
    },
    "skills": {
      "type": "array",
      "description": "The matching skills.",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The skill id (use with get_skill)."
          },
          "title": {
            "type": "string",
            "description": "Human-readable title."
          },
          "tier": {
            "type": "string",
            "description": "Maturity tier: production | stable | experimental."
          },
          "description": {
            "type": "string",
            "description": "One-line summary of what the skill does."
          }
        },
        "required": [
          "name",
          "title",
          "description"
        ]
      }
    }
  },
  "required": [
    "count",
    "skills"
  ]
}
Annotations
{
  "title": "List skills",
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": false
}
Read only · Non-destructive
list_workflowsList workflow recipes — named chains that run several skills in sequence, passing each output forward (e.g. ship-a-feature, close-the-quarter). Use when a task spans multiple steps end to end.
Input schema
{
  "type": "object",
  "additionalProperties": false,
  "properties": {}
}
Output schema
{
  "type": "object",
  "properties": {
    "workflows": {
      "type": "array",
      "description": "Available workflow recipes.",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Recipe id (use with get_workflow)."
          },
          "name": {
            "type": "string",
            "description": "Recipe name."
          },
          "lifecycle": {
            "type": "string",
            "description": "The lifecycle stages it spans."
          },
          "summary": {
            "type": "string",
            "description": "What the recipe accomplishes."
          },
          "skills": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The ordered skill ids in the chain."
          }
        },
        "required": [
          "id",
          "name",
          "skills"
        ]
      }
    }
  },
  "required": [
    "workflows"
  ]
}
Annotations
{
  "title": "List workflow recipes",
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": false
}
Read only · Non-destructive
run_skillExecute a skill on the given input and return the finished artifact. Uses MCP sampling: the generation runs on the CLIENT's own model, so no API key is needed by this server. Falls back with a clear message if the client does not support sampling (use get_skill and apply it yourself instead).
Input schema
{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "name": {
      "type": "string",
      "description": "The skill to run (from list_skills / search_skills)."
    },
    "input": {
      "type": "string",
      "description": "The user's input for the skill — the raw notes, brief, or task."
    },
    "inputs": {
      "type": "object",
      "description": "Optional structured fields (from get_skill_inputs) — merged into the input as labeled lines.",
      "additionalProperties": {
        "type": "string"
      }
    }
  },
  "required": [
    "name"
  ]
}
Annotations
{
  "title": "Run a skill",
  "readOnlyHint": true,
  "openWorldHint": false
}
Read only · —
search_skillsSearch skills by keyword across name, description, and body. Returns the best-matching skills, ranked.
Input schema
{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "query": {
      "type": "string",
      "description": "Keywords describing the task, e.g. \"prioritise backlog\" or \"customer churn\"."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "description": "Maximum number of results to return (default 10)."
    }
  },
  "required": [
    "query"
  ]
}
Output schema
{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "The query that was searched."
    },
    "matches": {
      "type": "array",
      "description": "Matching skills, best first.",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The skill id (use with get_skill)."
          },
          "title": {
            "type": "string",
            "description": "Human-readable title."
          },
          "tier": {
            "type": "string",
            "description": "Maturity tier: production | stable | experimental."
          },
          "description": {
            "type": "string",
            "description": "One-line summary of what the skill does."
          }
        },
        "required": [
          "name",
          "title",
          "description"
        ]
      }
    }
  },
  "required": [
    "query",
    "matches"
  ]
}
Annotations
{
  "title": "Search skills",
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": false
}
Read only · Non-destructive

Resources 1117

Resource templates 0

Prompts 1117

Let’s talk about MCP security.

Share your details and our security team will contact you.