SkillForge
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., "@SkillForge save a skill: always use f-strings in Python"
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.
โจ What is SkillForge?
SkillForge is a Model Context Protocol (MCP) server that gives your AI agent a persistent, evolving skill library. Instead of repeating the same corrections and preferences every session, SkillForge captures them as skills โ structured instructions that the agent loads and follows automatically.
๐ก Think of it as muscle memory for your AI โ it learns your conventions once and applies them forever.
๐ The Feedback Loop
๐ค User gives feedback
โ
โผ
๐ Agent detects improvement signal
โ
โผ
๐ Triage: reuse / improve / create?
โ
โผ
โ๏ธ Draft skill following guide + plan
โ
โผ
๐ก๏ธ Validation gate (reject or pass)
โ
โผ
๐พ Skill saved (auto-backed up)
โ
โผ
โ
Next task uses improved skillRelated MCP server: mcp_coordinator
๐ Quick Start
๐ฆ Installation
# Install from PyPI (recommended)
pip install skillforge-mcp
# Or with uv
uv pip install skillforge-mcpโก Run the Server
# Run directly
skillforge
# Or run without installing via uvx
uvx skillforge-mcp๐ Connect to Claude Code
Add to your MCP config:
{
"mcpServers": {
"skillforge": {
"command": "uvx",
"args": ["skillforge-mcp"]
}
}
}git clone https://github.com/CatVinci-Studio/skillForge.git
cd skillForge
pip install -e .๐งฉ Architecture
src/skillforge/
โโโ ๐ server.py # MCP server definition & prompts
โโโ ๐จ response.py # Response formatting & feedback monitor
โโโ ๐ก๏ธ validator.py # Hard validation gates for skill quality
โโโ ๐ skill_manager.py # Core CRUD, backup, restore logic
โโโ ๐ง tools/
โ โโโ ๐ discovery.py # list_skills, get_skill
โ โโโ โ๏ธ crud.py # save_skill (with validation), delete_skill
โ โโโ ๐พ backup.py # list_backups, restore_skill
โ โโโ ๐ triage.py # triage_skill_request
โ โโโ ๐ง optimization.py # get_skill_guide, request_skill_optimization
โโโ ๐ guide/
โโโ skill_writing_guide.md # Best practices for skill authoring๐ Runtime Data
SkillForge stores its data in ~/.skillforge/:
Directory | Purpose |
| ๐ Active skill library |
| ๐๏ธ Automatic version history |
๐ Override with
SKILLFORGE_SKILLS_DIRandSKILLFORGE_BACKUP_DIRenvironment variables.
๐ง Available Tools
Tool | Description |
๐ | List all skills โ mandatory first call before any task |
๐ | Load full skill instructions by name |
๐ | Check existing skills before creating/improving โ prevents duplication |
๐ง | Get a structured plan for skill improvement |
๐ | Load the skill writing best practices guide |
โ๏ธ | Create or update a skill โ validates and rejects if quality is insufficient |
๐๏ธ | Remove a skill (two-step confirmation, auto-backup) |
๐ | View version history for a skill |
โช | Roll back to a previous version |
๐ | View the feedback log that drove skill changes |
๐ก๏ธ Quality Gates (v0.2.0)
Unlike prompt-based quality control that depends on LLM compliance, SkillForge enforces quality through hard validation gates in save_skill:
Check | Type | Rule |
๐ Description length | โ Error | Must be โฅ 50 characters |
๐ Body length | โ Error | Must be 3โ500 lines |
๐ Description โ name | โ Error | Description must explain, not repeat the name |
๐ฏ Trigger conditions | โ ๏ธ Warning | Should include "when/whenever/use this skill..." |
๐ฃ๏ธ Rigid language | โ ๏ธ Warning | Prefer reasoning over "YOU MUST ALWAYS" imperatives |
๐ Description too long | โ ๏ธ Warning | Keep under 1000 chars, move details to body |
๐ด Errors block the save โ fix them and retry. ๐ก Warnings allow the save but flag areas for improvement.
๐ Skill Triage
Before creating a new skill, triage_skill_request returns all existing skills so the LLM can decide:
Decision | Condition | Action |
REUSE | Existing skill covers the need | Load it with |
IMPROVE | Existing skill partially covers it | Optimize with |
CREATE | No relevant skill exists | Create via |
๐ Skill Format
Each skill lives in its own directory as a SKILL.md file with YAML frontmatter:
---
name: my-skill
description: >
What this skill does and when to trigger it.
Use this skill whenever the user asks for...
Also activate when...
---
# Skill Instructions
Your markdown instructions here...๐ท๏ธ Frontmatter Fields
Field | Required | Description |
| โ | Identifier ( |
| โ | Trigger conditions โ WHAT it does + WHEN to use it (โฅ 50 chars) |
| โ |
|
| โ |
|
| โ | Tools allowed without per-use approval |
| โ |
|
๐ง How Optimization Works
SkillForge continuously monitors conversations for improvement signals:
Signal | Example | Action |
๐ด Correction | "No, don't mock the database" | Update relevant skill |
๐ก Preference | "Always use snake_case" | Create or update skill |
๐ต Pattern | Same structure used 3+ times | Bundle into new skill |
๐ข Explicit | "Add this to the review skill" | Direct skill edit |
๐ Safety Guarantees
โ Auto-backup before every save and delete
โ One-click restore from any backup timestamp
โ Path traversal protection on all file operations
โ Atomic writes with file locking for optimization logs
โ Hard validation gates โ quality enforced at the tool boundary, not by prompt
๐ Why SkillForge?
Without SkillForge | With SkillForge |
๐ค Repeat the same corrections every session | ๐ง Agent remembers and applies automatically |
๐ Conventions scattered across docs | ๐ฆ Single source of truth per topic |
๐ฒ Inconsistent agent behavior | โ Deterministic, skill-guided responses |
๐ No learning from feedback | ๐ Skills evolve with every interaction |
๐ค Hope the LLM follows quality guidelines | ๐ก๏ธ Hard validation rejects low-quality skills |
๐ฃ๏ธ Roadmap
๐ก๏ธ Hard validation gates for skill quality
๐ Skill triage to prevent duplication
๐ Skill sharing & import from remote repositories
๐ Analytics dashboard for skill usage & effectiveness
๐ Cross-skill dependency management
๐งช Skill testing framework with evaluation harness
๐ช Community skill marketplace
๐ค Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
๐ License
This project is licensed under the MIT License โ see the LICENSE file for details.
Available Tools
10 toolsdelete_skillA
Delete a skill permanently. Auto-backs up before deletion.
This is a destructive operation โ the skill will be removed from the active library. A backup is always created so it can be restored later if needed.
Args: name: Skill identifier to delete. confirm: Must be True to actually delete. This two-step confirmation prevents accidental deletions.
Inputs: name (required), confirm. Returns: result
get_optimization_historyA
View the optimization history for a skill.
Use this to understand how a skill has evolved over time and what feedback drove each change. Helpful before making further edits to avoid reverting previous improvements.
Args: skill_name: The skill to check.
Inputs: skill_name (required). Returns: result
get_skillA
Read the full content of a skill.
Call this to load a skill's complete instructions before executing a task in that skill's domain. The returned body contains actionable guidelines โ treat them as project-level requirements, not suggestions.
Args: name: The skill identifier (directory name).
Inputs: name (required). Returns: result
get_skill_guideA
Get the Skill Writing & Optimization Guide.
Call this BEFORE creating or modifying any skill. It covers: file format, writing principles, description optimization, and iterative improvement.
WHY: Skills that ignore the guide tend to be either too rigid (walls of MUST/NEVER) or too vague (no actionable instructions). The guide teaches how to write skills that actually help.
Inputs: no named parameters. Returns: result
list_backupsA
List all backups for a skill, newest first.
Use this to inspect version history before restoring or to verify that a backup was created after a save/delete operation.
Args: name: The skill identifier.
Inputs: name (required). Returns: result
list_skillsA
๐ด MANDATORY FIRST CALL โ Call this before starting ANY task.
Returns all available skills with name and description. Review each description โ if relevant to your current task, call get_skill to load full instructions.
WHY: Skills encode hard-won conventions and user preferences. Skipping this step means you will miss domain-specific guidance and repeat mistakes that have already been corrected.
Inputs: no named parameters. Returns: result
request_skill_optimizationA
Prepare and return a structured optimization plan for a skill.
Call this when user feedback indicates a skill needs improvement or a new skill should be created. Returns a step-by-step plan that you can follow directly โ no sub-agent required.
Recommended workflow:
Call triage_skill_request first to check for existing skills
Call this tool to get the optimization plan
Call get_skill_guide to understand writing best practices
Draft the skill content following the plan and guide
Call save_skill โ it will validate and reject if quality is insufficient
Trigger signals to watch for:
User corrects your approach โ existing skill may need updating
User states a preference ('always X', 'never Y') โ skill candidate
Repeated pattern across conversation โ new skill candidate
User explicitly mentions skills โ act immediately
Args: skill_name: Which skill to optimize (or create if it doesn't exist). feedback: The user feedback that triggered this optimization. context: Optional additional context about what went wrong or what the user expects.
Inputs: skill_name (required), feedback (required), context. Returns: result
restore_skillA
Restore a skill from a specific backup. Current version is backed up first.
Use this when a skill optimization went wrong and you need to roll back. The current version is always saved before overwriting, so no data is lost.
Args: name: The skill identifier. timestamp: Backup timestamp (from list_backups output).
Inputs: name (required), timestamp (required). Returns: result
save_skillA
Create or update a skill. Validates before saving, auto-backs up before overwrite.
This tool enforces quality gates โ if the skill fails validation, it will be REJECTED with specific error messages explaining what to fix. Fix the issues and call save_skill again.
Validation checks:
Description must be >= 50 chars and explain WHAT + WHEN
Body must be 3-500 lines of actionable instructions
Description should include trigger conditions
Body should avoid overly rigid language (explain WHY instead)
Args: name: Skill identifier (lowercase, hyphens, max 64 chars). description: What the skill does and when to trigger (>= 50 chars). Front-load the key use case. Include trigger conditions like 'Use this skill when...' or 'Activate whenever...'. body: Markdown body (3-500 lines). Follow the skill writing guide. extra_frontmatter: Optional JSON of additional frontmatter fields.
Inputs: name (required), description (required), body (required), extra_frontmatter. Returns: result
triage_skill_requestA
Analyze intent against existing skills to decide the best action.
Call this BEFORE creating or optimizing a skill. It returns all existing skills with their descriptions so you can determine:
REUSE: An existing skill already covers this need (match >= 80%). โ Just call get_skill to load it.
IMPROVE: An existing skill partially covers this (match 50-79%). โ Call request_skill_optimization with the existing skill name.
CREATE: No existing skill is relevant (match < 50%). โ Call request_skill_optimization with a new skill name.
You (the LLM) make the routing decision โ this tool provides the information you need to decide.
Args: intent: What the user wants or the feedback that triggered this. Be specific โ include the domain, task type, and context.
Inputs: intent (required). Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelogโฆ
TDQS
Scored across 10 tools
Each tool has a clear, unique purpose. For example, get_skill retrieves full skill content, get_skill_guide provides the writing guide, triage_skill_request analyzes intent, and request_skill_optimization creates an optimization plan. No two tools overlap in function.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., delete_skill, get_optimization_history, list_skills). The naming style is uniform and predictable across the entire set.
With 10 tools, the server covers the full skill management lifecycle without being excessive. Each tool earns its place, and the count feels balanced for the domain.
The tool set covers the complete lifecycle: listing, reading, creating/updating (save), deleting, restoring, triaging, optimizing, and reviewing history/backups. There are no obvious gaps for a skill management system.
Maintenance
Related MCP Connectors
MCP server for building and testing AI agents with multi-model experimentation and insights.
Hosted MCP server and Agent Skills for specs, engineering threads, and project memory.
Official MCP server for Agentwork โ delegate tasks to AI agents with human-in-the-loop
Cloud-hosted MCP server for durable AI memory
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that provides AI agents with persistent, multi-layered memory inspired by the human brain, including consolidation, self-reflection, and generative replay.1MIT
- AlicenseNot gradedqualityDmaintenanceA self-improving coding agent MCP server that enables code execution, semantic memory, and reusable skills via sub-agents, turning your AI client into a meta-operating system.2AGPL 3.0
- AlicenseNot gradedqualityDmaintenanceA production-ready MCP server that equips AI agents with dynamic, persistent, and executable skills. It enables secure script execution and progressive disclosure to reduce context window usage.19 npmMIT
- AlicenseNot gradedqualityDmaintenanceA local MCP server that gives AI coding agents persistent memory and context across sessions.4 npmMIT