plugins/linear-spec-plugin/skills/architect-version/SKILL.md
Deep-dive architecture for a single spec. Reads the Linear spec issue, the deliverable's Architecture document, and adjacent spec issues, then writes the spec body to the issue description and creates a `Spec vX.Y — Architecture` Project Document. Use before /build-stories.
npx skillsauth add jaisonerick/spec-plugin architect-versionInstall 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: produce a comprehensive architecture document for a single spec, write the spec body into the Linear issue description, and create the architecture as a separate Linear Project Document.
Scripts live in ${CLAUDE_PLUGIN_DIR}/scripts/linear/. They require LINEAR_API_KEY. If it isn't set, fetch it from 1Password: export LINEAR_API_KEY="$(op read op://Environments/Linear/credential)".
Two artifacts are produced per spec:
Spec vX.Y — Architecture on the same project (long, technical).The issue description ends with a back-link to the architecture document (appendArchitectureLink convention in lib/markdown.js).
The argument is one of:
^[A-Z]{2,5}-\d+$ (e.g. DIN-142) — use directly.search.js:node "${CLAUDE_PLUGIN_DIR}/scripts/linear/search.js" --type issue --query "<text>" --label "type/spec" --limit 5
Render results as <identifier> · <title> · <project name> in AskUserQuestion. Never guess — keep asking until the user picks one.
Then resolve full context:
node "${CLAUDE_PLUGIN_DIR}/scripts/linear/resolve-spec.js" "<identifier>" --require-spec-label
Capture: issue.id, issue.identifier, issue.description, project.id, project.documents, team.key, sibling sub-issues (none expected at this phase).
project.documents by title Architecture. Read with get-issue.js/list-documents.js as needed (Linear renders content via the API — for this skill you can rely on what the resolve-spec response gave you, but if you need full content, list-documents.js --title-match "^Architecture$" returns the doc id).Context: <path>). The briefing reveals project type and code repository path.get-project.js --with-issues and skim their descriptions to understand prior and future scope.resolve-spec.js). If it's empty or marked draft, you'll generate it in Phase 4.Spec vX.Y — Architecture already exists for this issue — if yes, ask via AskUserQuestion whether to redo, revise, or abort.Identify all key decisions needed for this spec. Adapt categories to the project type.
Pay special attention to "Simplified in this spec" from the spec body — architecture should match the simplified scope, not the full future state.
Use AskUserQuestion for every significant decision point. Present:
Limit to 2-3 decisions per round. Iterate until resolved.
If the issue description is empty/draft, generate the spec body using the template below. If it already has content, read it and update only what changed (keep what the user already approved).
Spec body template (Linear issue description):
> Builds on: [VX.Y-1 — Title](<previous spec URL>) (or "New project").
> Next: [VX.Y+1 — Title](<next spec URL>).
## What's New
...
## Demo
...
## Capabilities
### Delivered in this spec:
### Simplified in this spec (improved later):
### Not yet available:
## Definition of Done
- [ ] ...
## Open Questions
- ...
Stage the body to /tmp/linear-spec/<identifier>.body.md and write:
node "${CLAUDE_PLUGIN_DIR}/scripts/linear/set-issue-description.js" "<identifier>" \
< /tmp/linear-spec/<identifier>.body.md
(Don't append the architecture link yet — Phase 5 does that after creating the doc.)
Compose the architecture content as Markdown using the section template that fits the project type, then create the Project Document:
cat /tmp/linear-spec/<identifier>.architecture.md | \
node "${CLAUDE_PLUGIN_DIR}/scripts/linear/create-document.js" \
--project "<project-id>" \
--title "Spec vX.Y — Architecture"
(If revising an existing one, use update-document.js <doc-id> instead.)
Capture the returned url.
Use mermaid for ALL diagrams (Linear renders mermaid in documents):
flowchart for processes and relationshipssequenceDiagram for interactionserDiagram for data modelsstateDiagram-v2 for state machinesRe-read the issue description (or use the body you staged in Phase 4) and append the architecture document link, then re-write the description:
<!-- linear-spec-plugin:arch-link -->
**Architecture:** [Spec vX.Y — Architecture](<doc URL>)
node "${CLAUDE_PLUGIN_DIR}/scripts/linear/set-issue-description.js" "<identifier>" \
< /tmp/linear-spec/<identifier>.body.with-arch.md
The marker <!-- linear-spec-plugin:arch-link --> lets re-runs replace the link in place.
Present a summary:
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.