Skip to content

文档 / Skill / Script / Tool 体系治理方案

创建:2026-08-14 · 状态:✅ 已了结并归档(2026-08-30) —— P0/P1/P2/P3 全部落实(多数在 2026-08-14~29 的后续工作里顺带做掉、只是没回来标记), P4 与 P3.3 的尾巴转 backlog.md §文档治理尾项, P1.5 与 P5 转 post-merge-repo-optimization-plan.md 的 T4-3 / T4-2。

为什么现在才收口:本方案开篇批判的正是「状态行与实况冲突,比没有更坏」, 而它自己有 9 项无完成标记、2 项还挂着 🔴 —— 到 2026-08-30 逐项核实时, 那 2 个 🔴(P0.2 红线指针指反、P3.1 四个 skill 无 frontmatter)早在两周前就修好了。 这正是 README.md「状态行只在创建时写一次」那条病的原样复发。

逐项核实结果(2026-08-30 现场重验,非追忆)

判定依据
P0.1 结构清单对不上以撤销代替修正CLAUDE.md §2 的 store / pages / commands 枚举清单已于 2026-08-14 整体撤销、不再维护(README.md 明令别回填);失效路径改由 pnpm run check:claude-paths 机械守
P0.2 红线指针指反 🔴✅ 已完成docs/coding-standards.md §1 现只留指针 + 记着 R5 那笔烂账
P0.3 §10 停在 2026-05-21✅ 已完成§10 现为「很薄」+ 指针表 + 仍成立的长尾
P0.4 §7 skill 表少两行以换写法代替补行§7 改成「触发条件不在这里列」(description 每会话自动注入,抄一份即第二本账);db-incident / phrase-eval 都在场
P0.5 仓库地图漏子项目✅ 已完成rb-debug-mcp/ 在场;合仓后是五颗卫星(多了 rvh/
P0.6 跨仓路径约定⏭ 前提消失(已标,2026-08-29 T4-7)
P0.7 §5 瘦身✅ 已完成CLAUDE.md 88.5 KB → 66.5 KB;迁移链下沉 src-tauri/CLAUDE.md §3 + docs/database-schema.md §10
P1.1 状态行说反话✅ 已完成三份(admin-merge / telemetry-opt-in / reading-cleanliness-tiers)状态行均已订正并归档
P1.2 归档倒置✅ 已完成两份都在 docs/plans/archive/
P1.3 批量归档✅ 已完成活跃区现 22 份archive/ 162 份
P1.4 archive 补索引✅ 已完成docs/plans/archive/README.md + docs/cross-end/archive/README.md 都在
P1.5 backlog 分片➡️ 转 post-merge T4-3(同日执行)本方案只提了方案没执行
P2 cross-end 收敛✅ 已完成docs/cross-end/README.md 已建(2026-08-29 T4-1 还归并了 RVH 侧 32 份 + 重号总表);rvh.csv 删除已否决并在 README 标注;sm2-golden-vectors.json 已带 _doc/_consumers 注释
P3.1 四个 skill 无 frontmatter 🔴✅ 已完成phrase-eval + admin 三个均有 name/description;本会话 skill 列表里都在
P3.2 死脚本簇✅ 已完成四个文件全不存在
P3.3 tools/ 文档缺口✅ 主体完成,两条尾巴转 backlogtools/README.md 已建(含 phrase_eval 段);vocabulary_builder_v3/README.md 已订正两个不存在的命令;4 个版本后缀脚本已进 bin/_archive/。剩 tools/build_dict.report.txt 归位 + scripts/build_oxford_csv.py 确认后删
P3.4 CI 两道缺口✅ 一半 + ⏭ 一半,转 backlogaudit:locale 已入 ci.ymleslint 改判为「全仓 507 errors 存量,清理后再加」,理由已写进 ci.yml 注释
P4 结构与命名收敛✅ 大半,四条尾巴转 backlogPROGRESS 退役 ✅ · 08/09 归档 ✅ · admin dashboard 副本 ✅ 已删 · database-schema.md/database-tables-overview.md 的日期行已删。剩:另 4 份文档的日期行、admin/AGENTS.md 合并、temp/ 11 份 handoff 归位、Edge Function UA
P5 21MB SQL + 历史重写➡️ 转 post-merge T4-2(必须单独做)⚠️ 实测确认 P5 没写 tag SHA 那一段,T4-2 的第一步是补方案而不是执行

⚠️ 以下正文是 2026-08-14 写作当时的快照,不再维护 —— 里面的份数 / 体量 / 「实际是」 全部是那一天的实测值,读它是为了理解当初为什么这么定,不是为了照着做。

Context

本仓 241 份 md、11 个 skill、21 个 script、4 个 tool 子项目,长期靠"随触达更新"维持。 这次全量审视发现问题不是"文档太多",而是控制文件已经在说假话——CLAUDE.md 每个会话 自动加载,但它的结构清单里有 4 个已删除的 store、2 个已删除的组件、2 个已不存在的 Rust 模块, §10「当前状态」停在 2026-05-21(约 3 个月前),§4 红线的"详细清单"指针指向一份内容更少 且与它自相矛盾的文档。这类失真的代价不是"文档不好看",而是每个新会话都会按错误地图找文件、 把已完成的事当待办、甚至按已废弃的写法改 sync 代码。

同期还有两条节律断了:计划归档(73 份活跃 plan 里约 38 份已完成,最后一次批量归档是 2026-08-02)和状态行维护admin-merge-plan.md 写"待执行"但 admin 早已合仓)。

