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/routing.md CHANGED
@@ -1,100 +1,33 @@
1
- # Capability Routing
1
+ # Routing
2
2
 
3
- Capability routing helps an AI choose a skill for the user's current request
4
- without making the user learn SkillBoard commands.
3
+ Routing chooses among skills already available to the current agent. Guard
4
+ decides availability from valid generated inventory, `enabled`, and
5
+ `installed_on`; routing cannot override that verdict.
5
6
 
6
- SkillBoard is intentionally permissive at this layer: workflow-bound skills can
7
- remain broadly available, and routing only chooses the skill that should steer
8
- this request. When several allowed skills match, the response includes
9
- `overlap_resolution` so the AI can explain that the other skills stayed
10
- available while the workflow routed to one selected skill.
7
+ ## Resolution order
11
8
 
12
- For the normal AI-mediated flow, prefer `brief --intent`. It returns the
13
- availability brief and the routing result together:
9
+ 1. Remove skills missing valid inventory records.
10
+ 2. Remove disabled skills.
11
+ 3. Remove skills not installed for the selected agent.
12
+ 4. Honor an explicit user-selected skill if it remains eligible.
13
+ 5. Rank intent matches by optional preference and priority.
14
+ 6. Return one recommendation and ordered fallbacks.
14
15
 
15
- ```bash
16
- skillboard brief \
17
- --intent "write tests before implementation" \
18
- --workflow codex-night-workflow \
19
- --config skillboard.config.yaml \
20
- --skills skills \
21
- --json
22
- ```
23
-
24
- Read `assistant_guidance.route` from the JSON output. It includes:
25
-
26
- - `matched_capability`
27
- - `match_source`
28
- - `confidence`
29
- - `matched_terms`
30
- - `recommendation_reason`
31
- - `recommended_skill`
32
- - `fallback_skills`
33
- - `route_candidates`
34
- - `overlap_resolution`
35
- - `policy_memory`
36
- - `post_use_policy_suggestion`
37
- - `guard_command`
38
- - `usage_disclosure`
39
-
40
- When `guard_allowed` is true, the AI should run the guard automatically before
41
- using the skill. It should not ask for another approval. It should disclose the
42
- skill at the start and at completion:
43
-
44
- ```text
45
- I will use <skill-id> for this request.
46
- I used <skill-id> for this request.
47
- ```
48
-
49
- When several skills match, inspect `route_candidates` before acting. Each entry
50
- shows the candidate skill, whether it was selected, whether the guard currently
51
- allows it, and the guard reason when it is denied. This is the field that tells
52
- an AI why a preferred skill was skipped and an allowed fallback was selected.
53
- Inspect `overlap_resolution` first when it is present: `status: resolved` with
54
- `mode: permissive-routing` means multiple allowed skills matched, SkillBoard
55
- kept them available, and the current workflow still has one deterministic route.
56
- When `policy_memory` is present, remembered or configured workflow policy
57
- selected the routed skill while other allowed skills were also available. The AI
58
- should mention that after completion so the user knows a stored policy
59
- preference shaped the route.
60
-
61
- When routing is safe but policy learning would reduce future ambiguity,
62
- SkillBoard may return `post_use_policy_suggestion`. This includes cases where a
63
- preferred skill is denied and an allowed fallback is selected, or where multiple
64
- allowed workflow-bound skills match and one allowed skill is selected
65
- deterministically. The AI should keep the task moving with the allowed routed
66
- skill, then ask after completion whether to remember that skill as the preferred
67
- workflow policy. The suggested policy command is informational until the user
68
- confirms it.
69
-
70
- Use `route` directly when an automation layer only needs the recommendation
71
- payload:
16
+ Preference ranks only and never changes availability.
72
17
 
73
18
  ```bash
74
- skillboard route "write tests before implementation" \
75
- --workflow codex-night-workflow \
76
- --config skillboard.config.yaml \
77
- --skills skills \
78
- --json
19
+ skillboard brief --intent "write tests" --agent codex --json
20
+ skillboard route "write tests" --agent codex --json
21
+ skillboard guard use test-first --agent codex --json
79
22
  ```
80
23
 
81
- Routing first matches declared workflow capabilities. If the workflow has skill
82
- bindings but no matching capability, it can fall back to workflow-bound skill
83
- metadata such as id, path, category, `SKILL.md` name, and `SKILL.md`
84
- description.
85
-
86
- Routing does not invoke the skill. The final boundary is still:
87
-
88
- ```bash
89
- skillboard guard use <skill-id> \
90
- --workflow codex-night-workflow \
91
- --config skillboard.config.yaml \
92
- --skills skills
93
- ```
24
+ These commands use `~/skillboard.config.yaml` and
25
+ `~/.skillboard/inventory.json` from any working directory. Advanced
26
+ `--config` and `--skills` overrides remain available for migration, testing,
27
+ and legacy workspaces.
94
28
 
