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.
Files changed (52) hide show
  1. skill_proof_router-1.3.0/LICENSE +21 -0
  2. skill_proof_router-1.3.0/PKG-INFO +341 -0
  3. skill_proof_router-1.3.0/README.md +317 -0
  4. skill_proof_router-1.3.0/pyproject.toml +44 -0
  5. skill_proof_router-1.3.0/setup.cfg +4 -0
  6. skill_proof_router-1.3.0/skill_proof/__init__.py +66 -0
  7. skill_proof_router-1.3.0/skill_proof/__main__.py +17 -0
  8. skill_proof_router-1.3.0/skill_proof/_catalog.py +937 -0
  9. skill_proof_router-1.3.0/skill_proof/_compliance.py +187 -0
  10. skill_proof_router-1.3.0/skill_proof/_dialogue.py +532 -0
  11. skill_proof_router-1.3.0/skill_proof/_ranking.py +865 -0
  12. skill_proof_router-1.3.0/skill_proof/_vector.py +374 -0
  13. skill_proof_router-1.3.0/skill_proof/bridge.py +611 -0
  14. skill_proof_router-1.3.0/skill_proof/catalog.py +11 -0
  15. skill_proof_router-1.3.0/skill_proof/cli.py +866 -0
  16. skill_proof_router-1.3.0/skill_proof/core.py +1630 -0
  17. skill_proof_router-1.3.0/skill_proof/guard.py +13 -0
  18. skill_proof_router-1.3.0/skill_proof/mcp_install.py +414 -0
  19. skill_proof_router-1.3.0/skill_proof/mcp_server.py +400 -0
  20. skill_proof_router-1.3.0/skill_proof/models.py +450 -0
  21. skill_proof_router-1.3.0/skill_proof/ranking.py +13 -0
  22. skill_proof_router-1.3.0/skill_proof/vault.py +385 -0
  23. skill_proof_router-1.3.0/skill_proof/vector.py +11 -0
  24. skill_proof_router-1.3.0/skill_proof_router.egg-info/PKG-INFO +341 -0
  25. skill_proof_router-1.3.0/skill_proof_router.egg-info/SOURCES.txt +50 -0
  26. skill_proof_router-1.3.0/skill_proof_router.egg-info/dependency_links.txt +1 -0
  27. skill_proof_router-1.3.0/skill_proof_router.egg-info/entry_points.txt +3 -0
  28. skill_proof_router-1.3.0/skill_proof_router.egg-info/requires.txt +5 -0
  29. skill_proof_router-1.3.0/skill_proof_router.egg-info/top_level.txt +1 -0
  30. skill_proof_router-1.3.0/tests/test_bridge.py +170 -0
  31. skill_proof_router-1.3.0/tests/test_cli_setup.py +142 -0
  32. skill_proof_router-1.3.0/tests/test_compliance.py +224 -0
  33. skill_proof_router-1.3.0/tests/test_core.py +756 -0
  34. skill_proof_router-1.3.0/tests/test_global_hardening.py +145 -0
  35. skill_proof_router-1.3.0/tests/test_mcp_config.py +66 -0
  36. skill_proof_router-1.3.0/tests/test_multilingual_expansion.py +70 -0
  37. skill_proof_router-1.3.0/tests/test_plugin.py +427 -0
  38. skill_proof_router-1.3.0/tests/test_portability.py +291 -0
  39. skill_proof_router-1.3.0/tests/test_trss_regressions.py +22 -0
  40. skill_proof_router-1.3.0/tests/test_v0100.py +272 -0
  41. skill_proof_router-1.3.0/tests/test_v0110.py +196 -0
  42. skill_proof_router-1.3.0/tests/test_v0150.py +311 -0
  43. skill_proof_router-1.3.0/tests/test_v0160.py +781 -0
  44. skill_proof_router-1.3.0/tests/test_v02.py +81 -0
  45. skill_proof_router-1.3.0/tests/test_v03.py +64 -0
  46. skill_proof_router-1.3.0/tests/test_v042.py +275 -0
  47. skill_proof_router-1.3.0/tests/test_v050.py +365 -0
  48. skill_proof_router-1.3.0/tests/test_v060.py +356 -0
  49. skill_proof_router-1.3.0/tests/test_v070.py +612 -0
  50. skill_proof_router-1.3.0/tests/test_v080.py +415 -0
  51. skill_proof_router-1.3.0/tests/test_v090.py +316 -0
  52. 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
+ ![Skill Proof two-tier in-process routing architecture](docs/architecture.svg)
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**.