--- description: Pipeline planning uses .convoys/*.md — not Cursor Plan files in .cursor/plans/ alwaysApply: true --- # Convoy planning (pipeline work) When scoping, planning, or kicking off **pipeline work** (features, hotfixes, epics tracked by L2 roles), use **convoy files** — not Cursor's native Plan mode. ## Where plans live | Use case | Location | Who writes it | | --- | --- | --- | | **Product backlog** (Plan/Epic/Task) | `plans/` → Echodo DB | Humans + markdown import | | **Pipeline convoy** (idea → briefs → PR) | `.convoys/.md` | `role-conductor`, then other L2 roles | | **Implementer briefs** | `.convoys//brief--.md` | `role-architect` | | **Cursor Plan mode** (ad-hoc, non-pipeline) | `.cursor/plans/*.plan.md` | Cursor UI — **not** the agent-pipeline | ## Do - Start pipeline work: *"Run role-conductor: start a new convoy for [idea]. Success = [metric]."* - Read [`.convoys/README.md`](mdc:.convoys/README.md) for frontmatter, skip flags, and lifecycle. - Use `model_policy.roles` with **registry alias names** per [docs/adr-model-routing.md](mdc:docs/adr-model-routing.md). - Log role completion: `bash scripts/log-convoy-event.sh role=... convoy=...` when the script exists. - Dogfood Echodo: `claim_task` / `complete_task` on the matching `plans/**/Task-*.md` during implementer sessions. ## Do not - Create `.cursor/plans/` files for convoy or L2-role work. - Store convoy execution state only in chat when a `.convoys/<slug>.md` file should exist. - Put secrets or API keys in convoy frontmatter — use `model_policy` alias names only. ## If a `.cursor/plans/` file already exists That is Cursor's native Plan artifact, not a pipeline convoy. Copy useful content into `.convoys/<slug>.md` and continue from the convoy file.