Skip to content

release: v0.6.0 β€” Aseprite MCP workflow - #58

Merged
striderZA merged 25 commits into
masterfrom
development
May 7, 2026
Merged

release: v0.6.0 β€” Aseprite MCP workflow#58
striderZA merged 25 commits into
masterfrom
development

Conversation

@striderZA

Copy link
Copy Markdown
Owner

Summary

  • Aseprite MCP integration: Submodule, MCP config, art-generate skill, and integration design doc for programmatic placeholder art via CLI
  • Workflow Selection Gate: Hybrid vs Full OCGS workflow choice at project start (Path D/E)
  • Art Bible machine export: Palette, typography, AI prompts, and reference catalog in structured formats
  • Workflow integrity test suite: Cross-reference, path, gate, and invariant validation (129+ plugin tests)
  • Skill testing framework: Fixed paths, registered missing skills, CI validation
  • Move ISSUE_TEMPLATE to correct .github/ location + add feature request docs

Test Plan

  • Agent validation: 179/179 passed
  • Plugin test suite: 129+ tests across 11 suites all pass
  • Smoke check: All cross-references, paths, gates, invariants validated

striderZA added 22 commits May 5, 2026 18:54
Adds /explore skill for rapid prototyping of 2-4 game ideas before
committing to Hybrid or Full OCGS workflow. Lightweight reports,
no workflow artifacts, timeboxed to 1-2 days per idea.

- New .opencode/skills/explore/SKILL.md
- New .opencode/commands/explore.md
- docs/hybrid-workflow.md: pre-workflow exploration section + comparison table
- docs/WORKFLOW-GUIDE.md: Path E, directory structure, command ref, workflow 2
Adds Path E (multiple ideas) to the /start onboarding flow, routing
users to /explore with no workflow commitment. Also updates /help to
recognize the exploration stage with phase-specific guidance.

- .opencode/skills/start/SKILL.md: Path E, skip review mode, edge cases
- .opencode/skills/help/SKILL.md: exploration stage mapping + early return
Adds /gate-check workflow-selection as a pre-workflow gate that helps
developers choose between Hybrid and Full OCGS workflows after exploring
multiple game ideas with /explore.

- New Workflow Selection gate definition with 5-question decision interview
- Scoring logic (0-15) maps to hybrid / hybrid-with-upgrade / full
- Dual-file write: production/workflow-mode.txt + production/stage.txt
- Skips director panel and chain-of-verification (pre-workflow, human-driven)
- Exploration stage added to production stages (stage 0)
- Auto-detect exploration maps to workflow-selection gate
- Closing widget with workflow-specific next steps
#44)

Creates docs/workflow-transitions.md covering all 4 transition paths
between development modes, with clear promotion rules per artifact type.

- Path A: Explore -> Hybrid (informal concept, archive explore)
- Path B: Explore -> Full OCGS (formal GDDs, /setup-engine)
- Path C: Hybrid Discovery -> Full OCGS (retrofit GDDs, write ADRs)
- Path D: Full OCGS Prototype -> Production (promote findings to GDDs)
- Quick reference table: what promotes vs. what gets rewritten
- Core principle: code never promotes, design insights always promote
- Cross-referenced from hybrid-workflow.md Migration Path section
- Cross-referenced from WORKFLOW-GUIDE.md Path E description
Adds three real-world workflow selection case studies and cross-references
from the hybrid workflow documentation.

- docs/examples/workflow-selection-case-studies.md:
  - Case Study 1: Solo dev, first game, 2-month timeline -> Hybrid
  - Case Study 2: Funded team of 8, 12-month timeline -> Hybrid with upgrade
  - Case Study 3: Solo-to-team scope recovery -> retrospective selection
  - Upgrade trigger reference table with scoring guidance
- docs/hybrid-workflow.md: cross-references to case studies
- docs/hybrid-workflow.md: expanded upgrade triggers with link to detail
… invariants

Adds automated static analysis for the OCGS workflow layer:
- references.mjs: validates all /command refs, subagent_type refs, command→skill routing
- paths.mjs: validates workflow chains (start→gate→path), stage definitions, doc refs
- gates.mjs: validates gate-check artifact paths, transition docs, gate definitions
- invariants.mjs: directory structure, frontmatter completeness, no stale placeholders
- run-all.mjs: orchestrator for all 4 suites
- CI: new validate-workflow job in agent-validation.yml

