skill-forge-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@skill-forge-mcpCreate a skill for writing unit tests."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
An MCP server that exposes the Agent Skill creation guide (9 phases) as MCP resources. AI agents retrieve only the phases they need on demand and follow the process to build SKILL.md files.
Quick Start
Claude Code:
claude mcp add skill-forge-mcp -- npx skill-forge-mcpGemini CLI:
gemini mcp add skill-forge-mcp -- npx skill-forge-mcpVS Code (GitHub Copilot) — .vscode/mcp.json:
{
"servers": {
"skill-forge-mcp": {
"command": "npx",
"args": ["skill-forge-mcp"]
}
}
}Cursor:
{
"skill-forge-mcp": {
"command": "npx",
"args": ["skill-forge-mcp"]
}
}{
"mcpServers": {
"skill-forge-mcp": {
"command": "npx",
"args": ["skill-forge-mcp"]
}
}
}Related MCP server: AutoLearn MCP Server
Usage
Ask your agent:
"I want to create a skill for React component design. Follow the SkillForge MCP process."
The agent will automatically:
Fetch the process structure from
process://manifestRead Phase 1 (
process://phase/1) for scoping, run baseline measurementsRecord progress with
mark_progressas it advances through each phaseGenerate the final SKILL.md following Phase 6 guidelines
Use search_process for keyword lookups across phases.
The 9 Phases
Phase | Name | Purpose |
0 | Skill Specification | SKILL.md structure and frontmatter |
1 | Scoping & Baseline | Measure failure patterns; define research scope |
2 | Domain Research | Establish quality criteria and theoretical foundations |
3 | Gap Analysis | Verify whether research alone enables the agent to act |
4 | Deep Implementation Research | Fill gaps with code examples, anti-patterns, validation |
5 | Structuring & Completeness | Confirm coverage across all categories |
6 | Distillation into SKILL.md | Condense into ≤500 lines; maximize token efficiency |
7 | Deploy & Validate | Place, verify spec compliance, security review |
8 | Evaluate & Iterate | Compare against baseline, improve iteratively |
Features
Staged access — retrieve content at phase or section granularity
Cross-phase search — keyword search across all 9 phases
Progress tracking — record and query per-phase completion status
Prompt templates —
create_skillandresume_skillprompts for guided workflowsStructured output —
outputSchema+structuredContenton all tools for programmatic consumptionState persistence — optionally retain progress across sessions
Low overhead — ~1,500 token fixed cost to the context window
API
Resources
URI | Description |
| Full index (JSON) |
| Phase 0–8 content |
Resource Templates
Template | Description |
| Retrieve a single section |
| Batch retrieval (e.g. |
Tools
Tool | Description | Input |
| Keyword search across all phases |
|
| Record phase progress |
|
| Progress summary for all phases |
|
status: "not-started" · "in-progress" · "completed"
Prompts
Prompt | Description |
| Full guided workflow (Phase 0→8). Accepts a |
| Resume from current progress. Checks |
Configuration
Set SKILL_FORGE_PERSIST=true to persist progress to ~/.skill-forge-mcp/state.json:
{
"mcpServers": {
"skill-forge-mcp": {
"command": "npx",
"args": ["skill-forge-mcp"],
"env": { "SKILL_FORGE_PERSIST": "true" }
}
}
}Development
git clone https://github.com/popyson1648/skill-forge-mcp.git
cd skill-forge-mcp
npm install
npm run build
npm test # 52 testssrc/
├── index.ts # Entry point
├── content.ts # Content loading & section extraction
├── search.ts # Cross-phase search
├── state.ts # State management & persistence
├── status.ts # Status table formatter
├── content/ # English content (served)
└── content-ja/ # Japanese translations (developer reference only)
tests/
├── content.test.ts
├── search.test.ts
├── state.test.ts
├── resources.test.ts
└── tools.test.tsRequirements: Node.js >= 18
Contributing
Contributions are welcome! Feel free to open an Issue or submit a Pull Request.
License
MIT
Available Tools
3 toolsget_statusGet StatusARead-onlyIdempotent
Return a summary of all phase progress (not-started/in-progress/completed) and access counts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| phases | Yes | Status of each phase |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the read-only nature is well established. The description adds useful context about what is summarized, but does not disclose additional behaviors such as caching, freshness, or access-count semantics beyond the annotation layer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It conveys the exact capability and even enumerates the status values, making efficient use of space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters), the presence of an output schema, and annotations covering safety/idempotency, the description is complete for an agent to understand what will happen. The only missing aspect is usage differentiation, which is already penalized in the usage_guidelines dimension.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is no parameter ambiguity to resolve. Schema description coverage is effectively 100% for an empty properties object, and the description correctly adds no irrelevant parameter information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Return') and a specific resource ('a summary of all phase progress... and access counts'), which clearly distinguishes it from sibling tools like search_process and mark_progress. The inclusion of the status categories (not-started/in-progress/completed) adds concrete meaning.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does but gives no explicit guidance on when to use it versus alternatives such as search_process or mark_progress. There are no statements like 'use this for an overview' or 'use search_process for detailed filtering', leaving usage to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_progressMark ProgressBIdempotent
Record progress status for a phase. status: 'not-started' | 'in-progress' | 'completed'.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Optional note (e.g., '2 gaps from Phase 3 to address in Phase 4') | |
| status | Yes | Phase status | |
| phaseId | Yes | Phase ID (0-8) |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | New status value |
| phaseId | Yes | Phase ID that was updated |
| updatedAt | Yes | ISO 8601 timestamp of the update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a non-read-only, idempotent, non-destructive write operation, but the description adds little beyond that. It restates the status enum from the schema and does not explain whether an existing status or note is overwritten, appended, or constrained by status transitions. There is no contradiction with the annotations, but also no meaningful additional behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence that names the action, the object, and the allowed status values. It contains no filler, unnecessary clauses, or vague abstractions. The minor redundancy of the enum is acceptable given the brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 3-parameter write tool with full schema coverage, an output schema, and idempotency annotations, the definition is largely sufficient for an agent to call it correctly. The main gap is the lack of explicit guidance for choosing this tool over the read/search siblings, plus no detail about status transition behavior, but neither is critical for basic invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter already has a description and constraints. The tool description adds no new parameter semantics beyond repeating the status enum, which is redundant with the schema. The schema fully documents phaseId, status, and the optional note.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action and target: 'Record progress status for a phase' and explicitly lists the three accepted status values. The verb 'record' contrasts naturally with the read/search nature suggested by sibling names get_status and search_process, making the tool easy to distinguish.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance about when to use this tool versus get_status or search_process. It does not mention that reading status should use get_status or that search_process is for broader process lookup. No exclusions, prerequisites, or alternative routing is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_processSearch ProcessARead-onlyIdempotent
Search all phases of the skill creation process by keyword. Case-insensitive partial match. Returns matching phase IDs, section names, and matched lines.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search keyword (case-insensitive partial match) | |
| maxResults | No | Maximum number of results to return |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | Total number of matches found |
| results | Yes | Array of matching results with location info |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool readOnly and idempotent. The description augments them with concrete behavioral details: case-insensitive partial matching, the scope ('all phases'), and the exact return contents (phase IDs, section names, matched lines). No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences that each carry distinct information: scope, matching rule, and return items. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only search with 2 parameters and an output schema, the description supplies all the behavioral context an agent needs to invoke it correctly: scope, match semantics, and return shape. Sibling differentiation is implicit but sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers both parameters completely, including query's matching semantics and maxResults' bounds/default, so baseline 3 applies. The description doesn't introduce parameter-level semantics beyond what the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Search'), a precise resource ('all phases of the skill creation process'), and the matching modality ('by keyword'). It clearly distinguishes from siblings get_status and mark_progress, which are status/update operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the search use case clear: find matches within skill creation phases by keyword. It does not explicitly name sibling alternatives or give exclusion criteria (e.g., when to use get_status instead), but the intent is unambiguous for a read-only search tool. Lacks an explicit when/when-not statement, so not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v1.1.0- First observed
get_status - First observed
mark_progress - First observed
search_process
TDQS
Scored across 3 tools
Each tool has a clearly distinct role: get_status reads overall progress, search_process searches content across phases, and mark_progress updates a phase status. There is no meaningful overlap or ambiguity between them.
All tool names follow a consistent imperative verb_noun pattern: get_status, search_process, mark_progress. The naming style is uniform, clear, and predictable.
Three tools is on the smaller end for a full server, but it is a reasonable scope for a focused progress-tracking workflow. Each tool serves a necessary function without redundancy.
The core workflow is covered: check progress, search phase content, and update status. A minor gap is the lack of a direct full-phase retrieval tool, but the available tools cover the main use case without dead ends.
Maintenance
Related MCP Connectors
- UnifAPIOAuthcom.unifapi
Hosted MCP server for live public-data APIs and Skills for AI agents.
Governed AI agent skills — one library, distributed to devs and exposed to remote agents over MCP.
Official MCP server for subfeed.app — the cloud for agents. 15+ tools for AI agents to register, build, and deploy other agents. Zero human required. Start here: subfeed.app/skill.md
MCP server for building and testing AI agents with multi-model experimentation and insights.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceAn MCP server that generates skill manifests from GitHub skills directories and provides tools to recommend and download AI agent skills.38 npmApache 2.0
- AlicenseNot gradedqualityDmaintenanceAn MCP server that enables AI agents to dynamically create and reuse executable skills (Python functions) from natural language descriptions, with automatic skill crystallization and real-time MCP spec updates.43MIT
- AlicenseNot gradedqualityBmaintenanceAn MCP server that enables AI agents to interact with the SkillShare registry, including searching, reading, creating, and managing resources like skills, MCP configurations, and notes.MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for SkillDB that enables AI assistants to search, load, and manage AI agent skills directly.78 npmMIT