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/docs/install.md CHANGED
@@ -1,526 +1,77 @@
1
- # Install And Agent-Layer Setup
1
+ # Install and Setup
2
2
 
3
- SkillBoard sits one layer above skill installers, plugin marketplaces, harness
4
- bundles, and local skill repositories.
5
-
6
- After install, ask your AI normal work requests such as "write tests before
7
- implementation", "review this plan and point out weak assumptions", or "help me
8
- refine this UX flow." The AI runs SkillBoard behind the scenes only when skill
9
- choices overlap, workflow priority matters, or you explicitly ask for a
10
- SkillBoard or skill decision. Installed user skills are usable by default unless
11
- runtime, user, or local instructions disable them; SkillBoard should not turn
12
- every skill choice into a permission prompt. When it selects a skill, the AI
13
- should briefly say which skill it will use and which skill it used. You do not
14
- need to memorize the SkillBoard command loop.
15
-
16
- ## Install From npm
17
-
18
- Global install auto-runs agent integration. Installing the package makes the
19
- CLI available and the postinstall step runs agent-layer setup for detected
20
- Codex, Claude, OpenCode, and Hermes user skill roots. The setup is best-effort:
21
- it never fails the package install, does not edit agent config files, and does
22
- not create project policy files. It does not run `skillboard init`; run `init`
23
- only when maintaining an existing workspace that intentionally keeps local
24
- SkillBoard policy, bridge guidance, and reports.
25
-
26
- The published CLI supports Node.js 14.21 or newer. Node 12 and older are not
27
- supported without a transpiled bundle because the source uses modern ESM and
28
- syntax such as nullish coalescing.
29
-
30
- AI/automation/operator details:
3
+ ## Install from npm
31
4
 
32
5
  ```bash
33
6
  npm install -g agent-skillboard
7
+ skillboard --version
34
8
  ```
35
9
 
36
- If your system npm requires elevated permissions, this is also supported:
37
-
38
- ```bash
39
- sudo npm install -g agent-skillboard
40
- ```
41
-
42
- Under sudo, the postinstall setup resolves `SUDO_USER` and targets that user's
43
- agent homes instead of writing guidance under `/root`. The executable prefix is
44
- still decided by the npm command you run, so use the same npm/Node environment
45
- you expect to provide `skillboard` on `PATH`. Managed guidance files and
46
- directories written under the user's home are restored to the invoking user's
47
- `SUDO_UID:SUDO_GID` ownership.
48
-
49
- The install-time setup writes a user-level SkillBoard guidance skill under
50
- detected agent homes such as `CODEX_HOME`, `AGENTS_HOME`, `CLAUDE_HOME`,
51
- `OPENCODE_HOME`, and `HERMES_HOME`. Codex detection also checks
52
- `~/.agents/skills` and `~/.codex/skills`.
53
- If `~/.agents` exists but `~/.agents/skills` does not, setup creates the
54
- `skills` directory and installs the guidance skill there so Codex profiles that
55
- read the shared agent skill tree can see SkillBoard after restart.
56
- No separate setup command is required after a normal global install or update.
57
- When npm runs lifecycle scripts, package updates rerun the agent-home scan,
58
- refresh managed SkillBoard guidance files, and add newly detected supported
59
- agent roots.
60
-
61
- Run `skillboard setup` later when you add another supported agent, enable a new
62
- agent home, intentionally skipped lifecycle scripts, or need to repair the
63
- agent-layer guidance install:
64
-
65
- ```bash
66
- skillboard setup
67
- skillboard setup --agent codex,claude,opencode,hermes --yes
68
- ```
69
-
70
- After setup, the target agent can reuse a skill from another supported agent:
71
-
72
- ```bash
73
- skillboard import-skill --from codex --to opencode --skill <skill> --json
74
- ```
75
-
76
- If the source skill can be used as-is, the agent installs it with `--yes`. If
77
- SkillBoard reports `needs-adaptation`, the agent explains why, asks before
78
- changing the skill body for the target runtime, then installs the approved
79
- adapted file with `--adapted-file <path> --yes`.
10
+ Postinstall detects supported agent homes, installs managed guidance, creates
11
+ `~/skillboard.config.yaml`, and refreshes `~/.skillboard/inventory.json`. No
12
+ separate setup command is required after a normal global install or update, and
13
+ no project init is needed.
80
14
 
81
- Use no-prompt package execution when you want read-only help without keeping a
82
- global SkillBoard binary installed:
15
+ Run setup later only when lifecycle scripts were skipped or another agent was
16
+ added:
83
17
 
