agent-skillboard 0.2.18 → 0.3.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 (76) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/README.md +129 -258
  3. package/docs/adapters.md +37 -113
  4. package/docs/ai-skill-routing-goal.md +35 -109
  5. package/docs/capabilities.md +17 -104
  6. package/docs/install.md +36 -485
  7. package/docs/policy-model.md +50 -280
  8. package/docs/positioning.md +19 -86
  9. package/docs/profiles.md +21 -153
  10. package/docs/reference.md +115 -363
  11. package/docs/rollout-runbook.md +23 -25
  12. package/docs/routing.md +23 -90
  13. package/docs/user-flow.md +60 -284
  14. package/docs/value-proof.md +23 -181
  15. package/docs/variant-lifecycle.md +47 -67
  16. package/docs/versioning.md +31 -264
  17. package/examples/v2-multi-source.config.yaml +35 -0
  18. package/examples/v2-policy-error.config.yaml +6 -0
  19. package/package.json +1 -1
  20. package/src/advisor/actions.mjs +102 -6
  21. package/src/advisor/application-commands.mjs +10 -9
  22. package/src/advisor/apply-action.mjs +74 -1
  23. package/src/advisor/guidance.mjs +24 -16
  24. package/src/advisor/schema.mjs +17 -6
  25. package/src/advisor/skills.mjs +18 -5
  26. package/src/advisor.mjs +27 -9
  27. package/src/agent-integration-cli.mjs +13 -4
  28. package/src/agent-integration-content.mjs +21 -11
  29. package/src/agent-integration-files.mjs +1 -1
  30. package/src/agent-inventory-platforms.mjs +10 -0
  31. package/src/agent-inventory.mjs +23 -1
  32. package/src/agent-skill-import.mjs +2 -2
  33. package/src/audit-paths.mjs +42 -0
  34. package/src/brief-cli.mjs +3 -2
  35. package/src/brief-renderer.mjs +1 -0
  36. package/src/cli.mjs +498 -232
  37. package/src/compatibility.mjs +24 -0
  38. package/src/control/can-use-guard.mjs +21 -1
  39. package/src/control/config-write.mjs +32 -2
  40. package/src/control/skill-crud.mjs +5 -0
  41. package/src/control/v2-guard.mjs +175 -0
  42. package/src/control/v2-skill-crud.mjs +32 -0
  43. package/src/control/v2-skill-forget.mjs +38 -0
  44. package/src/control/variant-status.mjs +47 -1
  45. package/src/control.mjs +55 -0
  46. package/src/doctor.mjs +63 -4
  47. package/src/domain/v2-policy.mjs +111 -0
  48. package/src/hook-plan.mjs +33 -3
  49. package/src/impact.mjs +52 -29
  50. package/src/index.mjs +25 -1
  51. package/src/init.mjs +50 -34
  52. package/src/inventory-install-units.mjs +63 -0
  53. package/src/inventory-json.mjs +279 -0
  54. package/src/inventory-refresh.mjs +163 -18
  55. package/src/lifecycle-cli.mjs +40 -12
  56. package/src/lifecycle-content.mjs +52 -67
  57. package/src/migration/v1-to-v2.mjs +212 -0
  58. package/src/migration/v2-files.mjs +211 -0
  59. package/src/migration/v2-journal.mjs +169 -0
  60. package/src/migration/v2-projection.mjs +108 -0
  61. package/src/migration/v2-transaction.mjs +205 -0
  62. package/src/policy.mjs +3 -0
  63. package/src/reconcile.mjs +139 -111
  64. package/src/report.mjs +168 -148
  65. package/src/review.mjs +2 -0
  66. package/src/route-advisory.mjs +47 -2
  67. package/src/route-selection.mjs +38 -2
  68. package/src/route.mjs +62 -2
  69. package/src/shared-skill.mjs +301 -0
  70. package/src/source-digest.mjs +42 -0
  71. package/src/source-profiles.mjs +171 -144
  72. package/src/source-verification.mjs +32 -48
  73. package/src/uninstall.mjs +22 -0
  74. package/src/user-state-paths.mjs +19 -0
  75. package/src/user-uninstall.mjs +146 -0
  76. package/src/workspace.mjs +119 -79
