Skip to content
Back to skills

Linear Slice

ASecurity

Decompose a plan into dependency-ordered Linear issues (tracer-bullet vertical slices) and release them into the autonomous dispatch pipeline.

  • 51 stars
  • 0 votes
  • 0 copies
  • 6 views
  • Added September 4, 2026
ai-agentsgorefactoringapifrontend

Works with

  • api
  • mcp

Security analysis

A100/100

Scanned September 4, 2026

npx -y skills add sliamh11/Deus --skill linear-slice --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Linear Slice?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Linear Slice
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/sliamh11-linear-slice/badge)](https://www.skillsdirectory.com/skills/sliamh11-linear-slice)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: linear-slice
description: Decompose a plan into dependency-ordered Linear issues (tracer-bullet vertical slices) and release them into the autonomous dispatch pipeline.
user_invocable: true
---

# /linear-slice

Turn a plan or PRD into a set of **thin, vertical, independently-shippable slices**, each created
as a Linear issue in dependency order, then released into Deus's autonomous dispatch pipeline.

This is the missing front-end to the Linear pipeline: the webhook gates (`enrichment-gate` →
`bouncer-gate` → dispatcher) describe how an issue *flows through* the board, but not how a good,
independently-grabbable issue gets *created*. This skill creates them.

Creating issues is a deliberate action with real side effects. **Always preview and get explicit
approval before creating anything.**

## How the pipeline works (the contract you must honor)

The board is `Backlog → Todo → Ready for Agent → Agent Working → In Review → Done`. Gates fire on
**transitions into** a state, never on issue creation:

- **Backlog → Todo** fires the **enrichment gate**, a *mutating* controller that writes the scope
  block into the issue description itself (wrapped in `<!-- gate:enrichment-gate:start -->` …
  `<!-- gate:enrichment-gate:end -->`).
- **Todo → Ready for Agent** fires the **bouncer gate**, which validates that scope block.
- The dispatcher then picks up `Ready for Agent` issues autonomously.

Consequences for this skill:

- **Create issues in Backlog.** A freshly created issue fires no gate, so it sits inert until moved.
- **Never pre-write the enrichment scope block.** It is gate-owned. Write a normal human
  description; the enrichment gate generates the `## Scope` block on the Backlog→Todo transition.
- **Never apply a `Scoped` label.** The dispatcher matches `Scoped`; applying it to a non-enriched
  issue would make the dispatcher pick up unscoped work. The gate manages that label.
- **Releasing = moving Backlog → Todo.** That is how you start the pipeline on a slice.

## Steps

### 1. Get the plan

Take the plan from one of, in priority order:
- An explicit argument (a file path, or pasted text).
- The current conversation (a plan just drafted/approved here).
- A parent Linear issue (`mcp__linear__linear_getIssueById`) whose body is the plan to decompose.

If no plan is identifiable, ask the user for one. Do not invent scope.

### 2. Decompose into tracer-bullet vertical slices

Break the plan into the smallest set of **vertical slices**. Each slice must:
- Cut through every layer needed to be **independently demoable** (a thin end-to-end thread, not a
  horizontal layer like "all the types" or "the whole API").
- Deliver one tangible increment of value on its own.
- Put **prefactoring first** — if a slice needs a seam that doesn't exist yet, make the
  prefactor its own earlier slice.

**Use codegraph before estimating blast-radius** (a skill body inherits no exploration hook, so
this is on you): for each slice that touches existing code, run `codegraph_impact` /
`codegraph_callers` on the symbols it changes to size the real blast-radius and surface prefactor
opportunities. Do not guess from filenames. Fall back to `search_code` then grep only to confirm.

### 3. Build the dependency graph

Determine the `Blocked by` edges between slices (prefactors block the features that need them; a
shared scaffold blocks its consumers). Keep it a DAG. The **unblocked (root)** slices are the ones
that can start immediately.

### 4. Resolve Linear context

(If the plan came from a parent Linear issue in Step 1, you already used
`mcp__linear__linear_getIssueById` to read it.)

- `mcp__linear__linear_getTeams` → pick the team (single team `LIA` in this workspace).
- `mcp__linear__linear_getProjects` → confirm the target project with the user. **Every issue must
  be assigned to a project — never leave an issue floating** (orchestration rule).
- `mcp__linear__linear_getWorkflowStates` (with `teamId`) → resolve the **Backlog** and **Todo**
  state IDs. The call returns `[{id, name, type, position, …}]`. **Match by exact `.name`**
  (`"Backlog"`, `"Todo"`) — **never by `.type`**: there are two `type:"backlog"` states ("Icebox"
  and "Backlog"), so a type match is ambiguous and can land issues in Icebox. Resolve IDs at
  runtime; never hardcode them.

### 5. Preview and get approval

Present, and then **stop and wait** for explicit approval:
- A slice table: `# | Title | One-line scope | Blocked by | Effort (trivial/small/medium/large)`.
- The dependency graph (ASCII or mermaid).
- The target project, and which slices will be auto-released to Todo (the unblocked ones).

Do not create anything until the user approves. If they want changes, revise and re-preview.

### 6. Create the issues (on approval)

For each slice, `mcp__linear__linear_createIssue`:
- `teamId`, `projectId` (mandatory), `title` = `[Slice N] <concise name>`.
- `description` written with **actual newlines, never `\n` escape sequences** (MCP double-escapes
  them into literal `\\n`). Use these GENERAL sections (this is not a frontend skill — do not use
  design-to-dev's Wireframe/Design-Tokens/shadcn sections):

  ```markdown
  ## Overview
  What this slice delivers and why it is independently shippable.

  ## Acceptance criteria
  - Observable, checkable outcomes that mean this slice is done.

  ## Dependencies
  Blocked by: [Slice K] <name> (and the Linear relation below). "None" if a root slice.

  ## Definition of Done
  - Builds/tests pass; criteria met; reviewed.
  ```
- Land in **Backlog** (set `stateId` to the resolved Backlog id, or leave unset — Backlog is the
  default). Do **not** write the enrichment scope block. Do **not** add a `Scoped` label. **Omit
  `priority` and `estimate`** — let the enrichment gate or the user set them; do not guess.

### 7. Link the dependencies

For each `Blocked by` edge, `mcp__linear__linear_createIssueRelation` (type `blocks`/`blocked_by`)
between the two created issue IDs, so the board reflects the DAG.

### 8. Release the unblocked slices

For each **root (unblocked)** slice, `mcp__linear__linear_updateIssue` to set `stateId` → the
resolved **Todo** id. This fires the enrichment gate and starts the autonomous pipeline. Leave
blocked slices in Backlog. Do **not** auto-release subsequent waves: tell the user which slices are
now blocked and on what, and let them re-approve (or manually release) each later wave. A blocked
slice advancing without fresh approval would push unreviewed work into the pipeline.

### 9. Cap handling — never silent-partial

If `mcp__linear__linear_createIssue` fails with `exceeded the free issue limit` (Linear free-plan
cap), **STOP immediately**. Report exactly which slices were created (with IDs) and which were not,
and which relations/releases did or didn't happen. Offer to archive old issues and resume, or to
resume later. Never leave a half-created graph unreported.

A gate or API failure is an **error, not an approval** — never proceed as if a failed step
succeeded.

### 10. Summary

Report: created issue IDs + URLs, the dependency graph, and which slices were released to Todo
(now in the pipeline) vs left in Backlog.

## Notes

- Preview-first is mandatory; this skill mutates a shared system of record.
- A change to a slice's scope after creation must move that issue back per the orchestration rules
  (scope change → back to the relevant step so the gate re-evaluates).
- Companion to `/design-to-dev` (which creates issues from *design wireframes*); this is the
  general-plan analog.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.