plugins/linear-spec-plugin/skills/plan/SKILL.md
Design an evolutionary delivery roadmap by creating a Linear initiative (where applicable), deliverable projects, and one issue per spec. Adapts to project type — code releases, consulting milestones, research phases. Use after /ideate and /architect.
npx skillsauth add jaisonerick/spec-plugin planInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Your task: design an evolutionary delivery roadmap by working with the user to decide what gets done first, what comes next, and what "done" looks like for each spec — and persist the structure to Linear (initiative, projects, spec issues).
Scripts live in ${CLAUDE_PLUGIN_DIR}/scripts/linear/ and read LINEAR_API_KEY from env. If it isn't set, fetch it from 1Password: export LINEAR_API_KEY="$(op read op://Environments/Linear/credential)".
The shape created in Linear (engagement example):
Team DIN
└─ Initiative OS-002 (Advisor OS) ← created by this skill if missing
└─ Project OS-002 / 02 API Implementation ← deliverable; one project per deliverable
└─ Issue Spec v0.3 — short name ← one issue per spec, label type/spec
For ventures/studio projects there is no initiative — just project + spec issues.
You are a project manager. Your job is to help the user decide the order in which their project comes to life. Each spec is defined by what it delivers — not by what gets built internally.
The argument can be:
search.js --type project or --type initiative and pick.Resolve to one of:
team_key (e.g. DIN, NEX, STU, JAI) — required.initiative_id — set when this is OS-level work; absent for ventures/studio.project_ids — populated if some deliverables already exist.If a Linear initiative or any matching project already has spec issues, this is re-planning. Read existing structure with:
node "${CLAUDE_PLUGIN_DIR}/scripts/linear/get-project.js" "<project-id>" --with-issues --with-documents
Ask via AskUserQuestion:
Plan the diff against existing Linear state. Never recreate issues that already exist; update or skip.
Context: ...), and the surrounding folder.Architecture on the deliverable project, or the project briefing if architecture has not been written yet).Start from the briefing/architecture and ask the user to find the core.
Ask via AskUserQuestion: "Looking at your project, what is the ONE thing this must deliver? If it only did this one thing, would it still be worth doing?"
This becomes V0.1 — the minimum viable spec.
Work with the user to decide what goes into each spec.
From the briefing, extract every distinct outcome the project delivers. Present them as a flat list.
Adapt the framing to the project type:
Code projects:
Business/consulting projects:
Research projects:
Given the core from Phase 2, ask what's essential for the first spec vs. what can wait.
After V0.1, present remaining deliverables and ask the user to prioritize into subsequent specs.
For each spec, challenge:
Ask: "Which spec is your V1.0 — the first version that's 'complete enough' to present, ship, or hand off?"
For each new structural element, run scripts. Show the user the plan and confirm before writing.
If initiative_id is unset and the project type is engagement-with-OS, create the initiative:
echo "<one-paragraph initiative description with second-brain Context: line>" | \
node "${CLAUDE_PLUGIN_DIR}/scripts/linear/create-initiative.js" --name "<OS-XXX — Title>"
Capture the returned id as initiative_id. Skip for ventures/studio.
For each deliverable identified in Phase 3 that doesn't have a Linear project yet:
echo "Context: <path-to-briefing-on-disk>" | \
node "${CLAUDE_PLUGIN_DIR}/scripts/linear/create-project.js" \
--team "<team-key>" \
--name "<deliverable name>" \
${initiative_id:+--initiative "$initiative_id"}
Each project description starts with the second-brain Context: line so the back-link is permanent.
For ventures/studio, the project itself plays the deliverable role — usually one project per project.
For each spec V0.1, V0.2, ..., create an issue inside its target deliverable project. Body of the issue is the spec body (see template below). Use the type/spec label — the script auto-creates it if missing in the team:
cat <<'MD' | node "${CLAUDE_PLUGIN_DIR}/scripts/linear/create-issue.js" \
--project "<project-id>" \
--team "<team-key>" \
--title "Spec vX.Y — <short name>" \
--label "type/spec" \
--state "Backlog"
# VX.Y: Spec Title
... (spec body, see template below) ...
MD
Capture each returned identifier (e.g. DIN-150) — these are how the user/orchestrator addresses specs from now on.
Write the issue description in this shape:
> Builds on: [VX.Y-1 — Title](<previous spec issue URL>) (or "New project" for V0.1).
> Next: [VX.Y+1 — Title](<next spec issue URL>) — fill after sibling specs are created.
## What's New
One paragraph: what changes after this spec ships. Focus on outcomes — what's different now.
## Demo
Concrete example of the spec's output.
For code: exact commands, inputs, expected outputs.
For business: what the deliverable looks like, key content.
For research: what the findings show, how they're presented.
## Capabilities
### Delivered in this spec:
- (bulleted list of tangible outcomes)
### Simplified in this spec (improved later):
- (things that work but in a limited way)
### Not yet available:
- (explicit list of what's deferred)
## Definition of Done
Checklist of concrete, verifiable conditions.
- [ ] Outcome X is delivered and verified
- [ ] Stakeholder Y has reviewed Z
- [ ] (etc.)
## Open Questions
- Decisions that may need to be made during implementation
After every spec issue is created, do a second pass to add the "Next" link in each one's description (set-issue-description.js with the updated body).
/architect-version and execution.Linear is now the source of truth for the spec sequence — so there is no roadmap.md to write. Instead, append a "Linear roadmap" section to the project briefing on disk (or its appropriate quick-links section):
## Linear
- **Initiative:** [<OS-XXX>](<initiative URL>) *(only for engagements)*
- **Deliverables:**
- [<deliverable name>](<project URL>)
- **Specs:**
- V0.1 — [<short name>](<DIN-XXX URL>) — Backlog
- V0.2 — ...
Confirm the diff with the user before editing the briefing.
Present a summary:
/orchestrate <DIN-XXX> to execute each spec in order."development
Review UI code for Web Interface Guidelines compliance. Use when asked to "review my UI", "check accessibility", "audit design", "review UX", or "check my site against best practices".
tools
Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK).
development
Convert documents and files to Markdown using markitdown. Use when converting PDF, Word (.docx), PowerPoint (.pptx), Excel (.xlsx, .xls), HTML, CSV, JSON, XML, images (with EXIF/OCR), audio (with transcription), ZIP archives, YouTube URLs, or EPubs to Markdown format for LLM processing or text analysis.
development
Validate a version's implementation against its Definition of Done. For code projects: runs automated tests against the live application. For non-code projects: reviews deliverables against acceptance criteria. Runs incrementally on re-runs. Ends with human validation guidance.