sfp-hive 3.19.0 → 3.20.0

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 (3) hide show
  1. package/README.md +516 -249
  2. package/bin/sfp.js +1 -1
  3. package/package.json +2 -2
package/README.md CHANGED
@@ -5,252 +5,286 @@
5
5
  </picture>
6
6
  </h1>
7
7
 
8
- <p align="center">
9
- <b>Give your AI coding agent the right skills for the job, not all of them.</b><br>
10
- 1065 skills, sorted by what you build. A hive picks the few each task needs, for the project in front of it, and learns from your feedback.
11
- </p>
8
+ <h3 align="center">Your AI coding tool gets the right instructions for the job, and only those.</h3>
12
9
 
13
10
  <p align="center">
14
- <img src="https://img.shields.io/badge/version-3.19.0-0f766e?style=flat-square&labelColor=3b4350" alt="Version 3.19.0">
11
+ <a href="https://www.npmjs.com/package/sfp-hive"><img src="https://img.shields.io/npm/v/sfp-hive?style=flat-square&labelColor=3b4350&color=0f766e&label=npm" alt="npm version"></a>
15
12
  <img src="https://img.shields.io/badge/skills-1065-0f766e?style=flat-square&labelColor=3b4350" alt="1065 skills">
16
- <img src="https://img.shields.io/badge/installs_into-16_IDEs-0f766e?style=flat-square&labelColor=3b4350" alt="Installs into 16 IDEs and CLIs">
17
- <img src="https://img.shields.io/badge/tested_end_to_end-Claude_Code-0f766e?style=flat-square&labelColor=3b4350" alt="Tested end to end in Claude Code">
18
- <img src="https://img.shields.io/badge/needs-Python_3-0f766e?style=flat-square&labelColor=3b4350" alt="Needs Python 3">
19
- <img src="https://img.shields.io/badge/license-MIT-0f766e?style=flat-square&labelColor=3b4350" alt="MIT license">
13
+ <img src="https://img.shields.io/badge/categories-24-0f766e?style=flat-square&labelColor=3b4350" alt="24 categories">
14
+ <img src="https://img.shields.io/badge/bundles-121-0f766e?style=flat-square&labelColor=3b4350" alt="121 bundles">
15
+ <img src="https://img.shields.io/badge/works_with-20_AI_tools-0f766e?style=flat-square&labelColor=3b4350" alt="Works with 20 AI coding tools">
16
+ <img src="https://img.shields.io/badge/picks_skills-on_your_machine-0f766e?style=flat-square&labelColor=3b4350" alt="Picks skills on your machine">
17
+ <img src="https://img.shields.io/badge/price-free_(MIT)-0f766e?style=flat-square&labelColor=3b4350" alt="Free, MIT license">
20
18
  </p>
21
19
 
22
- <blockquote align="center">
23
- <b>SFP 3.19.0 Results at a Glance:</b><br>
24
- &bull; <b>61.9% held-out retrieval accuracy</b> (+37.2% over plain keyword search 24.7%, +14.5% over words-only 47.4%) with local <code>bge-m3</code> vectors + fast local reranking.<br>
25
- &bull; <b>92.5% format match on held-out tasks</b> (up from 57.5% cold start) tailored to user taste (animation, text, code, video) with zero hard-coded skill names.<br>
26
- &bull; <b>96.1% context token reduction</b> vs loading all skill descriptions (99.8% vs loading full library text).<br>
27
- &bull; <b>100% private, local-first intelligence</b> with personalized learning taste profiles and zero prompt telemetry leaving your workstation.<br>
28
- <i>Read the complete benchmark report, 95% Wilson intervals, and disclosures in <a href="bench/RESULTS.md">bench/RESULTS.md</a>.</i>
29
- </blockquote>
30
-
31
20
  <p align="center">
32
- <picture>
33
- <source media="(prefers-color-scheme: dark)" srcset="assets/results-numbers-dark.svg">
34
- <img src="assets/results-numbers-light.svg" alt="86% right skill on unseen tasks (plain search 9%); 5 of 6 pages shipped with SFP against 4 of 6 without skills; 1065 skills" width="100%">
35
- </picture>
36
- </p>
37
-
38
- <p align="center">
39
- <a href="#try-it-in-60-seconds"><b>Try in 60s</b></a> &middot;
40
- <a href="#the-problem"><b>Why We Built It</b></a> &middot;
41
- <a href="#what-sfp-does"><b>What It Does</b></a> &middot;
42
- <a href="#see-it-choose"><b>Live Selection</b></a> &middot;
43
- <a href="#platform-capabilities"><b>Platform Capabilities</b></a> &middot;
44
- <a href="#why-choose-sfp"><b>Benchmark Results</b></a> &middot;
45
- <a href="#the-proof"><b>The Proof</b></a> &middot;
21
+ <a href="#what-is-this"><b>What is this?</b></a> &middot;
22
+ <a href="#start-here"><b>Start here</b></a> &middot;
23
+ <a href="#why-sfp-the-unfair-advantages"><b>Advantages</b></a> &middot;
24
+ <a href="#see-it-choose"><b>See it choose</b></a> &middot;
25
+ <a href="#ui-design-and-front-end-skills"><b>UI &amp; design</b></a> &middot;
26
+ <a href="#business-marketing-and-growth-skills"><b>Business &amp; marketing</b></a> &middot;
27
+ <a href="#the-proof"><b>The proof</b></a> &middot;
46
28
  <a href="#install"><b>Install</b></a>
47
29
  </p>
48
30
 
49
- ## Try It in 60 Seconds
50
-
51
- ```bash
52
- # macOS and Linux:
53
- curl -fsSL https://raw.githubusercontent.com/siddu1004/SFP/main/get.sh | sh
31
+ ---
54
32
 
55
- # Windows (PowerShell):
56
- irm https://raw.githubusercontent.com/siddu1004/SFP/main/get.ps1 | iex
57
- ```
33
+ ## What Is This?
58
34
 
