Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions .github/workflows/opencode-review.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,15 @@ jobs:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
contents: write
pull-requests: write
issues: read
if: github.actor != 'dependabot[bot]' # Skip dependabot
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
persist-credentials: true
token: ${{ secrets.GITHUB_TOKEN }}

- name: Configure git identity
run: |
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/opencode.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@ jobs:
- name: Checkout repository
uses: actions/checkout@v6
with:
persist-credentials: false
persist-credentials: true
token: ${{ secrets.GITHUB_TOKEN }}

- name: Run opencode
uses: anomalyco/opencode/github@latest
Expand Down
2 changes: 1 addition & 1 deletion .opencode/docs/CLAUDE-local-template.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,6 @@ This file is gitignored and will not be committed.

## Setup

1. Copy this template to your project root: `cp .claude/docs/CLAUDE-local-template.md CLAUDE.local.md`
1. Copy this template to your project root: `cp .opencode/docs/CLAUDE-local-template.md CLAUDE.local.md`
2. Edit to match your preferences
3. Verify `CLAUDE.local.md` is in `.gitignore` (Claude Code reads it from the project root)
2 changes: 1 addition & 1 deletion .opencode/docs/agent-roster.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Agent Roster

The following agents are available. Each has a dedicated definition file in
`.claude/agents/`. Use the agent best suited to the task at hand. When a task
`.opencode/agents/`. Use the agent best suited to the task at hand. When a task
spans multiple domains, the coordinating agent (usually `producer` or the
domain lead) should delegate to specialists.

Expand Down
6 changes: 3 additions & 3 deletions .opencode/docs/director-gates.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ In any skill, replace an inline director prompt with a reference:

```
Spawn `creative-director` via Task using gate **CD-PILLARS** from
`.claude/docs/director-gates.md`.
`.opencode/docs/director-gates.md`.
```

Pass the context listed under that gate's **Context to pass** field, then handle
Expand Down Expand Up @@ -79,7 +79,7 @@ Apply the resolved mode:
```
# Apply mode check, then:
Spawn `[agent-name]` via Task:
- Gate: [GATE-ID] (see .claude/docs/director-gates.md)
- Gate: [GATE-ID] (see .opencode/docs/director-gates.md)
- Context: [fields listed under that gate]
- Await the verdict before proceeding.
```
Expand Down Expand Up @@ -573,7 +573,7 @@ Agent: `art-director` | Model tier: Sonnet | Domain: Visual identity, art bible,
**Context to pass**:
- Art bible path (`design/art/art-bible.md`)
- Game pillars and core fantasy
- Platform and performance constraints (from `.claude/docs/technical-preferences.md` if configured)
- Platform and performance constraints (from `.opencode/docs/technical-preferences.md` if configured)
- Visual identity anchor chosen during brainstorm (from `design/gdd/game-concept.md`)

