• New 'Behavior' stage between Gate and Milestone, frontend-phase only, after testGate green and before report/milestone. Verifies every interactive control actually works and every text region shows the right content, independent of the tests the tdd agent wrote.
    
    - BEHAVIOR_GATE_SCHEMA / behaviorGateContract() / behaviorGatePrompt() / runBehaviorGate(); reportPrompt now gates the milestone on behavior-gate evidence (frontend-phase-behavior-gate-r*.md, last attempt must be non-RED).
    
    - Two-tier failure: interaction defects (incl. binding-garbage) flake-retry once then hard-halt via adjudicate(allowContinue:false); text issues split by source (sentinel=objective -> no continue; i18n/literal/semantic=adjudicable). Convergence loop re-runs the env + interaction hard gates after any text-layer retry so a refreshed result can't slip a green past the hard gates.
    
    - Full-stack seeded run: test-DB name guard (deterministic halt, not adjudicated), strict 4-phase ordering (empty DB -> boot backend so Flyway builds schema -> seed -> boot frontend), auth bootstrap via storageState, router-config-driven route discovery, ephemeral .tmp/behavior-gate runner with finally teardown, type-legal per-field-unique sentinels.
    
    - agentType uses the plugin-namespaced 'erp-workflow:code-reviewer' (a bare 'code-reviewer' is ambiguous with feature-dev:code-reviewer); README + agents/code-reviewer.md aligned (frontmatter name: stays bare).
    
    - Design: docs/design/2026-06-02-frontend-behavior-gate.md. README + coding-start banner updated.
    zichun authored
     
    Browse File »



  • zichun authored
     
    Browse Dir »
  • zichun authored
     
    Browse Dir »
  • Visual clarity: the file tree now matches the README's phase model.
    - skills/plan/   — 8 skills (plan-start entry + A0~A6)
    - skills/coding/ — 1 skill (coding-start thin entry)
    
    Slugs unchanged. /erp-workflow:<name> still resolves identically because
    each SKILL.md declares its own `name:` frontmatter (verified for all 9).
    
    Plugin loader treats the default `./skills/` scan as flat, so the nested
    layout is opted into via an explicit path array in plugin.json — the only
    mechanism Claude Code provides for nested skill discovery.
    
    Changes:
    - mv skills/{plan-start,project-init,scope-lock,skeleton-gen,
           db-design-gen,db-init,downstream-gen,frontend-scope-lock}
         → skills/plan/<same>/
    - mv skills/coding-start → skills/coding/coding-start/
    - .claude-plugin/plugin.json: skills[] now lists all 9 explicit paths
    - README.md: directory tree + Skill 清单 heading updated to reflect grouping
    
    No code touches any skill path (only README did, and only in the tree
    diagram). lib tests still pass (62/62).
    zichun authored
     
    Browse Code »