Skip to content
Agent Orchestration
Skill

/create-control-manifest

Builds a short list of must-do and never-do coding rules per system from accepted ADRs. Use when the user wants programmer rules or a cheat sheet from the ADRs, or needs it regenerated after ADR changes.

From plugin
claude-code-game-studios
31k74 skills49 agents

Claude Code

$ npx -y skills add Donchitos/Claude-Code-Game-Studios --skill create-control-manifest --agent claude-code

SKILL.md

create-control-manifest.SKILL.md
name: create-control-manifest
description: "Builds a short list of must-do and never-do coding rules per system from accepted ADRs. Use when the user wants programmer rules or a cheat sheet from the ADRs, or needs it regenerated after ADR changes."
argument-hint: "[update — regenerate from current ADRs] [--review full|lean|solo]"
user-invocable: true
allowed-tools: Read, Glob, Grep, Write, Agent, AskUserQuestion, Bash(bash "*/.claude/skills/create-control-manifest/../../hooks/yaml-helper.sh" resolve_config *), Bash(bash .claude/scripts/adr-status.sh*), Bash(bash .claude/scripts/md-section.sh *)
model: sonnet

!`bash "${CLAUDE_SKILL_DIR}/../../hooks/yaml-helper.sh" resolve_config --keys review_mode,review_gate,automation`

Resolved above — use as-is; `--review` overrides `review_mode` for this run. No block → defaults in `.claude/docs/config-resolution.md`.

Ask with the question tool. Without one, list the options numbered and end your turn to wait. A skipped or dismissed question is not an answer: ask again in plain text.

Create Control Manifest

The control manifest is a flat rules sheet for programmers: what to do and what never to do, by architectural layer, taken from the Accepted ADRs, the project's technical preferences and the engine reference docs. The ADRs say *why*; the manifest says *what*.

**Writes:** `docs/architecture/control-manifest.md`, after the user's yes. **When:** after `/architecture-review` passes and the ADRs are Accepted. Run it again whenever an ADR is accepted or revised.

Asks follow `.claude/docs/automation-modes.md` (collaborative always asks, guided asks on major choices, autonomous logs and goes on; `automation_always_ask` categories always ask).

Phase 1: Load the inputs

ADRs

`bash .claude/scripts/adr-status.sh` reads every `docs/architecture/adr-*.md` in one pass: the counts first (`adrs`, then `accepted`, `proposed`, `deprecated`, `superseded`, `unfilled`, `other`, `no_status`), then one row per ADR with its status and layer. Establish the denominator first: decide from the counts, before reading any ADR:

| Counts | Meaning | Action | |---|---|---| | `adrs 0` | No ADRs. | "No ADRs found — run `/architecture-decision` before building a control manifest." Stop. | | `accepted` ≥ 1 | Normal. | The Accepted rows are the set **A**. Name every other ADR, with its status, in the Phase 4 preview: the user approves a manifest knowing what it leaves out. | | `accepted 0`, some with a status | No Accepted ADRs. | "[N] ADRs found, none Accepted. A manifest built from Proposed ADRs would encode decisions that may still change." Ask whether to go on with the Proposed ones or stop. **Never write an empty manifest silently.** | | every ADR `no_status` | **Malformed ADRs, not an empty Accepted set.** | "[N] ADRs found, none has a `## Status` section, so acceptance cannot be told. Run `/architecture-decision retrofit [file]` on each." Stop. Never treat them as Accepted. |

Each stop above ends with `Verdict: BLOCKED — [the reason]`. Note the number and title of every ADR a rule comes from.

Project config

  • `naming.*` and `performance.*` from `project.yaml`; for any key absent or empty,

`.claude/docs/technical-preferences.md`.

  • Approved libraries and forbidden patterns from

`.claude/docs/technical-preferences.md` (not migrated to `project.yaml`).

Engine reference

  • `docs/engine-reference/[engine]/VERSION.md` for the engine and version.
  • `docs/engine-reference/[engine]/deprecated-apis.md`: these become forbidden APIs.
  • `docs/engine-reference/[engine]/current-best-practices.md`, when it exists.

What exists already

`docs/architecture/control-manifest.md` present: this run regenerates it; read it before the Phase 5 write, which replaces it. `production/epics/*/EPIC.md` present: epics exist. Phase 6 picks its next step from both.

Report: "Loaded [A] Accepted ADRs of [N], engine: [name + version]."

Phase 2: Extract the rules from each ADR

For each ADR in **A**, read only four sections, never the whole file:

bash .claude/scripts/md-section.sh extract docs/architecture/[adr-file].md "Decision"

and the same for `Alternatives Considered`, `Performance Implications` and `Engine Compatibility`. Context, Consequences, Migration Plan and Validation Criteria say why a decision was made; the manifest records what to do. A section an ADR lacks: note it for that ADR and go on. A section missing from **every** ADR in A: report "No Accepted ADR has a `[section]` section — the manifest's [category] rules will be empty. Verify this is intended." Read beyond the four only when a section points outside itself ("subject to the constraints in Context"), and then that one section.

From each ADR:

  • **Required patterns** (Decision): every "must", "should", "required to",

"always", and every pattern or approach it mandates, including any `### Implementation Guidelines` inside it. Never look for that sub-heading alone: many ADRs state their mandates directly under Decision, and a scan for the sub-heading alone yields an empty section.

  • **Forbidden approaches** (Alternatives Considered): every rejected alternative,

with why it was rejected as the rule ("never use X because Y"), and any named anti-pattern.

  • **Performance guardrails** (Performance Implications): budgets ("max N ms per

frame for this system") and memory limits.

  • **Engine API constraints** (Engine Compatibility): post-cutoff APIs that need

verifying, behaviour that differs from what a model would assume, fields or methods that changed in the pinned version.

**Layer.** Each rule goes under the layer of the system it governs, the ADR's `layer` column where it has one:

  • **Foundation:** scene management, event architecture, save/load, engine start-up
  • **Core:** core gameplay loop, main player systems, physics and collision
  • **Feature:** secondary systems and mechanics, AI
  • **Presentation:** rendering, audio, UI, VFX, shaders

An ADR that spans layers put

Read more
@donchitos
Ships withclaude-code-game-studios

Turn Claude Code into a full game dev studio — 49 AI agents, 72 workflow skills, and a complete coordination system mirroring real studio hierarchy.

31k74 skills49 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
31.3k
Star history of Donchitos/Claude-Code-Game-Studios on GitHub, a chart by star-history.com

Other skills on claude-code-game-studios.

More skills from other plugins.

1password

1password

Set up and use 1Password CLI for sign-in, desktop integration, and reading or injecting secrets.

clawdis10d393k
@steipete@steipeteInstall Skill
computer-use

computer-use

Drives the GUI of a visible local app window through `orca computer`: accessibility tree, clicks, typing, menus, dialogs, and…

orca10d111k
@stablyai@stablyaiInstall Skill
agentmail

agentmail

Use your assigned AgentMail inbox to read email tasks, explicitly send or reply, and check delivery. Provided automatically by…

paperclip10d109k
@paperclipai@paperclipaiInstall Skill
adr-create

adr-create

Create a new Architecture Decision Record with sequential numbering and AgentDB registration

@ruvnet@ruvnetInstall Skill

Questions about create-control-manifest.

Which coding agents can use create-control-manifest?
create-control-manifest installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.