95
- If no capability or workflow-bound skill matches, SkillBoard returns
96
- `recommended_skill: null`. Ask a clarifying question before choosing a skill.
29
+ When guard allows use, continue without another approval. Ask after completion
30
+ only when remembering a preference would reduce future ambiguity.
97
31
 
98
- See [Value proof](value-proof.md) for an executable route example that selects
99
- `matt.tdd`, returns `private.tdd-work-continuity` as fallback, and verifies the
100
- guard and disclosure fields.
32
+ Source and provenance findings are optional audit metadata and never determine
33
+ availability. Runtime and action authorization are outside SkillBoard's scope.
package/docs/user-flow.md CHANGED
@@ -1,325 +1,101 @@
1
- # First-Time Skill Control Flow
1
+ # User Flow
2
2
 
3
- This flow assumes a user installed SkillBoard so their AI can keep installed
4
- skills broadly available while resolving confusing overlap only when it matters.
3
+ SkillBoard is a user-level control plane, not a per-project setup step. Users
4
+ enable or disable skills and may opt individual skills into cross-agent sharing.
5
+ Installed skills default to enabled and agent-local.
5
6
 
6
- When you 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 should work normally. SkillBoard becomes relevant
9
- when skill choice is ambiguous, several skills overlap, workflow priority
10
- matters, or you explicitly ask for a SkillBoard or skill decision such as "what
11
- skills can you use here?" or "make this reviewed skill available for this
12
- workflow." In those cases, the AI should read the current brief, show the
13
- relevant choice, ask only before applying one current action id when policy
14
- would change, and run the final guard automatically before invocation. For an
15
- already-allowed skill, the AI should state which skill it is about to use and
16
- which skill it used when reporting the result, not ask for another approval.
17
- That disclosure is an audit trace, not a permission prompt. If you explicitly
18
- ask for a specific already-allowed skill, the AI should honor that request after
19
- guard use instead of rerouting away solely because another skill also matches.
20
- You do not need to memorize the SkillBoard command loop. The command examples
21
- below are AI/automation/operator details for the agent, scripts, or people
22
- maintaining the setup.
23
-
24
- If you ask OpenCode to use a skill you previously used in Codex, the target
25
- agent should call:
26
-
27
- ```bash
28
- skillboard import-skill --from codex --to opencode --skill <skill> --json
29
- ```
30
-
31
- Compatible skills are installed into the target agent's user skill root. When
32
- the source is agent-specific, the agent should explain the compatibility issue
33
- and ask before producing a target-agent adapted `SKILL.md`.
34
-
35
- Before changing this routing or workflow UX, read
36
- [`docs/ai-skill-routing-goal.md`](ai-skill-routing-goal.md). The goal is to keep
37
- SkillBoard non-blocking: observe the request, route to the current best skill,
38
- work normally, explain briefly, ask after use only when a policy preference would
39
- help, and remember that usage policy without rewriting skill bodies.
40
-
41
- ## 1. Start From Agent-Layer Setup
42
-
43
- AI/automation/operator details:
44
-
45
- ```bash
46
- skillboard setup --agent codex,claude,opencode,hermes --yes
47
- ```
48
-
49
- Package install and `skillboard setup` write user-agent guidance only. They do
50
- not create `skillboard.config.yaml`, `.skillboard/`, `AGENTS.md`, or
51
- `CLAUDE.md` in projects. `skillboard init` is deprecated project-local policy
52
- bootstrap and is not needed for normal use; use it only when maintaining an
53
- existing workspace that intentionally keeps local SkillBoard policy files. Use
54
- `skillboard doctor --strict` only for an existing policy workspace when
55
- review-needed safe-mode warnings should fail automation.
56
-
57
- When the user asks the agent what it can use, the agent should read the current
58
- brief with `skillboard brief --json` first and answer from the brief rather than
59
- reading skill files directly. The user-facing text output uses sections such as
60
- "What your AI can use now", "Needs your decision", and "Blocked for safety";
61
- text briefs include previewable action cards by default, while the JSON form
62
- keeps action cards opt-in. For large skill sets, the default text brief stays
63
- compact: counts, top categories, next safe action, short previews per section,
64
- and short action summaries. Use `skillboard brief --verbose` when an operator
65
- needs every skill and full copyable command details. Those action cards are
66
- suggestions only: the agent should pick one current action id from the brief,
67
- request confirmation before applying risk-bearing changes, then run
68
- `skillboard apply-action <action-id> --config skillboard.config.yaml --skills skills --yes --json`
69
- with `--workflow <name>` when a workflow is selected. The agent should read the
70
- returned post-apply brief before making the next availability claim.
71
- `apply-action` re-resolves the current brief and refuses stale action ids instead
72
- of replaying cached action-card shell text.
73
-
74
- When a normal request leaves skill choice ambiguous, several skills overlap,
75
- workflow priority matters, or the user asks for a SkillBoard or skill decision,
76
- the agent can keep the same brief flow and include the user request as intent:
77
-
78
- ```bash
79
- skillboard brief --intent "write tests before implementation" --workflow daily-workflow --config skillboard.config.yaml --skills skills --json
80
- ```
81
-
82
- The returned `assistant_guidance.route` maps the request to a declared workflow
83
- capability or a workflow-bound skill metadata match, returns the recommended
84
- skill and fallbacks, and includes `match_source`, `matched_terms`,
85
- `recommendation_reason`, `route_candidates`, `overlap_resolution`,
86
- `policy_memory`,
87
- `post_use_policy_suggestion`, and the `skillboard guard use ...` command that
88
- still needs to pass immediately before invocation. `overlap_resolution`
89
- summarizes permissive routing when several allowed skills match.
90
- `route_candidates` is the per-skill decision trace: it shows which matching
91
- skill was selected, which candidates were denied, and the guard reason when a
92
- preferred skill was skipped for an allowed fallback.
93
- `policy_memory` appears when remembered or configured workflow policy selected
94
- the routed skill while other allowed skills were also available; the agent
95
- should mention that after completion so the user understands the prior choice
96
- shaped the route.
97
- `post_use_policy_suggestion` is the ask-after-use hook: if it is present, the
98
- agent should use the allowed routed skill first, then ask after completion
99
- whether to remember the suggested preference. Metadata matching can
100
- use declared skill id, path, category, and `SKILL.md` frontmatter
101
- name/description; it does not semantically rank raw skill bodies. If a
102
- recommended skill is already allowed, the agent should disclose it at the start
103
- and completion rather than ask for another approval. If the user explicitly
104
- requests a specific already-allowed skill, the agent should honor that request
105
- after guard use instead of rerouting away solely because another skill also
106
- matches. If no capability or workflow-bound skill matches, the agent should ask
107
- a clarifying question instead of guessing from raw `SKILL.md` text. Operators can still call
108
- `skillboard route ...` directly when they only need the recommendation payload.
109
-
110
- Run this again after installing agent packages, plugins, workflow bundles, or
111
- harnesses:
112
-
113
- ```bash
114
- skillboard inventory refresh --dry-run
115
- skillboard inventory refresh
116
- ```
117
-
118
- ## 2. Add A User-Owned Skill
119
-
120
- AI/automation/operator details:
121
-
122
- Create the skill under the project `skills/` directory:
123
-
124
- ```bash
125
- mkdir -p skills/user-helper
126
- $EDITOR skills/user-helper/SKILL.md
127
- ```
128
-
129
- Register it without making it callable yet:
130
-
131
- ```bash
132
- skillboard add skill user.helper \
133
- --path user-helper \
134
- --config skillboard.config.yaml \
135
- --skills skills \
136
- --dry-run
137
-
138
- skillboard add skill user.helper \
139
- --path user-helper \
140
- --config skillboard.config.yaml \
141
- --skills skills
142
- ```
143
-
144
- The dry run reports semantic YAML changes and leaves the config untouched. The
145
- real command adds the skill as a direct user-owned `candidate` by default.
146
-
147
- Create a workflow or harness for the skill without hand-editing YAML:
7
+ ## 1. Install and ask normally
148
8
 
