A backlog drifts in the writing, not the workflow. Issue titles are terse where they should be clear and vague where they should be specific. Descriptions trail off, repeat each other, or never got written. Project briefs read in a different voice for every project. The status, the assignees, and the cycles are fine. It is the prose that has gone stale, and cleaning it up means opening issue after issue in the dashboard, which no one on a shipping team has time for.
Scratch pulls a team's or a project's records down as files on your computer. Your AI rewrites the titles and descriptions and standardizes the project briefs across the whole set, not a handful. Every change comes back as a word-level diff next to the original, and nothing reaches Linear until you approve it. The workflow side, the status, assignees, labels, and cycles, is never in play.
Scratch is the companion app to Whalesync. Whalesync keeps your tools in sync; Scratch is where you tidy the writing up first, so what your team reads is clear to begin with.
What Scratch edits in Linear
- Issue titles and descriptions
- Project names and descriptions
How it works
- Scratch pulls a team's or project's records into files. Your Linear issues and projects come down to a folder on your laptop, one file per record, with their titles and descriptions. Nothing touches the live workspace.
- Your AI edits the fields you point it at. Open the folder in the agent you already use. Try a prompt on a few issues, then let it run across the whole backlog. Clean up the titles, tighten the descriptions, standardize the briefs. Issue status, assignees, labels, cycles, parent relationships, and documents stay read-only, and project metadata beyond the name and description (lead, status, milestones) stays put. Validators enforce title length and any never-touch rules you flag.
- You review every diff and publish. In the Scratch desktop app, each changed field shows next to the original, word by word. Approve what ships, and Scratch writes only the records you approved back through the Linear GraphQL API.
What teams use it for
- Clean up an issue backlog, so titles say what the work is and descriptions read clearly.
- Standardize project briefs into one voice and one structure across projects.
- Rewrite terse or stale issue descriptions that never got the detail they needed.
- Normalize title formatting across a team, so the backlog scans at a glance.
- Tighten the writing after a planning sprint, without touching status or assignees.
- Roll back an issue or project rewrite, per record, when a pass went wrong.
Why not let AI write straight to Linear?
A direct API write or an MCP server hands the AI the publish button straight to your live workspace. There is no diff, no review queue, no rollback. One confident pass can rewrite every issue title in a backlog at once, including the ones that were already right, and your team reads the new wording before anyone checked it. By the time you spot a title that lost its meaning, it is already live and the original is often gone.
Scratch gives the AI the same access, but against a local copy of your issues and projects. The write-back step is pulled out and handed to you. The agent can change anything in the copy, only you commit it, and Scratch writes back only the fields you changed, so status, assignees, labels, cycles, and everything else on the workflow side stay exactly as they were. Every record Scratch writes back is reversible on its own.
What's safe, and what's locked
Issue status, assignees, labels, cycles, parent relationships, and documents are read-only. Project metadata beyond the name and description, including lead, status, and milestones, is also read-only. Those fields are stripped before write-back, so the agent cannot push them even if it edits the copy. Validators enforce title length and the never-touch rules you flag, next to the diff. You bring your own AI: Scratch holds no AI credentials and runs no model, so you sign into Claude, Claude Code, Codex, Cursor, Copilot, Cline, or Windsurf the way you already do. By default, nothing leaves your machine until you publish, and every published change is reversible per record.
Questions Linear users ask
Can Scratch change an issue's status, assignee, or labels?
No. Status, assignees, labels, cycles, parent relationships, and documents are read-only. The agent edits a local copy, and those fields are stripped before write-back, so they never reach Linear. Scratch only writes back the issue titles and descriptions and the project names and descriptions you approve. It is the writing side, not the workflow side.
Will a rewrite hit my backlog before I read it?
No. Every title and description change lands in local files first and shows next to the original as a word-level diff in the Scratch desktop app. You approve record by record, and Scratch writes only the issues you approved back through the Linear GraphQL API. Validators also enforce title length and your never-touch rules before you approve.
Can it touch project leads, milestones, or status?
No. Scratch edits only the project name and description. Project metadata beyond those, including lead, status, and milestones, is read-only and is stripped before write-back, so the agent cannot change it.
Can I undo a rewrite after it has written back to Linear?
Yes. Every record Scratch writes back is reversible on its own. Roll back one issue or project, or a whole run, and Scratch restores the original title and description for you to publish.
See it on your own Linear
Pull a team's backlog into files and watch the AI tighten one description across the set, then publish only what you approve.