package/CHANGELOG.md CHANGED
@@ -2,6 +2,49 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.3.0 — 2026-07-13
6
+
7
+ ### Changed
8
+
9
+ - Replaced the v1 policy matrix with schema v2's user-level decisions:
10
+ enable/disable and explicit per-skill cross-agent sharing.
11
+ - Made valid installed skills enabled and agent-local by default; `shared: true`
12
+ preserves originals while creating managed compatible copies.
13
+ - Added generated `installed_on` inventory so route and guard evaluate the
14
+ selected agent without a user-managed agent matrix.
15
+ - Made normal setup, brief, route, guard, and policy mutations use home state
16
+ from any working directory; project init is no longer part of the v2 flow.
17
+ - Limited optional preference to candidate ranking; preference never changes
18
+ availability or sharing.
19
+ - Moved source, provenance, install-unit, digest, alias, and risk observations to
20
+ optional generated audit metadata that cannot block a skill.
21
+ - Added explicit preview, apply, and byte-restoring rollback documentation for
22
+ `skillboard migrate v2`.
23
+ - Scheduled removal of the one-release v1 read-only compatibility window for
24
+ v0.4.0.
25
+ - Added `skill forget` for explicit policy-only cleanup after an owning
26
+ installer removes a local skill.
27
+ - Added `uninstall --user` dry-run and confirmed apply flows that remove all
28
+ marker-owned shared copies, managed guidance, and home state while preserving
29
+ agent-owned and unmanaged skills.
30
+ - Restored the declared Node.js 14.21 runtime floor and added release gates for
31
+ Node.js 14.21, 20, and 22 on Ubuntu, macOS, and Windows.
32
+
33
+ ### Fixed
34
+
35
+ - Prevented removed skills from leaving unrecoverable stale policy that keeps
36
+ doctor unhealthy.
37
+ - Prevented package removal from orphaning SkillBoard-managed shared copies in
38
+ supported agent skill roots.
39
+ - Replaced Node 15/16-only clone, string replacement, recursive copy, and npm
40
+ smoke-test APIs with Node.js 14.21-compatible paths.
41
+
42
+ ### Security
43
+
44
+ - Clarified that SkillBoard does not authorize hooks, MCP servers, commands,
45
+ external writes, destructive actions, or secrets; those remain runtime and
46
+ harness permission decisions.
47
+
5
48
  ## 0.2.18 — 2026-07-07
6
49
 
7
50
  ### Changed
package/README.md CHANGED
@@ -1,298 +1,169 @@
1
1
  # SkillBoard
2
2
 
