Communitygithub.com

tuannv0069/claude-doc-genome

一次性 Claude Code 外掛,用於快速啟動 AI 代理文件系統(CLAUDE.md + 規則 + 代理指南)。

claude-doc-genome 是什麼?

此技能提供一個 Claude Code 外掛程式,能一鍵引導建立專案的 AI 代理文件系統。它將一個可攜帶的文件捆綁包(包含規則、代理指南、技能和代理定義)部署到目標專案中,並根據專案掃描結果和使用者訪談生成客製化的 CLAUDE.md 和索引文件。外掛支援四種模式:`init` 用於初始部署,`update` 用於安全地從捆綁包中拉取更新的可攜帶檔案(三方合併,不覆蓋本地編輯),`check` 用於在主要儲存庫中比較捆綁包與實際檔案的差異,以及 `promote` 用於將實際檔案更改同步回捆綁包並更新版本。該外掛與 Claude Code、Cursor 和 Codex 等支援技能架構的 AI 代理平台相容,專注於確保文件系統的自我維護和專案規範的一致性。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add tuannv0069/claude-doc-genome

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

init-project

目的

從可攜帶的捆綁包中一次性引導新專案的代理文件系統。初始化後,專案會使用已部署的標準(doc-organization.md §8.3 決策樹 + 可攜帶的元標準)進行自我維護。init 在每個專案中僅執行一次;update 可在之後針對該專案重新執行,以從捆綁包中拉取更新的可攜帶檔案(三方安全合併 — 絕不覆蓋未提升的本機編輯)。check/promote 用於維護捆綁包本身,且僅在此主儲存庫中執行。

相依性

  • ./portable/rules/ — 7 個可攜帶規則(始終載入 + 路徑範圍限定)
  • ./portable/agent-guide/ — five-why.md, markdown.md, mermaid.md, orchestration-policy.md, worktree.md(部署到 docs/agent-guide/general/)
  • ./portable/skills/ — skill-designer/, skill-writer/, document-writer/(整個目錄樹)
  • ./portable/agents/ — skill-writer-auditor.md
  • ./templates/ — CLAUDE.md.tpl, agent-guide/index.md.tpl, docs/index.md.tpl
  • ./VERSION — 捆綁包版本,每次提升時更新
  • scripts/update.mjs(儲存庫根目錄)— 用於 update 模式的引擎(三方捆綁包→實際檔案合併);scripts/sync-version.mjs — 版本單一來源同步

模式

呼叫方式執行位置動作
/init-project新專案部署捆綁包(如下工作流程)
/init-project check主儲存庫根據對應表進行 sha256 比較捆綁包 ↔ 實際檔案 → 報告差異
/init-project promote主儲存庫針對每個對應的檔案,將實際檔案複製到捆綁包,並更新 VERSION
/init-project update已初始化的專案拉取更新的可攜帶檔案從捆綁包到實際檔案,三方安全合併(清單 ↔ 實際檔案 ↔ 捆綁包);跳過衝突(如下工作流程)