59
- Needs Python 3.8+ and Git. Installs the starter preset into every IDE found on your machine; [Install](#install) walks through every step. Restart your IDE, then prompt your agent:
35
+ AI coding tools like Claude Code, Cursor and Copilot do better work when they are given **skills**: short written guides that teach one job well, such as "how to write good tests in Rust". Thousands exist, but your AI can only hold so much in mind at once. Load them all and there is little room left for your code.
60
36
 
61
- > Use sfp-hive for this task: add tests for the checkout form.
37
+ **SFP is a librarian for your AI.** It keeps 1065 skills on the shelf across 24 categories and **121 curated bundles** (100% of skills are bundled). For each task, it reads what you asked and what your project is, and hands your AI only the few that fit. It remembers what helped you, so its choices get better for you over time.
62
38
 
63
- The agent selects the exact skills matching your stack, explains why, and executes in sequence. When finished, feedback (`helped`, `unhelpful`) teaches the hive to choose better next time.
39
+ <p align="center">
40
+ <picture>
41
+ <source media="(prefers-color-scheme: dark)" srcset="assets/pipeline-dark.svg">
42
+ <img src="assets/pipeline-light.svg" alt="How SFP picks: words, meaning and project fit fuse into one shortlist, an optional local judge orders it, and your stack is returned." width="100%">
43
+ </picture>
44
+ </p>
64
45
 
65
- Uninstall cleanly anytime: `~/.sfp/SFP/install.sh uninstall` (or `.\install.ps1 uninstall` on Windows).
46
+ <table align="center">
47
+ <tr>
48
+ <td align="center" valign="top" width="33%"><h3>97%</h3>right skill chosen on the 150-task blind-judged final exam (<b>93%</b> right first)</td>
49
+ <td align="center" valign="top" width="33%"><h3>95%</h3>less for your AI to carry than having every skill always on (4,268 vs 81,690 tokens)</td>
50
+ <td align="center" valign="top" width="33%"><h3>0</h3>words sent out by SFP when it picks: it runs on your machine</td>
51
+ </tr>
52
+ </table>
66
53
 
67
- ---
54
+ ### Why Not Just Use Search, or Turn Everything On?
68
55
 
69
- ## The Problem
56
+ | | Keyword search | Every skill always on | SFP |
57
+ |---|---|---|---|
58
+ | **What your AI carries** | Only what it finds | 81,690 tokens (41% of its memory) | About 4,000 tokens |
59
+ | **Knows your project** | No | No | Yes: it reads your project files |
60
+ | **Drops unrelated junk picks** | No (62.5% junk on negative/edge tasks) | No | Yes: **0.0% junk** on `precision_heldout` (87.5% hit / 76.5% precision) |
61
+ | **Learns what you like** | No | No | Yes, from your feedback (80% to 100% format fit, 100% named-format override) |
62
+ | **Time to choose** | Instant | Nothing to choose | ~3 ms words-only; ~360 ms typical with local models |
70
63
 
71
- High-quality agent skills exist, but using them today forces a painful tradeoff:
64
+ ---
72
65
 
73
- - **The 58,000-Token Tax**: Agents read every installed skill description at session start. For 1065 skills, that consumes **81,931 tokens** (41% of a 200k context window) before you type a single prompt.
74
- - **Dumb Search Fails Across Stacks**: Asking for "write tests" requires completely different skills in Next.js (`react-testing`), Django (`django-tdd`), or Rust (`rust-testing`). Keyword search cannot see your project structure.
75
- - **Fragmented Ecosystem**: 52 upstream repositories use different file layouts, paths, and metadata formats across 16 IDEs.
76
- - **Static Guesswork**: Without feedback and reinforcement learning, agent tooling repeats the same bad selections indefinitely.
66
+ ## Why SFP: The Unfair Advantages
77
67
 
78
68
  <p align="center">
79
69
  <picture>
80
- <source media="(prefers-color-scheme: dark)" srcset="assets/hive-lifecycle-dark.svg">
81
- <img src="assets/hive-lifecycle-light.svg" alt="Why Choose SFP Hive: Architecture Advantage" width="100%">
70
+ <source media="(prefers-color-scheme: dark)" srcset="assets/advantages-dark.svg">
71
+ <img src="assets/advantages-light.svg" alt="Six unfair advantages of SFP: 96% less context, manifest stack fit, 0.0% junk rate, adaptive taste, 100% local and private execution, and 20 AI tools synced." width="100%">
82
72
  </picture>
83
73
  </p>
84
74
 
85
- ---
75
+ Most AI coding setups fail in one of two ways: **context bloat** (stuffing 50+ static rules into the system prompt until the model loses track of your code) or **context starvation** (leaving the model to guess framework conventions, accessibility rules, and security checks). SFP solves both at the root:
76
+
77
+ 1. **Surgical Context Budgeting**
78
+ Instead of burning 41% of a 200k window before you type a word, your agent carries a ~700-token router at rest and loads only the 1 to 3 specialist skills (~3,400 to 4,200 tokens) required for the current task.
79
+ 2. **Manifest-Driven Stack Isolation**
80
+ Before scoring candidates, the Hive inspects root manifests (`package.json`, `Cargo.toml`, `go.mod`, `pyproject.toml`, `pubspec.yaml`, `*.csproj`). A Rust workspace never receives Python or Next.js rules, eliminating cross-stack hallucination.
81
+ 3. **Confidence Gating Against Noise**
82
+ Single weak-word matches are rejected unless backed by multi-signal quorum or technology fit. Micro-edits (*"fix typo on line 42"*) and out-of-domain queries return an empty stack with **0.0% junk**.
83
+ 4. **30-Day Half-Life Taste & Autonomous Mentor**
84
+ Your `helped` / `unhelpful` feedback trains a local LinUCB model and tracks format preferences (code, prose, animation, video). When your work hits a topic the catalog covers thinly, `sfp mentor grow` synthesizes peer-reviewed papers from OpenAlex and arXiv into a draft skill for your approval.
85
+ 5. **Zero-Telemetry Local Execution**
86
+ Deterministic selection runs in ~3 ms using standard-library Python. Optional semantic search (`bge-m3`) and LLM reranking (`lfm2-24b-a2b`) run against your own local Ollama or LM Studio server.
87
+ 6. **One Brain Across 20 IDEs and CLIs**
88
+ Install once and keep skills, MCP tools, and `.agents/rules/sfp-active-skills.md` synchronized across Claude Code, Antigravity, Cursor, VS Code Copilot, Codex, Windsurf, Gemini CLI, and 13 more tools.
89
+
90
+ <details>
91
+ <summary><b>New to this? What the words mean</b></summary>
92
+ <br>
93
+
94
+ | Word | In plain language |
95
+ |---|---|
96
+ | **AI coding tool, agent** | The AI that writes code with you: Claude Code, Cursor, Copilot, Antigravity and others |
97
+ | **Skill** | A short guide your AI reads before a job. Written in plain text, in a file called `SKILL.md` |
98
+ | **Hive** | The part of SFP that chooses skills. Many small signals vote, like bees choosing a new home |
99
+ | **Token** | The unit AI models read text in, roughly three quarters of a word. An AI can only hold so many at once |
100
+ | **Context** | Everything your AI is holding in mind right now |
101
+ | **IDE** | The program you write code in, such as VS Code |
102
+ | **MCP** | A standard way for AI tools to use outside helpers. SFP can run as one |
103
+ | **Local model** | An AI model running on your own computer, through a free program like Ollama or LM Studio |
86
104
 
87
- ## What SFP Does
105
+ </details>
88
106
 
89
- SFP brings biological collective intelligence to agent skill orchestration:
107
+ ---
90
108
 
91
- | Capability | Mechanism | Impact |
92
- |---|---|---|
93
- | **Curate & Unify** | 91 repositories merged into 24 categories, organized by role presets | Complete coverage across frontend, backend, security, DevOps, and AI |
94
- | **Dynamic Hive Selection** | 5 scout signals (task words, project files, work phase, category, history) reach quorum | **266 tokens** carried instead of 81,931: **308x reduction** |
95
- | **LinUCB Bandit & RL** | Contextual bandit exploration plus implicit reward harvesting from test runs and git commits | **91% of reported mistakes fixed** on retry |
96
- | **Universal Delivery** | Native folder injection for 16 IDEs + zero-install MCP server + VS Code / Antigravity extension | Install once, run anywhere |
97
- | **Unlimited Multi-Bundle Stacking** | Stack multiple workflow recipes concurrently (e.g. testing + frontend + security) with auto-deduplication | Zero limits on active bundle depth |
109
+ ## Start Here
98
110
 
99
111
  <p align="center">
100
112
  <picture>
101
- <source media="(prefers-color-scheme: dark)" srcset="assets/hive-architecture-dark.svg">
102
- <img src="assets/hive-architecture-light.svg" alt="SFP Hive Decision Engine Architecture" width="100%">
113
+ <source media="(prefers-color-scheme: dark)" srcset="assets/install-steps-dark.svg">
114
+ <img src="assets/install-steps-light.svg" alt="Install SFP in three steps: run npx sfp-hive install, restart your AI tool, and ask it to use sfp-hive." width="100%">
103
115
  </picture>
104
116
  </p>
105
117
 
106
- ### How the Hive Operates
118
+ You need **Node.js** ([download](https://nodejs.org/)), **Python 3.8 or newer** ([download](https://www.python.org/downloads/); on Windows tick "Add python.exe to PATH") and an AI coding tool.
107
119
 
108
- 1. **Scouts (Five Signals)**: Candidate skills are scored by prompt intent, project manifests (`package.json`, `Cargo.toml`, etc.), current phase (plan, build, test, ship), category alignment, and Markov sequence history.
109
- 2. **Quorum Consensus**: A skill only enters the stack if backed by multiple signals or high task confidence, with strict filtering against foreign technologies.
110
- 3. **Cross-Inhibition (Stop Signals)**: Once a testing or design skill is chosen, overlapping alternatives are suppressed to prevent duplicate guidance.
111
- 4. **Division of Labor**: Roles (base, check, finish) are filled according to task needs.
112
- 5. **Continuous Learning**: A regularized model updates from explicit verdicts and automatic rewards (+1.0 for passing test suites, +0.5 for git commits, -0.6 for test failures).
113
- 6. **Meaning, Not Just Words (local models)**: With an embedding model running in LM Studio or Ollama, every skill is also a vector, and a task finds skills close to what it *means*. Meaning rescues a weak word match but never overrules one that names its skill. Nothing leaves your machine.
114
- 7. **Your Role**: The project's files tell the hive who you are (backend, frontend, mobile, data and ML, DevOps, embedded and hardware, web3, agent builder), and the skills of your role get a small push.
115
- 8. **Gaps Filled by Research**: When no skill fits, or your stack is one the library barely covers (Simulink, KiCad, Verilog...), the hive says so and offers `research_skill`: a local model searches OpenAlex, arXiv and Semantic Scholar, ranks papers by meaning, citations and recency, and writes a cited skill as a draft for you to approve. `sfp_research.py refresh <skill>` brings an existing skill up to date with newer papers, and `sfp_research.py watch` drafts skills from new research on the topics you follow, or the ones the mentor sees you leaning towards.
120
+ **1. Open a terminal and run this.** It finds the AI tools on your computer and installs a starter set of skills into each.
116
121
 
117
- | Measured with nomic-embed-text v1.5 (hit / right first) | Words only | With meaning |
118
- |---|---|---|
119
- | Benchmark tasks (91) | 0.89 / 0.77 | 0.91 / 0.79 |
120
- | The same tasks reworded by a local model, held out (35) | 0.34 / 0.23 | 0.40 / 0.26 |
121
- | Project tasks (24) | 0.79 / 0.63 | 0.79 / 0.67 |
122
- | Held-out project tasks (22) | 0.86 / 0.68 | 0.86 / 0.68 |
122
+ ```bash
123
+ npx sfp-hive install
124
+ ```
123
125
 
124
- Meaning helps most when a task is said in other words, and costs about 70 ms a task. It is still far from solving rewording (0.40), and a stronger embedding model would help. Rewriting every task with a local chat model first (`SFP_REWRITE=1`) found about one more right skill per 35 tasks for 0.5 to 40 seconds a task, so it is off by default.
126
+ **2. Restart your AI tool.**
125
127
 
126
- ### Dynamic Multi-Bundle Stacking (No Limits)
128
+ **3. Ask it something, and mention SFP:**
127
129
 
128
- Combine any number of bundles for complex, full-lifecycle workflows. Hive seamlessly stacks and deduplicates skills into clear agent execution phases:
130
+ > Use sfp-hive for this task: add tests for the checkout form.
129
131
 
130
- <p align="center">
131
- <picture>
132
- <source media="(prefers-color-scheme: dark)" srcset="assets/hive-multibundle-dark.svg">
133
- <img src="assets/hive-multibundle-light.svg" alt="Dynamic Multi-Bundle Stacking Engine" width="100%">
134
- </picture>
135
- </p>
132
+ **How do you know it worked?** Your AI names the skills it chose and why, then follows them. You can also ask SFP directly, without any AI, from your project's folder:
136
133
 
137
- ---
134
+ ```bash
135
+ npx sfp-hive select "write tests for the orders" --project .
136
+ ```
138
137
 
139
- ## See It Choose
138
+ In a Rust project, that prints (shortened):
139
+
140
+ ```text
141
+ Stack for: write tests for the orders
142
+ Project: rust
143
+ Phase of work: test 100%
140
144
 
141
- The exact same prompt &mdash; *"write tests for the orders"* &mdash; executed in five distinct projects. Output is generated live by the hive:
145
+ 1. [check] rust-testing (testing-quality, test, about 2,949 tokens)
146
+ why: task words: tests; fits project: rust; backed by: words, project, role, category
142
147
 
143
- | Your project | The hive chooses |
144
- |---|---|
145
- | Next.js | `react-testing`, `playwright-cli`, `application-security-testing` |
146
- | Rust | `rust-testing` |
147
- | .NET | `csharp-testing` |
148
- | Flutter | `dart-flutter-patterns`, `flutter-dart-code-review` |
149
- | Django | `django-celery`, `django-tdd` |
148
+ Chose from 133 candidates in 2 ms.
149
+ ```
150
150
 
151
- Notice that plain keyword search yields identical, generic results everywhere. The hive inspects project manifests so zero stacks receive tools for the wrong technology.
151
+ **4. Tell it how it went.** Say whether the skill helped. That is how SFP learns what works for you.
152
152
 
153
- ---
153
+ Using Claude Code? You can install SFP as a plugin instead: `/plugin marketplace add siddu1004/SFP`, then `/plugin install sfp@sfp`. Something wrong? Run `npx sfp-hive doctor`: it names the problem and the fix.
154
154
 
155
155
  ---
156
156
 
157
- ## How SFP Picks
158
-
159
- The hive evaluates tasks through five progressive layers of understanding:
160
- 1. **Words & Fingerprints**: Fast lexical matching scored against the catalog, combined with project manifest detection (`package.json`, `Cargo.toml`, `go.mod`, etc.) so tools for foreign ecosystems are strictly discarded.
161
- 2. **Local Vector Meaning (`bge-m3`)**: A local embedding model converts task intents into high-dimensional vectors, rescuing vague or colloquial phrasing that doesn't share explicit keywords.
162
- 3. **Local Model Reranking (`lfm2-24b-a2b`)**: When words are ambiguous or weak (`SFP_RERANK=auto`), the local LLM evaluates candidate cards and selects the best fit, pushing plain-words accuracy to 50%.
163
- 4. **Skill Cards (`skill_cards.json`)**: Every one of the 1,065 skills has a structured card defining its output format (`code`, `text`, `animation`, `video`, `diagram`), interaction style, depth, and substitute equivalence group. Near-duplicate substitutes are never stacked together.
164
- 5. **Your Taste (`~/.sfp/taste.json`)**: SFP learns how you prefer to learn and build (code vs animation vs deep prose) from feedback, updating private weights with a 30-day half-life. An explicit format requested in your prompt (e.g. *"as a markdown summary"*) strictly overrides taste.
157
+ ## See It Choose
165
158
 
166
159
  <p align="center">
167
160
  <picture>
168
- <source media="(prefers-color-scheme: dark)" srcset="bench/charts/headline-dark.svg">
169
- <img src="bench/charts/headline-light.svg" alt="Held-Out Accuracy across Engines 1-6" width="100%">
161
+ <source media="(prefers-color-scheme: dark)" srcset="assets/terminal-dark.svg">
162
+ <img src="assets/terminal-light.svg" alt="Terminal running sfp select on a multi-clause signup task, returning ordered skills, bundle and 200k window share." width="100%">
170
163
  </picture>
171
164
  </p>
172
165
 
173
- ### Real Selection Examples from Benchmark 3.19.0
166
+ The same words, *"write tests for the orders"*, in five different projects. The hive itself generates this table each time this page is built:
174
167
 
175
- | What you ask | User Context / Taste | What SFP Picks | Why |
176
- |---|---|---|---|
177
- | *"make the api not die when flooded with requests"* | Any | `rate-limiting`, `resilience` | Plain-words colloquial request rescued by local reranker |
178
- | *"check for sneaky memory leaks in go routine"* | Go project | `golang-patterns`, `golang-testing` | Lexical gap bridged by meaning & project fingerprint |
179
- | *"explain how attention works in transformers"* | Visual Learner (`animation`) | `manim-video` | Learner prefers programmatic animated visual walkthroughs |
180
- | *"explain how attention works in transformers"* | Reader (`text`) | `teach-me` | Reader prefers concise structured text walkthrough |
181
- | *"just give me a text summary of attention mechanisms"* | Visual Learner | `teach-me` | **Explicit named form override:** User asked for text summary |
182
- | *"simulate quantum teleportation with qiskit"* | Any | **Library Gap Detected** | SFP detects unmet need and suggests `sfp mentor grow` |
168
+ <p align="center">
169
+ <picture>
170
+ <source media="(prefers-color-scheme: dark)" srcset="assets/project-fit-dark.svg">
171
+ <img src="assets/project-fit-light.svg" alt="Same words across five projects: SFP inspects each project manifest and chooses Next.js, Rust, .NET, Flutter and Django testing skills with zero cross-contamination." width="100%">
172
+ </picture>
173
+ </p>
183
174
 
184
- ---
175
+ | Your project | The hive chooses |
176
+ |---|---|
177
+ | Next.js | `react-testing`, `playwright-cli` |
178
+ | Rust | `rust-testing` |
179
+ | .NET | `csharp-testing` |
180
+ | Flutter | `dart-flutter-patterns`, `flutter-dart-code-review` |
181
+ | Django | `django-celery`, `django-tdd` |
185
182
 
186
- ## Choose Models
183
+ A keyword search gives all five the same list. The hive reads the project, so no stack gets a skill for the wrong technology.
187
184
 
188
- SFP is 100% local-first and works offline out of the box with LM Studio, Ollama, llama.cpp, Jan, and vLLM.
185
+ And with plain words, or with people who learn differently (real output, with the local models on):
189
186
 
190
- ```bash
191
- # View detected models and health
192
- sfp models
187
+ | What you ask | Who is asking | SFP's first pick |
188
+ |---|---|---|
189
+ | *"make the login not get hacked"* | Anyone | `security-review` |
190
+ | *"test all the buttons on my website automatically"* | Anyone | `playwright-cli` |
191
+ | *"check for sneaky memory leaks in the goroutines"* | A Go project | `golang-patterns` |
192
+ | *"explain how attention works in transformers"* | Someone who learns from animation | `manim-video` |
193
+ | *"explain how attention works in transformers"* | Someone who learns from reading | `understand-explain` |
193
194
 
194
- # Probe active endpoints for latency and speed
195
- sfp models probe
195
+ It does not always get it right. [Where it still fails](#where-it-still-fails) lists real misses.
196
196
 
197
- # Add an external or self-hosted API model safely
198
- sfp models add deepseek-research https://api.deepseek.com/v1 deepseek-reasoner --key-env DEEPSEEK_API_KEY --research-only
199
- ```
197
+ ---
198
+
199
+ ## Common Questions
200
200
 
201
- > **Privacy Guarantee:** API keys are never stored on disk or committed to files; they are read at invocation strictly from the specified environment variable. Models marked `--research-only` are exclusively restricted to background paper reading and skill drafting - they never see your daily coding prompts.
201
+ | Question | Answer |
202
+ |---|---|
203
+ | **Is it free?** | Yes. MIT license, no account, no sign-up |
204
+ | **Do I need a powerful computer or a GPU?** | No. SFP works on any computer with Python. Local models are an optional upgrade: the meaning model (`bge-m3`) is about 1 GB, and a good small chat model is about 14 GB of disk and memory |
205
+ | **Is my code sent anywhere?** | SFP picks skills on your machine and sends nothing. Your AI tool still talks to its own provider, as it does today. Two opt-in exceptions: the mentor sends search queries to paper libraries, and a hosted model you add receives what you allow it |
206
+ | **Which tools does it work with?** | Claude Code, Codex, Cursor, Gemini CLI, Antigravity, GitHub Copilot, VS Code, Windsurf, Kiro, OpenCode and [more](#supported-ides). Anything that speaks MCP works too |
207
+ | **Will it slow things down?** | Barely. A choice takes a few milliseconds with words only, and about 0.2 seconds with a local meaning model |
208
+ | **Do I have to change how I work?** | No. Add the standing instruction ([step 5](#5-add-the-standing-instruction)) and your AI consults SFP by itself |
209
+ | **How do I remove it?** | `python3 scripts/install.py uninstall` removes only what SFP installed ([details](#removing-everything)) |
210
+ | **How do I update?** | `sfp update`, or `/plugin marketplace update sfp` in Claude Code. Updates follow releases, and never move you to an older version |
202
211
 
203
212
  ---
204
213
 
205
- ## Your Taste & The Mentor
214
+ ## It Learns How You Learn
206
215
 
207
- ### Inspecting and Tuning Taste
208
- See your learned preference weights at any time:
209
- ```bash
210
- # View active taste profile
211
- sfp taste
216
+ A parent who notices a child lighting up at music finds them a good teacher. SFP does the same for you.
212
217
 
213
- # Reset learned weights back to neutral cold-start
214
- sfp taste --reset
215
- ```
218
+ **Taste.** When a skill helps you, SFP notes what kind of help it was: an animation, a step-by-step text, hands-on code, a video. Over time it hands you the kind you learn from best.
216
219
 
217
- ### The Mentor Loop
218
220
  ```bash
219
- # Inspect your profile, interests, and unmet library needs
220
- sfp mentor
221
+ sfp taste # what SFP has learned about you
222
+ sfp taste --reset # start again from neutral
223
+ ```
221
224
 
222
- # Research and draft skills to fill identified gaps
223
- sfp mentor grow
225
+ <p align="center">
226
+ <picture>
227
+ <source media="(prefers-color-scheme: dark)" srcset="assets/taste-dark.svg">
228
+ <img src="assets/taste-light.svg" alt="How SFP learns your taste across animation, reading, code and video, and drafts new skills from OpenAlex and arXiv papers." width="100%">
229
+ </picture>
230
+ </p>
224
231
 
225
- # Approve research drafts into your live skill library
226
- sfp research drafts
227
- sfp research approve <draft-id>
232
+ **The mentor.** SFP notices what you lean towards and where its library falls short. It then goes to the research library (OpenAlex, arXiv, Semantic Scholar), picks well-cited papers, has a local model read them, and writes a practical skill for you. Every skill it writes is a draft until you approve it.
233
+
234
+ ```bash
235
+ sfp mentor # your areas, your gaps, and research topics it suggests
236
+ sfp mentor grow --topic "RAG evaluation" # read the best papers and draft a skill
237
+ sfp research drafts # review what it wrote
238
+ sfp research approve <name> # only you add a skill to the library
228
239
  ```
229
240
 
241
+ Your history stays in `~/.sfp` on your machine, as numbers and word stems, never your task text.
242
+
230
243
  ---
231
244
 
232
- ## Platform Capabilities
245
+ ## Make It Smarter (Optional)
233
246
 
234
- SFP supports 16 IDEs and provides three flexible delivery modes:
247
+ SFP works with no model at all. Run a free local model and it also understands what you *mean*, not just the words you used. It finds models by itself in Ollama, LM Studio, llama.cpp, Jan and vLLM.
235
248
 
249
+ <p align="center">
250
+ <picture>
251
+ <source media="(prefers-color-scheme: dark)" srcset="assets/plain-words-dark.svg">
252
+ <img src="assets/plain-words-light.svg" alt="How adding bge-m3 meaning embeddings and a local model judge maps plain-English beginner prompts to specialist skills." width="100%">
253
+ </picture>
254
+ </p>
236
255
 
237
- ### 1. The SFP Hive Extension (Antigravity & VS Code)
238
- - **Automatic Skills**: Automatically syncs active skills to `.agents/rules/sfp-active-skills.md`. The agent consumes targeted instructions on every turn without copy-pasting.
239
- - **Bundle Inspector**: Visualizes multi-skill recipes, match confidence percentages, and the exact task keyword chips driving the choice.
240
- - **Local Model Router**: Manages local backends (Ollama, LM Studio, llama.cpp, vLLM) with automatic failover and zero telemetry.
256
+ ```bash
257
+ ollama pull bge-m3 # the meaning model, about 1 GB
258
+ sfp doctor # checks that SFP sees it
259
+ sfp models # every chat model found, and how it did when tested
260
+ sfp models probe # test each one, so SFP picks what really answers best
261
+ ```
241
262
 
242
- ### 2. Zero-Footprint MCP Server
243
- - Serves all 1065 skills dynamically via standard JSON-RPC over stdio.
244
- - Tools supported: `search_skills`, `get_skill`, `select_skills`, `give_feedback`, `predict_next`, and `find_api`.
245
- - Zero context bloat: skills are loaded on demand only when invoked.
263
+ Prefer a hosted model? Add any OpenAI-compatible service. Your key stays in an environment variable, never in a file. With `--research-only`, the model only reads papers; your coding tasks never reach it.
246
264
 
247
- ### 3. Native IDE Folder Sync
248
- - One command installs targeted presets into native skill directories across 16 IDEs: Claude Code, Cursor, Codex, Gemini CLI, Antigravity, GitHub Copilot, Windsurf, Kiro, OpenCode, Trae, and more.
265
+ ```bash
266
+ sfp models add groq https://api.groq.com/openai/v1 llama-3.3-70b-versatile --key-env GROQ_API_KEY
267
+ sfp models add deep https://api.deepseek.com/v1 deepseek-reasoner --key-env DEEPSEEK_API_KEY --research-only
268
+ ```
249
269
 
250
270
  ---
251
271
 
252
272
  ## Who It Is For
253
273
 
274
+ <p align="center">
275
+ <picture>
276
+ <source media="(prefers-color-scheme: dark)" srcset="assets/roles-dark.svg">
277
+ <img src="assets/roles-light.svg" alt="Skills for every role: Design and frontend, Marketing and content, Business and founders, Backend and DevOps, Testing and security, AI agents and MCP." width="100%">
278
+ </picture>
279
+ </p>
280
+
281
+ <p align="center">
282
+ <picture>
283
+ <source media="(prefers-color-scheme: dark)" srcset="assets/library-dark.svg">
284
+ <img src="assets/library-light.svg" alt="The skill library: 1065 skills in 24 categories grouped by area." width="100%">
285
+ </picture>
286
+ </p>
287
+
254
288
  | You are | Install | You get, for example | Try asking |
255
289
  |---|---|---|---|
256
290
  | A frontend developer | `frontend-dev` | `impeccable`, `design-taste-frontend`, `animate`, `accessibility-audit`, `break-ui` | "Critique this page and fix the hierarchy." |
@@ -258,81 +292,278 @@ SFP supports 16 IDEs and provides three flexible delivery modes:
258
292
  | A mobile developer | `mobile-dev` | `swiftui-patterns`, `dart-flutter-patterns`, `android-clean-architecture`, `compose-multiplatform-patterns` | "Review this Flutter screen for state-management problems." |
259
293
  | Building agents, plugins or MCP servers | `agent-builder` | `skill-creator`, `hook-development`, `mcp-builder`, `agent-eval`, `mem-search` | "Help me design an MCP server for our ticket system." |
260
294
  | Security-minded | `backend-dev` and `security` | `penetration-testing-with-strix`, `owasp-top-10-testing`, `find-security-vulnerabilities-in-code`, `security-review` | "Check this service against the OWASP top 10." |
295
+ | Learning something new | `research-docs` and `content-media` | `teach-me`, `manim-video`, `understand-explain` | "Explain how a B-tree splits a node." |
261
296
  | A founder or marketer | `business-ops` and `content-media` | `investor-materials`, `marketing-campaign`, `article-writing`, `persuasion-audit`, `price-framing` | "Draft this month's investor update." |
262
297
  | Job hunting | `career` | `career-ops` | "Evaluate this job posting against my CV." |
263
298
  | Using an IDE with no skills folder | the MCP server | every skill, through `search_skills` and `get_skill` | "Search SFP for a skill that fits this task." |
264
299
 
300
+ Install a set with `npx sfp-hive install --profile frontend-dev`. The hive can still reach every other skill on demand through the MCP server.
301
+
302
+ ---
303
+
304
+ ## UI, Design and Front-End Skills
305
+
306
+ SFP includes **155 UI, design-system, accessibility and motion skills** (`frontend` + `design-styles`) so your AI builds interfaces with intentional visual hierarchy, WCAG compliance, crisp microcopy and hardware-accelerated motion instead of generic templates.
307
+
308
+ <p align="center">
309
+ <picture>
310
+ <source media="(prefers-color-scheme: dark)" srcset="assets/ui-flow-dark.svg">
311
+ <img src="assets/ui-flow-light.svg" alt="Ordered UI and growth bundles: Accessible UI Bundle (frontend-a11y -> ux-writing -> react-patterns -> accessibility-audit) and Growth & Launch Bundle (market-research -> price-framing -> article-writing -> seo)." width="100%">
312
+ </picture>
313
+ </p>
314
+
315
+ | Area / Bundle | Skills Included | What It Solves |
316
+ |---|---|---|
317
+ | **Accessible Form Bundle** | `frontend-a11y` -> `ux-writing` -> `react-patterns` -> `accessibility-audit` | Semantic HTML, `aria-describedby` error wiring, keyboard traps, screen-reader labels |
318
+ | **Visual Taste & Polish** | `design-taste-frontend`, `impeccable`, `emil-design-eng`, `make-interfaces-feel-better` | Typography hierarchy, spacing rhythm, tactile micro-interactions, anti-template rules |
319
+ | **Motion & Stress Testing** | `animate`, `motion-foundations`, `interaction-design`, `break-ui`, `design-critique` | Reduced-motion-safe transitions, layout stress testing, hierarchy critique |
320
+ | **Design Systems & Aesthetics** | `design-system`, `shadcn`, `bento`, `glassmorphism`, `theme-factory`, `frontend-slides` | Tokenized components, modular bento grids, editorial and dark-mode palettes |
321
+
322
+ **Prompts to try:**
323
+ - *"Review this modal component with `frontend-a11y` and wire up keyboard traps and ARIA labels."*
324
+ - *"Apply `design-taste-frontend` and `impeccable` to fix the typography scale and layout breathing room."*
325
+
326
+ ```bash
327
+ # Install the full frontend & design profile
328
+ npx sfp-hive install --profile frontend-dev
329
+ ```
330
+
265
331
  ---
266
332
 
267
- ## Why Choose SFP
333
+ ## Business, Marketing and Growth Skills
268
334
 
269
- Rigorous benchmarks against baselines and plain keyword search:
335
+ For founders, product managers and growth teams, SFP ships **248 business and content skills** (`business-ops` + `content-media`) covering market research, fundraising, pricing, SEO and multi-channel publishing.
270
336
 
271
- <picture>
272
- <source media="(prefers-color-scheme: dark)" srcset="assets/results-rounds-dark.svg">
273
- <img src="assets/results-rounds-light.svg" alt="Review rounds until a reviewer would ship the page: 2.8 with SFP, 3.7 with no skills" width="100%">
274
- </picture>
337
+ <p align="center">
338
+ <picture>
339
+ <source media="(prefers-color-scheme: dark)" srcset="assets/growth-flow-dark.svg">
340
+ <img src="assets/growth-flow-light.svg" alt="Ordered business and marketing bundles: Fundraise & Positioning Pipeline (market-research -> price-framing -> investor-materials -> investor-outreach) and Publish & Growth Content Engine (brand-voice -> article-writing -> seo -> content-engine)." width="100%">
341
+ </picture>
342
+ </p>
275
343
 
276
- <picture>
277
- <source media="(prefers-color-scheme: dark)" srcset="assets/results-accuracy-dark.svg">
278
- <img src="assets/results-accuracy-light.svg" alt="Right skill on held-out tasks: SFP hive 86%, earlier engine 64%, plain search 9%" width="100%">
279
- </picture>
344
+ | Area / Bundle | Skills Included | What It Solves |
345
+ |---|---|---|
346
+ | **Fundraise Bundle** | `market-research` -> `investor-materials` -> `investor-outreach` | TAM/SAM/SOM sizing, pitch narratives, financial models, warm/cold investor sequences |
347
+ | **Publish Content Bundle** | `article-writing` -> `seo` -> `content-engine` | Long-form technical/product articles, search intent optimization, multi-channel repurposing |
348
+ | **Positioning & Conversion** | `price-framing`, `persuasion-audit`, `dark-pattern-check`, `brand-voice`, `brand-guidelines` | Packaging & tier design, landing-page conversion audits, ethical UX checks |
349
+ | **Product & GTM Operations** | `product-lens`, `marketing-campaign`, `lead-intelligence`, `competitive-report-structure`, `customer-billing-ops` | Go-to-market launches, competitive teardowns, lead enrichment, billing workflows |
280
350
 
281
- ### Summary of Verified Results
351
+ **Prompts to try:**
352
+ - *"Run a `persuasion-audit` and `price-framing` check on this SaaS pricing page draft."*
353
+ - *"Use `market-research` and `investor-materials` to outline a defensible seed pitch narrative."*
282
354
 
283
- 1. **One Full Round Faster to Ship**: In blind multi-round design evaluations scored by an independent judge, agents guided by SFP shipped ready pages in **2.8 rounds** versus **3.7 rounds** unassisted.
284
- 2. **86% Selection Accuracy**: On 22 held-out tasks across 8 unseen projects, SFP Hive achieved **86% precision** compared to **9%** for plain keyword search.
285
- 3. **100% Success on Unfamiliar Tools**: When challenged with novel tools (FreeLLMAPI), unguided agents met 0 of 7 automated validation checks; with SFP skills, agents passed all 7 checks cleanly ([docs/EFFECT.md](docs/EFFECT.md)).
286
- 4. **Sub-6ms Speed**: Decisions execute locally in under 6 milliseconds, with zero network lag and total privacy.
355
+ ```bash
356
+ # Install business-ops and content-media categories into your AI tools
357
+ npx sfp-hive install --categories business-ops,content-media
358
+ ```
287
359
 
288
360
  ---
289
361
 
290
362
  ## The Proof
291
363
 
292
- Figures below are computed directly from this repository during the build. Reproduce with `python3 mcp/sfp_hive.py evaluate` and `python3 mcp/sfp_hive.py learning-curve`.
364
+ Every number here can be reproduced. A task counts as right when the chosen skills (2 or 3 on average) include one a person marked correct. **Held out** means the tasks were never used to tune SFP.
365
+
366
+ <p align="center">
367
+ <picture>
368
+ <source media="(prefers-color-scheme: dark)" srcset="assets/exam-dark.svg">
369
+ <img src="assets/exam-light.svg" alt="Final exam on 150 new tasks: SFP 3.20 scores 93% right first (97% in stack) under the blind judge and 36% first (41% in stack) on strict original labels, beating keyword search and SFP 3.19." width="100%">
370
+ </picture>
371
+ </p>
372
+
373
+ With local models on (`python3 bench/run_all.py`; full method in [bench/RESULTS.md](bench/RESULTS.md)). Each cell shows **right skill chosen / right skill first**:
374
+
375
+ ### 1. Final Exam Suites (150 Unseen Tasks, Two Scoreboards)
376
+
377
+ Original labels name only 1 to 2 skills per task, so valid substitutes (for example `hardening-docker-containers-for-production` on *"harden container images"*) count as misses under strict labels. We report **both** the blind pooled judge (`bench/pool_judge.py`) and the original single labels:
378
+
379
+ | Engine | Exam Plain (80) | Exam Project (30) | Exam Reworded (40) | All Exam, Blind Judge (150) | All Exam, Original Labels (150) |
380
+ |---|---:|---:|---:|---:|---:|
381
+ | v3.19.0 Baseline (tag `v3.19.0`) | 93 / 70 | 97 / 47 | 93 / 73 | **93% / 66% first** | 38% / 16% first |
382
+ | Keyword search | 93 / 79 | 93 / 73 | 95 / 85 | **93% / 79% first** | 41% / 27% first |
383
+ | **SFP 3.20 Full** | **95 / 91** | **100 / 100** | **100 / 93** | **97% / 93% first** | **41% / 36% first** |
384
+
385
+ ### 2. Frozen v2 Held-Out Suites (Pre-committed commit `02b0485`, n=130)
386
+
387
+ | Engine | Beginner Wording v2 (60) | Sample Projects v2 (30) | Reworded v2 (40) | All Frozen v2 (130) | 95% range, chosen | Mean Precision / Junk |
388
+ |---|---:|---:|---:|---:|---:|---:|
389
+ | v3.19.0 Baseline (tag `v3.19.0`) | 55 / 42 | 77 / 60 | 53 / 38 | **59 / 45** | 51 to 67 | 48% / 12.3% |
390
+ | Keyword search | 100 / 100 | 90 / 90 | 100 / 100 | **98 / 98** | 93 to 99 | 98% / 0.0% |
391
+ | v1 Recommender | 98 / 98 | 93 / 93 | 100 / 100 | **98 / 98** | 93 to 99 | 90% / 0.0% |
392
+ | SFP 3.20, words only | 95 / 93 | 97 / 97 | 95 / 95 | **95 / 95** | 90 to 98 | 86% / 0.0% |
393
+ | + meaning (`bge-m3`) | 95 / 95 | 97 / 97 | 95 / 93 | **95 / 95** | 90 to 98 | 81% / 0.0% |
394
+ | + model check (`lfm2-24b-a2b`) | 92 / 92 | 93 / 90 | 90 / 90 | **92 / 91** | 86 to 95 | 78% / 0.0% |
293
395
 
294
- | Task set | Hive 3.19.0 | Earlier engine | Plain search |
396
+ ### 3. Precision, Negative/Micro-Edit Gating, Taste & Earlier Held-Out Sets
397
+
398
+ | Suite | Tasks (n) | Keyword | v1 | SFP 3.20 (Words) | SFP 3.20 + Meaning + Rerank | Precision / Junk (SFP) |
399
+ |---|---:|---:|---:|---:|---:|---:|
400
+ | `precision_tuning` (micro-edits, out-of-domain, edge) | 40 | 35% (45% junk) | 53% (45% junk) | 88% / 80% first | **75.0% / 67.5% first** | **64.2% / 15.0%** |
401
+ | `precision_heldout` (frozen, 15 negative + 25 positive) | 40 | 23% (63% junk) | 23% (63% junk) | 83% / 75% first | **77.5% / 72.5% first** | **67.9% / 10.0%** |
402
+ | `taste_generalise` (4 personas, strict job AND format) | 40 | - | - | 77.5% | **77.5% fit / 100% named override** | - |
403
+ | `hive_heldout` (3.19 fresh projects) | 22 | 9% | 64% | 91% | **81.8% / 59.1% first** | 42.8% / 0.0% |
404
+ | `search_reworded` (35 reworded tasks) | 35 | 57% | 57% | 57% | **82.9% / 82.9% first** | 66.0% / 0.0% |
405
+ | `search_reworded_holdout` (3.19 reworded) | 35 | 23% | 34% | 29% | **48.6% / 45.7% first** | 30.9% / 0.0% |
406
+ | `plain_words_holdout2` (3.19 plain words) | 40 | 30% | 38% | 38% | **47.5% / 42.5% first** | 29.6% / 0.0% |
407
+ | `final_heldout_plain` (commit `230cc07`) | 60 | 43% | 45% | 42% | **53.3% / 45.0% first** | 37.8% / 0.0% |
408
+ | `final_heldout_project` (commit `230cc07`) | 30 | 40% | 67% | 63% | **56.7% / 50.0% first** | 33.1% / 0.0% |
409
+ | `final_heldout_reworded` (commit `230cc07`) | 40 | 60% | 70% | 58% | **57.5% / 55.0% first** | 41.2% / 0.0% |
410
+
411
+ Words only, recomputed from this repository each time this page is built, so it is the same on every machine (`python3 mcp/sfp_hive.py evaluate`):
412
+
413
+ | Task set | Hive 3.20.0 | Earlier engine | Plain search |
295
414
  |---|---:|---:|---:|
296
- | 22 held-out tasks in 8 new projects, written first and scored once | **86%** | 64% | 9% |
415
+ | 22 held-out tasks in 8 new projects, written first and scored once | **91%** | 64% | 9% |
297
416
  | 24 tasks in 10 sample projects | 79% | 79% | 25% |
298
- | 91 tasks with no project | 87% | 87% | 84% |
417
+ | 91 tasks with no project | 86% | 87% | 84% |
299
418
  | Stacks with a skill for the wrong technology, all sets | 0 | 0 | 0 |
300
419
 
420
+ **Does it make the work better?** In blind design reviews, agents with SFP produced a page a reviewer would accept in **2.8 rounds**, against **3.7** with no skills. Given a tool they had never seen, agents with no skills passed 0 of 7 checks, and with SFP passed all 7 ([docs/EFFECT.md](docs/EFFECT.md)).
421
+
422
+ <p align="center">
423
+ <picture>
424
+ <source media="(prefers-color-scheme: dark)" srcset="assets/results-rounds-dark.svg">
425
+ <img src="assets/results-rounds-light.svg" alt="Review rounds until a reviewer would ship the page: 2.8 with SFP, 3.7 with no skills" width="100%">
426
+ </picture>
427
+ </p>
428
+
301
429
  **What does it cost your agent?**
302
430
 
431
+ <p align="center">
432
+ <picture>
433
+ <source media="(prefers-color-scheme: dark)" srcset="assets/tokens-dark.svg">
434
+ <img src="assets/tokens-light.svg" alt="Context window cost and selection speed: every skill always on costs 81,691 tokens while SFP loads 3,383 tokens on average (96% less) in ~3 to 7 ms." width="100%">
435
+ </picture>
436
+ </p>
437
+
303
438
  | What you install | Skills your agent can use | Skill descriptions it carries each session | Share of a 200k-token window |
304
439
  |---|---:|---:|---:|
305
- | `sfp` and `sfp-hive` only (the rest on demand) | 2 + all 1063 through them | about 266 tokens | 0.1% |
306
- | `starter` preset | 174 | about 15,355 tokens | 7.7% |
307
- | `frontend-dev` preset | 225 | about 16,541 tokens | 8.3% |
308
- | `backend-dev` preset | 151 | about 13,382 tokens | 6.7% |
309
- | `mobile-dev` preset | 84 | about 6,886 tokens | 3.4% |
310
- | `agent-builder` preset | 309 | about 20,658 tokens | 10.3% |
311
- | `everything` | 1065 | about 81,931 tokens | 41.0% |
440
+ | `sfp` and `sfp-hive` only (the rest on demand) | 2 + all 1063 through them | about 265 tokens | 0.1% |
441
+ | `starter` preset | 174 | about 15,371 tokens | 7.7% |
442
+ | `frontend-dev` preset | 225 | about 16,453 tokens | 8.2% |
443
+ | `backend-dev` preset | 151 | about 13,406 tokens | 6.7% |
444
+ | `mobile-dev` preset | 84 | about 6,892 tokens | 3.4% |
445
+ | `agent-builder` preset | 309 | about 20,674 tokens | 10.3% |
446
+ | `everything` | 1065 | about 81,690 tokens | 40.8% |
312
447
 
313
448
  **How fast is it?**
314
449
 
315
- Decisions take about 6 ms inside the host process. Search takes about 0.1 ms. MCP queries execute in 3 to 5 ms once the project tree is indexed ([docs/HIVE.md](docs/HIVE.md#speed)).
450
+ Words only, a choice takes about 4 ms inside the host process. With meaning, about 0.2 s. When the local model is asked as well, up to about 1.7 s (slowest 5% of tasks). Search takes about 0.1 ms ([docs/HIVE.md](docs/HIVE.md#speed)).
451
+
452
+ ### Where It Still Fails
453
+
454
+ We would rather you hear this from us. These are real results from version 3.20.0:
455
+
456
+ - **Strict confidence gating trades recall on oblique paraphrases for 0% junk.** On `precision_heldout` (40 tasks, including 15 micro-edits and out-of-domain queries), SFP drops junk rate from 50.0% to **0.0%** (87.5% hit, 76.5% mean precision; 79.8% words-only). However, because single weak-token matches without technology or job corroboration are now rejected (`clears_confidence`), recall on the earlier `230cc07` held-out sets (`final_heldout_plain` 50.0%, `final_heldout_project` 63.3%, `final_heldout_reworded` 52.5%) and `plain_words_holdout2` (40.0%) remains below 80%.
457
+ - **Multi-clause bundle stacking only fires when clauses match focused workflow bundles.** All 1,065 skills are organized across **121 bundles** in `bundles.json`. While narrow tasks cleanly attach 0 bundles (**100.0%** on `bundle_multi_heldout` narrow tasks) and `--use-bundles` stacks any number of named bundles without duplicates, automatic push only attaches focused workflow bundles (up to 6 skills) so broad domain collections stay suggested rather than flooding context.
458
+ - **Secondary skills in multi-skill stacks still dilute mean precision.** Even when the lead skill is right and no `avoid` skill appears (0.0% junk), picking a 2nd or 3rd supporting skill that was not in the narrow human `expect` list brings mean precision on `precision_heldout` to **76.5%** (words-only **79.8%**), just shy of 80%.
459
+ - **The model check has a latency and top-1 trade-off.** Asking `lfm2-24b-a2b` takes ~360 ms typical (up to ~1.7 s p95) and on the 91 tuned tasks "right skill first" is 80.2% vs 84.6% with embeddings alone.
460
+
461
+ > **What has not been measured.** Whether the chosen skills make your agent's finished work better across every domain. Learning is measured on a simulated user, not on real long-run use. Taste is measured on simulated learners whose history includes skills they liked, so it shows SFP remembering what they liked more than judging new skills it has never seen them use. Task sets are small: read the ranges, not just the headline. Token counts are estimated at 4 characters per token.
462
+
463
+ ---
464
+
465
+ ## For Experts
466
+
467
+ <p align="center">
468
+ <picture>
469
+ <source media="(prefers-color-scheme: dark)" srcset="assets/hive-architecture-dark.svg">
470
+ <img src="assets/hive-architecture-light.svg" alt="Inside the hive: it reads the task, project, phase, history and feedback; signals vote; quorum, rerank, cards, taste and roles choose; it hands over ordered skills, a bundle, a gap and what is likely next." width="100%">
471
+ </picture>
472
+ </p>
473
+
474
+ <details>
475
+ <summary><b>The five layers</b></summary>
476
+ <br>
477
+
478
+ | Layer | What it does | Needs |
479
+ |---|---|---|
480
+ | **1. Words and project** | Scouts vote on every candidate: task words, project manifests (`package.json`, `Cargo.toml`, `go.mod` ...), work phase, category, and what usually comes next. A skill joins only with a quorum, and a skill for another technology is dropped | Nothing |
481
+ | **2. Meaning** | A local embedding model scores closeness to the skill's description and to example requests. When the best word match carries under half the task's words, meaning may lead | `bge-m3` (preferred) or any local embedder |
482
+ | **3. Model check** | When words are weak and no candidate fits the project, a chat model reads the 20 closest candidates and picks up to 3. Its prompt has no project context, so it never overrules a project fit | A local chat model |
483
+ | **4. Skill cards** | `skill_cards.json` gives each skill a job, outputs, style, depth and a substitute group. Candidates are found by card, with no skill names in the selection code. Substitutes do not stack | Nothing |
484
+ | **5. Taste** | Facet preferences from your helped feedback, with a 30-day half-life, plus a regularized LinUCB word-to-skill model | Your feedback |
485
+
486
+ </details>
487
+
488
+ <details>
489
+ <summary><b>Settings, files and tools</b></summary>
490
+ <br>
491
+
492
+ | Setting | Effect |
493
+ |---|---|
494
+ | `SFP_SEMANTIC=0` | Words only: no embeddings and no chat model |
495
+ | `SFP_RERANK=auto` | `auto` (default) asks the model when words are weak; `1` always; `0` never |
496
+ | `SFP_REWRITE=1` | Also rewrite each task in expert terms first. Off by default: slow for a small gain |
497
+ | `SFP_EXPLORE` | Exploration strength of the LinUCB bonus |
498
+ | `SFP_DATA_DIR` | Where history and taste live (default `~/.sfp`). Set a temporary folder for scripted runs |
499
+ | `SFP_EMBED_URL`, `SFP_EMBED_MODEL` | Use this embedding endpoint |
500
+ | `SFP_REWRITE_URL`, `SFP_REWRITE_MODEL` | Use this chat endpoint |
501
+ | `SFP_AUTO_UPDATE=1` | Move to new release tags automatically |
502
+
503
+ | In `~/.sfp` | Holds |
504
+ |---|---|
505
+ | `decisions.jsonl`, `feedback.jsonl`, `skill_history.jsonl` | What was chosen and how it went: numbers and word stems, not your task text |
506
+ | `taste.json` | Learned format, style and depth preferences |
507
+ | `models.json`, `api_models.json` | Model probe results; API models you added (the name of the key's variable, never the key) |
508
+ | `embeddings/`, `rewrites.json` | Rebuildable caches |
509
+ | `skills/drafts/` | Skills the mentor wrote, waiting for your approval |
510
+
511
+ **MCP tools:** `select_skills`, `search_skills`, `get_skill`, `use_skill`, `read_skill_file`, `list_categories`, `find_api`, `install_command`, `give_feedback`, `learning_status`, `predict_next`, `research_skill`, `grow_skills`.
512
+
513
+ **Trust.** Skills are text your agent will follow, from 91 upstream repositories. Versions are pinned in `sources.lock.json`, licenses are listed in [NOTICE.md](NOTICE.md), and research drafts are never installed without your approval. Read a skill before you rely on it.
514
+
515
+ **Reproduce everything:**
516
+
517
+ ```bash
518
+ python3 -m unittest discover -s tests # the test suite
519
+ python3 mcp/sfp_hive.py evaluate # words-only figures, no models
520
+ python3 bench/run_all.py # all engines with local models; writes bench/results and bench/RESULTS.md
521
+ python3 bench/charts.py # redraws every chart from the saved results
522
+ ```
316
523
 
317
- > **What has not been measured.** Whether the chosen skills make your agent's finished work better across every domain. Learning is measured on a simulated user, not on real long-run use. Tasks and ground truths were written and validated by human evaluators. Token counts are estimated at 4 characters per token.
524
+ </details>
318
525
 
319
526
  ---
320
527
 
321
528
  ## Install
322
529
 
530
+ Most people only need [Start Here](#start-here). Here is the one command for each tool:
531
+
532
+ | Your tool | Run this | What happens |
533
+ |---|---|---|
534
+ | **Claude Code** | `/plugin marketplace add siddu1004/SFP`, then `/plugin install sfp@sfp` | The hive and skill router, inside Claude Code |
535
+ | **Antigravity, Cursor, VS Code with Copilot, Windsurf, Codex, Cline** | `npx sfp-hive install` | Finds each tool's skills folder and installs the starter set |
536
+ | **Any MCP client** | `npx sfp-hive mcp --tools <your tool>` | Registers the MCP server, so all 1065 skills are available on demand |
537
+
538
+ Using Antigravity or VS Code? The **SFP Hive** sidebar ([step 7](#7-install-the-sfp-hive-extension)) follows your work and keeps your AI's skills current:
539
+
540
+ <p align="center">
541
+ <img src="extensions/antigravity-hive/media/screenshot-bundle.png" width="31%" alt="Bundles in the Skill Library">
542
+ &nbsp;
543
+ <img src="extensions/antigravity-hive/media/screenshot-areas.png" width="31%" alt="Browsing skills by area">
544
+ &nbsp;
545
+ <img src="extensions/antigravity-hive/media/screenshot-detail.png" width="31%" alt="A skill's details">
546
+ </p>
547
+
548
+ The full guide covers everything else: other install methods, choosing a skill set, the extension, local models and the router.
549
+
550
+ <details>
551
+ <summary><b>Open the full step-by-step guide</b></summary>
552
+ <br>
553
+
323
554
  This guide takes you from a bare machine to an agent that gets the right skills on its own. Every step ends with a **Check**, so you know it worked before you move on. Allow about fifteen minutes; steps 7 to 10 are optional.
324
555
 
325
556
  | Step | What you get | Needed? |
326
557
  |---|---|---|
327
558
  | [1. Install the prerequisites](#1-install-the-prerequisites) | Python, Git, Node.js | Yes |
328
- | [2. Get SFP](#2-get-sfp) | SFP on your machine, in `~/.sfp/SFP` | Yes |
559
+ | [2. Get SFP](#2-get-sfp) | SFP on your machine | Yes |
329
560
  | [3. Check the install](#3-check-the-install) | A health report | Yes |
330
561
  | [4. Install skills into your tools](#4-install-skills-into-your-tools) | Skills your agent can use | Yes |
331
562
  | [5. Add the standing instruction](#5-add-the-standing-instruction) | The agent asks the hive on every real task | Recommended |
332
563
  | [6. Register the MCP server](#6-register-the-mcp-server) | All 1065 skills on demand, nothing copied | Recommended |
333
564
  | [7. Install the SFP Hive extension](#7-install-the-sfp-hive-extension) | The sidebar in Antigravity or VS Code | Optional |
334
565
  | [8. Use SFP in Antigravity](#8-use-sfp-in-antigravity) | Your first task with the hive | Use it |
335
- | [9. Let the hive use local models](#9-optional-let-the-hive-use-local-models) | Meaning search, your role, skills from research | Optional |
566
+ | [9. Let the hive use local models](#9-optional-let-the-hive-use-local-models) | Meaning, rerank, your taste, skills from research | Optional |
336
567
  | [9b. Set up the local model router](#9b-optional-set-up-the-local-model-router) | Local models first, free tiers next | Optional |
337
568
  | [10. Extras](#10-optional-extras) | Companion apps, skills from any Git repo | Optional |
338
569
 
@@ -346,9 +577,9 @@ Also: [Claude Code plugin](#claude-code-plugin-instead-of-steps-2-6), [Keeping i
346
577
  |---|---|---|---|
347
578
  | Python 3.8 or newer | runs the hive, the MCP server, the router and the checks | [python.org/downloads](https://www.python.org/downloads/) (Windows: tick **Add python.exe to PATH**) | `python3 --version` |
348
579
  | Git | downloads SFP and keeps it current | [git-scm.com/downloads](https://git-scm.com/downloads) | `git --version` |
349
- | Node.js 18 or newer, with npm | only to build the SFP Hive extension (step 7) | [nodejs.org](https://nodejs.org/) | `node --version` |
580
+ | Node.js 18 or newer, with npm | for `npx sfp-hive`, and to build the extension (step 7) | [nodejs.org](https://nodejs.org/) | `node --version` |
350
581
  | An agent tool | where the skills are used | Antigravity, Claude Code, Cursor, VS Code with Copilot, Windsurf, Codex, Gemini CLI, Kiro and more | |
351
- | Optional: Ollama or LM Studio | local models for the router (step 9) | [ollama.com](https://ollama.com/), [lmstudio.ai](https://lmstudio.ai/) | |
582
+ | Optional: Ollama or LM Studio | local models for meaning, rerank and the router (step 9) | [ollama.com](https://ollama.com/), [lmstudio.ai](https://lmstudio.ai/) | |
352
583
 
353
584
  **Check:** each command in the last column prints a version number. If one says "not found", install that program and open a new terminal.
354
585
 
@@ -356,7 +587,15 @@ Also: [Claude Code plugin](#claude-code-plugin-instead-of-steps-2-6), [Keeping i
356
587
 
357
588
  Pick **one** of these.
358
589
 
359
- **A. One line (recommended).** Downloads SFP into `~/.sfp/SFP` and installs the starter skills into every agent tool it finds, so it also does step 4 for you.
590
+ **A. npm (simplest).**
591
+
592
+ ```bash
593
+ npx sfp-hive install # run once, nothing installed globally
594
+ npm install -g sfp-hive # or keep the `sfp` command around
595
+ sfp install
596
+ ```
597
+
598
+ **B. One line.** Downloads SFP into `~/.sfp/SFP` and installs the starter skills into every agent tool it finds, so it also does step 4 for you.
360
599
 
361
600
  ```bash
362
601
  # macOS and Linux
@@ -368,48 +607,36 @@ curl -fsSL https://raw.githubusercontent.com/siddu1004/SFP/main/get.sh | sh
368
607
  irm https://raw.githubusercontent.com/siddu1004/SFP/main/get.ps1 | iex
369
608
  ```
370
609
 
371
- Running it again later updates SFP (`git pull`) and reinstalls. To use a different folder, set `SFP_DIR` first.
610
+ Running it again later updates SFP and reinstalls. To use a different folder, set `SFP_DIR` first.
372
611
 
373
- **B. Clone it yourself.** Use this if you want SFP somewhere else, or want to contribute.
612
+ **C. Clone it yourself.** Use this if you want SFP somewhere else, or want to contribute.
374
613
 
375
614
  ```bash
376
615
  git clone https://github.com/siddu1004/SFP.git
377
616
  cd SFP
378
617
  ```
379
618
 
380
- **C. Rust.** If you have Cargo: `cargo install --git https://github.com/siddu1004/SFP.git`, then `sfp install`.
619
+ **D. Rust.** If you have Cargo: `cargo install --git https://github.com/siddu1004/SFP.git`, then `sfp install`.
381
620
 
382
- **D. NPM / NPX.** Install globally or run on demand via npm:
621
+ **Check:** `sfp help` (A) lists the commands, or the folder holds `catalog.json` (B, C):
383
622
 
384
623
  ```bash
385
- npm install -g sfp-hive
386
- sfp install
387
-
388
- # Or run directly without installing:
389
- npx sfp-hive install
624
+ ls ~/.sfp/SFP/catalog.json # B, or the folder you cloned into for C
390
625
  ```
391
626
 
392
- When updates land on GitHub, npm users receive automatic update notifications, or can run `sfp update` (or `npx sfp-hive update`) to automatically pull updates and refresh skills. Set `SFP_AUTO_UPDATE=1` for seamless hands-free updates on every run.
393
-
394
- **Check:** the folder exists and holds `catalog.json`:
395
-
396
- ```bash
397
- ls ~/.sfp/SFP/catalog.json # A, or the folder you cloned into for B
398
- ```
399
-
400
- All commands below are run **from the SFP folder**: `cd ~/.sfp/SFP` (or your clone).
627
+ The `python3` commands below are run **from the SFP folder**: `cd ~/.sfp/SFP` (or your clone). With npm, use `sfp <command>` instead.
401
628
 
402
629
  ### 3. Check the install
403
630
 
404
631
  ```bash
405
- python3 mcp/sfp_hive.py doctor
632
+ python3 mcp/sfp_hive.py doctor # or: sfp doctor
406
633
  ```
407
634
 
408
- **Check:** it reports Python, the catalog, the search index and the hive as working. Anything that is not names the command that fixes it.
635
+ **Check:** it reports Python, the catalog, the search index, the hive and any local models as working. Anything that is not names the command that fixes it.
409
636
 
410
637
  ### 4. Install skills into your tools
411
638
 
412
- If you used 2A, this is done; read on only to change what is installed.
639
+ If you used 2A or 2B, this is done; read on only to change what is installed.
413
640
 
414
641
  SFP has 1065 skills. Installing all of them fills a large part of your agent's context, so install a **profile** and let the hive pick the rest on demand.
415
642
 
@@ -432,7 +659,7 @@ Useful variations:
432
659
  python3 scripts/install.py install --profile frontend-dev --tools antigravity # one profile, one tool
433
660
  python3 scripts/install.py install --categories frontend,security --tools cursor,codex
434
661
  python3 scripts/install.py install --project . # into this project's tool folders instead of your home folder
435
- python3 scripts/install.py install --link # symlinks, so `git pull` updates skills in place
662
+ python3 scripts/install.py install --link # symlinks, so updates change skills in place
436
663
  ```
437
664
 
438
665
  `--tools` takes names such as `antigravity`, `claude`, `cursor`, `copilot`, `windsurf`, `codex`, `gemini`, `kiro`, `cline`, `roo`, `opencode`, `trae`, `qoder`; `auto` (the default) means every tool found. The installer only replaces or removes folders it created itself (they hold a `.sfp` marker); `--force` overrides that.
@@ -463,7 +690,13 @@ python3 scripts/install.py mcp # every tool found
463
690
  python3 scripts/install.py mcp --tools antigravity # Antigravity only: ~/.gemini/config/mcp_config.json
464
691
  ```
465
692
 
466
- It registers a server called `sfp` that runs `mcp/sfp_mcp.py`. The agent gets tools such as `select_skills`, `search_skills`, `get_skill`, `use_skill`, `find_api`, `predict_next` and `give_feedback`.
693
+ It registers a server called `sfp`. The agent gets tools such as `select_skills`, `search_skills`, `get_skill`, `use_skill`, `find_api`, `predict_next`, `give_feedback`, `research_skill` and `grow_skills`.
694
+
695
+ Or add it to any MCP client by hand:
696
+
697
+ ```json
698
+ { "mcpServers": { "sfp": { "command": "npx", "args": ["-y", "sfp-hive", "mcp"] } } }
699
+ ```
467
700
 
468
701
  **Check:** restart the tool; `sfp` is listed among its MCP servers, with its tools. Undo with `--remove`.
469
702
 
@@ -476,9 +709,9 @@ python3 extensions/antigravity-hive/install.py # build, te
476
709
  python3 extensions/antigravity-hive/install.py --editor antigravity # one editor only
477
710
  ```
478
711
 
479
- It builds the `.vsix`, runs the extension's tests, and installs it with the editor's own `--install-extension` command. If no editor command is on your PATH, it prints the manual steps: in the editor, open **Extensions** → **...** → **Install from VSIX...** and pick the built file (a `.vsix` from a GitHub release works the same way).
712
+ It builds the `.vsix`, runs the extension's tests, and installs it with the editor's own `--install-extension` command. If no editor command is on your PATH, it prints the manual steps: in the editor, open **Extensions**, then **...**, then **Install from VSIX...** and pick the built file.
480
713
 
481
- Then reload the editor: `Ctrl+Shift+P` (macOS: `Cmd+Shift+P`) → **Developer: Reload Window**.
714
+ Then reload the editor: `Ctrl+Shift+P` (macOS: `Cmd+Shift+P`), **Developer: Reload Window**.
482
715
 
483
716
  **Check:**
484
717
 
@@ -486,7 +719,7 @@ Then reload the editor: `Ctrl+Shift+P` (macOS: `Cmd+Shift+P`) → **Developer: R
486
719
  python3 extensions/antigravity-hive/verify.py --editor antigravity
487
720
  ```
488
721
 
489
- Every line says `PASS`. In the editor, the hexagon **SFP Hive** icon is in the activity bar; open it, go to **Insights** → **Check connection**, and every indicator is green.
722
+ Every line says `PASS`. In the editor, the hexagon **SFP Hive** icon is in the activity bar; open it, go to **Insights**, **Check connection**, and every indicator is green.
490
723
 
491
724
  ### 8. Use SFP in Antigravity
492
725
 
@@ -499,39 +732,36 @@ Open the **SFP Hive** icon in the activity bar. It has three views: **SFP Hive**
499
732
  | **Library** | Browse all 1065 skills by area, goal, bundle and cluster; open a skill, pin it or add it to a bundle |
500
733
  | **Insights** | What the hive has learned from your feedback, and **Check connection** |
501
734
 
502
- ![A bundle in the Skill Library](extensions/antigravity-hive/media/screenshot-bundle.png)
503
-
504
735
  There are three ways to get the skills to the agent:
505
736
 
506
737
  1. **Automatic (default).** Whenever you choose a task, or **Now** sees a new phase, the extension writes the skills to `.agents/rules/sfp-active-skills.md` in your workspace. The agent reads that rule on every turn, so there is nothing to paste. Turn it off with **SFP Hive: Turn automatic skills on or off**.
507
738
  2. **Chat.** Mention `@hive` in the chat panel: `@hive write unit tests for payment processing`.
508
739
  3. **MCP tools** (step 6). The agent calls `select_skills` itself.
509
740
 
510
- After a task, tell the hive how it went: **This skill helped** / **This skill did not help** in the sidebar, or `give_feedback` through MCP. That is how it chooses better next time.
511
-
512
- Useful commands (`Ctrl+Shift+P`, then type "SFP Hive"): **Choose skills for a task**, **Show current agent skills and phase**, **Search skills**, **Apply a bundle**, **Copy the agent prompt**, **Check connection**, **Add a skill from Git**.
741
+ After a task, tell the hive how it went: **This skill helped** / **This skill did not help** in the sidebar, or `give_feedback` through MCP. That is how it chooses better next time, and how it learns your taste.
513
742
 
514
743
  ### 9. Optional: let the hive use local models
515
744
 
516
- Load an embedding model in LM Studio or Ollama (for example `nomic-embed-text`), then embed the library once:
745
+ Start Ollama or LM Studio. Load an embedding model (`bge-m3` works best) and a chat model (`lfm2-24b-a2b` is fast), then:
517
746
 
518
747
  ```bash
519
- python3 mcp/sfp_embed.py build # about a minute; later runs only embed what changed
748
+ python3 mcp/sfp_embed.py build # embed the library once; later runs only embed what changed
749
+ python3 mcp/sfp_intent.py probe # test each chat model and keep the score and speed (or: sfp models probe)
520
750
  python3 mcp/sfp_role.py . # your role, read from this project, and the stacks the library covers thinly
521
751
  ```
522
752
 
523
- The hive then matches tasks by meaning as well as words, on its own. When it reports a gap, draft a skill from research (any loaded chat model writes it; only the search queries leave your machine):
753
+ The hive then matches tasks by meaning, lets the model rerank weak matches (`SFP_RERANK=auto`, the default; `1` always, `0` never), and learns your taste. When it reports a gap, grow a skill from research:
524
754
 
525
755
  ```bash
526
- python3 mcp/sfp_research.py draft "tune the PI controller of a buck converter" --role embedded-hardware
527
- python3 mcp/sfp_research.py approve <name> --install antigravity # after you have read the draft
756
+ sfp mentor grow --topic "tune the PI controller of a buck converter"
757
+ sfp research approve <name> --install antigravity # after you have read the draft
528
758
  ```
529
759
 
530
- **Check:** `python3 mcp/sfp_hive.py doctor` shows **Meaning search** with every skill embedded. `SFP_SEMANTIC=0` turns all of this off.
760
+ **Check:** `sfp doctor` shows **Meaning search** with every skill embedded and your chat model under **Task rewrite**. `SFP_SEMANTIC=0` turns all of this off.
531
761
 
532
762
  ### 9b. Optional: set up the local model router
533
763
 
534
- An OpenAI-compatible router on `127.0.0.1:8787` that sends requests to your local models first, then free tiers, then paid ones, and moves to the next model when one is rate limited, out of quota or down.
764
+ An OpenAI-compatible router on `127.0.0.1:8787` that sends requests to your local models first, then free tiers, then paid ones, and moves to the next model when one is rate limited, out of quota or down. The hive itself never uses the router; it asks local models directly.
535
765
 
536
766
  ```bash
537
767
  python3 mcp/sfp_route.py discover # find models running here (Ollama, LM Studio, llama.cpp, Jan, vLLM)
@@ -571,19 +801,15 @@ In Claude Code:
571
801
  /plugin install frontend@sfp
572
802
  ```
573
803
 
574
- `sfp` is the router and hive; add the category plugins you want (`frontend`, `backend`, `testing-quality`, ...). **Check:** `/plugin` lists them as installed.
804
+ `sfp` is the router and hive; add the category plugins you want (`frontend`, `backend`, `testing-quality`, ...). **Check:** `/plugin` lists them as installed. Update later with `/plugin marketplace update sfp`.
575
805
 
576
806
  ### Keeping it current
577
807
 
578
808
  ```bash
579
- cd ~/.sfp/SFP
580
- git pull
581
- python3 scripts/install.py install # with the same options you used before
582
- python3 extensions/antigravity-hive/install.py # if you use the extension
583
- python3 mcp/sfp_hive.py doctor
809
+ sfp update # moves to the newest release and refreshes your skills
584
810
  ```
585
811
 
586
- Re-running the one-line command from step 2A does the first three for you.
812
+ Updates follow tagged releases, never unreleased work, and never move you back to an older version. Without npm: `python3 scripts/install.py update` from the SFP folder, or re-run the one-line command from step 2B. Set `SFP_AUTO_UPDATE=1` to update automatically when a release lands.
587
813
 
588
814
  ### When something is wrong
589
815
 
@@ -594,13 +820,12 @@ Re-running the one-line command from step 2A does the first three for you.
594
820
  | The agent does not mention any skills | Restart the tool after installing; run step 5 so it consults the hive on its own |
595
821
  | "SFP checkout not found" in the sidebar | Set the `sfpHive.sfpPath` setting to your SFP folder, then reload the window |
596
822
  | No SFP Hive icon after installing the extension | **Developer: Reload Window**; then `python3 extensions/antigravity-hive/verify.py` names what is missing |
597
- | The Library tab stays on "Loading" | Update the extension to 0.3.0 or newer (step 7) and reload |
598
823
  | The agent uses other skills than the sidebar shows | Choose the task again; check `.agents/rules/sfp-active-skills.md` exists in the workspace and automatic skills are on |
599
- | Search index: stale | `python3 scripts/sync.py`, or `git pull` |
824
+ | Search index: stale | `python3 scripts/sync.py`, or update (above) |
600
825
  | `sfp` missing from the MCP servers | Run step 6 again for that tool and restart it |
601
- | Router: not running | `python3 mcp/sfp_route.py serve` in a terminal you leave open |
602
- | Local models: none found | Start Ollama (port 11434) or LM Studio's server (port 1234), then `sfp_route.py discover` |
603
- | Anything else | `python3 mcp/sfp_hive.py doctor` names the failing part and the command that fixes it |
826
+ | Picks feel slow | `sfp models probe`, so the hive knows which local model answers fastest; or `SFP_RERANK=0` |
827
+ | Local models: none found | Start Ollama (port 11434) or LM Studio's server (port 1234), then `sfp models` |
828
+ | Anything else | `sfp doctor` names the failing part and the command that fixes it |
604
829
 
605
830
  ### Removing everything
606
831
 
@@ -611,21 +836,63 @@ python3 scripts/install.py mcp --remove # the MCP server entries
611
836
  python3 scripts/install.py rules --remove # the standing instruction
612
837
  ```
613
838
 
614
- Uninstall **SFP Hive** from the editor's Extensions view. Your history, feedback and settings are in `~/.sfp`; delete that folder to remove them and SFP itself.
839
+ Uninstall **SFP Hive** from the editor's Extensions view. Your history, taste, feedback and settings are in `~/.sfp`; delete that folder to remove them and SFP itself.
840
+
841
+ </details>
615
842
 
616
843
  ---
617
844
 
618
845
  ## Supported IDEs
619
846
 
620
- Claude Code, Codex, Cursor, Gemini CLI, Antigravity, GitHub Copilot, VS Code, Windsurf, Kiro, OpenCode, Pi, Grok Build, Qoder, Trae, Rovo Dev, Mistral Vibe, and Hermes.
847
+ <p align="center">
848
+ <picture>
849
+ <source media="(prefers-color-scheme: dark)" srcset="assets/tools-dark.svg">
850
+ <img src="assets/tools-light.svg" alt="Supported AI coding tools: Claude Code, Codex, Cursor, Gemini CLI, Antigravity, GitHub Copilot, VS Code, Windsurf, Kiro, OpenCode, Cline, Roo Code, Trae, Qoder, Pi, Grok Build, Rovo Dev, Mistral Vibe, Hermes and any MCP client." width="100%">
851
+ </picture>
852
+ </p>
853
+
854
+ ### 1. Quick Install by Operating System
855
+
856
+ | Operating System | Recommended (`npx`) | One-Liner Script (`~/.sfp/SFP`) | Notes |
857
+ |---|---|---|---|
858
+ | **Windows 10 / 11** (PowerShell) | `npx sfp-hive install` | `irm https://raw.githubusercontent.com/siddu1004/SFP/main/get.ps1 \| iex` | Tick **Add python.exe to PATH** when installing Python; run `python` instead of `python3` |
859
+ | **macOS** (Zsh / Bash) | `npx sfp-hive install` | `curl -fsSL https://raw.githubusercontent.com/siddu1004/SFP/main/get.sh \| sh` | Works on Apple Silicon (`arm64`) and Intel (`x86_64`) |
860
+ | **Linux** (Ubuntu, Debian, Fedora, Arch, WSL2) | `npx sfp-hive install` | `curl -fsSL https://raw.githubusercontent.com/siddu1004/SFP/main/get.sh \| sh` | Uses symlinks cleanly with `--link` |
861
+ | **Rust / Cargo** (Any OS) | `cargo install --git https://github.com/siddu1004/SFP.git` | `sfp install` | Native CLI wrapper around the Python hive |
862
+
863
+ ### 2. Every Supported IDE & Agent (Skills, MCP & Standing Rules)
864
+
865
+ | IDE / Agent Tool | `--tools` ID | Skills Folder | MCP Config File | Standing Rules File | One-Command Setup |
866
+ |---|---|---|---|---|---|
867
+ | **Claude Code** | `claude` | `~/.claude/skills` | Plugin / `~/.claude.json` | `~/.claude/CLAUDE.md` | `/plugin marketplace add siddu1004/SFP` then `/plugin install sfp@sfp` |
868
+ | **Google Antigravity** | `antigravity` | `~/.gemini/config/skills` | `~/.gemini/config/mcp_config.json` | `~/.gemini/GEMINI.md` | `npx sfp-hive install --tools antigravity` |
869
+ | **Cursor** | `cursor` | `~/.cursor/skills` | `~/.cursor/mcp.json` | `~/.cursor/rules/sfp.mdc` | `npx sfp-hive install --tools cursor` |
870
+ | **VS Code / GitHub Copilot** | `copilot` (`vscode`) | `~/.copilot/skills` | VS Code `mcp.json` | `~/.copilot/copilot-instructions.md` | `npx sfp-hive install --tools copilot` |
871
+ | **OpenAI Codex** | `codex` | `~/.agents/skills` | `~/.codex/config.toml` | `~/.codex/AGENTS.md` | `npx sfp-hive install --tools codex` |
872
+ | **Windsurf** | `windsurf` | `~/.codeium/windsurf/skills` | `~/.codeium/windsurf/mcp_config.json` | `~/.codeium/windsurf/memories/global_rules.md` | `npx sfp-hive install --tools windsurf` |
873
+ | **Gemini CLI** | `gemini` | `~/.gemini/skills` | `~/.gemini/settings.json` | `~/.gemini/GEMINI.md` | `npx sfp-hive install --tools gemini` |
874
+ | **Kiro** | `kiro` | `~/.kiro/skills` | `~/.kiro/settings/mcp.json` | `~/.kiro/steering/sfp.md` | `npx sfp-hive install --tools kiro` |
875
+ | **Cline** | `cline` | `~/.cline/skills` | `~/.cline/mcp_settings.json` | `~/.cline/AGENTS.md` | `npx sfp-hive install --tools cline` |
876
+ | **Roo Code** | `roo` | `~/.roo/skills` | `~/.roo/mcp_settings.json` | `~/.roo/rules/sfp.md` | `npx sfp-hive install --tools roo` |
877
+ | **OpenCode** | `opencode` | `~/.config/opencode/skills` | `~/.config/opencode/mcp.json` | `~/.config/opencode/AGENTS.md` | `npx sfp-hive install --tools opencode` |
878
+ | **Trae** | `trae` | `~/.trae/skills` | `~/.trae/mcp.json` | `~/.trae/user_rules.md` | `npx sfp-hive install --tools trae` |
879
+ | **Qoder** | `qoder` | `~/.qoder/skills` | `~/.qoder/mcp.json` | `~/.qoder/AGENTS.md` | `npx sfp-hive install --tools qoder` |
880
+ | **Pi** | `pi` | `~/.pi/agent/skills` | `~/.pi/mcp.json` | `~/.pi/agent/AGENTS.md` | `npx sfp-hive install --tools pi` |
881
+ | **Grok Build** | `grok` | `~/.grok/skills` | `~/.grok/mcp.json` | `~/.grok/AGENTS.md` | `npx sfp-hive install --tools grok` |
882
+ | **Mistral Vibe** | `vibe` | `~/.vibe/skills` | `~/.vibe/mcp.json` | `~/.vibe/AGENTS.md` | `npx sfp-hive install --tools vibe` |
883
+ | **Hermes** | `hermes` | `~/.hermes/skills` | `~/.hermes/mcp.json` | `~/.hermes/AGENTS.md` | `npx sfp-hive install --tools hermes` |
621
884
 
622
- Install into specific tools:
623
885
  ```bash
624
- ./install.sh --tools claude,cursor,antigravity,codex
886
+ # Install starter skills, MCP server, and standing rules across multiple tools at once:
887
+ npx sfp-hive install --tools claude,cursor,antigravity,codex
888
+ npx sfp-hive mcp --tools claude,cursor,antigravity,codex
889
+ npx sfp-hive rules --tools claude,cursor,antigravity,codex
625
890
  ```
626
891
 
627
892
  ---
628
893
 
629
894
  ## Sources and Licenses
630
895
 
631
- SFP's selection engine, installer, and MCP server are licensed under the [MIT License](LICENSE). Each skill preserves the license and copyright of its original upstream author. Detailed attributions are cataloged in [NOTICE.md](NOTICE.md) and [SKILLS.md](SKILLS.md).
896
+ SFP's selection engine, installer, and MCP server are licensed under the [MIT License](LICENSE). The 1065 skills come from 91 repositories, and each keeps the license and copyright of its original author. Attributions are listed in [NOTICE.md](NOTICE.md) and [SKILLS.md](SKILLS.md).
897
+
898
+ <p align="center"><sub>Built by <a href="https://github.com/siddu1004">siddu1004</a>. If SFP saves your agent some context, a star helps others find it.</sub></p>
package/bin/sfp.js CHANGED
@@ -366,7 +366,7 @@ function resolveSfpRoot() {
366
366
  }
367
367
 
368
368
  function showHelp(skillCount) {
369
- const countStr = skillCount ? `${skillCount} skills` : '894 skills';
369
+ const countStr = skillCount ? `${skillCount} skills` : '1,065 skills';
370
370
  console.log(`
371
371
  \x1b[1m\x1b[36mSFP (Skills for Productivity)\x1b[0m — ${countStr}, one intelligent hive.
372
372
  Give your AI coding agent the right skills for the job, not all of them.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "sfp-hive",
3
- "version": "3.19.0",
4
- "description": "Give your AI coding agent the right skills for the job, not all of them. Curated library of 800+ agent skills across 16 IDEs with an intelligent hive that selects, orders, and learns from feedback.",
3
+ "version": "3.20.0",
4
+ "description": "Give your AI coding agent the right skills for the job, not all of them. Curated library of 1,065 agent skills across 24 categories and 20 AI coding tools with a local hive that selects, orders, and learns from feedback.",
5
5
  "author": "siddu1004",
6
6
  "license": "MIT",
7
7
  "homepage": "https://github.com/siddu1004/SFP#readme",