Mission
Review the complete changed package and diff, not only SKILL.md. Report blocking issues clearly and do not modify files unless the user requested refactor/change mode.
Required Skill package checks
For a completed Skill, verify:
Placement
- all package files are under
skills/<skill-name>/;
- required
skills/<skill-name>/SKILL.md exists;
- no root-level
<skill-name>/ package remains;
- no absolute path, traversal, or accidental cross-Skill write exists.
Progressive Disclosure
- SKILL.md contains the core workflow and critical decisions;
- long rubrics, pattern lists, medium/industry guidance, detailed checklists, and long examples are externalized when conditional;
- essential decision rules have not been moved out so aggressively that ordinary execution requires every reference;
- SKILL.md explicitly says when each reference should be loaded;
- no unused or duplicative reference exists;
- a SKILL.md above roughly 150–200 lines received an explicit disclosure review rather than an automatic split.
Skill boundary
- responsibility is coherent and not overloaded with unrelated capabilities unless genuinely the same reusable responsibility;
- a natural core workflow has not been fragmented into unnecessary micro-Skills;
- trigger and non-trigger are clear.
Contract and composition readiness
Check when relevant:
- responsibility;
- inputs and outputs;
- quality gate;
- handoff_in / handoff_out semantics;
- failure modes;
- loose coupling to upstream/downstream Skills.
Evals
Expect behavior coverage appropriate to the Skill, including positive trigger, implicit trigger when relevant, explicit trigger, negative trigger, near-miss, known-good, known-bad, and regressions for prior failures.
Safety and repository policy
- validateSkill passes;
- secret scan passes;
- public/private boundary is preserved;
- read-only use/audit work caused no repository mutation;
- PR creation matches explicit user authorization.
Registry-first Build Pipeline review — v0.10 + Reuse Boundary Check v1
Review these as independent checks for every relevant Factory/Registry change. A failure in any applicable item is blocking:
- Ordinary-task mutation: ordinary task execution did not create/change/persist Skill, Flow, or Suite state.
- Mutation authorization: no Registry object was persisted without explicit creation/change intent; read-only
use, audit, and ordinary/meta did not require Creation Gate.
- Pipeline ordering: explicit create followed Registry Search → Candidate Skill Inspection → Reuse Boundary Check → Capability Gap Plan before Architect/Author.
- Visibility-aware search: target visibility was explicit before authoring/writes; private targets searched public + private Skills/Flows as applicable; public direct reuse used public objects and did not create public→private dependencies.
- Strong candidate inspection: every strong candidate relevant to a new-Skill proposal had current SKILL.md inspected with
getSkill; description-level search alone is insufficient.
- Boundary evidence: inspection covered responsibility/scope, trigger/non-trigger, workflow/supported modes, review/diagnostic/revision stages, inputs/outputs, quality gate, failure modes, handoff, and explicit non-split/boundary statements when present.
- Internal sub-step duplication: no new Skill duplicates a supported mode, workflow step, review/diagnostic stage, or output variant already owned by an existing coherent Skill.
- Explicit non-split rule: no ordinary create violates
do not split, keep X and Y in one workflow, or equivalent boundary. Such a change requires explicit refactor/split.
- Partial-fit handling: an 80–90% or otherwise natural partial fit considered
extend before create, with contract/dependent/backward-compatibility analysis for persisted change.
- Create split justification: every
create contains splitJustification proving independent user goal, independently useful output, independent reuse value, and that the capability is not an inspected Skill's internal sub-responsibility.
- Gap evidence: Capability Gap Plan records
capability, disposition, candidateSkills, inspectedCandidates, boundaryDecision, supportingEvidence, splitJustification for create, targetVisibility, and searchedScopes.
- Duplicate avoidance: no blind duplicate Skill was created when an existing legal Skill adequately covered the responsibility.
- Extension evidence: before any persisted existing-Skill change, responsibility/contract was inspected and, when
getRegistryDependents was available, required dependents were checked (public Skill: public + private; private Skill: private).
- Breaking-change handling: a contract/meaning-breaking change was not silently treated as
extend; it was separated or routed to explicit refactor.
- Flow-first design: reusable known multi-capability processes considered Flow + independently reusable Skills, but one existing Skill's coherent internal workflow was not externalized into a Flow plus duplicate sub-Skills.
- All-capabilities-existing case: when all required Skills already existed, no unnecessary new Skill was authored; when one existing Skill owns the entire coherent requested workflow, no unnecessary Flow was authored either.
- Compose persistence boundary: temporary dynamic compose was not automatically persisted as a Flow without explicit creation intent.
- Flow v1 representability: every authored Flow required step is representable as current
exact_skill or Skill-resolved capability; required model/external_tool gaps lacking a legal independently justified Skill representation block authoring as unsupported_flow_capability or equivalent.
- No representability distortion: design did not silently omit required Flow capabilities, create unnecessary schema-fitting Skills, bury external-tool responsibilities inside Skills, or emit unsupported step types.
Dependent existence alone is not a pass/fail criterion for extension. Review whether dependent evidence was actually used to assess backward compatibility and migration risk.
Flow package checks
For a completed Flow, verify:
- canonical
flows/<name>/FLOW.json placement and directory/name match;
- valid JSON/schema and v1 DAG;
- unique step ids, existing dependencies, and no cycles;
- exact Skill references exist and are never silently substituted;
- capability definitions remain dynamically resolvable through Skill discovery;
- every step type is one supported by current Flow v1;
- no required model-native/external-tool capability was silently omitted or disguised as an unrelated Skill;
- handoff sources and expected outputs are consistent;
- duplicate/conflicting outputs are rejected;
- conditions are limited to declarative
condition.when equality checks;
- completion requires all applicable required steps;
- excluding an applicable required step prevents full success;
- Flow → Flow recursion is rejected in v1;
- Flow contains orchestration semantics rather than copied Skill How/prompt text;
- public Flow does not reference private objects.
Suite package checks
For a completed Suite, verify:
- canonical
suites/<name>/SUITE.json placement and directory/name match;
- member Skill/Flow references exist and contain no duplicates;
- membership is non-owning and one member may be reused by multiple Suites;
- policy/gates/contracts apply only in explicit Suite/Flow context;
- Suite is a discovery scope rather than a normal executable target;
- public Suite does not reference private objects.
Factory change review
For runtime/Factory changes, verify existing modes and routes remain available, new behavior is covered by evals, implementation and instructions agree, and code guards enforce structural invariants when practical.
For Registry-first v0.10 + Reuse Boundary Check routing, additionally regression-check:
- read-only
audit remains directly reachable without Creation Gate and without repository mutation;
- failed ordinary-task Skill discovery falls back to model/tool/dynamic compose and never transitions into create;
- mutation-oriented modes require explicit authorization before persistence;
- Registry Search visibility scope is correct and gap plans carry scope evidence;
- Registry-first does not stop at name/description search when strong candidates exist;
- strong candidate SKILL.md is read before new-Skill creation;
- existing Skill workflow/sub-step is not duplicated;
- explicit non-split boundaries are honored;
- partial fits evaluate extend;
- create splitJustification proves independent responsibility;
- reuse of one coherent Skill does not trigger an unnecessary Flow;
- extension dependent-scope rules preserve the public/private boundary;
- Flow v1 representability is fail-closed before Author.
For Flow/Suite Factory changes, explicitly regression-check:
- existing exact Skill invocation remains unchanged;
- existing discover Skill behavior remains unchanged;
- existing recommend behavior remains unchanged;
- existing compose remains dynamic and available;
- local/single-responsibility requests are not absorbed by Flows;
- strongly matching known end-to-end requests may select a Flow;
- uncovered multi-responsibility requests use compose;
- standalone Suite-member Skill receives no Suite policy;
- one Skill may be referenced by multiple Suites;
- exact Flow steps are not substituted;
- capability Flow steps may resolve dynamically through Skills;
- nonexistent exact Skill references are rejected;
- dependency cycles are rejected;
- public Flow/Suite → private references are rejected;
- optional conditions behave declaratively;
- excluded applicable required steps prevent full-success claims;
searchSkills results/scoring are not polluted by Flow/Suite discovery;
- Flow/Suite read/search/write/validate/history paths exist;
- legacy API routes and
target=skill repository semantics remain available;
- public/private repository boundaries remain intact.
Also verify generalized Registry write/delete path guards preserve valid existing Skill paths, Flow/Suite JSON uses no unnecessary parser dependency, and api/openapi.js / gpt/openapi.yaml stay aligned without deleting existing API contracts.
Decision
Return PASS only when no blocking correctness, security, placement, boundary, mutation-authorization, visibility-search, Candidate Skill Inspection, Reuse Boundary Check, Flow-representability, or regression issue remains. Distinguish unexecuted E2E checks from actual failures.
1---2name: skill-reviewer3description: Audit Agent Skill packages and Factory changes for correctness, Registry-first build semantics, mutation authorization, visibility-aware search, Candidate Skill Inspection, Reuse Boundary Check, Flow representability, placement, boundaries, contracts, eval coverage, security, validation, and regression risk.4---56# Mission78Review the complete changed package and diff, not only SKILL.md. Report blocking issues clearly and do not modify files unless the user requested refactor/change mode.910# Required Skill package checks1112For a completed Skill, verify:1314## Placement1516- all package files are under `skills/<skill-name>/`;17- required `skills/<skill-name>/SKILL.md` exists;18- no root-level `<skill-name>/` package remains;19- no absolute path, traversal, or accidental cross-Skill write exists.2021## Progressive Disclosure2223- SKILL.md contains the core workflow and critical decisions;24- long rubrics, pattern lists, medium/industry guidance, detailed checklists, and long examples are externalized when conditional;25- essential decision rules have not been moved out so aggressively that ordinary execution requires every reference;26- SKILL.md explicitly says when each reference should be loaded;27- no unused or duplicative reference exists;28- a SKILL.md above roughly 150–200 lines received an explicit disclosure review rather than an automatic split.2930## Skill boundary3132- responsibility is coherent and not overloaded with unrelated capabilities unless genuinely the same reusable responsibility;33- a natural core workflow has not been fragmented into unnecessary micro-Skills;34- trigger and non-trigger are clear.3536## Contract and composition readiness3738Check when relevant:3940- responsibility;41- inputs and outputs;42- quality gate;43- handoff_in / handoff_out semantics;44- failure modes;45- loose coupling to upstream/downstream Skills.4647## Evals4849Expect behavior coverage appropriate to the Skill, including positive trigger, implicit trigger when relevant, explicit trigger, negative trigger, near-miss, known-good, known-bad, and regressions for prior failures.5051## Safety and repository policy5253- validateSkill passes;54- secret scan passes;55- public/private boundary is preserved;56- read-only use/audit work caused no repository mutation;57- PR creation matches explicit user authorization.5859# Registry-first Build Pipeline review — v0.10 + Reuse Boundary Check v16061Review these as independent checks for every relevant Factory/Registry change. A failure in any applicable item is blocking:62631. **Ordinary-task mutation:** ordinary task execution did not create/change/persist Skill, Flow, or Suite state.642. **Mutation authorization:** no Registry object was persisted without explicit creation/change intent; read-only `use`, `audit`, and ordinary/meta did not require Creation Gate.653. **Pipeline ordering:** explicit create followed Registry Search → Candidate Skill Inspection → Reuse Boundary Check → Capability Gap Plan before Architect/Author.664. **Visibility-aware search:** target visibility was explicit before authoring/writes; private targets searched public + private Skills/Flows as applicable; public direct reuse used public objects and did not create public→private dependencies.675. **Strong candidate inspection:** every strong candidate relevant to a new-Skill proposal had current SKILL.md inspected with `getSkill`; description-level search alone is insufficient.686. **Boundary evidence:** inspection covered responsibility/scope, trigger/non-trigger, workflow/supported modes, review/diagnostic/revision stages, inputs/outputs, quality gate, failure modes, handoff, and explicit non-split/boundary statements when present.697. **Internal sub-step duplication:** no new Skill duplicates a supported mode, workflow step, review/diagnostic stage, or output variant already owned by an existing coherent Skill.708. **Explicit non-split rule:** no ordinary create violates `do not split`, `keep X and Y in one workflow`, or equivalent boundary. Such a change requires explicit refactor/split.719. **Partial-fit handling:** an 80–90% or otherwise natural partial fit considered `extend` before `create`, with contract/dependent/backward-compatibility analysis for persisted change.7210. **Create split justification:** every `create` contains `splitJustification` proving independent user goal, independently useful output, independent reuse value, and that the capability is not an inspected Skill's internal sub-responsibility.7311. **Gap evidence:** Capability Gap Plan records `capability`, `disposition`, `candidateSkills`, `inspectedCandidates`, `boundaryDecision`, `supportingEvidence`, `splitJustification` for create, `targetVisibility`, and `searchedScopes`.7412. **Duplicate avoidance:** no blind duplicate Skill was created when an existing legal Skill adequately covered the responsibility.7513. **Extension evidence:** before any persisted existing-Skill change, responsibility/contract was inspected and, when `getRegistryDependents` was available, required dependents were checked (public Skill: public + private; private Skill: private).7614. **Breaking-change handling:** a contract/meaning-breaking change was not silently treated as `extend`; it was separated or routed to explicit refactor.7715. **Flow-first design:** reusable known multi-capability processes considered Flow + independently reusable Skills, but one existing Skill's coherent internal workflow was not externalized into a Flow plus duplicate sub-Skills.7816. **All-capabilities-existing case:** when all required Skills already existed, no unnecessary new Skill was authored; when one existing Skill owns the entire coherent requested workflow, no unnecessary Flow was authored either.7917. **Compose persistence boundary:** temporary dynamic compose was not automatically persisted as a Flow without explicit creation intent.8018. **Flow v1 representability:** every authored Flow required step is representable as current `exact_skill` or Skill-resolved `capability`; required `model`/`external_tool` gaps lacking a legal independently justified Skill representation block authoring as `unsupported_flow_capability` or equivalent.8119. **No representability distortion:** design did not silently omit required Flow capabilities, create unnecessary schema-fitting Skills, bury external-tool responsibilities inside Skills, or emit unsupported step types.8283Dependent existence alone is not a pass/fail criterion for extension. Review whether dependent evidence was actually used to assess backward compatibility and migration risk.8485# Flow package checks8687For a completed Flow, verify:8889- canonical `flows/<name>/FLOW.json` placement and directory/name match;90- valid JSON/schema and v1 DAG;91- unique step ids, existing dependencies, and no cycles;92- exact Skill references exist and are never silently substituted;93- capability definitions remain dynamically resolvable through Skill discovery;94- every step type is one supported by current Flow v1;95- no required model-native/external-tool capability was silently omitted or disguised as an unrelated Skill;96- handoff sources and expected outputs are consistent;97- duplicate/conflicting outputs are rejected;98- conditions are limited to declarative `condition.when` equality checks;99- completion requires all applicable required steps;100- excluding an applicable required step prevents full success;101- Flow → Flow recursion is rejected in v1;102- Flow contains orchestration semantics rather than copied Skill How/prompt text;103- public Flow does not reference private objects.104105# Suite package checks106107For a completed Suite, verify:108109- canonical `suites/<name>/SUITE.json` placement and directory/name match;110- member Skill/Flow references exist and contain no duplicates;111- membership is non-owning and one member may be reused by multiple Suites;112- policy/gates/contracts apply only in explicit Suite/Flow context;113- Suite is a discovery scope rather than a normal executable target;114- public Suite does not reference private objects.115116# Factory change review117118For runtime/Factory changes, verify existing modes and routes remain available, new behavior is covered by evals, implementation and instructions agree, and code guards enforce structural invariants when practical.119120For Registry-first v0.10 + Reuse Boundary Check routing, additionally regression-check:121122- read-only `audit` remains directly reachable without Creation Gate and without repository mutation;123- failed ordinary-task Skill discovery falls back to model/tool/dynamic compose and never transitions into create;124- mutation-oriented modes require explicit authorization before persistence;125- Registry Search visibility scope is correct and gap plans carry scope evidence;126- Registry-first does not stop at name/description search when strong candidates exist;127- strong candidate SKILL.md is read before new-Skill creation;128- existing Skill workflow/sub-step is not duplicated;129- explicit non-split boundaries are honored;130- partial fits evaluate extend;131- create splitJustification proves independent responsibility;132- reuse of one coherent Skill does not trigger an unnecessary Flow;133- extension dependent-scope rules preserve the public/private boundary;134- Flow v1 representability is fail-closed before Author.135136For Flow/Suite Factory changes, explicitly regression-check:1371381. existing exact Skill invocation remains unchanged;1392. existing discover Skill behavior remains unchanged;1403. existing recommend behavior remains unchanged;1414. existing compose remains dynamic and available;1425. local/single-responsibility requests are not absorbed by Flows;1436. strongly matching known end-to-end requests may select a Flow;1447. uncovered multi-responsibility requests use compose;1458. standalone Suite-member Skill receives no Suite policy;1469. one Skill may be referenced by multiple Suites;14710. exact Flow steps are not substituted;14811. capability Flow steps may resolve dynamically through Skills;14912. nonexistent exact Skill references are rejected;15013. dependency cycles are rejected;15114. public Flow/Suite → private references are rejected;15215. optional conditions behave declaratively;15316. excluded applicable required steps prevent full-success claims;15417. `searchSkills` results/scoring are not polluted by Flow/Suite discovery;15518. Flow/Suite read/search/write/validate/history paths exist;15619. legacy API routes and `target=skill` repository semantics remain available;15720. public/private repository boundaries remain intact.158159Also verify generalized Registry write/delete path guards preserve valid existing Skill paths, Flow/Suite JSON uses no unnecessary parser dependency, and `api/openapi.js` / `gpt/openapi.yaml` stay aligned without deleting existing API contracts.160161# Decision162163Return PASS only when no blocking correctness, security, placement, boundary, mutation-authorization, visibility-search, Candidate Skill Inspection, Reuse Boundary Check, Flow-representability, or regression issue remains. Distinguish unexecuted E2E checks from actual failures.