目标:让控制文件恢复可信、把已完成的沉下去、把死文件清掉,并补上三处真实的能力缺口 (phrase-eval 与 admin 三个 skill 实际无法触发、tools/ 无索引、CI 少两道闸)。

用户已定三项:① PROGRESS.md 退役;② 品牌改名扫尾全部并入本次;③ 删 21MB 归档 SQL 并 重写 git 历史。


⚠️ 执行前置:当前工作树有并行会话

会话开始时 git status 快照是 main 且干净;现在 HEAD 在 feat/admin-ops-consoleadmin/lib/{database.types,sentry-scrub,supabase-server}.tslanding/components/landing/download.tsx 有未提交改动(对应 docs/plans/admin-hardening-plan.md,2026-08-14 仍在动)。

按 CLAUDE.md §10.3,这是路径 B 的典型场景。因此:

  • P0–P4 全程走独立 worktreeAgent(isolation:"worktree")EnterWorktree), 绝不在当前树上 git checkout / reset / stash。本方案 99% 是文档改动,与那个会话 文件域不相交,但路径 B 不看文件域。
  • P5(git 历史重写)必须等那个会话收工、工作树干净、双远端已同步后单独做, 不与任何其他改动同批。

P0 — 控制文件纠错(最高优先,独立提交)

CLAUDE.md 是每会话恒加载的地图。以下都是实测确认的失真,不是风格问题。

P0.1 §2 结构清单与代码对不上

位置文档写的实际
Zustand Stores10 个17 个;其中 useVocabStore / useSettingsStore / useNavigationStore / useTranslationStore 已不存在;漏列 useAnnotationStore useCalibrationStore useLanguageStore useLibraryStore useReadingPrefsStore useRssStore useStatsStore useTriageStore useUpdaterStore
pages/Home, Browser, Vocab, Review, Settings, Stats, History, Notes, Epub(9)只有 2 个文件BrowserPage.tsx / HomePage.tsx
Rust commands 模块24 个,含 anki data~37 个anki.rs/data.rs 已不存在(mod.rs 无声明);漏 annotations report telemetry triage tts lemmatizer pronunciation site_data support user_ctx debug_bridge debug_log error

关键文件索引里指向不存在的路径src-tauri/src/commands/sync.rscommands/vocabulary.rs (两者已改为目录)、src/components/SelectionToolbar.tsxsrc/components/WordPopup.tsx (全仓已无此文件)、src/db/terminal_schema_baseline.txt(应为 src-tauri/src/db/)。