**Prompt**:
Expand Down
2 changes: 1 addition & 1 deletion .opencode/docs/directory-structure.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
```text
/
├── CLAUDE.md # Master configuration
├── .claude/ # Agent definitions, skills, hooks, rules, docs
├── .opencode/ # Agent definitions, skills, hooks, rules, docs
├── src/ # Game source code (core, gameplay, ai, networking, ui, tools)
├── assets/ # Game assets (art, audio, vfx, shaders, data)
├── design/ # Game design documents (gdd, narrative, levels, balance)
Expand Down
8 changes: 4 additions & 4 deletions .opencode/docs/hooks-reference.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Active Hooks

Hooks are configured in `.claude/settings.json` and fire automatically:
Hooks are configured in `.opencode/settings.json` and fire automatically:

| Hook | Event | Trigger | Action |
| ---- | ----- | ------- | ------ |
Expand All @@ -15,7 +15,7 @@ Hooks are configured in `.claude/settings.json` and fire automatically:
| `session-stop.sh` | Stop | Session ends | Summarizes accomplishments and updates session log |
| `log-agent.sh` | SubagentStart | Agent spawned | Audit trail start — logs subagent invocation with timestamp |
| `log-agent-stop.sh` | SubagentStop | Agent stops | Audit trail stop — completes subagent record |
| `validate-skill-change.sh` | PostToolUse (Write/Edit) | Skill file changes | Advises running `/skill-test` after any `.claude/skills/` file is written or edited |
| `validate-skill-change.sh` | PostToolUse (Write/Edit) | Skill file changes | Advises running `/skill-test` after any `.opencode/skills/` file is written or edited |

Hook reference documentation: `.claude/docs/hooks-reference/`
Hook input schema documentation: `.claude/docs/hooks-reference/hook-input-schemas.md`
Hook reference documentation: `.opencode/docs/hooks-reference/`
Hook input schema documentation: `.opencode/docs/hooks-reference/hook-input-schemas.md`
7 changes: 4 additions & 3 deletions .opencode/docs/quick-start.md
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ Ask yourself: "What department would handle this in a real studio?"

### 4. Use Templates for New Documents

Templates are in `.claude/docs/templates/`:
Templates are in `.opencode/docs/templates/`:

- `game-design-document.md` -- for new mechanics and systems
- `architecture-decision-record.md` -- for technical decisions
Expand Down Expand Up @@ -182,7 +182,7 @@ Templates are in `.claude/docs/templates/`:
- `difficulty-curve.md` -- for difficulty axes, onboarding ramp, and cross-system interactions
- `test-evidence.md` -- template for recording manual test evidence (screenshots, walkthrough notes)

Also in `.claude/docs/templates/collaborative-protocols/` (used by agents, not typically edited directly):
Also in `.opencode/docs/templates/collaborative-protocols/` (used by agents, not typically edited directly):

- `design-agent-protocol.md` -- question-options-draft-approval cycle for design agents
- `implementation-agent-protocol.md` -- story pickup through /story-done cycle for programming agents
Expand Down Expand Up @@ -211,7 +211,7 @@ If you already know what you need, jump directly to the relevant path:
- Produces a game concept document and recommends an engine
2. **Set up the engine** — Run `/setup-engine` (uses the brainstorm recommendation)
- Configures CLAUDE.md, detects knowledge gaps, populates reference docs
- Creates `.claude/docs/technical-preferences.md` with naming conventions,
- Creates `.opencode/docs/technical-preferences.md` with naming conventions,
performance budgets, and engine-specific defaults
- If the engine version is newer than the LLM's training data, it fetches
current docs from the web so agents suggest correct APIs
Expand Down Expand Up @@ -282,3 +282,4 @@ CLAUDE.md -- Master config (read this first, ~60 lines)
settings-local-template.md -- Personal settings.local.json guide
templates/ -- 37 document templates
```

2 changes: 1 addition & 1 deletion .opencode/docs/rules-reference.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Path-Specific Rules

Rules in `.claude/rules/` are automatically enforced when editing files in matching paths:
Rules in `.opencode/rules/` are automatically enforced when editing files in matching paths:

| Rule File | Path Pattern | Enforces |
| ---- | ---- | ---- |
Expand Down
2 changes: 1 addition & 1 deletion .opencode/docs/settings-local-template.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# settings.local.json Template

Create `.claude/settings.local.json` for personal overrides that should NOT
Create `.opencode/settings.local.json` for personal overrides that should NOT
be committed to version control. Add it to `.gitignore`.

## Example settings.local.json
Expand Down
2 changes: 1 addition & 1 deletion .opencode/docs/setup-requirements.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ sudo pacman -S jq # Arch
- Git for Windows includes **Git Bash**, which provides the `bash` command
used by all hooks in `settings.json`
- Ensure Git Bash is on your PATH (default if installed via the Git installer)
- Hooks use `bash .claude/hooks/[name].sh` — this works on Windows because
- Hooks use `bash .opencode/hooks/[name].sh` — this works on Windows because
Claude Code invokes commands through a shell that can find `bash.exe`

### macOS / Linux
Expand Down
4 changes: 2 additions & 2 deletions .opencode/skills/adopt/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ Then read silently before presenting anything else.
- Count GDD files: `design/gdd/*.md` (excluding game-concept.md and systems-index.md)
- Count ADR files: `docs/architecture/adr-*.md`
- Count story files: `production/epics/**/*.md` (excluding EPIC.md)
- `.claude/docs/technical-preferences.md` — engine configured?
- `.opencode/docs/technical-preferences.md` — engine configured?
- `docs/engine-reference/` — engine reference docs present?
- Glob `docs/adoption-plan-*.md` — note the filename of the most recent prior plan if any exist

