ワンクリックで
validate-starter
驗證 starter template 的完整性與文件一致性
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
驗證 starter template 的完整性與文件一致性
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Use when 使用者說「自動推」「loop」「幫我把 change 推到 ready」「不在的時候繼續做」、或 routine fire 自動觸發(--unattended)。適用於推進既有 spectra change;NOT for 非 spectra 工作、一次性任務、interval 盲跑命令(用 /loop)、user 在場想逐項拍板(用 /goal)、或想設計新 loop(看 vendor/snippets/loop-engineering cookbook)。
依功能分類變更並逐步完成 commit,遵循 commitlint 規範。Use when 使用者說「commit」「提交」「分批 commit」,或 working tree 有多組 unrelated 變更需要分門別類提交。
Deprecated alias — 已改名 /change-loop(2026-07-05)。Use when 既有 routine 或舊指令仍呼叫 /loop-engineer 時轉發。
Analyze artifact consistency for a change
Implement or resume tasks from a Spectra change
Archive a completed change
| name | Validate Starter |
| description | 驗證 starter template 的完整性與文件一致性 |
依照 docs/QUICK_START.md 指引,從建立新專案起驗證:
TEST_DIR="/tmp/starter-validation-$(date +%s)"
git clone . "$TEST_DIR" && cd "$TEST_DIR" && rm -rf .git && git init
在 $TEST_DIR 執行以下所有驗證。
對照 docs/QUICK_START.md 的「你得到了什麼」章節,逐一檢查:
.claude/ 結構:
commands/ 存在且包含根層命令檔agents/ 存在agents/code-review.md 存在agents/references/project-review-rules.md 存在hooks/ 存在rules/ 存在rules/truth-layers.md 存在skills/ 存在settings.json 存在openspec/ 結構:
project.md 存在specs/ 存在changes/ 存在changes/archive/ 存在決策 / 規則基線:
docs/decisions/ 存在且包含 starter 的分層真相基線app/ 結構:
app.vue 存在assets/css/ 存在auth.config.ts 存在pages/ 存在types/database.types.ts 存在server/ 結構:
auth.config.ts 存在utils/supabase.ts 存在搜尋所有描述目錄結構的文件:
grep -n "├──\|└──" docs/QUICK_START.md docs/CLAUDE_CODE_GUIDE.md README.md
比對每個描述的項目與實際結構,標記不一致處。
pnpm install
確認無錯誤、無嚴重警告。
從 README.md 的 Tech Stack 章節動態解析,與 package.json 比對:
node -e "
const fs = require('fs');
const readme = fs.readFileSync('README.md', 'utf8');
const pkg = require('./package.json');
const allDeps = {...pkg.dependencies, ...pkg.devDependencies};
// README 顯示名稱 → npm 套件名對照表
// 注意:Vue 由 Nuxt 內建管理,不需檢查
const knownMappings = {
'Nuxt': 'nuxt', 'TypeScript': 'typescript',
'Supabase': '@nuxtjs/supabase', 'Nuxt UI': '@nuxt/ui',
'Nuxt Charts': 'nuxt-charts', 'Tailwind CSS': 'tailwindcss',
'Nuxt Image': '@nuxt/image', 'Lucide Icons': '@iconify-json/lucide',
'nuxt-better-auth': '@onmax/nuxt-better-auth', 'Pinia': '@pinia/nuxt',
'Pinia Colada': '@pinia/colada', 'VueUse': '@vueuse/nuxt',
'Vite+': 'vite-plus', '@nuxt/test-utils': '@nuxt/test-utils',
'Zod': 'zod',
'Commitlint': '@commitlint/cli',
'VitePress': 'vitepress', 'NuxtHub': '@nuxthub/core',
'Sentry': '@sentry/nuxt', 'Cloudflare Workers': 'wrangler'
};
const techStack = readme.match(/## Tech Stack[\\s\\S]*?(?=\\n## |\$)/)?.[0] || '';
const matches = techStack.matchAll(/\\[([^\\]]+)\\]\\(https?:\\/\\/[^)]+\\)/g);
let pass = true, checked = 0, missing = [];
for (const [_, name] of matches) {
const pkgName = knownMappings[name];
if (!pkgName) continue;
checked++;
if (allDeps[pkgName]) {
console.log('✓', pkgName);
} else {
console.log('✗', pkgName, 'MISSING');
missing.push(pkgName);
pass = false;
}
}
console.log('');
console.log('Total:', checked, '| Pass:', checked - missing.length, '| Missing:', missing.length);
if (!pass) process.exit(1);
"
原理:從 README.md 的 [Name](url) 格式連結,透過 knownMappings 對照表轉換為 npm 套件名。
維護:新增技術時只需更新 README.md 和 knownMappings。
依照 QUICK_START.md Step 3,設定 .env 避免 TTY 錯誤:
cp .env.example .env
# 產生必要的 secrets
echo "BETTER_AUTH_SECRET=$(openssl rand -base64 32)" >> .env
echo "NUXT_SESSION_PASSWORD=$(openssl rand -base64 32)" >> .env
pnpm typecheck # 必須成功
pnpm test # 必須成功
pnpm check # 必須成功(如果 supabase 未啟動,部分測試可跳過)
列出根層命令並確認結構:
echo "=== 根層命令 ==="
ls .agents/commands/*.md
echo "=== 數量統計 ==="
ROOT_COUNT=$(ls .agents/commands/*.md | wc -l | tr -d ' ')
echo "根層: $ROOT_COUNT"
echo "# 預期:10 個以上"
預期至少包含的根層命令:commit.md, db-migration.md, doc-sync.md, freeze.md, guard.md, ship.md, unfreeze.md, validate-starter.md
輸出驗證報告:
## Starter Validation Report
**測試目錄**: $TEST_DIR
**來源 Commit**: $(git rev-parse --short HEAD)
### 結構驗證
| 項目 | 狀態 |
| --------- | ----- |
| .claude/ | ✅/❌ |
| openspec/ | ✅/❌ |
| app/ | ✅/❌ |
| server/ | ✅/❌ |
### 文件一致性
| 檔案 | 狀態 | 備註 |
| -------------------- | ----- | ---- |
| QUICK_START.md | ✅/❌ | |
| README.md | ✅/❌ | |
| CLAUDE_CODE_GUIDE.md | ✅/❌ | |
### Tech Stack
| 類別 | 狀態 | 缺少 |
| -------- | ----- | ---- |
| Core | ✅/❌ | |
| UI | ✅/❌ | |
| State | ✅/❌ | |
| Database | ✅/❌ | |
| Testing | ✅/❌ | |
| Deploy | ✅/❌ | |
### Build & Test
| 命令 | 狀態 |
| -------------- | ----- |
| pnpm install | ✅/❌ |
| pnpm typecheck | ✅/❌ |
| pnpm test | ✅/❌ |
### Commands
- 預期: 根層命令 10+
- 實際: X
- 狀態: ✅/❌
---
## 總結: **PASS** / **FAIL**
### 發現的問題(如有)
1. ...
2. ...
驗證完成後可選擇清理:
rm -rf "$TEST_DIR"