做法:逐项按实际重写。已删除的组件行直接删(不是改路径——它们真的没了); sync.rs/vocabulary.rs 改指目录并注明子模块。

P0.2 §4 红线的指针指反了 🔴

§4 表头写"详细清单见 docs/coding-standards.md §1",但:

  • coding-standards.md §1 只有 R1–R8;CLAUDE.md §4 有 #1–#11 含 5a/5b/5c/5d/5i/6a/6b/6c/6d, 即 11 条红线只存在于 CLAUDE.md。指针指向了更不完整的一份。
  • 更严重:coding-standards.md R5 写 updated_at=gt.{last_sync_at},而 CLAUDE.md 红线 #5 明令必须用 server_updated_at=gt.(2026-05-22 落地,plan 已归档 archive/sync-server-timestamp-plan.md)。两份红线互相矛盾已约 3 个月, 而 CLAUDE.md 让人去读的是过时那份。

做法:定 CLAUDE.md §4 为红线唯一真相源;coding-standards.md §1 改为只留指针 ("红线清单见 CLAUDE.md §4")+ 保留 /arch-check 扫描映射,删掉会漂移的副本表。 顺手修 R5 的过时写法——即使它随后被删,也别让这个错误多活一次提交。

P0.3 §10「当前状态」停在 2026-05-21

  • 「当前推进队列」三条里,Round 2B / Round 2C-1 的 plan 早已在 docs/plans/archive/
  • 「重构长尾」T3「105 处组件直连 invoke()实测已为 0grep invoke( src/components src/pages = 0); T1(reading.rs 拆分)仍成立——该文件现 2017 行
  • 「已完成」清单末条是 2026-05-22,其后约 3 个月的工作全无。

做法:§10 不再当第二本流水账(那是 CHANGELOG 的活)。改写为三块薄内容: ① 一句话"当前版本 / 基线状态";② 指向真相源的链接(backlog.md / product-iteration-roadmap-2026h2.md / product-launch-todo.md / CHANGELOG.md);③ 只留仍成立的长尾(T1 等)。 删掉"已完成"长列表——它天然会腐烂且 CHANGELOG 已有。

P0.4 §7 skill 表少两行

实际 11 个 skill,表里 9 行——缺 db-incident(2026-08-13 新建)与 phrase-eval。 正文"五个 skill 无硬依赖"措辞也需随之调整(指的是流程链五步,易被读成总数)。

P0.5 §2 仓库地图漏了第四个子项目

地图画了 admin/ landing/ supabase/ 三颗卫星,但 rb-debug-mcp/ 也是独立 pnpm 子项目(已跟踪、有 README、被根 .mcp.json 指向、rb-debug MCP 工具全靠它)。 补进地图与目录树。

P0.6 CLAUDE.md 自己违反 §9 跨仓库路径约定前提已消失(2026-08-29,T4-7)

v24 行用裸相对路径写 cross-end/17 那份回执——该文件在 RVH 仓, 按 §9 必须写 ~/reading_vocab_helper/docs/cross-end/17-...。全文扫一遍同类裸相对路径。

🔴 这条不用做了,而且当时就该"反着做":2026-08-28 合仓后 RVH 成了本仓 rvh/ 子目录, 2026-08-29(T4-1)docs/cross-end/ 两侧归并成一份 —— 那份回执现在就在本仓 docs/cross-end/, 裸相对路径反而是对的。§9「跨仓库路径约定」整节已随 T4-7 删除 (见 rvh-merge-plan.md T4-7)。 真正接手这件事的是 pnpm run check:claude-paths(7 份 CLAUDE.md 全覆盖、含 rvh/)与 scripts/check-doc-links.mjs(2026-08-29 起进 CI),两道都是机械的 —— 比"全文扫一遍"可靠。

P0.7 §5 瘦身(可选但强烈建议)

