# Slice Desk > Break a plan or spec into tracer-bullet tickets - narrow vertical slices through every layer, each with its blocking > edges and acceptance criteria - with the dependency graph checked free in the browser. The page numbers the spec's > requirements itself (R1, R2 ... from bullets, numbered items, table rows and must/should/shall sentences, keeping each > one's section and line), sets aside what is out of scope or still open, notes vague spots (TBD, TODO) without blocking, > and spots a wide refactor (rename, retype or migrate ... across the codebase) and a spec written by layer. Any set of > tickets in the local ticket template - pasted, edited or written by the model - is checked as a graph: unknown and self > blocks, duplicate numbers, cycles (named), tickets numbered before their blockers, the frontier, the parallel waves, > the critical path, redundant edges, one-layer (horizontal) tickets, oversized and undersized tickets, missing criteria, > layer lists and file paths in What to build, requirement coverage, late prefactors and the expand - migrate - contract > shape. Metered runs write the breakdown and revise it on feedback. Built on the SkillSafe skill > @mattpocock/to-tickets, from mattpocock/skills (MIT), by Matt Pocock. > An independent tool: not affiliated with or endorsed by Matt Pocock, GitHub, the Mermaid project or any issue tracker. https://slice-desk.skillsafe.ai/ ## What is free - The reading of the spec: every requirement with its id, section and line, sub-points kept; out-of-scope items; open questions; vague spots; the wide-refactor signal with the phrase and line; whether the spec is written by layer. - The graph check of any tickets in the local ticket template ("# 01: Title", What to build, Blocked by, Status, an optional Covers line with requirement ids, checkboxes): every finding with an id (F1, F2, ...), a severity (error - the graph is broken; warning - a smell; note), the tickets, the evidence, what to do and the page's value where it can compute one (the cycle, a dependency order, the edges to keep). - The parallel waves, the frontier, the critical path and an SVG of the graph; one .md per ticket, all tickets as one .md, the issue template (What to build, Acceptance criteria, Blocked by), a CSV (number, title, kind, blocked_by, status, criteria_count, covers, wave), a Mermaid flowchart and everything as JSON. ## The metered lanes Two tasks on gpt-terra, metered per run, routed by `task`. Input string fields: `task` (slice or revise), `feature`, `spec`, `tickets` (revise: the current tickets; otherwise a sentence), `feedback` (revise: the user's feedback; otherwise a sentence) and `facts` (the page's reading). - `slice` replies with `summary`, `tickets` (number, title, kind - slice, prefactor, expand, migrate, contract or integrate - what, blocked_by, covers, criteria), `uncovered` (requirement ids left out, with why), `quiz` (the skill's three questions - granularity, edges, merge-split - about these tickets) and `caveats`. - `revise` replies with `summary`, the full revised `tickets`, `changes` (merged, split, re-edged, renamed, added, removed or rescoped, each with the tickets, what changed and the feedback it answers), `uncovered`, `quiz` and `caveats`. The page holds every reply to its reading: the tickets go through the same graph check (no cycle, no unknown blocker, numbered from 01 in dependency order, no one-layer ticket, criteria present, no file paths, expand - migrate - contract when the spec reads as a wide refactor), every requirement is covered or left out with a reason, the quiz asks each question once about these tickets, and a revision's change log is reconciled with what actually changed. ## Links - API tutorial: https://slice-desk.skillsafe.ai/api.html - Source skill: https://skillsafe.ai/skill/@mattpocock/to-tickets