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
18 changes: 9 additions & 9 deletions .opencode/skills/adopt/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: adopt
description: "Brownfield onboarding — audits existing project artifacts for template format compliance (not just existence), classifies gaps by impact, and produces a numbered migration plan. Run this when joining an in-progress project or upgrading from an older template version. Distinct from /project-stage-detect (which checks what exists) — this checks whether what exists will actually work with the template's skills."
argument-hint: "[focus: full | gdds | adrs | stories | infra]"
user-invocable: true
allowed-tools: Read, Glob, Grep, Write, AskUserQuestion
allowed-tools: Read, Glob, Grep, Write, question
agent: technical-director
---

Expand Down Expand Up @@ -61,7 +61,7 @@ Use the same heuristic as `/project-stage-detect`:
- game-concept.md exists → Concept
- Nothing → Fresh (not a brownfield project — suggest `/start`)

If the project appears fresh (no artifacts at all), use `AskUserQuestion`:
If the project appears fresh (no artifacts at all), use `question`:
- "This looks like a fresh project — no existing artifacts found. `/adopt` is for
projects with work to migrate. What would you like to do?"
- "Run `/start` — begin guided first-time onboarding"
Expand Down Expand Up @@ -268,7 +268,7 @@ If a prior adoption plan was detected in Phase 1, add a note:
> "A previous plan exists at `docs/adoption-plan-[prior-date].md`. The new plan will
> reflect current project state — it does not diff against the prior run."

Use `AskUserQuestion`:
Use `question`:
- "Ready to write the migration plan?"
- "Yes — write `docs/adoption-plan-[date].md`"
- "Show me the full plan preview first (don't write yet)"
Expand Down Expand Up @@ -369,7 +369,7 @@ After writing the adoption plan (or if the user cancels writing), check whether

**If it exists**: Read it and note the current mode — "Review mode is already set to `[current]`." — skip the prompt.

**If it does not exist**: Use `AskUserQuestion`:
**If it does not exist**: Use `question`:

- **Prompt**: "One more setup step: how much design review would you like as you work through the workflow?"
- **Options**:
Expand All @@ -389,11 +389,11 @@ Create the `production/` directory if it does not exist.
## Phase 7: Offer First Action

After writing the plan, don't stop there. Pick the single highest-priority gap
and offer to handle it immediately using `AskUserQuestion`. Choose the first
and offer to handle it immediately using `question`. Choose the first
branch that applies:

**If there are parenthetical status values in systems-index.md:**
Use `AskUserQuestion`:
Use `question`:
- "The most urgent fix is `systems-index.md` — [N] rows have parenthetical status
values (e.g. `Needs Revision (see notes)`) that break /gate-check,
/create-stories, and /architecture-review right now. I can fix these in-place."
Expand All @@ -402,7 +402,7 @@ Use `AskUserQuestion`:
- "Done — leave me with the plan"

**If ADRs are missing `## Status` (and no parenthetical issue):**
Use `AskUserQuestion`:
Use `question`:
- "The most urgent fix is adding `## Status` to [N] ADR(s): [list filenames].
Without it, /story-readiness silently passes all ADR checks. Start with
[first affected filename]?"
Expand All @@ -411,7 +411,7 @@ Use `AskUserQuestion`:
- "I'll handle ADRs myself"

**If GDDs are missing Acceptance Criteria (and no blocking issues above):**
Use `AskUserQuestion`:
Use `question`:
- "The most urgent gap is missing Acceptance Criteria in [N] GDD(s):
[list filenames]. Without them, /create-stories can't generate stories.
Start with [highest-priority GDD filename]?"
Expand All @@ -420,7 +420,7 @@ Use `AskUserQuestion`:
- "I'll handle GDDs myself"

**If no BLOCKING or HIGH gaps exist:**
Use `AskUserQuestion`:
Use `question`:
- "No blocking gaps — this project is template-compatible. What next?"
- "Walk me through the medium-priority improvements"
- "Run /project-stage-detect for a broader health check"
Expand Down
18 changes: 9 additions & 9 deletions .opencode/skills/architecture-decision/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: architecture-decision
description: "Creates an Architecture Decision Record (ADR) documenting a significant technical decision, its context, alternatives considered, and consequences. Every major technical choice should have an ADR."
argument-hint: "[title] [--review full|lean|solo]"
user-invocable: true
allowed-tools: Read, Glob, Grep, Write, Edit, Task, AskUserQuestion
allowed-tools: Read, Glob, Grep, Write, Edit, Task, question
---

