skill-proof-router 1.3.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.
- skill_proof_router-1.3.0/LICENSE +21 -0
- skill_proof_router-1.3.0/PKG-INFO +341 -0
- skill_proof_router-1.3.0/README.md +317 -0
- skill_proof_router-1.3.0/pyproject.toml +44 -0
- skill_proof_router-1.3.0/setup.cfg +4 -0
- skill_proof_router-1.3.0/skill_proof/__init__.py +66 -0
- skill_proof_router-1.3.0/skill_proof/__main__.py +17 -0
- skill_proof_router-1.3.0/skill_proof/_catalog.py +937 -0
- skill_proof_router-1.3.0/skill_proof/_compliance.py +187 -0
- skill_proof_router-1.3.0/skill_proof/_dialogue.py +532 -0
- skill_proof_router-1.3.0/skill_proof/_ranking.py +865 -0
- skill_proof_router-1.3.0/skill_proof/_vector.py +374 -0
- skill_proof_router-1.3.0/skill_proof/bridge.py +611 -0
- skill_proof_router-1.3.0/skill_proof/catalog.py +11 -0
- skill_proof_router-1.3.0/skill_proof/cli.py +866 -0
- skill_proof_router-1.3.0/skill_proof/core.py +1630 -0
- skill_proof_router-1.3.0/skill_proof/guard.py +13 -0
- skill_proof_router-1.3.0/skill_proof/mcp_install.py +414 -0
- skill_proof_router-1.3.0/skill_proof/mcp_server.py +400 -0
- skill_proof_router-1.3.0/skill_proof/models.py +450 -0
- skill_proof_router-1.3.0/skill_proof/ranking.py +13 -0
- skill_proof_router-1.3.0/skill_proof/vault.py +385 -0
- skill_proof_router-1.3.0/skill_proof/vector.py +11 -0
- skill_proof_router-1.3.0/skill_proof_router.egg-info/PKG-INFO +341 -0
- skill_proof_router-1.3.0/skill_proof_router.egg-info/SOURCES.txt +50 -0
- skill_proof_router-1.3.0/skill_proof_router.egg-info/dependency_links.txt +1 -0
- skill_proof_router-1.3.0/skill_proof_router.egg-info/entry_points.txt +3 -0
- skill_proof_router-1.3.0/skill_proof_router.egg-info/requires.txt +5 -0
- skill_proof_router-1.3.0/skill_proof_router.egg-info/top_level.txt +1 -0
- skill_proof_router-1.3.0/tests/test_bridge.py +170 -0
- skill_proof_router-1.3.0/tests/test_cli_setup.py +142 -0
- skill_proof_router-1.3.0/tests/test_compliance.py +224 -0
- skill_proof_router-1.3.0/tests/test_core.py +756 -0
- skill_proof_router-1.3.0/tests/test_global_hardening.py +145 -0
- skill_proof_router-1.3.0/tests/test_mcp_config.py +66 -0
- skill_proof_router-1.3.0/tests/test_multilingual_expansion.py +70 -0
- skill_proof_router-1.3.0/tests/test_plugin.py +427 -0
- skill_proof_router-1.3.0/tests/test_portability.py +291 -0
- skill_proof_router-1.3.0/tests/test_trss_regressions.py +22 -0
- skill_proof_router-1.3.0/tests/test_v0100.py +272 -0
- skill_proof_router-1.3.0/tests/test_v0110.py +196 -0
- skill_proof_router-1.3.0/tests/test_v0150.py +311 -0
- skill_proof_router-1.3.0/tests/test_v0160.py +781 -0
- skill_proof_router-1.3.0/tests/test_v02.py +81 -0
- skill_proof_router-1.3.0/tests/test_v03.py +64 -0
- skill_proof_router-1.3.0/tests/test_v042.py +275 -0
- skill_proof_router-1.3.0/tests/test_v050.py +365 -0
- skill_proof_router-1.3.0/tests/test_v060.py +356 -0
- skill_proof_router-1.3.0/tests/test_v070.py +612 -0
- skill_proof_router-1.3.0/tests/test_v080.py +415 -0
- skill_proof_router-1.3.0/tests/test_v090.py +316 -0
- skill_proof_router-1.3.0/tests/test_vector.py +150 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 P Choke & SORA
|
|
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,341 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: skill-proof-router
|
|
3
|
+
Version: 1.3.0
|
|
4
|
+
Summary: Deterministic, offline skill router and global skill vault for autonomous AI fleets
|
|
5
|
+
Author: P Choke & MIKA
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
8
|
+
Classifier: Intended Audience :: Developers
|
|
9
|
+
Classifier: Programming Language :: Python :: 3
|
|
10
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
15
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
16
|
+
Requires-Python: >=3.10
|
|
17
|
+
Description-Content-Type: text/markdown
|
|
18
|
+
License-File: LICENSE
|
|
19
|
+
Requires-Dist: rapidfuzz>=3.0.0
|
|
20
|
+
Provides-Extra: vectors
|
|
21
|
+
Requires-Dist: model2vec>=0.10.0; extra == "vectors"
|
|
22
|
+
Requires-Dist: tokenizers>=0.19.0; extra == "vectors"
|
|
23
|
+
Dynamic: license-file
|
|
24
|
+
|
|
25
|
+
<div align="center">
|
|
26
|
+
|
|
27
|
+
# Skill Proof
|
|
28
|
+
|
|
29
|
+
**Global Skill Vault & Deterministic In-Process Skill Router for AI Coding Agents**
|
|
30
|
+
|
|
31
|
+
<p><em>Zero routing model calls. Unified <code>~/.skill-proof/skills</code> vault. Sub-millisecond lexical, fuzzy & local vector routing over stdio MCP.</em></p>
|
|
32
|
+
|
|
33
|
+
<p>
|
|
34
|
+
<a href="https://github.com/Stxyu-p/skill-proof"><img src="docs/badges/release.svg" alt="Global Vault & MCP" /></a>
|
|
35
|
+
<a href="LICENSE"><img src="docs/badges/license.svg" alt="License" /></a>
|
|
36
|
+
<img src="docs/badges/python.svg" alt="Python 3.10+" />
|
|
37
|
+
<a href="#quick-start"><img src="docs/badges/quickstart.svg" alt="Quick Start" /></a>
|
|
38
|
+
<a href="#the-global-skill-vault-skill-proofskills"><img src="docs/badges/install.svg" alt="Global Vault" /></a>
|
|
39
|
+
<a href="#mcp-server--universal-client-installer"><img src="docs/badges/mcp.svg" alt="MCP" /></a>
|
|
40
|
+
</p>
|
|
41
|
+
|
|
42
|
+
<p>
|
|
43
|
+
<a href="#why-skill-proof">Why Skill Proof</a> ·
|
|
44
|
+
<a href="#live-routing-showcase">Live Routing</a> ·
|
|
45
|
+
<a href="#the-global-skill-vault-skill-proofskills">Global Skill Vault</a> ·
|
|
46
|
+
<a href="#quick-start">Quick Start</a> ·
|
|
47
|
+
<a href="#how-two-tier-routing-works">How It Works</a> ·
|
|
48
|
+
<a href="#architecture--key-modules">Architecture</a> ·
|
|
49
|
+
<a href="#mcp-server--universal-client-installer">MCP & Clients</a> ·
|
|
50
|
+
<a href="#cli-hermes--configuration-reference">CLI & Config</a> ·
|
|
51
|
+
<a href="#recommended-ecosystem-combo">Trinity Combo</a>
|
|
52
|
+
</p>
|
|
53
|
+
|
|
54
|
+
</div>
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Why Skill Proof?
|
|
59
|
+
|
|
60
|
+
As your `SKILL.md` library grows across coding agents, two compounding bottlenecks emerge:
|
|
61
|
+
1. **Fragmented Multi-Folder Chaos:** Skills get duplicated across `.agents/skills`, `.claude/skills`, `.cursor/skills`, `.codex/skills`, `.gemini/skills`, and `~/.hermes/skills` — wasting disk space and drifting out of sync whenever you improve a skill.
|
|
62
|
+
2. **System Prompt Bloat & Routing Uncertainty:** Stuffing 100+ skill descriptions into every system prompt burns thousands of tokens per turn, while calling a secondary LLM to pick a skill adds latency, cost, and nondeterministic guesses.
|
|
63
|
+
|
|
64
|
+
**Skill Proof solves both problems 100% locally and in-process:**
|
|
65
|
+
|
|
66
|
+
- **Global Skill Vault (`~/.skill-proof/skills`):** Consolidates dispersed physical skills into one canonical global vault (`vault.json`) and links them cleanly into legacy client folders via NTFS junctions or POSIX symlinks.
|
|
67
|
+
- **Deterministic Zero-LLM Routing:** Scores every skill in `< 1 ms` using a pre-computed inverted index, `rapidfuzz` C++ token alignment, character n-grams for spaceless scripts (Thai, CJK), contrastive clause splitting (`"use X instead of Y"`), 6-language negation vetoes (`"do not use TDD"`), and confidence-gated local embeddings (`model2vec` / ONNX).
|
|
68
|
+
- **Tamper-Evident Audit & Tool Gates:** Emits SHA-256 hash-chained selection receipts (`audit.jsonl`) storing derived numbers only (never prompts or secrets) and optionally enforces tool gates until the required skill is loaded.
|
|
69
|
+
|
|
70
|
+
| Cost of a Large Skill Catalog | Without Skill Proof | With Skill Proof |
|
|
71
|
+
| :--- | :--- | :--- |
|
|
72
|
+
| **Skill Storage** | Duplicated across `.agents`, `.claude`, `.cursor`, `.gemini`, `.hermes` | **One canonical vault (`~/.skill-proof/skills`)** shared by all agents |
|
|
73
|
+
| **Routing Execution** | Extra LLM call or full-catalog prompt reasoning | **Zero model calls** — deterministic in-process scoring in `< 1 ms` |
|
|
74
|
+
| **System Prompt Size** | Every skill name & description stays in the system prompt | Confident selection can replace the full index for that turn (`reduce_skill_prompt`) |
|
|
75
|
+
| **Negative Constraints** | `"do not use X"` often ignored by keyword matchers | **6-language Negation Veto** strips vetoed skills before scoring |
|
|
76
|
+
| **Vague / Ambiguous Queries** | Model guesses and activates the wrong workflow | Conservative margin gate returns `ambiguous` shortlist or `no_match` |
|
|
77
|
+
| **Auditability** | Opaque model choice with no provenance | **SHA-256 hash-chained receipts** + `/skill-proof why <skill>` breakdown |
|
|
78
|
+
|
|
79
|
+