84
18
  ```bash
85
- npm exec --yes --package agent-skillboard -- skillboard --version
86
- npm exec --yes --package agent-skillboard -- skillboard help brief
87
- ```
88
-
89
- The explicit package/binary spelling avoids an extra install prompt and keeps
90
- the executable name clear.
91
-
92
- For repeated local use, install the CLI globally:
93
-
94
- AI/automation/operator details:
95
-
96
- ```bash
97
- npm install -g agent-skillboard
98
19
  skillboard setup --agent codex,claude,opencode,hermes --yes
99
20
  ```
100
21
 
101
- The executable remains `skillboard` even though the npm package name is
102
- `agent-skillboard`.
22
+ System npm may require `sudo npm install -g agent-skillboard`. SkillBoard uses
23
+ `SUDO_USER` for user-level state and restores managed files to that user.
103
24
 
104
- ## Deprecated Project Policy Mode
25
+ ## Default behavior
105
26
 
106
- `skillboard init` is deprecated project-local policy bootstrap and is not
107
- needed for normal use. Package install, postinstall, and `skillboard setup`
108
- connect SkillBoard at the agent layer without creating project files.
109
-
110
- The command remains available for existing workspaces that intentionally keep
111
- local `skillboard.config.yaml`, `.skillboard/`, `AGENTS.md`, or `CLAUDE.md`
112
- policy files. If you maintain one of those workspaces, inspect `skillboard help
113
- init`, then run `skillboard init` from that workspace or pass `--dir`.
27
+ A valid installed skill defaults to enabled and agent-local. Sharing is opt-in
28
+ per skill:
114
29
 
115
30
  ```bash
116
- npm exec --yes --package agent-skillboard -- skillboard help init
31
+ skillboard skill share <skill-id>
32
+ skillboard skill unshare <skill-id>
117
33
  ```
118
34
 
119
- ## Run Unreleased Builds From GitHub
120
-
121
- Use GitHub npx only when you intentionally want the current repository state
122
- before the next npm release:
35
+ Sharing preserves agent-owned originals. Source and provenance are optional
36
+ audit metadata and never determine availability. Runtime and action
37
+ authorization are outside SkillBoard's scope.
123
38
 
124
- AI/automation/operator details:
39
+ ## From GitHub or a clone
125
40
 
126
41
  ```bash
127
42
  npx --yes --package github:NyXXiR/skillboard skillboard --version
128
- npx --yes --package github:NyXXiR/skillboard skillboard help
129
- ```
130
-
131
- The equivalent `npm exec` spelling is explicit about the package and binary:
132
-
133
- ```bash
134
- npm exec --yes --package github:NyXXiR/skillboard -- skillboard --version
135
43
  npm exec --yes --package github:NyXXiR/skillboard -- skillboard help
136
- ```
137
-
138
- ## Install From A Clone
139
-
140
- Use a clone when developing SkillBoard itself or testing unreleased changes:
141
-
142
- AI/automation/operator details:
143
-
144
- ```bash
145
44
  git clone https://github.com/NyXXiR/skillboard.git
146
45
  cd skillboard
147
46
  npm install
148
- node bin/skillboard.mjs --version
149
47
  node bin/skillboard.mjs help
150
48
  ```
151
49
 