When this skill is invoked:
Expand Down Expand Up @@ -169,7 +169,7 @@ or explicitly accepted as an intentional exception.

Before asking anything, derive the skill's best guesses from the context already
gathered (GDDs read, engine reference loaded, existing ADRs scanned). Then present
a **confirm/adjust** prompt using `AskUserQuestion` — not open-ended questions.
a **confirm/adjust** prompt using `question` — not open-ended questions.

**Derive assumptions first:**
- **Problem**: Infer from the title + GDD context what decision needs to be made
Expand All @@ -178,11 +178,11 @@ a **confirm/adjust** prompt using `AskUserQuestion` — not open-ended questions
- **GDD linkage**: Extract which GDD systems the title directly relates to
- **Status**: Always `Proposed` for new ADRs — never ask the user what the status is

**Scope of assumptions tab**: Assumptions cover only: problem framing, alternative approaches, upstream dependencies, GDD linkage, and status. Schema design questions (e.g., "How should spawn timing work?", "Should data be inline or external?") are NOT assumptions — they are design decisions belonging to a separate step after the assumptions are confirmed. Do not include schema design questions in the assumptions AskUserQuestion widget.
**Scope of assumptions tab**: Assumptions cover only: problem framing, alternative approaches, upstream dependencies, GDD linkage, and status. Schema design questions (e.g., "How should spawn timing work?", "Should data be inline or external?") are NOT assumptions — they are design decisions belonging to a separate step after the assumptions are confirmed. Do not include schema design questions in the assumptions question widget.

**After assumptions are confirmed**, if the ADR involves schema or data design choices, use a separate multi-tab `AskUserQuestion` to ask each design question independently before drafting.
**After assumptions are confirmed**, if the ADR involves schema or data design choices, use a separate multi-tab `question` to ask each design question independently before drafting.

**Present assumptions with `AskUserQuestion`:**
**Present assumptions with `question`:**

```
Here's what I'm assuming before drafting:
Expand All @@ -206,7 +206,7 @@ Status: Proposed
Do not generate the ADR until the user confirms assumptions or provides corrections.

**After engine specialist and TD reviews return** (Step 4.5/4.6), if unresolved
decisions remain, present each one as a separate `AskUserQuestion` with the proposed
decisions remain, present each one as a separate `question` with the proposed
options as choices plus a free-text escape:

```
Expand Down Expand Up @@ -371,7 +371,7 @@ developers reading the GDD from implementing the wrong interface.

If no inconsistencies: skip this block silently.

5. **Write approval** — Use `AskUserQuestion`:
5. **Write approval** — Use `question`:

If GDD sync issues were found:
- "ADR draft is complete. How would you like to proceed?"
Expand Down Expand Up @@ -414,7 +414,7 @@ Registry candidates from this ADR:

**BLOCKING — do not write to `docs/registry/architecture.yaml` without explicit user approval.**

Ask using `AskUserQuestion`:
Ask using `question`:
- "May I update `docs/registry/architecture.yaml` with these [N] new stances?"
- Options: "Yes — update the registry", "Not yet — I want to review the candidates", "Skip registry update"

Expand All @@ -425,7 +425,7 @@ changing, set the old entry to `status: superseded_by: ADR-[NNNN]` and add the n

## 7. Closing Next Steps

After the ADR is written (and registry optionally updated), close with `AskUserQuestion`.
After the ADR is written (and registry optionally updated), close with `question`.

Before generating the widget:
1. Read `docs/registry/architecture.yaml` — check if any priority ADRs are still unwritten (look for ADRs flagged in technical-preferences.md or systems-index.md as prerequisites)
Expand Down
8 changes: 4 additions & 4 deletions .opencode/skills/architecture-review/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: architecture-review
description: "Validates completeness and consistency of the project architecture against all GDDs. Builds a traceability matrix mapping every GDD technical requirement to ADRs, identifies coverage gaps, detects cross-ADR conflicts, verifies engine compatibility consistency across all decisions, and produces a PASS/CONCERNS/FAIL verdict. The architecture equivalent of /design-review."
argument-hint: "[focus: full | coverage | consistency | engine | single-gdd path/to/gdd.md]"
user-invocable: true
allowed-tools: Read, Glob, Grep, Write, Task, AskUserQuestion
allowed-tools: Read, Glob, Grep, Write, Task, question
agent: technical-director
model: opus
---
Expand Down Expand Up @@ -451,7 +451,7 @@ FAIL: Critical gaps (Foundation/Core layer requirements uncovered),