|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Live Routing Showcase
|
|
84
|
+
|
|
85
|
+
### 1. Explicit Negation Veto + Contrastive Routing + Fleet Agent Hint
|
|
86
|
+
Notice how `"do not use TDD"` vetoes `test-driven-development` before ranking, selects `github-code-review`, attaches `github-pr-workflow` as a companion skill, and recommends the `altima` reviewer agent:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
$ skill-proof select --query "Review this pull request for syntax bugs, but do not use TDD"
|
|
90
|
+
decision: selected (lexical_match)
|
|
91
|
+
suggested fleet agent: altima
|
|
92
|
+
selected: github-code-review score=0.940715 reasons=alias_phrase,name_terms,tag_terms,alias_terms,description_terms companions=github-pr-workflow
|
|
93
|
+
candidate: github-code-review score=0.940715 reasons=alias_phrase,name_terms,tag_terms,alias_terms,description_terms
|
|
94
|
+
candidate: code-review score=0.876008 reasons=alias_phrase,name_terms,alias_terms,description_terms
|
|
95
|
+
candidate: github-pr-workflow score=0.852364 reasons=alias_phrase,tag_terms,alias_terms
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### 2. Natural-Language Symptom Routing (Zero Exact Skill-Name Tokens)
|
|
99
|
+
Even when the user describes a symptom (`"my page keeps crashing after login"`) without naming any skill, synonym bridges and morphology routing resolve the exact debugging playbook and companion test skill:
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
$ skill-proof select --query "my page keeps crashing after login"
|
|
103
|
+
decision: selected (lexical_match)
|
|
104
|
+
suggested fleet agent: sora
|
|
105
|
+
selected: systematic-debugging score=0.796145 reasons=alias_phrase,alias_terms companions=test-driven-development
|
|
106
|
+
candidate: systematic-debugging score=0.796145 reasons=alias_phrase,alias_terms
|
|
107
|
+
candidate: planning-with-files score=0.076061 reasons=description_terms
|
|
108
|
+
candidate: caveman score=0.035353 reasons=description_terms
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## The Global Skill Vault (`~/.skill-proof/skills`)
|
|
114
|
+
|
|
115
|
+
Instead of scattering skill copies across every IDE and CLI, **Skill Proof** places `~/.skill-proof/skills` at the top of the root discovery hierarchy (`vault` root):
|
|
116
|
+
|
|
117
|
+
```mermaid
|
|
118
|
+
flowchart TD
|
|
119
|
+
Roots["Dispersed Agent Roots<br/>• ~/.agents/skills<br/>• ~/.claude/skills<br/>• ~/.cursor/skills<br/>• ~/.gemini/skills<br/>• ~/.hermes/skills"] -->|"skill-proof vault migrate"| Vault[("Global Skill Vault<br/>~/.skill-proof/skills<br/>(Canonical Single Source of Truth)")]
|
|
120
|
+
|
|
121
|
+
Vault -->|"Direct MCP Discovery"| MCP["MCP Clients<br/>(skill_select / skill_search / skill_read)"]
|
|
122
|
+
Vault -->|"skill-proof vault pin / link-all<br/>(NTFS Junctions / Symlinks)"| Legacy["Legacy Folder-Based Agents"]
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
# 1. Migrate all physical skills from detected agent roots into ~/.skill-proof/skills
|
|
127
|
+
skill-proof vault migrate
|
|
128
|
+
|
|
129
|
+
# 2. Inspect global vault inventory and per-client linkage health
|
|
130
|
+
skill-proof vault status
|
|
131
|
+
|
|
132
|
+
# 3. Pin a specific skill (or link all vault skills) into a client directory via NTFS junction / symlink
|
|
133
|
+
skill-proof vault pin --skill systematic-debugging --to ~/.claude/skills
|
|
134
|
+
skill-proof vault link-all --to ~/.cursor/skills
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
> [!NOTE]
|
|
138
|
+
> **Safe Reparse & Zero-Data-Loss Guarantees:**
|
|
139
|
+
> - Junctions and symlinks pointing into `~/.skill-proof/skills` are automatically whitelisted by the catalog scanner (`unsafe_reparse = 0`).
|
|
140
|
+
> - `skill-proof vault unpin` refuses to delete physical directories.
|
|
141
|
+
> - `skill-proof vault pin` and `vault link-all` never overwrite an existing physical directory unless `--force` is explicitly provided.
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## Quick Start
|
|
146
|
+
|
|
147
|
+
### 1. Universal One-Command Auto-Install (Recommended)
|
|
148
|
+
|
|
149
|
+
Install `skill-proof`, register its stdio MCP server across all detected AI coding clients, and consolidate your skills into the global vault:
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
pip install skill-proof-router
|
|
153
|
+
skill-proof install
|
|
154
|
+
skill-proof vault migrate
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
`skill-proof install` detects and atomically updates:
|
|
158
|
+
- **Claude Code** (`~/.claude.json`) & **Claude Desktop** (`claude_desktop_config.json`)
|
|
159
|
+
- **Google Antigravity & Antigravity IDE** (`~/.gemini/config/mcp_config.json`, `~/.gemini/antigravity/mcp_config.json`)
|
|
160
|
+
- **Gemini CLI** (`~/.gemini/settings.json`) & **Codex CLI** (`~/.codex/config.toml`)
|
|
161
|
+
- **Cursor** (`~/.cursor/mcp.json`), **Windsurf**, **VS Code (Copilot)**, **OpenCode**, and **Cline**
|
|
162
|
+
|
|
163
|
+
Verify client registration and catalog state:
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
skill-proof clients
|
|
167
|
+
skill-proof status
|
|
168
|
+
skill-proof scan
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### 2. Hermes Agent Native Plugin
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
# Linux / macOS
|
|
175
|
+
git clone https://github.com/Stxyu-p/skill-proof.git ~/.hermes/plugins/skill-proof
|
|
176
|
+
|
|
177
|
+
# Windows (PowerShell)
|
|
178
|
+
git clone https://github.com/Stxyu-p/skill-proof.git "$env:LOCALAPPDATA\hermes\plugins\skill-proof"
|
|
179
|
+
|
|
180
|
+
hermes plugins enable skill-proof
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## How Two-Tier Routing Works
|
|
186
|
+
|
|
187
|
+
```mermaid
|
|
188
|
+
flowchart LR
|
|
189
|
+
Q(["User Request"]) --> Dialogue["1. Dialogue & Negation Layer<br/>• Session focus ('same skill')<br/>• Contrastive split ('X not Y')<br/>• 6-language negation veto"]
|
|
190
|
+
Dialogue --> Lex["2. Inverted-Index Lexical + Fuzzy Ranker<br/>• IDF token & phrase overlap<br/>• Thai/CJK character n-grams<br/>• rapidfuzz C++ similarity"]
|
|
191
|
+
Lex --> FastGate{"3. Clear Winner?<br/>score >= 0.55 &<br/>margin >= 0.18"}
|
|
192
|
+
FastGate -- "Yes (lexical_fastpath)" --> Decide["4. Three-State Decision<br/>• selected (score >= min_score, margin >= min_margin)<br/>• ambiguous (shortlist top-k)<br/>• no_match (abstain cleanly)"]
|
|
193
|
+
FastGate -- "Borderline & Vectors Enabled" --> Vec["Confidence-Gated Embeddings<br/>(local ONNX / model2vec / gateway)<br/>+ RRF Fusion"]
|
|
194
|
+
Vec --> Decide
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
### Three-State Decision Rules
|
|
198
|
+
|
|
199
|
+
- **`selected` (Clear Winner):** Top candidate meets `min_score` (default `0.28`) AND leads the runner-up by at least `min_margin` (default `0.05`). When `score >= 0.55` and `margin >= 0.18`, the embedding layer is bypassed entirely (`provider_used=lexical_fastpath`).
|
|
200
|
+
- **`ambiguous` (Close Runner-Up):** Multiple candidates cluster within `min_margin`. Skill Proof returns a shortlist of up to `max_candidates` (default `3`) instead of guessing.
|
|
201
|
+
- **`no_match` (Clean Abstention):** Nothing clears threshold. Skill Proof abstains so an unrelated skill is never forced onto a turn.
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
## Architecture & Key Modules
|
|
206
|
+
|
|
207
|
+
| Module | Role | Technical Advantage |
|
|
208
|
+
| :--- | :--- | :--- |
|
|
209
|
+
| `skill_proof/core.py` | **Engine Facade** | Turn lifecycle, session memory, SHA-256 hash-chained receipts, and shared `SkillProofEngine.from_config` factory. |
|
|
210
|
+
| `skill_proof/vault.py` | **Global Skill Vault** | Manages `~/.skill-proof/skills` and `vault.json`; implements `migrate`, `pin`, `unpin`, `sync`, and `link-all` via NTFS junctions / POSIX symlinks. |
|
|
211
|
+
| `skill_proof/_catalog.py` | **Multi-Root Discovery** | Prioritizes `~/.skill-proof/skills` (`vault` root), TTL-caches scans (`catalog_cache_ttl_ms`), validates frontmatter invariants, and filters disabled skills. |
|
|
212
|
+
| `skill_proof/_ranking.py` | **Lexical & Fuzzy Ranker** | Pre-computed inverted index, English morphology stemmer, Thai/CJK character n-grams, `rapidfuzz` C++ fuzzy matching, and companion skill handoff. |
|
|
213
|
+
| `skill_proof/_dialogue.py` | **Conversational Focus & Veto** | Multi-turn session focus, reference resolution (`"same skill as before"`), contrastive splitting (`"use X instead of Y"`), and 6-language negation vetoes. |
|
|
214
|
+
| `skill_proof/_vector.py` | **Confidence-Gated Vectors** | Runs `local` (`model2vec` / ONNX) or `gateway` embeddings with RRF fusion *only* when lexical ranking is borderline. |
|
|
215
|
+
| `skill_proof/_compliance.py` | **Policy Store & Calibration** | Enforce-mode tool gates (`active_turn.json`) and audit-driven threshold calibration (`calibrate_audit`). |
|
|
216
|
+
| `skill_proof/bridge.py` | **Host Hook Bridge** | Removable `PreToolUse` / `AGENTS.md` / `.cursor/rules` bridge for external harnesses. |
|
|
217
|
+
| `skill_proof/mcp_server.py` | **Stdio MCP Server** | Exposes `skill_roots`, `skill_scan`, `skill_select`, `skill_search`, and `skill_read` over JSON-RPC 2.0. |
|
|
218
|
+
| `skill_proof/mcp_install.py` | **Universal Client Installer** | Atomically registers/unregisters `skill-proof` across 11 AI agent CLIs and IDEs with `.pre-mcp-install.bak` backups. |
|
|
219
|
+
|
|
220
|
+
### System Footprint & Speed
|
|
221
|
+
|
|
222
|
+
| Property | Measured Value |
|
|
223
|
+
| :--- | :--- |
|
|
224
|
+
| **Routing Model Calls** | **0** (100% deterministic in-process scoring) |
|
|
225
|
+
| **Warm Catalog Scan (300 skills)** | **~0.02 ms** per turn (TTL-cached) |
|
|
226
|
+
| **Non-Matching Query Pruning** | **0.2 – 0.3 ms** via pre-computed inverted index |
|
|
227
|
+
| **Full Routing Median (300-skill catalog)** | **~6.0 ms** in a single Python process |
|
|
228
|
+
| **Embedding Work on Clear Lexical Winner** | **Skipped (`0 ms`)** via `lexical_fastpath` |
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
## MCP Server & Universal Client Installer
|
|
233
|
+
|
|
234
|
+
When registered via `skill-proof install`, any MCP-capable host gains five deterministic tools:
|
|
235
|
+
|
|
236
|
+
| MCP Tool | Purpose |
|
|
237
|
+
| :--- | :--- |
|
|
238
|
+
| **`skill_roots`** | List all active skill root directories (led by `~/.skill-proof/skills`) and their precedence order. |
|
|
239
|
+
| **`skill_scan`** | Scan all roots and return total skill count, diagnostic counts, and root health. |
|
|
240
|
+
| **`skill_select`** | Return a deterministic routing decision (`selected`, `ambiguous`, or `no_match`), top candidates, companions, and suggested fleet agent. |
|
|
241
|
+
| **`skill_search`** | Hybrid lexical + semantic RRF top-$k$ search across skill names, tags, aliases, and descriptions. |
|
|
242
|
+
| **`skill_read`** | Load the full `SKILL.md` body for a selected skill on demand instead of bloating the base system prompt. |
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
## CLI, Hermes & Configuration Reference
|
|
247
|
+
|
|
248
|
+
| CLI Subcommand | Purpose |
|
|
249
|
+
| :--- | :--- |
|
|
250
|
+
| `skill-proof select "<query>"` | Choose one skill deterministically for a query (`--json` for structured output). |
|
|
251
|
+
| `skill-proof eval "<query>"` | Interactive query diagnostics: token breakdown, n-grams, explicit matches, and full ranking matrix. |
|
|
252
|
+
| `skill-proof vault <action>` | Manage `~/.skill-proof/skills` (`status`, `migrate`, `pin`, `unpin`, `sync`, `link-all`). |
|
|
253
|
+
| `skill-proof install` / `clients` / `uninstall` | Register, inspect, or remove the stdio MCP server across all 11 supported AI clients. |
|
|
254
|
+
| `skill-proof scan` / `roots` | Scan all detected roots and report catalog diagnostics. |
|
|
255
|
+
| `skill-proof overlap` | Detect near-duplicate or overlapping skills worth pruning across roots. |
|
|
256
|
+
| `skill-proof calibrate` | Compute threshold and synonym tuning suggestions from `audit.jsonl`. |
|
|
257
|
+
| `skill-proof models` / `setup` / `prefetch` | Inspect, configure, or checksum-download local embedding models. |
|
|
258
|
+
| `skill-proof bridge` | Install or remove optional host hook bridges (`status`, `init`, `remove`, `ai-setup`). |
|
|
259
|
+
|
|
260
|
+
<details>
|
|
261
|
+
<summary><strong>⚙️ Click to expand: Full Hermes Plugin Commands & Configuration Schema</strong></summary>
|
|
262
|
+
|
|
263
|
+
<br/>
|
|
264
|
+
|
|
265
|
+
### In-Session Slash Commands (Hermes)
|
|
266
|
+
|
|
267
|
+
| Command | Purpose |
|
|
268
|
+
| :--- | :--- |
|
|
269
|
+
| `/skill-proof status` | Compact turn state, catalog size, and provider status. |
|
|
270
|
+
| `/skill-proof why <name>` | Full scoring explanation for why a skill won, lost, or was vetoed. |
|
|
271
|
+
| `/skill-proof stats` | Per-skill hit rates, misses, and overrides aggregated from `audit.jsonl`. |
|
|
272
|
+
| `/skill-proof calibrate` | Data-driven threshold and weight suggestions from audit history. |
|
|
273
|
+
| `/skill-proof audit-verify` | Verify the cryptographic SHA-256 `prev_sha256` hash chain of `audit.jsonl`. |
|
|
274
|
+
| `/skill-proof overlap` | Near-duplicate detection paired with actual audit load counts. |
|
|
275
|
+
| `/skill-proof trace` | Full bounded JSON receipt for the current turn. |
|
|
276
|
+
| `/skill-proof refresh` | Force an immediate catalog rescan on the next turn. |
|
|
277
|
+
| `/skill-proof health` | Self-check across catalog diagnostics, hook activity, and timing. |
|
|
278
|
+
|
|
279
|
+
### Configuration Settings (`config.yaml`)
|
|
280
|
+
|
|
281
|
+
```yaml
|
|
282
|
+
plugins:
|
|
283
|
+
enabled:
|
|
284
|
+
- skill-proof
|
|
285
|
+
entries:
|
|
286
|
+
skill-proof:
|
|
287
|
+
settings:
|
|
288
|
+
mode: nudge # nudge (default), observe, or enforce-tools
|
|
289
|
+
reduce_skill_prompt: false # opt-in; confident selection replaces the full index
|
|
290
|
+
embedding_provider: off # off (default), local, or gateway
|
|
291
|
+
embedding_model: Xenova/multilingual-e5-small
|
|
292
|
+
min_score: 0.28
|
|
293
|
+
min_margin: 0.05
|
|
294
|
+
catalog_cache_ttl_ms: 1000 # reuse host-filtered catalog within TTL window
|
|
295
|
+
block_modified_hub_skills: false # exclude hub skills whose bundle SHA-256 changed
|
|
296
|
+
session_memory: true # resolve follow-ups like "use the same skill"
|
|
297
|
+
audit_log: true # append derived-numbers hash-chained audit records
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
</details>
|
|
301
|
+
|
|
302
|
+
---
|
|
303
|
+
|
|
304
|
+
## Recommended Ecosystem Combo
|
|
305
|
+
|
|
306
|
+
While **Skill Proof** works standalone as your skill vault and deterministic router, pairing it with [**MemCore**](https://github.com/Stxyu-p/memcore) and [**trimtok**](https://github.com/Stxyu-p/trimtok) completes the **Global Agent Trinity** — uniting every AI coding client on your machine (**Claude Code, Cursor, Antigravity, Gemini CLI, Codex, VS Code Copilot, Windsurf, OpenCode, Cline, and Hermes**) around three shared local hubs:
|
|
307
|
+
|
|
308
|
+
```mermaid
|
|
309
|
+
flowchart LR
|
|
310
|
+
Task(["Developer Request"]) --> SP["Skill Proof<br/>~/.skill-proof/skills<br/>(Deterministic Skill Router)"]
|
|
311
|
+
SP --> MC["MemCore<br/>~/.memcore<br/>(Governed Bitemporal Memory)"]
|
|
312
|
+
MC --> Agent["Any AI Coding Agent"]
|
|
313
|
+
Agent --> TT["trimtok<br/>~/.trimtok<br/>(88.3% Context Compression + CCR #c1)"]
|
|
314
|
+
TT --> Agent
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
| Pillar | Repository | Global Hub | What Installing All 3 Gives You |
|
|
318
|
+
| :--- | :--- | :--- | :--- |
|
|
319
|
+
| **Skill Vault & Router** | **[Skill Proof](https://github.com/Stxyu-p/skill-proof)** | `~/.skill-proof/skills` | Consolidates all dispersed `SKILL.md` playbooks into **one deduplicated global vault** and routes tasks in `< 1 ms` with zero routing LLM calls. |
|
|
320
|
+
| **Governed Memory** | **[MemCore](https://github.com/Stxyu-p/memcore)** | `~/.memcore` | Gives every IDE and CLI **one shared bitemporal brain** (`FTS5` + `sqlite-vec` SIMD + `model2vec`) with hard trust boundaries and source-file staleness tracking. |
|
|
321
|
+
| **Context Shield** | **[trimtok](https://github.com/Stxyu-p/trimtok)** | `~/.trimtok` | Cuts terminal, traceback, diff, AST code, and JSON token bloat by **88.3%** with instant `#c1` lossless recovery. |
|
|
322
|
+
|
|
323
|
+
```bash
|
|
324
|
+
# Install & link the complete Global Agent Trinity across all your IDEs and CLIs
|
|
325
|
+
pip install skill-proof-router memcore trimtok
|
|
326
|
+
skill-proof install && memcore init && memcore install && trimtok install
|
|
327
|
+
skill-proof vault migrate
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
---
|
|
331
|
+
|
|
332
|
+
## Verification & License
|
|
333
|
+
|
|
334
|
+
```bash
|
|
335
|
+
# Run the complete 383-test offline verification suite + routing & latency gates
|
|
336
|
+
pytest -q
|
|
337
|
+
python routing_benchmark.py --gate
|
|
338
|
+
python phase3_gates.py
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
Distributed under the [MIT License](LICENSE). Designed and maintained by **P Choke & SORA**.
|