agent-skillboard 0.2.15 → 0.2.17

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 CHANGED
@@ -2,6 +2,41 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.2.17 — 2026-07-07
6
+
7
+ ### Changed
8
+
9
+ - Reworked the README opening and quick start so developers using multiple
10
+ agents, skill packs, plugins, MCP tools, or marketplaces can understand
11
+ SkillBoard's purpose and try the CLI with read-only `npm exec` commands before
12
+ installing it globally.
13
+
14
+ ### Fixed
15
+
16
+ - Kept packaged npm smoke tests compatible with Node 20 release checks that run
17
+ inside an outer `npx -p node@20 -c ...` invocation.
18
+
19
+ ## 0.2.16 — 2026-07-06
20
+
21
+ ### Changed
22
+
23
+ - Reframed SkillBoard as a permissive overlap-routing layer so agents continue
24
+ working with already-allowed skills instead of interrupting users for
25
+ pre-task settings.
26
+ - Split routing and agent-integration internals into smaller modules while
27
+ preserving the existing CLI surface.
28
+ - Setup guidance now clarifies that postinstall performs agent-layer setup only;
29
+ project initialization remains an explicit `skillboard init` step.
30
+
31
+ ### Fixed
32
+
33
+ - Hardened setup and uninstall lifecycle cleanup around symlinked managed
34
+ guidance paths and project state directories.
35
+ - Preserved Node.js 14.21 runtime compatibility by avoiding newer
36
+ `replaceAll`/`.at()` APIs in shipped runtime paths.
37
+ - Avoided macOS false positives when agent homes live below symlinked system
38
+ ancestors such as `/var`.
39
+
5
40
  ## 0.2.15 — 2026-07-03
6
41
 
7
42
  ### Fixed
package/README.md CHANGED
@@ -1,34 +1,49 @@
1
1
  # SkillBoard
2
2
 
3
- Use the right AI-agent skills without managing another checklist.
4
-
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 skill, a
8
- short disclosure of what was used, and fewer setup interruptions when skills
9
- overlap.
3
+ Keep AI-agent skills broadly available, then route overlaps consistently.
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.
10
18
 
11
19
  The burden stays low:
12
20
 
13
- - No global install is required; use `npx --yes --package agent-skillboard`.
21
+ - No global install is required for a trial; use
22
+ `npm exec --yes --package agent-skillboard@latest -- skillboard`.
14
23
  - Most use is read-only: `brief`, `route`, `doctor`, and `guard use` answer
15
- what is safe now.
24
+ what can run now and which route fits the request.
16
25
  - Nothing changes until you approve a policy action.
17
- - Project cleanup is conservative and previewable with `skillboard uninstall --dry-run`;
18
- `--purge` removes SkillBoard's policy footprint while preserving local skills.
26
+ - Project cleanup is previewable with `skillboard uninstall --dry-run`; default
27
+ uninstall removes SkillBoard settings and generated project state while
28
+ preserving local skills. Add `--keep-settings` only when you want to keep
29
+ project policy and bridge guidance.
19
30
 
20
31
  Status: public alpha. The current config schema is config schema v1; breaking
21
32
  changes may still happen before `1.0.0` and are documented in release notes.
22
33
 
23
- Under the hood, SkillBoard is workflow-scoped skill priority and routing for AI
24
- agents. Installed user skills are usable by default unless runtime, user, or
25
- local instructions disable them; SkillBoard helps agents resolve overlap,
26
- policy, and workflow priority instead of guessing from raw skill files.
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.
27
39
 
28
40
  Start with normal requests:
29
41
 
30
42
  - "What skills can you use in this project?"
31
- - "Which skill should you use to write tests first?"
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."
32
47
  - "Can you make `anthropic.docx` available for this workflow?"
33
48
  - "Why is this skill blocked?"
34
49
 
@@ -41,7 +56,7 @@ not need to memorize the SkillBoard command loop.
41
56
 
42
57
  A normal allowed-skill turn can look like this:
43
58
 
44
- - You: "Which skill should you use to write tests first?"
59
+ - You: "Write tests before implementation."
45
60
  - AI: "I will use matt.tdd for this request."
