Use this skill to run an OpenSpec change lifecycle while preserving a clear handoff boundary:
- Linear issue/card owns the business "what": business goal, use cases, personas/workflows, scope, acceptance criteria, and stakeholder-facing status. Keep its description synchronized from the business-facing content in
proposal.md. - The repo owns the technical "how": OpenSpec design decisions, tasks, implementation details, migrations, tests, and code.
- Canonical specs live under
openspec/specs/. After archive succeeds, mirror those specs into Linear Project Documents for stakeholder visibility.
Linear updates are best effort once project setup exists.
Invocation Contract
- If the user asks to operate on an OpenSpec change, use this skill as the Linear lifecycle overlay.
- Also use the base OpenSpec skill that matches the request, such as
openspec-propose,openspec-apply-change,openspec-archive-change, oropenspec-sync-specs. - If
openspec/linear.yamlexists, run the relevant Linear hook for the current phase when possible. - If
openspec/linear.yamlis missing during proposal/setup, create it before issue hunting, story selection, or other Linear lifecycle work. - If
openspec/linear.yamlis missing outside proposal/setup, no-op the Linear hook and continue normal OpenSpec work. - For status, validate, sync, continue, and artifact-editing work, preserve Linear binding awareness but do not move a Linear story to Done.
Start
- Read
references/lifecycle.mdbefore doing lifecycle work. - Run
openspec list --jsonto understand active changes. - Determine the phase from the request:
- Proposal: create or continue an OpenSpec change and bind a Linear story.
- Apply: implement
tasks.mdwhile updating the bound Linear story. - Archive: archive the OpenSpec change, then mirror canonical specs and close the story.
- Sync/status/validate/continue/artifact work: keep the Linear binding in view, preserve the ownership boundary, and avoid Done transitions.
- If another OpenSpec skill also applies, use this skill as the Linear lifecycle overlay and follow the base OpenSpec skill for normal artifact generation, task execution, or archive mechanics.
Linear Rules
- Prefer Linear MCP tools when available:
list_teams,list_projects,list_issue_labels,list_issues,list_comments,list_documents,save_issue,save_comment, andsave_document. - If
openspec/linear.yamlis missing during proposal/setup, perform setup before proposal discovery: list only Linear setup data, choose team/project/optional issue label filter, then write the config. - During missing-config setup, call only
list_teams,list_projects, andlist_issue_labels. Do not calllist_issuesuntil afteropenspec/linear.yamlexists and the configured lifecycle flow requires story selection. - Ask setup choices one question at a time: first Linear team, then Linear project, then issue label filter. The label question must include an explicit "no label filter" option.
- Never infer or auto-select team, project, or label from names, ordering, previous results, or seemingly obvious matches.
- After
openspec/linear.yamlexists, Linear unavailability is non-blocking. Continue local OpenSpec work and skip Linear updates silently. - Keep Linear comments short, at most two sentences.
- Do not make Linear the specification source of truth. Canonical specs live under
openspec/specs/. - Do not transition the bound Linear story to Done before OpenSpec archive succeeds.
- Keep detailed technical design out of Linear issue descriptions and comments; keep business context out of repo design/tasks except where needed to make technical decisions traceable.
- When
proposal.mdis created or materially updated, update the bound Linear issue description with the current business-facing proposal details when possible. Exclude frontmatter, Linear metadata, detailed technical design, task lists, and implementation notes.
Phase Hooks
Proposal:
- Load
openspec/linear.yaml; if it is missing, create it first using the missing-config setup rules above. - After
openspec/linear.yamlexists, select a configured-project Backlog issue, applying the optional label filter only to candidate selection. - Read the selected issue title, description, labels, comments, links, and related context when available.
- Treat the Linear issue as the business brief. If proposal discovery produces new or corrected business details, update the Linear issue/card when possible instead of making
proposal.mdthe long-form business record. - Ask clarifying questions before writing artifacts.
- Keep
proposal.mdlean: record Linear metadata in frontmatter, include capability impact and a concise repo-facing summary, and link back to the Linear issue for business details. - After writing or updating
proposal.md, refresh the bound Linear issue description from the proposal's business-facing sections when possible. - Transition the issue to Todo when possible and add a short comment that proposal discovery started.
Apply:
- Read
linear_story_idfromopenspec/changes/<change>/proposal.mdbefore implementation. - Before implementation, sync useful business/context changes from
proposal.mdto the Linear issue description when possible, but do not copy technical design details fromdesign.mdinto Linear. - Transition Todo to In Progress when possible and add a short comment that implementation began from the OpenSpec change.
- Work through
tasks.md, marking checkboxes complete as tasks finish. - Leave Done transition for archive.
Archive:
- Complete the normal OpenSpec archive flow first, including delta spec sync when applicable.
- Only after archive succeeds, mirror canonical
openspec/specs/<capability>/spec.mdcontent into Linear Project Documents. - Use deterministic titles:
OpenSpec: <capability-name>. - Persist created or discovered document IDs in
openspec/linear.yamlwhen possible. - Transition the bound Linear issue to Done when possible and add a short archive-complete comment.
Guardrails
- Keep post-archive Linear Project Document sync guidance out of
tasks.md; it belongs to archive behavior. - Only Linear Project Documents are in scope for spec mirrors. Do not create generic project resources for specs.
- Linear Project Documents are archive-time mirrors of finalized specs, not a place for draft design notes or implementation tasks.
- If the active schema is already
linearized, honor OpenSpec CLI instructions and avoid duplicating conflicting guidance. - If the active schema is local-only, layer this skill's Linear hooks around the normal proposal/apply/archive workflow.