From umbraco-mcp-skills
Add a new tool to an existing MCP collection. Creates the tool file, updates the collection index, optionally adds integration tests and eval tests. Use when adding new API endpoints to collections already created by '/build-tools'.
npx claudepluginhub umbraco/umbraco-mcp-base --plugin umbraco-mcp-skillsThis skill uses the workspace's default tool permissions.
Add one or more new tools to an existing MCP collection. This skill handles creating the tool file, updating the collection index, and optionally adding integration tests and eval tests.
Applies Acme Corporation brand guidelines including colors, fonts, layouts, and messaging to generated PowerPoint, Excel, and PDF documents.
Builds DCF models with sensitivity analysis, Monte Carlo simulations, and scenario planning for investment valuation and risk assessment.
Calculates profitability (ROE, margins), liquidity (current ratio), leverage, efficiency, and valuation (P/E, EV/EBITDA) ratios from financial statements in CSV, JSON, text, or Excel for investment analysis.
Add one or more new tools to an existing MCP collection. This skill handles creating the tool file, updating the collection index, and optionally adding integration tests and eval tests.
Use this skill when:
/build-tools skipped the collection because it already has an index.tsBefore running, ensure:
src/umbraco-api/tools/{collection}/index.ts)src/umbraco-api/api/generated/ exists — if not, run npm run generate)npm run compile/add-tool form)/add-tool form "copy form endpoint")If no arguments are provided, ask the user which collection and what endpoint to add.
This skill orchestrates the following agents:
| Agent | When to use |
|---|---|
mcp-tool-creator | Creating the tool file (Step 3) |
mcp-tool-description-writer | Writing the tool description (Step 3) |
mcp-tool-reviewer | Reviewing the new tool for LLM-readiness (Step 5) |
integration-test-creator | Creating an integration test for the new tool (Step 6) |
eval-test-creator | Updating eval tests to cover the new tool (Step 7) |
ONE TOOL AT A TIME. Create one tool file, compile, verify, then move to the next if adding multiple.
RUN COMMANDS SEPARATELY. Always run compile and test as separate Bash calls. Never chain with &&.
DO NOT RECREATE EXISTING INFRASTRUCTURE. The collection index, test setup, builders, and helpers already exist. This skill only adds new files and updates existing ones.
Read the arguments to determine:
If no operation hint was given, read .discover.json and the Swagger spec to identify operations that don't have tool files yet. Present the options to the user and ask which to add.
Read the existing collection to understand current patterns:
src/umbraco-api/tools/{collection}/index.ts — current tool exports and collection metadatasrc/umbraco-api/api/generated/ — to find the client method and Zod schemas for the new endpointIf the collection doesn't exist, tell the user to run /build-tools {collection} first.
Fetch the swagger spec from the swaggerUrl in .discover.json:
curl -sk {swaggerUrl}
Find the operation matching the requested endpoint. Collect:
Use the mcp-tool-creator agent, then the mcp-tool-description-writer agent.
Create the tool file following the existing patterns in the collection. Use the same conventions for:
get/, post/, put/, delete/ subdirectories){action}-{entity}.ts)| HTTP Method | File pattern | Slice | Annotations |
|---|---|---|---|
| GET (single) | get/get-{entity}.ts | read | readOnlyHint: true |
| GET (list) | get/list-{entities}.ts | list | readOnlyHint: true |
| GET (search) | get/search-{entities}.ts | search | readOnlyHint: true |
| POST | post/create-{entity}.ts | create | destructiveHint: false, idempotentHint: false |
| PUT/PATCH | put/update-{entity}.ts | update | idempotentHint: true |
| DELETE | delete/delete-{entity}.ts | delete | destructiveHint: true |
Add the new tool to src/umbraco-api/tools/{collection}/index.ts:
tools arrayCompile after updating:
npm run compile
Fix any TypeScript errors before proceeding.
mcp-tool-reviewerRun the mcp-tool-reviewer agent on the new tool only (not the entire collection). Flag any issues.
Check if the collection has integration tests (src/umbraco-api/tools/{collection}/__tests__/setup.ts).
If tests exist:
integration-test-creator agent to create a test file for the new toolsetup.js, use the same builder)src/umbraco-api/tools/{collection}/__tests__/{action}-{entity}.test.tsnpm run compilenpm test -- __tests__/{collection}/{action}-{entity}.test.tsIf tests don't exist, skip — tell the user they can run /build-tools-tests {collection} to generate the full test suite.
Check if the collection has eval tests (tests/evals/{collection}-*.test.ts).
If eval tests exist:
eval-test-creator agent to create a new scenarionpm run build then npm run test:evals -- --testPathPattern="{collection}"If eval tests don't exist, skip — tell the user they can run /build-evals {collection} to generate eval tests.
Report what was done:
If adding multiple tools, repeat steps 3-7 for each tool.
After running, the new tool will be at:
src/umbraco-api/tools/{collection}/
├── {method}/
│ └── {action}-{entity}.ts # New tool file
├── index.ts # Updated with new export
└── __tests__/
└── {action}-{entity}.test.ts # New test (if tests exist)