- Add CCGS Skill Testing Framework: self-contained QA layer with 72 skill specs, 49 agent specs, catalog.yaml, quality-rubric.md, templates, README, CLAUDE.md - Add /skill-improve: test-fix-retest loop covering static + category checks - Add 4 missing skills: /art-bible, /asset-spec, /day-one-patch, /security-audit - Add /skill-test category mode (Phase 2D) with quality rubric evaluation - Extend /skill-test audit to cover agent specs alongside skill specs - Update all skill-test and skill-improve path refs to CCGS Skill Testing Framework/ - Remove stale tests/skills/ directory (superseded by CCGS Skill Testing Framework) - Add director gate intensity modes (full/lean/solo) to gate-check and related skills Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
4.1 KiB
Agent Test Spec: engine-programmer
Agent Summary
Domain: Rendering pipeline, physics integration, memory management, resource loading, and core engine framework. Does NOT own: gameplay mechanics (gameplay-programmer), editor/debug tool UI (tools-programmer). Model tier: Sonnet (default). No gate IDs assigned.
Static Assertions (Structural)
description:field is present and domain-specific (references rendering / memory / engine core)allowed-tools:list includes Read, Write, Edit, Bash, Glob, Grep- Model tier is Sonnet (default for specialists)
- Agent definition does not claim authority over gameplay mechanics or tool UI
Test Cases
Case 1: In-domain request — appropriate output
Input: "Implement a custom object pool for projectiles to avoid per-frame allocation." Expected behavior:
- Produces an engine-level object pool implementation with acquire/release interface
- Pool is typed to the projectile object type, uses pre-allocated fixed-size storage
- Provides thread-safety notes (or clearly marks as single-threaded-only with rationale)
- Includes doc comments on the public API per coding standards
- Output is compatible with the project's configured engine and language
Case 2: Out-of-domain request — redirects correctly
Input: "Add a pause menu screen with volume sliders and a 'back to main menu' button." Expected behavior:
- Does NOT produce UI screen code
- Explicitly states that menu screens belong to
ui-programmer - Redirects the request to
ui-programmer - May note it can provide engine-level audio volume API endpoints for the ui-programmer to call
Case 3: Memory leak diagnosis
Input: "Memory usage grows by ~50MB per level load and never releases. We suspect the resource loading system." Expected behavior:
- Produces a systematic diagnosis approach: reference counting audit, resource handle lifecycle check, cache invalidation review
- Identifies likely causes (orphaned resource handles, circular references, cache that never evicts)
- Produces a concrete fix for the identified leak pattern
- Provides a test to verify the fix (memory baseline before load, measure after unload, confirm return to baseline)
Case 4: Cross-domain coordination — shared system optimization
Input: "I need to optimize the physics broadphase, but the gameplay system is tightly coupled to the physics query API." Expected behavior:
- Does NOT unilaterally change the physics query API surface (would break gameplay-programmer's code)
- Coordinates with
lead-programmerto plan the change safely - Proposes a migration path: new optimized API alongside old API, with a deprecation period
- Documents the coordination requirement before proceeding
Case 5: Context pass — checks engine version reference
Input: Engine version reference (Godot 4.6) provided in context. Request: "Set up the default physics engine for the project." Expected behavior:
- Reads the engine version reference and notes Godot 4.6 change: Jolt physics is now the default
- Produces configuration guidance that accounts for the Jolt-as-default change (4.6 migration note)
- Flags any API differences between GodotPhysics and Jolt that could affect existing code
- Does NOT suggest deprecated or pre-4.6 physics setup steps without noting they apply to older versions
Protocol Compliance
- Stays within declared domain (rendering, physics, memory, resource loading, core framework)
- Redirects UI/menu requests to ui-programmer
- Returns structured findings (implementation code, diagnosis steps, migration plans)
- Coordinates with lead-programmer before changing shared API surfaces
- Checks engine version reference before suggesting engine-specific APIs
- Provides test evidence for fixes (memory before/after, performance measurements)
Coverage Notes
- Object pool (Case 1) must include a unit test in
tests/unit/engine/ - Memory leak diagnosis (Case 3) should produce evidence artifacts in
production/qa/evidence/ - Engine version check (Case 5) confirms the agent treats VERSION.md as authoritative, not LLM training data