An MCP server that makes your AI agent learn and evolve โ one skill at a time.
Project description
๐ ๏ธ SkillForge
An MCP server that makes your AI agent learn and evolve โ one skill at a time.
Skills are reusable instructions that get better with every conversation.
โจ 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
โ
โผ
๐ค Sub-agent optimizes the skill
โ
โผ
๐พ Skill saved (auto-backed up)
โ
โผ
โ
Next task uses improved skill
๐ 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"]
}
}
}
๐ก Alternative: install from source
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
โโโ ๐ skill_manager.py # Core CRUD, backup, restore logic
โโโ ๐ง tools/
โ โโโ ๐ discovery.py # list_skills, get_skill
โ โโโ โ๏ธ crud.py # save_skill, delete_skill
โ โโโ ๐พ backup.py # list_backups, restore_skill
โ โโโ ๐ง 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 |
|---|---|
~/.skillforge/skills/ |
๐ Active skill library |
~/.skillforge/backups/ |
๐๏ธ Automatic version history |
๐ Override with
SKILLFORGE_SKILLS_DIRandSKILLFORGE_BACKUP_DIRenvironment variables.
๐ง Available Tools
| Tool | Description | Who Calls It |
|---|---|---|
๐ list_skills |
List all skills (mandatory first call!) | ๐ค Agent |
๐ get_skill |
Load full skill instructions | ๐ค Agent |
โ๏ธ save_skill |
Create or update a skill | ๐ค Sub-agent |
๐๏ธ delete_skill |
Remove a skill (with confirmation) | ๐ค Sub-agent |
๐ list_backups |
View version history for a skill | ๐ค Agent |
โช restore_skill |
Roll back to a previous version | ๐ค Agent |
๐ get_skill_guide |
Load the skill writing guide | ๐ค Sub-agent |
๐ง request_skill_optimization |
Trigger skill improvement | ๐ค Agent |
๐ get_optimization_history |
View optimization log | ๐ค Agent |
๐ 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.
Be specific about trigger contexts.
---
# Skill Instructions
Your markdown instructions here...
๐ท๏ธ Frontmatter Fields
| Field | Required | Description |
|---|---|---|
name |
โ | Identifier (lowercase-with-hyphens, max 64 chars) |
description |
โ | Trigger conditions โ WHAT it does + WHEN to use it |
disable-model-invocation |
โ | true = only user can invoke |
user-invocable |
โ | false = only LLM can invoke |
allowed-tools |
โ | Tools allowed without per-use approval |
context |
โ | fork = run in isolated sub-agent |
๐ง 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
- โ Sub-agent isolation โ skill edits don't interrupt your main task
๐ 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 |
๐ฃ๏ธ Roadmap
- ๐ 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.
Built with โค๏ธ by CatVinci Studio
Forging better AI, one skill at a time. ๐จ
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file skillforge_mcp-0.1.0.tar.gz.
File metadata
- Download URL: skillforge_mcp-0.1.0.tar.gz
- Upload date:
- Size: 67.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
48f9c9a7dc1a3342760fb0c42b556d5fa5d493f68f2ced3a24d4176b8f0c4d37
|
|
| MD5 |
3605609f5d1865e25c69596b62838913
|
|
| BLAKE2b-256 |
e6bfda2253dc59162946432cbcc4a0ecfa82083994541fdc2c71dff6c059be74
|
Provenance
The following attestation bundles were made for skillforge_mcp-0.1.0.tar.gz:
Publisher:
publish.yml on CatVinci-Studio/skillForge
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
skillforge_mcp-0.1.0.tar.gz -
Subject digest:
48f9c9a7dc1a3342760fb0c42b556d5fa5d493f68f2ced3a24d4176b8f0c4d37 - Sigstore transparency entry: 1227846218
- Sigstore integration time:
-
Permalink:
CatVinci-Studio/skillForge@3fbd374b3faf2de49f4dbda98f68eeafddbfd299 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/CatVinci-Studio
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@3fbd374b3faf2de49f4dbda98f68eeafddbfd299 -
Trigger Event:
release
-
Statement type:
File details
Details for the file skillforge_mcp-0.1.0-py3-none-any.whl.
File metadata
- Download URL: skillforge_mcp-0.1.0-py3-none-any.whl
- Upload date:
- Size: 20.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f7560834ef0a08135f3edad77a4d0de32485fc0e0b5bc8941e6fc4da58baa075
|
|
| MD5 |
385694a4cbbaa65a6c236b3a5e504c23
|
|
| BLAKE2b-256 |
cc2427ec7408a732c671c55ede4b41058d8c48e6086f724ecb2492a838d617f0
|
Provenance
The following attestation bundles were made for skillforge_mcp-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on CatVinci-Studio/skillForge
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
skillforge_mcp-0.1.0-py3-none-any.whl -
Subject digest:
f7560834ef0a08135f3edad77a4d0de32485fc0e0b5bc8941e6fc4da58baa075 - Sigstore transparency entry: 1227846284
- Sigstore integration time:
-
Permalink:
CatVinci-Studio/skillForge@3fbd374b3faf2de49f4dbda98f68eeafddbfd299 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/CatVinci-Studio
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@3fbd374b3faf2de49f4dbda98f68eeafddbfd299 -
Trigger Event:
release
-
Statement type: