Problem
Skills invoke other skills and subagents at runtime without recording those edges anywhere the resolver reads. They work today only because a fuller set happens to be deployed (the global catalog, or a collection). Under selective declaration the resolver would deploy a skill without its invocation targets, breaking it at runtime: declaring create-pr alone, for instance, deploys it without its create-gh-pr, create-bitbucket-pr, and summarize-change delegates.
Context
#878 retired unconditional install; every catalog artifact now deploys only via declaration, so the original constraint (a declared skill cannot depend on an install-path skill) no longer holds. Every endpoint is already on the declared path, and the full audit is now actionable. #898 introduces {skill:}/{subagent:} tokens the resolver reads as edges; this ticket consumes them. The discriminating work is reading each reference to tell a genuine invocation from a mention, and getting the edge direction right (a delegate's description names its caller, but the edge runs caller → delegate).
Proposed solution
Read every skill body once. Convert each genuine runtime invocation of another skill or subagent to a {skill:}/{subagent:} token. Leave references that merely name an artifact untokenized: downstream data-flow notes (commit naming summarize-change), doc cross-references, and a delegate naming its caller. Record non-inline edges in dependencies: frontmatter: rulebook dependencies, references that are not an inline invocation (design-and-plan's shared template with plan), and subagent dispatches expressed in pipeline tables or Task-tool parameters rather than inline prose. Verify the resolved closure with tests.
Acceptance criteria
Must have
Dependencies
Problem
Skills invoke other skills and subagents at runtime without recording those edges anywhere the resolver reads. They work today only because a fuller set happens to be deployed (the global catalog, or a collection). Under selective declaration the resolver would deploy a skill without its invocation targets, breaking it at runtime: declaring
create-pralone, for instance, deploys it without itscreate-gh-pr,create-bitbucket-pr, andsummarize-changedelegates.Context
#878 retired unconditional install; every catalog artifact now deploys only via declaration, so the original constraint (a declared skill cannot depend on an install-path skill) no longer holds. Every endpoint is already on the declared path, and the full audit is now actionable. #898 introduces
{skill:}/{subagent:}tokens the resolver reads as edges; this ticket consumes them. The discriminating work is reading each reference to tell a genuine invocation from a mention, and getting the edge direction right (a delegate's description names its caller, but the edge runs caller → delegate).Proposed solution
Read every skill body once. Convert each genuine runtime invocation of another skill or subagent to a
{skill:}/{subagent:}token. Leave references that merely name an artifact untokenized: downstream data-flow notes (commitnamingsummarize-change), doc cross-references, and a delegate naming its caller. Record non-inline edges independencies:frontmatter: rulebook dependencies, references that are not an inline invocation (design-and-plan's shared template withplan), and subagent dispatches expressed in pipeline tables or Task-tool parameters rather than inline prose. Verify the resolved closure with tests.Acceptance criteria
Must have
{skill:}/{subagent:}token for inline invocations, or adependencies:frontmatter entry for non-inline edges.capture-feedback→capture-eventandcollaborate→capture-feedbackare recorded.Dependencies
{skill:}and{subagent:}invocation tokens #898 ({skill:}/{subagent:}invocation tokens) must land first.