149
9
  ```bash
150
- skillboard add harness codex \
151
- --config skillboard.config.yaml \
152
- --skills skills
153
-
154
- skillboard add workflow daily-workflow \
155
- --harness codex \
156
- --skill user.helper \
157
- --config skillboard.config.yaml \
158
- --skills skills
10
+ npm install -g agent-skillboard
159
11
  ```
160
12
 
161
- When `add workflow` attaches a `candidate` / `manual-only` skill, it promotes the
162
- skill to `active` with `invocation: manual-only` for that workflow. It still
163
- does not grant automatic model invocation.
164
-
165
- ## 3. Inspect Influence Before Use
166
-
167
- AI/automation/operator details:
13
+ Postinstall creates `~/skillboard.config.yaml`, refreshes
14
+ `~/.skillboard/inventory.json`, and installs managed guidance for detected
15
+ agents. No project init is needed. If setup was skipped:
168
16
 
169
17
  ```bash
170
- skillboard explain user.helper \
171
- --config skillboard.config.yaml \
172
- --skills skills
173
-
174
- skillboard can-use user.helper \
175
- --workflow daily-workflow \
176
- --config skillboard.config.yaml \
177
- --skills skills
178
-
179
- skillboard impact disable user.helper \
180
- --config skillboard.config.yaml \
181
- --skills skills \
182
- --out .skillboard/reports/user-helper-impact.md
18
+ skillboard setup --yes --agent codex
183
19
  ```
