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
|
@@ -1,124 +1,50 @@
|
|
|
1
1
|
# AI Skill Routing Goal
|
|
2
2
|
|
|
3
|
-
SkillBoard
|
|
3
|
+
SkillBoard is a user-level, non-blocking control plane for skill availability,
|
|
4
|
+
cross-agent sharing, and overlap routing. It asks only two policy questions:
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
1. Is the skill enabled or disabled?
|
|
7
|
+
2. Should SkillBoard share this skill with other supported agents?
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
Installed, valid skills default to enabled and agent-local. A user may disable
|
|
10
|
+
a skill or opt that individual skill into sharing. An optional preference ranks
|
|
11
|
+
enabled candidates that are actually installed for the current agent;
|
|
12
|
+
preference never changes availability or copies files.
|
|
8
13
|
|
|
9
|
-
|
|
10
|
-
skills are normal; deterministic overlap resolution is the value.
|
|
14
|
+
## Product loop
|
|
11
15
|
|
|
12
|
-
|
|
16
|
+
Preserve `observe → route → work → explain briefly → ask after → remember`.
|
|
17
|
+
Ordinary work must not stop for source review or pre-task configuration. Read
|
|
18
|
+
the current brief when skills overlap, run the guard before use, and ask
|
|
19
|
+
once only before a persistent policy change.
|
|
13
20
|
|
|
14
|
-
|
|
15
|
-
observe → route → work → explain briefly → ask after → remember policy
|
|
16
|
-
```
|
|
21
|
+
## Boundaries
|
|
17
22
|
|
|
18
|
-
|
|
23
|
+
Source, provenance, digest, aliases, install-unit details, and risk are optional
|
|
24
|
+
audit metadata and never determine availability. They belong in generated
|
|
25
|
+
inventory and audit output, not user policy.
|
|
19
26
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
4. **Explain briefly** which skill was used or skipped, only at the level needed for trust.
|
|
24
|
-
5. **Ask after** the task when the routing choice was ambiguous, recurring, or likely to become a useful preference.
|
|
25
|
-
6. **Remember policy** as usage guidance for future turns.
|
|
27
|
+
Runtime and action authorization are outside SkillBoard's scope. The active
|
|
28
|
+
agent or harness remains responsible for hooks, MCP servers, commands, network
|
|
29
|
+
access, external writes, destructive actions, and secrets.
|
|
26
30
|
|
|
27
|
-
|
|
31
|
+
SkillBoard does not rewrite `SKILL.md` bodies. It records enablement, explicit
|
|
32
|
+
sharing, and optional routing preference. Agent presence (`installed_on`) is
|
|
33
|
+
generated inventory, not user-managed policy.
|
|
28
34
|
|
|
29
|
-
SkillBoard does not
|
|
30
|
-
|
|
31
|
-
SkillBoard
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
- require users to memorize the SkillBoard command loop;
|
|
35
|
-
- infer permission from raw installed `SKILL.md` files;
|
|
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;
|
|
38
|
-
- mutate skill body content when a usage policy would solve the problem;
|
|
39
|
-
- turn every allowed skill invocation into a permission prompt.
|
|
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
|
-
|
|
49
|
-
## What SkillBoard controls
|
|
50
|
-
|
|
51
|
-
SkillBoard controls **when and how a skill may influence an AI workflow**.
|
|
52
|
-
|
|
53
|
-
The control object is a usage policy, not the skill body itself:
|
|
54
|
-
|
|
55
|
-
- task or intent triggers;
|
|
56
|
-
- workflow scope;
|
|
57
|
-
- user, project, or team scope;
|
|
58
|
-
- preferred and fallback skills;
|
|
59
|
-
- exclusion rules;
|
|
60
|
-
- overlap resolution summaries;
|
|
61
|
-
- confidence or ambiguity thresholds;
|
|
62
|
-
- disclosure and guard behavior;
|
|
63
|
-
- pending policy suggestions to review later.
|
|
64
|
-
|
|
65
|
-
## Skill usage modes
|
|
66
|
-
|
|
67
|
-
Use these terms when designing routing, docs, brief output, or policy UX:
|
|
68
|
-
|
|
69
|
-
- **Always use** — apply the skill automatically for a clearly scoped situation.
|
|
70
|
-
- **Prefer** — choose this skill first when several skills match.
|
|
71
|
-
- **Reference only** — read the skill as background guidance, but do not let its format or workflow dominate the final answer.
|
|
72
|
-
- **Ask after use** — use the skill for low-risk ambiguous work, then ask whether to remember that choice.
|
|
73
|
-
- **Ask before use** — ask first only when the action is risky, policy-changing, expensive, destructive, or externally visible.
|
|
74
|
-
- **Avoid** — do not use the skill in a scoped situation unless the user explicitly asks.
|
|
75
|
-
- **Block** — never use the skill while the policy remains in force.
|
|
76
|
-
|
|
77
|
-
## User-facing flow
|
|
78
|
-
|
|
79
|
-
A normal user should be able to talk to their AI naturally:
|
|
80
|
-
|
|
81
|
-
```text
|
|
82
|
-
User: "Help me refine this UX flow."
|
|
83
|
-
AI: works using the routed skills.
|
|
84
|
-
AI: "I used command-flow-ux-audit as the primary reference and left TDD skills out because this was not a code-editing task. Should I treat that as the default for UX-flow requests?"
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
The confirmation is intentionally small and late. It records a policy preference without interrupting the work that caused the user to ask for help.
|
|
88
|
-
|
|
89
|
-
## AI-facing behavior
|
|
90
|
-
|
|
91
|
-
AI integrations should:
|
|
92
|
-
|
|
93
|
-
- read the current SkillBoard brief before making skill availability claims;
|
|
94
|
-
- route from the current request and workflow instead of searching raw skill bodies;
|
|
95
|
-
- run the guard automatically immediately before invoking an allowed skill;
|
|
96
|
-
- disclose allowed skill use at the start and completion;
|
|
97
|
-
- ask the user before applying policy-changing action cards;
|
|
98
|
-
- reread the post-apply brief before making another availability claim;
|
|
99
|
-
- propose remembered policy only when the user has seen enough context to judge the result.
|
|
35
|
+
`shared: false` means SkillBoard does not propagate the skill. It does not
|
|
36
|
+
remove or quarantine copies that the user or another tool installed. With
|
|
37
|
+
`shared: true`, SkillBoard materializes a managed shared source and compatible
|
|
38
|
+
managed copies for supported agents, while preserving every agent-owned
|
|
39
|
+
original.
|
|
100
40
|
|
|
101
41
|
## Development rule
|
|
102
42
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
observe → route → work → explain briefly → ask after → remember policy
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
When in doubt, prefer a small usage-policy change over skill-body mutation or a larger pre-task setup flow.
|
|
112
|
-
|
|
113
|
-
## MVP acceptance criteria
|
|
114
|
-
|
|
115
|
-
A change moves SkillBoard toward this goal when:
|
|
43
|
+
Every route, brief, guard, dashboard, generated bridge, and policy mutation must
|
|
44
|
+
project the same v2 meaning. Normal commands use one home control plane from any
|
|
45
|
+
working directory; project initialization is not part of the v2 flow. Never
|
|
46
|
+
reintroduce source reputation, workflow scope, or legacy state fields as hidden
|
|
47
|
+
authorization checks.
|
|
116
48
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
- multiple allowed matching skills stay available while the routed skill is deterministic;
|
|
120
|
-
- risky or policy-changing actions still require explicit confirmation before apply;
|
|
121
|
-
- `brief --json` gives AI integrations a stable way to discover the goal document and routing guidance;
|
|
122
|
-
- text output stays compact by default and reserves verbose detail for explicit requests;
|
|
123
|
-
- users can understand why a skill was used, skipped, or blocked;
|
|
124
|
-
- SkillBoard records usage policy separately from skill body content.
|
|
49
|
+
Version 1 is migration input only. It has a one-release read-only window in the
|
|
50
|
+
v0.3 release and is removed in v0.4.0.
|
package/docs/capabilities.md
CHANGED
|
@@ -1,113 +1,26 @@
|
|
|
1
|
-
# Capabilities
|
|
1
|
+
# Capabilities and Preferences
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Policy schema v2 does not use capabilities for authorization. Availability is
|
|
4
|
+
an enabled policy entry plus observed installation on the current agent.
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
1. **Global capability catalog** in `skillboard.config.yaml` (`capabilities`)
|
|
8
|
-
2. **Workflow-scoped requirements** under each workflow (`required_capabilities`)
|
|
9
|
-
|
|
10
|
-
## Global Capability Catalog
|
|
11
|
-
|
|
12
|
-
The global catalog defines a capability once for the whole project.
|
|
13
|
-
|
|
14
|
-
```yaml
|
|
15
|
-
capabilities:
|
|
16
|
-
requirement-clarification:
|
|
17
|
-
canonical: meerkat.requirement-intake
|
|
18
|
-
alternatives:
|
|
19
|
-
- matt.grill-me
|
|
20
|
-
- matt.grill-with-docs
|
|
21
|
-
default_policy: router-only
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
- `canonical`: the preferred skill for this capability.
|
|
25
|
-
- `alternatives`: other skills that may satisfy the same capability.
|
|
26
|
-
- `default_policy`: the suggested invocation policy when a workflow requires the capability but does not override it.
|
|
27
|
-
|
|
28
|
-
The catalog is used for project-wide policy checks, such as:
|
|
29
|
-
|
|
30
|
-
- Is the canonical skill declared?
|
|
31
|
-
- Does a skill that claims `canonical_for` actually match the catalog?
|
|
32
|
-
- Are fallback or alternative skill references valid?
|
|
33
|
-
|
|
34
|
-
## Workflow-Scoped Requirements
|
|
35
|
-
|
|
36
|
-
A workflow can require a capability and pin how it should be resolved.
|
|
37
|
-
|
|
38
|
-
```yaml
|
|
39
|
-
workflows:
|
|
40
|
-
requirement-review:
|
|
41
|
-
required_capabilities:
|
|
42
|
-
requirement-clarification:
|
|
43
|
-
preferred: meerkat.requirement-intake
|
|
44
|
-
fallback:
|
|
45
|
-
- matt.grill-with-docs
|
|
46
|
-
policy: router-only
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
- `preferred`: the skill to use first for this workflow.
|
|
50
|
-
- `fallback`: ordered alternatives if the preferred skill is unavailable or blocked.
|
|
51
|
-
- `policy`: invocation mode that applies when the capability is resolved in this workflow.
|
|
52
|
-
|
|
53
|
-
## Resolution Flow
|
|
54
|
-
|
|
55
|
-
When a workflow is selected, SkillBoard resolves each required capability like this:
|
|
56
|
-
|
|
57
|
-
```
|
|
58
|
-
workflow.required_capabilities
|
|
59
|
-
│
|
|
60
|
-
▼
|
|
61
|
-
capability name
|
|
62
|
-
│
|
|
63
|
-
▼
|
|
64
|
-
lookup global catalog (capabilities.<name>)
|
|
65
|
-
│
|
|
66
|
-
▼
|
|
67
|
-
preferred in workflow? ──yes──► use workflow.preferred with workflow.policy
|
|
68
|
-
│
|
|
69
|
-
no
|
|
70
|
-
▼
|
|
71
|
-
use catalog.canonical with workflow.policy
|
|
72
|
-
│
|
|
73
|
-
▼
|
|
74
|
-
fallback order: workflow.fallback, then catalog.alternatives
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
If no preferred skill is set in the workflow, the global catalog's canonical skill is used. Fallbacks are checked in order: first the workflow's own fallback list, then the global alternatives.
|
|
78
|
-
|
|
79
|
-
## Explicit Skill Variants
|
|
80
|
-
|
|
81
|
-
Use `skillboard variant add claude.a --from a --capability task-review --workflow claude-workflow --path claude/a ...` to record a user-approved `a -> claude.a` variant. SkillBoard adds the variant to the capability alternatives, makes it preferred for the named workflow, and keeps the base skill available as fallback.
|
|
82
|
-
|
|
83
|
-
This is policy registration, not prompt migration. For a reviewed manual adaptation lifecycle, run `skillboard variant fork <variant-id>` to create a draft and raw snapshot, edit the variant body by hand, inspect `skillboard variant status <variant-id>` for `variant.status` and computed drift, then use `skillboard variant approve <variant-id>` or `skillboard variant reset <variant-id>`. SkillBoard records user-approved variants and consistent workflow policy across agents; it does not convert skill bodies, does not rewrite skill bodies, and does not guarantee semantic equivalence of skill bodies.
|
|
84
|
-
|
|
85
|
-
## Global vs Workflow: When to Use Each
|
|
86
|
-
|
|
87
|
-
| Use case | Use global catalog | Use workflow requirement |
|
|
88
|
-
|----------|-------------------|--------------------------|
|
|
89
|
-
| Define a canonical skill for a capability | ✅ | |
|
|
90
|
-
| List known alternatives project-wide | ✅ | |
|
|
91
|
-
| Provide a default invocation policy | ✅ | |
|
|
92
|
-
| Pin a different skill for one workflow | | ✅ |
|
|
93
|
-
| Add workflow-specific fallbacks | | ✅ |
|
|
94
|
-
| Override invocation policy for a workflow | | ✅ |
|
|
95
|
-
|
|
96
|
-
## Skill Declaration
|
|
97
|
-
|
|
98
|
-
A skill declares that it satisfies a capability through `canonical_for`:
|
|
6
|
+
Use optional `preference` when one matching skill should rank ahead of another:
|
|
99
7
|
|
|
100
8
|
```yaml
|
|
101
9
|
skills:
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
10
|
+
test-first:
|
|
11
|
+
enabled: true
|
|
12
|
+
shared: false
|
|
13
|
+
preference:
|
|
14
|
+
intents: [implementation, testing]
|
|
15
|
+
priority: 100
|
|
105
16
|
```
|
|
106
17
|
|
|
107
|
-
|
|
18
|
+
Preference ranks only and never changes availability. Explicit user selection
|
|
19
|
+
wins among guard-allowed candidates.
|
|
108
20
|
|
|
109
|
-
|
|
21
|
+
Version 1 capability catalogs and workflow requirements are migration input
|
|
22
|
+
only. Migration may convert names to intent terms and priorities, reports
|
|
23
|
+
discarded policy fields, and never carries capability policy into the v2 guard.
|
|
110
24
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
- Prefer `workflow-auto` or `router-only` for workflow requirements; reserve `global-auto` for explicitly global-meta skills.
|
|
25
|
+
Manual skill variants are content-management records, not authorization.
|
|
26
|
+
Runtime and action permission checks stay with the agent or harness.
|