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.
Files changed (33) hide show
  1. skillmesh-0.1.0/LICENSE +21 -0
  2. skillmesh-0.1.0/PKG-INFO +298 -0
  3. skillmesh-0.1.0/README.md +271 -0
  4. skillmesh-0.1.0/pyproject.toml +50 -0
  5. skillmesh-0.1.0/setup.cfg +4 -0
  6. skillmesh-0.1.0/src/skill_registry_rag/__init__.py +17 -0
  7. skillmesh-0.1.0/src/skill_registry_rag/__main__.py +5 -0
  8. skillmesh-0.1.0/src/skill_registry_rag/_resolve.py +57 -0
  9. skillmesh-0.1.0/src/skill_registry_rag/adapters/__init__.py +4 -0
  10. skillmesh-0.1.0/src/skill_registry_rag/adapters/claude.py +40 -0
  11. skillmesh-0.1.0/src/skill_registry_rag/adapters/codex.py +40 -0
  12. skillmesh-0.1.0/src/skill_registry_rag/backends/__init__.py +15 -0
  13. skillmesh-0.1.0/src/skill_registry_rag/backends/chroma.py +171 -0
  14. skillmesh-0.1.0/src/skill_registry_rag/backends/memory.py +160 -0
  15. skillmesh-0.1.0/src/skill_registry_rag/cli.py +124 -0
  16. skillmesh-0.1.0/src/skill_registry_rag/data/__init__.py +8 -0
  17. skillmesh-0.1.0/src/skill_registry_rag/data/tools.compiled.json +5953 -0
  18. skillmesh-0.1.0/src/skill_registry_rag/mcp_server.py +217 -0
  19. skillmesh-0.1.0/src/skill_registry_rag/models.py +38 -0
  20. skillmesh-0.1.0/src/skill_registry_rag/registry.py +192 -0
  21. skillmesh-0.1.0/src/skill_registry_rag/retriever.py +25 -0
  22. skillmesh-0.1.0/src/skillmesh.egg-info/PKG-INFO +298 -0
  23. skillmesh-0.1.0/src/skillmesh.egg-info/SOURCES.txt +31 -0
  24. skillmesh-0.1.0/src/skillmesh.egg-info/dependency_links.txt +1 -0
  25. skillmesh-0.1.0/src/skillmesh.egg-info/entry_points.txt +3 -0
  26. skillmesh-0.1.0/src/skillmesh.egg-info/requires.txt +16 -0
  27. skillmesh-0.1.0/src/skillmesh.egg-info/top_level.txt +1 -0
  28. skillmesh-0.1.0/tests/test_adapters.py +46 -0
  29. skillmesh-0.1.0/tests/test_backends.py +79 -0
  30. skillmesh-0.1.0/tests/test_cli.py +105 -0
  31. skillmesh-0.1.0/tests/test_mcp_server.py +60 -0
  32. skillmesh-0.1.0/tests/test_registry.py +84 -0
  33. skillmesh-0.1.0/tests/test_retriever.py +150 -0
@@ -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.
@@ -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
+ [![CI](https://github.com/varunreddy/SkillMesh/actions/workflows/ci.yml/badge.svg)](https://github.com/varunreddy/SkillMesh/actions/workflows/ci.yml)
31
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
32
+ [![Python 3.10+](https://img.shields.io/badge/python-3.10%2B-blue.svg)](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
+ [![CI](https://github.com/varunreddy/SkillMesh/actions/workflows/ci.yml/badge.svg)](https://github.com/varunreddy/SkillMesh/actions/workflows/ci.yml)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
5
+ [![Python 3.10+](https://img.shields.io/badge/python-3.10%2B-blue.svg)](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,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -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
+ ]
@@ -0,0 +1,5 @@
1
+ from .cli import main
2
+
3
+
4
+ if __name__ == "__main__":
5
+ raise SystemExit(main())