adopt
Brownfield audit — do existing artifacts actually work? Numbered migration plan. Unlike /project-stage-detect, checks compliance…
Proposes cuts and a polish list to finish the game from its brief and what is built; the person picks each cut. A game to sell also gets a release date and a feature freeze. Use when asked what to cut, how to finish or ship it, or for a polish list.
Claude Code
$ npx -y skills add Donchitos/Claude-Code-Game-Studios --skill cut --agent claude-code
Codex
$ npx skills add Donchitos/Claude-Code-Game-Studios --skill cut -a codex -y
Cursor
$ npx skills add Donchitos/Claude-Code-Game-Studios --skill cut -a cursor -y
Gemini CLI
$ npx skills add Donchitos/Claude-Code-Game-Studios --skill cut -a gemini-cli -y
GitHub Copilot
$ npx skills add Donchitos/Claude-Code-Game-Studios --skill cut -a github-copilot -y
OpenCode
$ npx skills add Donchitos/Claude-Code-Game-Studios --skill cut -a opencode -y
Windsurf
$ npx skills add Donchitos/Claude-Code-Game-Studios --skill cut -a windsurf -y
name: cut description: "Proposes cuts and a polish list to finish the game from its brief and what is built; the person picks each cut. A game to sell also gets a release date and a feature freeze. Use when asked what to cut, how to finish or ship it, or for a polish list." argument-hint: "[no arguments]" user-invocable: true allowed-tools: Read, Glob, Grep, AskUserQuestion, Bash(bash "*/.claude/skills/cut/../../hooks/yaml-helper.sh" resolve_config *), Bash(bash .claude/scripts/cut-read.sh*), Bash(bash .claude/scripts/cut-apply.sh *), Bash(bash .claude/scripts/config-set.sh project.goal *), Bash(bash .claude/scripts/one-shot-check.sh *), Bash(bash .claude/scripts/one-shot-run.sh *), Bash(find prototypes/*), Bash(timeout 900 npm run smoke), Bash(timeout 900 godot --headless *), Bash(git rev-parse *), Bash(git add design/*), Bash(git commit -m *) model: sonnet
!`bash "${CLAUDE_SKILL_DIR}/../../hooks/yaml-helper.sh" resolve_config --keys automation`
Resolved above — use as-is. No block → defaults in `.claude/docs/config-resolution.md`.
Finishing a game is choosing what not to build. /cut reads what exists, proposes cuts with a reason taken from it, and keeps a polish list; the person picks every cut. For `sell`, `early_access` and `publisher` it asks a target date and proposes a freeze date. It writes the brief, the polish list and any cut story's Status line, and makes one commit.
It runs only when asked: `/cut`, or "what should I cut?", "how do I finish this?". It works on the game `design/game-brief.md` describes. A project with GDDs and no brief is `/scope-check`'s.
Ask with the question tool. Without one, list the options numbered and end your turn to wait. The question is the last thing in the reply. A skipped or dismissed question is not an answer: ask again in plain text. Every ask follows `.claude/docs/automation-modes.md`: in `collaborative` and `guided` the cuts and the dates are asked, as scope changes are major decisions; in `autonomous` /cut writes the polish list only and leaves the proposals in its report: cuts and dates wait for the person, and nothing is committed.
Run `bash .claude/scripts/cut-read.sh` and keep its rows:
| Rows | Use | |---|---| | `brief`, `title` | The briefs written, both copies while they are the same text. `brief none`: say "/cut works from the brief's Features list, and there is no `design/game-brief.md`", name `/scope-check` when `design/gdd/` has files, and stop. `brief_differs`: the game's folder copy differs; only `design/game-brief.md` is written, said in one line | | `goal`, `dates` | `dates asked` or `not_asked` follows the goal. `goal - unset` (or `unknown`): guess it with `/start`'s goal table (`.claude/skills/start/SKILL.md`, Phase 4) from the brief's In your words, `hobby` when nothing fits, and show it *guessed* | | `feature`, `keep`, `avoid`, `out`, `cut` | The Features list by number, with its marks; the lists the proposals check | | `recorded`, `passed` | Dates already on the brief's Dates line, and any date already past | | `game`, `record`, `open` | A one-shot's last check record and its fails not marked deliberate | | `smoke` | A project's smoke command, from the engine table, or `none` with why | | `feel` | The feel log | | `polish`, `polish_row` | The polish list's rows and ticks. `polish other_game`: it is another game's; say so and write no polish rows | | `story`, `stories_other` | Stories traced to a Features item by number (`cut`: one already cut); a count of stories traced elsewhere, which /cut leaves alone (say so) |
Read the brief itself too: its Question, Hooks, First minute, Challenge, Goal & fail state and Build order give the reasons.
changed game gets the light check, never the small check again: the small check is the build's, and `one-shot-check.sh --record` records only that, so never run it here. First see whether a light check is newer than every game file. For each marker on disk, `evidence/changes.tsv` (a change's light check) and `evidence/cut-end.png` (an earlier /cut's), run `find prototypes/<name> -type f -newer prototypes/<name>/evidence/<marker> ! -path '*/evidence/*' ! -path '*/dist/*' ! -name brief.md ! -name feel-log.md ! -name polish-list.md`.
`changes.tsv`'s last line that the polish list lacks become rows.
`prototypes/<name>/evidence/cut-end.png`. A `not_assessed` row: say "not checked: <why>" in one line. Fix nothing: each error, bot stop and `changed` or `gone` keep row becomes a polish row.
These rows end `· from: light check of <date>`. The stale `record` row stays; its `open` rows still count.
or second command (the permission is for that command alone). A failure is a polish row (`from: smoke run of <date>`); a pass adds none. `record none` with no smoke command to run: say in one line that the polish rows come from the feel log and the person.
**Cuts,** in this order, each with a reason from what exists:
1. A `not_yet` item that Out of scope or Avoid already rules out. 2. A `built` item whose check fails (`open`), offered as cut it or polish it. 3. A `not_yet` item that no Question, Hook, First minute, Challenge, Goal & fail state or Keep line names.
For a selling goal, every `not_yet` item left also shows "build it before <freeze date>, or cut it". **Never propose an item a Keep line names.** The person can still name any item.
**Marks brought up to date:** a `not_yet` item whose `story` row is Complete is
Turn Claude Code into a full game dev studio — 49 AI agents, 72 workflow skills, and a complete coordination system mirroring real studio hierarchy.
Brownfield audit — do existing artifacts actually work? Numbered migration plan. Unlike /project-stage-detect, checks compliance…
Create an ADR documenting a technical decision: context, alternatives considered, consequences.
Traceability matrix mapping GDD requirements to ADRs. Finds gaps, cross-ADR conflicts, engine compatibility. PASS/CONCERNS/NOT…
Author the Art Bible — visual identity gating asset production. Run before /map-systems.
Audit assets against naming conventions, file size budgets, format standards. Finds orphaned assets, missing references.
Per-asset visual specs plus AI generation prompts from GDDs and character profiles. After the art bible.
Use your assigned AgentMail inbox to read email tasks, explicitly send or reply, and check delivery. Provided automatically by…
Create a new Architecture Decision Record with sequential numbering and AgentDB registration