46
61
  - AI: "I used matt.tdd for this request."
47
62
 
@@ -51,12 +66,25 @@ Names you may see in setup and logs:
51
66
  - `agent-skillboard`: the npm package.
52
67
  - `skillboard`: the CLI binary.
53
68
 
54
- Use SkillBoard when your agent setup has grown beyond one trusted skill folder
55
- and you want workflow-scoped control without turning skill governance into a
56
- manual checklist. If you are changing routing, brief, bridge, policy, or
57
- workflow UX, read [AI Skill Routing Goal](docs/ai-skill-routing-goal.md) first;
58
- it defines the non-blocking `observe → route → work → explain briefly → ask
59
- after remember policy` loop that development should preserve.
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.
60
88
 
61
89
  <p align="center">
62
90
  <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%">
@@ -64,8 +92,8 @@ after → remember policy` loop that development should preserve.
64
92
 
65
93
  ## Why Not Just List `/skills`?
66
94
 
67
- A raw skill list answers what is declared. SkillBoard answers what can safely
68
- run now.
95
+ A raw skill list answers what is declared. SkillBoard answers what can run now
96
+ and how overlapping matches should route.
69
97
 
70
98
  Same fixture, different answer:
71
99
 
@@ -73,19 +101,31 @@ Same fixture, different answer:
73
101
  | --- | --- |
74
102
  | `matt.tdd active workflow-auto` | `AI can use now: 0` |
75
103
  | no policy health | `Blocked for safety: 8`, `Policy errors: 2` |
104
+ | several review skills look relevant | `Overlap: Multiple allowed skills match... routes ...` |
76
105
 
77
- That gap is the product. SkillBoard separates `installed` from `allowed`,
78
- checks policy health, and gives agents a brief they can use without guessing
106
+ That gap is the product. SkillBoard separates `installed` from `available`,
107
+ checks policy health, and gives agents a route they can use without guessing
79
108
  from raw `SKILL.md` files. The same proof also routes "write tests before
80
109
  implementation" to `matt.tdd`, returns `private.tdd-work-continuity` as the
81
- fallback, and gives the AI exact start and finish disclosure text.
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.
82
113
 
83
114
  See [Tested Value Proof](#tested-value-proof) for the executable proof.
84
115
 
85
116
  ## 5-Minute Quick Start
86
117
 
87
- Install the CLI. On a normal global install, SkillBoard auto-connects the
88
- agent layer for detected Codex, Claude, OpenCode, and Hermes user skill roots:
118
+ Try it without a global install. These read-only commands download the latest
119
+ package for one run and do not create project files:
120
+
121
+ ```bash
122
+ npm exec --yes --package agent-skillboard@latest -- skillboard --version
123
+ npm exec --yes --package agent-skillboard@latest -- skillboard help brief
124
+ ```
125
+
126
+ Install the CLI when you want SkillBoard connected to your agent layer. On a
127
+ normal global install, SkillBoard auto-connects the agent layer for detected
128
+ Codex, Claude, OpenCode, and Hermes user skill roots:
89
129
 
90
130
  AI/automation/operator details:
91
131
 
@@ -108,15 +148,18 @@ the shared Codex-visible skill tree in LazyCodex-style environments.
108
148
  It does not create `skillboard.config.yaml`,
109
149
  `.skillboard/`, `AGENTS.md`, or `CLAUDE.md` in projects.
110
150
  No separate setup command is required after a normal global install or update:
111
- npm lifecycle scripts rerun the agent-home scan, refresh managed SkillBoard
112
- guidance files, and add newly detected supported agent roots.
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 does not run `skillboard init`; use `init`
154
+ only inside a workspace where you want project-local policy files.
113
155
 
114
156
  Run `skillboard setup --agent codex,claude,opencode,hermes --yes` later only
115
157
  after adding another supported agent, enabling a new agent home, or installing
116
158
  with lifecycle scripts disabled. Restart or refresh agents that cache user
117
159
  skills, then ask normal questions:
118
160
 
119
- - "Which skill should you use to write tests first?"
161
+ - "Write tests before implementation."
162
+ - "Review this plan and point out weak assumptions."
120
163
  - "What skills can you use here?"
121
164
  - "Use the Codex test-first skill in OpenCode too."
122
165
  - "When two skills overlap, which one should take priority?"
@@ -129,7 +172,8 @@ before creating an adapted target-agent `SKILL.md` and installs that file with
129
172
  provenance.
130
173
 
131
174
  If you intentionally maintain local workspace policy files, use the explicit
132
- operator commands for that layer:
175
+ operator commands for that layer. `skillboard init` is needed only for a
176
+ workspace where you want project-local policy, bridge guidance, and reports:
133
177
 
134
178
  ```bash
