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