## Phase 8: Write and Update Traceability Index

Use `AskUserQuestion` for the write approval:
Use `question` for the write approval:
- "Review complete. What would you like to write?"
- [A] Write all three files (review report + traceability index + TR registry)
- [B] Write review report only — `docs/architecture/architecture-review-[date].md`
Expand Down Expand Up @@ -605,7 +605,7 @@ After completing the review and writing approved files, present:
3. **Rerun trigger**: "Re-run `/architecture-review` after each new ADR is written
to verify coverage improves"

Then close with `AskUserQuestion`:
Then close with `question`:
- "Architecture review complete. What would you like to do next?"
- [A] Write a missing ADR — open a fresh session and run `/architecture-decision [system]`
- [B] Run `/gate-check pre-production` — if all blocking gaps are resolved
Expand All @@ -619,7 +619,7 @@ If any spawned agent returns BLOCKED, errors, or fails to complete:

1. **Surface immediately**: Report "[AgentName]: BLOCKED — [reason]" before continuing
2. **Assess dependencies**: If the blocked agent's output is required by a later phase, do not proceed past that phase without user input
3. **Offer options** via AskUserQuestion with three choices:
3. **Offer options** via question with three choices:
- Skip this agent and note the gap in the final report
- Retry with narrower scope (fewer GDDs, single-system focus)
- Stop here and resolve the blocker first
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 @@ -3,7 +3,7 @@ name: art-bible
description: "Guided, section-by-section Art Bible authoring. Creates the visual identity specification that gates all asset production. Run after /brainstorm is approved and before /map-systems or any GDD authoring begins."
argument-hint: "[--review full|lean|solo]"
user-invocable: true
allowed-tools: Read, Glob, Grep, Write, Edit, Task, AskUserQuestion
allowed-tools: Read, Glob, Grep, Write, Edit, Task, question
---

## Phase 0: Parse Arguments and Context Check
Expand Down Expand Up @@ -58,7 +58,7 @@ Read `.opencode/docs/technical-preferences.md` if it exists — extract performa

Present the session context and ask two questions before authoring anything:

Use `AskUserQuestion` with two tabs:
Use `question` with two tabs:
- Tab **"Scope"** — "Which sections need to be authored today?"
Options: `Full bible — all 9 sections` / `Visual identity core (sections 1–4 only)` / `Asset standards only (section 8)` / `Resume — fill in missing sections`
- Tab **"References"** — "Do you have reference games, films, or art that define the visual direction?"
Expand Down Expand Up @@ -86,7 +86,7 @@ If a visual anchor exists from game-concept.md: present it and ask:
- Provide: game concept (elevator pitch, core fantasy), full pillar set, platform target, any reference games/art from Phase 1 framing, the visual anchor if it exists
- Ask: "Draft a Visual Identity Statement for this game. Provide: (1) a one-line visual rule that could resolve any visual decision ambiguity, (2) 2–3 supporting visual principles, each with a one-sentence design test ('when X is ambiguous, this principle says choose Y'). Anchor all principles directly in the stated pillars — each principle must serve a specific pillar."

Present the art-director's draft to the user. Use `AskUserQuestion`:
Present the art-director's draft to the user. Use `question`:
- Options: `[A] Lock this in` / `[B] Revise the one-liner` / `[C] Revise a supporting principle` / `[D] Describe my own direction`

Write the approved section to file immediately.
Expand Down Expand Up @@ -158,7 +158,7 @@ Write the approved section to file.
- **`art-director`**: Visual style for UI — diegetic vs. screen-space HUD, typography direction (font personality, weight, size hierarchy), iconography style (flat/outlined/illustrated/photorealistic), animation feel for UI elements
- **`ux-designer`**: UX alignment check — does the visual direction support the interaction patterns this game requires? Flag any conflicts between art direction and readability/accessibility needs.