135
179
  npx --yes --package agent-skillboard skillboard init
@@ -137,26 +181,39 @@ npx --yes --package agent-skillboard skillboard doctor --summary
137
181
  npx --yes --package agent-skillboard skillboard brief --workflow <workflow-from-init>
138
182
  ```
139
183
 
140
- Remove the project bridge when you are done:
184
+ Remove SkillBoard from a project when you are done:
141
185
 
142
186
  ```bash
143
187
  npx --yes --package agent-skillboard skillboard uninstall --dir /path/to/your/project --dry-run
144
188
  npx --yes --package agent-skillboard skillboard uninstall --dir /path/to/your/project
145
189
  ```
146
190
 
147
- Uninstall preserves local skills and policy files by default, and reports what
148
- it removed or preserved.
191
+ Default project uninstall removes SkillBoard config, bridge guidance, and
192
+ `.skillboard/` project state while preserving local `skills/*/SKILL.md` files.
193
+ It reports what it removed or preserved.
194
+
195
+ ```bash
196
+ npx --yes --package agent-skillboard skillboard uninstall --dir /path/to/your/project --keep-settings --dry-run
197
+ npx --yes --package agent-skillboard skillboard uninstall --dir /path/to/your/project --keep-settings
198
+ ```
199
+
200
+ Use `--keep-settings` only when you want to keep project SkillBoard policy and
201
+ bridge guidance in place, for example while cleaning generated helper files.
202
+ `--purge` remains accepted as an explicit spelling for the default clean
203
+ project removal.
149
204
 
150
- Remove SkillBoard's policy influence entirely while keeping local skill files:
205
+ Remove SkillBoard's managed agent-layer guidance before package removal when
206
+ you want agent homes back to their pre-SkillBoard guidance state:
151
207
 
152
208
  ```bash
153
- npx --yes --package agent-skillboard skillboard uninstall --dir /path/to/your/project --purge --dry-run
154
- npx --yes --package agent-skillboard skillboard uninstall --dir /path/to/your/project --purge
209
+ npx --yes --package agent-skillboard skillboard uninstall --agent-layer --dry-run
210
+ npx --yes --package agent-skillboard skillboard uninstall --agent-layer
211
+ npm uninstall -g agent-skillboard
155
212
  ```
156
213
 
157
- `--purge` deletes SkillBoard config, bridge blocks, and the entire
158
- `.skillboard/` project state directory while leaving `skills/*/SKILL.md` in
159
- place.
214
+ Agent-layer uninstall removes only managed `skillboard/SKILL.md` guidance files
215
+ that contain SkillBoard's integration marker. It preserves other agent skills
216
+ and user-authored `skillboard` skills.
160
217
 
161
218
  See [docs/install.md](docs/install.md) for global installs, `--dir`, GitHub
162
219
  builds, clone-based development, Hermes bridge setup, refresh, and uninstall.
@@ -164,10 +221,11 @@ builds, clone-based development, Hermes bridge setup, refresh, and uninstall.
164
221
  ## What SkillBoard Gives You
165
222
 
166
223
  - Inventory that separates installed skills from callable skills.
167
- - Workflow-scoped policy instead of global "everything is active" behavior.
224
+ - Broad default availability with workflow-scoped overlap routing.
168
225
  - `brief`, `route`, `can-use`, and `guard use` surfaces for AI-mediated selection and availability.
169
226
  - `import-skill` for agent-layer skill reuse across Codex, Claude, OpenCode, and Hermes.
170
- - Workflow conflict checks so overlapping skills cannot quietly degrade an answer.
227
+ - Workflow conflict checks and overlap summaries so similar skills stay
228
+ available without quietly degrading an answer.
171
229
  - Action cards that apply one approved policy change, then re-resolve state.
172
230
  - Source and install-unit review for plugins, hooks, MCP servers, harnesses,
173
231
  commands, LSPs, and package-manager dependencies.
@@ -8,7 +8,8 @@ if (isTruthy(process.env.SKILLBOARD_SKIP_POSTINSTALL)) {
8
8
 
9
9
  process.stderr.write(`${[
10
10
  "SkillBoard installed or updated.",
11
- "It does not change agent configs or project files.",
11
+ "It can refresh user-agent guidance on global installs, but it does not initialize projects.",
12
+ "Run skillboard init only inside a workspace where you want project-local policy files.",
12
13
  ""
13
14
  ].join("\n")}\n`);
14
15
 
@@ -18,7 +19,8 @@ if (!shouldAutoSetup(process.env)) {
18
19
  "Run skillboard setup later after adding another supported agent:",
19
20
  " skillboard setup",
20
21
  "",
21
- "Setup only writes user agent skill files and does not initialize projects.",
22
+ "Setup only writes user agent skill files. It does not create skillboard.config.yaml or .skillboard/.",
23
+ "Run skillboard init later only for a project that needs local SkillBoard policy.",
22
24
  ""
23
25
  ].join("\n")}`);
