verification-battery-and-doc-auditslisted
Install: claude install-skill F-e-u-e-r/opus-pack
# starledger:本地驗證管線與文件機械稽核
(驗證日 2026-07-30,HEAD `55ae7b2`。CI 的 `verify` job 跑同一套+smokes+schema drift+
deploy verify;本地先綠=CI 大機率綠。)
## 程式碼/全域管線(依序)
```bash
pnpm install --frozen-lockfile # 分支剛切、或 lockfile 動過時必���
pnpm typecheck && pnpm lint
pnpm exec prettier --check <你動過的檔案們> # 見下方「範圍化」陷阱
pnpm test:coverage # vitest 全套含 coverage 門檻(2026-07-30 為 750 tests)
pnpm build
```
- **prettier 範圍化陷阱**:`pnpm format:check` 是 `prettier --check .`——**未追蹤**的本地目錄
也會被掃(實例:untracked `skills-staging/` 讓 repo-wide check 紅,但 CI 只 checkout 追蹤
檔所以綠)。判斷自己的變更時用範圍化的 `pnpm exec prettier --check <files>`;repo-wide 紅
先看紅的是不是 untracked。
- prettier 對 `.md` 生效(printWidth 100、proseWrap 預設 preserve=不重排你手動換行的散文)。
fence 的邊界要分清:**受支援語言的 fence(json/ts/js…)會被重排**(實測:json fence 的
`{"a":1}` 會被展開);`text`/未知語言的 fence 才是盲區——canonical prompt 正是 ` ```text `
fence,所以整塊 prettier 管不到,必須機械稽核(下節)。
- **vitest 路徑陷阱**:include pattern 是 repo-root 相對(`packages/**/tests/**`);從套件目
錄跑 `vitest run tests/x.test.ts` 會「No test files found」。永遠從 repo root 用完整路徑:
`pnpm exec vitest run packages/classifier/tests/<file>`。
## 文件機械稽核(改 runbook/prompt 必跑)
```bash
# 1. 新增行長(既有檔已有 >100 的合法長行——只稽核你「新增」的行)
git diff -U0 origin/main -- docs/ | grep '^+' | grep -v '^+++' | sed 's/^+//' | awk 'length($0)>100 {print "LONG: "$0}'
# 2. fence 奇偶(fenced block 被切壞是 prettier 抓不到的)
grep -c '^```' docs/routines/starledger-ai-classification.md docs/P3.2-executor-runbook.md
# 3. canonical prompt 的 1.–14. 步全數在場
for n in $(seq 1