-
- check 1 grep set: remove `待补` — it is used nowhere as a placeholder convention (real tokens are 【人工填写:…】 / TBD(...) / {{...}}), so it matched nothing. - replace the inaccurate "(与 scope-lock E.1 同集合)" note: this terminal gate greps a superset (`{{` + `TBD` + `【人工填写`) precisely because the TBD(A3/A5 自动补) placeholders legitimately deferred at A1 must be resolved by now — explaining the value-add over E.1 instead of claiming false parity. -
- 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).
-
- docs-05 header: collapse the `## 全局约定` block (response-format JSON + auth/pagination placeholders) into a single pointer to docs/04 (the conventions SSoT). Also fixes a broken ref — it cited "docs/04 § 1.4 错误码段位", but § 1.4 is 统一响应格式 and no such section exists. - docs-02: remove the free-form `## 三、关键说明 {{notes}}` filler section (the skill defines no source for it). -
- resolveDbConfig only ever received the 5 DB_* keys dbEnvFromConfig emits; the MYSQL_*/DB_PASS/DB_NAME fallbacks had no producer (dead speculative generality, a dotenv-era leftover). Remove them. - collapse the config → DB_* env-shape → connection two-hop: resolveDbConfig now reads config.database.{host,port,user,password,schema} directly, and dbEnvFromConfig is removed. - CLI contract (node apply-ddl.mjs <configPath> <ddlPath>), the only caller via db-init, is unchanged. - rewrite tests to the parsed-config shape; drop the alias-only tests. 53 pass. -
- step B: remove the inline `node -e` mysql SELECT-1 probe (3rd copy of the YAML parser + a connection test C.1 setup-test-db.mjs already performs); keep only the cheap 5-field non-empty/placeholder credential check, fold the Glob existence check into Read, drop now-unused Glob from allowed-tools - checkboxes: A.3 → `DDL ↔ docs/03 5 维一致(validate-ddl.mjs)`; drop the misleading "apply 后 5 维一致" item in D (apply does not change V1, nothing re-validates); rename the creds checkbox to "5 项非空校验通过" - sync the A4 block in docs-08-initial-template.md (5 → 4 sub-items) - update frontmatter description to match the new flow
-
…0 convention machinery - schema 约定(iIncrement 主键 / sId 业务ID / sBrandsId+sSubsidiaryId 多租户 / tCreateDate / 匈牙利前缀)从「A0 询问 + 可配置 {{}} 占位 + docs/04 § 四」改为**固定写死**在 docs-03-header-template + docs-03-table-template - remove A0 step(约定固定,无需向用户确认);B 内联引用固定标准列(去掉指向尚未生成的 docs/03 的前向引用);C.1/C.2 去掉 {{PK_CONVENTION}}/{{TENANT_COLS}}/{{COL_PREFIX_RULE}} 填充/展开 - docs/04 § 四 不再被任何环节创建或引用(schema 约定单一来源 = docs/03) -
- 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
-
- docs-04 template: remove § 2.5 样式与主题 (tokens live in src/styles/tokens.css) + § 3.5 配置与安全 (config in config-vars.yaml, rules in docs/07→now config-vars header) - styles-tokens-template.css: fix 3 stale docs/06 refs missed in the earlier docs/06 removal (greps had excluded *.css) → self-contained '色值单一来源 / SSoT' - coding.mjs: frontend ref §一 前端架构 → §二 前端规范 (§一 is 后端); backend drop frontend §2.1 → §1.2 分层; 样式/色值 → tokens.css; remove docs/07 from value-lookup order
-
- 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
-
尾部 6/6 reset-test-db 与下次运行的 1/x setup-test-db 重复(都 DROP+CREATE),对正确性零贡献;删除后闸门为 detect→setup→build→lint→test→e2e,重编号 1/5..5/5。
-
- 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
-
- skeleton-gen B.1: remove stale line claiming 根包名/命名空间 placeholder is filled at docs/09 top (docs/09 has no such placeholder; base_package lives in config-vars.yaml since A1) - docs-05-header: 端口 占位 -> pointer to config-vars.yaml backend.http_port (was a duplicate 【人工填写】 of the same port)
-
- 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)
-
- A0 SKILL: drop inline cross-platform dep-check script + OS install guides; dep check now auto-installs missing tools (was detect-only); trim 用 Edit/用 Bash 等工具名提示 - CLAUDE template: remove B 阶段流程 / 占位符约定 / 🚩 中断机制 / 🟡 软规则(S1,S2) / 硬规则#6 / 禁止项#2 等小节 - docs-01 index: drop trailing 填写说明
-
…o-chain, docs/06+A6 removal
-
- delete frontend-scope-lock skill + docs/06 templates (static + module-pagelist) - A5 downstream-gen gains prototype/ gate + FE-list derivation -> docs/08 § 三 - plan-start: drop A6 dispatch row, gate 5->4 items; coding-start A0~A6 -> A0~A5 - Design Tokens single source = src/styles/tokens.css (code-reviewer, coding.mjs) - plugin.json skills 9->8; docs-09 tree drops 06-UI; docs-08 drops A6 section
-
- D-step: CC writes _module.md/REQ-*.md directly (no render.mjs/vars.json) - req-card template restructured: input/output example tables copied verbatim, CC fills 6 {{}} scalars; E.1 validates {{}} residual only - E.2: write all config (incl. secret placeholders) into config-vars.yaml - E.4: no human-review stop — auto Skill(skeleton-gen) into A2 -
- config-vars.yaml now holds全部 config incl. secrets (database/admin_init.password/secrets), committed - delete env-local-template; setup-test-db reads config-vars.yaml; gitignore no longer ignores .env.local - docs-07 single-store rule; db-init/db-design-gen read config-vars.yaml database: section - drop test_db_allowed_hosts whitelist + schema-looks-like-test guard (trust config-vars.yaml)
-
- remove render.mjs/render.test.mjs (scope-lock now writes REQ cards directly) - add yaml-config.mjs: minimal 2-level YAML reader (+ tests) - apply-ddl: parse config-vars.yaml database: section instead of .env.local dotenv; drop assertSafeDbTarget host-whitelist + schema guards (config-vars.yaml is trusted) - merge-gitignore/validate-ddl: self-contained pathToFileURL comment (no longer 'see render.mjs')
-
docs-06-static-template.md actually defines § 二 Design Tokens with subsections 2.1 / 2.2 / 2.3. The CSS template comments still cited the pre-renumber § 四 / § 4.1 / § 4.2, so downstream-generated tokens.css files pointed readers to non-existent sections of docs/06.
-
The TAG_REPORT_FRESHNESS_SCHEMA + checkTagReportFreshPromptM + the post-`tag.exists` freshness branch in runMilestone existed to detect "tag points at a commit whose § ⑫ is still {{milestone_tag}}". Per the original comments, this only catches historical leftovers from the pre-fix tag → § ⑫ ordering; the same fix reversed the order so the runtime guard is no longer load-bearing. ~25 lines of branchy defensive code that the source-level fix already prevents. If a pre-fix repo has stale milestone tags, delete them with `git tag -d milestone/<id>` and re-run coding-start. -
…, single-source error-codes
-
…d parenthetical 参考 blocks
-
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)