24
26
  process.exit(0);
@@ -40,7 +42,7 @@ try {
40
42
  packageSpec: "agent-skillboard"
41
43
  });
42
44
  if (exitCode === 0) {
43
- process.stderr.write("Agent setup complete. Package updates rerun this setup automatically; run skillboard setup later after adding another supported agent.\n");
45
+ process.stderr.write("Agent setup complete. Package updates rerun this setup automatically; run skillboard setup later after adding another supported agent. No project init was run.\n");
44
46
  } else {
45
47
  process.stderr.write("Agent setup did not find supported agent homes. Run skillboard setup after installing or enabling a supported agent.\n");
46
48
  }
@@ -1,12 +1,13 @@
1
1
  # AI Skill Routing Goal
2
2
 
3
- SkillBoard's product goal is to be a **non-blocking AI skill routing control plane**. It should help an AI decide which skills and workflow policies apply to the current task without turning normal work into a settings session.
3
+ SkillBoard's product goal is to be a **permissive AI skill routing layer**. It keeps installed skills broadly available by default, then gives the AI a deterministic route when multiple skills could steer the same task. It should help an AI decide which skills and workflow policies apply to the current task without turning normal work into a settings session.
4
4
 
5
5
  This document is the goal reference for product work, routing changes, AI-facing brief changes, bridge updates, policy UX, and workflow UX.
6
6
 
7
7
  ## Core principle
8
8
 
9
- SkillBoard should keep the user's work moving by default.
9
+ SkillBoard should keep the user's work moving by default. Broadly available
10
+ skills are normal; deterministic overlap resolution is the value.
10
11
 
11
12
  The preferred loop is:
12
13
 
@@ -17,7 +18,7 @@ observe → route → work → explain briefly → ask after → remember policy
17
18
  That means:
18
19
 
19
20
  1. **Observe** the user's request and current workflow context.
20
- 2. **Route** to the most appropriate allowed skill or workflow policy without asking first when the risk is low.
21
+ 2. **Route** to the most appropriate allowed skill or workflow policy without asking first when the risk is low, especially when several similar skills match.
21
22
  3. **Work** normally so SkillBoard does not become a pre-task settings checklist.
22
23
  4. **Explain briefly** which skill was used or skipped, only at the level needed for trust.
23
24
  5. **Ask after** the task when the routing choice was ambiguous, recurring, or likely to become a useful preference.
@@ -33,9 +34,18 @@ SkillBoard should not:
33
34
  - require users to memorize the SkillBoard command loop;