Expand Down Expand Up @@ -159,7 +159,7 @@ For each story file found:

### 2f: Technical Preferences Audit

Read `.claude/docs/technical-preferences.md`. Check each field for `[TO BE CONFIGURED]`:
Read `.opencode/docs/technical-preferences.md`. Check each field for `[TO BE CONFIGURED]`:
- Engine, Language, Rendering, Physics → HIGH if unconfigured (ADR skills fail)
- Naming conventions → MEDIUM
- Performance budgets → MEDIUM
Expand Down
6 changes: 3 additions & 3 deletions .opencode/skills/architecture-decision/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Resolve the review mode (once, store for all gate spawns this run):
2. Else read `production/review-mode.txt` → use that value
3. Else → default to `lean`

See `.claude/docs/director-gates.md` for the full check pattern.
See `.opencode/docs/director-gates.md` for the full check pattern.

**If the argument starts with `retrofit` followed by a file path**
(e.g., `/architecture-decision retrofit docs/architecture/adr-0001-event-system.md`):
Expand Down Expand Up @@ -335,7 +335,7 @@ to implement it.]
```

4.5. **Engine Specialist Validation** — Before saving, spawn the **primary engine specialist** via Task to validate the drafted ADR:
- Read `.claude/docs/technical-preferences.md` `Engine Specialists` section to get the primary specialist
- Read `.opencode/docs/technical-preferences.md` `Engine Specialists` section to get the primary specialist
- If no engine is configured (`[TO BE CONFIGURED]`), skip this step
- Spawn `subagent_type: [primary specialist]` with: the ADR's Engine Compatibility section, Decision section, Key Interfaces, and the engine reference docs path. Ask them to:
1. Confirm the proposed approach is idiomatic for the pinned engine version
Expand All @@ -349,7 +349,7 @@ to implement it.]
- `lean` → skip (not a PHASE-GATE). Note: "TD-ADR skipped — Lean mode." Proceed to Step 4.7 (GDD sync check).
- `full` → spawn as normal.

4.6. **Technical Director Strategic Review** — After the engine specialist validation, spawn `technical-director` via Task using gate **TD-ADR** (`.claude/docs/director-gates.md`):
4.6. **Technical Director Strategic Review** — After the engine specialist validation, spawn `technical-director` via Task using gate **TD-ADR** (`.opencode/docs/director-gates.md`):
- Pass: the ADR file path (or draft content), engine version, domain, any existing ADRs in the same domain
- The TD validates architectural coherence (is this decision consistent with the whole system?) — distinct from the engine specialist's API-level check
- If CONCERNS or REJECT: revise the Decision or Alternatives sections accordingly before proceeding
Expand Down
4 changes: 2 additions & 2 deletions .opencode/skills/architecture-review/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ Read all inputs appropriate to the mode:
- All files in `docs/engine-reference/[engine]/modules/`

### Project Standards
- `.claude/docs/technical-preferences.md`
- `.opencode/docs/technical-preferences.md`

Report a count: "Loaded [N] GDDs, [M] ADRs, engine: [name + version]."

Expand Down Expand Up @@ -324,7 +324,7 @@ Post-Cutoff API Conflicts:
### Engine Specialist Consultation

After completing the engine audit above, spawn the **primary engine specialist** via Task for a domain-expert second opinion:
- Read `.claude/docs/technical-preferences.md` `Engine Specialists` section to get the primary specialist
- Read `.opencode/docs/technical-preferences.md` `Engine Specialists` section to get the primary specialist
- If no engine is configured, skip this consultation
- Spawn `subagent_type: [primary specialist]` with: all ADRs that contain engine-specific decisions or `Post-Cutoff APIs Used` fields, the engine reference docs, and the Phase 5 audit findings. Ask them to:
1. Confirm or challenge each audit finding — specialists may know of engine nuances not captured in the reference docs
Expand Down
10 changes: 5 additions & 5 deletions .opencode/skills/art-bible/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ Resolve the review mode (once, store for all gate spawns this run):
2. Else read `production/review-mode.txt` → use that value
3. Else → default to `lean`

See `.claude/docs/director-gates.md` for the full check pattern.
See `.opencode/docs/director-gates.md` for the full check pattern.

Read `design/gdd/game-concept.md`. If it does not exist, fail with:
> "No game concept found. Run `/brainstorm` first — the art bible is authored after the game concept is approved."
Expand Down Expand Up @@ -50,7 +50,7 @@ Section | Status

If the file does not exist, this is a fresh authoring session — proceed normally.

Read `.claude/docs/technical-preferences.md` if it exists — extract performance budgets and engine for asset standard constraints.
Read `.opencode/docs/technical-preferences.md` if it exists — extract performance budgets and engine for asset standard constraints.

---

Expand Down Expand Up @@ -166,7 +166,7 @@ Write the approved section to file.

**Agent delegation**: Spawn in parallel:
- **`art-director`**: File format preferences, naming convention direction, texture resolution tiers, LOD level expectations, export settings philosophy
- **`technical-artist`**: Engine-specific hard constraints — poly count budgets per asset category, texture memory limits, material slot counts, importer constraints, anything from the performance budgets in `.claude/docs/technical-preferences.md`
- **`technical-artist`**: Engine-specific hard constraints — poly count budgets per asset category, texture memory limits, material slot counts, importer constraints, anything from the performance budgets in `.opencode/docs/technical-preferences.md`

If any art preference conflicts with a technical constraint (e.g., art-director wants 4K textures but performance budget requires 2K for mobile), resolve the conflict explicitly — note both the ideal and the constrained standard, and explain the tradeoff. Ambiguity in asset standards is where production costs are born.

Expand All @@ -191,7 +191,7 @@ Write the approved section to file.
- `lean` → skip (not a PHASE-GATE). Note: "AD-ART-BIBLE skipped — Lean mode." Proceed to Phase 6.
- `full` → spawn as normal.

After all sections are complete (or the scoped set from Phase 1 is complete), spawn `creative-director` via Task using gate **AD-ART-BIBLE** (`.claude/docs/director-gates.md`).
After all sections are complete (or the scoped set from Phase 1 is complete), spawn `creative-director` via Task using gate **AD-ART-BIBLE** (`.opencode/docs/director-gates.md`).

Pass: art bible file path, game pillars, visual identity anchor.

Expand All @@ -204,7 +204,7 @@ Handle verdict per standard rules in `director-gates.md`. Record the verdict in

Before presenting next steps, check project state:
- Does `design/gdd/systems-index.md` exist? → map-systems is done, skip that option
- Does `.claude/docs/technical-preferences.md` contain a configured engine (not `[TO BE CONFIGURED]`)? → setup-engine is done, skip that option
- Does `.opencode/docs/technical-preferences.md` contain a configured engine (not `[TO BE CONFIGURED]`)? → setup-engine is done, skip that option
- Does `design/gdd/` contain any `*.md` files? → design-system has been run, skip that option
- Does `design/gdd/gdd-cross-review-*.md` exist? → review-all-gdds is done
- Do GDDs exist (check above)? → include /consistency-check option
Expand Down
2 changes: 1 addition & 1 deletion .opencode/skills/asset-spec/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ Read all source material **before** asking the user anything.
> "No art bible found. Run `/art-bible` first — asset specs are anchored to the art bible's visual rules and asset standards."
Extract: Visual Identity Statement, Color System (semantic colors), Shape Language, Asset Standards (Section 8 — dimensions, formats, polycount budgets, texture resolution tiers).

- **Technical preferences**: Read `.claude/docs/technical-preferences.md` — extract performance budgets and naming conventions.
- **Technical preferences**: Read `.opencode/docs/technical-preferences.md` — extract performance budgets and naming conventions.

### Source doc reads (by target type):
- **system**: Read `design/gdd/[target-name].md`. Extract the **Visual/Audio Requirements** section. If it doesn't exist or reads `[To be designed]`:
Expand Down
14 changes: 7 additions & 7 deletions .opencode/skills/brainstorm/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ When this skill is invoked:
2. Else read `production/review-mode.txt` → use that value
3. Else → default to `lean`

See `.claude/docs/director-gates.md` for the full check pattern.
See `.opencode/docs/director-gates.md` for the full check pattern.

2. **Check for existing concept work**:
- Read `design/gdd/game-concept.md` if it exists (resume, don't restart)
Expand Down Expand Up @@ -203,10 +203,10 @@ Repeat until the user selects [A] Lock these in.

**After pillars and anti-pillars are agreed, spawn BOTH `creative-director` AND `art-director` via Task in parallel before moving to Phase 5. Issue both Task calls simultaneously — do not wait for one before starting the other.**

- **`creative-director`** — gate **CD-PILLARS** (`.claude/docs/director-gates.md`)
- **`creative-director`** — gate **CD-PILLARS** (`.opencode/docs/director-gates.md`)
Pass: full pillar set with design tests, anti-pillars, core fantasy, unique hook.

- **`art-director`** — gate **AD-CONCEPT-VISUAL** (`.claude/docs/director-gates.md`)
- **`art-director`** — gate **AD-CONCEPT-VISUAL** (`.opencode/docs/director-gates.md`)
Pass: game concept elevator pitch, full pillar set with design tests, target platform (if known), any reference games or visual touchstones the user mentioned.

Collect both verdicts, then present them together using a two-tab `AskUserQuestion`:
Expand Down Expand Up @@ -259,7 +259,7 @@ Ground the concept in reality:
- `lean` → skip (not a PHASE-GATE). Note: "TD-FEASIBILITY skipped — Lean mode." Proceed directly to scope tier definition.
- `full` → spawn as normal.

**After identifying biggest technical risks, spawn `technical-director` via Task using gate TD-FEASIBILITY (`.claude/docs/director-gates.md`) before scope tiers are defined.**
**After identifying biggest technical risks, spawn `technical-director` via Task using gate TD-FEASIBILITY (`.opencode/docs/director-gates.md`) before scope tiers are defined.**

Pass: core loop description, platform target, engine choice (or "undecided"), list of identified technical risks.

Expand All @@ -270,7 +270,7 @@ Present the assessment to the user. If HIGH RISK, offer to revisit scope before
- `lean` → skip (not a PHASE-GATE). Note: "PR-SCOPE skipped — Lean mode." Proceed to document generation.
- `full` → spawn as normal.

**After scope tiers are defined, spawn `producer` via Task using gate PR-SCOPE (`.claude/docs/director-gates.md`).**
**After scope tiers are defined, spawn `producer` via Task using gate PR-SCOPE (`.opencode/docs/director-gates.md`).**

Pass: full vision scope, MVP definition, timeline estimate, team size.

Expand All @@ -279,7 +279,7 @@ Present the assessment to the user. If UNREALISTIC, offer to adjust the MVP defi
---

4. **Generate the game concept document** using the template at
`.claude/docs/templates/game-concept.md`. Fill in ALL sections from the
`.opencode/docs/templates/game-concept.md`. Fill in ALL sections from the
brainstorm conversation, including the MDA analysis, player motivation
profile, and flow state design sections.

Expand All @@ -302,7 +302,7 @@ After revising, show the updated section as a diff or clear before/after, then u
Options: `[A] Yes — write it` / `[B] Revise another section`
Repeat until the user selects [A].

If yes, generate the document using the template at `.claude/docs/templates/game-concept.md`, fill in ALL sections from the brainstorm conversation, and write the file, creating directories as needed.
If yes, generate the document using the template at `.opencode/docs/templates/game-concept.md`, fill in ALL sections from the brainstorm conversation, and write the file, creating directories as needed.

**Scope consistency rule**: The "Estimated Scope" field in the Core Identity table must match the full-vision timeline from the Scope Tiers section — not just say "Large (9+ months)". Write it as "Large (X–Y months, solo)" or "Large (X–Y months, team of N)" so the summary table is accurate.

Expand Down
Loading
Loading