• 行为门 v3(docs/design/2026-06-05-frontend-behavior-stage-gate.md):
    - 行为验收从 per-FE review approve 子门迁回阶段末尾一次(phase Behavior,
      featureLoop 后、testGate 前),保留 fix 循环(BEHAVIOR_STAGE_MAX=3 轮,
      fix 后全量前端单测复验再重跑门)
    - req-done/<FE> 语义降为「仅静态 review 过」;行为绿改由 reportPrompt 校验
      阶段级证据(module-reports/frontend-phase-behavior-r*-a*.md 最后一份非 RED)
    - build-failed 取消「兄弟未实现」短路(阶段末尾全 FE 已实现);断言作用域 =
      全部 FE spec「行为验收作用域」小节并集,缺小节记 scope-missing 阻断 green
    - 新增样式层 styleIssues(颜色 token 比对 + layout sanity 共 6 kind),
      降维并入 behaviorHard 与交互硬问题同口径 fix;环境仲裁透传 riders 计数
    
    前端测试目录隔离(对齐后端 src/main↔src/test 物理分离):
    - 锁定约定:单测 frontend/tests/** 镜像 src/(smoke 归 tests/__smoke__/ 且
      以 .test.* 结尾),e2e 在 frontend/e2e/,frontend/src/ 禁任何测试产物;
      vitest include 统一限定 tests/**/*.test.*
    - 五层防线:docs-04 模板 §2.1 锁定约定 / planPrompt+tddPrompt 硬护栏 /
      fe-skeleton 单测基线 / code-reviewer 新增第 8 维「测试文件隔离」
    - legacy 守卫:frontend/src/ 内已存在 colocated 测试时绝不收窄 include
      (防旧单测静默停跑),骨架幂等检测同步豁免,留人工迁移
    
    经两轮多代理对抗审计(34 agents),确认项均已修复。
    zichun authored
     
    Browse Code »

  • Replaces the phase-level read-only behavior-gate with a per-FE acceptance dimension: each FE is approved only when the code-reviewer approves AND runtime behavior verification is green. Behavior defects (dead control / sentinel text mismatch) become fixable must-fix that drive verify->fix->re-verify, not halts.
    
    - reviewWithFixLoop (frontend only, via if(fe)): at the approve gate, behaviorSubGate boots this FE's full stack + seeds sentinels, enumerates this FE's routes, two-tier asserts. Hard issues with a locator -> fixPrompt -> functional reverify -> next behaviorRound; soft text (i18n/literal/semantic) -> adjudicate(continue); behaviorRound bounded by BEHAVIOR_FE_MAX=3, env race by BEHAVIOR_ATTEMPT_MAX=2. Backend featureLoop branch unchanged.
    
    - New runFrontendSkeleton stage (before featureLoop(frontend)): App shell + full lazy router + FeStub placeholders + shared nav, so the app is buildable at every mid-phase point; tdd swaps FeStub->real component per FE. Idempotent via fe-skeleton-done tag.
    
    - BEHAVIOR_GATE_SCHEMA gains build-failed envError kind (sibling-FE-unimpl short-circuit, not a bug) + locator-not-resolvable coverage reason; deriveSpec emits a per-FE route-scope section, reviewer validates it.
    
    - Removed phase-level runBehaviorGate + 'Behavior' phase; kept phase-level testGate (regression). REVIEW_HARD_ROUNDS 8->10.
    
    - Safety: test-DB naming guard pushed into scripts-setup-test-db.mjs template (fail-closed unless name contains test/_dev/_local or ALLOW_NONTEST_DROP=1) + 3 tests.
    
    - agentType stays erp-workflow:code-reviewer. v1 design doc marked SUPERSEDED; v2 design at docs/design/2026-06-02-frontend-behavior-in-review-loop.md.
    
    Verified: wrapped syntax check SYNTAX_OK, 87/87 lib tests pass, no orphan refs, no time/random builtins, top-level return intact. Not yet run end-to-end against a real ERP project.
    zichun authored
     
    Browse File »
  • 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 »


  • - mr-create → milestone-tag:本地 merge 进默认分支 + 打 milestone/<id> tag,完成后自动回调 coding-start(无人工闸门)
    - 移除 push/GitLab MR/API:删 deny-no-verify hook、derive-gitlab 脚本、pre-push 模板,env-local 去 GITLAB_*
    - 完成判定改为 docs/08「里程碑」字段 + git tag -l;README/CLAUDE-template/状态语义同步
    - 删除空 skills/internal 目录,skill 计数 27→25
    - docs-04 § 一 新增 1.1 规则(后端通用约定)占位,由 skeleton-gen E 填写
    zichun authored
     
    Browse Code »


  • 后端模块全部 merged 后进入前端整体阶段(1 个 MR)。
    
    - 入口:coding-start 由模块循环器升级为阶段分发器,按 docs/08 §二/§三 + GitLab state 路由到 module-start 或 frontend-start
    - 前端 skill:新增 frontend-start + fe-feature-brainstorm/plan/tdd/verify/review 共 6 个 skill;fe-code-reviewer agent 做 7 维 review
    - 前端门禁:prototype/ 至少 1 个 *.html mockup;FE 清单由 AI 扫 prototype + docs/01 + docs/05 自主推导写入 docs/08 §三,无人工审阅断点
    - 后端 skill 阶段化:feature-brainstorm/plan/tdd 加「阶段范围(后端)」标记;feature-tdd 增 frontend/ 路径硬护栏;module-start/test-gate/module-report/mr-create 接受 phase 参数(backend/frontend)
    - 模板同步:CLAUDE-template / docs-08-initial / docs-06-static / docs-02 / mr-description / coding-start banner 更新含前端段落
    - README:21→27 skill / 1→2 agent / 35→44 模板;A5 章节 docs/06 §五 改为 §三
    zichun authored
     
    Browse Code »


  • 强化"skill 只讲目的与约束,具体方法交给 LLM 自决"原则:
    - 删冗余的 interrupt-check 预防性调用(除 feature-tdd 3.e 真触发位 + test-gate 失败横幅引导)
    - 删 verbatim 子会话 prompt prose(feature-verify / test-gate),保 JSON schema 契约
    - 删模板槽位枚举、bash 字面量、fork 解释括号等噪音
    
    架构调整:
    - coding-start 精简到守门 + 派发 4 步,模块定位职责完全交给 module-start
    - sync 默认分支挪到 module-start 创建新分支前(避免全完成场景的浪费 sync)
    - module-start 步骤 1 自包含 MR 状态契约(指向 CLAUDE.md 权威源避免 drift)
    - mr-create 4 段 bash 抽到 scripts/create-mr.sh,SKILL 减 41%;
      靠 sed/awk pipe + curl --rawfile 保证模块报告全程不进 LLM 上下文
    - 两入口(plan-start / coding-start)共用 flow-overview.txt 模式
    zichun authored
     
    Browse Code »
  • zichun authored
     
    Browse Code »


  • - 去 erp- 前缀:project-init / scope-lock / skeleton-gen / db-design-gen / db-init / downstream-gen / plan-start / coding-start / module-start / feature-* / module-report / mr-create / cross-module-log
    - 红旗 → 中断:red-flag-check → interrupt-check;命中 → 触发(中断语境)
    - local-test-gate → test-gate
    - docs/01-需求清单 的 README.md → index.md(原先改名过 abstract.md,再改 index.md)
    - CLAUDE-template.md 大幅精简:删 § ⚡ Skill 索引 / § 🧪 自测要求 / § 🔄 统一响应格式 / § 通用工作准则 等冗余;§ 🏷️ 覆盖 3 类占位符;§ 📐 从 27 条压到 14 条;§ ✅ 模块完成判定规则 缩到 27 行;§ 🚩 改名中断机制
    - A0 project-init:步骤 A/B 互换(先 cp 模板创建 docs/08,再做依赖检查),修复首次运行 bootstrap bug;docs/04-stack-template.md 归 project-init 持有
    - scope-lock 合并 D+E 为单步;step A 加 CLAUDE.md § 🎯 的 Grep 占位校验
    - skeleton-gen:test.sh 骨架抽成模板(scripts-test-template.sh);step E 占位符处理从 130 行压到 34 行;删除内联 Flyway 说明;勾选分布到每个子步骤
    - req-card 模板三段式:目标引言 + 字段表 + 元数据 list;字段级 vs REQ 级规则用 field_rules/rules 区分
    - 模块级依赖模块 / 涉及表 改 TBD,由 A3/A5 回填(和 REQ 级 依赖表/依赖接口 同模式)
    - cross-module 留痕策略:hook 落存根不弹提示;所有 TBD 统一延到 module-report § ⑦ 一次性批量补齐
    - 其他:feature-verify 删除孤儿 Write 权限;Git commit type 解读表;软规则 S1 技术栈外组件;docs/08 § 二 加 REQ 功能子项由 feature-review approve 时勾选
    
    72 files changed, 1556 insertions(+), 1745 deletions(-)
    zichun authored
     
    Browse Code »