agent-skillboard 0.1.1 → 0.2.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 +20 -0
- package/README.md +154 -630
- package/docs/adapters.md +96 -96
- package/docs/ai-skill-routing-goal.md +112 -0
- package/docs/capabilities.md +6 -0
- package/docs/install.md +155 -105
- package/docs/plans/skillboard-variant-lifecycle-handoff.md +56 -0
- package/docs/policy-model.md +266 -214
- package/docs/positioning.md +94 -94
- package/docs/reference.md +349 -0
- package/docs/routing.md +85 -0
- package/docs/user-flow.md +75 -16
- package/docs/value-proof.md +190 -0
- package/docs/variant-lifecycle.md +86 -0
- package/docs/versioning.md +157 -138
- package/examples/multi-source-skills/anthropic/docx/SKILL.md +8 -8
- package/examples/multi-source-skills/anthropic/skill-creator/SKILL.md +8 -8
- package/examples/multi-source-skills/matt/grill-me/SKILL.md +8 -8
- package/examples/multi-source-skills/matt/tdd/SKILL.md +8 -8
- package/examples/multi-source-skills/omo/review-work/SKILL.md +8 -8
- package/examples/multi-source-skills/omo/ulw-plan/SKILL.md +8 -8
- package/examples/multi-source-skills/private/tdd-work-continuity/SKILL.md +8 -8
- package/examples/multi-source-skills/private/workflow-router/SKILL.md +8 -8
- package/examples/multi-source-skills/wshobson/python-testing/SKILL.md +8 -8
- package/examples/multi-source-skills/wshobson/security-review/SKILL.md +8 -8
- package/examples/skills/grill-me/SKILL.md +9 -9
- package/examples/skills/grill-with-docs/SKILL.md +9 -9
- package/examples/skills/requirement-intake/SKILL.md +9 -9
- package/examples/skills/tdd/SKILL.md +8 -8
- package/package.json +25 -20
- package/src/advisor/guidance.mjs +232 -0
- package/src/advisor/schema.mjs +2 -0
- package/src/advisor/skills.mjs +2 -0
- package/src/advisor.mjs +36 -7
- package/src/brief-cli.mjs +6 -5
- package/src/brief-renderer.mjs +225 -8
- package/src/cli.mjs +589 -34
- package/src/config-helpers.mjs +34 -18
- package/src/conflicts.mjs +70 -0
- package/src/control/can-use-guard.mjs +8 -3
- package/src/control/skill-crud.mjs +142 -0
- package/src/control/skill-variants.mjs +221 -0
- package/src/control/source-trust.mjs +1 -0
- package/src/control/variant-files.mjs +265 -0
- package/src/control/variant-lifecycle-config.mjs +156 -0
- package/src/control/variant-reset.mjs +171 -0
- package/src/control/variant-status.mjs +75 -0
- package/src/control.mjs +13 -1
- package/src/domain/rules/skills.mjs +60 -0
- package/src/domain/rules/workflows.mjs +13 -0
- package/src/impact.mjs +21 -12
- package/src/index.mjs +13 -1
- package/src/lifecycle-cli.mjs +18 -7
- package/src/lifecycle-content.mjs +29 -22
- package/src/route.mjs +537 -0
- package/src/source-verification.mjs +7 -3
- package/src/workspace.mjs +141 -43
- package/tsconfig.lsp.json +1 -1
package/README.md
CHANGED
|
@@ -1,668 +1,192 @@
|
|
|
1
1
|
# SkillBoard
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Use the right AI-agent skills without managing another checklist.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
Ask your AI normal questions: "what skills can you use?", "which skill should
|
|
6
|
+
write tests first?", or "can you make this reviewed skill available here?"
|
|
7
|
+
SkillBoard runs behind the scenes so you get the benefit: the right allowed
|
|
8
|
+
skill, a short disclosure of what was used, and fewer setup interruptions.
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
The burden stays low:
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
- No global install is required; use `npx --yes --package agent-skillboard`.
|
|
13
|
+
- Most use is read-only: `brief`, `route`, `doctor`, and `guard use` answer
|
|
14
|
+
what is safe now.
|
|
15
|
+
- Nothing changes until you approve a policy action.
|
|
16
|
+
- Project cleanup is conservative and previewable with `skillboard uninstall --dry-run`.
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
Under the hood, SkillBoard is workflow-scoped skill policy and routing for AI
|
|
19
|
+
agents. It separates `installed` from `allowed`, checks workflow policy and
|
|
20
|
+
guard state before use, and leaves a clear record of which skill influenced the
|
|
21
|
+
answer.
|
|
21
22
|
|
|
22
|
-
|
|
23
|
+
Start with normal requests:
|
|
23
24
|
|
|
24
|
-
|
|
25
|
+
- "What skills can you use in this project?"
|
|
26
|
+
- "Which skill should you use to write tests first?"
|
|
27
|
+
- "Can you make `anthropic.docx` available for this workflow?"
|
|
28
|
+
- "Why is this skill blocked?"
|
|
25
29
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
30
|
+
Your AI runs SkillBoard behind the scenes, reads the current brief, checks the
|
|
31
|
+
guard automatically before invoking an allowed skill, and asks only before
|
|
32
|
+
policy-changing actions. For already-allowed skills, it should say which skill
|
|
33
|
+
it is about to use and which skill it used, not interrupt you for another
|
|
34
|
+
approval. That disclosure is an audit trace, not a permission prompt. You do
|
|
35
|
+
not need to memorize the SkillBoard command loop.
|
|
29
36
|
|
|
30
|
-
-
|
|
31
|
-
- Which skills are allowed to run in this workflow?
|
|
32
|
-
- Which skills can be invoked automatically?
|
|
33
|
-
- What changes if I disable one?
|
|
34
|
-
- Did a plugin or runtime update silently add new capabilities?
|
|
37
|
+
A normal allowed-skill turn can look like this:
|
|
35
38
|
|
|
36
|
-
|
|
39
|
+
- You: "Which skill should you use to write tests first?"
|
|
40
|
+
- AI: "I will use matt.tdd for this request."
|
|
41
|
+
- AI: "I used matt.tdd for this request."
|
|
37
42
|
|
|
38
|
-
|
|
43
|
+
Names you may see in setup and logs:
|
|
39
44
|
|
|
40
|
-
-
|
|
41
|
-
-
|
|
42
|
-
-
|
|
43
|
-
- Impact reports before disabling or migrating skills.
|
|
44
|
-
- Agent bridge files so Codex and Claude Code follow the same policy.
|
|
45
|
-
- An AI-facing brief so agents can explain availability without guessing from
|
|
46
|
-
raw `SKILL.md` files.
|
|
45
|
+
- `SkillBoard`: the product and policy model.
|
|
46
|
+
- `agent-skillboard`: the npm package.
|
|
47
|
+
- `skillboard`: the CLI binary.
|
|
47
48
|
|
|
48
|
-
|
|
49
|
+
Use SkillBoard when your agent setup has grown beyond one trusted skill folder
|
|
50
|
+
and you want workflow-scoped control without turning skill governance into a
|
|
51
|
+
manual checklist. If you are changing routing, brief, bridge, policy, or
|
|
52
|
+
workflow UX, read [AI Skill Routing Goal](docs/ai-skill-routing-goal.md) first;
|
|
53
|
+
it defines the non-blocking `observe → route → work → explain briefly → ask
|
|
54
|
+
after → remember policy` loop that development should preserve.
|
|
49
55
|
|
|
50
|
-
|
|
51
|
-
skillboard
|
|
52
|
-
|
|
53
|
-
skillboard brief --json --workflow codex-night-workflow
|
|
54
|
-
skillboard list skills --workflow codex-night-workflow
|
|
55
|
-
skillboard can-use matt.tdd --workflow codex-night-workflow
|
|
56
|
-
skillboard impact disable matt.tdd
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
Example dashboard output:
|
|
60
|
-
|
|
61
|
-
```markdown
|
|
62
|
-
## Skills
|
|
56
|
+
<p align="center">
|
|
57
|
+
<img src="https://raw.githubusercontent.com/NyXXiR/skillboard/main/skillboard.png" alt="SkillBoard architecture diagram: sources, inventory scanner, SkillBoard model, policy engine, and user and agent surfaces." width="100%">
|
|
58
|
+
</p>
|
|
63
59
|
|
|
64
|
-
|
|
65
|
-
- `matt.tdd` — active, workflow-auto, exported, owner: `github.mattpocock.skills`
|
|
66
|
-
- `vendor.experimental-review` — quarantined, blocked, vendor, owner: `new.runtime.bundle`
|
|
60
|
+
## Why Not Just List `/skills`?
|
|
67
61
|
|
|
68
|
-
|
|
62
|
+
A raw skill list answers what is declared. SkillBoard answers what can safely
|
|
63
|
+
run now.
|
|
69
64
|
|
|
70
|
-
|
|
71
|
-
- report workflows affected before a skill or harness is disabled
|
|
72
|
-
```
|
|
65
|
+
Same fixture, different answer:
|
|
73
66
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
manifest and lockfile. Security scanners such as SkillGate/SkillGuard focus on
|
|
79
|
-
trust and risk.
|
|
80
|
-
|
|
81
|
-
SkillBoard is deliberately narrower:
|
|
82
|
-
|
|
83
|
-
- Deny automatic invocation by default.
|
|
84
|
-
- Activate skills per workflow, not globally.
|
|
85
|
-
- Separate installed, active, manual-only, router-only, workflow-auto, blocked,
|
|
86
|
-
and deprecated states.
|
|
87
|
-
- Quarantine newly discovered skills instead of auto-enabling them.
|
|
88
|
-
- Treat harness additions/removals as migration events, not silent breakage.
|
|
89
|
-
- Track capabilities so workflows can depend on roles instead of only skill ids.
|
|
90
|
-
- Track install units so plugin bundles, package-manager dependencies, harnesses,
|
|
91
|
-
MCP servers, hooks, agents, and LSPs are not flattened into skill names.
|
|
92
|
-
- Keep user-added global skills limited to explicit `global-meta` skills such as
|
|
93
|
-
routers, impact analyzers, and verification gates.
|
|
94
|
-
- Show a human-readable skill map before users add or remove skills.
|
|
95
|
-
- Report impact before disabling a skill.
|
|
96
|
-
|
|
97
|
-
## MVP Status
|
|
98
|
-
|
|
99
|
-
This repository is an early CLI-first foundation. It currently supports:
|
|
100
|
-
|
|
101
|
-
- YAML policy config parsing.
|
|
102
|
-
- Recursive `SKILL.md` discovery.
|
|
103
|
-
- Source-profile import for cloned or installed skill repositories.
|
|
104
|
-
- Capability and harness config parsing.
|
|
105
|
-
- Agent runtime install-unit inventory, including Codex plugin skills, hooks,
|
|
106
|
-
MCP servers, commands, and modified config files when manifest metadata is
|
|
107
|
-
available.
|
|
108
|
-
- Strong reference checks for workflows, skills, capabilities, harnesses, and
|
|
109
|
-
install units.
|
|
110
|
-
- Semantic policy checks for workflow-scoped auto invocation, canonical skill
|
|
111
|
-
claims, conflicts, status/invocation combinations, and install-unit component
|
|
112
|
-
declarations.
|
|
113
|
-
- Markdown dashboard generation.
|
|
114
|
-
- Disable-impact analysis.
|
|
115
|
-
- Reconcile plan generation for new skills, new harnesses, and removed
|
|
116
|
-
harnesses.
|
|
117
|
-
|
|
118
|
-
## 5-Minute Quick Start
|
|
67
|
+
| Raw skill list | SkillBoard brief |
|
|
68
|
+
| --- | --- |
|
|
69
|
+
| `matt.tdd active workflow-auto` | `AI can use now: 0` |
|
|
70
|
+
| no policy health | `Blocked for safety: 8`, `Policy errors: 2` |
|
|
119
71
|
|
|
120
|
-
|
|
72
|
+
That gap is the product. SkillBoard separates `installed` from `allowed`,
|
|
73
|
+
checks policy health, and gives agents a brief they can use without guessing
|
|
74
|
+
from raw `SKILL.md` files. The same proof also routes "write tests before
|
|
75
|
+
implementation" to `matt.tdd`, returns `private.tdd-work-continuity` as the
|
|
76
|
+
fallback, and gives the AI exact start and finish disclosure text.
|
|
121
77
|
|
|
122
|
-
|
|
123
|
-
npx agent-skillboard init
|
|
124
|
-
npx agent-skillboard brief
|
|
125
|
-
npx agent-skillboard doctor --summary
|
|
126
|
-
```
|
|
78
|
+
See [Tested Value Proof](#tested-value-proof) for the executable proof.
|
|
127
79
|
|
|
128
|
-
|
|
129
|
-
directory. To manage another project from elsewhere, pass `--dir`:
|
|
80
|
+
## 5-Minute Quick Start
|
|
130
81
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
npx agent-skillboard doctor --dir /path/to/your/project --summary
|
|
135
|
-
```
|
|
82
|
+
Ask your AI to set up SkillBoard in the project you want to manage. The AI runs
|
|
83
|
+
SkillBoard behind the scenes, then answers from the generated brief instead of
|
|
84
|
+
from memory or raw skill files.
|
|
136
85
|
|
|
137
|
-
|
|
138
|
-
trusted local skills as manual-only and keeps runtime/plugin skills quarantined
|
|
139
|
-
until reviewed.
|
|
86
|
+
Use without a global install:
|
|
140
87
|
|
|
141
|
-
|
|
142
|
-
name:
|
|
88
|
+
AI/automation/operator details:
|
|
143
89
|
|
|
144
90
|
```bash
|
|
145
91
|
npx --yes --package agent-skillboard skillboard init
|
|
146
|
-
|
|
92
|
+
npx --yes --package agent-skillboard skillboard doctor --summary
|
|
93
|
+
npx --yes --package agent-skillboard skillboard brief --workflow <workflow-from-init>
|
|
147
94
|
```
|
|
148
95
|
|
|
149
|
-
|
|
96
|
+
`init` creates the local control-plane files, scans known local skill roots,
|
|
97
|
+
and writes agent bridge instructions. It prints the workflows it found and a
|
|
98
|
+
copyable workflow-scoped `brief` command. If `init` does not print a workflow,
|
|
99
|
+
run the unscoped `brief` command it prints instead. Trusted user-local skills
|
|
100
|
+
start as manual-only. Runtime, plugin, and external skills stay quarantined or
|
|
101
|
+
blocked until reviewed. The explicit package/binary spelling avoids an extra npx
|
|
102
|
+
install prompt and keeps the `skillboard` executable name clear.
|
|
150
103
|
|
|
151
|
-
|
|
152
|
-
npx --yes --package agent-skillboard skillboard doctor
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
For repeated local use, install the CLI globally:
|
|
156
|
-
|
|
157
|
-
```bash
|
|
158
|
-
npm install -g agent-skillboard
|
|
159
|
-
skillboard init
|
|
160
|
-
skillboard doctor
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
Unreleased GitHub builds are available for testing changes before npm release:
|
|
164
|
-
|
|
165
|
-
```bash
|
|
166
|
-
npx --yes --package github:NyXXiR/skillboard skillboard init
|
|
167
|
-
npx --yes --package github:NyXXiR/skillboard skillboard brief
|
|
168
|
-
npx --yes --package github:NyXXiR/skillboard skillboard doctor --summary
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
For development from a clone, run the source-tree CLI:
|
|
104
|
+
Remove the project bridge when you are done:
|
|
172
105
|
|
|
173
106
|
```bash
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
npm install
|
|
177
|
-
npm test
|
|
178
|
-
node bin/skillboard.mjs init --dir /path/to/your/project
|
|
179
|
-
node bin/skillboard.mjs brief --dir /path/to/your/project
|
|
180
|
-
node bin/skillboard.mjs doctor --dir /path/to/your/project --summary
|
|
181
|
-
```
|
|
182
|
-
|
|
183
|
-
Most examples below use the global or npm-exec `skillboard` command. When
|
|
184
|
-
running from a clone, replace `skillboard ` with `node bin/skillboard.mjs `.
|
|
185
|
-
|
|
186
|
-
Useful first commands:
|
|
187
|
-
|
|
188
|
-
```bash
|
|
189
|
-
skillboard inventory refresh --dry-run
|
|
190
|
-
skillboard import --profile github.mattpocock.skills --source-root /path/to/mattpocock-skills
|
|
191
|
-
skillboard import --profile github.mattpocock.skills --source-root /path/to/mattpocock-skills --config skillboard.config.yaml --merge --dry-run
|
|
192
|
-
skillboard check --config skillboard.config.yaml --skills skills
|
|
193
|
-
skillboard rollout audit --config skillboard.config.yaml --skills skills --json
|
|
194
|
-
skillboard rollout plan --config skillboard.config.yaml --skills skills --json
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
`skillboard init` creates `skillboard.config.yaml`, `skills/`,
|
|
198
|
-
`.skillboard/reports/`, `.skillboard/profiles/`, `AGENTS.md`, and `CLAUDE.md`.
|
|
199
|
-
It also scans known local agent skill roots, including Codex user/system skills,
|
|
200
|
-
Codex plugin-cache manifests, Claude user skills, Hermes user skills, and Hermes
|
|
201
|
-
profile skills under `.hermes/profiles/*/skills`. Trusted user-local skills are
|
|
202
|
-
imported as `status: active` with `invocation: manual-only` and attached to a
|
|
203
|
-
generated local manual workflow when the project has no workflow metadata yet,
|
|
204
|
-
so a first-time user can immediately use their own manual skills through
|
|
205
|
-
`can-use` and guard checks without receiving legacy-state warning noise. System,
|
|
206
|
-
plugin, and other runtime-supplied skills stay `quarantined` / `blocked`; plugin
|
|
207
|
-
hooks, MCP servers, commands, and modified config files are attached to the
|
|
208
|
-
owning install unit for review. The agent bridge files tell Codex-style and
|
|
209
|
-
Claude Code agents to use `skillboard.config.yaml` as the control-plane source
|
|
210
|
-
of truth instead of treating every installed `SKILL.md` as active.
|
|
211
|
-
|
|
212
|
-
When you ask an agent "what skills can you use?", the bridge tells it to run
|
|
213
|
-
`skillboard brief --json` before answering. The brief is designed for
|
|
214
|
-
AI-mediated use without becoming another policy engine: it summarizes "What
|
|
215
|
-
your AI can use now", what needs your decision, what is blocked for safety, and
|
|
216
|
-
which change suggestions are available as action cards. Reviewable items should
|
|
217
|
-
feel like a short decision queue, not repeated blocked chores: once the source,
|
|
218
|
-
skill, and workflow decision is recorded, the same prompt should not return
|
|
219
|
-
unless that input changes. Before an agent applies a risk-bearing action card,
|
|
220
|
-
it should pick one current action id from the brief, ask for user confirmation,
|
|
221
|
-
then use
|
|
222
|
-
`skillboard apply-action <action-id> --yes --json` with the same config, skills,
|
|
223
|
-
and workflow options instead of running raw action-card shell text. After a
|
|
224
|
-
mutating `apply-action`, the agent should read the returned post-apply brief
|
|
225
|
-
before answering the next availability question or applying another action.
|
|
226
|
-
`apply-action` re-resolves the current brief, so stale action ids, cached action
|
|
227
|
-
cards, and multi-action batches are refused rather than replayed.
|
|
228
|
-
Immediately before a skill is actually invoked,
|
|
229
|
-
`skillboard guard use ...` remains the final gate.
|
|
230
|
-
The default text brief is compact for large skill sets: it keeps the summary,
|
|
231
|
-
top categories, next safe action, short section previews, and short action
|
|
232
|
-
summaries. Use `skillboard brief --verbose` when you need the full list or
|
|
233
|
-
full copyable command details.
|
|
234
|
-
|
|
235
|
-
### Hermes System Prompt Bridge
|
|
236
|
-
|
|
237
|
-
Hermes does not automatically read `AGENTS.md` or `CLAUDE.md`. To make Hermes
|
|
238
|
-
follow the same SkillBoard policy, add a small bridge instruction to the Hermes
|
|
239
|
-
profile or system prompt for the project:
|
|
240
|
-
|
|
241
|
-
```text
|
|
242
|
-
Use SkillBoard as the source of truth for agent skill availability.
|
|
243
|
-
Before answering what skills can be used, run:
|
|
244
|
-
skillboard brief --json --dir /path/to/your/project
|
|
245
|
-
|
|
246
|
-
Do not infer availability from installed SKILL.md files. Immediately before
|
|
247
|
-
invoking a skill, run:
|
|
248
|
-
skillboard guard use <skill-id> --workflow <workflow-name> --dir /path/to/your/project
|
|
249
|
-
|
|
250
|
-
For suggested policy changes, ask the user to approve one current action id,
|
|
251
|
-
then run:
|
|
252
|
-
skillboard apply-action <action-id> --dir /path/to/your/project --yes --json
|
|
107
|
+
npx --yes --package agent-skillboard skillboard uninstall --dir /path/to/your/project --dry-run
|
|
108
|
+
npx --yes --package agent-skillboard skillboard uninstall --dir /path/to/your/project
|
|
253
109
|
```
|
|
254
110
|
|
|
255
|
-
|
|
256
|
-
|
|
111
|
+
Uninstall preserves local skills and policy files by default, and reports what
|
|
112
|
+
it removed or preserved.
|
|
257
113
|
|
|
258
|
-
|
|
114
|
+
See [docs/install.md](docs/install.md) for global installs, `--dir`, GitHub
|
|
115
|
+
builds, clone-based development, Hermes bridge setup, refresh, and uninstall.
|
|
259
116
|
|
|
260
|
-
|
|
261
|
-
Scanned installed agent skills: 128
|
|
262
|
-
AI can use now: 123 (0 automatic, 123 manual)
|
|
263
|
-
Needs your decision: 0
|
|
264
|
-
Blocked for safety: 5
|
|
265
|
-
Default brief: 54 lines
|
|
266
|
-
Verbose inventory: 244 lines
|
|
267
|
-
```
|
|
268
|
-
|
|
269
|
-
The point is not to install more skills. The point is to see that installed
|
|
270
|
-
does not mean automatically callable, local skills stay manual-only, and risky
|
|
271
|
-
runtime/plugin skills stay blocked until reviewed.
|
|
272
|
-
|
|
273
|
-
Run `skillboard doctor` after init to see config health, bridge status, managed
|
|
274
|
-
skill/install-unit counts, policy/source audit summaries, and the default
|
|
275
|
-
uninstall dry-run plan. The default doctor command passes when the workspace is
|
|
276
|
-
usable but has review-needed safe-mode warnings; add `--strict` when those
|
|
277
|
-
warnings should fail automation. Add `--json` when an agent or script needs the
|
|
278
|
-
same information as structured output. `skillboard status` returns the same
|
|
279
|
-
health report for users and agents that prefer a shorter command name.
|
|
280
|
-
|
|
281
|
-
See [docs/user-flow.md](docs/user-flow.md) for the first-time flow that covers
|
|
282
|
-
adding a local skill, inspecting its influence, activating/blocking it, and
|
|
283
|
-
removing SkillBoard policy references without deleting the underlying
|
|
284
|
-
`SKILL.md`.
|
|
285
|
-
|
|
286
|
-
Run `skillboard inventory refresh --dry-run` after installing a new local agent
|
|
287
|
-
skill pack, plugin, workflow bundle, or harness. It reuses the same scanner as
|
|
288
|
-
init and reports the text and YAML semantic config change plan. If the project
|
|
289
|
-
has no workflows yet, newly discovered trusted user-local skills are attached to
|
|
290
|
-
a generated manual workflow; if workflows already exist, those skills are kept as
|
|
291
|
-
manual-only candidates and the refresh prints a review note to attach them with
|
|
292
|
-
`skillboard add workflow`. Runtime or external skills remain out of automatic
|
|
293
|
-
use until the source and workflow decisions are recorded. Broken detector
|
|
294
|
-
entries or malformed `SKILL.md` files are reported as scan warnings instead of
|
|
295
|
-
aborting the whole refresh.
|
|
296
|
-
|
|
297
|
-
Add new local growth paths without hand-editing YAML:
|
|
298
|
-
|
|
299
|
-
```bash
|
|
300
|
-
skillboard add harness codex --config skillboard.config.yaml --skills skills
|
|
301
|
-
skillboard add workflow daily-workflow --harness codex --skill user.helper --config skillboard.config.yaml --skills skills
|
|
302
|
-
```
|
|
303
|
-
|
|
304
|
-
When an installer writes runtime settings without a manifest, capture that
|
|
305
|
-
surface explicitly:
|
|
306
|
-
|
|
307
|
-
```bash
|
|
308
|
-
skillboard inventory detect --unit acme.runtime --config skillboard.config.yaml --install-output install.log --config-file ~/.codex/config.toml --dry-run
|
|
309
|
-
```
|
|
310
|
-
|
|
311
|
-
For fetchable Git sources, refresh the local cache and digest pin before writing
|
|
312
|
-
a lockfile:
|
|
313
|
-
|
|
314
|
-
```bash
|
|
315
|
-
skillboard sources refresh --config skillboard.config.yaml --unit github.mattpocock.skills --dry-run
|
|
316
|
-
skillboard sources refresh --config skillboard.config.yaml --unit github.mattpocock.skills
|
|
317
|
-
```
|
|
318
|
-
|
|
319
|
-
After reviewing an imported install unit, record that decision before activating
|
|
320
|
-
model-selectable skills from it:
|
|
321
|
-
|
|
322
|
-
```bash
|
|
323
|
-
skillboard review install-unit github.mattpocock.skills --trust-level reviewed --config skillboard.config.yaml --skills skills
|
|
324
|
-
```
|
|
325
|
-
|
|
326
|
-
To remove the project bridge safely:
|
|
327
|
-
|
|
328
|
-
```bash
|
|
329
|
-
skillboard uninstall --dry-run
|
|
330
|
-
skillboard uninstall
|
|
331
|
-
```
|
|
332
|
-
|
|
333
|
-
`skillboard uninstall` removes only SkillBoard bridge blocks and unchanged
|
|
334
|
-
generated helper files by default. It preserves `skillboard.config.yaml`, local
|
|
335
|
-
skills, reports, and any user content in `AGENTS.md` or `CLAUDE.md`. Add
|
|
336
|
-
`--remove-config` only when you want to delete an untouched default config. Use
|
|
337
|
-
`--reset-config` when you intentionally want to discard the current
|
|
338
|
-
`skillboard.config.yaml` and re-run `skillboard init` from a fresh policy
|
|
339
|
-
lifecycle; local skill files, reports, and generated guard hooks are still
|
|
340
|
-
preserved. Add `--remove-reports` with `--reset-config` when a test reset should
|
|
341
|
-
also discard generated dashboard and impact reports. Add
|
|
342
|
-
`--remove-hooks` with the same reset when you also want to discard the entire
|
|
343
|
-
`.skillboard/hooks/` directory contents and remove the `.skillboard/` directory
|
|
344
|
-
if it has no other content.
|
|
345
|
-
|
|
346
|
-
Run the bundled examples from the repository root:
|
|
347
|
-
|
|
348
|
-
```bash
|
|
349
|
-
npm install
|
|
350
|
-
npm run check
|
|
351
|
-
node bin/skillboard.mjs check \
|
|
352
|
-
--config examples/multi-source.config.yaml \
|
|
353
|
-
--skills examples/multi-source-skills
|
|
354
|
-
node bin/skillboard.mjs list skills \
|
|
355
|
-
--config examples/multi-source.config.yaml \
|
|
356
|
-
--skills examples/multi-source-skills \
|
|
357
|
-
--workflow codex-night-workflow
|
|
358
|
-
node bin/skillboard.mjs explain private.tdd-work-continuity \
|
|
359
|
-
--config examples/multi-source.config.yaml \
|
|
360
|
-
--skills examples/multi-source-skills
|
|
361
|
-
node bin/skillboard.mjs can-use matt.tdd \
|
|
362
|
-
--workflow codex-night-workflow \
|
|
363
|
-
--config examples/multi-source.config.yaml \
|
|
364
|
-
--skills examples/multi-source-skills
|
|
365
|
-
node bin/skillboard.mjs audit sources --verify \
|
|
366
|
-
--config examples/multi-source.config.yaml \
|
|
367
|
-
--skills examples/multi-source-skills
|
|
368
|
-
mkdir -p .skillboard/reports
|
|
369
|
-
node bin/skillboard.mjs lock write \
|
|
370
|
-
--config examples/multi-source.config.yaml \
|
|
371
|
-
--skills examples/multi-source-skills \
|
|
372
|
-
--out .skillboard/reports/multi-source.lock.yaml \
|
|
373
|
-
--replace
|
|
374
|
-
node bin/skillboard.mjs apply-action <action-id> \
|
|
375
|
-
--workflow codex-night-workflow \
|
|
376
|
-
--config examples/multi-source.config.yaml \
|
|
377
|
-
--skills examples/multi-source-skills \
|
|
378
|
-
--yes --json
|
|
379
|
-
```
|
|
380
|
-
|
|
381
|
-
For hook action cards, keep `apply-action` as the primary flow:
|
|
382
|
-
`node bin/skillboard.mjs apply-action <action-id> ... --yes --json`. The raw
|
|
383
|
-
hook commands below are underlying manual operator detail for previewing and
|
|
384
|
-
materializing an executable guard hook outside the action-card approval loop:
|
|
385
|
-
|
|
386
|
-
```bash
|
|
387
|
-
node bin/skillboard.mjs hook install \
|
|
388
|
-
--workflow codex-night-workflow \
|
|
389
|
-
--config examples/multi-source.config.yaml \
|
|
390
|
-
--skills examples/multi-source-skills \
|
|
391
|
-
--out .skillboard/reports/codex-night-guard.sh \
|
|
392
|
-
--skillboard-bin "node bin/skillboard.mjs" \
|
|
393
|
-
--dry-run --json
|
|
394
|
-
node bin/skillboard.mjs hook install \
|
|
395
|
-
--workflow codex-night-workflow \
|
|
396
|
-
--config examples/multi-source.config.yaml \
|
|
397
|
-
--skills examples/multi-source-skills \
|
|
398
|
-
--out .skillboard/reports/codex-night-guard.sh \
|
|
399
|
-
--skillboard-bin "node bin/skillboard.mjs"
|
|
400
|
-
```
|
|
401
|
-
|
|
402
|
-
For manual hook installation, preview with `--dry-run --json` and inspect
|
|
403
|
-
`planned.preview.shell` before an operator materializes the matching non-dry-run
|
|
404
|
-
hook command directly.
|
|
405
|
-
The multi-source example intentionally uses project-root-relative local paths,
|
|
406
|
-
such as `./examples/multi-source-skills/private`, so a fresh clone can run these
|
|
407
|
-
commands without editing machine-specific paths.
|
|
408
|
-
|
|
409
|
-
## Config Shape
|
|
410
|
-
|
|
411
|
-
```yaml
|
|
412
|
-
version: 1
|
|
413
|
-
|
|
414
|
-
defaults:
|
|
415
|
-
invocation_policy: deny-by-default
|
|
416
|
-
allow_model_invocation: false
|
|
417
|
-
require_explicit_workflow: true
|
|
418
|
-
|
|
419
|
-
skills:
|
|
420
|
-
matt.tdd:
|
|
421
|
-
path: tdd
|
|
422
|
-
status: active
|
|
423
|
-
invocation: workflow-auto
|
|
424
|
-
exposure: exported
|
|
425
|
-
category: engineering
|
|
426
|
-
|
|
427
|
-
user.workflow-router:
|
|
428
|
-
path: user/workflow-router
|
|
429
|
-
status: active
|
|
430
|
-
invocation: global-auto
|
|
431
|
-
exposure: global-meta
|
|
432
|
-
category: meta
|
|
433
|
-
|
|
434
|
-
capabilities:
|
|
435
|
-
test-first-implementation:
|
|
436
|
-
canonical: matt.tdd
|
|
437
|
-
alternatives:
|
|
438
|
-
- meerkat.test-first-implementation
|
|
439
|
-
default_policy: workflow-auto
|
|
440
|
-
|
|
441
|
-
harnesses:
|
|
442
|
-
codex:
|
|
443
|
-
status: primary
|
|
444
|
-
workflows:
|
|
445
|
-
- codex-night-workflow
|
|
446
|
-
|
|
447
|
-
install_units:
|
|
448
|
-
lazycodex.omo:
|
|
449
|
-
kind: harness
|
|
450
|
-
source: npx lazycodex-ai install
|
|
451
|
-
scope: user-global
|
|
452
|
-
manifest_path: ~/.codex/plugins/cache/sisyphuslabs/omo/plugin.json
|
|
453
|
-
cache_path: ~/.codex/plugins/cache/sisyphuslabs/omo
|
|
454
|
-
provided_components:
|
|
455
|
-
- skills
|
|
456
|
-
- commands
|
|
457
|
-
- mcp-server
|
|
458
|
-
- hook
|
|
459
|
-
components:
|
|
460
|
-
skills:
|
|
461
|
-
- lazycodex.ulw-plan
|
|
462
|
-
commands:
|
|
463
|
-
- $ulw-plan
|
|
464
|
-
- $start-work
|
|
465
|
-
hooks:
|
|
466
|
-
- post-tool-use
|
|
467
|
-
mcp_servers:
|
|
468
|
-
- omo-docs
|
|
469
|
-
modified_config_files:
|
|
470
|
-
- ~/.codex/config.toml
|
|
471
|
-
- ~/.local/bin
|
|
472
|
-
auto_update: false
|
|
473
|
-
enabled: true
|
|
474
|
-
workflow_dependencies:
|
|
475
|
-
- large-refactor-workflow
|
|
476
|
-
permission_risk: high
|
|
477
|
-
rollback: manual
|
|
478
|
-
|
|
479
|
-
workflows:
|
|
480
|
-
codex-night-workflow:
|
|
481
|
-
harness: codex
|
|
482
|
-
active_skills:
|
|
483
|
-
- matt.tdd
|
|
484
|
-
blocked_skills: []
|
|
485
|
-
required_capabilities:
|
|
486
|
-
test-first-implementation:
|
|
487
|
-
preferred: matt.tdd
|
|
488
|
-
fallback:
|
|
489
|
-
- meerkat.test-first-implementation
|
|
490
|
-
policy: workflow-auto
|
|
491
|
-
```
|
|
492
|
-
|
|
493
|
-
## Source Profiles
|
|
494
|
-
|
|
495
|
-
`skillboard import` reads a source profile and emits a YAML fragment containing
|
|
496
|
-
governed `skills` plus their owning `install_units`.
|
|
497
|
-
|
|
498
|
-
```bash
|
|
499
|
-
skillboard import \
|
|
500
|
-
--profile github.mattpocock.skills \
|
|
501
|
-
--source-root /path/to/cloned-or-installed/repo \
|
|
502
|
-
--out .skillboard/reports/import-fragment.yaml
|
|
503
|
-
```
|
|
504
|
-
|
|
505
|
-
To preview a direct apply path, pass `--merge --config --dry-run`. Merge is
|
|
506
|
-
non-destructive by default: if a skill or install-unit id already exists, the
|
|
507
|
-
command fails and leaves the config unchanged. Use `--replace` only when you
|
|
508
|
-
intend to overwrite existing entries, and drop `--dry-run` only after reviewing
|
|
509
|
-
the reported change plan.
|
|
510
|
-
|
|
511
|
-
```bash
|
|
512
|
-
skillboard import \
|
|
513
|
-
--profile github.mattpocock.skills \
|
|
514
|
-
--source-root /path/to/cloned-or-installed/repo \
|
|
515
|
-
--config skillboard.config.yaml \
|
|
516
|
-
--merge \
|
|
517
|
-
--dry-run
|
|
518
|
-
```
|
|
519
|
-
|
|
520
|
-
Built-in profiles are shipped as YAML data under `profiles/`, including:
|
|
521
|
-
|
|
522
|
-
- `github.mattpocock.skills`
|
|
523
|
-
- `github.code-yeongyu.oh-my-openagent`
|
|
524
|
-
- `github.anthropics.skills`
|
|
525
|
-
- `github.wshobson.agents`
|
|
526
|
-
- `github.voltagent.awesome-agent-skills`
|
|
527
|
-
|
|
528
|
-
Project-specific profiles can live under `.skillboard/profiles/` and be passed
|
|
529
|
-
by path:
|
|
530
|
-
|
|
531
|
-
```bash
|
|
532
|
-
skillboard import --profile .skillboard/profiles/my-source.yaml --source-root /path/to/repo
|
|
533
|
-
```
|
|
534
|
-
|
|
535
|
-
Invocation modes:
|
|
536
|
-
|
|
537
|
-
- `manual-only`: user must explicitly ask for it.
|
|
538
|
-
- `router-only`: a router/orchestrator may select it after policy checks.
|
|
539
|
-
- `workflow-auto`: model invocation is allowed only inside listed workflows.
|
|
540
|
-
- `global-auto`: allowed globally; use sparingly.
|
|
541
|
-
- `blocked`: installed but not callable until policy or provenance changes.
|
|
542
|
-
- `deprecated`: kept for history, not for new use.
|
|
543
|
-
|
|
544
|
-
Skill exposure:
|
|
545
|
-
|
|
546
|
-
- `exported`: centrally governed skill that may serve shared workflows or
|
|
547
|
-
canonical capabilities.
|
|
548
|
-
- `global-meta`: intentionally global control skill, such as a router,
|
|
549
|
-
impact analyzer, or verification gate. This is the only exposure that may use
|
|
550
|
-
`global-auto`.
|
|
551
|
-
- `unit-managed`: child component supplied by a parent install unit or harness
|
|
552
|
-
bundle.
|
|
553
|
-
- `private`: workflow-internal implementation detail; central governance should
|
|
554
|
-
avoid managing it unless it becomes shared.
|
|
555
|
-
|
|
556
|
-
`owner_install_unit` links a declared skill back to the package, plugin,
|
|
557
|
-
marketplace, harness, or local source that supplied it. SkillBoard checks this
|
|
558
|
-
both ways: install-unit `components.skills` must reference declared skills, and a
|
|
559
|
-
skill that names an owner must be listed by that owner. `unit-managed` skills
|
|
560
|
-
must always declare an owner.
|
|
561
|
-
|
|
562
|
-
The multi-source example in `examples/multi-source.config.yaml` models one
|
|
563
|
-
private skill source plus five external repositories:
|
|
564
|
-
|
|
565
|
-
- `mattpocock/skills`
|
|
566
|
-
- `code-yeongyu/oh-my-openagent`
|
|
567
|
-
- `anthropics/skills`
|
|
568
|
-
- `wshobson/agents`
|
|
569
|
-
- `VoltAgent/awesome-agent-skills`
|
|
570
|
-
|
|
571
|
-
Run the example commands from the repository root. Local example sources are
|
|
572
|
-
written as project-root-relative paths; fetchable Git sources can be cached and
|
|
573
|
-
pinned with `skillboard sources refresh`.
|
|
574
|
-
|
|
575
|
-
## Commands
|
|
576
|
-
|
|
577
|
-
All commands below use the global `skillboard` binary. When running from a
|
|
578
|
-
clone without `npm install -g agent-skillboard`, replace `skillboard ` with
|
|
579
|
-
`node bin/skillboard.mjs ` and run from the repository root.
|
|
580
|
-
|
|
581
|
-
```bash
|
|
582
|
-
skillboard init [--dir <path>] [--scan-root <dir>[,<dir>]] [--no-scan-installed]
|
|
583
|
-
skillboard uninstall [--dir <path>] [--dry-run] [--remove-config|--reset-config] [--remove-reports] [--remove-hooks] [--keep-empty-dirs]
|
|
584
|
-
skillboard inventory refresh [--dir <path>] [--config <path>] [--scan-root <dir>[,<dir>]] [--dry-run] [--json]
|
|
585
|
-
skillboard inventory detect --unit <id> --config <path> [--install-output <path>] [--config-file a,b] [--source <value>] [--kind <kind>] [--scope <scope>] [--dry-run] [--json]
|
|
586
|
-
skillboard sources refresh [--dir <path>] [--config <path>] [--unit <id>[,<id>]] [--cache-dir <dir>] [--dry-run] [--json]
|
|
587
|
-
skillboard doctor [--dir <path>] [--config <path>] [--skills <dir>] [--verify] [--strict] [--json] [--summary]
|
|
588
|
-
skillboard status [--dir <path>] [--config <path>] [--skills <dir>] [--verify] [--strict] [--json] [--summary]
|
|
589
|
-
skillboard brief [--workflow <name>] [--dir <path>] [--config <path>] [--skills <dir>] [--include-actions] [--verbose] [--json]
|
|
590
|
-
skillboard apply-action <action-id> [--workflow <name>] [--dir <path>] [--config <path>] [--skills <dir>] [--dry-run] [--yes] [--allow-destructive] [--json]
|
|
591
|
-
skillboard import --profile <id-or-path> --source-root <dir> [--profile-dirs a,b] [--out <path>]
|
|
592
|
-
skillboard import --profile <id-or-path> --source-root <dir> --config <path> --merge [--replace] [--dry-run]
|
|
593
|
-
skillboard scan --config <path> --skills <dir>
|
|
594
|
-
skillboard check --config <path> --skills <dir>
|
|
595
|
-
skillboard list [skills|workflows|harnesses|install-units] --config <path> --skills <dir>
|
|
596
|
-
skillboard explain <skill-id> --config <path> --skills <dir>
|
|
597
|
-
skillboard can-use <skill-id> --workflow <name> --config <path> --skills <dir>
|
|
598
|
-
skillboard guard use <skill-id> --workflow <name> --config <path> --skills <dir>
|
|
599
|
-
skillboard audit sources --config <path> --skills <dir> [--verify]
|
|
600
|
-
skillboard rollout [audit|plan|apply|rollback|report] [--dir <path>] [--config <path>] [--skills <dir>] [--transaction <id>] [--json]
|
|
601
|
-
skillboard hook install --workflow <name> --config <path> --skills <dir> [--out <path>] [--skillboard-bin <path>] [--dry-run] [--json]
|
|
602
|
-
skillboard lock write --config <path> --skills <dir> [--out <path>] [--replace] [--allow-unverified]
|
|
603
|
-
skillboard review install-unit <unit-id> [--trust-level trusted|reviewed|unreviewed|blocked] --config <path> --skills <dir>
|
|
604
|
-
skillboard add skill <skill-id> --path <relative-skill-path> --config <path> --skills <dir>
|
|
605
|
-
skillboard add workflow <workflow-name> --harness <harness-name> --config <path> --skills <dir> [--skill <id>[,<id>]]
|
|
606
|
-
skillboard add harness <harness-name> --config <path> --skills <dir> [--status <status>] [--command <cmd>[,<cmd>]]
|
|
607
|
-
skillboard activate <skill-id> --workflow <name> --config <path> --skills <dir>
|
|
608
|
-
skillboard block <skill-id> --workflow <name> --config <path> --skills <dir>
|
|
609
|
-
skillboard quarantine <skill-id> --config <path> --skills <dir>
|
|
610
|
-
skillboard prefer <skill-id> --workflow <name> --capability <name> --config <path> --skills <dir>
|
|
611
|
-
skillboard remove skill <skill-id> --config <path> --skills <dir> [--force]
|
|
612
|
-
skillboard dashboard --config <path> --skills <dir> [--out <path>]
|
|
613
|
-
skillboard reconcile --config <path> --skills <dir> [--actual-harnesses a,b] [--out <path>]
|
|
614
|
-
skillboard impact disable <skill-id> --config <path> --skills <dir> [--out <path>] [--json]
|
|
615
|
-
```
|
|
117
|
+
## What SkillBoard Gives You
|
|
616
118
|
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
-
|
|
639
|
-
- `
|
|
640
|
-
-
|
|
641
|
-
-
|
|
642
|
-
-
|
|
643
|
-
-
|
|
644
|
-
-
|
|
645
|
-
-
|
|
646
|
-
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
119
|
+
- Inventory that separates installed skills from callable skills.
|
|
120
|
+
- Workflow-scoped policy instead of global "everything is active" behavior.
|
|
121
|
+
- `brief`, `route`, `can-use`, and `guard use` surfaces for AI-mediated selection and availability.
|
|
122
|
+
- Workflow conflict checks so overlapping skills cannot quietly degrade an answer.
|
|
123
|
+
- Action cards that apply one approved policy change, then re-resolve state.
|
|
124
|
+
- Source and install-unit review for plugins, hooks, MCP servers, harnesses,
|
|
125
|
+
commands, LSPs, and package-manager dependencies.
|
|
126
|
+
- Impact, reconcile, rollout, and dashboard output before cleanup or migration.
|
|
127
|
+
- Manual skill variant lifecycle for relationships such as `a -> claude.a`,
|
|
128
|
+
with draft, approval, drift, and reset checkpoints.
|
|
129
|
+
|
|
130
|
+
SkillBoard is deny-by-default. Installing a skill does not make it automatically
|
|
131
|
+
callable. A workflow, source, and invocation decision must make that explicit.
|
|
132
|
+
For action cards, use `skillboard apply-action <action-id> --yes --json`; raw
|
|
133
|
+
`skillboard hook install ... --dry-run --json` previews are underlying manual
|
|
134
|
+
operator detail, not the primary action-card flow.
|
|
135
|
+
|
|
136
|
+
## What Works Today
|
|
137
|
+
|
|
138
|
+
SkillBoard currently supports:
|
|
139
|
+
|
|
140
|
+
- YAML policy config parsing and semantic checks.
|
|
141
|
+
- Recursive `SKILL.md` discovery.
|
|
142
|
+
- Source-profile import for cloned or installed skill repositories.
|
|
143
|
+
- Agent runtime install-unit inventory when manifest metadata is available.
|
|
144
|
+
- Markdown dashboard and machine-readable brief generation.
|
|
145
|
+
- Disable-impact analysis and reconcile plans.
|
|
146
|
+
- Workflow-scoped activation, blocking, preference, and guard checks.
|
|
147
|
+
- Action-card approval and post-apply brief refresh.
|
|
148
|
+
- Manual variant registration, fork, status, approval, and reset.
|
|
149
|
+
|
|
150
|
+
For the full command catalog and config shape, use
|
|
151
|
+
[docs/reference.md](docs/reference.md).
|
|
152
|
+
|
|
153
|
+
## Tested Value Proof
|
|
154
|
+
|
|
155
|
+
A raw list says `matt.tdd` is active. SkillBoard says the same workflow has 0
|
|
156
|
+
usable skills because policy health fails.
|
|
157
|
+
|
|
158
|
+
| Question | Raw list | SkillBoard brief |
|
|
159
|
+
| --- | --- | --- |
|
|
160
|
+
| Does `matt.tdd` look enabled? | `active`, `workflow-auto` | blocked by policy health |
|
|
161
|
+
| Can the agent safely use anything now? | not answered | 0 usable skills, 8 blocked skills |
|
|
162
|
+
| Why? | not answered | `Policy errors: 2`, `Policy warnings: 1` |
|
|
163
|
+
|
|
164
|
+
The action-card flow is tested too. Applying
|
|
165
|
+
`activate-skill:anthropic.docx` in a temporary project changes the next brief
|
|
166
|
+
from 2 usable skills to 3 and moves `anthropic.docx` into the manual-allowed
|
|
167
|
+
set. SkillBoard applies one approved change, then re-resolves the next state.
|
|
168
|
+
|
|
169
|
+
Run the proof with:
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
node --test test/readme-value-proof.test.mjs
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
See the [full reproducible proof](docs/value-proof.md) for exact commands,
|
|
176
|
+
fixtures, and assertions.
|
|
177
|
+
|
|
178
|
+
## Where To Go Next
|
|
179
|
+
|
|
180
|
+
- [AI skill routing goal](docs/ai-skill-routing-goal.md)
|
|
181
|
+
- [Install and bootstrap](docs/install.md)
|
|
182
|
+
- [First-time control flow](docs/user-flow.md)
|
|
183
|
+
- [Capability routing](docs/routing.md)
|
|
184
|
+
- [Command and config reference](docs/reference.md)
|
|
185
|
+
- [Policy model](docs/policy-model.md)
|
|
186
|
+
- [Capabilities](docs/capabilities.md)
|
|
187
|
+
- [Skill variant lifecycle](docs/variant-lifecycle.md)
|
|
188
|
+
- [Value proof](docs/value-proof.md)
|
|
189
|
+
- [Source-profile adapters](docs/adapters.md)
|
|
190
|
+
- [Rollout runbook](docs/rollout-runbook.md)
|
|
191
|
+
- [Versioning and release rules](docs/versioning.md)
|
|
192
|
+
- [Contributing](CONTRIBUTING.md)
|