Catches regressions like deleted commands still referenced by skills, inconsistent
stage names across files, broken agent delegation refs, and orphan skills.
Badges updated (skills 76, commands 51, tests 183), directory tree
includes tests/workflow/, port status reflects new counts.
CONTRIBUTING.md adds 'For Workflow Changes' section with run-all.mjs
instructions and updates CI checklist.
Rewrite motivation from CCGS-port rationale to OCGS value proposition.
Fix stale directory tree counts (51 commands, 76 skills, 140 plugin tests).
Replace 'Early Prototype' with 'Active Development'.
Update header tagline to reflect standalone framework status.
…prompts, and reference catalog

Adds Phase 2.5 (Production Reference Outputs):
- palette.json + palette.css β€” machine-readable color maps for tools and AI
- typography.json β€” font families, size scale, weight hierarchy
- style-anchor-prompt.md β€” modular AI generation seed prompt

Adds Phase 4.5 (Reference Image Collection):
- reference-catalog.md β€” concrete URLs organized by art bible section
- Uses webfetch to find and catalog reference images
…te in CI

- Batch-fix 43 spec files: .claude/ -> .opencode/, session-state/review-mode.txt -> review-mode.txt
- Add 4 missing skills to catalog.yaml: explore, hybrid-prototype, automated-smoke-test, init-template
- Add I10 (catalog coverage) and I11 (no stale paths) to tests/workflow/invariants.mjs
- Both new tests run in CI via validate-workflow job
- Remove redundant import in gates.mjs
- Fix stale counts in CONTRIBUTING.md (75->76, 50->51)
- Fix comment label in paths.mjs (P8->P9)
- Update branding in AGENTS.md and README.md
Design for integrating aseprite-mcp into the OCGS workflow:
- Git submodule at tools/aseprite-mcp/
- Project-level MCP config in opencode.json
- New art-generate skill for programmatic placeholder art creation
- Asset directory structure for generated .aseprite and .png files
Adds the missing command file at .opencode/commands/art-generate.md
and registers the skill in skill-testing-framework/catalog.yaml.
Fixes R5 (orphan skill without command) and I10 (uncataloged skill).
@github-actions

github-actions Bot commented May 7, 2026

Copy link
Copy Markdown
Contributor

Code Review: PR # β€” release: v0.6.0

I reviewed 77 changed files. Here's the assessment:

Quality Issues

Issue File Severity
Hardcoded Windows dev paths opencode.json:17,25 β€” E:\Jaco\... paths for ASEPRITE_PATH and GODOT_PATH High β€” breaks on non-Windows and any machine but the author's
Test runner lacks timeout tests/workflow/run-all.mjs β€” fork() with no kill timer; a hung suite hangs CI indefinitely Medium
--no-sync on Aseprite MCP opencode.json:14 β€” uv run --no-sync will fail if .venv not pre-built; no error recovery Medium
Shell command in skill frontmatter .opencode/skills/help/SKILL.md:8 β€” context: | !echo "=== Live Project State ==="... β€” this worked as a Claude Code hook but OpenCode treats context as static text, not shell execution Low (dead code)

Potential Bugs

Bug Details Risk
ISSUE_TEMPLATE migration is partial Deletes bug-report.md and config.yml from wrong dir (.github/workflows/ISSUE_TEMPLATE/) but only adds feature-request.md to correct dir (.github/ISSUE_TEMPLATE/). Bug report template is lost entirely β€” no replacement created. High
Submodule not initialized in CI .gitmodules references tools/aseprite-mcp but agent-validation.yml never runs git submodule update --init. The validate-workflow job will work (no submodule dep), but actual MCP usage will fail. Medium
Session state dirs gitignored but workflow expects them production/session-state/ is gitignored, but start skill writes production/stage.txt during onboarding. If production/ dir doesn't exist yet, the write fails Low (mkdir handles it)