34
35
  - infer permission from raw installed `SKILL.md` files;
35
36
  - silently let overlapping skills contaminate an answer;
37
+ - make the default model feel deny-first when the user's skill set is already allowed;
36
38
  - mutate skill body content when a usage policy would solve the problem;
37
39
  - turn every allowed skill invocation into a permission prompt.
38
40
 
41
+ ## Simplification rule
42
+
43
+ Do not simplify by deleting concepts blindly. Keep a concept only when it
44
+ justifies itself against SkillBoard's routing identity: routing, overlap
45
+ resolution, policy memory, or a less interruptive user flow. Concepts that do
46
+ not pass that test should be removed, merged, or renamed into the smaller
47
+ surface that does.
48
+
39
49
  ## What SkillBoard controls
40
50
 
41
51
  SkillBoard controls **when and how a skill may influence an AI workflow**.
@@ -47,6 +57,7 @@ The control object is a usage policy, not the skill body itself:
47
57
  - user, project, or team scope;
48
58
  - preferred and fallback skills;
49
59
  - exclusion rules;
60
+ - overlap resolution summaries;
50
61
  - confidence or ambiguity thresholds;
51
62
  - disclosure and guard behavior;
52
63
  - pending policy suggestions to review later.
@@ -105,6 +116,7 @@ A change moves SkillBoard toward this goal when:
105
116
 
106
117
  - ordinary allowed-skill work proceeds without a pre-task skill-selection prompt;
107
118
  - ambiguous but low-risk choices can be handled with ask-after-use policy suggestions;
119
+ - multiple allowed matching skills stay available while the routed skill is deterministic;
108
120
  - risky or policy-changing actions still require explicit confirmation before apply;
109
121
  - `brief --json` gives AI integrations a stable way to discover the goal document and routing guidance;
110
122
  - text output stays compact by default and reserves verbose detail for explicit requests;
package/docs/install.md CHANGED
@@ -3,13 +3,15 @@
3
3
  SkillBoard sits one layer above skill installers, plugin marketplaces, harness
4
4
  bundles, and local skill repositories.
5
5
 
6
- After install, ask your AI questions like "what skills can you use here?" or
7
- "which skill should you use for this task?" The AI runs SkillBoard behind the
8
- scenes when skill choices overlap or workflow priority matters. Installed user
9
- skills are usable by default unless runtime, user, or local instructions disable
10
- them; SkillBoard should not turn every skill choice into a permission prompt.
11
- When it selects a skill, the AI should briefly say which skill it will use and
12
- which skill it used. You do not need to memorize the SkillBoard command loop.
6
+ After install, ask your AI normal work requests such as "write tests before
7
+ implementation", "review this plan and point out weak assumptions", or "help me
8
+ refine this UX flow." The AI runs SkillBoard behind the scenes only when skill
9
+ choices overlap, workflow priority matters, or you explicitly ask for a
10
+ SkillBoard or skill decision. Installed user skills are usable by default unless
11
+ runtime, user, or local instructions disable them; SkillBoard should not turn
12
+ every skill choice into a permission prompt. When it selects a skill, the AI
13
+ should briefly say which skill it will use and which skill it used. You do not
14
+ need to memorize the SkillBoard command loop.
13
15
 
14
16
  ## Install From npm
15
17
 
@@ -17,7 +19,9 @@ Global install auto-runs agent integration. Installing the package makes the
17
19
  CLI available and the postinstall step runs agent-layer setup for detected
18
20
  Codex, Claude, OpenCode, and Hermes user skill roots. The setup is best-effort:
19
21
  it never fails the package install, does not edit agent config files, and does
20
- not create project policy files.
22
+ not create project policy files. It does not run `skillboard init`; run `init`
23
+ only inside a workspace where you want local SkillBoard policy, bridge guidance,
24
+ and reports.
21
25
 
22
26
  The published CLI supports Node.js 14.21 or newer. Node 12 and older are not
23
27
  supported without a transpiled bundle because the source uses modern ESM and