3
- Keep AI-agent skills broadly available, then route overlaps consistently.
4
-
5
- If you use more than one coding agent, skill pack, plugin, MCP tool, or
6
- marketplace, SkillBoard answers the practical questions before you install
7
- anything or change workflow policy: which skills are usable now, which one
8
- should win when skills overlap, which external skills need review, and how
9
- Codex, Claude, OpenCode, and Hermes can follow the same policy.
10
-
11
- Ask your AI normal work requests: "write tests before implementation",
12
- "review this plan and point out weak assumptions", "help me refine this UX
13
- flow", or explicit control requests like "use the Codex test-first skill in
14
- OpenCode too." SkillBoard runs behind the scenes only when skill choices
15
- overlap, workflow priority matters, or you explicitly ask for a skill/control
16
- decision, so you get the benefit: broadly available skills, one routed skill
17
- when similar skills overlap, and a short disclosure of what was used.
18
-
19
- The burden stays low:
20
-
21
- - No global install is required for a trial; use
22
- `npm exec --yes --package agent-skillboard@latest -- skillboard`.
23
- - Most use is read-only: `brief`, `route`, and `guard use` answer what can run
24
- now and which route fits the request; `doctor` checks local policy and source
25
- health without writing changes.
26
- - Nothing changes until you approve a policy action.
27
- - Agent-layer cleanup is previewable with
28
- `skillboard uninstall --agent-layer --dry-run`; it removes only managed
29
- SkillBoard guidance while preserving other agent skills.
30
-
31
- Status: public alpha. The current config schema is config schema v1; breaking
32
- changes may still happen before `1.0.0` and are documented in release notes.
33
-
34
- Under the hood, SkillBoard is workflow-scoped skill priority and overlap routing
35
- for AI agents. Installed user skills are usable by default unless runtime, user,
36
- or local instructions disable them; SkillBoard helps Codex, OpenCode, Claude,
37
- and Hermes resolve overlapping skills and workflow priority instead of guessing
38
- from raw skill files.
39
-
40
- Start with normal requests:
41
-
42
- - "What skills can you use in this project?"
43
- - "Write tests before implementation."
44
- - "Review this plan and point out weak assumptions."
45
- - "Help me refine this UX flow."
46
- - "Use the Codex test-first skill in OpenCode too."
47
- - "Can you make `anthropic.docx` available for this workflow?"
48
- - "Why is this skill blocked?"
49
-
50
- Your AI runs SkillBoard behind the scenes, reads the current brief, checks the
51
- guard automatically before invoking an allowed skill, and asks only before
52
- policy-changing actions. For already-allowed skills, it should say which skill
53
- it is about to use and which skill it used, not interrupt you for another
54
- approval. That disclosure is an audit trace, not a permission prompt. You do
55
- not need to memorize the SkillBoard command loop.
56
-
57
- A normal allowed-skill turn can look like this:
58
-
59
- - You: "Write tests before implementation."
60
- - AI: "I will use matt.tdd for this request."
61
- - AI: "I used matt.tdd for this request."
62
-
63
- Names you may see in setup and logs:
64
-
65
- - `SkillBoard`: the product and policy model.
66
- - `agent-skillboard`: the npm package.
67
- - `skillboard`: the CLI binary.
68
-
69
- ## Who This Is For
70
-
71
- Use SkillBoard if you use more than one coding agent, skill pack, plugin, MCP
72
- tool, or marketplace and want one answer to:
73
-
74
- - Which skills can this agent use right now?
75
- - Which skill should win when several match the same task?
76
- - Which external or plugin skills are reviewed, blocked, or waiting for approval?
77
- - How can Codex, Claude, OpenCode, and Hermes follow the same skill policy?
78
-
79
- If you use one agent with a few hand-written local skills, you probably do not
80
- need SkillBoard yet. SkillBoard is for setups that have grown beyond one trusted
81
- skill folder and need workflow-scoped control without turning skill governance
82
- into a manual checklist.
83
-
84
- If you are changing routing, brief, bridge, policy, or workflow UX, read
85
- [AI Skill Routing Goal](docs/ai-skill-routing-goal.md) first; it defines the
86
- non-blocking `observe → route → work → explain briefly → ask after → remember
87
- policy` loop that development should preserve.
3
+ SkillBoard gives AI agents one small user-level policy for installed skills:
88
4
 
89
- <p align="center">
90
- <img src="https://raw.githubusercontent.com/NyXXiR/skillboard/main/skillboard.png" alt="SkillBoard architecture diagram: sources, inventory scanner, SkillBoard model, policy engine, and user and agent surfaces." width="100%">
91
- </p>
92
-
93
- ## Why Not Just List `/skills`?
94
-
95
- A raw skill list answers what is declared. SkillBoard answers what can run now
96
- and how overlapping matches should route.
5
+ 1. Enable or disable a skill.
6
+ 2. Keep an enabled skill agent-local or shared across agents.
97
7
 
98
- Same fixture, different answer:
8
+ Valid installed skills default to enabled and agent-local. Sharing is opt-in per
9
+ skill. Optional preference ranks enabled skills installed for the current agent
10
+ and never changes availability or copies files.
99
11
 
100
- | Raw skill list | SkillBoard brief |
101
- | --- | --- |
102
- | `matt.tdd active workflow-auto` | `AI can use now: 0` |
103
- | no policy health | `Blocked for safety: 8`, `Policy errors: 2` |
104
- | several review skills look relevant | `Overlap: Multiple allowed skills match... routes ...` |
12
+ Status: public alpha. Package 0.3.0 writes policy schema v2.
105
13
 
