| name | linear-project-workflow |
|---|---|
| description | Opinionated end-to-end workflow for a small multi-dev project (design → grill → issues → build+capture → verify → retro). The thin hub that names the phases and their gates, delegating each to a focused spoke skill. Use when kicking off, running, or wrapping a multi-person project in Linear. |
This is a thin orchestrator: it owns the phase flow and the gates between phases, and delegates each phase to a focused spoke. It deliberately does NOT repeat the spokes' content — a monolith that inlines everything dilutes the instructions and rots. The hub stays small so it never becomes the coupling bottleneck.
Every rule was retrofitted from a real project (Native 2FA) where the code shipped in ~90 minutes but key security invariants were designed in commit messages with no durable home, caught only by adversarial review. The workflow's job is to make that catch systematic.
| Phase | Spoke skill | Owns |
|---|---|---|
| 0 Design | domain-modeling | states + transitions; the "every edge out" smell test |
| 1 Grill | grilling (via grill-with-docs) | the interview that emits ADRs + glossary |
| 2 Issues | linear-workflow, linear-cli | issue/branch/PR mechanics |
| 3 Build + capture | decision-capture | decision→ADR, gotcha→Discoveries, the review gate |
| 4 Verify | review-pr, verify, qa-playbook | adversarial review, run-it-for-real, manual QA |
| 5 Retro | project-retro | timeline-from-git → systemic fixes → back to this hub |
Four docs, four lifecycles — keeping them separate is the point (a living plan and an immutable record read differently).
| Doc | Answers | Lifecycle |
|---|---|---|
| Tech Design | What are we building? | living during design |
| PRD | What must it do? | stable; the contract |
| Decision Log (ADRs) | Why this way? | append-only, forever true |
| Retro | What we'd change | one, at the end |
Decision Log opens with a glossary (the domain vocabulary — new readers need the words before the decisions parse). ADRs are canonically in-repo at docs/adr/ (versioned with code, reviewable in the PR that changes them) and mirrored to the Linear doc for team visibility. Plus a low-ceremony Discoveries stream for gotchas (see decision-capture).
Phase 0 Design → domain-modeling: model states+transitions. A state with ONE edge out is
a decision nobody made yet. Output: sketch + visible TBDs.
Phase 1 Grill → grilling: relentless interview over the sketch. ADRs + glossary fall OUT
of it, into the log, BEFORE issues are cut.
Phase 2 Issues → linear-workflow / linear-cli: per-PR slices, sequenced by dependency,
release bar marked. Parallelize REVIEW, not the build (see gate below).
Phase 3 Build+capture→ decision-capture: as you build, decision→ADR (same PR), gotcha→Discoveries.
The gate: every PR review asks "did this produce a decision or gotcha,
and where's it written?"
Phase 4 Verify → review-pr (parallel adversarial passes) + verify (run it for real, not
REPL-green) + qa-playbook (manual, doubles as PRD acceptance).
Phase 5 Retro → project-retro: timeline from git, each stumble → a systemic fix that
edits THIS workflow. The loop that keeps it honest.
- Design → Grill: every new state/token/boundary in the design has its lifecycle questions asked (answered or TBD). A missing question blocks; an unanswered one is just a build issue.
- Grill → Issues: the genuinely-contested TBDs are settled and logged as ADRs. Don't cut underspecified issues — that's churn.
- Build → Verify: every PR review runs the capture gate ("decision/gotcha → where written?"). This is the catch layer the whole workflow exists for.
- Verify → merge: fresh-JVM/full-suite (not REPL-green), adversarial review clean, QA playbook green.
- Retro → next project: recurring misses become new gates or checklist items here.
For a small, fast project: do NOT split the build across devs — by the time you split work and sync state, one person has finished. Parallelize review, research, and audit — those are genuinely independent. Reserve multi-dev/multi-agent fan-out for slow, wide phases (large migrations, broad audits).
- Pre-digging every possible issue up front. Waterfall fallacy. Force the questions (Phase 0), defer the answers, rely on the catch layer (Phase 3 gate). Don't over-index on any single up-front miss.
- Trusting REPL-green. It runs stale definitions after a rename/split. Always fresh-JVM before push.
git add -Aon a dirty tree. Sweeps local session files into the commit. Explicit paths /git add -p.- Feature-registration incompleteness. New feature/setting/enum → grep every enumeration (define site, token map, FE type, stats mirror, tests). Miss one = red CI chased across the matrix.
- Editing someone else's design doc without a nod. Propose, don't overwrite. Issue comments and factual reconciliation are fine to just do; narrative status updates are humans-only.