name: scope description: | Scope a Linear ticket: read the description, explore the codebase, produce a written scope, post it as a Linear comment, and transition the ticket from Todo to Ready for dev. Use when the user asks to "scope SNOW-NN", "let's scope SNOW-NN", "work out SNOW-NN", "spec SNOW-NN", or any phrasing where they want a Linear ticket turned from a sentence into a proper scope. Do NOT use for: starting work on an already-scoped ticket, asking questions about a ticket without producing a scope, or any message that doesn't explicitly reference a SNOW-NN identifier. allowed-tools: Task, Bash, Read, Grep, Glob, EnterPlanMode, ExitPlanMode, mcp__linear
Scope SNOW-$1
You are scoping Linear ticket SNOW-$1 in the Snowdesk codebase.
Step 1 — Verify ticket state
Use the Linear MCP get_issue tool to fetch SNOW-$1.
Hard precondition: the ticket must be in Todo state. If it is in
Backlog, tell the user it needs to be prioritised first and stop. If it
is in Ready for dev, In Progress, In Review, or Done, tell the user
it has already been scoped and stop. Do not proceed past this step on a
wrong-state ticket.
Step 2 — Delegate scoping to the scoper agent
Invoke the scoper subagent via the Task tool. Pass it:
- The Linear ticket ID (
SNOW-$1) - The Linear ticket git branch name as fetched
- The ticket title and description as fetched
- A clear instruction to produce a scope document and return it as the final message
The scoper runs in an isolated context. It will explore the codebase to ground the scope in what actually exists. Its working tokens stay in its own context — you only see the final scope document.
Step 3 — Present the scope via plan mode for approval
Once the scoper returns, present the scope through plan mode so it renders in the sidebar UI with a proper approve / reject control — not as inline conversational text the user has to reply to:
- Call
EnterPlanModeto enter plan mode. No research needed here — the scoper already did it. Edits and writes are blocked in plan mode, which keeps this step strictly read-only. - Immediately call
ExitPlanModewith the full scope document verbatim as theplanargument. Do not summarise, reformat, or wrap it in extra commentary — the sidebar should show exactly what would be posted to Linear.
ExitPlanMode renders the scope in the sidebar with an approve / reject
control. The user reviews and acts via the UI.
If the user rejects with edits, revise and re-present via ExitPlanMode
again — each revision goes through the sidebar, not as inline text. Do not
invoke the scoper again unless the user explicitly asks for a fresh take —
refinements are usually small and you can handle them in the main thread.
Hard gate: do not post to Linear or transition the ticket until the user has approved the scope via the sidebar.
Step 4 — On approval, post and transition
When the sidebar approval comes through:
- Post the scope as a comment on the Linear ticket using
save_comment(the comment'sissueIdis the internalidfromget_issue, NOT theSNOW-NNidentifier). - Transition the ticket to
Ready for devusingsave_issuewith the existingidand the newstateId. - Confirm to the user: "Scope posted, SNOW-$1 moved to Ready for dev."