-
add-req 的变更检测只哈希 docs/01 REQ 卡片与 docs/08 §三 FE 行文字,从不读 prototype/,而原型才是前端布局/页面/交互的权威。改原型但 FE 行文字不变时 台账无变化 → Router 跳过前端 → 原型改动永不重编。 - req-ledger.mjs:collectProtoUnit 把全部 prototype/**/*.html 聚成单一 __prototype__ 单元(kind=proto),relpath 归一+排序保证跨平台哈希稳定; 无 .html 不产生该单元。接入 computeUnits。 - add-req SKILL:步骤 1 说明 kind=proto + 老项目升级建基线语义;步骤 5 新增 proto 作废分支(删全部 req-done/FE-* + milestone/frontend-phase + 复位 §三里程碑,整体重跑前端阶段);横幅与 frontmatter 同步。 - README:lib 说明加 prototype。 - 测试:新增两用例证明改/删原型内容能被 diff 识别(FE 行文字不变也检测到)。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
-
让前端不依赖后端的工作与后端波次并发,所有真后端测试延后。5 类改动: - tddPrompt/verifyPrompt 加 feStage:jsdom 模式只处理 jsdom 任务、只跑 vitest、 硬禁 e2e 命令;e2e 模式只补延后的 e2e 任务。新增 fe-code-done/<FE> 中间 tag。 - featureLoop 加 feStage 分流:jsdom 跳 review 打 fe-code-done;e2e/all 走 review→req-done。新增 runFrontendPhase1(前端 worktree,不调 phase()、不 merge/milestone、永不 throw)。 - 主循环:frontendOverlap 开时把 frontend-phase 从波次图剔除、起 phase1 与后端 波次并发;屏障后 reconcile(merge default→frontend-phase)+ 标准 runModule(feStage=e2e) 主根全栈跑 phase2。后端未全 done / phase1 halt → phase2 延后、产物保留 resume,绝不新增 halt 点。 - coding-start SKILL.md + README:开关说明,缺省不传(同 features 闸纪律)。 重叠期前端无栈/无固定端口/无 DB,补 8/9/10 不变量与端口/lane 安全全保住。 缺省关时 feStage 恒 all、新分支不激活、新编排整段跳过,现行行为零变化。 语法门通过。设计真值见 docs/superpowers/plans/2026-06-15-frontend-overlap-jsdom.md。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
-
…es 闸刻意不传(留 Task 14 验收开启),逃生口 modules:false 完全回退串行
-
中断/halt 后重跑能复盘上次状态,不只恢复进度。编码阶段保持全自动静默不变。 - coding.mjs:新增 resumeJournalPromptM + recordResume(best-effort,写失败绝不阻断/ 掩盖主流程)。主循环结束(halt 或全完成)时向 docs/superpowers/RESUME.md 追加一条: halt 原因 + 本次自主默认假设(decisions 摘要) + 待跑模块 + 下一步 - coding-start:新增步骤 3.5,重跑时读 RESUME.md 末尾条目向用户复盘上次 halt/完成状态 - 进度真值仍是 git tag(milestone/req-done)+ committed 工件——硬中断后 Router 据此续跑; RESUME.md 补的是跨会话会丢失的「为何停/做过哪些假设」定向信息(GSD continue-here.md 类比) - 硬中断(进程被杀)到不了写入点:那种情况无 halt 原因可记,且 tag+工件已够续跑,无信息损失 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
-
初始 Plan 完结后追加/修改需求时,只跑增量、不必整仓重跑。 - lib/req-ledger.mjs(+单测):对 docs/01 REQ 卡 + docs/08 §三 FE 行算 sha256 内容哈希, 对比 .req-ledger.json,scan/commit 出 new/changed/removed/unchanged - skills/plan/add-req:新增 user-invocable 增量入口。基线→检测→校验真实数据→ A3-delta(写 V_n migration + 同步 docs/03,永不改 V1)→A5-delta(docs/05/02/08)→ 作废 changed 单元的 req-done/milestone tag→提交台账。Router 无需改动,缺 tag 即重跑 - 变更识别靠内容哈希(非仅 tag 缺失):改过的老 REQ 也能认出并作废其 req-done, 否则 Router 会跳过它——OpenSpec delta 思路的零依赖落地 - 首跑无台账则先建基线,避免把存量误当新增重跑整仓 - plugin.json 注册第 9 个 skill + 版本 0.2.0→0.3.0;CLAUDE 模板 Schema 演化补增量 V_n 规约 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
-
- bInvalid(是否作废)/sFormId(界面ID) 由主表专属审核列移入基础标准列,所有表(含从表)均含;主表专属审核列减为 bCheck/tCheckDate/sCheckPerson/sStatus(4列) - 主表渲染 15 列顺序与基线一致(4 审核列插在 bInvalid 与 sFormId 之间);从表 10→12;bInvalid 仍钉死裸 bit - db-design 步骤B 要求1 新增: 金额/数量小数列统一 decimal(18,6)(REQ 明确要求可偏离) - 同步 header/table 模板 + db-design C.1/C.2 + db-init A.1 + README A3 - 审计(多代理)+validate-ddl 实测均通过(decimal(18,6)/bit 4维一致;bit(1)负例正确 fail)
-
- 基础标准列(所有表)新增 sMakePerson(varchar50,制单人,app-assigned) / tUpdateDate(datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP) - 主表(表清单第一张)无条件 +6 审核列: bInvalid/bCheck(bit) tCheckDate(datetime) sCheckPerson(审核人)/sStatus/sFormId(varchar50); 全 NOT NULL 无 SQL 默认 app-assigned - 从表 sParentId 不变(紧随 sId); 匈牙利前缀图例加 b=bit - 同步 header/table 模板 + db-design C.1/C.2 + db-init A.1 DDL 译法 + README A3 - db-init 钉死 bInvalid/bCheck 裸写 bit(禁 bit(1)) 对齐 validate-ddl 不归一化 BIT 长度(audit D5-1)
-
标准列:每表 7 列(新增 iOrder/sMemo;sId/sBrandsId/sSubsidiaryId 改 varchar(50) NOT NULL),从表额外 +sParentId 共 8 列。docs-03 模板 + A3 渲染规则 + A4 DDL 默认值翻译(CURRENT_TIMESTAMP / DEFAULT '1111111111' / iOrder app-assigned)。 去外键:A3 不再推导 FK 约束(改语义引用关系,无 ON DELETE/ON UPDATE,应用层维护一致性);A4 DDL 不生成 ALTER ADD FOREIGN KEY;validate-ddl 移除外键维度 5→4 维(表/列/类型/索引),单测 45 pass/0 fail;coding.mjs 种子/sentinel「FK 有序」→「按语义引用有序」(保留先被引用方后引用方/不可悬空)。 注:db-design-gen 的 docs/06 读取清单/步骤B 两条 bullet 与本区域改动同处一个 diff hunk,随本提交落入(实属 docs/06 feature 的 A3 接入)。
-
- coding-start / plan-start:去掉已失效的「git 就绪由本入口预检/校验」表述(git 闸已移入 coding.mjs 运行时) - skeleton-gen:删除「A2 不再单独出 docs/06/07/09」「原 docs/09 并入」等历史演进注释 - downstream-gen:描述去掉「A6 已并入此处」历史包袱 - CLAUDE-template:补全被截断的 migration 规约残句(旧 V_n.sql 保持原样、永不回改) - README:修正悬空的「🧭 通用工作准则」引用、删「4 条通用准则」、模板计数 26→19、coding-start git 就绪描述
-
- 子模块代码:大写短码(USR/ROLE) → 大驼峰英文名、不限长度(UserInfo/Role) - 功能名:英文大写 [A-Z0-9_]/下划线(PWD_RESET) → 大驼峰 [A-Za-z0-9]/直接拼接(PwdReset) - 模块代码不变(大写短码 USR);结构仍 <模块代码>-<子模块代码>-<功能名> 恒 3 段 - 规范示例统一 USR-USR-LOGIN → USR-UserInfo-Login;docs-01 五列示例行同步 - 同步 7 文件:README/coding.mjs/scope-lock/docs-01/CLAUDE/plan-start/docs-04
-
- index 模板:三列 → 五列(模块代码/模块名称/子模块代码/子模块名称/核心功能点),一行一个子模块 - 卡片文件名:REQ-XXX-NNN.md → <req_id>.md,req_id 恒 3 段(如 USR-USR-LOGIN),功能名由 CC 据核心功能点推断(英文大写、[A-Z0-9_]、多词下划线、子模块内唯一),保持文件名==req_id 不变量 - scope-lock:五列解析 + 按模块代码聚合建目录 + req_id 生成规则;E.1 glob 改 */*.md 跳过 _module.md - db-design-gen/downstream-gen:REQ-*.md glob 同步;docs/05 结构检查锚点 ### REQ- → 三级标题端点段 - CLAUDE/docs-04 模板 commit 后缀、plan-start 示例、coding.mjs 提示词文案(238/1322)、README 同步 - docs-08 checkbox 文本与 scope-lock Edit 锚点逐字节同步;流程/闸门/tag 机制零改动
-
行为门 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),确认项均已修复。
-
- coding.mjs: per-module Seed stage after backend testGate (generate sql/seed/NN__<module>.sql, cold-stack verify with PK-range COUNT reconciliation); behavior gate step2 -> 5-step ordering (demo seed before sentinel, sentinel fixed >=100000 range); fe-skeleton adds Playwright globalSetup e2e baseline (seed + admin storageState); fe tdd e2e assertion constraints - skeleton-gen: new scripts-seed-demo-data-template.mjs (mysql CLI, _demo_seed_history idempotency ledger, offline-validatable, atomic apply+ledger batch) + lib offline tests (93/93 green) - db-init: B.3 re-clean DB after DDL smoke apply (hand schema back to Flyway, avoid missing-history-table error); fix step-D typo - docs-04/CLAUDE templates: data baseline & demo-seed conventions (PK ranges 1-999 init / 1000-9999 seed / >=100000 sentinel)
-
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.
-
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.
-
- db-design-gen: drop unused `AskUserQuestion` grant (the A0 convention- confirm step was removed; conventions are now fixed in step B). Update the stale README A3 row that still described the dropped AskUserQuestion flow. - downstream-gen: drop unused `Skill` grant (terminal A step — it stops for /plan-start, never dispatches). - skeleton-gen: QA banner 产出清单 referenced docs/07, which was removed (the skill itself states A2 no longer emits docs/06/07/09) → drop it. - project-init: align description with body + README — dependency check is auto-install-then-stop, not give-instructions-and-stop.
-
- docs/10 was generated once at A5 and never read back by any skill, workflow, or gate (the `acceptance` hits elsewhere are the per-REQ card field, unrelated). Removing it costs the pipeline nothing. - delete docs-10-header-template.md; drop step E + its checkbox, banner entry, description mention, and reference-list entry from the skill; renumber old step F → E. - drop the docs/10 checkbox from docs-08-initial-template.md. - update README (A5 flow line, A5 table row, template-table row).
-
- delete docs-07-env-template.md (§一 依赖↔docs/04 §零; §二 端口↔config-vars.yaml; §四 命令↔docs/04 §零 build/lint/unit/e2e; §三 规则折入 config-vars.yaml 头) - skeleton-gen: B.1 (gen docs/07) removed → B = just append docs/04 §一+; add 'A2 不再单独出 docs/06/07/09 — 各内容归属' note; frontmatter/checkbox/E.1-scan/参考 drop docs/07 - config-vars.yaml header: + 2 guardrails (配置值不散落; base_package 锁定后复用) - plan-start drop 'docs/07 仅承载规则' note; docs-08 checkbox; README A2 row + template table
-
- delete docs-09-structure-template.md (its § 二/§ 三 dir layout duplicated docs/04 § 1.2/2.1; § 四 docs-tree was a self-referential maintenance trap; § 五 overlapped docs/04) - skeleton-gen B.1 now generates only docs/07; B.2 captures backend/frontend dir layout into docs/04 § 1.2/2.1; frontmatter/checkbox/参考 drop docs/09 - coding.mjs (6 refs): file placement -> docs/04 § 1.2/2.1; frontend root -> frontend/ convention; cross-module path->module -> docs/08 § 二 路径: field - CLAUDE-template rule #2 -> docs/04 § 1.2/2.1; docs-08 checkbox + README A2/template-table drop docs/09
-
- delete lib/merge-gitignore.mjs + merge-gitignore.test.mjs: over-engineered for a once-run greenfield step (base .gitignore usually absent; duplicate ignore patterns are harmless) - D now uses C.1-style Read+Write: Write template if no .gitignore, else append missing lines (consistent with render.mjs removal + scope-lock direct-write) - removes the 'pre-Write empty .gitignore' fragility (Write self-creates); skeleton-gen drops Bash(node *) from allowed-tools
-
- C.1: stop generating sql/migrations/.gitkeep (A4 db-init's Write V1 creates the dir); README A2 drops 'create empty migrations dir' - precedence rule: on color conflict, tokens.css wins over prototype (prototype = structure/layout/interaction; tokens.css = color) — encoded in skeleton-gen note, coding.mjs frontend stage, code-reviewer § Design Tokens
-
- README (A0 row + prerequisites): dep check now auto-installs missing tools (was: print guide + halt, no auto-install), matching project-init SKILL - project-init SKILL: fix typo 失败失败 -> 失败 - CLAUDE template rule #5: inline cross-module 留痕 requirement (soft-rule S2 table was removed)
-
…o-chain, docs/06+A6 removal
-
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). -
Independent Claude + Codex review of the working-tree diff surfaced 23 issues; all applied in-place across three domains. workflows/coding.mjs (9): - spec/plan/verify/review prompts now git-commit their artifacts (closes milestone-dirty-worktree halt risk) - CHECKBOX_STATE_SCHEMA requires `state` + defensive guard in reviewWithFixLoop - writeDocs08FieldPromptM scopes edits to module via line anchor - assertSafeId guards Router output (module/REQ/FE ids) - featureLoop captures reviewWithFixLoop's return value - dateFromArtifactPath rejects impossible dates (9999-99-99 etc.) - terminal HALT review-unresolved message disambiguated - updated comment on top-level `return` (ESM vs node --check) lib/validate-ddl.mjs + tests (10): - extractType preserves unsigned/signed modifiers - KEY/INDEX fallthrough no longer creates spurious 'KEY' columns - FOREIGN KEY REFERENCES accepts schema-qualified `db.table` - index keys normalized to name:kind:cols (UNIQUE-aware) - FK keys include ON DELETE action (defaults to RESTRICT) - CREATE TEMPORARY TABLE parsed - parseForeignKeyBullet/parseIndexBullet reject prose bullets - +10 regression tests (62 total, all pass) - merge-gitignore.mjs docstring synced to implementation skills/ (4): - docs-06 template header: § 一~二 → § 一~三 - downstream-gen §A steps renumbered 1-7 (was 1,3,4,5,6,7,8) - docs-08 initial template adds tokens.css checkbox - coding-start drops "已在后台启动" wording (Workflow is synchronous)
-
- 新增 scope-lock/templates/config-vars-template.yaml:非敏感项目级配置 (包名/端口/前端包名/初始账号)+ secrets_ref 键名引用 .env.local; A1 E.2 锁定。docs/07 改为只记规则/约定不记具体值。 - 连带更新 skeleton-gen / plan-start 闸门 2 / frontend-scope-lock / CLAUDE-template / README / docs-06·07 模板对齐新的配置分层与 docs/06 小节编号。 - lib 修复(含回归测试): - apply-ddl: 抽出 resolveDbConfig,DB_SCHEMA 为契约 schema 键,缺库名 fail-closed (M1) - render: 用 Object.hasOwn 拒绝原型链继承键,guard process.argv[1] - validate-ddl: 解析 ### 索引/### 外键 bullet (C2)、剥 SQL 注释防幽灵表 (L4)、PRIMARY 归一化 - coding.mjs: Router 把全部前端 FE 聚合为单一末尾 frontend-phase 模块; 新增 branchSetupPrompt 功能分支生命周期 (C1);diff 区间改三点 diff;fix 后复跑 verify。
-
- Delete all 7 banners/flow*.txt and remove the banner step from each Plan skill (plan-start renumbered: gate=第1步, 放行/拦截=第2步 A/B). - Drop now-unused Bash(cat *) from scope-lock/db-design-gen/downstream-gen/ plan-start allowed-tools. - downstream-gen: replace `cp` (not Windows-safe) with Read+Write, drop Bash(cp *). - project-init: fix stale dispatcher name session-start -> plan-start. - README: remove the Banners 清单 section.
-
- 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 填写
-
后端模块全部 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 §五 改为 §三
-
输入字段表从 7 列扩展为 8 列,在「显示来源」之后插入「预加载」(取值:页面加载时 / 用户操作时 / 否),描述显示来源数据的加载时机。