Problem
intent.skills currently permits packages as whole sources. Consumers cannot select one skill from a package without permitting its siblings, so they must use a broader package permission and express the narrower choice through exclusions.
User outcome
Consumers can explicitly permit selected skills from a package while preserving clear package and source-kind decisions.
In scope
- Extend the permission model to support selected skills within a package.
- Preserve package-level entries, npm and workspace source-kind matching, wildcard behavior, nearest non-null declaration inheritance, and
intent.exclude precedence.
- Preserve strict parsing: malformed entries fail the complete permission list and are reported together.
- Keep package-level permissions valid and behaviorally compatible.
- Apply per-skill permissions consistently to
list, load, stale, install --map, and hook catalogs.
- Extend the current redaction rule to per-skill permissions: humans can explicitly review hidden candidates outside agent sessions, while agent sessions receive counts without hidden source or skill identities.
- Document the final permission grammar and its interaction with package-level entries, wildcards, inheritance, and exclusions.
Out of scope
- Interactive permission editing.
- Content locks, hashes, or byte-level verification.
- Git sources.
Acceptance criteria
Dependencies
None.
Open decision
Choose and document the per-skill permission syntax, including whether it extends the existing string grammar or uses a structured entry. The syntax must remain unambiguous for package names, source kinds, wildcards, and future source kinds.
Prior exploration
#204 explored this capability inside a broader installer, lockfile, and delivery change. This issue defines only the per-skill permission boundary and does not adopt that branch wholesale.
Problem
intent.skillscurrently permits packages as whole sources. Consumers cannot select one skill from a package without permitting its siblings, so they must use a broader package permission and express the narrower choice through exclusions.User outcome
Consumers can explicitly permit selected skills from a package while preserving clear package and source-kind decisions.
In scope
intent.excludeprecedence.list,load,stale,install --map, and hook catalogs.Out of scope
Acceptance criteria
intent.excludecontinues to take precedence over permissions, including skill-level exclusions.list,load,stale,install --map, and hook catalogs enforce the same per-skill decision.Dependencies
None.
Open decision
Choose and document the per-skill permission syntax, including whether it extends the existing string grammar or uses a structured entry. The syntax must remain unambiguous for package names, source kinds, wildcards, and future source kinds.
Prior exploration
#204 explored this capability inside a broader installer, lockfile, and delivery change. This issue defines only the per-skill permission boundary and does not adopt that branch wholesale.