🪜 chore: Plumb allowedTools through resolveManualSkills#12744
Merged
danny-avila merged 2 commits intofeat/agent-skillsfrom Apr 19, 2026
Merged
🪜 chore: Plumb allowedTools through resolveManualSkills#12744danny-avila merged 2 commits intofeat/agent-skillsfrom
allowedTools through resolveManualSkills#12744danny-avila merged 2 commits intofeat/agent-skillsfrom
Conversation
Tiny shape-only precursor shared by Phase 5 (`always-apply`) and Phase 6 (frontmatter runtime enforcement). Adds `allowedTools?: string[]` to `ResolvedManualSkill` and widens the `getSkillByName` return type in `ResolveManualSkillsParams` and `InitializeAgentDbMethods` to carry the same field. The resolver forwards `skill.allowedTools` verbatim when present. No runtime behavior change — the field is populated but not yet consumed. Phase 6 will union the per-skill allowlist into the agent's effective tool set for the turn; Phase 5's `ResolvedAlwaysApplySkill` will mirror this shape. Landing this first eliminates the type-shape race between the two phases.
allowedTools through resolveManualSkills (Phase 5/6 Precursor)allowedTools through resolveManualSkills
Merged
JSDoc that cites "Phase N will X" goes stale the moment that phase ships. Swap for "future runtime enforcement" so the docs age with the code.
11 tasks
danny-avila
added a commit
that referenced
this pull request
Apr 21, 2026
* 🪜 chore: Plumb `allowedTools` through `resolveManualSkills` Tiny shape-only precursor shared by Phase 5 (`always-apply`) and Phase 6 (frontmatter runtime enforcement). Adds `allowedTools?: string[]` to `ResolvedManualSkill` and widens the `getSkillByName` return type in `ResolveManualSkillsParams` and `InitializeAgentDbMethods` to carry the same field. The resolver forwards `skill.allowedTools` verbatim when present. No runtime behavior change — the field is populated but not yet consumed. Phase 6 will union the per-skill allowlist into the agent's effective tool set for the turn; Phase 5's `ResolvedAlwaysApplySkill` will mirror this shape. Landing this first eliminates the type-shape race between the two phases. * 🪜 style: Drop phase-name refs from `allowedTools` JSDoc for longevity JSDoc that cites "Phase N will X" goes stale the moment that phase ships. Swap for "future runtime enforcement" so the docs age with the code.
danny-avila
added a commit
that referenced
this pull request
Apr 22, 2026
* 🪜 chore: Plumb `allowedTools` through `resolveManualSkills` Tiny shape-only precursor shared by Phase 5 (`always-apply`) and Phase 6 (frontmatter runtime enforcement). Adds `allowedTools?: string[]` to `ResolvedManualSkill` and widens the `getSkillByName` return type in `ResolveManualSkillsParams` and `InitializeAgentDbMethods` to carry the same field. The resolver forwards `skill.allowedTools` verbatim when present. No runtime behavior change — the field is populated but not yet consumed. Phase 6 will union the per-skill allowlist into the agent's effective tool set for the turn; Phase 5's `ResolvedAlwaysApplySkill` will mirror this shape. Landing this first eliminates the type-shape race between the two phases. * 🪜 style: Drop phase-name refs from `allowedTools` JSDoc for longevity JSDoc that cites "Phase N will X" goes stale the moment that phase ships. Swap for "future runtime enforcement" so the docs age with the code.
danny-avila
added a commit
that referenced
this pull request
Apr 22, 2026
* 🪜 chore: Plumb `allowedTools` through `resolveManualSkills` Tiny shape-only precursor shared by Phase 5 (`always-apply`) and Phase 6 (frontmatter runtime enforcement). Adds `allowedTools?: string[]` to `ResolvedManualSkill` and widens the `getSkillByName` return type in `ResolveManualSkillsParams` and `InitializeAgentDbMethods` to carry the same field. The resolver forwards `skill.allowedTools` verbatim when present. No runtime behavior change — the field is populated but not yet consumed. Phase 6 will union the per-skill allowlist into the agent's effective tool set for the turn; Phase 5's `ResolvedAlwaysApplySkill` will mirror this shape. Landing this first eliminates the type-shape race between the two phases. * 🪜 style: Drop phase-name refs from `allowedTools` JSDoc for longevity JSDoc that cites "Phase N will X" goes stale the moment that phase ships. Swap for "future runtime enforcement" so the docs age with the code.
danny-avila
added a commit
that referenced
this pull request
Apr 25, 2026
* 🪜 chore: Plumb `allowedTools` through `resolveManualSkills` Tiny shape-only precursor shared by Phase 5 (`always-apply`) and Phase 6 (frontmatter runtime enforcement). Adds `allowedTools?: string[]` to `ResolvedManualSkill` and widens the `getSkillByName` return type in `ResolveManualSkillsParams` and `InitializeAgentDbMethods` to carry the same field. The resolver forwards `skill.allowedTools` verbatim when present. No runtime behavior change — the field is populated but not yet consumed. Phase 6 will union the per-skill allowlist into the agent's effective tool set for the turn; Phase 5's `ResolvedAlwaysApplySkill` will mirror this shape. Landing this first eliminates the type-shape race between the two phases. * 🪜 style: Drop phase-name refs from `allowedTools` JSDoc for longevity JSDoc that cites "Phase N will X" goes stale the moment that phase ships. Swap for "future runtime enforcement" so the docs age with the code.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Tiny shape-only precursor shared by Phase 5 (
always-applyfrontmatter) and Phase 6 (frontmatter runtime enforcement). Lands first to eliminate the type-shape race between the two phases so they can proceed in parallel.allowedTools?: string[]toResolvedManualSkill.getSkillByNamereturn type inResolveManualSkillsParamsandInitializeAgentDbMethodsto carry the same field.resolveManualSkillsforwardsskill.allowedToolsverbatim when present; absent otherwise.No runtime behavior change. The field is populated from the skill doc but not yet consumed by any downstream code path. Phase 6 will union the per-skill allowlist into the agent's effective tool set for the turn; Phase 5's
ResolvedAlwaysApplySkillwill mirror this exact shape.Scoped intentionally small:
skill.allowedTools) and the frontmatter importer mapping.injectManualSkillPrimes, call sites ininitialize.ts, or JS controllers — downstream consumers only readnameandbody.Why a precursor
From the umbrella rollout plan: Phase 5 and Phase 6 both need
ResolvedManualSkill.allowedToolsin their resolver pipeline. Landing the shape here means neither phase has to own the interface addition, and merge conflicts between their branches stay textual.Test plan
resolveManualSkillsforwardsallowedToolswhen the skill doc declares it.resolveManualSkillsomitsallowedToolswhen the field is absent (no spurious key on the resolved object).resolveManualSkillspreserves an emptyallowedTools: []array (distinguishes "explicitly declared none" from "undeclared" for Phase 6 semantics).skills.test.tstests pass unchanged.initialize.test.tstests pass unchanged.tsc --noEmitclean.Base branch
Targets
feat/agent-skills(umbrella PR #12625), notdev.