You're starting a focused work session on a single Linear issue. Load its context, summarize it, and enter plan mode so the user can sign off before you start coding.
Invocation input: the issue identifier. Accept either the full form (NON-45) or just the number (45). If numeric, prepend the team key from the project configuration.
What to do
Read project configuration. Prefer .factory-kit/linear.json; use legacy .claude/linear.json only as a migration fallback. If neither exists, stop and direct the user to the setup-linear workflow. Pull teamKey for ID resolution.
Resolve the identifier. If the invocation input is numeric, construct <teamKey>-<num> (e.g., 45 → NON-45). If already in KEY-NN form, use it as-is.
Fetch the issue through the connected Linear integration. Include comments and linked sub-issues if available.
Fetch the project through the Linear integration if the issue belongs to one and you haven't loaded it yet this session.
Check blockers. If the issue has open blockedBy relations, list them and warn loudly before proceeding. Ask whether the user wants to continue or pick a different ticket.
Summarize for context (≤ 250 words). Use this shape — bold labels, short lines, omit any section that's empty:
- Issue:
<KEY-N> — title + priority + current state
- Outcome: one sentence on what "done" observably looks like. If the issue lacks a clear outcome, say so — that's the first thing to fix.
- Scope: the unchecked acceptance criteria / open checkboxes
- Encoded constraints: anything in the description or comments that locks an approach — name the underlying force (compliance, perf budget, prior decision), not just the rule
- Customer voice: if user feedback is quoted in the issue or linked, surface the raw words — don't paraphrase
- Open design calls: "decide during build" items worth resolving up front
- Context graph: parent, sub-issues, blockedBy/blocks, linked PRs, design docs — IDs + titles only. This is the issue's place in the wider decision graph; if it looks isolated, flag it as a yellow flag.
Flag issue quality (brief — one line if everything is fine). Linear's house style is: short title with a concrete outcome, body only as long as needed. If the issue is missing a clear outcome, written as a user story, or sitting orphaned with no context links, name it. Don't fix it silently — surface it so the user can decide whether to rewrite before designing the change.
Enter planning mode. Use the host's planning capability when available. Otherwise, present the implementation plan in chat and stop for explicit approval. Do not start coding before approval.
Style
Follow factory-voice.md. The reader is you, two minutes from now, about to design the change — give yourself what you'd need to make calls. Surface non-obvious constraints (invariants, prior decisions, blocking relations) at the top, not buried. No marketing copy, no hedging. If a constraint locks the design, name the principle behind it, not just the rule.
1---2name: factory-entry3description: Load a Linear issue into context and enter plan mode for a focused session4---56You're starting a focused work session on a single Linear issue. Load its context, summarize it, and **enter plan mode** so the user can sign off before you start coding.78**Invocation input:** the issue identifier. Accept either the full form (`NON-45`) or just the number (`45`). If numeric, prepend the team key from the project configuration.910## What to do11121. **Read project configuration.** Prefer `.factory-kit/linear.json`; use legacy `.claude/linear.json` only as a migration fallback. If neither exists, stop and direct the user to the setup-linear workflow. Pull `teamKey` for ID resolution.13142. **Resolve the identifier.** If the invocation input is numeric, construct `<teamKey>-<num>` (e.g., `45` → `NON-45`). If already in `KEY-NN` form, use it as-is.15163. **Fetch the issue** through the connected Linear integration. Include comments and linked sub-issues if available.17184. **Fetch the project** through the Linear integration if the issue belongs to one and you haven't loaded it yet this session.19205. **Check blockers.** If the issue has open `blockedBy` relations, list them and **warn loudly** before proceeding. Ask whether the user wants to continue or pick a different ticket.21226. **Summarize for context (≤ 250 words).** Use this shape — bold labels, short lines, omit any section that's empty:23 - **Issue:** `<KEY-N> — title` + priority + current state24 - **Outcome:** one sentence on what "done" observably looks like. If the issue lacks a clear outcome, say so — that's the first thing to fix.25 - **Scope:** the unchecked acceptance criteria / open checkboxes26 - **Encoded constraints:** anything in the description or comments that locks an approach — name the underlying force (compliance, perf budget, prior decision), not just the rule27 - **Customer voice:** if user feedback is quoted in the issue or linked, surface the raw words — don't paraphrase28 - **Open design calls:** "decide during build" items worth resolving up front29 - **Context graph:** parent, sub-issues, blockedBy/blocks, linked PRs, design docs — IDs + titles only. This is the issue's place in the wider decision graph; if it looks isolated, flag it as a yellow flag.30317. **Flag issue quality** *(brief — one line if everything is fine).* Linear's house style is: short title with a concrete outcome, body only as long as needed. If the issue is missing a clear outcome, written as a user story, or sitting orphaned with no context links, name it. Don't fix it silently — surface it so the user can decide whether to rewrite before designing the change.32338. **Enter planning mode.** Use the host's planning capability when available. Otherwise, present the implementation plan in chat and stop for explicit approval. Do not start coding before approval.3435## Style3637Follow `factory-voice.md`. The reader is *you, two minutes from now, about to design the change* — give yourself what you'd need to make calls. Surface non-obvious constraints (invariants, prior decisions, blocking relations) at the top, not buried. No marketing copy, no hedging. If a constraint locks the design, name the principle behind it, not just the rule.