Suggestions

  1. Make Aseprite/Godot paths configurable in opencode.json β€” use env vars with sensible fallbacks:

    "environment": {
      "ASEPRITE_PATH": "${ASEPRITE_PATH:-aseprite}"
    }
  2. Add timeout to fork-based test runner:

    const timer = setTimeout(() => { child.kill(); reject('timeout'); }, 30000);
  3. Restore bug-report.md at .github/ISSUE_TEMPLATE/bug-report.md β€” the deletion removes it entirely without replacement.

  4. Add git submodule update --init to the CI workflow before running validation.

  5. Either remove --no-sync or add a setup step for the Aseprite MCP venv. Document in the design doc that uv sync must be run after submodule init.

  6. Fix help skill context β€” either remove the dead shell command or use a proper OpenCode mechanism for dynamic context injection.

Summary

The PR is broad in scope and well-structured. The Aseprite MCP integration, workflow selection gate, art bible exports, and test suite are solid contributions. The main blockers are the missing bug-report.md (lost on deletion) and hardcoded Windows paths that make the MCP config non-portable. The test runner timeout and submodule CI init are medium-priority fixes.

New%20session%20-%202026-05-07T18%3A37%3A22.307Z
opencode sessionΒ Β |Β Β github run

@github-actions

github-actions Bot commented May 7, 2026

Copy link
Copy Markdown
Contributor

Code Review: v0.6.0 β€” Aseprite MCP Workflow

I examined all 19 changed files. Here's my assessment:


Verified: Previously Flagged Issues Already Addressed

Several issues raised in the prior CI review were already fixed in the committed code:

Claimed Issue Actual State
Hardcoded Windows paths in opencode.json Uses {env:ASEPRITE_PATH} / {env:GODOT_PATH} β€” portable
--no-sync on MCP command Committed version omits --no-sync β€” auto-syncs
Missing test timeout tests/workflow/run-all.mjs has SUITE_TIMEOUT=30000 with setTimeout/kill
help skill shell command Frontmatter is static text: "Static help skill..."
Submodule not in CI actions/checkout@v4 with submodules: recursive handles it
bug-report.md "lost entirely" Successfully renamed (moved) to .github/ISSUE_TEMPLATE/bug-report.md β€” content intact

Actual Issues Found

# Issue File Severity
1 Inconsistent MCP env var key opencode.json:16 vs :24 β€” "environment" for aseprite, "env" for godot. Different keys may silently drop one set of variables depending on which key OpenCode's MCP runner actually reads. High
2 config.yml deleted without replacement .github/workflows/ISSUE_TEMPLATE/config.yml deleted (+0/-8). No new config.yml created at .github/ISSUE_TEMPLATE/config.yml. This disables contact links and blank-issue controls. Medium
3 New skills registered with empty specs catalog.yaml:789-842 β€” art-generate, explore, hybrid-prototype, automated-smoke-test, init-template all have spec: "". These skills won't have behavioral test coverage in the skill-testing framework. Medium
4 PowerShell Test-Path in skill instructions .opencode/skills/art-generate/SKILL.md:181 β€” Phase 2g verification says Test-Path "assets/sprites/...". This is PowerShell-specific and won't execute on Linux/macOS. Should use test -f or a generic file-exists check. Medium
5 Plan doc hardcoded to Windows framework/docs/superpowers/plans/2026-05-06-aseprite-mcp-integration.md β€” entire file uses E:\Jaco\... paths, PowerShell commands (Get-Content, New-Item, Test-Path), and .exe references. This plan is not actionable outside the author's machine. Low (design doc, not code)
6 Orphaned feature-requests/ directory Two new files feature-requests/qmd-doc-search.md and feature-requests/unity-mcp-integration.md β€” no command, skill, or workflow references them. They exist in the repo but nothing acts on them. Consider adding to a triage workflow or a TRIAGE board reference. Low

Detailed Analysis of #1 (High Priority)

// opencode.json line 16
"aseprite": {
  "environment": {           // πŸ‘ˆ key name: "environment"
    "ASEPRITE_PATH": "{env:ASEPRITE_PATH}"
  }
},
"godot": {
  "env": {                   // πŸ‘ˆ key name: "env"
    "GODOT_PATH": "{env:GODOT_PATH}",
    "DEBUG": "{env:DEBUG}"
  }
}