工作流程(init — 新專案)

  1. 掃描專案:根據 ## 模組矩陣 信號欄位偵測堆疊和可選模組。輸出:建議的模組集合 + 發現的插槽值。
  2. 訪談:確認建議的模組集合;詢問無法掃描的插槽(使用的開發連接埠、範圍所有權、文件語言)。無法回答的插槽 → 留下 TODO 標記,絕不憑空發明值;模組不確定 → 跳過它。
  3. 逐字複製 portable/:portable/rules/* → .claude/rules/;portable/agent-guide/* → docs/agent-guide/general/;portable/skills/* → .claude/skills/;portable/agents/* → .claude/agents/。
  4. 渲染模板:利用訪談中的 {{slots}} 填入 CLAUDE.md、docs/agent-guide/index.md、docs/index.md;缺少的插槽 → 保留 TODO 標記。
  5. 產生可選規則:對於每個確認的可選模組,根據 rule-writing-standards 在 docs/agent-guide/general/ 中寫入一個專案適配的規則,並在相同步驟中將其觸發行附加到 CLAUDE.md — 無硬編碼模板。
  6. 寫入清單 .claude/init-manifest.json:{ version, deployedAt, files:[{path,sha256}], templates:[{path,sha256}], modules:[...] }(出處;files[] 由 update 讀取以進行三方漂移偵測 — 保持 sha256 準確;templates[] 記錄每個渲染檔案所基於的 .tpl 的 sha,path = 相對於 templates/ 的模板路徑,例如 CLAUDE.md.tpl,由 update 用於在模板自部署以來發生變更時發出警告)。
  7. 驗證:每個已部署的檔案位於正確的層級;每個規則/代理指南檔案帶有 scope: 前置標記;CLAUDE.md 在令牌預算內;每個影響行為的按需檔案都有觸發行或路由器條目(可達性,檔案→觸發);CLAUDE.md 中的每個 MUST Read 觸發都解析為已部署的檔案(可達性,觸發→檔案 — 無失效觸發);除了預期的 TODO 標記外,無未渲染的 {{slot}} 殘留。完成 = 檢查清單通過 + 清單已寫入。

捆綁包 ↔ 實際檔案對應表(check / promote — 主儲存庫;update — 已初始化的專案)

捆綁包路徑實際檔案路徑
portable/rules/*.claude/rules/*
portable/agent-guide/*docs/agent-guide/general/*
portable/skills/*.claude/skills/*
portable/agents/*.claude/agents/*
  • check:對每對執行 sha256 → 列出不匹配項。預設更新方向是實際檔案 → 捆綁包(promote);先修正實際檔案,再執行 promote。
  • promote:針對每個對應的檔案,將實際檔案複製到捆綁包,然後透過 node scripts/sync-version.mjs set <x.y.z> 更新版本(寫入規範的 VERSION 並將其鏡像到 .claude-plugin/* 和 README 徽章中)。

工作流程(update — 已初始化的專案)

方向為捆綁包 → 實際檔案(與 promote 相反)。僅影響逐字複製的可攜帶集合;渲染的表現型(CLAUDE.md、index.md、專案編寫的指南)不在範圍內。透過已安裝外掛內部的路徑叫用 update.mjs(它會根據自身位置找到捆綁包);--project 是已初始化的專案根目錄,預設為目前目錄。

  1. 試執行:node <plugin>/scripts/update.mjs --project <project-root> → 檢視 ADD / UPDATE / CONFLICT 計畫和版本差異。
  2. 首先解決每個 CONFLICT — 衝突 = 自部署以來在本機編輯過的可攜帶檔案。將其提升到上游(以便改進進入捆綁包),或在檢視後手動覆蓋。絕不盲目覆蓋。
  3. 套用:node <plugin>/scripts/update.mjs --apply --project <project-root> → 寫入 ADD + UPDATE,跳過衝突,重新整理清單 version + files[].sha256。
  4. 僅新增和原地變更 — update 絕不刪除:從捆綁包中移除的檔案會保留在專案中,而在本機刪除的檔案會被重新新增。如有需要,請手動清理這些檔案。
    • templates/*(CLAUDE.md, index.md — 渲染的表現型)絕不會被覆寫:它們的插槽持有專案特定的值。update 僅在 .tpl 自部署以來發生變更時發出警告(sha vs manifest.templates[]);請手動重新渲染(比較 .tpl 與實際檔案,重新套用結構性變更,保留插槽值)或重新執行 /init-project。該警告會持續存在,直到下次 init 重新記錄模板 sha。
  5. 退出碼:0 = 已是最新或已乾淨套用;1 = 仍有衝突;2 = 設定錯誤(無清單 → 專案未由此外掛初始化)。

模組矩陣

模組包含部署時機掃描信號(範例,非詳盡)
核心portable/*(所有 4 組)+ 3 個模板始終—
執行時期agent-guide/general/local-runtime.md + CLAUDE.md 觸發(技能根據掃描寫入,步驟 5)專案自行執行開發伺服器package.json dev/start 腳本、launchSettings.json、vite/next/dotnet/django/cargo 配置
端到端agent-guide/general/<tool>.md(以偵測到的工具命名)+ CLAUDE.md 觸發(步驟 5)專案有 E2E 瀏覽器測試playwright/cypress/selenium 相依性、e2e/ 資料夾、E2E 配置
  • 僅在掃描確認或使用者在訪談中確認時才部署可選模組 — 不確定則跳過。
  • Git:最低限度的護欄(僅在要求時提交,絕不推送)隨 CLAUDE.md.tpl 一起提供;詳細政策是 scope: project — 專案按需在 docs/agent-guide/general/git.md 中撰寫,並在相同提交中新增其觸發行(可達性 — 絕不能有指向缺失檔案的觸發)。
  • 如果稍後需要跳過的模組 → 專案根據已部署的標準自行撰寫規則。新模式僅在真實專案經過實戰測試後,才透過 promote 進入捆綁包。

獨立性規則

  • 技能在每個專案中執行一次;已部署的檔案不引用此主儲存庫的任何檔案;專案規則絕不引用此技能。
  • 除了上述的捆綁包↔實際檔案對應表外,完全獨立,該對應表僅在主儲存庫中用於檢查/提升。

範例

✅ 掃描發現 package.json 帶有 "dev" 腳本 → 建議執行時期模組 → 步驟 5 寫入
   general/local-runtime.md + 將 "self-run dev server → MUST Read ..." 附加到 CLAUDE.md
❌ 在沒有掃描信號且未經訪談確認的情況下部署執行時期模組(猜測的模組)

✅ /init-project check → "MISMATCH: portable/rules/doc-organization.md != .claude/rules/doc-organization.md"
   → 先修正實際檔案 → /init-project promote
❌ 直接編輯 portable/* 然後初始化新專案(捆綁包與實際檔案無聲地分歧)

參考檔案

  • 捆綁包:./portable/**
  • 模板:./templates/**
  • 版本:./VERSION

相關技能