CLAUDE.md88.5 KB / 752 行,§5 数据库独占 32.7 KB(37%),主体是 v4–v27 逐条长文——而这些全部已折叠进 v1 baseline,只剩历史索引价值。

做法:§5 只留 ① 冻结纪律 + 红线 #11;② v28 起(post-freeze,append-only)的迁移表; ③ 一句"v4–v27 已折叠进 v1,历史明细见 docs/database-schema.md 附录"。把 v4–v27 整段移入 database-schema.md(它本来就是列级真相源)。预计 CLAUDE.md 降到 ~60 KB。


P1 — 计划文档归档 + 状态行订正

P1.1 状态行与实况冲突(先修,比归档更急)

这几份会直接误导新会话

文件写的实况
docs/plans/archive/admin-merge-plan.md状态:待执行(subtree 迁移未动手)admin/ 早已合仓,admin-integration-followups.md 写"主计划已全部完成"
docs/plans/archive/telemetry-opt-in-plan.md状态:实施中roadmap 4-1 标「全部完成」(后端 + 客户端实机 + admin 看板三项齐)
docs/plans/archive/reading-cleanliness-tiers-plan.md待排期实施三个 WP 子 plan 全部 ✅,WP3 自称"三档模型收官"

做法:订正状态行 → 随即归档(下一步)。

P1.2 归档倒置

docs/plans/archive/phrase-deep-mode-plan.md(活跃区)第 9 行自陈"已被 phrase-unified-llm-refactor-plan.md 取代"——而取代它的那份反倒已在 archive/。 一并纠正(被取代者入 archive,如取代者仍在推进则移回活跃区;按 backlog §短语 B 的当前裁定判断)。

P1.3 批量归档约 38 份已完成计划

依据 = roadmap ✅ 标记 / plan 自身状态行 / CLAUDE.md §5 迁移链 / CHANGELOG as-built,四者交叉。 代表性批次(非全量枚举):

  • roadmap 1-x 发行还债anon-key-build-injection updater-version-unify sentry-integrationprivacy-terms macos-release
  • roadmap 2-x 打磨包vocab-memory-first review-interval-preview triage-behavioral-copystats-sparse-insight-cards(v27)main-narrative-alignment
  • roadmap 3-x 推荐/收敛article-decision-card discovery-topn-ranking(v31)app-shell-redesign
    • 被它推翻的 app-shell-design-handoff
  • EPUB 四份 handoffepub-usability-sprint1 epub-anchor-precision epub-toc-qualityepub-fullbook-search epub-longform-acceptance
  • 三档净度母+子四份reading-cleanliness-tiers + reader-nudge-wp1 calm-mode-wp2 reader-typography-wp3
  • 其余llm-server-unification multi-context-cloze(v21) quick-triage-excluded-wordspaste-text-source text-editor-react-migration text-source-edit-publish landing-splitadmin-merge admin-integration-followups cross-end-check rvh-vocab-pipeline-{inventory,migration}word-illustration review-card-narrative-polish telemetry-opt-in original-page-zoom

归档前逐份加一行 as-built 尾注("✅ 完成于 YYYY-MM-DD,见 CHANGELOG / migration vNN"), 否则归档只是把文件挪走、不留结论。

保留在活跃区backlog.md product-iteration-roadmap-2026h2.md product-launch-todo.mdllm-product-upgrade-roadmap.md cross-end-sync-evolution-roadmap.md phrase-eval-log.md (自声明不归档)+ rename-plan.md data-hygiene-identity-plan.mdsnapshot-restore-and-user-scoped-library-plan.md project-refactoring-plan.mdtable-rename-{three-end,rvh-handoff} sprint-c1-*(RVH 待镜像)等真在推进的。

需人工确认再定(无反链、无状态行,可能是遗留草稿):i18n-phase1-en-zh-plan.mdsettings-two-column-plan.md vocab-tabs-row-grammar-unification-plan.mdpopup-speak-loading-and-cloze-cache-fix-plan.md phrase-saved-potential-highlight-plan.mddiscovery-panel-channel-refactor-plan.md recommendation-discovery-optimization-plan.md

