開始使用 Claude Code 一段時間後,很多人都會碰到同樣的問題。
.md 檔散落在專案根目錄這篇文章會把我實際在用的 Claude Code 專用專案「何でも相談-pj」完整公開,從資料夾結構、CLAUDE.md、.claude/settings.json 到 .mcp.json 全部攤開來看。透過把 Obsidian Vault 內嵌在專案中,可以自動整理 Claude Code 的產出,之後還能在 Obsidian 的圖譜視圖中一覽整體知識脈絡。
對象讀者:剛開始使用 Claude Code 到中階使用者。即使沒用過 Obsidian 也沒問題。
先說明這個設計背後的三個原則。這三點支撐了所有的結構判斷。
CLAUDE.md,讓 Claude 自己遵守(不用每次由人手動提示)整體資料夾長這樣:
何でも相談-pj/
├── README.md # 初次設定步驟
├── CLAUDE.md # 專案指引(Claude Code 會自動讀取)
├── .mcp.json # 專案專屬的 MCP 伺服器設定
├── .claude/
│ ├── settings.json # model / effortLevel 等
│ ├── settings.local.json # 許可清單(個人用)
│ └── skills/
│ └── note-article-writing/ # 專案專屬自訂技能
└── obsidian-vault/ # Obsidian Vault 根目錄
├── .obsidian/ # 連 Obsidian 設定也一併可攜
├── daily/ # 每日筆記 YYYY-MM-DD.md
├── coding/ # 程式設計諮詢・範例
├── research/ # 技術調查・學習筆記
├── docs/ # 文件草稿・成果物
├── references/ # 參考資料・網址・PDF 等
└── archive/ # 已結束諮詢的封存
只有 CLAUDE.md 和 README.md 留在專案根目錄。這是因為 Claude Code 啟動時會自動讀取這兩個檔案;如果放進 Vault 裡,就不會被參照到。
把 obsidian-vault/ 內嵌到專案中,就是這個架構的核心。Claude Code 的工作目錄仍然是專案根目錄(何でも相談-pj/),因此 .claude/ 和 .mcp.json 都能正常被辨識;另一方面,筆記與成果物則全部放到 Vault 底下。
我把 6 個子資料夾的用途整理成表格如下。
資料夾用途命名規則daily/每日筆記・工作日誌YYYY-MM-DD.md``coding/程式設計諮詢・範例・審查對象<主題>/...``research/技術調查・學習筆記YYYY-MM-DD-主題.md``docs/文件草稿・成果物<文件名>.md``references/參考資料・網址集・PDFlinks.md / <資料名>.pdf``archive/已結束諮詢的封存YYYY-MM/<原始路徑>重點在於 archive/ 的運作方式:會以月份資料夾(例如 archive/2026-04/)為單位,連同原本的資料夾結構一起移動。如此一來,Vault 根目錄始終維持最精簡,但當你想回頭找舊脈絡時,仍可沿著原本的階層找到。
這是本文最想傳達的一點。
CLAUDE.md 可作為每個專案的指令書。很多人應該把它當成「撰寫程式規範的地方」在用,但我把它當成檔案配置自動化裝置。
例如,我的 CLAUDE.md 裡會寫像這樣的表格:
## 資料夾結構與預設置放規則
建立新檔案時,請依內容放到以下資料夾中
(絕對不要散落在專案根目錄或 Vault 根目錄):
| 資料夾 | 用途 | 檔名範例 |
|----------|------|----------------|
| `obsidian-vault/daily/` | 每日筆記 | `obsidian-vault/daily/YYYY-MM-DD.md` |
| `obsidian-vault/coding/` | 程式設計諮詢 | `obsidian-vault/coding/<主題>/...` |
| `obsidian-vault/research/` | 技術調查・學習筆記 | `obsidian-vault/research/YYYY-MM-DD-主題.md` |
| `obsidian-vault/docs/` | 文件成果物 | `obsidian-vault/docs/<文件名>.md` |
| `obsidian-vault/references/` | 參考資料・網址集 | `obsidian-vault/references/links.md` |
| `obsidian-vault/archive/` | 已結束諮詢 | `obsidian-vault/archive/YYYY-MM/<原始路徑>` |
在對話一開始,如果 `obsidian-vault/daily/<今天日期>.md` 已存在,
請先讀取一次,掌握當天脈絡後再開始工作。
只要寫下這一張表,行為就會劇烈改變。
Before(沒有 CLAUDE.md):
我:「幫我寫一份 API 設計筆記」
Claude:「我建立了api-design.md」(跑到專案根目錄)
After(CLAUDE.md 裡有置放規則):
我:「幫我寫一份 API 設計筆記」
Claude:「我建立了obsidian-vault/research/2026-04-18-API設計.md」
你不需要每次都說「請建立在 Vault 的 research 底下」。CLAUDE.md 最後那句「在對話一開始讀取每日筆記」也很有用,Claude 會在 session 開始時自動讀取當天的每日筆記,掌握前後文後再回應。
.claude/settings.json 的巧思為了固定專案行為,我在 .claude/settings.json 裡明確指定了幾個 key。
{
"model": "claude-opus-4-7",
"enabledPlugins": {
"everything-claude-code@everything-claude-code": true
},
"effortLevel": "xhigh",
"env": {
"CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING": "1"
}
}
各自的目的如下:
model:固定為 Opus 4.7,避免模型被自動切換。enabledPlugins:明確在專案中啟用後述的 everything-claude-code。effortLevel: "xhigh":把推理深度固定在接近最高等級(比 max 低一階),避免在寫程式或調查時被妥協。CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING:關閉思考量的自動調整。實務上讓它每次都以相同深度思考,會比較穩定。另外,我也在 .claude/settings.local.json 放了個人許可清單。
{
"permissions": {
"allow": [
"mcp__awslabs_aws-documentation-mcp-server__search_documentation",
"mcp__awslabs_aws-documentation-mcp-server__read_documentation",
"WebFetch(domain:qiita.com)",
"WebFetch(domain:www.anthropic.com)",
"WebFetch(domain:aws.amazon.com)",
"WebSearch"
]
}
}
settings.json 用來放「想在專案中共享的設定」,settings.local.json 則用來放「只屬於自己裝置的允許項目」。有了這個檔案,當我抓取常用的 AWS 官方文件、Qiita、Anthropic 官方頁面時,就不會跳出權限確認提示,工作節奏不會被打斷。
.mcp.json 與 everything-claude-code 外掛MCP 伺服器只透過專案專屬的 .mcp.json 啟用一個。
{
"mcpServers": {
"awslabs.aws-documentation-mcp-server": {
"command": "uvx",
"args": ["awslabs.aws-documentation-mcp-server@latest"],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR",
"AWS_DOCUMENTATION_PARTITION": "aws"
}
}
}
}
是透過 uvx 啟動。只要先安裝好 uv/uvx,第一次啟動時它會自動下載套件。之所以加入 AWS Docs,是因為當你問 Claude AWS 相關問題時,它很容易用過時資訊回答,所以我希望它能直接查到第一手資料。
重點是「不要加入太多 MCP」。everything-claude-code 的 README 也提到:「如果把所有 MCP 都啟用,200k 的 context 可能會縮到 70k。」我目前的做法是:AWS Docs 在專案層級常駐啟用,其他 MCP(context7、exa、github、memory、playwright、sequential-thinking)則透過 everything-claude-code 外掛在需要時才使用。
我把外掛中常用的斜線指令整理如下。
指令用途/plan擬定實作計畫時/tdd開始用 TDD 寫程式時/code-review審查已寫好的程式品質/security從安全性角度進行審查/build-fix找出並修正建置錯誤原因/refactor-clean刪除死碼・整理程式/verify實作後的驗證迴圈/checkpoint驗證通過時儲存狀態另外,我也在 .claude/skills/note-article-writing/ 放了專案專屬自訂技能。我把要寫 note.com 文章時的檢查清單與模板寫進 SKILL.md,Claude 會透過自動觸發來呼叫它。能在專案範圍內配置自訂技能,是 .claude/skills/ 的強項,讓你可以依照自己的工作流程打造迷你代理。
這個專案不使用 Git 也不使用雲端同步,而是以 USB/ZIP 手動複製為前提。之所以不使用 Git,是因為我想把包含 Obsidian 圖譜、設定檔、PDF 等二進位檔在內的「整包內容」直接攜帶移動。相對地,你必須遵守建立檔案時的 6 項規則。
1 絕對不要寫絕對路徑 在不同作業系統間會直接壞掉
2 不要嵌入直接參照家目錄的路徑(如 C:\Users\... 或 /Users/...) 同上
3 路徑分隔符統一使用 / Windows 也能正常使用 /
4 以無 BOM 的 UTF-8 儲存 避免亂碼
5 換行統一使用 LF(避免混用 CRLF) 因為不使用 Git,所以請在編輯器端統一
6 obsidian-vault/.obsidian/ 也一併複製 為了保留 Obsidian 的設定與外掛啟用狀態
移到其他電腦後,只需要重新安裝外掛即可。因為 ~/.claude/plugins/ 會依作業系統下載不同的二進位檔,所以無法整個資料夾直接攜帶。
/plugin marketplace add https://github.com/affaan-m/everything-claude-code
/plugin install everything-claude-code
只要執行這兩行,在同一台電腦的第二次之後就不需要再做,因為它會記錄在 ~/.claude/settings.json 中。至於 Obsidian,只要在新電腦上開啟 Obsidian,並把 obsidian-vault/ 重新作為 Vault 打開,Daily notes 外掛設定與已啟用狀態就會原封不動沿用。
因為篇幅變長了,所以我把最少要做的事整理成 5 個步驟,方便你直接照抄。
CLAUDE.md 和 README.mdobsidian-vault/,再切出 daily/、coding/、research/、docs/、references/、archive/ 這 6 個資料夾CLAUDE.md 寫上「各類內容該放哪裡」的表格(光是這樣就會改變 Claude 的行為).claude/settings.json 固定 model / effortLevel,並在 .mcp.json 中只啟用必要的 MCPobsidian-vault/ 開啟為 Vault,並啟用 Daily notes 外掛文章中介紹的內容都可以直接複製貼上就能運作。等你熟悉之後,也可以在 .claude/skills/ 放入自己的技能,或調整 MCP 的增減,讓它更貼合你的工作方式。