skillforge-mcp 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- skillforge_mcp-0.1.0/.github/workflows/publish.yml +44 -0
- skillforge_mcp-0.1.0/.gitignore +31 -0
- skillforge_mcp-0.1.0/LICENSE +21 -0
- skillforge_mcp-0.1.0/PKG-INFO +257 -0
- skillforge_mcp-0.1.0/README.md +231 -0
- skillforge_mcp-0.1.0/pyproject.toml +42 -0
- skillforge_mcp-0.1.0/src/skillforge/__init__.py +3 -0
- skillforge_mcp-0.1.0/src/skillforge/guide/skill_writing_guide.md +117 -0
- skillforge_mcp-0.1.0/src/skillforge/response.py +38 -0
- skillforge_mcp-0.1.0/src/skillforge/server.py +154 -0
- skillforge_mcp-0.1.0/src/skillforge/skill_manager.py +322 -0
- skillforge_mcp-0.1.0/src/skillforge/tools/__init__.py +1 -0
- skillforge_mcp-0.1.0/src/skillforge/tools/backup.py +59 -0
- skillforge_mcp-0.1.0/src/skillforge/tools/crud.py +96 -0
- skillforge_mcp-0.1.0/src/skillforge/tools/discovery.py +55 -0
- skillforge_mcp-0.1.0/src/skillforge/tools/optimization.py +133 -0
- skillforge_mcp-0.1.0/uv.lock +897 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
name: ๐ฆ Publish to PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
|
+
|
|
7
|
+
permissions:
|
|
8
|
+
id-token: write # Required for trusted publishing
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
build:
|
|
12
|
+
name: ๐จ Build distribution
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
steps:
|
|
15
|
+
- uses: actions/checkout@v4
|
|
16
|
+
|
|
17
|
+
- name: Install uv
|
|
18
|
+
uses: astral-sh/setup-uv@v4
|
|
19
|
+
|
|
20
|
+
- name: Build package
|
|
21
|
+
run: uv build
|
|
22
|
+
|
|
23
|
+
- name: Upload artifacts
|
|
24
|
+
uses: actions/upload-artifact@v4
|
|
25
|
+
with:
|
|
26
|
+
name: dist
|
|
27
|
+
path: dist/
|
|
28
|
+
|
|
29
|
+
publish:
|
|
30
|
+
name: ๐ Publish to PyPI
|
|
31
|
+
needs: build
|
|
32
|
+
runs-on: ubuntu-latest
|
|
33
|
+
environment:
|
|
34
|
+
name: pypi
|
|
35
|
+
url: https://pypi.org/p/skillforge-mcp
|
|
36
|
+
steps:
|
|
37
|
+
- name: Download artifacts
|
|
38
|
+
uses: actions/download-artifact@v4
|
|
39
|
+
with:
|
|
40
|
+
name: dist
|
|
41
|
+
path: dist/
|
|
42
|
+
|
|
43
|
+
- name: Publish to PyPI
|
|
44
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
*.egg-info/
|
|
6
|
+
*.egg
|
|
7
|
+
dist/
|
|
8
|
+
build/
|
|
9
|
+
*.whl
|
|
10
|
+
|
|
11
|
+
# Virtual environments
|
|
12
|
+
.venv/
|
|
13
|
+
venv/
|
|
14
|
+
env/
|
|
15
|
+
|
|
16
|
+
# IDE
|
|
17
|
+
.idea/
|
|
18
|
+
.vscode/
|
|
19
|
+
*.swp
|
|
20
|
+
*.swo
|
|
21
|
+
*~
|
|
22
|
+
|
|
23
|
+
# OS
|
|
24
|
+
.DS_Store
|
|
25
|
+
Thumbs.db
|
|
26
|
+
|
|
27
|
+
# uv
|
|
28
|
+
.python-version
|
|
29
|
+
|
|
30
|
+
# SkillForge runtime data
|
|
31
|
+
.skillforge/
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 CatVinci Studio
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: skillforge-mcp
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: An MCP server that makes your AI agent learn and evolve โ one skill at a time.
|
|
5
|
+
Project-URL: Homepage, https://github.com/CatVinci-Studio/skillForge
|
|
6
|
+
Project-URL: Repository, https://github.com/CatVinci-Studio/skillForge
|
|
7
|
+
Project-URL: Issues, https://github.com/CatVinci-Studio/skillForge/issues
|
|
8
|
+
Author-email: CatVinci Studio <catvinci.studio@gmail.com>
|
|
9
|
+
License: MIT
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Keywords: agent,ai,claude,llm,mcp,model-context-protocol,skills
|
|
12
|
+
Classifier: Development Status :: 4 - Beta
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
20
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
21
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
22
|
+
Requires-Python: >=3.10
|
|
23
|
+
Requires-Dist: mcp[cli]>=1.0.0
|
|
24
|
+
Requires-Dist: pyyaml>=6.0
|
|
25
|
+
Description-Content-Type: text/markdown
|
|
26
|
+
|
|
27
|
+
<p align="center">
|
|
28
|
+
<img src="https://img.shields.io/badge/MCP-Server-blueviolet?style=for-the-badge&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJ3aGl0ZSI+PHBhdGggZD0iTTEyIDJMMiA3bDEwIDUgMTAtNS0xMC01ek0yIDE3bDEwIDUgMTAtNS0xMC01LTEwIDV6TTIgMTJsMTAgNSAxMC01LTEwLTUtMTAgNXoiLz48L3N2Zz4=" alt="MCP Server"/>
|
|
29
|
+
<img src="https://img.shields.io/badge/python-โฅ3.10-3776AB?style=for-the-badge&logo=python&logoColor=white" alt="Python"/>
|
|
30
|
+
<img src="https://img.shields.io/badge/license-MIT-green?style=for-the-badge" alt="License"/>
|
|
31
|
+
<img src="https://img.shields.io/badge/status-beta-orange?style=for-the-badge" alt="Status"/>
|
|
32
|
+
</p>
|
|
33
|
+
|
|
34
|
+
<h1 align="center">๐ ๏ธ SkillForge</h1>
|
|
35
|
+
|
|
36
|
+
<p align="center">
|
|
37
|
+
<strong>An MCP server that makes your AI agent learn and evolve โ one skill at a time.</strong>
|
|
38
|
+
</p>
|
|
39
|
+
|
|
40
|
+
<p align="center">
|
|
41
|
+
<em>Skills are reusable instructions that get better with every conversation.</em>
|
|
42
|
+
</p>
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## โจ What is SkillForge?
|
|
47
|
+
|
|
48
|
+
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.
|
|
49
|
+
|
|
50
|
+
> ๐ก Think of it as **muscle memory for your AI** โ it learns your conventions once and applies them forever.
|
|
51
|
+
|
|
52
|
+
### ๐ The Feedback Loop
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
๐ค User gives feedback
|
|
56
|
+
โ
|
|
57
|
+
โผ
|
|
58
|
+
๐ Agent detects improvement signal
|
|
59
|
+
โ
|
|
60
|
+
โผ
|
|
61
|
+
๐ค Sub-agent optimizes the skill
|
|
62
|
+
โ
|
|
63
|
+
โผ
|
|
64
|
+
๐พ Skill saved (auto-backed up)
|
|
65
|
+
โ
|
|
66
|
+
โผ
|
|
67
|
+
โ
Next task uses improved skill
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## ๐ Quick Start
|
|
73
|
+
|
|
74
|
+
### ๐ฆ Installation
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
# Install from PyPI (recommended)
|
|
78
|
+
pip install skillforge-mcp
|
|
79
|
+
|
|
80
|
+
# Or with uv
|
|
81
|
+
uv pip install skillforge-mcp
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### โก Run the Server
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
# Run directly
|
|
88
|
+
skillforge
|
|
89
|
+
|
|
90
|
+
# Or run without installing via uvx
|
|
91
|
+
uvx skillforge-mcp
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### ๐ Connect to Claude Code
|
|
95
|
+
|
|
96
|
+
Add to your MCP config:
|
|
97
|
+
|
|
98
|
+
```json
|
|
99
|
+
{
|
|
100
|
+
"mcpServers": {
|
|
101
|
+
"skillforge": {
|
|
102
|
+
"command": "uvx",
|
|
103
|
+
"args": ["skillforge-mcp"]
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
<details>
|
|
110
|
+
<summary>๐ก Alternative: install from source</summary>
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
git clone https://github.com/CatVinci-Studio/skillForge.git
|
|
114
|
+
cd skillForge
|
|
115
|
+
pip install -e .
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
</details>
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## ๐งฉ Architecture
|
|
123
|
+
|
|
124
|
+
```
|
|
125
|
+
src/skillforge/
|
|
126
|
+
โโโ ๐ server.py # MCP server definition & prompts
|
|
127
|
+
โโโ ๐จ response.py # Response formatting & feedback monitor
|
|
128
|
+
โโโ ๐ skill_manager.py # Core CRUD, backup, restore logic
|
|
129
|
+
โโโ ๐ง tools/
|
|
130
|
+
โ โโโ ๐ discovery.py # list_skills, get_skill
|
|
131
|
+
โ โโโ โ๏ธ crud.py # save_skill, delete_skill
|
|
132
|
+
โ โโโ ๐พ backup.py # list_backups, restore_skill
|
|
133
|
+
โ โโโ ๐ง optimization.py # get_skill_guide, request_skill_optimization
|
|
134
|
+
โโโ ๐ guide/
|
|
135
|
+
โโโ skill_writing_guide.md # Best practices for skill authoring
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### ๐ Runtime Data
|
|
139
|
+
|
|
140
|
+
SkillForge stores its data in `~/.skillforge/`:
|
|
141
|
+
|
|
142
|
+
| Directory | Purpose |
|
|
143
|
+
|-----------|---------|
|
|
144
|
+
| `~/.skillforge/skills/` | ๐ Active skill library |
|
|
145
|
+
| `~/.skillforge/backups/` | ๐๏ธ Automatic version history |
|
|
146
|
+
|
|
147
|
+
> ๐ Override with `SKILLFORGE_SKILLS_DIR` and `SKILLFORGE_BACKUP_DIR` environment variables.
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## ๐ง Available Tools
|
|
152
|
+
|
|
153
|
+
| Tool | Description | Who Calls It |
|
|
154
|
+
|------|-------------|--------------|
|
|
155
|
+
| ๐ `list_skills` | List all skills (mandatory first call!) | ๐ค Agent |
|
|
156
|
+
| ๐ `get_skill` | Load full skill instructions | ๐ค Agent |
|
|
157
|
+
| โ๏ธ `save_skill` | Create or update a skill | ๐ค Sub-agent |
|
|
158
|
+
| ๐๏ธ `delete_skill` | Remove a skill (with confirmation) | ๐ค Sub-agent |
|
|
159
|
+
| ๐ `list_backups` | View version history for a skill | ๐ค Agent |
|
|
160
|
+
| โช `restore_skill` | Roll back to a previous version | ๐ค Agent |
|
|
161
|
+
| ๐ `get_skill_guide` | Load the skill writing guide | ๐ค Sub-agent |
|
|
162
|
+
| ๐ง `request_skill_optimization` | Trigger skill improvement | ๐ค Agent |
|
|
163
|
+
| ๐ `get_optimization_history` | View optimization log | ๐ค Agent |
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## ๐ Skill Format
|
|
168
|
+
|
|
169
|
+
Each skill lives in its own directory as a `SKILL.md` file with YAML frontmatter:
|
|
170
|
+
|
|
171
|
+
```yaml
|
|
172
|
+
---
|
|
173
|
+
name: my-skill
|
|
174
|
+
description: >
|
|
175
|
+
What this skill does and when to trigger it.
|
|
176
|
+
Be specific about trigger contexts.
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
# Skill Instructions
|
|
180
|
+
|
|
181
|
+
Your markdown instructions here...
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### ๐ท๏ธ Frontmatter Fields
|
|
185
|
+
|
|
186
|
+
| Field | Required | Description |
|
|
187
|
+
|-------|----------|-------------|
|
|
188
|
+
| `name` | โ
| Identifier (`lowercase-with-hyphens`, max 64 chars) |
|
|
189
|
+
| `description` | โ
| Trigger conditions โ WHAT it does + WHEN to use it |
|
|
190
|
+
| `disable-model-invocation` | โ | `true` = only user can invoke |
|
|
191
|
+
| `user-invocable` | โ | `false` = only LLM can invoke |
|
|
192
|
+
| `allowed-tools` | โ | Tools allowed without per-use approval |
|
|
193
|
+
| `context` | โ | `fork` = run in isolated sub-agent |
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## ๐ง How Optimization Works
|
|
198
|
+
|
|
199
|
+
SkillForge continuously monitors conversations for improvement signals:
|
|
200
|
+
|
|
201
|
+
| Signal | Example | Action |
|
|
202
|
+
|--------|---------|--------|
|
|
203
|
+
| ๐ด **Correction** | "No, don't mock the database" | Update relevant skill |
|
|
204
|
+
| ๐ก **Preference** | "Always use snake_case" | Create or update skill |
|
|
205
|
+
| ๐ต **Pattern** | Same structure used 3+ times | Bundle into new skill |
|
|
206
|
+
| ๐ข **Explicit** | "Add this to the review skill" | Direct skill edit |
|
|
207
|
+
|
|
208
|
+
### ๐ Safety Guarantees
|
|
209
|
+
|
|
210
|
+
- โ
**Auto-backup** before every save and delete
|
|
211
|
+
- โ
**One-click restore** from any backup timestamp
|
|
212
|
+
- โ
**Path traversal protection** on all file operations
|
|
213
|
+
- โ
**Atomic writes** with file locking for optimization logs
|
|
214
|
+
- โ
**Sub-agent isolation** โ skill edits don't interrupt your main task
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## ๐ Why SkillForge?
|
|
219
|
+
|
|
220
|
+
| Without SkillForge | With SkillForge |
|
|
221
|
+
|---------------------|-----------------|
|
|
222
|
+
| ๐ค Repeat the same corrections every session | ๐ง Agent remembers and applies automatically |
|
|
223
|
+
| ๐ Conventions scattered across docs | ๐ฆ Single source of truth per topic |
|
|
224
|
+
| ๐ฒ Inconsistent agent behavior | โ
Deterministic, skill-guided responses |
|
|
225
|
+
| ๐ No learning from feedback | ๐ Skills evolve with every interaction |
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
## ๐ฃ๏ธ Roadmap
|
|
230
|
+
|
|
231
|
+
- [ ] ๐ Skill sharing & import from remote repositories
|
|
232
|
+
- [ ] ๐ Analytics dashboard for skill usage & effectiveness
|
|
233
|
+
- [ ] ๐ Cross-skill dependency management
|
|
234
|
+
- [ ] ๐งช Skill testing framework with evaluation harness
|
|
235
|
+
- [ ] ๐ช Community skill marketplace
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
## ๐ค Contributing
|
|
240
|
+
|
|
241
|
+
Contributions are welcome! Please feel free to submit a Pull Request.
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
## ๐ License
|
|
246
|
+
|
|
247
|
+
This project is licensed under the MIT License โ see the [LICENSE](LICENSE) file for details.
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
<p align="center">
|
|
252
|
+
<strong>Built with โค๏ธ by <a href="https://github.com/CatVinci-Studio">CatVinci Studio</a></strong>
|
|
253
|
+
</p>
|
|
254
|
+
|
|
255
|
+
<p align="center">
|
|
256
|
+
<em>Forging better AI, one skill at a time. ๐จ</em>
|
|
257
|
+
</p>
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="https://img.shields.io/badge/MCP-Server-blueviolet?style=for-the-badge&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJ3aGl0ZSI+PHBhdGggZD0iTTEyIDJMMiA3bDEwIDUgMTAtNS0xMC01ek0yIDE3bDEwIDUgMTAtNS0xMC01LTEwIDV6TTIgMTJsMTAgNSAxMC01LTEwLTUtMTAgNXoiLz48L3N2Zz4=" alt="MCP Server"/>
|
|
3
|
+
<img src="https://img.shields.io/badge/python-โฅ3.10-3776AB?style=for-the-badge&logo=python&logoColor=white" alt="Python"/>
|
|
4
|
+
<img src="https://img.shields.io/badge/license-MIT-green?style=for-the-badge" alt="License"/>
|
|
5
|
+
<img src="https://img.shields.io/badge/status-beta-orange?style=for-the-badge" alt="Status"/>
|
|
6
|
+
</p>
|
|
7
|
+
|
|
8
|
+
<h1 align="center">๐ ๏ธ SkillForge</h1>
|
|
9
|
+
|
|
10
|
+
<p align="center">
|
|
11
|
+
<strong>An MCP server that makes your AI agent learn and evolve โ one skill at a time.</strong>
|
|
12
|
+
</p>
|
|
13
|
+
|
|
14
|
+
<p align="center">
|
|
15
|
+
<em>Skills are reusable instructions that get better with every conversation.</em>
|
|
16
|
+
</p>
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## โจ What is SkillForge?
|
|
21
|
+
|
|
22
|
+
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.
|
|
23
|
+
|
|
24
|
+
> ๐ก Think of it as **muscle memory for your AI** โ it learns your conventions once and applies them forever.
|
|
25
|
+
|
|
26
|
+
### ๐ The Feedback Loop
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
๐ค User gives feedback
|
|
30
|
+
โ
|
|
31
|
+
โผ
|
|
32
|
+
๐ Agent detects improvement signal
|
|
33
|
+
โ
|
|
34
|
+
โผ
|
|
35
|
+
๐ค Sub-agent optimizes the skill
|
|
36
|
+
โ
|
|
37
|
+
โผ
|
|
38
|
+
๐พ Skill saved (auto-backed up)
|
|
39
|
+
โ
|
|
40
|
+
โผ
|
|
41
|
+
โ
Next task uses improved skill
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## ๐ Quick Start
|
|
47
|
+
|
|
48
|
+
### ๐ฆ Installation
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
# Install from PyPI (recommended)
|
|
52
|
+
pip install skillforge-mcp
|
|
53
|
+
|
|
54
|
+
# Or with uv
|
|
55
|
+
uv pip install skillforge-mcp
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### โก Run the Server
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
# Run directly
|
|
62
|
+
skillforge
|
|
63
|
+
|
|
64
|
+
# Or run without installing via uvx
|
|
65
|
+
uvx skillforge-mcp
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### ๐ Connect to Claude Code
|
|
69
|
+
|
|
70
|
+
Add to your MCP config:
|
|
71
|
+
|
|
72
|
+
```json
|
|
73
|
+
{
|
|
74
|
+
"mcpServers": {
|
|
75
|
+
"skillforge": {
|
|
76
|
+
"command": "uvx",
|
|
77
|
+
"args": ["skillforge-mcp"]
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
<details>
|
|
84
|
+
<summary>๐ก Alternative: install from source</summary>
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
git clone https://github.com/CatVinci-Studio/skillForge.git
|
|
88
|
+
cd skillForge
|
|
89
|
+
pip install -e .
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
</details>
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## ๐งฉ Architecture
|
|
97
|
+
|
|
98
|
+
```
|
|
99
|
+
src/skillforge/
|
|
100
|
+
โโโ ๐ server.py # MCP server definition & prompts
|
|
101
|
+
โโโ ๐จ response.py # Response formatting & feedback monitor
|
|
102
|
+
โโโ ๐ skill_manager.py # Core CRUD, backup, restore logic
|
|
103
|
+
โโโ ๐ง tools/
|
|
104
|
+
โ โโโ ๐ discovery.py # list_skills, get_skill
|
|
105
|
+
โ โโโ โ๏ธ crud.py # save_skill, delete_skill
|
|
106
|
+
โ โโโ ๐พ backup.py # list_backups, restore_skill
|
|
107
|
+
โ โโโ ๐ง optimization.py # get_skill_guide, request_skill_optimization
|
|
108
|
+
โโโ ๐ guide/
|
|
109
|
+
โโโ skill_writing_guide.md # Best practices for skill authoring
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### ๐ Runtime Data
|
|
113
|
+
|
|
114
|
+
SkillForge stores its data in `~/.skillforge/`:
|
|
115
|
+
|
|
116
|
+
| Directory | Purpose |
|
|
117
|
+
|-----------|---------|
|
|
118
|
+
| `~/.skillforge/skills/` | ๐ Active skill library |
|
|
119
|
+
| `~/.skillforge/backups/` | ๐๏ธ Automatic version history |
|
|
120
|
+
|
|
121
|
+
> ๐ Override with `SKILLFORGE_SKILLS_DIR` and `SKILLFORGE_BACKUP_DIR` environment variables.
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## ๐ง Available Tools
|
|
126
|
+
|
|
127
|
+
| Tool | Description | Who Calls It |
|
|
128
|
+
|------|-------------|--------------|
|
|
129
|
+
| ๐ `list_skills` | List all skills (mandatory first call!) | ๐ค Agent |
|
|
130
|
+
| ๐ `get_skill` | Load full skill instructions | ๐ค Agent |
|
|
131
|
+
| โ๏ธ `save_skill` | Create or update a skill | ๐ค Sub-agent |
|
|
132
|
+
| ๐๏ธ `delete_skill` | Remove a skill (with confirmation) | ๐ค Sub-agent |
|
|
133
|
+
| ๐ `list_backups` | View version history for a skill | ๐ค Agent |
|
|
134
|
+
| โช `restore_skill` | Roll back to a previous version | ๐ค Agent |
|
|
135
|
+
| ๐ `get_skill_guide` | Load the skill writing guide | ๐ค Sub-agent |
|
|
136
|
+
| ๐ง `request_skill_optimization` | Trigger skill improvement | ๐ค Agent |
|
|
137
|
+
| ๐ `get_optimization_history` | View optimization log | ๐ค Agent |
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## ๐ Skill Format
|
|
142
|
+
|
|
143
|
+
Each skill lives in its own directory as a `SKILL.md` file with YAML frontmatter:
|
|
144
|
+
|
|
145
|
+
```yaml
|
|
146
|
+
---
|
|
147
|
+
name: my-skill
|
|
148
|
+
description: >
|
|
149
|
+
What this skill does and when to trigger it.
|
|
150
|
+
Be specific about trigger contexts.
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
# Skill Instructions
|
|
154
|
+
|
|
155
|
+
Your markdown instructions here...
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### ๐ท๏ธ Frontmatter Fields
|
|
159
|
+
|
|
160
|
+
| Field | Required | Description |
|
|
161
|
+
|-------|----------|-------------|
|
|
162
|
+
| `name` | โ
| Identifier (`lowercase-with-hyphens`, max 64 chars) |
|
|
163
|
+
| `description` | โ
| Trigger conditions โ WHAT it does + WHEN to use it |
|
|
164
|
+
| `disable-model-invocation` | โ | `true` = only user can invoke |
|
|
165
|
+
| `user-invocable` | โ | `false` = only LLM can invoke |
|
|
166
|
+
| `allowed-tools` | โ | Tools allowed without per-use approval |
|
|
167
|
+
| `context` | โ | `fork` = run in isolated sub-agent |
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## ๐ง How Optimization Works
|
|
172
|
+
|
|
173
|
+
SkillForge continuously monitors conversations for improvement signals:
|
|
174
|
+
|
|
175
|
+
| Signal | Example | Action |
|
|
176
|
+
|--------|---------|--------|
|
|
177
|
+
| ๐ด **Correction** | "No, don't mock the database" | Update relevant skill |
|
|
178
|
+
| ๐ก **Preference** | "Always use snake_case" | Create or update skill |
|
|
179
|
+
| ๐ต **Pattern** | Same structure used 3+ times | Bundle into new skill |
|
|
180
|
+
| ๐ข **Explicit** | "Add this to the review skill" | Direct skill edit |
|
|
181
|
+
|
|
182
|
+
### ๐ Safety Guarantees
|
|
183
|
+
|
|
184
|
+
- โ
**Auto-backup** before every save and delete
|
|
185
|
+
- โ
**One-click restore** from any backup timestamp
|
|
186
|
+
- โ
**Path traversal protection** on all file operations
|
|
187
|
+
- โ
**Atomic writes** with file locking for optimization logs
|
|
188
|
+
- โ
**Sub-agent isolation** โ skill edits don't interrupt your main task
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## ๐ Why SkillForge?
|
|
193
|
+
|
|
194
|
+
| Without SkillForge | With SkillForge |
|
|
195
|
+
|---------------------|-----------------|
|
|
196
|
+
| ๐ค Repeat the same corrections every session | ๐ง Agent remembers and applies automatically |
|
|
197
|
+
| ๐ Conventions scattered across docs | ๐ฆ Single source of truth per topic |
|
|
198
|
+
| ๐ฒ Inconsistent agent behavior | โ
Deterministic, skill-guided responses |
|
|
199
|
+
| ๐ No learning from feedback | ๐ Skills evolve with every interaction |
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## ๐ฃ๏ธ Roadmap
|
|
204
|
+
|
|
205
|
+
- [ ] ๐ Skill sharing & import from remote repositories
|
|
206
|
+
- [ ] ๐ Analytics dashboard for skill usage & effectiveness
|
|
207
|
+
- [ ] ๐ Cross-skill dependency management
|
|
208
|
+
- [ ] ๐งช Skill testing framework with evaluation harness
|
|
209
|
+
- [ ] ๐ช Community skill marketplace
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## ๐ค Contributing
|
|
214
|
+
|
|
215
|
+
Contributions are welcome! Please feel free to submit a Pull Request.
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
## ๐ License
|
|
220
|
+
|
|
221
|
+
This project is licensed under the MIT License โ see the [LICENSE](LICENSE) file for details.
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
<p align="center">
|
|
226
|
+
<strong>Built with โค๏ธ by <a href="https://github.com/CatVinci-Studio">CatVinci Studio</a></strong>
|
|
227
|
+
</p>
|
|
228
|
+
|
|
229
|
+
<p align="center">
|
|
230
|
+
<em>Forging better AI, one skill at a time. ๐จ</em>
|
|
231
|
+
</p>
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "skillforge-mcp"
|
|
3
|
+
version = "0.1.0"
|
|
4
|
+
description = "An MCP server that makes your AI agent learn and evolve โ one skill at a time."
|
|
5
|
+
readme = "README.md"
|
|
6
|
+
license = {text = "MIT"}
|
|
7
|
+
requires-python = ">=3.10"
|
|
8
|
+
authors = [
|
|
9
|
+
{name = "CatVinci Studio", email = "catvinci.studio@gmail.com"},
|
|
10
|
+
]
|
|
11
|
+
keywords = ["mcp", "skills", "ai", "agent", "claude", "llm", "model-context-protocol"]
|
|
12
|
+
classifiers = [
|
|
13
|
+
"Development Status :: 4 - Beta",
|
|
14
|
+
"Intended Audience :: Developers",
|
|
15
|
+
"License :: OSI Approved :: MIT License",
|
|
16
|
+
"Programming Language :: Python :: 3",
|
|
17
|
+
"Programming Language :: Python :: 3.10",
|
|
18
|
+
"Programming Language :: Python :: 3.11",
|
|
19
|
+
"Programming Language :: Python :: 3.12",
|
|
20
|
+
"Programming Language :: Python :: 3.13",
|
|
21
|
+
"Topic :: Software Development :: Libraries",
|
|
22
|
+
"Topic :: Scientific/Engineering :: Artificial Intelligence",
|
|
23
|
+
]
|
|
24
|
+
dependencies = [
|
|
25
|
+
"mcp[cli]>=1.0.0",
|
|
26
|
+
"pyyaml>=6.0",
|
|
27
|
+
]
|
|
28
|
+
|
|
29
|
+
[project.urls]
|
|
30
|
+
Homepage = "https://github.com/CatVinci-Studio/skillForge"
|
|
31
|
+
Repository = "https://github.com/CatVinci-Studio/skillForge"
|
|
32
|
+
Issues = "https://github.com/CatVinci-Studio/skillForge/issues"
|
|
33
|
+
|
|
34
|
+
[project.scripts]
|
|
35
|
+
skillforge = "skillforge.server:main"
|
|
36
|
+
|
|
37
|
+
[build-system]
|
|
38
|
+
requires = ["hatchling"]
|
|
39
|
+
build-backend = "hatchling.build"
|
|
40
|
+
|
|
41
|
+
[tool.hatch.build.targets.wheel]
|
|
42
|
+
packages = ["src/skillforge"]
|