Skill Factory Router
Select the smallest durable Skill Factory workflow for a Codex skill-management request, then return a read-only routing handoff before loading deeper instructions.
When To Use
- The user asks to create, capture, improve, audit, refactor, install, sync, list, prove, or route a Codex skill.
- The request names skill work but the correct Skill Factory lane is not already certain.
- The request depends on Tessl, Plugin Eval, validation, runtime, installation, package visibility, or session evidence and needs the correct owner lane before action.
Do not use this router to execute the downstream lane. Route plugin package lifecycle work to plugin-factory. Route system creator and installer work to the system lanes instead of copying those bodies into Skill Factory.
Example requests that should trigger this router:
- "Create a skill from this workflow and tell me which lane owns it."
- "This skill is failing package proof; route the smallest hardening workflow."
- "Should this be skill-refactor, skillify, or the system skill creator?"
Start with the smallest package boundary that can answer the routing question. Inspect the target request, target skill, and one evidence handle before expanding to broader package or runtime state.
Inputs
- User request or named target skill.
- Current authority boundary: read-only routing, approved edit, install or sync, eval execution, package publication, or review-only.
- Available evidence handle when routing depends on Tessl, Plugin Eval, validation, runtime, review, or session artifacts.
If target, lane, write authority, or validation requirement is missing, ask one plain-language question. Load references/discovery-interview.md only when that ambiguity cannot be resolved from the user request.
Outputs
Return one YAML handoff:
schema_version: 1
selected_lane: .system/skill-creator|skillify|skill-factory-router|skill-refactor|.system/skill-installer
mode: create|capture|harden|analyze|install
rationale: <one sentence tied to the request shape>
next_step: <specific skill or system lane to load next>
first_principles_check:
required: true|false
result: skill|docs|script|hook|validator|rule|answer|not_checked
blocked_by: null
Expected artifacts: no source edits from this router. Downstream lanes own review reports, eval artifacts, package outputs, runtime evidence, commits, and publication receipts.
Workflow
- Match the request to this routing table. Explicit lane names win unless the user names multiple lanes or asks for an unsafe action.
- For create, draft, or new SKILL.md requests, select .system/skill-creator with mode create.
- For skillify, save this process as a skill, or make reusable guidance requests, select skillify with mode capture.
- For fix, improve, raise Tessl score, repair evals, or reduce token cost requests, select the Skill Factory hardening workflow with mode harden.
- For failing-skill, duplicate comparison, merge, or retire requests, select skill-refactor with mode analyze.
- For install, list, sync, or prove Codex can see a skill requests, select .system/skill-installer with mode install.
- For copy or fork the system skill creator or installer requests, block the fork and route to the matching system lane.
- For major new-skill or broad-rewrite requests, decide whether the durable answer is a skill, docs, script, hook, validator, rule, or direct answer.
- Return the handoff and stop unless the user explicitly asks this router to execute the selected lane.
Use Infrastructure/references/first-principles-factory-gate.md for the first-principles factory gate before routing create, harden, refactor, or skillify work.
For .system/skill-creator or .system/skill-installer, attach Skill Factory references or eval contracts; do not fork the system skill body. Apply the context-disposition policy: move important still-valid context to references and discard stale, duplicated, unsafe, superseded, or low-signal text.
Failure Mode
- No single lane fits: set blocked_by to the ambiguity and ask the smallest routing question.
- The request asks this router to mutate source, install, sync, publish, or run downstream proof before lane selection: block and name the downstream owner.
- The request would resurrect retired flat command handles, generated aliases, or projection-only manifest rows: block and route to canonical source repair.
- The request treats plugin-cache visibility, command-surface rows, flat skill symlinks, and runtime picker visibility as the same proof surface: block and separate the lanes.
- Claim environment, auth, runtime, Tessl, plugin cache, command surface, or Codex picker state only from current-turn evidence.
Gotchas
- Execution boundaries matter: this router selects the lane only. Downstream skills own edits, sync, evals, install proof, and publication proof.
- Do not treat a route decision, plugin-cache row, or picker projection as proof that the selected skill passed validation.
Execution Boundaries
- This router produces a lane handoff only; it does not edit source, install skills, sync projections, publish packages, or run downstream eval proof.
- Downstream lanes own source edits, runtime sync, external review, Tessl evals, package outputs, and publication receipts.
Anti-Patterns To Avoid
- Do not mutate skill source while routing; return the lane handoff first.
- Do not fork .system/skill-creator or .system/skill-installer when the correct answer is to load the preserved system lane.
- Do not collapse install, projection, Tessl, Plugin Eval, and Registry evidence into one status.
- Do not route ordinary app debugging, CI repair, or repo refactors into Skill Factory only because the word "skill" appears nearby.
Variation
Adapt the handoff to the request shape. Creation asks need a first-principles check, hardening asks need the failing proof lane, refactor asks need duplicate or retirement evidence, and install asks need runtime visibility boundaries.
Validation
- Keep routing read-only unless the user explicitly asks this router to execute a selected lane.
- Downstream lanes own source edits, runtime sync, external review, Tessl evals, packaging, publishing, and install proof.
- A route decision is not proof that a skill is installed, visible in Codex, passing evals, or safe to publish.
- Runtime picker visibility depends on regenerated projections and local sync, not only canonical source edits.
- Redact secrets, tokens, PII, and sensitive local paths.
- Stop at the first failed required gate, classify it, and do not sync, commit, publish, or install until it is fixed or explicitly blocked.
- bash Infrastructure/scripts/validation-and-linting/validate_skill_authoring_family.sh
- ./bin/ask skills external-review Plugins/skill-factory/skills/skill-factory-router --audit-level compat --json
References
Load only the reference needed for the selected routing question:
Read when: choose exactly one reference below after the routing question is known.
- Read when validating the router contract or output shape: references/contract.yaml
- Read when checking routing eval coverage or Tessl cases: references/evals.yaml
- Read when tuning evaluator thresholds: references/task-profile.json
- Read when the target, lane, write authority, or validation need is ambiguous: references/discovery-interview.md
- Read when lane policy or first-principles routing is disputed: references/routing-policy.md
1---2name: skill-factory-router3description: Analyzes Codex skill-management requests, selects the workflow lane, and returns selected_lane, mode, next_step, and blockers. Use when the user says create a skill, add/update/fix/review a skill, install/sync/list skills, choose a workflow, or merge/retire a skill.4---56# Skill Factory Router78Select the smallest durable Skill Factory workflow for a Codex skill-management request, then return a read-only routing handoff before loading deeper instructions.910## When To Use1112- The user asks to create, capture, improve, audit, refactor, install, sync, list, prove, or route a Codex skill.13- The request names skill work but the correct Skill Factory lane is not already certain.14- The request depends on Tessl, Plugin Eval, validation, runtime, installation, package visibility, or session evidence and needs the correct owner lane before action.1516Do not use this router to execute the downstream lane. Route plugin package lifecycle work to plugin-factory. Route system creator and installer work to the system lanes instead of copying those bodies into Skill Factory.1718Example requests that should trigger this router:1920- "Create a skill from this workflow and tell me which lane owns it."21- "This skill is failing package proof; route the smallest hardening workflow."22- "Should this be skill-refactor, skillify, or the system skill creator?"2324Start with the smallest package boundary that can answer the routing question. Inspect the target request, target skill, and one evidence handle before expanding to broader package or runtime state.2526## Inputs2728- User request or named target skill.29- Current authority boundary: read-only routing, approved edit, install or sync, eval execution, package publication, or review-only.30- Available evidence handle when routing depends on Tessl, Plugin Eval, validation, runtime, review, or session artifacts.3132If target, lane, write authority, or validation requirement is missing, ask one plain-language question. Load references/discovery-interview.md only when that ambiguity cannot be resolved from the user request.3334## Outputs3536Return one YAML handoff:3738 schema_version: 139 selected_lane: .system/skill-creator|skillify|skill-factory-router|skill-refactor|.system/skill-installer40 mode: create|capture|harden|analyze|install41 rationale: <one sentence tied to the request shape>42 next_step: <specific skill or system lane to load next>43 first_principles_check:44 required: true|false45 result: skill|docs|script|hook|validator|rule|answer|not_checked46 blocked_by: null4748Expected artifacts: no source edits from this router. Downstream lanes own review reports, eval artifacts, package outputs, runtime evidence, commits, and publication receipts.4950## Workflow51521. Match the request to this routing table. Explicit lane names win unless the user names multiple lanes or asks for an unsafe action.532. For create, draft, or new SKILL.md requests, select .system/skill-creator with mode create.543. For skillify, save this process as a skill, or make reusable guidance requests, select skillify with mode capture.554. For fix, improve, raise Tessl score, repair evals, or reduce token cost requests, select the Skill Factory hardening workflow with mode harden.565. For failing-skill, duplicate comparison, merge, or retire requests, select skill-refactor with mode analyze.576. For install, list, sync, or prove Codex can see a skill requests, select .system/skill-installer with mode install.587. For copy or fork the system skill creator or installer requests, block the fork and route to the matching system lane.598. For major new-skill or broad-rewrite requests, decide whether the durable answer is a skill, docs, script, hook, validator, rule, or direct answer.609. Return the handoff and stop unless the user explicitly asks this router to execute the selected lane.6162Use Infrastructure/references/first-principles-factory-gate.md for the first-principles factory gate before routing create, harden, refactor, or skillify work.63For .system/skill-creator or .system/skill-installer, attach Skill Factory references or eval contracts; do not fork the system skill body. Apply the context-disposition policy: move important still-valid context to references and discard stale, duplicated, unsafe, superseded, or low-signal text.6465## Failure Mode6667- No single lane fits: set blocked_by to the ambiguity and ask the smallest routing question.68- The request asks this router to mutate source, install, sync, publish, or run downstream proof before lane selection: block and name the downstream owner.69- The request would resurrect retired flat command handles, generated aliases, or projection-only manifest rows: block and route to canonical source repair.70- The request treats plugin-cache visibility, command-surface rows, flat skill symlinks, and runtime picker visibility as the same proof surface: block and separate the lanes.71- Claim environment, auth, runtime, Tessl, plugin cache, command surface, or Codex picker state only from current-turn evidence.7273## Gotchas7475- Execution boundaries matter: this router selects the lane only. Downstream skills own edits, sync, evals, install proof, and publication proof.76- Do not treat a route decision, plugin-cache row, or picker projection as proof that the selected skill passed validation.7778## Execution Boundaries7980- This router produces a lane handoff only; it does not edit source, install skills, sync projections, publish packages, or run downstream eval proof.81- Downstream lanes own source edits, runtime sync, external review, Tessl evals, package outputs, and publication receipts.8283### Anti-Patterns To Avoid8485- Do not mutate skill source while routing; return the lane handoff first.86- Do not fork .system/skill-creator or .system/skill-installer when the correct answer is to load the preserved system lane.87- Do not collapse install, projection, Tessl, Plugin Eval, and Registry evidence into one status.88- Do not route ordinary app debugging, CI repair, or repo refactors into Skill Factory only because the word "skill" appears nearby.8990### Variation9192Adapt the handoff to the request shape. Creation asks need a first-principles check, hardening asks need the failing proof lane, refactor asks need duplicate or retirement evidence, and install asks need runtime visibility boundaries.9394## Validation9596- Keep routing read-only unless the user explicitly asks this router to execute a selected lane.97- Downstream lanes own source edits, runtime sync, external review, Tessl evals, packaging, publishing, and install proof.98- A route decision is not proof that a skill is installed, visible in Codex, passing evals, or safe to publish.99- Runtime picker visibility depends on regenerated projections and local sync, not only canonical source edits.100- Redact secrets, tokens, PII, and sensitive local paths.101- Stop at the first failed required gate, classify it, and do not sync, commit, publish, or install until it is fixed or explicitly blocked.102- bash Infrastructure/scripts/validation-and-linting/validate_skill_authoring_family.sh103- ./bin/ask skills external-review Plugins/skill-factory/skills/skill-factory-router --audit-level compat --json104105## References106107Load only the reference needed for the selected routing question:108109Read when: choose exactly one reference below after the routing question is known.110111- Read when validating the router contract or output shape: [references/contract.yaml](references/contract.yaml)112- Read when checking routing eval coverage or Tessl cases: [references/evals.yaml](references/evals.yaml)113- Read when tuning evaluator thresholds: [references/task-profile.json](references/task-profile.json)114- Read when the target, lane, write authority, or validation need is ambiguous: [references/discovery-interview.md](references/discovery-interview.md)115- Read when lane policy or first-principles routing is disputed: [references/routing-policy.md](references/routing-policy.md)