agent-skillboard 0.1.2 → 0.2.2
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 +39 -0
- package/README.md +159 -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 +172 -114
- 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 +79 -17
- package/docs/value-proof.md +194 -0
- package/docs/variant-lifecycle.md +86 -0
- package/docs/versioning.md +154 -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/skillboard.config.yaml +8 -3
- 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 +6 -3
- package/src/advisor/actions.mjs +25 -3
- package/src/advisor/guidance.mjs +232 -0
- package/src/advisor/schema.mjs +2 -0
- package/src/advisor/skills.mjs +2 -0
- package/src/advisor/trust-policy.mjs +5 -3
- package/src/advisor.mjs +36 -7
- package/src/brief-cli.mjs +6 -5
- package/src/brief-renderer.mjs +225 -8
- package/src/cli.mjs +574 -27
- 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/hook-plan.mjs +6 -6
- package/src/impact.mjs +21 -12
- package/src/index.mjs +13 -1
- package/src/lifecycle-cli.mjs +19 -8
- package/src/lifecycle-content.mjs +34 -24
- 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/docs/plans/20260625-080025-skillboard-mvp-review.md +0 -189
- package/docs/plans/README.md +0 -20
package/docs/install.md
CHANGED
|
@@ -1,34 +1,52 @@
|
|
|
1
|
-
# Install And Bootstrap
|
|
2
|
-
|
|
3
|
-
SkillBoard sits one layer above skill installers, plugin marketplaces, harness
|
|
4
|
-
bundles, and local skill repositories.
|
|
5
|
-
|
|
1
|
+
# Install And Bootstrap
|
|
2
|
+
|
|
3
|
+
SkillBoard sits one layer above skill installers, plugin marketplaces, harness
|
|
4
|
+
bundles, and local skill repositories.
|
|
5
|
+
|
|
6
|
+
After install, ask your AI questions like "what skills can you use in this
|
|
7
|
+
project?" or "can you make this reviewed skill available for the current
|
|
8
|
+
workflow?" The AI runs SkillBoard behind the scenes: it reads the current brief,
|
|
9
|
+
uses one current action id only after confirmation when policy would change, and
|
|
10
|
+
runs the guard automatically before actual skill use. For already-allowed
|
|
11
|
+
skills, the AI should tell you which skill it is about to use and which skill it
|
|
12
|
+
used in the result instead of asking for another approval. That disclosure is an
|
|
13
|
+
audit trace, not a permission prompt. You do not need to memorize the SkillBoard
|
|
14
|
+
command loop.
|
|
15
|
+
|
|
6
16
|
## Install From npm
|
|
7
17
|
|
|
8
|
-
Use npx when you want to bootstrap a project
|
|
9
|
-
SkillBoard binary installed:
|
|
18
|
+
Use no-prompt npx package execution when you want to bootstrap a project
|
|
19
|
+
without keeping a global SkillBoard binary installed:
|
|
20
|
+
|
|
21
|
+
AI/automation/operator details:
|
|
10
22
|
|
|
11
23
|
```bash
|
|
12
|
-
npx agent-skillboard init
|
|
13
|
-
npx agent-skillboard
|
|
14
|
-
npx agent-skillboard
|
|
24
|
+
npx --yes --package agent-skillboard skillboard init
|
|
25
|
+
npx --yes --package agent-skillboard skillboard doctor --summary
|
|
26
|
+
npx --yes --package agent-skillboard skillboard brief --workflow <workflow-from-init>
|
|
15
27
|
```
|
|
16
28
|
|
|
17
29
|
SkillBoard does not make installed skills automatically callable. It imports
|
|
18
30
|
trusted local skills as manual-only and keeps runtime/plugin skills quarantined
|
|
19
|
-
until reviewed.
|
|
31
|
+
until their source is reviewed. The brief presents unreviewed runtime sources as
|
|
32
|
+
one-time review decisions rather than default block recommendations; after
|
|
33
|
+
review, individual quarantined skills can be activated as manual-only workflow
|
|
34
|
+
skills. When `init` creates or discovers workflows, use one of the workflow names
|
|
35
|
+
it prints for the first brief. If `init` does not print a workflow, run the unscoped `brief` command it prints instead. The explicit package/binary spelling
|
|
36
|
+
avoids an extra npx install prompt and keeps the executable name clear.
|
|
20
37
|
|
|
21
|
-
|
|
38
|
+
The equivalent `npm exec` spelling is also no-prompt and works well in scripts:
|
|
22
39
|
|
|
23
40
|
```bash
|
|
24
|
-
npx --yes --package agent-skillboard skillboard init
|
|
25
|
-
npx --yes --package agent-skillboard skillboard doctor --summary
|
|
26
41
|
npm exec --yes --package agent-skillboard -- skillboard init
|
|
27
42
|
npm exec --yes --package agent-skillboard -- skillboard doctor --summary
|
|
43
|
+
npm exec --yes --package agent-skillboard -- skillboard brief --workflow <workflow-from-init>
|
|
28
44
|
```
|
|
29
45
|
|
|
30
46
|
For repeated local use, install the CLI globally:
|
|
31
47
|
|
|
48
|
+
AI/automation/operator details:
|
|
49
|
+
|
|
32
50
|
```bash
|
|
33
51
|
npm install -g agent-skillboard
|
|
34
52
|
skillboard init
|
|
@@ -43,10 +61,12 @@ The executable remains `skillboard` even though the npm package name is
|
|
|
43
61
|
Use GitHub npx only when you intentionally want the current repository state
|
|
44
62
|
before the next npm release:
|
|
45
63
|
|
|
64
|
+
AI/automation/operator details:
|
|
65
|
+
|
|
46
66
|
```bash
|
|
47
67
|
npx --yes --package github:NyXXiR/skillboard skillboard init
|
|
48
|
-
npx --yes --package github:NyXXiR/skillboard skillboard brief
|
|
49
68
|
npx --yes --package github:NyXXiR/skillboard skillboard doctor --summary
|
|
69
|
+
npx --yes --package github:NyXXiR/skillboard skillboard brief --workflow <workflow-from-init>
|
|
50
70
|
```
|
|
51
71
|
|
|
52
72
|
The equivalent `npm exec` spelling is explicit about the package and binary:
|
|
@@ -54,35 +74,38 @@ The equivalent `npm exec` spelling is explicit about the package and binary:
|
|
|
54
74
|
```bash
|
|
55
75
|
npm exec --yes --package github:NyXXiR/skillboard -- skillboard init
|
|
56
76
|
npm exec --yes --package github:NyXXiR/skillboard -- skillboard doctor --summary
|
|
77
|
+
npm exec --yes --package github:NyXXiR/skillboard -- skillboard brief --workflow <workflow-from-init>
|
|
57
78
|
```
|
|
58
79
|
|
|
59
80
|
## Install From A Clone
|
|
60
81
|
|
|
61
82
|
Use a clone when developing SkillBoard itself or testing unreleased changes:
|
|
62
83
|
|
|
84
|
+
AI/automation/operator details:
|
|
85
|
+
|
|
63
86
|
```bash
|
|
64
87
|
git clone https://github.com/NyXXiR/skillboard.git
|
|
65
88
|
cd skillboard
|
|
66
89
|
npm install
|
|
67
90
|
node bin/skillboard.mjs init --dir /path/to/your/project
|
|
68
|
-
node bin/skillboard.mjs brief --dir /path/to/your/project
|
|
69
91
|
node bin/skillboard.mjs doctor --dir /path/to/your/project --summary
|
|
92
|
+
node bin/skillboard.mjs brief --dir /path/to/your/project --workflow <workflow-from-init>
|
|
70
93
|
```
|
|
71
|
-
|
|
72
|
-
## What init Does
|
|
73
|
-
|
|
94
|
+
|
|
95
|
+
## What init Does
|
|
96
|
+
|
|
74
97
|
`skillboard init` is the safe mutating step. npm installation itself does not
|
|
75
98
|
modify a project, but init creates the files that let agents discover the control
|
|
76
99
|
plane without a manual prompt and inventories already installed local agent
|
|
77
100
|
skills.
|
|
78
|
-
|
|
79
|
-
Created project files:
|
|
80
|
-
|
|
81
|
-
- `skillboard.config.yaml`: desired state for workflows, capabilities, skills,
|
|
82
|
-
harnesses, and install units.
|
|
83
|
-
- `skills/`: local skill root.
|
|
84
|
-
- `.skillboard/reports/`: generated dashboard and reconcile output location.
|
|
85
|
-
- `.skillboard/profiles/`: project-specific source profile location.
|
|
101
|
+
|
|
102
|
+
Created project files:
|
|
103
|
+
|
|
104
|
+
- `skillboard.config.yaml`: desired state for workflows, capabilities, skills,
|
|
105
|
+
harnesses, and install units.
|
|
106
|
+
- `skills/`: local skill root.
|
|
107
|
+
- `.skillboard/reports/`: generated dashboard and reconcile output location.
|
|
108
|
+
- `.skillboard/profiles/`: project-specific source profile location.
|
|
86
109
|
- `AGENTS.md`: Codex-style project instruction bridge.
|
|
87
110
|
- `CLAUDE.md`: Claude Code project instruction bridge.
|
|
88
111
|
|
|
@@ -97,12 +120,16 @@ manual-only` and attached to a generated local manual workflow when the project
|
|
|
97
120
|
has no workflow metadata yet. That lets a first-time user keep their existing
|
|
98
121
|
manual skills usable through `skillboard can-use` and guard checks without
|
|
99
122
|
granting automatic model invocation or creating legacy-state warning noise.
|
|
100
|
-
System, plugin, and other runtime-supplied skills are written with `status:
|
|
101
|
-
`invocation: blocked`. Plugin hooks, MCP servers, commands, and
|
|
102
|
-
recorded on the owning install unit when manifest
|
|
103
|
-
lets policy checks flag high-risk runtime
|
|
104
|
-
into loose skills.
|
|
105
|
-
|
|
123
|
+
System, plugin, and other runtime-supplied skills are written with `status:
|
|
124
|
+
quarantined` and `invocation: blocked`. Plugin hooks, MCP servers, commands, and
|
|
125
|
+
modified config files are recorded on the owning install unit when manifest
|
|
126
|
+
metadata exposes them, which lets policy checks flag high-risk runtime
|
|
127
|
+
extensions without flattening them into loose skills. After the owning source is
|
|
128
|
+
reviewed, action cards can activate a quarantined runtime skill into a workflow
|
|
129
|
+
as `manual-only`; automatic preference should still be remembered later through
|
|
130
|
+
the normal ask-after-use policy loop. Use `--no-scan-installed` for a
|
|
131
|
+
scaffold-only bootstrap, or `--scan-root <dir>[,<dir>]` to add server-specific
|
|
132
|
+
skill roots during bootstrap.
|
|
106
133
|
|
|
107
134
|
After init, run:
|
|
108
135
|
|
|
@@ -120,16 +147,30 @@ CI or automation gate. Use `--json` for an agent-readable health payload, or
|
|
|
120
147
|
report. `skillboard status` is the same report under a shorter command name.
|
|
121
148
|
|
|
122
149
|
For AI-mediated use, the generated bridge tells agents to answer availability
|
|
123
|
-
questions
|
|
124
|
-
`SKILL.md` bodies. The brief is read-only and organizes the
|
|
125
|
-
"What your AI can use now", decisions the user can make once,
|
|
126
|
-
blocks, inactive installed skills, and suggested action cards. Text
|
|
127
|
-
action cards by default; JSON keeps them opt-in with
|
|
128
|
-
default text brief is compact for large skill sets: it
|
|
129
|
-
categories, the next safe action, short section previews, and
|
|
130
|
-
summaries. Use `skillboard brief --verbose` when
|
|
131
|
-
copyable command details. Agents should still run
|
|
132
|
-
immediately before an actual skill invocation.
|
|
150
|
+
questions by reading the current brief with `skillboard brief --json`, not from
|
|
151
|
+
memory or from raw `SKILL.md` bodies. The brief is read-only and organizes the
|
|
152
|
+
response around "What your AI can use now", decisions the user can make once,
|
|
153
|
+
hard safety blocks, inactive installed skills, and suggested action cards. Text
|
|
154
|
+
briefs show action cards by default; JSON keeps them opt-in with
|
|
155
|
+
`--include-actions`. The default text brief is compact for large skill sets: it
|
|
156
|
+
keeps counts, top categories, the next safe action, short section previews, and
|
|
157
|
+
short action summaries. Use `skillboard brief --verbose` when an operator needs
|
|
158
|
+
the full list or full copyable command details. Agents should still run
|
|
159
|
+
`skillboard guard use ...` immediately before an actual skill invocation. A
|
|
160
|
+
passing guard is not a user prompt; the agent should disclose the selected skill
|
|
161
|
+
at the start and completion, and ask only if the guard denies use or a
|
|
162
|
+
policy-changing action is needed.
|
|
163
|
+
|
|
164
|
+
When the user asks which skill fits a task, the bridge tells agents to use
|
|
165
|
+
`skillboard brief --intent <request> --json`, read `assistant_guidance.route`,
|
|
166
|
+
and use `recommended_skill`, `fallback_skills`, `route_candidates`,
|
|
167
|
+
`post_use_policy_suggestion`, and `guard_command` instead of guessing from raw
|
|
168
|
+
skill text. Inspect
|
|
169
|
+
`route_candidates` when several skills match so denied candidates and selected
|
|
170
|
+
fallbacks are clear. If `post_use_policy_suggestion` is present, the agent
|
|
171
|
+
should use the allowed routed skill first, then ask after completion whether to
|
|
172
|
+
remember the suggested policy. If no skill matches, the agent should ask a
|
|
173
|
+
clarifying question before choosing a skill.
|
|
133
174
|
|
|
134
175
|
Action cards are change suggestions. Before an agent applies one that changes
|
|
135
176
|
policy, trust, hooks, reset state, or skill references, it should request user
|
|
@@ -142,7 +183,10 @@ so stale action ids and cached action-card shell text are not replayed.
|
|
|
142
183
|
For hook action cards specifically, keep `apply-action` as the action-card
|
|
143
184
|
primary flow. Raw `skillboard hook install ... --dry-run --json` previews and
|
|
144
185
|
the matching non-dry-run command are underlying manual detail for operators who
|
|
145
|
-
need to inspect or materialize an executable guard hook directly.
|
|
186
|
+
need to inspect or materialize an executable guard hook directly. Generated hooks
|
|
187
|
+
pin the install-time SkillBoard command, config, skills root, and workflow; set
|
|
188
|
+
those values with hook install options such as `--skillboard-bin`, not with
|
|
189
|
+
runtime environment overrides.
|
|
146
190
|
|
|
147
191
|
## Hermes System Prompt Bridge
|
|
148
192
|
|
|
@@ -152,20 +196,34 @@ system prompt for the managed project:
|
|
|
152
196
|
|
|
153
197
|
```text
|
|
154
198
|
Use SkillBoard as the source of truth for agent skill availability.
|
|
155
|
-
|
|
156
|
-
|
|
199
|
+
Use the workflow generated by init, such as `hermes-codex-local-manual`, or a
|
|
200
|
+
workflow you explicitly created for that Hermes profile.
|
|
201
|
+
|
|
202
|
+
Before answering what skills can be used in that workflow, run:
|
|
203
|
+
skillboard brief --workflow <workflow-name> --json --include-actions --dir /path/to/your/project
|
|
204
|
+
|
|
205
|
+
When the user asks which skill fits a task, run:
|
|
206
|
+
skillboard brief --workflow <workflow-name> --intent <request> --json --dir /path/to/your/project
|
|
207
|
+
Read assistant_guidance.route. Use recommended_skill, fallback_skills,
|
|
208
|
+
route_candidates, post_use_policy_suggestion, and guard_command. Inspect
|
|
209
|
+
route_candidates when several skills match so denied candidates and selected
|
|
210
|
+
fallbacks are clear. If post_use_policy_suggestion is present, use the allowed
|
|
211
|
+
routed skill first, then ask after completion whether to remember the suggested
|
|
212
|
+
policy. If no skill matches, ask a clarifying question before choosing a skill.
|
|
157
213
|
|
|
158
214
|
Do not infer availability from installed SKILL.md files. Immediately before
|
|
159
215
|
invoking a skill, run:
|
|
160
216
|
skillboard guard use <skill-id> --workflow <workflow-name> --dir /path/to/your/project
|
|
161
217
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
218
|
+
If the guard allows an already-approved skill, do not ask the user for another
|
|
219
|
+
approval. Say at the start: "I will use <skill-id> for this request." Say at
|
|
220
|
+
completion: "I used <skill-id> for this request." Treat that disclosure as an
|
|
221
|
+
audit trace, not a permission prompt.
|
|
166
222
|
|
|
167
|
-
|
|
168
|
-
|
|
223
|
+
For suggested policy changes, ask the user to approve one current action id from
|
|
224
|
+
the `--include-actions` brief, then run:
|
|
225
|
+
skillboard apply-action <action-id> --workflow <workflow-name> --dir /path/to/your/project --yes --json
|
|
226
|
+
```
|
|
169
227
|
|
|
170
228
|
After installing a new local agent skill pack, plugin, workflow bundle, or
|
|
171
229
|
harness, rescan before enabling anything:
|
|
@@ -275,24 +333,24 @@ may be wired into local agent/runtime configuration. Combine `--reset-config`,
|
|
|
275
333
|
SkillBoard-owned lifecycle scaffolding while preserving local `skills/`.
|
|
276
334
|
|
|
277
335
|
## Upper-Layer Control
|
|
278
|
-
|
|
279
|
-
After installing skill packs or harness bundles, represent them as install
|
|
280
|
-
units:
|
|
281
|
-
|
|
282
|
-
```bash
|
|
283
|
-
skillboard import \
|
|
284
|
-
--profile github.mattpocock.skills \
|
|
285
|
-
--source-root /path/to/mattpocock-skills \
|
|
286
|
-
--out .skillboard/reports/mattpocock-import.yaml
|
|
287
|
-
```
|
|
288
|
-
|
|
289
|
-
The import output is a reviewable YAML fragment. Merge the accepted `skills` and
|
|
290
|
-
`install_units` into `skillboard.config.yaml`; imported skills stay inactive
|
|
291
|
-
until workflows and policies explicitly use them.
|
|
292
|
-
|
|
293
|
-
For a direct but still safe apply path:
|
|
294
|
-
|
|
295
|
-
```bash
|
|
336
|
+
|
|
337
|
+
After installing skill packs or harness bundles, represent them as install
|
|
338
|
+
units:
|
|
339
|
+
|
|
340
|
+
```bash
|
|
341
|
+
skillboard import \
|
|
342
|
+
--profile github.mattpocock.skills \
|
|
343
|
+
--source-root /path/to/mattpocock-skills \
|
|
344
|
+
--out .skillboard/reports/mattpocock-import.yaml
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
The import output is a reviewable YAML fragment. Merge the accepted `skills` and
|
|
348
|
+
`install_units` into `skillboard.config.yaml`; imported skills stay inactive
|
|
349
|
+
until workflows and policies explicitly use them.
|
|
350
|
+
|
|
351
|
+
For a direct but still safe apply path:
|
|
352
|
+
|
|
353
|
+
```bash
|
|
296
354
|
skillboard import \
|
|
297
355
|
--profile github.mattpocock.skills \
|
|
298
356
|
--source-root /path/to/mattpocock-skills \
|
|
@@ -320,50 +378,50 @@ skillboard review install-unit github.mattpocock.skills \
|
|
|
320
378
|
|
|
321
379
|
Automatic invocation remains blocked for unreviewed non-user sources. The user
|
|
322
380
|
experience should still be a one-time decision queue: review, trust, or block
|
|
323
|
-
the install unit once,
|
|
324
|
-
changes.
|
|
381
|
+
the install unit once, activate only the needed quarantined skills as
|
|
382
|
+
manual-only, then revisit only when the source, skill, or workflow changes.
|
|
325
383
|
|
|
326
384
|
```yaml
|
|
327
385
|
install_units:
|
|
328
|
-
github.mattpocock.skills:
|
|
329
|
-
kind: marketplace
|
|
330
|
-
source: npx skills@latest add mattpocock/skills
|
|
331
|
-
scope: user-global
|
|
332
|
-
provided_components:
|
|
333
|
-
- skills
|
|
334
|
-
components:
|
|
335
|
-
skills:
|
|
336
|
-
- matt.tdd
|
|
337
|
-
```
|
|
338
|
-
|
|
339
|
-
Then link each governed skill back to its owner:
|
|
340
|
-
|
|
341
|
-
```yaml
|
|
342
|
-
skills:
|
|
343
|
-
matt.tdd:
|
|
344
|
-
path: matt/tdd
|
|
345
|
-
status: active
|
|
346
|
-
invocation: workflow-auto
|
|
347
|
-
exposure: exported
|
|
348
|
-
owner_install_unit: github.mattpocock.skills
|
|
349
|
-
```
|
|
350
|
-
|
|
351
|
-
Run:
|
|
352
|
-
|
|
353
|
-
```bash
|
|
354
|
-
skillboard check --config skillboard.config.yaml --skills skills
|
|
355
|
-
skillboard dashboard --config skillboard.config.yaml --skills skills --out .skillboard/reports/skill-map.md
|
|
356
|
-
```
|
|
357
|
-
|
|
358
|
-
This keeps multiple installed repositories visible as managed units instead of
|
|
359
|
-
turning every skill into a global invocation candidate.
|
|
360
|
-
|
|
361
|
-
## Adapter Direction
|
|
362
|
-
|
|
363
|
-
Import support should be profile-driven, not hardcoded. A popular source such as
|
|
364
|
-
`mattpocock/skills` or `oh-my-openagent` may ship with a built-in source profile,
|
|
365
|
-
but that profile should be data that maps repository layout and defaults into the
|
|
366
|
-
same install-unit model. Source-specific code should be limited to detector
|
|
367
|
-
plugins for layouts that cannot be described declaratively.
|
|
368
|
-
|
|
369
|
-
See [adapters.md](adapters.md).
|
|
386
|
+
github.mattpocock.skills:
|
|
387
|
+
kind: marketplace
|
|
388
|
+
source: npx skills@latest add mattpocock/skills
|
|
389
|
+
scope: user-global
|
|
390
|
+
provided_components:
|
|
391
|
+
- skills
|
|
392
|
+
components:
|
|
393
|
+
skills:
|
|
394
|
+
- matt.tdd
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
Then link each governed skill back to its owner:
|
|
398
|
+
|
|
399
|
+
```yaml
|
|
400
|
+
skills:
|
|
401
|
+
matt.tdd:
|
|
402
|
+
path: matt/tdd
|
|
403
|
+
status: active
|
|
404
|
+
invocation: workflow-auto
|
|
405
|
+
exposure: exported
|
|
406
|
+
owner_install_unit: github.mattpocock.skills
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
Run:
|
|
410
|
+
|
|
411
|
+
```bash
|
|
412
|
+
skillboard check --config skillboard.config.yaml --skills skills
|
|
413
|
+
skillboard dashboard --config skillboard.config.yaml --skills skills --out .skillboard/reports/skill-map.md
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
This keeps multiple installed repositories visible as managed units instead of
|
|
417
|
+
turning every skill into a global invocation candidate.
|
|
418
|
+
|
|
419
|
+
## Adapter Direction
|
|
420
|
+
|
|
421
|
+
Import support should be profile-driven, not hardcoded. A popular source such as
|
|
422
|
+
`mattpocock/skills` or `oh-my-openagent` may ship with a built-in source profile,
|
|
423
|
+
but that profile should be data that maps repository layout and defaults into the
|
|
424
|
+
same install-unit model. Source-specific code should be limited to detector
|
|
425
|
+
plugins for layouts that cannot be described declaratively.
|
|
426
|
+
|
|
427
|
+
See [adapters.md](adapters.md).
|