Collect both. If they conflict (e.g., art-director wants elaborate diegetic UI but ux-designer flags it would reduce combat readability), surface the conflict explicitly with both positions. Do NOT silently resolve — use `AskUserQuestion` to let the user decide.
Collect both. If they conflict (e.g., art-director wants elaborate diegetic UI but ux-designer flags it would reduce combat readability), surface the conflict explicitly with both positions. Do NOT silently resolve — use `question` to let the user decide.

Write the approved section to file.

Expand Down Expand Up @@ -209,7 +209,7 @@ Before presenting next steps, check project state:
- Does `design/gdd/gdd-cross-review-*.md` exist? → review-all-gdds is done
- Do GDDs exist (check above)? → include /consistency-check option

Use `AskUserQuestion` for next steps. Only include options that are genuinely next based on the state check above:
Use `question` for next steps. Only include options that are genuinely next based on the state check above:

**Option pool — include only if not already done:**
- `[_] Run /map-systems — decompose the concept into systems before writing GDDs` (skip if systems-index.md exists)
Expand Down
12 changes: 6 additions & 6 deletions .opencode/skills/asset-spec/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ name: asset-spec
description: "Generate per-asset visual specifications and AI generation prompts from GDDs, level docs, or character profiles. Produces structured spec files and updates the master asset manifest. Run after art bible and GDD/level design are approved, before production begins."
argument-hint: "[system:<name> | level:<name> | character:<name>] [--review full|lean|solo]"
user-invocable: true
allowed-tools: Read, Glob, Grep, Write, Edit, Task, AskUserQuestion
allowed-tools: Read, Glob, Grep, Write, Edit, Task, question
---

If no argument is provided, check whether `design/assets/asset-manifest.md` exists:
- If it exists: read it, find the first context (system/level/character) with any asset at status "Needed" but no spec file written yet, and use `AskUserQuestion`:
- If it exists: read it, find the first context (system/level/character) with any asset at status "Needed" but no spec file written yet, and use `question`:
- Prompt: "The next unspecced context is **[target]**. Generate asset specs for it?"
- Options: `[A] Yes — spec [target]` / `[B] Pick a different target` / `[C] Stop here`
- If no manifest: fail with:
Expand Down Expand Up @@ -45,7 +45,7 @@ Read all source material **before** asking the user anything.
### 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]`:
> "The Visual/Audio section of `design/gdd/[target-name].md` is empty. Either run `/design-system [target-name]` to complete the GDD, or describe the visual needs manually."
Use `AskUserQuestion`: `[A] Describe needs manually` / `[B] Stop — complete the GDD first`
Use `question`: `[A] Describe needs manually` / `[B] Stop — complete the GDD first`
- **level**: Read `design/levels/[target-name].md`. Extract art requirements, asset list, VFX needs, and the art-director's production concept specs from Step 4.
- **character**: Read `design/narrative/characters/[target-name].md` or search `design/narrative/` for the character profile. Extract visual description, role, and any specified distinguishing features.

Expand Down Expand Up @@ -80,7 +80,7 @@ Group assets into categories:
- **Audio** — SFX, music tracks, ambient loops *(note: audio specs are descriptions only — no generation prompts)*
- **3D Assets** — meshes, materials (if applicable per engine)

Present the full identified list to the user. Use `AskUserQuestion`:
Present the full identified list to the user. Use `question`:
- Prompt: "I identified [N] assets across [N] categories for **[target]**. Review before speccing:"
- Show the grouped list in conversation text first
- Options: `[A] Proceed — spec all of these` / `[B] Remove some assets` / `[C] Add assets I didn't catch` / `[D] Adjust categories`
Expand Down Expand Up @@ -140,7 +140,7 @@ Combine the agent outputs into a draft spec per asset. Present all specs in conv
**Status:** Needed
```

After presenting all specs, use `AskUserQuestion`:
After presenting all specs, use `question`:
- Prompt: "Asset specs for **[target]** — [N] assets. Review complete?"
- Options: `[A] Approve all — write to file` / `[B] Revise a specific asset` / `[C] Regenerate with different direction`

Expand Down Expand Up @@ -196,7 +196,7 @@ Ask: "May I update `design/assets/asset-manifest.md`?"

## Phase 6: Close

Use `AskUserQuestion`:
Use `question`:
- Prompt: "Asset specs complete for **[target]**. What's next?"
- Options:
- `[A] Spec another system — /asset-spec system:[next-system]`
Expand Down
Loading
Loading