P1.4 archive 目录补索引

docs/plans/archive/(104 份)与 docs/cross-end/archive/无 READMEdocs/archive/ 有)。 各补一份按主题分组的索引,避免新会话在 104 个文件名里翻。

P1.5 backlog.md 分片(建议,可延后)

237 KB / 2622 行,而它的头部要求"启动新会话时先 Read 本文件"——这个尺寸下该指令 实际上没人(也没有 agent)会照做。建议拆为 backlog.md(索引 + 活跃条目)+ backlog-archive.md(已裁定/已否决的历史条目)。


P2 — cross-end 编号与命名收敛

  • 12 号重复12-etymology-handoff.md12-rb-etymology-reseed-confirmation.md 共用 12; 对照 ⑤ 近义辨析用了 10-(契约)+ 11-(回执)两个号。把回执改 17-?不行——17 在 RVH 仓。 建议保留文件名不动、改为在 docs/cross-end/README.md(新建)里登记映射, 因为这些编号被 CLAUDE.md / RVH 仓多处交叉引用,改名的破坏面大于收益。
  • 新建 docs/cross-end/README.md:登记 01–22 全表(含 07/17 在 RVH 仓的说明、12 重号说明、 5 份无编号文件的归属),一次性解决"编号看起来断了"的困惑。
  • docs/cross-end/rvh.csv(与 rb.csv 字节相同,疑似冗余) —— 执行时否决。 两份 csv 分别是 RB 的 Rust phase0_normalize 与 RVH 的 Dart 版在同一输入 (phase0_inputs.txt)上的输出,字节相同正是「两端归一化无漂移」这个结论本身, 是红线 #9 的证据。删掉一半 = 删掉证据。已改为在 README 里标注三件一组、禁止拆删。
  • cross-end-consistency-report.mdcross-end-check.sh --report 的产物,内容停在 2026-06-15 快照。要么重跑刷新,要么在头部标注"自动生成,以脚本实时输出为准"。
  • sm2-golden-vectors.json 加显著注释:它是 Rust/TS/Dart 三端消费的活跃测试 fixture, 放在 docs/ 下极易被后续清理误删。

P3 — Skill / Script / Tool

