plugins/linear-spec-plugin/skills/execute-task/SKILL.md
Execute a single story sub-issue end-to-end — either a new story or a fix from validation findings. Reads the sub-issue, parent spec, and architecture, then produces working output that meets all acceptance criteria. Code goes through worktrees; execution logs and state changes go to Linear.
npx skillsauth add jaisonerick/spec-plugin execute-taskInstall 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: execute ONE story end-to-end, producing output that meets all acceptance criteria. The story is either a new task (from /build-stories) or a fix (from /validate-execution findings).
Scripts live in ${CLAUDE_PLUGIN_DIR}/scripts/linear/. Required: LINEAR_API_KEY. If it isn't set, fetch it from 1Password: export LINEAR_API_KEY="$(op read op://Environments/Linear/credential)".
State transitions for a story sub-issue:
Backlog/Todo → In Progress → (In Review →) Done
Execution logs are posted as comments on the sub-issue. Acceptance criteria stay in the description as a checklist; tick them via set-issue-description.js once each is satisfied.
Argument is an identifier or free text. If text:
node "${CLAUDE_PLUGIN_DIR}/scripts/linear/search.js" --type issue --query "<text>" --limit 5
Pick via AskUserQuestion. Then load full context:
node "${CLAUDE_PLUGIN_DIR}/scripts/linear/get-issue.js" "<identifier>" --with-comments --with-children
Verify it has a parent (it should — stories are sub-issues). Capture: issue.id, issue.identifier, issue.description, issue.state, issue.parent.identifier, existing comments.
If existing comments include an in-progress execution log, resume from where it left off — read the most recent log to understand current state.
node "${CLAUDE_PLUGIN_DIR}/scripts/linear/resolve-spec.js" "<parent-identifier>"
Context: line) — project type and code repository path.Spec vX.Y — Architecture Project Document) for component breakdown, data model, decisions.Architecture Project Document) for cross-cutting decisions.The project briefing's project context determines your execution approach:
git worktree.The orchestrator will include validation findings in the prompt — specific failures that need to be addressed. Read the comments on the parent spec issue and the linked Validation Report Project Document to understand what failed and why.
If the story lists a prior /interface-design story as a prerequisite, fetch that story's comments via get-issue.js --with-comments to find the files it produced. Build on them, don't redesign them.
node "${CLAUDE_PLUGIN_DIR}/scripts/linear/transition-issue.js" "<identifier>" --state "In Progress"
Post an opening comment that the work is starting and how you plan to approach it (file list, order, blockers if any):
echo "<starting comment>" | node "${CLAUDE_PLUGIN_DIR}/scripts/linear/post-comment.js" "<identifier>"
Before producing any output:
EnterWorktree first (if not already inside one) — the orchestrator usually provides the worktree name in the prompt.
New stories:
Fix tasks:
Integrating Interface-Design Output:
.interface-design/system.md for design tokens and patternsThe knowledge base lives outside any worktree — write directly to the disk paths.
New stories:
Fix tasks:
New stories:
Write automated tests alongside the implementation. Pragmatic coverage — not 100%, but confidence that key behaviors work.
After writing tests, run them and ensure they all pass. Tests MUST pass before moving to Phase 6.
Walk through each acceptance criterion from the sub-issue description:
Stage a log to /tmp/linear-spec/<story-id>/log-<timestamp>.md and post as a comment:
## Execution Log — <date>
**Status**: completed | in-progress
**Completed:**
- What was done (with file paths and commit hashes if code)
**Decisions Made:**
- Any implementation decisions not in the original task
**Issues Encountered:**
- Problems hit and how they were resolved
**Struggled With:**
- Things that took multiple attempts
- Process difficulty that future agents should know about
**QA Setup:** *(code projects only — when validation needs special prep)*
- Migrations to run, env vars to set, services to start
**Pending:** *(only if in-progress)*
- What's left to do
node "${CLAUDE_PLUGIN_DIR}/scripts/linear/post-comment.js" "<identifier>" \
< /tmp/linear-spec/<story-id>/log-<timestamp>.md
If you ticked acceptance criteria in the description, write the updated description back:
node "${CLAUDE_PLUGIN_DIR}/scripts/linear/set-issue-description.js" "<identifier>" \
< /tmp/linear-spec/<story-id>/description.md
In Review.Done.In Progress (do not transition).node "${CLAUDE_PLUGIN_DIR}/scripts/linear/transition-issue.js" "<identifier>" --state "In Review"
After completing a code task, ensure validation can happen without guessing:
docs/dev-environment.md in the code repo with exact commands.**QA Setup**.update-document.js <doc-id> with the divergence noted.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.