OpenCode's MCP config spec uses env (not environment) for per-server environment variables. If environment is silently ignored, the Aseprite MCP server won't find the Aseprite binary. Pick one key name and use it consistently.


Suggestions

  1. Standardize on env in opencode.json β€” change the aseprite key from "environment" to "env".

  2. Replace Test-Path in art-generate/SKILL.md with a cross-platform equivalent (e.g., test -f or a Node.js fs check).

  3. Add behavioral specs for the 5 new skills in catalog.yaml at CCGS Skill Testing Framework/skills/utility/ (or their correct category).

  4. Add config.yml at .github/ISSUE_TEMPLATE/config.yml to restore blank-issue/contact-link controls.

  5. Create a TRIAGE label or workflow for feature-requests/ β€” or document that these are aspirational ideas, not committed work.


Summary

The PR is well-structured and the previously flagged issues were already fixed before merge. The current risks are: inconsistent MCP env var key (could break Aseprite MCP), missing config.yml, untested new skills, and a PowerShell-ism in a cross-platform skill file. None are blockers, but #1 should be fixed before release.

New%20session%20-%202026-05-07T18%3A47%3A12.269Z
opencode sessionΒ Β |Β Β github run

@github-actions

github-actions Bot commented May 7, 2026

Copy link
Copy Markdown
Contributor

Review: release v0.6.0 β€” Aseprite MCP Workflow


Quick Assessment

The PR is well-scoped and most issues flagged in prior CI reviews were already addressed in the committed code (portable env vars, test timeout, submodule CI init, bug-report.md moved correctly). I found 5 remaining issues, one of which is a real gap.


Issues

# Issue File Severity
1 config.yml deleted without replacement .github/workflows/ISSUE_TEMPLATE/config.yml removed (-8 lines), but no config.yml was created at .github/ISSUE_TEMPLATE/config.yml. GitHub will lose contact-links / blank-issue configuration. Medium
2 PowerShell Test-Path in skill instructions .opencode/skills/art-generate/SKILL.md:182 β€” Test-Path "assets/sprites/..." is Windows-only. Won't execute on Linux/macOS CI or agent sessions. Medium
3 5 new skills registered with empty specs skill-testing-framework/catalog.yaml:789-842 β€” art-generate, explore, hybrid-prototype, automated-smoke-test, init-template all have spec: "". No behavioral test coverage. Medium
4 Plan doc hardcoded to Windows framework/docs/superpowers/plans/2026-05-06-aseprite-mcp-integration.md β€” all commands use E:\Jaco\..., PowerShell, .exe. Future readers on macOS/Linux can't follow it. Low (design doc)
5 Orphaned feature-requests/ directory feature-requests/qmd-doc-search.md, feature-requests/unity-mcp-integration.md β€” nothing references them. No triage workflow, no command, no tracking. Low

Non-issues (previously flagged, already fixed)

  • environment vs env: Both MCP entries use "environment" β€” they are consistent. The second CI review was incorrect on this.
  • Hardcoded Windows paths: Uses {env:ASEPRITE_PATH} β€” portable.
  • --no-sync: Not present in committed code.
  • Test runner timeout: Has SUITE_TIMEOUT=30000 with proper kill logic.
  • bug-report.md: Successfully moved to .github/ISSUE_TEMPLATE/bug-report.md β€” content intact.
  • Submodule CI: actions/checkout@v4 with submodules: recursive handles it.
  • Help skill context: Static text, not shell execution β€” correct.

Recommendations

  1. Add config.yml at .github/ISSUE_TEMPLATE/config.yml to restore blank-issue and contact-link controls that were lost when the old file was deleted.
  2. Replace Test-Path in art-generate/SKILL.md:182 with a cross-platform equivalent (test -f path or generic file-existence check in the skill instructions).
  3. Add behavioral specs for the 5 new skills in skill-testing-framework/catalog.yaml so they get test coverage.
  4. Either remove orphaned feature-requests/ docs or add them to a tracking workflow so they don't become dead weight.

Verdict: Code quality is solid. The config.yml gap is the only issue that materially affects project behavior.

New%20session%20-%202026-05-07T18%3A53%3A25.447Z
opencode sessionΒ Β |Β Β github run

@striderZA
striderZA merged commit b7da3ac into master May 7, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant