pipeline-router
Select the most appropriate pipeline for a user goal, lock it in `PIPELINE.lock.md`, and route checkpoint questions into `DECISIONS.md`.**Trigger**: pipeline router, choose pipeline, workflow selection, PIPELINE.lock.md, 选择流程.**Use when**: 用户目标/交付物不清晰,需要在 snapshot/survey/tutorial/systematic-review/peer-review 中选一个并设置最小 HITL 问题集。**Skip if**: pipeline 已锁定(`PIPELINE.lock.md` 存在)且所需问题已回答/签字完成。**Network**: none.**Guardrail**: 尽量一次性提问;信息不足就写 `DECISIONS.md` 并停下等待。
When & Why to Use This Skill
The Pipeline Router is a specialized Claude skill designed to automate workflow orchestration by selecting the most appropriate execution pipeline based on user goals. It enhances agentic efficiency by locking project structures into `PIPELINE.lock.md` and maintaining a rigorous audit trail of decisions and checkpoints in `DECISIONS.md`. This skill is essential for managing complex, multi-step tasks that require Human-in-the-Loop (HITL) interactions and standardized delivery formats.
Use Cases
- Workflow Initialization: Automatically determining if a project requires a systematic review, a technical tutorial, or a research snapshot based on initial user prompts.
- Decision Auditing: Routing critical project questions and approvals into `DECISIONS.md` to ensure a transparent and traceable history of project evolution.
- Checkpoint Management: Utilizing scriptable helpers to manage project milestones (C0, C1, C2), ensuring all quality checklists and prerequisites are satisfied before moving to the next phase.
- HITL Optimization: Minimizing user interruptions by batching necessary clarification questions into a structured form when project goals are ambiguous.
| name | pipeline-router |
|---|---|
| description | | |
| **Trigger** | pipeline router, choose pipeline, workflow selection, PIPELINE.lock.md, 选择流程. |
| **Use when** | 用户目标/交付物不清晰,需要在 snapshot/survey/tutorial/systematic-review/peer-review 中选一个并设置最小 HITL 问题集。 |
| **Skip if** | pipeline 已锁定(`PIPELINE.lock.md` 存在)且所需问题已回答/签字完成。 |
| **Network** | none. |
| **Guardrail** | 尽量一次性提问;信息不足就写 `DECISIONS.md` 并停下等待。 |
Pipeline Router
“Routing” usually means two different things:
- Pipeline selection + lock: choose a single pipeline and write
PIPELINE.lock.md. - Checkpoint routing: keep the run auditable by drafting/updating checkpoint blocks in
DECISIONS.md(and, forC0, seedingqueries.mdfromGOAL.md).
This skill supports both, but keeps the semantic choice LLM-first and the repetitive checkpoint scaffolding scriptable.
Inputs
Workspace context (when available):
GOAL.mdSTATUS.mdDECISIONS.mdPIPELINE.lock.md
Optional template:
assets/pipeline-selection-form.md
Outputs
PIPELINE.lock.md(Mode A; selection + lock)- Updates to
DECISIONS.md(all modes; checkpoint blocks + approvals checklist) queries.md(best-effort forC0; seeded fromGOAL.md)- Optional: updates to
STATUS.md
Decision tree (selection)
User goal → choose:
- “survey / 综述 / 调研” →
pipelines/arxiv-survey.pipeline.md - “survey + PDF / LaTeX / 可编译” →
pipelines/arxiv-survey-latex.pipeline.md - “tutorial / 教程” →
pipelines/tutorial.pipeline.md - “systematic review / PRISMA / 系统综述” →
pipelines/systematic-review.pipeline.md - “peer review / 审稿” →
pipelines/peer-review.pipeline.md - “snapshot / 速览” →
pipelines/lit-snapshot.pipeline.md
Workflow
Mode A — selection + lock (LLM-first)
- Read the goal from
GOAL.md(or the user message). - If key details are missing, use
assets/pipeline-selection-form.mdto draft a concise question list intoDECISIONS.mdand stop. - Select exactly one pipeline under
pipelines/*.pipeline.md. - Write
PIPELINE.lock.mdwith:pipeline: <path>units_template: <path from pipeline front matter>locked_at: <YYYY-MM-DD>
- Update
STATUS.md(“Current pipeline” + checkpoint).
Mode B — checkpoint blocks (script helper)
Use the helper to keep DECISIONS.md in sync with checkpoints:
- Kickoff questions + seed queries (C0):
python .codex/skills/pipeline-router/scripts/run.py --workspace <ws> --checkpoint C0
- Scope/outline approval summary (C2):
python .codex/skills/pipeline-router/scripts/run.py --workspace <ws> --checkpoint C2
- Other checkpoints:
python .codex/skills/pipeline-router/scripts/run.py --workspace <ws> --checkpoint C1
Quality checklist
-
DECISIONS.mdhas a checkpoint block for the activeC*. - Approvals checklist exists and includes
Approve C*checkboxes. - If selection was needed,
PIPELINE.lock.mdpoints to exactly one pipeline file. - If the run is retrieval-based,
queries.mdis non-empty afterC0seeding.
Side effects
- Allowed: create/update
PIPELINE.lock.md; editSTATUS.md; append/updateDECISIONS.md; seedqueries.md. - Not allowed: modify files under
.codex/skills/assets/templates.
Script
Quick Start
python .codex/skills/pipeline-router/scripts/run.py --helppython .codex/skills/pipeline-router/scripts/run.py --workspace <workspace_dir> --checkpoint C0
All Options
--checkpoint <C0|C1|C2|...>: which checkpoint block to draft/update (unknown checkpoints get a generic template)
Examples
- Kickoff questions + seed queries:
python .codex/skills/pipeline-router/scripts/run.py --workspace <ws> --checkpoint C0
- Generic protocol approval block (systematic review C1):
python .codex/skills/pipeline-router/scripts/run.py --workspace <ws> --checkpoint C1
- Scope/outline approval summary:
python .codex/skills/pipeline-router/scripts/run.py --workspace <ws> --checkpoint C2
Notes
python scripts/pipeline.py kickoff|initwritesPIPELINE.lock.mdand then (best-effort) runs this script forC0.- The script reads
PIPELINE.lock.md(if present) to display the pipeline in the kickoff block; it does not choose the pipeline.
Troubleshooting
Issue: PIPELINE.lock.md points to one pipeline but UNITS.csv looks like another
Cause:
- Workspace was initialized from one pipeline and later re-pointed without updating
UNITS.csv.
Fix:
- Re-run
python scripts/pipeline.py init --workspace <ws> --pipeline <name> --overwrite-units, or copy the correcttemplates/UNITS.*.csvintoUNITS.csv.