skillmesh 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.
- skillmesh-0.1.0/LICENSE +21 -0
- skillmesh-0.1.0/PKG-INFO +298 -0
- skillmesh-0.1.0/README.md +271 -0
- skillmesh-0.1.0/pyproject.toml +50 -0
- skillmesh-0.1.0/setup.cfg +4 -0
- skillmesh-0.1.0/src/skill_registry_rag/__init__.py +17 -0
- skillmesh-0.1.0/src/skill_registry_rag/__main__.py +5 -0
- skillmesh-0.1.0/src/skill_registry_rag/_resolve.py +57 -0
- skillmesh-0.1.0/src/skill_registry_rag/adapters/__init__.py +4 -0
- skillmesh-0.1.0/src/skill_registry_rag/adapters/claude.py +40 -0
- skillmesh-0.1.0/src/skill_registry_rag/adapters/codex.py +40 -0
- skillmesh-0.1.0/src/skill_registry_rag/backends/__init__.py +15 -0
- skillmesh-0.1.0/src/skill_registry_rag/backends/chroma.py +171 -0
- skillmesh-0.1.0/src/skill_registry_rag/backends/memory.py +160 -0
- skillmesh-0.1.0/src/skill_registry_rag/cli.py +124 -0
- skillmesh-0.1.0/src/skill_registry_rag/data/__init__.py +8 -0
- skillmesh-0.1.0/src/skill_registry_rag/data/tools.compiled.json +5953 -0
- skillmesh-0.1.0/src/skill_registry_rag/mcp_server.py +217 -0
- skillmesh-0.1.0/src/skill_registry_rag/models.py +38 -0
- skillmesh-0.1.0/src/skill_registry_rag/registry.py +192 -0
- skillmesh-0.1.0/src/skill_registry_rag/retriever.py +25 -0
- skillmesh-0.1.0/src/skillmesh.egg-info/PKG-INFO +298 -0
- skillmesh-0.1.0/src/skillmesh.egg-info/SOURCES.txt +31 -0
- skillmesh-0.1.0/src/skillmesh.egg-info/dependency_links.txt +1 -0
- skillmesh-0.1.0/src/skillmesh.egg-info/entry_points.txt +3 -0
- skillmesh-0.1.0/src/skillmesh.egg-info/requires.txt +16 -0
- skillmesh-0.1.0/src/skillmesh.egg-info/top_level.txt +1 -0
- skillmesh-0.1.0/tests/test_adapters.py +46 -0
- skillmesh-0.1.0/tests/test_backends.py +79 -0
- skillmesh-0.1.0/tests/test_cli.py +105 -0
- skillmesh-0.1.0/tests/test_mcp_server.py +60 -0
- skillmesh-0.1.0/tests/test_registry.py +84 -0
- skillmesh-0.1.0/tests/test_retriever.py +150 -0
skillmesh-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Open Skill Registry Contributors
|
|
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.
|
skillmesh-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: skillmesh
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: A retrieval-gated skill architecture for LLM agents that scales to hundreds of tools by exposing only the top-K relevant capabilities per request.
|
|
5
|
+
Author: Open Skill Registry Contributors
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/varunreddy/SkillMesh
|
|
8
|
+
Project-URL: Repository, https://github.com/varunreddy/SkillMesh
|
|
9
|
+
Project-URL: Issues, https://github.com/varunreddy/SkillMesh/issues
|
|
10
|
+
Requires-Python: >=3.10
|
|
11
|
+
Description-Content-Type: text/markdown
|
|
12
|
+
License-File: LICENSE
|
|
13
|
+
Requires-Dist: numpy>=1.24
|
|
14
|
+
Requires-Dist: PyYAML>=6.0
|
|
15
|
+
Requires-Dist: rank-bm25>=0.2.2
|
|
16
|
+
Requires-Dist: jsonschema>=4.0
|
|
17
|
+
Requires-Dist: chromadb>=0.5.0
|
|
18
|
+
Provides-Extra: dense
|
|
19
|
+
Requires-Dist: sentence-transformers>=2.7.0; extra == "dense"
|
|
20
|
+
Provides-Extra: mcp
|
|
21
|
+
Requires-Dist: mcp>=1.0.0; extra == "mcp"
|
|
22
|
+
Provides-Extra: dev
|
|
23
|
+
Requires-Dist: pytest>=8.0; extra == "dev"
|
|
24
|
+
Requires-Dist: pytest-cov>=5.0; extra == "dev"
|
|
25
|
+
Requires-Dist: ruff>=0.6.0; extra == "dev"
|
|
26
|
+
Dynamic: license-file
|
|
27
|
+
|
|
28
|
+
# SkillMesh
|
|
29
|
+
|
|
30
|
+
[](https://github.com/varunreddy/SkillMesh/actions/workflows/ci.yml)
|
|
31
|
+
[](LICENSE)
|
|
32
|
+
[](https://www.python.org/downloads/)
|
|
33
|
+
|
|
34
|
+
**Stop stuffing hundreds of tools into your LLM prompt. Route to the right ones.**
|
|
35
|
+
|
|
36
|
+
## The Problem
|
|
37
|
+
|
|
38
|
+
LLM agents break when you load every tool into the prompt. Token counts explode, accuracy drops, and cost scales linearly with your catalog size. Teams with 50+ skills end up with bloated system prompts that confuse the model and burn budget.
|
|
39
|
+
|
|
40
|
+
SkillMesh solves this with retrieval-based routing: given a user query, it selects only the top-K most relevant expert cards and injects them into the prompt — keeping context small, accurate, and cheap.
|
|
41
|
+
|
|
42
|
+
## Before vs After
|
|
43
|
+
|
|
44
|
+
| | Without SkillMesh | With SkillMesh |
|
|
45
|
+
|---|---|---|
|
|
46
|
+
| **Prompt tokens** | ~50,000+ (all tools loaded) | ~3,000 (top-K only) |
|
|
47
|
+
| **Tool selection** | Model guesses from a huge list | BM25+Dense retrieval picks the best match |
|
|
48
|
+
| **Cost per call** | High (full catalog every time) | Low (only relevant cards) |
|
|
49
|
+
| **Accuracy** | Degrades as catalog grows | Stays consistent |
|
|
50
|
+
| **Multi-domain tasks** | Confusing for the model | Routed precisely (clean + train + deploy) |
|
|
51
|
+
|
|
52
|
+
## How It Works
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
User Query
|
|
56
|
+
│
|
|
57
|
+
▼
|
|
58
|
+
┌─────────────────────┐
|
|
59
|
+
│ BM25 + Dense Index │ ← Scores every card in your registry
|
|
60
|
+
└─────────┬───────────┘
|
|
61
|
+
│
|
|
62
|
+
▼
|
|
63
|
+
┌─────────────────────┐
|
|
64
|
+
│ RRF Fusion Rank │ ← Merges sparse + dense rankings
|
|
65
|
+
└─────────┬───────────┘
|
|
66
|
+
│
|
|
67
|
+
▼
|
|
68
|
+
┌─────────────────────┐
|
|
69
|
+
│ Top-K Card Select │ ← Returns the K best expert cards
|
|
70
|
+
└─────────┬───────────┘
|
|
71
|
+
│
|
|
72
|
+
▼
|
|
73
|
+
┌─────────────────────┐
|
|
74
|
+
│ Agent acts as expert │ ← Full instructions injected into prompt
|
|
75
|
+
└─────────────────────┘
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Each card contains: execution behavior, decision trees, anti-patterns, output contracts, and composability hints — everything the agent needs to act as a domain expert.
|
|
79
|
+
|
|
80
|
+
## One-line MCP install (Claude Desktop / Claude Code)
|
|
81
|
+
|
|
82
|
+
Add this to your Claude Desktop config (`claude_desktop_config.json`) or Claude Code MCP settings:
|
|
83
|
+
|
|
84
|
+
```json
|
|
85
|
+
{
|
|
86
|
+
"mcpServers": {
|
|
87
|
+
"skillmesh": {
|
|
88
|
+
"command": "uvx",
|
|
89
|
+
"args": ["--from", "skillmesh[mcp]", "skillmesh-mcp"]
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
No env vars. No file paths. No cloning. The bundled registry is included in the package.
|
|
96
|
+
|
|
97
|
+
Requires [uv](https://docs.astral.sh/uv/getting-started/installation/) to be installed.
|
|
98
|
+
|
|
99
|
+
## 60-Second Demo
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
git clone https://github.com/varunreddy/SkillMesh.git
|
|
103
|
+
cd SkillMesh
|
|
104
|
+
pip install -e .
|
|
105
|
+
skillmesh emit \
|
|
106
|
+
--provider claude \
|
|
107
|
+
--registry examples/registry/tools.json \
|
|
108
|
+
--query "clean messy sales data, train a baseline model, and generate charts" \
|
|
109
|
+
--top-k 5
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Output (truncated):
|
|
113
|
+
|
|
114
|
+
```
|
|
115
|
+
<context>
|
|
116
|
+
<card id="data.data-cleaning" title="Data Cleaning and Validation Expert">
|
|
117
|
+
# Data Cleaning and Validation Expert
|
|
118
|
+
Specialist in detecting and correcting data quality issues...
|
|
119
|
+
</card>
|
|
120
|
+
<card id="ml.sklearn-modeling" title="Scikit-learn Modeling and Evaluation">
|
|
121
|
+
...
|
|
122
|
+
</card>
|
|
123
|
+
<card id="viz.matplotlib-seaborn" title="Visualization with Matplotlib and Seaborn">
|
|
124
|
+
...
|
|
125
|
+
</card>
|
|
126
|
+
</context>
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Only the relevant experts are injected — the rest of the 90+ card catalog stays out of the prompt.
|
|
130
|
+
|
|
131
|
+
## Integrations
|
|
132
|
+
|
|
133
|
+
| Platform | Method | Status | Docs |
|
|
134
|
+
|---|---|---|---|
|
|
135
|
+
| **Claude Code** | MCP server | Supported | [Setup guide](docs/integrations/claude-code.md) |
|
|
136
|
+
| **Claude Desktop** | MCP server | Supported | [Setup guide](docs/integrations/claude-desktop.md) |
|
|
137
|
+
| **Codex** | Skill bundle | Supported | [Setup guide](docs/integrations/codex.md) |
|
|
138
|
+
|
|
139
|
+
### Claude MCP Server
|
|
140
|
+
|
|
141
|
+
The easiest way to run it is via `uvx` (see "One-line MCP install" above). For local development:
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
pip install -e .[mcp]
|
|
145
|
+
skillmesh-mcp
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
The server auto-discovers the registry: env var `SKILLMESH_REGISTRY` → repo root → bundled registry.
|
|
149
|
+
|
|
150
|
+
Exposes two tools via MCP:
|
|
151
|
+
- `route_with_skillmesh(query, top_k)` — provider-formatted context block
|
|
152
|
+
- `retrieve_skillmesh_cards(query, top_k)` — structured JSON payload
|
|
153
|
+
|
|
154
|
+
Copy-ready config templates in `examples/mcp/`.
|
|
155
|
+
|
|
156
|
+
### Codex Skill Bundle
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
$skill-installer install https://github.com/varunreddy/SkillMesh/tree/main/skills/skillmesh
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## Quickstart
|
|
163
|
+
|
|
164
|
+
### Install
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
python -m venv .venv && source .venv/bin/activate
|
|
168
|
+
pip install -e .[dev]
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
Optional extras:
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
pip install -e .[dense] # Dense reranking with sentence-transformers
|
|
175
|
+
pip install -e .[mcp] # Claude MCP server
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### Retrieve top-K cards
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
skillmesh retrieve \
|
|
182
|
+
--registry examples/registry/tools.json \
|
|
183
|
+
--query "set up nginx reverse proxy with SSL" \
|
|
184
|
+
--top-k 3
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### Emit provider-ready context
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
skillmesh emit \
|
|
191
|
+
--provider claude \
|
|
192
|
+
--registry examples/registry/tools.json \
|
|
193
|
+
--query "deploy container to GCP Cloud Run" \
|
|
194
|
+
--top-k 5
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
## Curated Registries
|
|
198
|
+
|
|
199
|
+
Use domain-specific registries for tighter routing:
|
|
200
|
+
|
|
201
|
+
| Registry | Domain | Cards |
|
|
202
|
+
|---|---|---|
|
|
203
|
+
| `tools.json` / `tools.yaml` | Full catalog | 90+ |
|
|
204
|
+
| `ml-engineering.registry.yaml` | ML training & evaluation | 15 |
|
|
205
|
+
| `data-engineering.registry.yaml` | Pipelines & data platforms | 10 |
|
|
206
|
+
| `bi-analytics.registry.yaml` | BI & dashboards | 10 |
|
|
207
|
+
| `devops.registry.yaml` | DevOps & infrastructure | 8 |
|
|
208
|
+
| `web-apis.registry.yaml` | API design & patterns | 7 |
|
|
209
|
+
| `cloud-gcp.registry.yaml` | Google Cloud Platform | 7 |
|
|
210
|
+
| `cloud-bi.registry.yaml` | Cloud BI | 5 |
|
|
211
|
+
| `roles.registry.yaml` | Role orchestrators | 10 |
|
|
212
|
+
|
|
213
|
+
```bash
|
|
214
|
+
skillmesh emit \
|
|
215
|
+
--provider claude \
|
|
216
|
+
--registry examples/registry/devops.registry.yaml \
|
|
217
|
+
--query "configure prometheus alerting and grafana dashboards" \
|
|
218
|
+
--top-k 3
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
## CLI Commands
|
|
222
|
+
|
|
223
|
+
| Command | Description |
|
|
224
|
+
|---|---|
|
|
225
|
+
| `skillmesh retrieve` | Top-K retrieval payload (JSON) |
|
|
226
|
+
| `skillmesh emit` | Provider-formatted context block |
|
|
227
|
+
| `skillmesh index` | Index registry into Chroma for persistent retrieval |
|
|
228
|
+
| `skillmesh-mcp` | Stdio MCP server for Claude |
|
|
229
|
+
|
|
230
|
+
```bash
|
|
231
|
+
skillmesh --help
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
## Repository Layout
|
|
235
|
+
|
|
236
|
+
```
|
|
237
|
+
src/skill_registry_rag/
|
|
238
|
+
├── models.py # Tool/role card models
|
|
239
|
+
├── registry.py # Registry loading + validation
|
|
240
|
+
├── retriever.py # BM25 + optional dense retrieval
|
|
241
|
+
├── adapters/ # Provider formatters (codex, claude)
|
|
242
|
+
└── cli.py # skillmesh CLI
|
|
243
|
+
|
|
244
|
+
examples/registry/
|
|
245
|
+
├── tools.json # Full tool catalog
|
|
246
|
+
├── tools.yaml # YAML version of full catalog
|
|
247
|
+
├── instructions/ # Expert instruction files (90+)
|
|
248
|
+
├── roles/ # Role orchestrator files
|
|
249
|
+
└── *.registry.yaml # Domain-specific registries
|
|
250
|
+
|
|
251
|
+
skills/skillmesh/ # Codex-installable skill
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
## Contributing
|
|
255
|
+
|
|
256
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for how to add expert cards, create registries, and submit PRs.
|
|
257
|
+
|
|
258
|
+
## Troubleshooting
|
|
259
|
+
|
|
260
|
+
### `skillmesh: command not found`
|
|
261
|
+
|
|
262
|
+
```bash
|
|
263
|
+
pip install -e .
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
### Missing registry path
|
|
267
|
+
|
|
268
|
+
The CLI and MCP server auto-discover the registry. If auto-discovery fails, pass `--registry` or set:
|
|
269
|
+
|
|
270
|
+
```bash
|
|
271
|
+
export SKILLMESH_REGISTRY=/path/to/tools.json
|
|
272
|
+
# or pass --registry on every command
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
### `skillmesh-mcp` fails to start
|
|
276
|
+
|
|
277
|
+
```bash
|
|
278
|
+
pip install -e .[mcp]
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
### Codex does not detect new skill
|
|
282
|
+
|
|
283
|
+
Restart Codex after running `$skill-installer`.
|
|
284
|
+
|
|
285
|
+
## Development
|
|
286
|
+
|
|
287
|
+
```bash
|
|
288
|
+
ruff check src tests
|
|
289
|
+
pytest
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
## License
|
|
293
|
+
|
|
294
|
+
MIT — see [LICENSE](LICENSE).
|
|
295
|
+
|
|
296
|
+
---
|
|
297
|
+
|
|
298
|
+
If SkillMesh helps your team, please **star the repo** — it directly improves discoverability and helps others find the project.
|
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
# SkillMesh
|
|
2
|
+
|
|
3
|
+
[](https://github.com/varunreddy/SkillMesh/actions/workflows/ci.yml)
|
|
4
|
+
[](LICENSE)
|
|
5
|
+
[](https://www.python.org/downloads/)
|
|
6
|
+
|
|
7
|
+
**Stop stuffing hundreds of tools into your LLM prompt. Route to the right ones.**
|
|
8
|
+
|
|
9
|
+
## The Problem
|
|
10
|
+
|
|
11
|
+
LLM agents break when you load every tool into the prompt. Token counts explode, accuracy drops, and cost scales linearly with your catalog size. Teams with 50+ skills end up with bloated system prompts that confuse the model and burn budget.
|
|
12
|
+
|
|
13
|
+
SkillMesh solves this with retrieval-based routing: given a user query, it selects only the top-K most relevant expert cards and injects them into the prompt — keeping context small, accurate, and cheap.
|
|
14
|
+
|
|
15
|
+
## Before vs After
|
|
16
|
+
|
|
17
|
+
| | Without SkillMesh | With SkillMesh |
|
|
18
|
+
|---|---|---|
|
|
19
|
+
| **Prompt tokens** | ~50,000+ (all tools loaded) | ~3,000 (top-K only) |
|
|
20
|
+
| **Tool selection** | Model guesses from a huge list | BM25+Dense retrieval picks the best match |
|
|
21
|
+
| **Cost per call** | High (full catalog every time) | Low (only relevant cards) |
|
|
22
|
+
| **Accuracy** | Degrades as catalog grows | Stays consistent |
|
|
23
|
+
| **Multi-domain tasks** | Confusing for the model | Routed precisely (clean + train + deploy) |
|
|
24
|
+
|
|
25
|
+
## How It Works
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
User Query
|
|
29
|
+
│
|
|
30
|
+
▼
|
|
31
|
+
┌─────────────────────┐
|
|
32
|
+
│ BM25 + Dense Index │ ← Scores every card in your registry
|
|
33
|
+
└─────────┬───────────┘
|
|
34
|
+
│
|
|
35
|
+
▼
|
|
36
|
+
┌─────────────────────┐
|
|
37
|
+
│ RRF Fusion Rank │ ← Merges sparse + dense rankings
|
|
38
|
+
└─────────┬───────────┘
|
|
39
|
+
│
|
|
40
|
+
▼
|
|
41
|
+
┌─────────────────────┐
|
|
42
|
+
│ Top-K Card Select │ ← Returns the K best expert cards
|
|
43
|
+
└─────────┬───────────┘
|
|
44
|
+
│
|
|
45
|
+
▼
|
|
46
|
+
┌─────────────────────┐
|
|
47
|
+
│ Agent acts as expert │ ← Full instructions injected into prompt
|
|
48
|
+
└─────────────────────┘
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Each card contains: execution behavior, decision trees, anti-patterns, output contracts, and composability hints — everything the agent needs to act as a domain expert.
|
|
52
|
+
|
|
53
|
+
## One-line MCP install (Claude Desktop / Claude Code)
|
|
54
|
+
|
|
55
|
+
Add this to your Claude Desktop config (`claude_desktop_config.json`) or Claude Code MCP settings:
|
|
56
|
+
|
|
57
|
+
```json
|
|
58
|
+
{
|
|
59
|
+
"mcpServers": {
|
|
60
|
+
"skillmesh": {
|
|
61
|
+
"command": "uvx",
|
|
62
|
+
"args": ["--from", "skillmesh[mcp]", "skillmesh-mcp"]
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
No env vars. No file paths. No cloning. The bundled registry is included in the package.
|
|
69
|
+
|
|
70
|
+
Requires [uv](https://docs.astral.sh/uv/getting-started/installation/) to be installed.
|
|
71
|
+
|
|
72
|
+
## 60-Second Demo
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
git clone https://github.com/varunreddy/SkillMesh.git
|
|
76
|
+
cd SkillMesh
|
|
77
|
+
pip install -e .
|
|
78
|
+
skillmesh emit \
|
|
79
|
+
--provider claude \
|
|
80
|
+
--registry examples/registry/tools.json \
|
|
81
|
+
--query "clean messy sales data, train a baseline model, and generate charts" \
|
|
82
|
+
--top-k 5
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Output (truncated):
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
<context>
|
|
89
|
+
<card id="data.data-cleaning" title="Data Cleaning and Validation Expert">
|
|
90
|
+
# Data Cleaning and Validation Expert
|
|
91
|
+
Specialist in detecting and correcting data quality issues...
|
|
92
|
+
</card>
|
|
93
|
+
<card id="ml.sklearn-modeling" title="Scikit-learn Modeling and Evaluation">
|
|
94
|
+
...
|
|
95
|
+
</card>
|
|
96
|
+
<card id="viz.matplotlib-seaborn" title="Visualization with Matplotlib and Seaborn">
|
|
97
|
+
...
|
|
98
|
+
</card>
|
|
99
|
+
</context>
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Only the relevant experts are injected — the rest of the 90+ card catalog stays out of the prompt.
|
|
103
|
+
|
|
104
|
+
## Integrations
|
|
105
|
+
|
|
106
|
+
| Platform | Method | Status | Docs |
|
|
107
|
+
|---|---|---|---|
|
|
108
|
+
| **Claude Code** | MCP server | Supported | [Setup guide](docs/integrations/claude-code.md) |
|
|
109
|
+
| **Claude Desktop** | MCP server | Supported | [Setup guide](docs/integrations/claude-desktop.md) |
|
|
110
|
+
| **Codex** | Skill bundle | Supported | [Setup guide](docs/integrations/codex.md) |
|
|
111
|
+
|
|
112
|
+
### Claude MCP Server
|
|
113
|
+
|
|
114
|
+
The easiest way to run it is via `uvx` (see "One-line MCP install" above). For local development:
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
pip install -e .[mcp]
|
|
118
|
+
skillmesh-mcp
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
The server auto-discovers the registry: env var `SKILLMESH_REGISTRY` → repo root → bundled registry.
|
|
122
|
+
|
|
123
|
+
Exposes two tools via MCP:
|
|
124
|
+
- `route_with_skillmesh(query, top_k)` — provider-formatted context block
|
|
125
|
+
- `retrieve_skillmesh_cards(query, top_k)` — structured JSON payload
|
|
126
|
+
|
|
127
|
+
Copy-ready config templates in `examples/mcp/`.
|
|
128
|
+
|
|
129
|
+
### Codex Skill Bundle
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
$skill-installer install https://github.com/varunreddy/SkillMesh/tree/main/skills/skillmesh
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## Quickstart
|
|
136
|
+
|
|
137
|
+
### Install
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
python -m venv .venv && source .venv/bin/activate
|
|
141
|
+
pip install -e .[dev]
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
Optional extras:
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
pip install -e .[dense] # Dense reranking with sentence-transformers
|
|
148
|
+
pip install -e .[mcp] # Claude MCP server
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### Retrieve top-K cards
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
skillmesh retrieve \
|
|
155
|
+
--registry examples/registry/tools.json \
|
|
156
|
+
--query "set up nginx reverse proxy with SSL" \
|
|
157
|
+
--top-k 3
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### Emit provider-ready context
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
skillmesh emit \
|
|
164
|
+
--provider claude \
|
|
165
|
+
--registry examples/registry/tools.json \
|
|
166
|
+
--query "deploy container to GCP Cloud Run" \
|
|
167
|
+
--top-k 5
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
## Curated Registries
|
|
171
|
+
|
|
172
|
+
Use domain-specific registries for tighter routing:
|
|
173
|
+
|
|
174
|
+
| Registry | Domain | Cards |
|
|
175
|
+
|---|---|---|
|
|
176
|
+
| `tools.json` / `tools.yaml` | Full catalog | 90+ |
|
|
177
|
+
| `ml-engineering.registry.yaml` | ML training & evaluation | 15 |
|
|
178
|
+
| `data-engineering.registry.yaml` | Pipelines & data platforms | 10 |
|
|
179
|
+
| `bi-analytics.registry.yaml` | BI & dashboards | 10 |
|
|
180
|
+
| `devops.registry.yaml` | DevOps & infrastructure | 8 |
|
|
181
|
+
| `web-apis.registry.yaml` | API design & patterns | 7 |
|
|
182
|
+
| `cloud-gcp.registry.yaml` | Google Cloud Platform | 7 |
|
|
183
|
+
| `cloud-bi.registry.yaml` | Cloud BI | 5 |
|
|
184
|
+
| `roles.registry.yaml` | Role orchestrators | 10 |
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
skillmesh emit \
|
|
188
|
+
--provider claude \
|
|
189
|
+
--registry examples/registry/devops.registry.yaml \
|
|
190
|
+
--query "configure prometheus alerting and grafana dashboards" \
|
|
191
|
+
--top-k 3
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
## CLI Commands
|
|
195
|
+
|
|
196
|
+
| Command | Description |
|
|
197
|
+
|---|---|
|
|
198
|
+
| `skillmesh retrieve` | Top-K retrieval payload (JSON) |
|
|
199
|
+
| `skillmesh emit` | Provider-formatted context block |
|
|
200
|
+
| `skillmesh index` | Index registry into Chroma for persistent retrieval |
|
|
201
|
+
| `skillmesh-mcp` | Stdio MCP server for Claude |
|
|
202
|
+
|
|
203
|
+
```bash
|
|
204
|
+
skillmesh --help
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
## Repository Layout
|
|
208
|
+
|
|
209
|
+
```
|
|
210
|
+
src/skill_registry_rag/
|
|
211
|
+
├── models.py # Tool/role card models
|
|
212
|
+
├── registry.py # Registry loading + validation
|
|
213
|
+
├── retriever.py # BM25 + optional dense retrieval
|
|
214
|
+
├── adapters/ # Provider formatters (codex, claude)
|
|
215
|
+
└── cli.py # skillmesh CLI
|
|
216
|
+
|
|
217
|
+
examples/registry/
|
|
218
|
+
├── tools.json # Full tool catalog
|
|
219
|
+
├── tools.yaml # YAML version of full catalog
|
|
220
|
+
├── instructions/ # Expert instruction files (90+)
|
|
221
|
+
├── roles/ # Role orchestrator files
|
|
222
|
+
└── *.registry.yaml # Domain-specific registries
|
|
223
|
+
|
|
224
|
+
skills/skillmesh/ # Codex-installable skill
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
## Contributing
|
|
228
|
+
|
|
229
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for how to add expert cards, create registries, and submit PRs.
|
|
230
|
+
|
|
231
|
+
## Troubleshooting
|
|
232
|
+
|
|
233
|
+
### `skillmesh: command not found`
|
|
234
|
+
|
|
235
|
+
```bash
|
|
236
|
+
pip install -e .
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
### Missing registry path
|
|
240
|
+
|
|
241
|
+
The CLI and MCP server auto-discover the registry. If auto-discovery fails, pass `--registry` or set:
|
|
242
|
+
|
|
243
|
+
```bash
|
|
244
|
+
export SKILLMESH_REGISTRY=/path/to/tools.json
|
|
245
|
+
# or pass --registry on every command
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
### `skillmesh-mcp` fails to start
|
|
249
|
+
|
|
250
|
+
```bash
|
|
251
|
+
pip install -e .[mcp]
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
### Codex does not detect new skill
|
|
255
|
+
|
|
256
|
+
Restart Codex after running `$skill-installer`.
|
|
257
|
+
|
|
258
|
+
## Development
|
|
259
|
+
|
|
260
|
+
```bash
|
|
261
|
+
ruff check src tests
|
|
262
|
+
pytest
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
## License
|
|
266
|
+
|
|
267
|
+
MIT — see [LICENSE](LICENSE).
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
271
|
+
If SkillMesh helps your team, please **star the repo** — it directly improves discoverability and helps others find the project.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=68", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "skillmesh"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "A retrieval-gated skill architecture for LLM agents that scales to hundreds of tools by exposing only the top-K relevant capabilities per request."
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.10"
|
|
11
|
+
license = { text = "MIT" }
|
|
12
|
+
authors = [{ name = "Open Skill Registry Contributors" }]
|
|
13
|
+
dependencies = [
|
|
14
|
+
"numpy>=1.24",
|
|
15
|
+
"PyYAML>=6.0",
|
|
16
|
+
"rank-bm25>=0.2.2",
|
|
17
|
+
"jsonschema>=4.0",
|
|
18
|
+
"chromadb>=0.5.0"
|
|
19
|
+
]
|
|
20
|
+
|
|
21
|
+
[project.optional-dependencies]
|
|
22
|
+
dense = ["sentence-transformers>=2.7.0"]
|
|
23
|
+
mcp = ["mcp>=1.0.0"]
|
|
24
|
+
dev = ["pytest>=8.0", "pytest-cov>=5.0", "ruff>=0.6.0"]
|
|
25
|
+
|
|
26
|
+
[project.scripts]
|
|
27
|
+
skillmesh = "skill_registry_rag.cli:main"
|
|
28
|
+
skillmesh-mcp = "skill_registry_rag.mcp_server:main"
|
|
29
|
+
|
|
30
|
+
[project.urls]
|
|
31
|
+
Homepage = "https://github.com/varunreddy/SkillMesh"
|
|
32
|
+
Repository = "https://github.com/varunreddy/SkillMesh"
|
|
33
|
+
Issues = "https://github.com/varunreddy/SkillMesh/issues"
|
|
34
|
+
|
|
35
|
+
[tool.setuptools]
|
|
36
|
+
package-dir = {"" = "src"}
|
|
37
|
+
|
|
38
|
+
[tool.setuptools.packages.find]
|
|
39
|
+
where = ["src"]
|
|
40
|
+
|
|
41
|
+
[tool.setuptools.package-data]
|
|
42
|
+
"skill_registry_rag.data" = ["*.json"]
|
|
43
|
+
|
|
44
|
+
[tool.pytest.ini_options]
|
|
45
|
+
addopts = "-q"
|
|
46
|
+
testpaths = ["tests"]
|
|
47
|
+
|
|
48
|
+
[tool.ruff]
|
|
49
|
+
line-length = 100
|
|
50
|
+
target-version = "py310"
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"""skill-registry-rag package."""
|
|
2
|
+
|
|
3
|
+
from .backends import RetrievalBackend
|
|
4
|
+
from .backends.memory import InMemoryBackend
|
|
5
|
+
from .models import ExpertCard, RetrievalHit, ToolCard
|
|
6
|
+
from .registry import load_registry
|
|
7
|
+
from .retriever import SkillRetriever
|
|
8
|
+
|
|
9
|
+
__all__ = [
|
|
10
|
+
"ExpertCard",
|
|
11
|
+
"InMemoryBackend",
|
|
12
|
+
"RetrievalBackend",
|
|
13
|
+
"RetrievalHit",
|
|
14
|
+
"SkillRetriever",
|
|
15
|
+
"ToolCard",
|
|
16
|
+
"load_registry",
|
|
17
|
+
]
|