@@ -219,16 +223,24 @@ passing guard is not a user prompt; the agent should disclose the selected skill
219
223
  at the start and completion, and ask only if the guard denies use or a
220
224
  policy-changing action is needed.
221
225
 
222
- When the user asks which skill fits a task, the bridge tells agents to use
223
- `skillboard brief --intent <request> --json`, read `assistant_guidance.route`,
224
- and use `recommended_skill`, `fallback_skills`, `route_candidates`,
226
+ When a normal request leaves skill choice ambiguous, several skills overlap,
227
+ workflow priority matters, or the user asks for a SkillBoard or skill decision,
228
+ the bridge tells agents to use `skillboard brief --intent <request> --json`,
229
+ read `assistant_guidance.route`, and use `recommended_skill`, `fallback_skills`,
230
+ `route_candidates`, `overlap_resolution`, `policy_memory`,
225
231
  `post_use_policy_suggestion`, and `guard_command` instead of guessing from raw
226
232
  skill text. Inspect
227
- `route_candidates` when several skills match so denied candidates and selected
228
- fallbacks are clear. If `post_use_policy_suggestion` is present, the agent
229
- should use the allowed routed skill first, then ask after completion whether to
230
- remember the suggested policy. If no skill matches, the agent should ask a
231
- clarifying question before choosing a skill.
233
+ `overlap_resolution` and `route_candidates` when several skills match so
234
+ allowed overlap, denied candidates, and selected fallbacks are clear. If
235
+ `policy_memory` is present, the agent should mention after completion that
236
+ remembered or configured policy selected this skill even though other allowed
237
+ skills were available. If
238
+ `post_use_policy_suggestion` is present, the agent should use the allowed
239
+ routed skill first, then ask after completion whether to remember the suggested
240
+ policy. If no skill matches, the agent should ask a clarifying question before
241
+ choosing a skill. If the user explicitly requests a specific already-allowed
242
+ skill, the agent should honor that request after guard use instead of rerouting
243
+ away solely because another skill also matches.
232
244
 
233
245
  Action cards are change suggestions. Before an agent applies one that changes
234
246
  policy, trust, hooks, reset state, or skill references, it should request user
@@ -260,14 +272,24 @@ workflow you explicitly created for that Hermes profile.
260
272
  Before answering what skills can be used in that workflow, run:
261
273
  skillboard brief --workflow <workflow-name> --json --include-actions --dir /path/to/your/project
262
274
 
263
- When the user asks which skill fits a task, run:
275
+ When a normal request leaves skill choice ambiguous, several skills overlap,
276
+ workflow priority matters, or the user asks for a SkillBoard or skill decision,
277
+ run:
264
278
  skillboard brief --workflow <workflow-name> --intent <request> --json --dir /path/to/your/project
265
279
  Read assistant_guidance.route. Use recommended_skill, fallback_skills,
266
- route_candidates, post_use_policy_suggestion, and guard_command. Inspect
267
- route_candidates when several skills match so denied candidates and selected
268
- fallbacks are clear. If post_use_policy_suggestion is present, use the allowed
269
- routed skill first, then ask after completion whether to remember the suggested
270
- policy. If no skill matches, ask a clarifying question before choosing a skill.
280
+ route_candidates, overlap_resolution, policy_memory,
281
+ post_use_policy_suggestion, and guard_command. Inspect overlap_resolution and
282
+ route_candidates when several skills match so allowed overlap, denied
283
+ candidates, and selected fallbacks are clear. If policy_memory is present,
284
+ mention after completion that remembered or configured policy selected this
285
+ skill even though other allowed skills were available. If
286
+ post_use_policy_suggestion is present, use the allowed routed skill first, then
287
+ ask after completion whether to remember the suggested policy. If no skill
288
+ matches, ask a clarifying question before choosing a skill.
289
+
290
+ If the user explicitly requests a specific already-allowed skill, honor that
291
+ request after guard use instead of rerouting away solely because another skill
292
+ also matches.
271
293
 
272
294
  Do not infer availability from installed SKILL.md files. Immediately before
273
295
  invoking a skill, run:
@@ -345,66 +367,74 @@ GitHub `org/repo` shorthands, and `file://` Git remotes. It writes the refreshed
345
367
  checkout under `.skillboard/sources/<install-unit-id>`, updates `cache_path`,
346
368
  `source_digest`, and `verified_at`, and leaves the config untouched on dry-run.
347
369
 
348
- ## Uninstall From A Project
370
+ ## Uninstall Agent Guidance Or Project State
371
+
372
+ Package removal, agent guidance cleanup, and project cleanup are intentionally
373
+ separate. `npm uninstall -g agent-skillboard` removes the CLI package, but npm
374
+ uninstall should not be relied on to edit agent homes or projects. If you want
375
+ the postinstall-created user-agent guidance removed, run the agent-layer cleanup
376
+ while the `skillboard` binary is still available:
377
+
378
+ ```bash
379
+ skillboard uninstall --agent-layer --dry-run
380
+ skillboard uninstall --agent-layer
381
+ npm uninstall -g agent-skillboard
382
+ ```
383
+
384
+ Agent-layer uninstall removes only managed `skillboard/SKILL.md` guidance files
385
+ that contain SkillBoard's agent integration marker. It preserves other agent
386
+ skills and user-authored `skillboard` skills that do not contain that marker.
387
+ Use `--agent codex,claude,opencode,hermes` to target specific supported agents.
349
388
 
350
- Package removal and project cleanup are intentionally separate. `npm uninstall
351
- -g agent-skillboard` removes the CLI package, but it does not edit a project.
352
- Use the project cleanup command when you want to remove the bridge files created
353
- by init:
389
+ Use the project cleanup command when you want to remove SkillBoard from a
390
+ project:
354
391
 
355
392
  ```bash
356
393
  skillboard uninstall --dir /path/to/your/project --dry-run
357
394
  skillboard uninstall --dir /path/to/your/project
358
395
  ```
359
396
 
360
- Default uninstall behavior is conservative:
397
+ Default project uninstall is a clean removal:
361
398
 
362
- - removes only the `BEGIN SKILLBOARD` / `END SKILLBOARD` bridge block from
363
- `AGENTS.md` and `CLAUDE.md`;
399
+ - removes SkillBoard config, bridge blocks, and the entire `.skillboard/`
400
+ project state directory;
364
401
  - deletes a bridge file only when it has no user content left;
365
- - deletes `.skillboard/profiles/README.md` and `.skillboard/hooks/README.md`
366
- only when they still exactly match the generated text;
367
- - removes empty generated directories;
368
- - preserves `skillboard.config.yaml`, local skill files, reports, generated guard
369
- hooks, and modified files by default. Empty generated directories can be
370
- removed.
402
+ - preserves user-authored non-SkillBoard content in `AGENTS.md` and
403
+ `CLAUDE.md`;
404
+ - preserves local `skills/*/SKILL.md` files because skill creation and deletion
405
+ are outside the uninstall scope.
371
406
 
372
- Use `--purge` when you want SkillBoard's influence removed from the project
373
- instead of merely disconnecting the bridge:
407
+ Use `--keep-settings` only when you want to keep project SkillBoard policy and
408
+ bridge guidance in place:
374
409
 
375
410
  ```bash
376
- skillboard uninstall --dir /path/to/your/project --purge --dry-run
377
- skillboard uninstall --dir /path/to/your/project --purge
411
+ skillboard uninstall --dir /path/to/your/project --keep-settings --dry-run
412
+ skillboard uninstall --dir /path/to/your/project --keep-settings
378
413
  ```
379
414
 