152
- ## What Deprecated init Does
153
-
154
- `skillboard init` is the legacy local policy-file generation step. npm
155
- installation and `skillboard setup` do not modify a project, but init still
156
- creates local files for teams that intentionally keep workflow policy in an
157
- existing workspace.
158
-
159
- Created project files:
160
-
161
- - `skillboard.config.yaml`: desired state for workflows, capabilities, skills,
162
- harnesses, and install units.
163
- - `skills/`: local skill root.
164
- - `.skillboard/reports/`: generated dashboard and reconcile output location.
165
- - `.skillboard/profiles/`: project-specific source profile location.
166
- - `AGENTS.md`: Codex-style project instruction bridge.
167
- - `CLAUDE.md`: Claude Code project instruction bridge.
168
-
169
- The bridge block is marked with `BEGIN SKILLBOARD` / `END SKILLBOARD` and is
170
- idempotent. Running init again does not duplicate it.
171
-
172
- By default, init scans known local agent skill roots such as Codex user skills,
173
- Codex system skills, Codex plugin-cache manifests, Claude user skills, Hermes
174
- user skills, and Hermes profile skills under `.hermes/profiles/*/skills`.
175
- Trusted user-local skills are written as `status: active` with `invocation:
176
- manual-only` and attached to a generated local manual workflow when the project
177
- has no workflow metadata yet. That lets a first-time user keep their existing
178
- manual skills usable through `skillboard can-use` and guard checks without
179
- granting automatic model invocation or creating legacy-state warning noise.
180
- System, plugin, and other runtime-supplied skills are written with `status:
181
- quarantined` and `invocation: blocked`. Plugin hooks, MCP servers, commands, and
182
- modified config files are recorded on the owning install unit when manifest
183
- metadata exposes them, which lets policy checks flag high-risk runtime
184
- extensions without flattening them into loose skills. After the owning source is
185
- reviewed, action cards can activate a quarantined runtime skill into a workflow
186
- as `manual-only`; automatic preference should still be remembered later through
187
- the normal ask-after-use policy loop. Use `--no-scan-installed` for a
188
- scaffold-only initialization, or `--scan-root <dir>[,<dir>]` to add
189
- server-specific skill roots during initialization.
190
-
191
- After init, run:
192
-
193
- ```bash
194
- skillboard doctor --dir /path/to/your/project
195
- ```
196
-
197
- Doctor is read-only. It reports config validity, bridge block status, managed
198
- skills and install units, policy/source audit health, high-risk runtime
199
- extensions, and the default uninstall dry-run plan. The default exit code stays
200
- zero when the project is usable but has review-needed safe-mode warnings, such as
201
- an unreviewed runtime extension. Add `--strict` when those warnings should fail a
202
- CI or automation gate. Use `--json` for an agent-readable health payload, or
203
- `--verify` when local source/cache digests should be checked as part of the
204
- report. `skillboard status` is the same report under a shorter command name.
205
-
206
- For AI-mediated use, the generated bridge tells agents to answer availability
207
- questions by reading the current brief with `skillboard brief --json`, not from
208
- memory or from raw `SKILL.md` bodies. The brief is read-only and organizes the
209
- response around "What your AI can use now", decisions the user can make once,
210
- hard safety blocks, inactive installed skills, and suggested action cards. Text
211
- briefs show action cards by default; JSON keeps them opt-in with
212
- `--include-actions`. The default text brief is compact for large skill sets: it
213
- keeps counts, top categories, the next safe action, short section previews, and
214
- short action summaries. Use `skillboard brief --verbose` when an operator needs
215
- the full list or full copyable command details. Agents should still run
216
- `skillboard guard use ...` immediately before an actual skill invocation. A
217
- passing guard is not a user prompt; the agent should disclose the selected skill
218
- at the start and completion, and ask only if the guard denies use or a
219
- policy-changing action is needed.
220
-
221
- When a normal request leaves skill choice ambiguous, several skills overlap,
222
- workflow priority matters, or the user asks for a SkillBoard or skill decision,
223
- the bridge tells agents to use `skillboard brief --intent <request> --json`,
224
- read `assistant_guidance.route`, and use `recommended_skill`, `fallback_skills`,
225
- `route_candidates`, `overlap_resolution`, `policy_memory`,
226
- `post_use_policy_suggestion`, and `guard_command` instead of guessing from raw
227
- skill text. Inspect
228
- `overlap_resolution` and `route_candidates` when several skills match so
229
- allowed overlap, denied candidates, and selected fallbacks are clear. If
230
- `policy_memory` is present, the agent should mention after completion that
231
- remembered or configured policy selected this skill even though other allowed
232
- skills were available. If
233
- `post_use_policy_suggestion` is present, the agent should use the allowed
234
- routed skill first, then ask after completion whether to remember the suggested
235
- policy. If no skill matches, the agent should ask a clarifying question before
236
- choosing a skill. If the user explicitly requests a specific already-allowed
237
- skill, the agent should honor that request after guard use instead of rerouting
238
- away solely because another skill also matches.
239
-
240
- Action cards are change suggestions. Before an agent applies one that changes
241
- policy, trust, hooks, reset state, or skill references, it should request user
242
- confirmation for one current action id from the brief. After confirmation, it should run
243
- `skillboard apply-action <action-id> --config skillboard.config.yaml --skills skills --yes --json`
244
- with `--workflow <name>` when a workflow is selected. It should then read the
245
- returned post-apply brief before answering another availability question or
246
- applying another action card. `apply-action` re-resolves current action cards,
247
- so stale action ids and cached action-card shell text are not replayed.
248
- For hook action cards specifically, keep `apply-action` as the action-card
249
- primary flow. Raw `skillboard hook install ... --dry-run --json` previews and
250
- the matching non-dry-run command are underlying manual detail for operators who
251
- need to inspect or materialize an executable guard hook directly. Generated hooks
252
- pin the install-time SkillBoard command, config, skills root, and workflow; set
253
- those values with hook install options such as `--skillboard-bin`, not with
254
- runtime environment overrides.
255
-
256
- ## Hermes System Prompt Bridge
257
-
258
- Hermes does not automatically read `AGENTS.md` or `CLAUDE.md`. If you want a
259
- Hermes profile to follow SkillBoard policy, add this bridge to the profile or
260
- system prompt for the managed project:
261
-
262
- ```text
263
- Use SkillBoard as the source of truth for agent skill availability.
264
- Use the workflow generated by init, such as `hermes-codex-local-manual`, or a
265
- workflow you explicitly created for that Hermes profile.
266
-
267
- Before answering what skills can be used in that workflow, run:
268
- skillboard brief --workflow <workflow-name> --json --include-actions --dir /path/to/your/project
269
-
270
- When a normal request leaves skill choice ambiguous, several skills overlap,
271
- workflow priority matters, or the user asks for a SkillBoard or skill decision,
272
- run:
273
- skillboard brief --workflow <workflow-name> --intent <request> --json --dir /path/to/your/project
274
- Read assistant_guidance.route. Use recommended_skill, fallback_skills,
275
- route_candidates, overlap_resolution, policy_memory,
276
- post_use_policy_suggestion, and guard_command. Inspect overlap_resolution and
277
- route_candidates when several skills match so allowed overlap, denied
278
- candidates, and selected fallbacks are clear. If policy_memory is present,
279
- mention after completion that remembered or configured policy selected this
280
- skill even though other allowed skills were available. If
281
- post_use_policy_suggestion is present, use the allowed routed skill first, then
282
- ask after completion whether to remember the suggested policy. If no skill
283
- matches, ask a clarifying question before choosing a skill.
284
-
285
- If the user explicitly requests a specific already-allowed skill, honor that
286
- request after guard use instead of rerouting away solely because another skill
287
- also matches.
288
-
289
- Do not infer availability from installed SKILL.md files. Immediately before
290
- invoking a skill, run:
291
- skillboard guard use <skill-id> --workflow <workflow-name> --dir /path/to/your/project
292
-
293
- If the guard allows an already-approved skill, do not ask the user for another
294
- approval. Say at the start: "I will use <skill-id> for this request." Say at
295
- completion: "I used <skill-id> for this request." Treat that disclosure as an
296
- audit trace, not a permission prompt.
297
-
298
- For suggested policy changes, ask the user to approve one current action id from
299
- the `--include-actions` brief, then run:
300
- skillboard apply-action <action-id> --workflow <workflow-name> --dir /path/to/your/project --yes --json
301
- ```
302
-
303
- After installing a new local agent skill pack, plugin, workflow bundle, or
304
- harness, rescan before enabling anything:
305
-
306
- ```bash
307
- skillboard inventory refresh --dir /path/to/your/project --dry-run
308
- skillboard inventory refresh --dir /path/to/your/project
309
- ```
310
-
311
- The refresh command reuses the init scanner. If no workflows exist yet, trusted
312
- user-local skills are attached to a generated local manual workflow. If workflows
313
- already exist, those skills are imported as manual-only candidates with a review
314
- note instead of being attached to an arbitrary workflow. Runtime components
315
- remain attached to the owning install unit for review, and non-user runtime
316
- skills stay out of automatic use until a source/workflow decision is recorded.
317
- Dry-run output includes a capped YAML semantic change list, while broken
318
- detector entries or malformed `SKILL.md` files are surfaced as scan warnings
319
- instead of aborting the whole refresh.
320
-
321
- Add a new workflow or harness without editing YAML by hand:
322
-
323
- ```bash
324
- skillboard add harness codex --config skillboard.config.yaml --skills skills
325
- skillboard add workflow daily-workflow \
326
- --harness codex \
327
- --skill user.helper \
328
- --config skillboard.config.yaml \
329
- --skills skills
330
- ```
331
-
332
- If an installer mutates runtime config without a manifest, parse its output and
333
- the mutated config files into the owning install unit before enabling anything:
334
-
335
- ```bash
336
- skillboard inventory detect \
337
- --unit acme.runtime \
338
- --config /path/to/your/project/skillboard.config.yaml \
339
- --install-output /path/to/install.log \
340
- --config-file ~/.codex/config.toml \
341
- --dry-run
342
- ```
50
+ For source-tree commands, replace `skillboard ` with
51
+ `node bin/skillboard.mjs `.
343
52
 
