adopt
Brownfield audit — do existing artifacts actually work? Numbered migration plan. Unlike /project-stage-detect, checks compliance…
Writes a changelog from git commits and sprint data. Use for an internal or player-facing one.
Claude Code
$ npx -y skills add Donchitos/Claude-Code-Game-Studios --skill write-changelog --agent claude-code
Codex
$ npx skills add Donchitos/Claude-Code-Game-Studios --skill write-changelog -a codex -y
Cursor
$ npx skills add Donchitos/Claude-Code-Game-Studios --skill write-changelog -a cursor -y
Gemini CLI
$ npx skills add Donchitos/Claude-Code-Game-Studios --skill write-changelog -a gemini-cli -y
GitHub Copilot
$ npx skills add Donchitos/Claude-Code-Game-Studios --skill write-changelog -a github-copilot -y
OpenCode
$ npx skills add Donchitos/Claude-Code-Game-Studios --skill write-changelog -a opencode -y
Windsurf
$ npx skills add Donchitos/Claude-Code-Game-Studios --skill write-changelog -a windsurf -y
name: write-changelog description: "Writes a changelog from git commits and sprint data. Use for an internal or player-facing one." argument-hint: "[version|sprint-number]" user-invocable: true allowed-tools: Read, Glob, Grep, Write, Edit, Bash(bash "*/.claude/skills/write-changelog/../../hooks/yaml-helper.sh" resolve_config *), Bash(git log *), Bash(git tag --list*), Bash(git rev-parse *) model: sonnet
!`bash "${CLAUDE_SKILL_DIR}/../../hooks/yaml-helper.sh" resolve_config --keys automation`
**Automation mode**: Resolve `modes.automation` (`project.local.yaml` → `project.yaml` → default `collaborative`). Every question and every file write follows `.claude/docs/automation-modes.md` (collaborative asks always · guided major-only · autonomous logs and proceeds; `automation_always_ask` categories always prompt).
Recent commits:
!`git log --oneline -30 2>/dev/null || true`
Recent tags (newest first):
!`git tag --list --sort=-v:refname 2>/dev/null | head -5`
**The commits above may not belong to this game.** This skill's history blocks are auto-resolved *before* the body runs, so the read has already happened — what this check governs is whether that output is usable, not whether it is fetched.
1. Read the injected commit subjects above. **If there are none — the log is empty or git is unavailable — skip this check**: there is nothing to classify, and Phase 1's no-history branch is the right stop. 2. **Classify each one** as **Game** (mechanics, content, balance, art, audio, UI, or a bug in those), **Framework / maintenance** (subjects naming skills, hooks, agents, the test plan, CI, or the framework's own docs), or **Unclear** — and treat Unclear as Framework. 3. Decide from the counts:
of how many you used.
> **Filter per commit; a repo containing maintenance work is not a wrong repo.** > Every project on this framework accumulates commits touching hooks, CI and > skills — the game repo *is* the framework repo, so stopping on them would fire > on virtually every real project. The harm is those commits becoming release copy, > and excluding them prevents that precisely. > > This rule is kept identical to `/patch-notes`' on purpose — the two read the > same history for different audiences, and they must not disagree about whose > history it is. Change both together.
The genuine wrong-history signal is different: Game commits naming a product that `design/` and the code root (`src/`, `Assets/` or `Source/`) never mention. If you see that, stop.
If **no** commit in the range is this game's, say so and stop:
> "The git history in this repo does not appear to belong to [game]: 0 of the [N] > recent commits are Game commits. The recent > commits describe [what they actually describe]. I cannot generate a changelog > from it — point me at the right history, or supply the change list directly."
Verdict: **BLOCKED** — stop here without generating a changelog.
**Why this is a hard stop, not a warning.** Framework-internal commits rendered as player copy read as real changes: a session-hook timeout becomes *"Fixed an issue where progress from your last session could be lost on launch"* in a game with **no save system**. That copy is fluent, plausible, and entirely false. A reader cannot tell the difference; only this check can.
**Do not treat the preamble's existence as evidence.** Injected output means the command ran, never that its subject is your game.
---
Both blocks are resolved before this skill runs. Use them as the starting point for Phase 2 rather than re-running the same commands.
---
Read the argument for the target version or sprint number. If a version is given, use the corresponding git tag. If a sprint number is given, use the sprint date range.
Verify the repository is initialized: run `git rev-parse --is-inside-work-tree` to confirm git is available. If not a git repo, inform the user and abort gracefully.
**If there is no history to read** — not a git repository, or no commits yet:
> "No git history found. A changelog is built from commits — commit the work > first, or supply the change list directly."
Verdict: **BLOCKED** — stop here without generating a changelog.
---
Read the git log since the last tag or release:
git log --oneline [last-tag]..HEAD
If no tags exist, bound the range explicitly — `git log --oneline -n 100`. Do not fall back to the full log: on an established repo that is thousands of lines for a changelog covering one release, and the oldest of them are the least relevant. If 100 commits does not reach far enough back, say so and ask for a start ref rather than widening blindly.
Read sprint reports from `production/sprints/` for the relevant period to understand planned work and context behind changes.
Read completed design documents from `design/gdd/` for any new features implemented during this period. Read them by section: find the headings you need with the Grep tool (pattern `^#`, content mode) and Read those ranges with offset and limit.
---
Categorize every change into one of these categories:
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