106
- That gap is the product. SkillBoard separates `installed` from `available`,
107
- checks policy health, and gives agents a route they can use without guessing
108
- from raw `SKILL.md` files. The same proof also routes "write tests before
109
- implementation" to `matt.tdd`, returns `private.tdd-work-continuity` as the
110
- fallback, and gives the AI exact start and finish disclosure text. Targeted
111
- tests also cover `grill-me`-style review overlap across Codex and OpenCode
112
- workflows.
113
-
114
- See [Tested Value Proof](#tested-value-proof) for the executable proof.
14
+ <p align="center">
15
+ <img src="https://raw.githubusercontent.com/NyXXiR/skillboard/main/skillboard.png" alt="SkillBoard architecture diagram" width="100%">
16
+ </p>
115
17
 
116
18
  ## 5-Minute Quick Start
117
19
 
118
- Try it without a global install. These read-only commands download the latest
119
- package for one run and do not create project files:
20
+ Try the read-only CLI:
120
21
 
121
22
  ```bash
122
23
  npm exec --yes --package agent-skillboard@latest -- skillboard --version
123
- npm exec --yes --package agent-skillboard@latest -- skillboard help brief
24
+ npm exec --yes --package agent-skillboard@latest -- skillboard help
124
25
  ```
125
26
 
126
- Install the CLI when you want SkillBoard connected to your agent layer. On a
127
- normal global install, SkillBoard auto-connects the agent layer for detected
128
- Codex, Claude, OpenCode, and Hermes user skill roots:
129
-
130
- AI/automation/operator details:
27
+ Install globally:
131
28
 
132
29
  ```bash
133
30
  npm install -g agent-skillboard
134
31
  ```
135
32
 
136
- If your system npm requires elevated permissions, `sudo npm install -g
137
- agent-skillboard` is also supported. In that flow, install-time setup resolves
138
- `SUDO_USER` and writes the user-level guidance skill under the invoking user's
139
- agent homes. Managed guidance files written under the user's home are restored
140
- to the invoking user's ownership, while the `skillboard` binary still lands in
141
- the global prefix used by that npm command.
142
-
143
- The install-time setup writes a user-level `skillboard` guidance skill under
144
- detected agent homes. For Codex, detection includes `CODEX_HOME/skills`,
145
- `AGENTS_HOME/skills`, `~/.agents/skills`, and `~/.codex/skills`.
146
- If `~/.agents` already exists, setup creates `~/.agents/skills` because that is
147
- the shared Codex-visible skill tree in LazyCodex-style environments.
148
- It does not create `skillboard.config.yaml`,
149
- `.skillboard/`, `AGENTS.md`, or `CLAUDE.md` in projects.
150
- No separate setup command is required after a normal global install or update:
151
- npm lifecycle scripts run agent-layer setup automatically, rerun the agent-home
152
- scan, refresh managed SkillBoard guidance files, and add newly detected
153
- supported agent roots. This setup is agent-layer only.
154
-
155
- Run `skillboard setup --agent codex,claude,opencode,hermes --yes` later only
156
- after adding another supported agent, enabling a new agent home, or installing
157
- with lifecycle scripts disabled. Restart or refresh agents that cache user
158
- skills, then ask normal questions:
159
-
160
- - "Write tests before implementation."
161
- - "Review this plan and point out weak assumptions."
162
- - "What skills can you use here?"
163
- - "Use the Codex test-first skill in OpenCode too."
164
- - "When two skills overlap, which one should take priority?"
165
-
166
- When a target agent needs a skill from another agent, it can use
167
- `skillboard import-skill --from codex --to opencode --skill <skill> --json`
168
- behind the scenes. Compatible skills are copied into the target agent's user
169
- skill root. If the source contains agent-specific instructions, the agent asks
170
- before creating an adapted target-agent `SKILL.md` and installs that file with
171
- provenance.
172
-
173
- Remove SkillBoard's managed agent-layer guidance before package removal when
174
- you want agent homes back to their pre-SkillBoard guidance state:
33
+ The package postinstall sets up detected agent guidance and creates the
34
+ user-level state at `~/skillboard.config.yaml` and
35
+ `~/.skillboard/inventory.json`. No separate setup command is required after a
36
+ normal install. If lifecycle scripts were skipped or another agent was added:
175
37
 
176
38
  ```bash
177
- npx --yes --package agent-skillboard skillboard uninstall --agent-layer --dry-run
178
- npx --yes --package agent-skillboard skillboard uninstall --agent-layer
179
- npm uninstall -g agent-skillboard
39
+ skillboard setup --agent codex,claude,opencode,hermes --yes
40
+ ```
41
+
42
+ `sudo npm install -g agent-skillboard` is supported when system npm requires
43
+ it. Setup resolves `SUDO_USER` and restores managed home files to that user.
44
+ Setup and ordinary use write no project policy and require no project init.
45
+
46
+ Ask the agent for the work you want. SkillBoard is consulted when skills overlap
47
+ or when you ask which skill should be used.
48
+
49
+ ## The v2 policy
50
+
51
+ ```yaml
52
+ version: 2
53
+ skills:
54
+ test-first:
55
+ enabled: true
56
+ shared: false
57
+ preference:
58
+ intents: [testing]
59
+ priority: 100
60
+ docs-helper:
61
+ enabled: true
62
+ shared: true
63
+ unused:
64
+ enabled: false
65
+ shared: false
180
66
  ```
181
67
 
182
- Agent-layer uninstall removes only managed `skillboard/SKILL.md` guidance files
183
- that contain SkillBoard's integration marker. It preserves other agent skills
184
- and user-authored `skillboard` skills.
185
-
186
- See [docs/install.md](docs/install.md) for global installs, `--dir`, GitHub
187
- builds, clone-based development, Hermes bridge setup, refresh, and uninstall.
188
-
189
- ## What SkillBoard Gives You
190
-
191
- - Inventory that separates installed skills from callable skills.
192
- - Broad default availability with workflow-scoped overlap routing.
193
- - `brief`, `route`, `can-use`, and `guard use` surfaces for AI-mediated selection and availability.
194
- - `import-skill` for agent-layer skill reuse across Codex, Claude, OpenCode, and Hermes.
195
- - Workflow conflict checks and overlap summaries so similar skills stay
196
- available without quietly degrading an answer.
197
- - Action cards that apply one approved policy change, then re-resolve state.
198
- - Source and install-unit review for plugins, hooks, MCP servers, harnesses,
199
- commands, LSPs, and package-manager dependencies.
200
- - Impact, reconcile, rollout, and dashboard output before cleanup or migration.
201
- - Manual skill variant lifecycle for relationships such as `a -> claude.a`,
202
- with draft, approval, drift, and reset checkpoints.
203
-
204
- SkillBoard is priority-first at the agent layer: installed user skills are
205
- usable unless runtime, user, or local instructions disable them. Local workspace
206
- policy files can still model stricter workflow, source, and invocation
207
- decisions when a team needs that control.
208
- For action cards, use `skillboard apply-action <action-id> --yes --json`; raw
209
- `skillboard hook install ... --dry-run --json` previews are underlying manual
210
- operator detail, not the primary action-card flow.
211
-
212
- ## Legacy Project Policy Mode
213
-
214
- Legacy project policy mode is for existing workspaces that still carry local
215
- SkillBoard policy files.
216
-
217
- `skillboard init` is deprecated project-local policy bootstrap and is not
218
- needed for normal use. Global install/postinstall and `skillboard setup`
219
- connect SkillBoard at the agent layer without creating `skillboard.config.yaml`,
220
- `.skillboard/`, `AGENTS.md`, or `CLAUDE.md` in projects. Agent-layer setup does
221
- not run `skillboard init`.
222
-
223
- The command remains for existing workspaces that intentionally maintain local
224
- policy files, bridge guidance, and reports. Use `skillboard help init` before
225
- using it in an existing workspace.
226
-
227
- Default legacy project uninstall removes SkillBoard config, bridge guidance,
228
- and `.skillboard/` project state while preserving local `skills/*/SKILL.md`
229
- files:
68
+ `enabled` controls use. `shared` controls whether SkillBoard maintains compatible
69
+ copies for other supported agents. `shared: false` leaves the skill where its
70
+ owner installed it; it does not quarantine, isolate, move, or delete anything.
71
+ `shared: true` preserves the owner copy and adds only managed shared copies.
72
+
73
+ New valid skills receive `enabled: true` and `shared: false`. See
74
+ `examples/v2-multi-source.config.yaml` for a valid policy and
75
+ `examples/v2-policy-error.config.yaml` for a validation fixture. Unprefixed
76
+ examples are retained only as v1 migration fixtures.
77
+
78
+ Generated inventory records where a skill is installed through `installed_on`.
79
+ Source, provenance, path, digest, aliases, install-unit details, and risk are
80
+ optional audit metadata and never determine availability. Runtime and action
81
+ authorization are outside SkillBoard's scope; the active agent or harness still
82
+ authorizes commands, hooks, MCP servers, network access, external writes,
83
+ destructive actions, and secrets.
84
+
85
+ ## Agent flow
86
+
87
+ From any working directory, an agent can:
88
+
89
+ 1. Read `skillboard brief --intent <request> --agent <agent> --json`.
90
+ 2. Select an enabled skill installed for that agent, using preference only to
91
+ rank matches.
92
+ 3. Run `skillboard guard use <skill-id> --agent <agent> --json` before use.
93
+ 4. Work without another approval when the guard allows use.
94
+ 5. Ask after completion only if remembering a preference would help.
95
+
96
+ Direct policy changes are:
97
+
98
+ ```bash
99
+ skillboard skill enable <skill-id>
100
+ skillboard skill disable <skill-id>
101
+ skillboard skill share <skill-id>
102
+ skillboard skill unshare <skill-id>
103
+ skillboard skill preference <skill-id> --intent <term>[,<term>] --priority <integer>
104
+ skillboard skill forget <skill-id>
105
+ ```
106
+
107
+ Add `--dry-run` to preview or `--json` for machine-readable output. For mediated
108
+ changes, the agent reads `brief --include-actions --json`, asks once about one
109
+ current action, runs `skillboard apply-action <action-id> --agent <agent> --yes --json`, and
110
+ rereads the returned post-apply brief.
111
+
112
+ This is the distinction from a pure distribution tool: skills stay local by
113
+ default, users promote only selected skills to shared use, and routing preference
114
+ can be remembered without changing installation or availability.
115
+
116
+ ## Migrate version 1
117
+
118
+ Version 1 has a one-release read-only window beginning in v0.3.0. Preview makes
119
+ no writes; apply creates an adjacent byte-for-byte backup; rollback restores it.
230
120
 
231
121
  ```bash
232
- skillboard uninstall --dir /path/to/your/project --dry-run
233
- skillboard uninstall --dir /path/to/your/project
122
+ skillboard migrate v2 --config <path> --json
123
+ skillboard migrate v2 --config <path> --yes --json
124
+ skillboard migrate v2 --config <path> --rollback <backup> --json
234
125
  ```
235
126
 
236
- Use `--keep-settings` only when you want to keep legacy project policy and
237
- bridge guidance in place, for example while cleaning generated helper files.
238
- `--purge` remains accepted as an explicit spelling for the default clean
239
- project removal.
127
+ All v1 mutations refuse and point to migration. v0.4.0 removes the v1 reader.
240
128
 
241
- ## What Works Today
129
+ ## Cleanup
242
130
 
243
- SkillBoard currently supports:
131
+ After removing a local skill with its owning agent or package manager, refresh
132
+ inventory and explicitly forget the stale policy entry:
244
133
 
245
- - YAML policy config parsing and semantic checks.
246
- - Recursive `SKILL.md` discovery.
247
- - Source-profile import for cloned or installed skill repositories.
248
- - Agent runtime install-unit inventory when manifest metadata is available.
249
- - Markdown dashboard and machine-readable brief generation.
250
- - Disable-impact analysis and reconcile plans.
251
- - Workflow-scoped activation, blocking, preference, and guard checks.
252
- - Action-card approval and post-apply brief refresh.
253
- - Agent-layer skill import with compatible copy or user-approved AI-mediated adaptation.
254
- - Manual variant registration, fork, status, approval, and reset.
134
+ ```bash
135
+ skillboard inventory refresh
136
+ skillboard skill forget <skill-id> --dry-run
137
+ skillboard skill forget <skill-id>
138
+ ```
255
139
 
256
- For the full command catalog and config shape, use
257
- [docs/reference.md](docs/reference.md).
140
+ `forget` never deletes skill files. It refuses skills that are still observed or
141
+ shared, so shared skills must be unshared first.
258
142
 
259
- ## Tested Value Proof
143
+ Before removing the SkillBoard package, preview and apply the complete
144
+ user-level cleanup:
260
145
 
261
- A raw list says `matt.tdd` is active. SkillBoard says the same workflow has 0
262
- usable skills because policy health fails.
146
+ ```bash
147
+ skillboard uninstall --user --dry-run
148
+ skillboard uninstall --user --yes
149
+ npm uninstall -g agent-skillboard
150
+ ```
263
151
 
264
- | Question | Raw list | SkillBoard brief |
265
- | --- | --- | --- |
266
- | Does `matt.tdd` look enabled? | `active`, `workflow-auto` | blocked by policy health |
267
- | Can the agent safely use anything now? | not answered | 0 usable skills, 8 blocked skills |
268
- | Why? | not answered | `Policy errors: 2`, `Policy warnings: 1` |
152
+ User cleanup removes marker-owned shared copies, managed guidance, the home
153
+ policy, and generated user state. It preserves agent-owned and unmanaged skills.
154
+ Legacy project and guidance-only cleanup remain available through command help.
269
155
 
270
- The action-card flow is tested too. Applying
271
- `activate-skill:anthropic.docx` in a temporary project changes the next brief
272
- from 2 usable skills to 3 and moves `anthropic.docx` into the manual-allowed
273
- set. SkillBoard applies one approved change, then re-resolves the next state.
156
+ ## Development
274
157
 
275
- Run the proof with:
158
+ From a clone, replace `skillboard ` with `node bin/skillboard.mjs `.
276
159
 
277
160
  ```bash
278
- node --test test/readme-value-proof.test.mjs
161
+ npm install
162
+ npm run check
163
+ node bin/skillboard.mjs help
279
164
  ```
280
165
 
281
- See the [full reproducible proof](docs/value-proof.md) for exact commands,
282
- fixtures, and assertions.
283
-
284
- ## Where To Go Next
285
-
286
- - [AI skill routing goal](docs/ai-skill-routing-goal.md)
287
- - [Install and agent-layer setup](docs/install.md)
288
- - [First-time control flow](docs/user-flow.md)
289
- - [Capability routing](docs/routing.md)
290
- - [Command and config reference](docs/reference.md)
291
- - [Policy model](docs/policy-model.md)
292
- - [Capabilities](docs/capabilities.md)
293
- - [Skill variant lifecycle](docs/variant-lifecycle.md)
294
- - [Value proof](docs/value-proof.md)
295
- - [Source-profile adapters](docs/adapters.md)
296
- - [Rollout runbook](docs/rollout-runbook.md)
297
- - [Versioning and release rules](docs/versioning.md)
298
- - [Contributing](CONTRIBUTING.md)
166
+ Read [installation](docs/install.md), [user flow](docs/user-flow.md),
167
+ [policy model](docs/policy-model.md), [routing](docs/routing.md),
168
+ [reference](docs/reference.md), [versioning](docs/versioning.md), and the
169
+ [Rollout runbook](docs/rollout-runbook.md).
package/docs/adapters.md CHANGED
@@ -1,127 +1,51 @@
1
1
  # Adapter Model
2
2
 
3
- SkillBoard should not hardcode one adapter per popular repository.
4
-
5
- The core should stay generic, and repository-specific behavior should live in
6
- data-driven source profiles wherever possible.
3
+ Adapters discover skills and runtime components. They do not decide whether a
4
+ skill is available.
7
5
 
8
6
  ## Layers
9
7
 
10
- 1. Core scanners
11
-
12
- Generic code that understands common primitives:
13
-
14
- - `SKILL.md` folders with YAML frontmatter;
15
- - plugin or marketplace manifests;
16
- - package manager metadata;
17
- - known user/project install scopes;
18
- - command, hook, MCP, agent, and LSP component lists.
19
-
20
- 2. Source profiles
21
-
22
- Declarative profiles that describe how to interpret a source:
23
-
24
- ```yaml
25
- id: github.mattpocock.skills
26
- source: mattpocock/skills
27
- kind: marketplace
28
- namespace: matt
29
- target_path_prefix: matt
30
- default_status: vendor
31
- default_invocation: manual-only
32
- default_exposure: exported
33
- skill_paths:
34
- - "skills/**/SKILL.md"
35
- - "*/SKILL.md"
36
- category_path_segment: 1
37
- path_rules:
38
- - pattern: "skills/deprecated/**/SKILL.md"
39
- status: deprecated
40
- invocation: deprecated
41
- category: deprecated
42
- ```
43
-
44
- A profile can set namespace, default policy, component mapping, known manifest
45
- paths, category extraction, lifecycle overrides, and risk hints without
46
- requiring code changes.
47
-
48
- `category_path_segment` reads a slash-separated path segment from the matched
49
- `SKILL.md` path. For example, `skills/engineering/tdd/SKILL.md` with segment
50
- `1` becomes category `engineering`. `path_rules` apply first-match overrides
51
- for repository conventions such as `deprecated` or `in-progress` folders.
52
-
53
- 3. Detector plugins
54
-
55
- Code adapters are only for sources whose layout cannot be described
56
- declaratively, such as installers that mutate multiple config files or require
57
- command output parsing. These should be small detector modules that produce the
58
- same install-unit data model as profiles.
59
-
60
- ## Built-In Profiles Are Not Hardcoding
61
-
62
- SkillBoard can ship built-in profiles for popular ecosystems, but they should be
63
- treated as bundled data, not product logic. Users and communities should be able
64
- to add or override profiles without forking the CLI.
65
-
66
- Good built-ins:
67
-
68
- - `mattpocock/skills`: skill pack profile.
69
- - `code-yeongyu/oh-my-openagent`: harness/plugin bundle profile.
70
- - `anthropics/skills`: standard Agent Skills profile.
71
- - `wshobson/agents`: marketplace/plugin profile.
72
- - `VoltAgent/awesome-agent-skills`: catalog profile.
73
-
74
- Bad design:
75
-
76
- - `if repo === "mattpocock/skills"` branches in the import logic;
77
- - repo-specific policy decisions embedded in TypeScript;
78
- - automatic global activation because a known repository was installed.
79
-
80
- ## Import Output Contract
81
-
82
- Every profile or detector should output the same normalized shape:
83
-
84
- - install units;
85
- - declared skills;
86
- - owner links via `owner_install_unit`;
87
- - component lists;
88
- - guessed capabilities;
89
- - default invocation and exposure;
90
- - warnings and decisions requiring user approval.
91
-
92
- Current CLI surface:
93
-
94
- ```bash
95
- skillboard import \
96
- --profile github.mattpocock.skills \
97
- --source-root /path/to/source \
98
- --out .skillboard/reports/import-fragment.yaml
8
+ 1. Core scanners read common `SKILL.md`, manifest, package, and component shapes.
9
+ 2. Source profiles describe repository paths and stable id mapping as data.
10
+ 3. Detector plugins handle installers whose layout cannot be expressed by a
11
+ profile.
12
+
13
+ Every layer produces deterministic generated inventory. Source, provenance,
14
+ path, digest, aliases, install-unit, and runtime-component observations are
15
+ optional audit metadata and never determine availability.
16
+
17
+ ## Profile example
18
+
19
+ ```yaml
20
+ id: example-pack
21
+ source: example/skills
22
+ namespace: example
23
+ skill_paths:
24
+ - "skills/**/SKILL.md"
25
+ path_rules:
26
+ - pattern: "skills/deprecated/**/SKILL.md"
27
+ category: deprecated
99
28
  ```
100
29
 
101
- The command emits a config fragment rather than mutating policy automatically.
102
- This keeps the control plane reviewable while still avoiding hardcoded adapter
103
- branches.
30
+ Profiles may classify paths and describe components. They cannot enable,
31
+ disable, share, or unshare skills.
104
32
 
105
- When the fragment is acceptable, the same importer can merge it:
33
+ ## Import contract
106
34
 
107
35
  ```bash
108
- skillboard import \
109
- --profile github.mattpocock.skills \
110
- --source-root /path/to/source \
111
- --config skillboard.config.yaml \
112
- --merge \
113
- --dry-run
36
+ skillboard import --profile <id-or-path> --source-root <dir> --out <fragment>
37
+ skillboard import --profile <id-or-path> --source-root <dir> --config <path> --merge --dry-run
114
38
  ```
115
39
 
116
- Merge is append-only by default and refuses duplicate skill or install-unit ids.
117
- `--replace` is the explicit overwrite escape hatch. Drop `--dry-run` after
118
- reviewing the change plan.
119
-
120
- The reconciler then applies the same policy rules regardless of source.
40
+ Import and inventory refresh create a missing valid v2 entry as
41
+ `enabled: true`, `shared: false`, while preserving existing policy. Runtime and
42
+ action permission remains with the agent or
43
+ harness.
121
44
 
122
- ## Default Safety
45
+ This is a trust-neutral import: import does not review or approve a source and
46
+ does not authorize any runtime component. Audit observations remain
47
+ informational regardless of whether the fragment is only emitted or merged.
123
48
 
124
- New external skills should default to `vendor` or `candidate`, with
125
- `manual-only` or `router-only` invocation. Personal control skills can become
126
- `global-meta`, but external repositories should not gain `global-auto` through an
127
- adapter.
49
+ Historical profile fields that encoded status, mode, exposure, or source review
50
+ belong only to the v1 migration reader. New profiles must not emit them as
51
+ availability policy.