344
- The detector records discovered commands, hooks, MCP servers, and modified
345
- config files under `install_units.<id>`, then updates `permission_risk` from the
346
- detected runtime surface.
53
+ Hermes should read only explicitly shared or Hermes-installed skills, not the
54
+ entire Codex skill tree.
347
55
 
348
- For fetchable Git sources, refresh the project cache and digest pin before
349
- writing a lockfile:
56
+ ## Version 1 projects
350
57
 
351
58
  ```bash
352
- skillboard sources refresh --dir /path/to/your/project --unit github.mattpocock.skills --dry-run
353
- skillboard sources refresh --dir /path/to/your/project --unit github.mattpocock.skills
354
- skillboard audit sources \
355
- --config /path/to/your/project/skillboard.config.yaml \
356
- --skills /path/to/your/project/skills \
357
- --verify
59
+ skillboard migrate v2 --config <path> --json
60
+ skillboard migrate v2 --config <path> --yes --json
61
+ skillboard migrate v2 --config <path> --rollback <backup> --json
358
62
  ```
359
63
 
360
- `sources refresh` supports direct Git URLs, `git clone <url>` command strings,
361
- GitHub `org/repo` shorthands, and `file://` Git remotes. It writes the refreshed
362
- checkout under `.skillboard/sources/<install-unit-id>`, updates `cache_path`,
363
- `source_digest`, and `verified_at`, and leaves the config untouched on dry-run.
64
+ Version 1 is read-only during v0.3.x. v0.4.0 removes the v1 reader.
364
65
 