P3.1 三个 skill 实际无法触发 🔴

  • .claude/skills/phrase-eval/SKILL.md 缺 YAML frontmatter(文件直接以 # phrase-eval 开头)。 后果实测可见:本会话的可用 skill 列表里它显示为 phrase-eval: phrase-eval——description 退化成名字,语义触发完全失效,只能靠手打 /phrase-eval
  • admin/.claude/skills/ 三个(code-review / deploy / doc-sync-check)同样缺 frontmatter, 且本会话的 skill 列表里一个都没出现——即完全未注册。而 CLAUDE.md §9 明确指导 "改 admin 用 scoped 变体 admin:code-review / admin:doc-sync-check / deploy", 这条指导目前是空头支票。

做法:四份 SKILL.md 补 name + description frontmatter(description 写触发条件, 对齐根 skill 的写法);验证方式见"验证"节。

P3.2 死脚本簇(4 个文件,~126 KB)

build-dictionary.ts ← → cefr-wordlist.ts ← → generate-cefr-wordlist.mjs 三者互相引用、 对外零引用(唯一外部提及是 PROGRESS.md 的历史记录),是 2026-03 的旧 TS 词典链, 2026-07-19 pipeline 迁入 tools/vocabulary_builder_v3/(Dart)后已被整体取代。 加 scripts/local-db-rename-2026-07.sql(全仓零引用,一次性 dev 改名,7 月已完成)。

做法:四份全删。cefr-wordlist.ts(79 KB 生成数据)本就不该在 scripts/

P3.3 tools/ 文档缺口

  • tools/README.md 不存在——四个子目录(agid-2016.01.19 / wordnet / phrase_eval / vocabulary_builder_v3)谁产谁、谁喂谁,只散落在 CLAUDE.md 红线 #10 里。补一份索引。
  • tools/vocabulary_builder_v3/README.md 有错:Quick-start 引用的 bin/download_audio.dartbin/validate_quality.dart 实际不存在(照抄会失败); README 只提 7 个 dart 文件,bin/ 实有 24 个(短语链 / etymology / differentiation / govern_quality / supabase import-export 全无文档)。修错 + 补全命令清单。
  • tools/phrase_eval/ 无 README(被 /phrase-eval 消费,值得补)。
  • tools/build_dict.report.txt(28 KB 生成报告)散在 tools/ 顶层,移入产出它的子目录或忽略。
  • vocabulary_builder_v3/bin/ 下 4 个带版本后缀的一次性脚本 (apply_round3_floor_cleanup_v24 / apply_track2_lemma_anchors_v23 / apply_v25_tier_quality / rescan_always_idiomaticity_v23)移入已存在的 bin/_archive/(该目录已建立此先例)。
  • vocabulary_builder_v3/scripts/build_oxford_csv.py 零引用,确认后删。

P3.4 CI 两道缺口

  • scripts/audit-locale-coverage.mjspnpm run audit:locale 入口、/arch-check 会跑, 但不在 ci.yml——locale 漏译只能靠人记得跑。建议入 CI。
  • ci.yml 不跑 eslint,而 ci-admin.yml 跑了 pnpm lint。两条 CI 严格度不一致。

P4 — 结构与命名收敛

  • PROGRESS.md 退役(用户已定):移入 docs/archive/PROGRESS.md 并在头部标注 "2026-08-07 冻结,后续 as-built 见 CHANGELOG.md";同步改 README.md 文档表、 CLAUDE.md 中的引用。理由:与 CHANGELOG 同为 feature 级完成记录,已落后一周且 章节时序错乱(04-21 的段排在 08-06/08-07 之后)。
  • docs/08-双端产品整合分析.md / 09-双端整合实施计划.md:仅存的编号中文名,兄弟 00–07 全在 docs/archive/。08 自己第 6 行就声明"事实已多处过期"。 移入 docs/archive/;09 的阶段 3(4 条未做)先抽到 backlog.md 再移, 并同步改 CLAUDE.md §9「进度追踪」的指向。
  • 6 份活跃文档头部日期腐烂architecture.md coding-standards.md database-schema.mddatabase-tables-overview.md ui-standards.md ui-component-inventory.md 写的是 2026-03/04,git 实际 08-07~08-14)。建议直接删掉头部"最后更新"行—— 它注定漂移,git 才是真相源。
  • admin/AGENTS.md(5 行) 并入 admin/CLAUDE.md
  • admin/docs/plans/archive/admin-dashboard-plan.mddocs/plans/archive/admin-dashboard-plan.md 近乎同一份(仅品牌名 16 行差异)——删子项目副本,保留根 archive 的。
  • temp/ 下 11 份跨端 handoff / session-prompt:本质是文档而非临时文件,且 temp/ 已 gitignore——有价值的移入 docs/cross-end/,无价值的删。
  • 品牌改名扫尾(用户已定"全部并入"):按 rename-plan.md §1.H 的既定边界执行—— docs/archive/**docs/plans/archive/** 不改(历史时点记录)。范围 = README.mdCLAUDE.mddocs/ 活跃区、docs/product.md、代码注释, 外加 §1.D 遗留的 Edge Function UA ×3tts-synthesize / discover-sites / analyze-articles 里的 'ReadBrowser...')。 不含:dev/prod identifier 拆分(rename-plan 明确留到正式 1.0)、Figma logo 导出、 Vercel 侧用户操作——这三项仍归 rename-plan。改完回 rename-plan.md 勾掉 §1.H。

P5 — 21MB 归档 SQL + git 历史重写(单独执行,最后做)

docs/archive/rvh-schema-export/04-vocabulary-data.sql = 2026-03 的词表导出, 早被 lampio_dict.db 取代(红线 #10 byte-equal)。

先把实测数字摆出来(提问时未有):该文件 raw 21.3 MB,但 pack 后仅 7.6 MB, 而 .git 总计 72 MB——即重写历史约回收 10%.git 的真正大头是预装词库 (单个 blob pack 后 16 MB,多个版本),而那是红线 #10 要求保留的必需资产。 代价一侧:全部 commit SHA 重写 + 双远端(GitHub ttfishnet/lampio 与 Gitee 同名仓)强推 + 任何已有 clone/worktree 作废

按用户决策仍执行,但加三道闸

  1. 前置git-filter-repo 未安装(需 brew install git-filter-repo); 工作树必须干净、并行会话必须已收工main 与双远端已同步。
  2. 备份:先 git bundle create ~/Backups/lampio-prefilter-$(date +%Y%m%d).bundle --all 并验证可 clone,再动手。
  3. 执行git filter-repo --path docs/archive/rvh-schema-export/04-vocabulary-data.sql --invert-paths → 校验 git log 完整性 + .git 体积 → git remote 重加(filter-repo 会移除)→ git push --force github main + git push --force origin main
  4. 之后 docs/archive/README.md 补一行说明该导出已废弃并移除。

若届时觉得 10% 不值这个风险,P5 可降级为"仅从工作树删除 + archive README 标注", 前四个阶段完全不受影响。


执行顺序与提交切分

独立 worktree 中按序进行,每阶段一条提交,便于回滚:

#提交内容
1docs(claude): 控制文件纠错P0.1–P0.6(stores/pages/commands/红线指针/§10/§7/仓库地图/跨仓路径)
2docs(claude): §5 迁移史下沉 database-schemaP0.7
3docs(plans): 状态行订正 + 归档倒置P1.1–P1.2
4docs(plans): 批量归档 38 份已完成计划 + archive 索引P1.3–P1.4
5docs(cross-end): 补 README 编号总表 + 清冗余P2
6fix(skills): 补 frontmatter —— phrase-eval + admin 三个P3.1
7chore(scripts): 清死脚本簇 + tools 文档补齐P3.2–P3.3
8ci: audit:locale + eslint 入闸P3.4
9docs: PROGRESS 退役 + 08/09 归档 + 品牌扫尾P4
10(单独、待并行会话收工)chore: 移除 21MB 废弃导出 + 历史重写P5

验证

  • Skill 注册(P3.1 唯一可靠验证):改完后重开一个会话,确认可用 skill 列表里 phrase-eval 显示的是真实描述而非 phrase-eval: phrase-eval,且 admin:code-review / admin:doc-sync-check / deploy 出现在列表中。当前会话的列表是启动时快照,不会刷新。
  • 控制文件不再说假话:跑一遍路径存在性校验——把 CLAUDE.md 里所有 `src/...` / `src-tauri/...` 反引号路径抽出逐个 test -e (本次审视用的就是这条,当时抓出 6 个真实失效路径,占位符如 PascalCase.tsx 需排除)。
  • store / 模块清单ls src/stores/ls src-tauri/src/commands/ 与文档表逐条对齐。
  • 死脚本删除安全:删除前再跑一次全仓引用检查 (grep -rl --exclude-dir={node_modules,.git,dist}),确认除自身与 PROGRESS.md 历史提及外零引用。
  • 构建不受影响/build-checkcargo check + pnpm build)+ /arch-check。 P3.4 改 CI 后需推分支触发一次 Actions 确认新增两道闸能过。
  • 归档正确性:归档后 grep -r "plans/<被移动文件名>" docs CLAUDE.md .claude/skills 确认无悬挂链接(article-decision-card-plan.mdrecommendation-algorithm.md 当真相源引用,归档时必须改链接)。
  • P5git bundle 备份可独立 clone 出完整历史;重写后 git log --oneline | wc -l 与重写前一致、git fsck 无错。