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.
- package/README.md +516 -249
- package/bin/sfp.js +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -5,252 +5,286 @@
|
|
|
5
5
|
</picture>
|
|
6
6
|
</h1>
|
|
7
7
|
|
|
8
|
-
<
|
|
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/
|
|
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/
|
|
17
|
-
<img src="https://img.shields.io/badge/
|
|
18
|
-
<img src="https://img.shields.io/badge/
|
|
19
|
-
<img src="https://img.shields.io/badge/
|
|
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
|
-
• <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
|
-
• <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
|
-
• <b>96.1% context token reduction</b> vs loading all skill descriptions (99.8% vs loading full library text).<br>
|
|
27
|
-
• <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
|
-
<
|
|
33
|
-
<
|
|
34
|
-
<
|
|
35
|
-
</
|
|
36
|
-
</
|
|
37
|
-
|
|
38
|
-
<
|
|
39
|
-
<a href="#try-it-in-60-seconds"><b>Try in 60s</b></a> ·
|
|
40
|
-
<a href="#the-problem"><b>Why We Built It</b></a> ·
|
|
41
|
-
<a href="#what-sfp-does"><b>What It Does</b></a> ·
|
|
42
|
-
<a href="#see-it-choose"><b>Live Selection</b></a> ·
|
|
43
|
-
<a href="#platform-capabilities"><b>Platform Capabilities</b></a> ·
|
|
44
|
-
<a href="#why-choose-sfp"><b>Benchmark Results</b></a> ·
|
|
45
|
-
<a href="#the-proof"><b>The Proof</b></a> ·
|
|
21
|
+
<a href="#what-is-this"><b>What is this?</b></a> ·
|
|
22
|
+
<a href="#start-here"><b>Start here</b></a> ·
|
|
23
|
+
<a href="#why-sfp-the-unfair-advantages"><b>Advantages</b></a> ·
|
|
24
|
+
<a href="#see-it-choose"><b>See it choose</b></a> ·
|
|
25
|
+
<a href="#ui-design-and-front-end-skills"><b>UI & design</b></a> ·
|
|
26
|
+
<a href="#business-marketing-and-growth-skills"><b>Business & marketing</b></a> ·
|
|
27
|
+
<a href="#the-proof"><b>The proof</b></a> ·
|
|
46
28
|
<a href="#install"><b>Install</b></a>
|
|
47
29
|
</p>
|
|
48
30
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
```bash
|
|
52
|
-
# macOS and Linux:
|
|
53
|
-
curl -fsSL https://raw.githubusercontent.com/siddu1004/SFP/main/get.sh | sh
|
|
31
|
+
---
|
|
54
32
|
|
|
55
|
-
|
|
56
|
-
irm https://raw.githubusercontent.com/siddu1004/SFP/main/get.ps1 | iex
|
|
57
|
-
```
|
|
33
|
+
## What Is This?
|
|
58
34
|
|
|
59
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
64
|
+
---
|
|
72
65
|
|
|
73
|
-
|
|
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/
|
|
81
|
-
<img src="assets/
|
|
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
|
-
|
|
105
|
+
</details>
|
|
88
106
|
|
|
89
|
-
|
|
107
|
+
---
|
|
90
108
|
|
|
91
|
-
|
|
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/
|
|
102
|
-
<img src="assets/
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
118
|
-
|
|
119
|
-
|
|
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
|
-
|
|
126
|
+
**2. Restart your AI tool.**
|
|
125
127
|
|
|
126
|
-
|
|
128
|
+
**3. Ask it something, and mention SFP:**
|
|
127
129
|
|
|
128
|
-
|
|
130
|
+
> Use sfp-hive for this task: add tests for the checkout form.
|
|
129
131
|
|
|
130
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
##
|
|
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="
|
|
169
|
-
<img src="
|
|
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
|
-
|
|
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
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
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
|
-
|
|
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
|
-
|
|
185
|
+
And with plain words, or with people who learn differently (real output, with the local models on):
|
|
189
186
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
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
|
-
|
|
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
|
-
|
|
198
|
-
|
|
199
|
-
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
## Common Questions
|
|
200
200
|
|
|
201
|
-
|
|
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
|
-
##
|
|
214
|
+
## It Learns How You Learn
|
|
206
215
|
|
|
207
|
-
|
|
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
|
-
|
|
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
|
-
#
|
|
220
|
-
sfp
|
|
221
|
+
sfp taste # what SFP has learned about you
|
|
222
|
+
sfp taste --reset # start again from neutral
|
|
223
|
+
```
|
|
221
224
|
|
|
222
|
-
|
|
223
|
-
|
|
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
|
-
|
|
226
|
-
|
|
227
|
-
|
|
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
|
-
##
|
|
245
|
+
## Make It Smarter (Optional)
|
|
233
246
|
|
|
234
|
-
SFP
|
|
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
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
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
|
-
|
|
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
|
-
|
|
248
|
-
|
|
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
|
-
##
|
|
333
|
+
## Business, Marketing and Growth Skills
|
|
268
334
|
|
|
269
|
-
|
|
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
|
-
<
|
|
272
|
-
<
|
|
273
|
-
|
|
274
|
-
|
|
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
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
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
|
-
|
|
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
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 | **
|
|
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 |
|
|
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
|
|
306
|
-
| `starter` preset | 174 | about 15,
|
|
307
|
-
| `frontend-dev` preset | 225 | about 16,
|
|
308
|
-
| `backend-dev` preset | 151 | about 13,
|
|
309
|
-
| `mobile-dev` preset | 84 | about 6,
|
|
310
|
-
| `agent-builder` preset | 309 | about 20,
|
|
311
|
-
| `everything` | 1065 | about 81,
|
|
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
|
-
|
|
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
|
-
>
|
|
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
|
+
|
|
543
|
+
<img src="extensions/antigravity-hive/media/screenshot-areas.png" width="31%" alt="Browsing skills by area">
|
|
544
|
+
|
|
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
|
|
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
|
|
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 |
|
|
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.
|
|
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
|
|
610
|
+
Running it again later updates SFP and reinstalls. To use a different folder, set `SFP_DIR` first.
|
|
372
611
|
|
|
373
|
-
**
|
|
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
|
-
**
|
|
619
|
+
**D. Rust.** If you have Cargo: `cargo install --git https://github.com/siddu1004/SFP.git`, then `sfp install`.
|
|
381
620
|
|
|
382
|
-
**
|
|
621
|
+
**Check:** `sfp help` (A) lists the commands, or the folder holds `catalog.json` (B, C):
|
|
383
622
|
|
|
384
623
|
```bash
|
|
385
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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`)
|
|
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
|
|
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
|
-

|
|
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
|
|
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 #
|
|
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
|
|
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
|
-
|
|
527
|
-
|
|
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:** `
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
|
602
|
-
| Local models: none found | Start Ollama (port 11434) or LM Studio's server (port 1234), then `
|
|
603
|
-
| Anything else | `
|
|
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
|
-
|
|
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
|
-
|
|
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).
|
|
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` : '
|
|
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.
|
|
4
|
-
"description": "Give your AI coding agent the right skills for the job, not all of them. Curated library of
|
|
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",
|