184
20
 
185
- `explain` shows source class, trust, owner install unit, workflow roles, and
186
- capability roles. `can-use` is the machine-readable gate for agents. `impact`
187
- shows which workflows and required outputs would be affected before disabling or
188
- removing a skill.
189
-
190
- For an actual invocation, `brief` is not the final permission check. Agents
191
- should run `skillboard guard use ...` automatically immediately before calling a
192
- skill so state changes made after the brief cannot slip through. A passing guard
193
- does not require another user prompt; the agent should disclose the skill use at
194
- the start and in the final result. That disclosure is an audit trace, not a
195
- permission prompt.
196
-
197
- When wiring a guard hook from an action card, keep `apply-action` as the
198
- action-card primary flow:
199
-
200
- ```bash
201
- skillboard apply-action <action-id> --workflow daily-workflow --config skillboard.config.yaml --skills skills --yes --json
202
- ```
21
+ ## 2. Observe and route
203
22
 
204
- The raw hook commands are underlying manual operator detail for previewing and
205
- materializing an executable guard hook outside the action-card control loop:
23
+ From any directory, the agent reads:
206
24
 
207
25
  ```bash
208
- skillboard hook install --workflow daily-workflow --config skillboard.config.yaml --skills skills --out .skillboard/hooks/daily-workflow-guard.sh --dry-run --json
209
- skillboard hook install --workflow daily-workflow --config skillboard.config.yaml --skills skills --out .skillboard/hooks/daily-workflow-guard.sh
26
+ skillboard brief --intent "<request>" --agent codex --json
27
+ skillboard guard use <skill-id> --agent codex --json
210
28
  ```
211
29
 
212
- For direct manual hook installation, inspect the JSON `planned.preview.shell`
213
- before an operator materializes the matching non-dry-run hook command. Generated
214
- hooks pin the install-time SkillBoard command, config, skills root, and workflow;
215
- set those values with hook install options such as `--skillboard-bin`, not with
216
- runtime environment overrides.
217
-
218
- ## 4. Enable, Disable, Or Prefer
219
-
220
- AI/automation/operator details:
30
+ The guard allows an enabled skill only when generated inventory records it on
31
+ the selected agent. Preference ranks matching candidates and never changes
32
+ availability. Allowed use does not require another confirmation.
221
33
 
222
- Enable the skill only for the workflow that should see it:
34
+ ## 3. Change one decision
223
35
 
224
36
  ```bash
225
- skillboard activate user.helper \
226
- --workflow daily-workflow \
227
- --config skillboard.config.yaml \
228
- --skills skills
37
+ skillboard skill enable <skill-id>
38
+ skillboard skill disable <skill-id>
39
+ skillboard skill share <skill-id>
40
+ skillboard skill unshare <skill-id>
41
+ skillboard skill preference <skill-id> --intent <term>[,<term>] --priority <integer>
42
+ skillboard skill forget <skill-id>
229
43
  ```
230
44
 
231
- If you already used `skillboard add workflow ... --skill user.helper`, this
232
- manual activation step is not needed for direct user invocation.
45
+ Share copies the complete skill directory to SkillBoard's managed shared source
46
+ and compatible agent roots while preserving the owner copy. Unshare removes only
47
+ copies managed by SkillBoard. It never deletes agent-owned originals.
233
48
 
234
- Block it from a workflow without deleting the declaration or file:
49
+ For AI mediation, read `brief --include-actions --json`, confirm one current
50
+ action, run `skillboard apply-action <action-id> --agent <agent> --yes --json`, and reread the
51
+ returned post-apply brief. Cached action ids are not reused.
235
52
 
236
- ```bash
237
- skillboard block user.helper \
238
- --workflow daily-workflow \
239
- --config skillboard.config.yaml \
240
- --skills skills
241
- ```
242
-
243
- Prefer it for a capability when the workflow should depend on a role rather than
244
- a raw skill id:
245
-
246
- ```bash
247
- skillboard prefer user.helper \
248
- --workflow daily-workflow \
249
- --capability task-review \
250
- --config skillboard.config.yaml \
251
- --skills skills
252
- ```
53
+ ## 4. Ask after, then remember
253
54
 
