agent-skillboard 0.2.18 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +85 -0
- package/README.md +161 -255
- package/bin/postinstall.mjs +2 -1
- package/docs/adapters.md +37 -113
- package/docs/ai-skill-routing-goal.md +41 -108
- package/docs/capabilities.md +17 -104
- package/docs/install.md +70 -473
- package/docs/policy-model.md +50 -280
- package/docs/positioning.md +19 -86
- package/docs/profiles.md +21 -153
- package/docs/reference.md +133 -362
- package/docs/rollout-runbook.md +23 -25
- package/docs/routing.md +23 -90
- package/docs/user-flow.md +68 -279
- package/docs/value-proof.md +23 -181
- package/docs/variant-lifecycle.md +47 -67
- package/docs/versioning.md +49 -269
- package/examples/v2-multi-source.config.yaml +35 -0
- package/examples/v2-policy-error.config.yaml +6 -0
- package/package.json +1 -1
- package/src/advisor/actions.mjs +102 -6
- package/src/advisor/application-commands.mjs +10 -9
- package/src/advisor/apply-action.mjs +74 -1
- package/src/advisor/guidance.mjs +24 -16
- package/src/advisor/schema.mjs +17 -6
- package/src/advisor/skills.mjs +18 -5
- package/src/advisor.mjs +27 -9
- package/src/agent-integration-cli.mjs +96 -13
- package/src/agent-integration-content.mjs +21 -11
- package/src/agent-integration-files.mjs +1 -1
- package/src/agent-integration-home.mjs +14 -1
- package/src/agent-inventory-platforms.mjs +21 -8
- package/src/agent-inventory.mjs +44 -16
- package/src/agent-root-registry.mjs +127 -0
- package/src/agent-skill-import.mjs +2 -2
- package/src/agent-skill-roots.mjs +70 -13
- package/src/audit-paths.mjs +42 -0
- package/src/brief-cli.mjs +3 -2
- package/src/brief-renderer.mjs +1 -0
- package/src/cli.mjs +521 -235
- package/src/compatibility.mjs +24 -0
- package/src/control/can-use-guard.mjs +21 -1
- package/src/control/config-write.mjs +32 -2
- package/src/control/skill-crud.mjs +5 -0
- package/src/control/v2-guard.mjs +175 -0
- package/src/control/v2-skill-crud.mjs +32 -0
- package/src/control/v2-skill-forget.mjs +38 -0
- package/src/control/variant-status.mjs +47 -1
- package/src/control.mjs +55 -0
- package/src/doctor.mjs +71 -5
- package/src/domain/v2-policy.mjs +111 -0
- package/src/hook-plan.mjs +33 -3
- package/src/impact.mjs +52 -29
- package/src/index.mjs +25 -1
- package/src/init.mjs +50 -34
- package/src/install-health.mjs +177 -0
- package/src/inventory-install-units.mjs +63 -0
- package/src/inventory-json.mjs +279 -0
- package/src/inventory-refresh.mjs +168 -19
- package/src/lifecycle-cli.mjs +40 -12
- package/src/lifecycle-content.mjs +52 -67
- package/src/migration/v1-to-v2.mjs +212 -0
- package/src/migration/v2-files.mjs +211 -0
- package/src/migration/v2-journal.mjs +169 -0
- package/src/migration/v2-projection.mjs +108 -0
- package/src/migration/v2-transaction.mjs +205 -0
- package/src/policy.mjs +3 -0
- package/src/reconcile.mjs +139 -111
- package/src/report.mjs +168 -148
- package/src/review.mjs +2 -0
- package/src/route-advisory.mjs +47 -2
- package/src/route-selection.mjs +38 -2
- package/src/route.mjs +62 -2
- package/src/shared-skill-reconcile.mjs +97 -0
- package/src/shared-skill.mjs +325 -0
- package/src/source-digest.mjs +42 -0
- package/src/source-profiles.mjs +171 -144
- package/src/source-verification.mjs +32 -48
- package/src/uninstall.mjs +22 -0
- package/src/user-state-paths.mjs +19 -0
- package/src/user-uninstall.mjs +161 -0
- package/src/workspace.mjs +119 -79
package/docs/install.md
CHANGED
|
@@ -1,526 +1,123 @@
|
|
|
1
|
-
# Install
|
|
1
|
+
# Install and Setup
|
|
2
2
|
|
|
3
|
-
|
|
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
|
|
8
|
+
skillboard doctor --summary
|
|
34
9
|
```
|
|
35
10
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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.
|
|
11
|
+
Postinstall detects supported agent homes, installs managed guidance, creates
|
|
12
|
+
`~/skillboard.config.yaml`, and refreshes `~/.skillboard/inventory.json`. No
|
|
13
|
+
separate setup command is required after a normal global install or update, and
|
|
14
|
+
no project init is needed.
|
|
48
15
|
|
|
49
|
-
|
|
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.
|
|
16
|
+
## Safe updates and npm prefixes
|
|
60
17
|
|
|
61
|
-
Run
|
|
62
|
-
|
|
63
|
-
agent-layer guidance install:
|
|
18
|
+
Run the update with the Node/npm environment whose global prefix should own the
|
|
19
|
+
CLI:
|
|
64
20
|
|
|
65
21
|
```bash
|
|
66
|
-
|
|
67
|
-
|
|
22
|
+
npm config get prefix
|
|
23
|
+
npm install -g agent-skillboard@latest
|
|
24
|
+
skillboard doctor --summary
|
|
68
25
|
```
|
|
69
26
|
|
|
70
|
-
|
|
27
|
+
Node version managers and system npm can use different global prefixes. Doctor
|
|
28
|
+
reports the current package, the `skillboard` executable selected by `PATH`, and
|
|
29
|
+
multiple SkillBoard installations. Discovery reads executable links and package
|
|
30
|
+
metadata only; it does not execute PATH candidates.
|
|
71
31
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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`.
|
|
32
|
+
When doctor reports duplicate global installs, select the prefix you intend to
|
|
33
|
+
keep. Activate the Node environment that owns each stale prefix, confirm it with
|
|
34
|
+
`npm config get prefix`, and run `npm uninstall -g agent-skillboard` there.
|
|
35
|
+
SkillBoard does not automatically uninstall another prefix or request elevated
|
|
36
|
+
permissions for cleanup.
|
|
80
37
|
|
|
81
|
-
|
|
82
|
-
|
|
38
|
+
Run setup later when lifecycle scripts were skipped, another agent or Hermes
|
|
39
|
+
profile was added, or a managed root needs to be repaired:
|
|
83
40
|
|
|
84
41
|
```bash
|
|
85
|
-
|
|
86
|
-
npm exec --yes --package agent-skillboard -- skillboard help brief
|
|
42
|
+
skillboard setup --agent codex,claude,opencode,hermes --yes
|
|
87
43
|
```
|
|
88
44
|
|
|
89
|
-
|
|
90
|
-
the
|
|
45
|
+
Setup is idempotent. Each run refreshes managed agent guidance, user policy,
|
|
46
|
+
and observed inventory. If the user already chose `shared: true` for a skill,
|
|
47
|
+
setup creates only the missing compatible managed copies for newly discovered
|
|
48
|
+
agent roots. It preserves unmanaged files and does not share agent-local skills.
|
|
49
|
+
Restart or refresh agents after setup or an npm update because an agent may
|
|
50
|
+
cache its user skill inventory.
|
|
91
51
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
AI/automation/operator details:
|
|
52
|
+
Register a nonstandard agent skill directory once with exactly one agent:
|
|
95
53
|
|
|
96
54
|
```bash
|
|
97
|
-
|
|
98
|
-
skillboard setup --agent codex,claude,opencode,hermes --yes
|
|
55
|
+
skillboard setup --agent hermes --skill-root ~/.hermes/profiles/work/skills --yes
|
|
99
56
|
```
|
|
100
57
|
|
|
101
|
-
The
|
|
102
|
-
|
|
58
|
+
The root must remain inside the invoking user's home and must not traverse a
|
|
59
|
+
symbolic link. SkillBoard stores it in `~/.skillboard/agent-roots.json` as
|
|
60
|
+
operational discovery state, not policy, and reuses it during setup and global
|
|
61
|
+
package updates. Conventional roots that contain agent-owned skills remain
|
|
62
|
+
active; obsolete roots containing only SkillBoard-managed artifacts do not
|
|
63
|
+
create false agent presence.
|
|
103
64
|
|
|
104
|
-
|
|
65
|
+
System npm may require `sudo npm install -g agent-skillboard`. SkillBoard uses
|
|
66
|
+
`SUDO_USER` for user-level state and restores managed files to that user.
|
|
105
67
|
|
|
106
|
-
|
|
107
|
-
needed for normal use. Package install, postinstall, and `skillboard setup`
|
|
108
|
-
connect SkillBoard at the agent layer without creating project files.
|
|
68
|
+
## Default behavior
|
|
109
69
|
|
|
110
|
-
|
|
111
|
-
|
|
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`.
|
|
70
|
+
A valid installed skill defaults to enabled and agent-local. Sharing is opt-in
|
|
71
|
+
per skill:
|
|
114
72
|
|
|
115
73
|
```bash
|
|
116
|
-
|
|
74
|
+
skillboard skill share <skill-id>
|
|
75
|
+
skillboard skill unshare <skill-id>
|
|
117
76
|
```
|
|
118
77
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
before the next npm release:
|
|
78
|
+
Sharing preserves agent-owned originals. Source and provenance are optional
|
|
79
|
+
audit metadata and never determine availability. Runtime and action
|
|
80
|
+
authorization are outside SkillBoard's scope.
|
|
123
81
|
|
|
124
|
-
|
|
82
|
+
## From GitHub or a clone
|
|
125
83
|
|
|
126
84
|
```bash
|
|
127
85
|
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
86
|
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
87
|
git clone https://github.com/NyXXiR/skillboard.git
|
|
146
88
|
cd skillboard
|
|
147
89
|
npm install
|
|
148
|
-
node bin/skillboard.mjs --version
|
|
149
90
|
node bin/skillboard.mjs help
|
|
150
91
|
```
|
|
151
92
|
|
|
152
|
-
|
|
93
|
+
For source-tree commands, replace `skillboard ` with
|
|
94
|
+
`node bin/skillboard.mjs `.
|
|
153
95
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
creates local files for teams that intentionally keep workflow policy in an
|
|
157
|
-
existing workspace.
|
|
96
|
+
Hermes should read only explicitly shared or Hermes-installed skills, not the
|
|
97
|
+
entire Codex skill tree.
|
|
158
98
|
|
|
159
|
-
|
|
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:
|
|
99
|
+
## Version 1 projects
|
|
192
100
|
|
|
193
101
|
```bash
|
|
194
|
-
skillboard
|
|
102
|
+
skillboard migrate v2 --config <path> --json
|
|
103
|
+
skillboard migrate v2 --config <path> --yes --json
|
|
104
|
+
skillboard migrate v2 --config <path> --rollback <backup> --json
|
|
195
105
|
```
|
|
196
106
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
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
|
|
107
|
+
Version 1 is read-only during v0.3.x. v0.4.0 removes the v1 reader.
|
|
108
|
+
Setup and postinstall preserve an existing v1 policy byte-for-byte and suggest
|
|
109
|
+
the preview command only. SkillBoard does not automatically migrate version 1;
|
|
110
|
+
apply and rollback remain explicit user actions.
|
|
292
111
|
|
|
293
|
-
|
|
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:
|
|
112
|
+
## Uninstall
|
|
305
113
|
|
|
306
114
|
```bash
|
|
307
|
-
skillboard
|
|
308
|
-
skillboard
|
|
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
|
-
```
|
|
343
|
-
|
|
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.
|
|
347
|
-
|
|
348
|
-
For fetchable Git sources, refresh the project cache and digest pin before
|
|
349
|
-
writing a lockfile:
|
|
350
|
-
|
|
351
|
-
```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
|
|
358
|
-
```
|
|
359
|
-
|
|
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.
|
|
364
|
-
|
|
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:
|
|
372
|
-
|
|
373
|
-
```bash
|
|
374
|
-
skillboard uninstall --agent-layer --dry-run
|
|
375
|
-
skillboard uninstall --agent-layer
|
|
115
|
+
skillboard uninstall --user --dry-run
|
|
116
|
+
skillboard uninstall --user --yes
|
|
376
117
|
npm uninstall -g agent-skillboard
|
|
377
118
|
```
|
|
378
119
|
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
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).
|
|
120
|
+
User-level cleanup removes marker-owned shared copies, managed SkillBoard
|
|
121
|
+
guidance, `~/skillboard.config.yaml`, and `~/.skillboard`. It preserves
|
|
122
|
+
agent-owned and unmanaged skills. Apply requires `--yes`; legacy project cleanup
|
|
123
|
+
and guidance-only `--agent-layer` cleanup remain explicit and previewable.
|