380
- `--purge` removes SkillBoard config, bridge blocks, and the entire
381
- `.skillboard/` project state directory, including reports, hooks, source caches,
382
- rollout logs, variant snapshots, and profiles. It preserves local `skills/`
383
- files because skills that were created or deleted are outside the uninstall
384
- scope.
385
-
386
- Use `--remove-config` to delete `skillboard.config.yaml` only when it still
387
- matches the untouched default config. If the config contains scanned skills or
388
- user edits, uninstall preserves it and reports it under `Preserved`.
389
-
390
- Use `--reset-config` only when you intentionally want to discard the current
391
- SkillBoard policy state and run `skillboard init` again from a fresh lifecycle.
392
- This removes `skillboard.config.yaml` even when it contains imported skills or
393
- workflow edits, but it still preserves local `skills/` files, reports, and
394
- user-authored bridge content.
395
-
396
- Add `--remove-reports` when a test reset should also delete generated
397
- `.skillboard/reports/` output. This flag is explicit because reports may contain
398
- review notes or other user-authored context. Local `skills/` files are still
399
- preserved.
400
-
401
- Add `--remove-hooks` only when a reset should also delete the entire
402
- `.skillboard/hooks/` directory contents. This is explicit because hook scripts
403
- may be wired into local agent/runtime configuration. Combine `--reset-config`,
404
- `--remove-reports`, and `--remove-hooks` for a clean test reset that removes
405
- the most common SkillBoard-owned lifecycle scaffolding while preserving local
406
- `skills/`. Use `--purge` instead when no `.skillboard/` project state should
407
- remain at all.
415
+ `--keep-settings` preserves `skillboard.config.yaml`, project bridge guidance,
416
+ reports, generated guard hooks, and modified project state. It is the explicit
417
+ opt-in when project policy and guidance should survive package cleanup.
418
+
419
+ `--purge` is still accepted as an explicit spelling for the default clean
420
+ project removal. Default removal and `--purge` both remove `.skillboard/`,
421
+ including reports, hooks, source caches, rollout logs, variant snapshots, and
422
+ profiles.
423
+
424
+ The older granular flags are still supported for scripts that assembled cleanup
425
+ piecemeal. Passing `--remove-config`, `--reset-config`, `--remove-reports`, or
426
+ `--remove-hooks` without `--purge` runs a partial cleanup instead of the default
427
+ clean project removal:
428
+
429
+ - `--remove-config` deletes `skillboard.config.yaml` only when it still matches
430
+ the generated default;
431
+ - `--reset-config` deletes `skillboard.config.yaml` even when it contains policy
432
+ choices;
433
+ - `--remove-reports` deletes `.skillboard/reports/`;
434
+ - `--remove-hooks` deletes `.skillboard/hooks/`.
435
+
436
+ For ordinary users, the default project uninstall is already the clean reset that
437
+ removes SkillBoard-owned lifecycle scaffolding while preserving local `skills/`.
408
438
 
409
439
  ## Upper-Layer Control
410
440
 
@@ -2,7 +2,8 @@
2
2
 
3
3
  ## Problem
4
4
 
5
- AI agent skills are easy to install but hard to govern.
5
+ AI agent skills are easy to install but hard to route consistently once several
6
+ similar skills are broadly available.
6
7
 
7
8
  Users lose confidence when they cannot tell:
8
9
 
@@ -17,10 +18,11 @@ Users lose confidence when they cannot tell:
17
18
 
18
19
  ## Product Definition
19
20
 
20
- SkillBoard is a workflow-scoped skill control board with a reconciler.
21
+ SkillBoard is a workflow-scoped skill routing board with a reconciler.
21
22
 
22
- It is not primarily a skill catalog. It is an operations layer that turns a
23
- skill repository into a visible, policy-checked system. Users define intent and
23
+ It is not primarily a skill catalog or a deny-first permission wall. It is an
24
+ operations layer that keeps skills broadly usable, turns overlap into a visible
25
+ route, and still checks policy before invocation. Users define intent and
24
26
  policy; SkillBoard interprets drift between desired state and actual state.
25
27
 
26
28
  ## Adjacent Tools
@@ -90,5 +92,5 @@ obvious safe defaults and only ask for important decisions:
90
92
  - removed skills: show affected workflows and fallback capabilities;
91
93
  - changed harnesses: show missing commands and migration hints;
92
94
  - new harnesses: disable by default until explicitly assigned;
93
- - duplicate skills: group by capability and recommend a canonical
94
- implementation.
95
+ - duplicate or overlapping skills: group by capability, keep allowed skills
96
+ available, and recommend a canonical route for the current workflow.