254
- ## 5. Remove Governance Without Deleting User Files
55
+ When a route was ambiguous, the agent finishes first. It may then ask whether to
56
+ remember an intent preference. Preference affects ordering only; it does not
57
+ share, enable, disable, install, or remove a skill.
255
58
 
256
- AI/automation/operator details:
59
+ ## 5. Audit separately
257
60
 
258
- First try the safe remove:
61
+ Source and provenance are optional audit metadata and never determine
62
+ availability. Import is trust-neutral: valid discoveries default to enabled and
63
+ agent-local. Runtime and action authorization are outside SkillBoard's scope and
64
+ remain with the agent or harness.
259
65
 
260
- ```bash
261
- skillboard remove skill user.helper \
262
- --config skillboard.config.yaml \
263
- --skills skills
264
- ```
66
+ ## 6. Remove a skill cleanly
265
67
 
266
- If workflows, capabilities, or install units still reference the skill, the
267
- command refuses to remove it and prints the references. After reviewing the
268
- impact, remove the config declaration and references:
68
+ Remove the original skill with the agent, plugin, or package manager that owns
69
+ it. Then refresh observations and remove only its stale SkillBoard policy:
269
70
 
270
71
  ```bash
271
- skillboard remove skill user.helper \
272
- --config skillboard.config.yaml \
273
- --skills skills \
274
- --force \
275
- --dry-run
276
-
277
- skillboard remove skill user.helper \
278
- --config skillboard.config.yaml \
279
- --skills skills \
280
- --force
72
+ skillboard inventory refresh
73
+ skillboard skill forget <skill-id> --dry-run
74
+ skillboard skill forget <skill-id>
281
75
  ```
282
76
 
283
- This removes SkillBoard policy references only and leaves
284
- `skills/user-helper/SKILL.md` in place.
285
-
286
- ## 6. Stop Using SkillBoard Safely
287
-
288
- AI/automation/operator details:
289
-
290
- Remove managed user-agent guidance first if global install/setup made agents
291
- recognize SkillBoard and you want that agent-layer footprint gone:
292
-
293
- ```bash
294
- skillboard uninstall --agent-layer --dry-run
295
- skillboard uninstall --agent-layer
296
- ```
77
+ Forget refuses a skill that is still observed or has `shared: true`. Unshare it
78
+ before removing the owner copy. Forget never deletes a `SKILL.md` or directory.
297
79
 
298
- This removes only managed `skillboard/SKILL.md` guidance files containing the
299
- SkillBoard agent integration marker. It preserves other agent skills and
300
- user-authored `skillboard` skills.
80
+ ## 7. Uninstall SkillBoard cleanly
301
81
 
302
82
  ```bash
303
- skillboard uninstall --dry-run
304
- skillboard uninstall
83
+ skillboard uninstall --user --dry-run
84
+ skillboard uninstall --user --yes
85
+ npm uninstall -g agent-skillboard
305
86
  ```
306
87
 
307
- Uninstall removes generated bridge blocks and unchanged helper files. It
308
- also removes `skillboard.config.yaml` and the `.skillboard/` project state by
309
- default while preserving local `skills/` files and user-authored non-SkillBoard
310
- content in bridge files.
88
+ The preview lists every marker-owned shared copy, managed guidance file, and
89
+ home state path. Apply requires `--yes`, preserves agent-owned and unmanaged
90
+ skills, and does not touch project files.
311
91
 
312
- If you want to keep project SkillBoard policy and bridge guidance, opt into
313
- settings preservation explicitly:
92
+ ## 8. Migrate version 1
314
93
 
315
94
  ```bash
316
- skillboard uninstall --keep-settings --dry-run
317
- skillboard uninstall --keep-settings
95
+ skillboard migrate v2 --config <path> --json
96
+ skillboard migrate v2 --config <path> --yes --json
97
+ skillboard migrate v2 --config <path> --rollback <backup> --json
318
98
  ```
319
99
 
320
- `--purge` is still accepted as an explicit spelling for the default clean
321
- project removal. Default removal and `--purge` both discard the current
322
- SkillBoard config even if it contains imported skills or workflow edits, remove
323
- generated dashboard and impact reports, and remove the entire `.skillboard/`
324
- project state directory, including hooks, source caches, rollout logs, variant
325
- snapshots, and profiles. Local `skills/` files stay in place.
100
+ Version 1 remains readable but immutable for the v0.3.x one-release read-only
101
+ window. v0.4.0 removes the v1 reader. No ordinary command migrates implicitly.