365
- ## Uninstall Agent Guidance Or Project State
366
-
367
- Package removal, agent guidance cleanup, and project cleanup are intentionally
368
- separate. `npm uninstall -g agent-skillboard` removes the CLI package, but npm
369
- uninstall should not be relied on to edit agent homes or projects. If you want
370
- the postinstall-created user-agent guidance removed, run the agent-layer cleanup
371
- while the `skillboard` binary is still available:
66
+ ## Uninstall
372
67
 
373
68
  ```bash
374
- skillboard uninstall --agent-layer --dry-run
375
- skillboard uninstall --agent-layer
69
+ skillboard uninstall --user --dry-run
70
+ skillboard uninstall --user --yes
376
71
  npm uninstall -g agent-skillboard
377
72
  ```
378
73
 
379
- Agent-layer uninstall removes only managed `skillboard/SKILL.md` guidance files
380
- that contain SkillBoard's agent integration marker. It preserves other agent
381
- skills and user-authored `skillboard` skills that do not contain that marker.
382
- Use `--agent codex,claude,opencode,hermes` to target specific supported agents.
383
-
384
- Use the project cleanup command when you want to remove SkillBoard from a
385
- project:
386
-
387
- ```bash
388
- skillboard uninstall --dir /path/to/your/project --dry-run
389
- skillboard uninstall --dir /path/to/your/project
390
- ```
391
-
392
- Default project uninstall is a clean removal:
393
-
394
- - removes SkillBoard config, bridge blocks, and the entire `.skillboard/`
395
- project state directory;
396
- - deletes a bridge file only when it has no user content left;
397
- - preserves user-authored non-SkillBoard content in `AGENTS.md` and
398
- `CLAUDE.md`;
399
- - preserves local `skills/*/SKILL.md` files because skill creation and deletion
400
- are outside the uninstall scope.
401
-
402
- Use `--keep-settings` only when you want to keep project SkillBoard policy and
403
- bridge guidance in place:
404
-
405
- ```bash
406
- skillboard uninstall --dir /path/to/your/project --keep-settings --dry-run
407
- skillboard uninstall --dir /path/to/your/project --keep-settings
408
- ```
409
-
410
- `--keep-settings` preserves `skillboard.config.yaml`, project bridge guidance,
411
- reports, generated guard hooks, and modified project state. It is the explicit
412
- opt-in when project policy and guidance should survive package cleanup.
413
-
414
- `--purge` is still accepted as an explicit spelling for the default clean
415
- project removal. Default removal and `--purge` both remove `.skillboard/`,
416
- including reports, hooks, source caches, rollout logs, variant snapshots, and
417
- profiles.
418
-
419
- The older granular flags are still supported for scripts that assembled cleanup
420
- piecemeal. Passing `--remove-config`, `--reset-config`, `--remove-reports`, or
421
- `--remove-hooks` without `--purge` runs a partial cleanup instead of the default
422
- clean project removal:
423
-
424
- - `--remove-config` deletes `skillboard.config.yaml` only when it still matches
425
- the generated default;
426
- - `--reset-config` deletes `skillboard.config.yaml` even when it contains policy
427
- choices;
428
- - `--remove-reports` deletes `.skillboard/reports/`;
429
- - `--remove-hooks` deletes `.skillboard/hooks/`.
430
-
431
- For ordinary users, the default project uninstall is already the clean reset that
432
- removes SkillBoard-owned lifecycle scaffolding while preserving local `skills/`.
433
-
434
- ## Upper-Layer Control
435
-
436
- After installing skill packs or harness bundles, represent them as install
437
- units:
438
-
439
- ```bash
440
- skillboard import \
441
- --profile github.mattpocock.skills \
442
- --source-root /path/to/mattpocock-skills \
443
- --out .skillboard/reports/mattpocock-import.yaml
444
- ```
445
-
446
- The import output is a reviewable YAML fragment. Merge the accepted `skills` and
447
- `install_units` into `skillboard.config.yaml`; imported skills stay inactive
448
- until workflows and policies explicitly use them.
449
-
450
- For a direct but still safe apply path:
451
-
452
- ```bash
453
- skillboard import \
454
- --profile github.mattpocock.skills \
455
- --source-root /path/to/mattpocock-skills \
456
- --config skillboard.config.yaml \
457
- --merge \
458
- --dry-run
459
- ```
460
-
461
- `--merge` refuses to overwrite existing `skills` or `install_units`. Add
462
- `--replace` only when you intentionally want the imported source profile to
463
- replace those entries. The merge uses a structured YAML writer that keeps normal
464
- comments and ordering where possible, but review the diff before committing
465
- hand-edited formatting. Drop `--dry-run` only after the reported text and YAML
466
- semantic change plan is acceptable.
467
-
468
- After reviewing source ownership, expected components, and risk, record the
469
- install-unit trust decision without editing YAML by hand:
470
-
471
- ```bash
472
- skillboard review install-unit github.mattpocock.skills \
473
- --trust-level reviewed \
474
- --config skillboard.config.yaml \
475
- --skills skills
476
- ```
477
-
478
- Automatic invocation remains blocked for unreviewed non-user sources. The user
479
- experience should still be a one-time decision queue: review, trust, or block
480
- the install unit once, activate only the needed quarantined skills as
481
- manual-only, then revisit only when the source, skill, or workflow changes.
482
-
483
- ```yaml
484
- install_units:
485
- github.mattpocock.skills:
486
- kind: marketplace
487
- source: npx skills@latest add mattpocock/skills
488
- scope: user-global
489
- provided_components:
490
- - skills
491
- components:
492
- skills:
493
- - matt.tdd
494
- ```
495
-
496
- Then link each governed skill back to its owner:
497
-
498
- ```yaml
499
- skills:
500
- matt.tdd:
501
- path: matt/tdd
502
- status: active
503
- invocation: workflow-auto
504
- exposure: exported
505
- owner_install_unit: github.mattpocock.skills
506
- ```
507
-
508
- Run:
509
-
510
- ```bash
511
- skillboard check --config skillboard.config.yaml --skills skills
512
- skillboard dashboard --config skillboard.config.yaml --skills skills --out .skillboard/reports/skill-map.md
513
- ```
514
-
515
- This keeps multiple installed repositories visible as managed units instead of
516
- turning every skill into a global invocation candidate.
517
-
518
- ## Adapter Direction
519
-
520
- Import support should be profile-driven, not hardcoded. A popular source such as
521
- `mattpocock/skills` or `oh-my-openagent` may ship with a built-in source profile,
522
- but that profile should be data that maps repository layout and defaults into the
523
- same install-unit model. Source-specific code should be limited to detector
524
- plugins for layouts that cannot be described declaratively.
525
-
526
- See [adapters.md](adapters.md).
74
+ User-level cleanup removes marker-owned shared copies, managed SkillBoard
75
+ guidance, `~/skillboard.config.yaml`, and `~/.skillboard`. It preserves
76
+ agent-owned and unmanaged skills. Apply requires `--yes`; legacy project cleanup
77
+ and guidance-only `--agent-layer` cleanup remain explicit and previewable.