From fdf10dc9bc87f8cb4828b175f2e0f5dd10fe49f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=80=A7=E9=A9=8A?= Date: Fri, 27 Feb 2026 21:44:52 +0800 Subject: [PATCH] chinese --- .claude/CLAUDE.md | 32 ----- .claude/commands/pm-edit.md | 119 ------------------ .claude/commands/pm.md | 117 ----------------- claude/CLAUDE.md | 55 ++++++++ claude/commands/pm-edit.md | 82 ++++++++++++ claude/commands/pm.md | 111 ++++++++++++++++ .../mcp-configs/mcp-servers.json | 0 {.claude => claude}/rules/README.md | 0 {.claude => claude}/rules/common/agents.md | 0 .../rules/common/coding-style.md | 0 .../rules/common/development-workflow.md | 4 +- .../rules/common/git-workflow.md | 2 +- {.claude => claude}/rules/common/hooks.md | 0 {.claude => claude}/rules/common/patterns.md | 0 .../rules/common/performance.md | 0 {.claude => claude}/rules/common/security.md | 0 {.claude => claude}/rules/common/testing.md | 0 .../rules/golang/coding-style.md | 0 {.claude => claude}/rules/golang/hooks.md | 0 {.claude => claude}/rules/golang/patterns.md | 0 {.claude => claude}/rules/golang/security.md | 0 {.claude => claude}/rules/golang/testing.md | 0 .../rules/python/coding-style.md | 0 {.claude => claude}/rules/python/hooks.md | 0 {.claude => claude}/rules/python/patterns.md | 0 {.claude => claude}/rules/python/security.md | 0 {.claude => claude}/rules/python/testing.md | 0 .../rules/swift/coding-style.md | 0 {.claude => claude}/rules/swift/hooks.md | 0 {.claude => claude}/rules/swift/patterns.md | 0 {.claude => claude}/rules/swift/security.md | 0 {.claude => claude}/rules/swift/testing.md | 0 .../rules/typescript/coding-style.md | 0 {.claude => claude}/rules/typescript/hooks.md | 0 .../rules/typescript/patterns.md | 0 .../rules/typescript/security.md | 0 .../rules/typescript/testing.md | 0 {.claude => claude}/settings.local.json | 0 .../skills/api-design/SKILL.md | 0 .../skills/backend-patterns/SKILL.md | 0 .../skills/clickhouse-io/SKILL.md | 0 .../skills/coding-standards/SKILL.md | 0 .../skills/competitor-intelligence/SKILL.md | 0 .../skills/competitor-profiling/SKILL.md | 0 .../skills/configure-ecc/SKILL.md | 0 .../content-hash-cache-pattern/SKILL.md | 0 .../skills/continuous-learning-v2/SKILL.md | 16 +-- .../continuous-learning-v2/agents/observer.md | 0 .../agents/start-observer.sh | 0 .../skills/continuous-learning-v2/config.json | 0 .../continuous-learning-v2/hooks/observe.sh | 8 +- .../scripts/instinct-cli.py | 0 .../scripts/test_parse_instinct.py | 0 .../skills/continuous-learning/SKILL.md | 4 +- .../skills/continuous-learning/config.json | 0 .../continuous-learning/evaluate-session.sh | 8 +- .../skills/cost-aware-llm-pipeline/SKILL.md | 0 .../skills/cpp-coding-standards/SKILL.md | 0 .../skills/cpp-testing/SKILL.md | 0 .../skills/customer-profiling/SKILL.md | 0 .../skills/data-visualization/SKILL.md | 0 .../skills/database-migrations/SKILL.md | 0 .../skills/deployment-patterns/SKILL.md | 0 .../skills/django-patterns/SKILL.md | 0 .../skills/django-security/SKILL.md | 0 .../skills/django-tdd/SKILL.md | 0 .../skills/django-verification/SKILL.md | 0 .../skills/docker-patterns/SKILL.md | 0 .../skills/e2e-testing/SKILL.md | 0 .../skills/eval-harness/SKILL.md | 0 .../skills/financial-modeling/SKILL.md | 0 .../foundation-models-on-device/SKILL.md | 0 .../skills/frontend-patterns/SKILL.md | 0 .../skills/golang-clean-arch/SKILL.md | 0 .../skills/golang-patterns/SKILL.md | 0 .../skills/golang-testing/SKILL.md | 0 .../skills/iterative-retrieval/SKILL.md | 0 .../skills/java-coding-standards/SKILL.md | 0 .../skills/jpa-patterns/SKILL.md | 0 .../skills/liquid-glass-design/SKILL.md | 0 .../skills/macro-sector-analysis/SKILL.md | 0 .../skills/market-sizing/SKILL.md | 0 .../nutrient-document-processing/SKILL.md | 0 .../skills/postgres-patterns/SKILL.md | 0 .../skills/prioritization-framework/SKILL.md | 0 .../project-guidelines-example/SKILL.md | 0 .../skills/python-patterns/SKILL.md | 0 .../skills/python-testing/SKILL.md | 0 .../skills/quant-screening/SKILL.md | 0 .../regex-vs-llm-structured-text/SKILL.md | 0 .../skills/report-writer/SKILL.md | 0 .../skills/search-first/SKILL.md | 0 .../skills/security-review/SKILL.md | 0 .../cloud-infrastructure-security.md | 0 .../skills/security-scan/SKILL.md | 4 +- .../skills/sentiment-altdata/SKILL.md | 0 .../skills/skill-stocktake/SKILL.md | 2 +- .../skill-stocktake/scripts/quick-diff.sh | 12 +- .../skill-stocktake/scripts/save-results.sh | 0 .../skills/skill-stocktake/scripts/scan.sh | 14 +-- .../skills/springboot-patterns/SKILL.md | 0 .../skills/springboot-security/SKILL.md | 0 .../skills/springboot-tdd/SKILL.md | 0 .../skills/springboot-verification/SKILL.md | 0 .../skills/strategic-compact/SKILL.md | 4 +- .../strategic-compact/suggest-compact.sh | 4 +- .../skills/strategy-synthesis/SKILL.md | 0 .../skills/swift-actor-persistence/SKILL.md | 0 .../skills/swift-concurrency-6-2/SKILL.md | 0 .../skills/swift-protocol-di-testing/SKILL.md | 0 .../skills/swiftui-patterns/SKILL.md | 0 .../skills/tdd-workflow/SKILL.md | 0 .../skills/user-voice-mining/SKILL.md | 0 .../skills/valuation-analysis/SKILL.md | 0 .../skills/verification-loop/SKILL.md | 0 .../skills/visa-doc-translate/README.md | 0 .../skills/visa-doc-translate/SKILL.md | 0 .../skills/web-research/SKILL.md | 0 .../skills/web-to-markdown/SKILL.md | 4 +- .../web-to-markdown/scripts/web_to_md.py | 0 120 files changed, 291 insertions(+), 311 deletions(-) delete mode 100644 .claude/CLAUDE.md delete mode 100644 .claude/commands/pm-edit.md delete mode 100644 .claude/commands/pm.md create mode 100644 claude/CLAUDE.md create mode 100644 claude/commands/pm-edit.md create mode 100644 claude/commands/pm.md rename {.claude => claude}/mcp-configs/mcp-servers.json (100%) rename {.claude => claude}/rules/README.md (100%) rename {.claude => claude}/rules/common/agents.md (100%) rename {.claude => claude}/rules/common/coding-style.md (100%) rename {.claude => claude}/rules/common/development-workflow.md (76%) rename {.claude => claude}/rules/common/git-workflow.md (90%) rename {.claude => claude}/rules/common/hooks.md (100%) rename {.claude => claude}/rules/common/patterns.md (100%) rename {.claude => claude}/rules/common/performance.md (100%) rename {.claude => claude}/rules/common/security.md (100%) rename {.claude => claude}/rules/common/testing.md (100%) rename {.claude => claude}/rules/golang/coding-style.md (100%) rename {.claude => claude}/rules/golang/hooks.md (100%) rename {.claude => claude}/rules/golang/patterns.md (100%) rename {.claude => claude}/rules/golang/security.md (100%) rename {.claude => claude}/rules/golang/testing.md (100%) rename {.claude => claude}/rules/python/coding-style.md (100%) rename {.claude => claude}/rules/python/hooks.md (100%) rename {.claude => claude}/rules/python/patterns.md (100%) rename {.claude => claude}/rules/python/security.md (100%) rename {.claude => claude}/rules/python/testing.md (100%) rename {.claude => claude}/rules/swift/coding-style.md (100%) rename {.claude => claude}/rules/swift/hooks.md (100%) rename {.claude => claude}/rules/swift/patterns.md (100%) rename {.claude => claude}/rules/swift/security.md (100%) rename {.claude => claude}/rules/swift/testing.md (100%) rename {.claude => claude}/rules/typescript/coding-style.md (100%) rename {.claude => claude}/rules/typescript/hooks.md (100%) rename {.claude => claude}/rules/typescript/patterns.md (100%) rename {.claude => claude}/rules/typescript/security.md (100%) rename {.claude => claude}/rules/typescript/testing.md (100%) rename {.claude => claude}/settings.local.json (100%) rename {.claude => claude}/skills/api-design/SKILL.md (100%) rename {.claude => claude}/skills/backend-patterns/SKILL.md (100%) rename {.claude => claude}/skills/clickhouse-io/SKILL.md (100%) rename {.claude => claude}/skills/coding-standards/SKILL.md (100%) rename {.claude => claude}/skills/competitor-intelligence/SKILL.md (100%) rename {.claude => claude}/skills/competitor-profiling/SKILL.md (100%) rename {.claude => claude}/skills/configure-ecc/SKILL.md (100%) rename {.claude => claude}/skills/content-hash-cache-pattern/SKILL.md (100%) rename {.claude => claude}/skills/continuous-learning-v2/SKILL.md (94%) rename {.claude => claude}/skills/continuous-learning-v2/agents/observer.md (100%) rename {.claude => claude}/skills/continuous-learning-v2/agents/start-observer.sh (100%) rename {.claude => claude}/skills/continuous-learning-v2/config.json (100%) rename {.claude => claude}/skills/continuous-learning-v2/hooks/observe.sh (93%) rename {.claude => claude}/skills/continuous-learning-v2/scripts/instinct-cli.py (100%) rename {.claude => claude}/skills/continuous-learning-v2/scripts/test_parse_instinct.py (100%) rename {.claude => claude}/skills/continuous-learning/SKILL.md (96%) rename {.claude => claude}/skills/continuous-learning/config.json (100%) rename {.claude => claude}/skills/continuous-learning/evaluate-session.sh (87%) rename {.claude => claude}/skills/cost-aware-llm-pipeline/SKILL.md (100%) rename {.claude => claude}/skills/cpp-coding-standards/SKILL.md (100%) rename {.claude => claude}/skills/cpp-testing/SKILL.md (100%) rename {.claude => claude}/skills/customer-profiling/SKILL.md (100%) rename {.claude => claude}/skills/data-visualization/SKILL.md (100%) rename {.claude => claude}/skills/database-migrations/SKILL.md (100%) rename {.claude => claude}/skills/deployment-patterns/SKILL.md (100%) rename {.claude => claude}/skills/django-patterns/SKILL.md (100%) rename {.claude => claude}/skills/django-security/SKILL.md (100%) rename {.claude => claude}/skills/django-tdd/SKILL.md (100%) rename {.claude => claude}/skills/django-verification/SKILL.md (100%) rename {.claude => claude}/skills/docker-patterns/SKILL.md (100%) rename {.claude => claude}/skills/e2e-testing/SKILL.md (100%) rename {.claude => claude}/skills/eval-harness/SKILL.md (100%) rename {.claude => claude}/skills/financial-modeling/SKILL.md (100%) rename {.claude => claude}/skills/foundation-models-on-device/SKILL.md (100%) rename {.claude => claude}/skills/frontend-patterns/SKILL.md (100%) rename {.claude => claude}/skills/golang-clean-arch/SKILL.md (100%) rename {.claude => claude}/skills/golang-patterns/SKILL.md (100%) rename {.claude => claude}/skills/golang-testing/SKILL.md (100%) rename {.claude => claude}/skills/iterative-retrieval/SKILL.md (100%) rename {.claude => claude}/skills/java-coding-standards/SKILL.md (100%) rename {.claude => claude}/skills/jpa-patterns/SKILL.md (100%) rename {.claude => claude}/skills/liquid-glass-design/SKILL.md (100%) rename {.claude => claude}/skills/macro-sector-analysis/SKILL.md (100%) rename {.claude => claude}/skills/market-sizing/SKILL.md (100%) rename {.claude => claude}/skills/nutrient-document-processing/SKILL.md (100%) rename {.claude => claude}/skills/postgres-patterns/SKILL.md (100%) rename {.claude => claude}/skills/prioritization-framework/SKILL.md (100%) rename {.claude => claude}/skills/project-guidelines-example/SKILL.md (100%) rename {.claude => claude}/skills/python-patterns/SKILL.md (100%) rename {.claude => claude}/skills/python-testing/SKILL.md (100%) rename {.claude => claude}/skills/quant-screening/SKILL.md (100%) rename {.claude => claude}/skills/regex-vs-llm-structured-text/SKILL.md (100%) rename {.claude => claude}/skills/report-writer/SKILL.md (100%) rename {.claude => claude}/skills/search-first/SKILL.md (100%) rename {.claude => claude}/skills/security-review/SKILL.md (100%) rename {.claude => claude}/skills/security-review/cloud-infrastructure-security.md (100%) rename {.claude => claude}/skills/security-scan/SKILL.md (93%) rename {.claude => claude}/skills/sentiment-altdata/SKILL.md (100%) rename {.claude => claude}/skills/skill-stocktake/SKILL.md (99%) rename {.claude => claude}/skills/skill-stocktake/scripts/quick-diff.sh (87%) rename {.claude => claude}/skills/skill-stocktake/scripts/save-results.sh (100%) rename {.claude => claude}/skills/skill-stocktake/scripts/scan.sh (91%) rename {.claude => claude}/skills/springboot-patterns/SKILL.md (100%) rename {.claude => claude}/skills/springboot-security/SKILL.md (100%) rename {.claude => claude}/skills/springboot-tdd/SKILL.md (100%) rename {.claude => claude}/skills/springboot-verification/SKILL.md (100%) rename {.claude => claude}/skills/strategic-compact/SKILL.md (94%) rename {.claude => claude}/skills/strategic-compact/suggest-compact.sh (93%) rename {.claude => claude}/skills/strategy-synthesis/SKILL.md (100%) rename {.claude => claude}/skills/swift-actor-persistence/SKILL.md (100%) rename {.claude => claude}/skills/swift-concurrency-6-2/SKILL.md (100%) rename {.claude => claude}/skills/swift-protocol-di-testing/SKILL.md (100%) rename {.claude => claude}/skills/swiftui-patterns/SKILL.md (100%) rename {.claude => claude}/skills/tdd-workflow/SKILL.md (100%) rename {.claude => claude}/skills/user-voice-mining/SKILL.md (100%) rename {.claude => claude}/skills/valuation-analysis/SKILL.md (100%) rename {.claude => claude}/skills/verification-loop/SKILL.md (100%) rename {.claude => claude}/skills/visa-doc-translate/README.md (100%) rename {.claude => claude}/skills/visa-doc-translate/SKILL.md (100%) rename {.claude => claude}/skills/web-research/SKILL.md (100%) rename {.claude => claude}/skills/web-to-markdown/SKILL.md (96%) rename {.claude => claude}/skills/web-to-markdown/scripts/web_to_md.py (100%) diff --git a/.claude/CLAUDE.md b/.claude/CLAUDE.md deleted file mode 100644 index 9bd626c..0000000 --- a/.claude/CLAUDE.md +++ /dev/null @@ -1,32 +0,0 @@ -# 總開發規範 - -## 安全政策 - - 禁止所有安全風險的套件 - - 所有API 呼叫必須使用HTTPS - - 敏感資料必須加密存儲 - -## 程式開發標準 - - 測試覆蓋率不得低於 80% - -## 合規要求 - - 遵循 GDPR 資料保護規範 - - 記錄所有資料存取操作 - -# 全域開發偏好 - -## 語言偏好 - - 預設使用繁體中文回應自然語言內容 - - 程式碼註解和文件使用繁體中文撰寫 - - 不要有太多 emoji - - 思考過程也使用繁體中文 - -## 程式設計偏好 - - 偏好函式程式設計風格 - - 重視程式碼可讀性多過簡潔性 - - 喜歡詳細的錯誤處理和日誌記錄 - - 可以有時間複雜度小的方案絕不使用時間複雜度大方案解決,且要兼顧可讀性 - -## 解釋風格 - - 先解釋概念,在給出程式碼 - - 提出多種解決方案並說明優缺點 - - 包含實際的使用範例 \ No newline at end of file diff --git a/.claude/commands/pm-edit.md b/.claude/commands/pm-edit.md deleted file mode 100644 index c691033..0000000 --- a/.claude/commands/pm-edit.md +++ /dev/null @@ -1,119 +0,0 @@ ---- -description: 讀取現有 PRD 文件,針對指定部分進行深化、修改或補充。支援局部改寫與全文增強。 ---- - -# /pm-edit — PRD 編輯與深化指令 - -這個指令讓你針對**已存在的 PRD**進行修改、補充或深化,不需要重跑完整的多 agent 流程。 - -## 使用方式 - -``` -/pm-edit [PRD路徑或直接在編輯器中開啟] [編輯指令] -``` - -### 常見使用情境 - -``` -# 深化功能規格(最常用) -/pm-edit 目前 PRD 的功能規格太少,幫我把 Must Have 功能從 3 個擴充到至少 10 個 - -# 補充競品體驗分析 -/pm-edit 競品分析只有功能比較,幫我加入完整的 UX 體驗評估(Onboarding、情緒曲線等) - -# 加入 EARS 驗收標準 -/pm-edit 把所有功能的驗收標準改為 EARS 格式,並加入錯誤處理表格 - -# 參考競品網站重寫定位 -/pm-edit 參考:https://notion.so 和 https://coda.io ,重新分析我們的差異化定位 - -# 更新 Roadmap -/pm-edit 把 Phase 1 的時程從 3 個月改成 6 個月,重新估算功能範圍 - -# 補充用戶洞察 -/pm-edit 用戶 Persona 太薄弱,幫我深化為 3 個完整 Persona,每個都要有 JTBD 三層分析 -``` - -## 工作流程 - -### Step 1:讀取現有 PRD -使用 `Read` tool 讀取當前開啟的 PRD 文件(或使用者指定的路徑)。 - -若使用者沒有指定路徑: -1. 先檢查 `docs/prd/` 目錄下最新的 PRD 文件 -2. 若有多個,列出讓使用者選擇 - -### Step 2:理解編輯意圖 -分析使用者的編輯指令,判斷需要: - -| 編輯類型 | 需要的 Agent | 處理方式 | -|---------|------------|---------| -| 深化功能規格 | Prioritization Planner + PRD Writer | 重新規劃並局部重寫 | -| 補充競品分析 | Competitor Analyst | 呼叫 sub-agent 補充後合併 | -| 深化用戶洞察 | User Insight Researcher | 重新搜尋並更新 Persona | -| 格式轉換(改 EARS) | PRD Writer | 直接轉換格式 | -| 參考 URL 更新 | 對應 Agent + PRD Writer | 讀取 URL 後針對性更新 | -| 風險評估更新 | 直接推理 | 不需要呼叫 sub-agent | - -### Step 3:若提供 URL 參考 -若使用者在指令中包含 `參考:https://...`: -- 使用 `Read` tool 讀取該 URL(競品網站、文章、既有文件) -- 將讀取到的關鍵資訊摘要,傳遞給對應的 sub-agent - -### Step 4:執行局部更新 -**只更新受影響的章節**,不重寫整份 PRD。 - -更新原則: -- 保留原有 PRD 中已有的好內容 -- 在指定章節進行深化或修改 -- 新增章節時插入適當位置 -- 確保整份文件風格與格式一致 - -### Step 5:儲存更新版本 -使用 `Write` tool: -- 儲存為新版本:`docs/prd/[原檔名]-v2.md`(或 v3、v4...) -- 在文件末尾的「變更記錄」表格中加入此次修改說明 - ---- - -## 常用快捷編輯指令 - -### 功能深化 -``` -/pm-edit 把所有功能的驗收標準改為 EARS 格式表格,並補充錯誤處理 -``` -→ PRD Writer 直接轉換現有功能規格格式 - -### 競品補充 -``` -/pm-edit 幫我補充 [競品名] 的完整使用體驗分析,包含 Onboarding 和情緒曲線 -``` -→ Competitor Analyst 針對指定競品深化分析 - -### 功能擴充 -``` -/pm-edit Must Have 功能只有 [N] 個,幫我至少擴充到 10 個,優先考慮 [方向] 相關的功能 -``` -→ Prioritization Planner 重新規劃,PRD Writer 補充功能規格 - -### 參考競品重新定位 -``` -/pm-edit 參考:https://[競品URL] 重新分析我們的差異化定位並更新第 2 節 -``` -→ 讀取 URL → Competitor Analyst 更新 → PRD Writer 更新第 2 節 - -### 格式對齊 -``` -/pm-edit 把使用者故事改為標準格式 "AS a..., I WANT to..., SO THAT..." -``` -→ PRD Writer 直接格式化,不需要呼叫其他 agent - ---- - -## 重要原則 - -- **局部更新優先**:不要因為一個小改動就重寫整份 PRD -- **版本保留**:每次修改都存為新版本(v2, v3...),不覆蓋原版 -- **說明改了什麼**:在「變更記錄」中清楚記錄本次修改範圍 -- **保持一致性**:新增的內容要與原有文件的語氣、格式、詳細程度一致 -- **URL 優先讀取**:若使用者提供了 URL 參考,先讀取再做任何分析 diff --git a/.claude/commands/pm.md b/.claude/commands/pm.md deleted file mode 100644 index dfd569b..0000000 --- a/.claude/commands/pm.md +++ /dev/null @@ -1,117 +0,0 @@ ---- -description: 呼叫 PM Coordinator,拆解需求並協調多個專業 sub-agent,最終輸出完整的 PRD 文件。 ---- - -# /pm — 產品規劃指令 - -這個指令啟動 **PM Coordinator**,由它協調所有專業 sub-agent,產出結構化的 Product Requirements Document(PRD)。 - -## 你的角色 - -執行此指令時,你扮演 **PM Coordinator**(定義於 `.claude/agents/pm-coordinator.md`)。 - -## 工作流程 - -### Step 1:需求澄清 -接收使用者的產品描述後,先確認以下資訊(最多問 3 個問題): - -- 這是 0→1 新產品,還是既有產品的新功能? -- 目標用戶是誰?有無既有的用戶研究或數據? -- 有無特定競品作為參考? -- 預計的時程與團隊規模? - -**若資訊足夠,直接進入 Step 2,不要過度提問。** - -### Step 2:決定 Sub-Agent 組合 - -根據需求複雜度,選擇適合的 agent 組合: - -| 情境 | Agent 組合 | -|------|-----------| -| 快速概念驗證(< 30 分鐘) | User Insight + PRD Writer | -| 新市場 / 新產品 | Market + Competitor + User Insight + Journey + Prioritization + PRD Writer | -| 功能迭代 | User Insight + Journey + Prioritization + PRD Writer | -| 完整策略規劃 | 全部 Agent | - -### Step 3:依序呼叫 Sub-Agent - -使用 `Task` tool 呼叫以下 agent(路徑在 `.claude/agents/`): - -#### 可平行執行(無依賴關係): -1. **`pm-market-researcher`** — 市場規模與趨勢分析 -2. **`pm-competitor-analyst`** — 競品分析與定位建議 -3. **`pm-user-insight-researcher`** — Persona 建立與 JTBD 分析 - -#### 依序執行(需要前面的產出): -4. **`pm-journey-designer`** — 輸入:User Insight 結果 -5. **`pm-prioritization-planner`** — 輸入:User Insight + Journey 結果 -6. **`pm-prd-writer`** — 輸入:所有 agent 的完整產出 - -### Step 4:整合與品質把關 - -收到所有 sub-agent 產出後,在呼叫 PRD Writer 前確認: - -- [ ] 目標用戶描述是否一致? -- [ ] 核心功能是否對應 JTBD? -- [ ] Roadmap 是否反映優先級決策? -- [ ] 有無明顯矛盾或遺漏? - -### Step 5:輸出 PRD - -呼叫 `pm-prd-writer` 輸出最終 PRD,並: -1. 顯示完整 PRD 給使用者 -2. 儲存至 `docs/prd/[產品名]-prd-[YYYY-MM-DD].md` - ---- - -## 呼叫 Sub-Agent 的範例格式 - -``` -Task: 呼叫 pm-market-researcher -Description: 分析 [產品類別] 的市場規模與近期趨勢 -Input: - - 產品概述:[使用者的原始描述] - - 目標地區:[台灣 / 全球 / 東南亞...] - - 特別關注:[使用者提到的任何市場相關資訊] -Expected output: 市場研究報告(格式參照 pm-market-researcher.md) -``` - ---- - -## Sub-Agent 一覽 - -| Agent 文件 | 主要職責 | 所需工具 | -|-----------|---------|---------| -| `pm-coordinator.md` | 協調者(你自己) | Task, WebSearch, Read, Write | -| `pm-market-researcher.md` | 市場與趨勢研究 | WebSearch, Read | -| `pm-competitor-analyst.md` | 競品分析與定位 | WebSearch, Read | -| `pm-user-insight-researcher.md` | 用戶洞察與 JTBD | WebSearch, Read | -| `pm-journey-designer.md` | 旅程與 UX 流程設計 | Read | -| `pm-prioritization-planner.md` | 功能優先級與 Roadmap | Read | -| `pm-prd-writer.md` | PRD 文件撰寫 | Write, Read | - ---- - -## 使用範例 - -``` -/pm 我想做一個幫助獨立接案者管理客戶與發票的 SaaS 工具, - 目標用戶是台灣的設計師和工程師, - 預計 3 個月內上線 MVP,只有我一個工程師和一個設計師。 -``` - -``` -/pm 我們的電商平台需要新增一個 AI 推薦功能, - 希望提升用戶的二次購買率, - 參考競品:Amazon、momo、蝦皮。 -``` - ---- - -## 重要注意事項 - -- **不要自己做市場研究**:交給 `pm-market-researcher` sub-agent -- **不要跳過澄清**:需求不清楚是後續所有浪費的根源 -- **輸出前做整合**:各 sub-agent 的輸出可能有矛盾,需要你統一 -- **保持語言一致**:整份 PRD 使用繁體中文,技術術語可保留英文 -- **PRD 必須可執行**:驗收標準應具體、可測試,不能是模糊描述 \ No newline at end of file diff --git a/claude/CLAUDE.md b/claude/CLAUDE.md new file mode 100644 index 0000000..0b5472c --- /dev/null +++ b/claude/CLAUDE.md @@ -0,0 +1,55 @@ +# 總開發規範 + +## 安全政策 +- 禁止所有安全風險的套件 +- 所有 API 呼叫必須使用 HTTPS +- 敏感資料必須加密存儲 +- 絕不在原始碼中寫死 secrets(API keys、密碼、token) +- 所有使用者輸入必須驗證;使用參數化查詢防止 SQL injection +- 發現安全問題時:立即停止 → 使用 **security-reviewer** agent → 修復後繼續 + +## 程式開發標準 +- 測試覆蓋率不得低於 80% +- 優先不可變資料(immutability):永遠回傳新物件,不直接修改原物件 +- 檔案大小:一般 200-400 行,最多 800 行;超過時拆分 +- 錯誤處理:每一層都要明確處理,不可靜默吞掉錯誤 + +## 合規要求 +- 遵循 GDPR 資料保護規範 +- 記錄所有資料存取操作 + +## Agent 使用規範 +- 複雜功能請求 → 先用 **planner** agent 規劃 +- 寫完程式碼後 → 立即用 **code-reviewer** agent +- 新功能或 bug fix → 用 **tdd-guide** agent(先寫測試) +- 架構決策 → 用 **architect** agent +- 獨立任務盡量平行啟動多個 agent,不要依序執行 + +## Git 規範 +- Commit message 格式:`: ` +- Types: feat, fix, refactor, docs, test, chore, perf, ci +- PR 時用 `git diff [base-branch]...HEAD` 分析完整變更 + +## 模型選擇 +- **Haiku**:輕量 agent、頻繁呼叫的 worker +- **Sonnet**:主要開發工作、orchestration +- **Opus**:複雜架構決策、深度研究分析 + +# 全域開發偏好 + +## 語言偏好 + - 預設使用繁體中文回應自然語言內容 + - 程式碼註解和文件使用繁體中文撰寫 + - 不要有太多 emoji + - 思考過程也使用繁體中文 + +## 程式設計偏好 + - 偏好函式程式設計風格 + - 重視程式碼可讀性多過簡潔性 + - 喜歡詳細的錯誤處理和日誌記錄 + - 可以有時間複雜度小的方案絕不使用時間複雜度大方案解決,且要兼顧可讀性 + +## 解釋風格 + - 先解釋概念,在給出程式碼 + - 提出多種解決方案並說明優缺點 + - 包含實際的使用範例 \ No newline at end of file diff --git a/claude/commands/pm-edit.md b/claude/commands/pm-edit.md new file mode 100644 index 0000000..ded04eb --- /dev/null +++ b/claude/commands/pm-edit.md @@ -0,0 +1,82 @@ +--- +description: 讀取現有 PRD 文件,針對指定部分進行深化、修改或補充。支援局部改寫與全文增強。 +--- + +# /pm-edit — PRD 編輯與深化 + +針對**已存在的 PRD** 進行修改、補充或深化,不需要重跑完整流程。 + +## 使用方式 + +``` +# 深化功能規格 +/pm-edit 目前 PRD 的功能規格太少,幫我把 Must Have 功能擴充到至少 10 個 + +# 補充競品體驗分析 +/pm-edit 競品分析只有功能比較,幫我加入完整的 UX 體驗評估 + +# 加入 EARS 驗收標準 +/pm-edit 把所有功能的驗收標準改為 EARS 格式 + +# 參考競品網站重寫定位 +/pm-edit 參考:https://notion.so 和 https://coda.io ,重新分析差異化定位 + +# 更新 Roadmap +/pm-edit 把 Phase 1 時程從 3 個月改成 6 個月 + +# 補充用戶洞察 +/pm-edit 用戶 Persona 太薄弱,幫我深化痛點分析 +``` + +## 工作流程 + +### Step 1:讀取現有 PRD + +使用 `Read` tool 讀取當前開啟的 PRD(或使用者指定的路徑)。 + +若未指定路徑: +1. 檢查 `docs/prd/` 目錄下最新的 PRD +2. 若有多個,列出讓使用者選擇 + +### Step 2:判斷需要哪個 Agent + +| 編輯類型 | 需要的 Agent | +|---------|-------------| +| 深化功能規格 | PM Strategist + PM Writer | +| 補充競品分析 | PM Researcher | +| 深化用戶洞察 | PM User Analyst | +| 格式轉換(改 EARS) | PM Writer | +| 參考 URL 更新 | PM Researcher + PM Writer | +| 風險評估更新 | 直接推理,不需呼叫 Agent | +| Roadmap 調整 | PM Strategist | + +### Step 3:若提供 URL + +若指令中包含 `參考:https://...`: +- 先用 web-to-markdown skill 爬取 URL +- 將爬取內容傳給對應 Agent + +### Step 4:執行局部更新 + +**只更新受影響的章節**,不重寫整份 PRD。 + +更新原則: +- 保留原有好內容 +- 在指定章節進行深化或修改 +- 新增章節插入適當位置 +- 確保整份文件風格格式一致 + +### Step 5:儲存新版本 + +- 存為新版本:`[原檔名]-v2.md`(v3、v4...) +- 在「變更記錄」中加入修改說明 + +--- + +## 重要原則 + +- **局部更新優先**:不要因小改動重寫整份 PRD +- **版本保留**:每次存為新版本,不覆蓋原版 +- **說明改了什麼**:在變更記錄中清楚記錄 +- **保持一致性**:新增內容要與原文風格一致 +- **URL 優先讀取**:有提供 URL 的話,先讀取再分析 diff --git a/claude/commands/pm.md b/claude/commands/pm.md new file mode 100644 index 0000000..e8d09b1 --- /dev/null +++ b/claude/commands/pm.md @@ -0,0 +1,111 @@ +--- +description: 呼叫完整 PM 流程,依序執行研究、用戶洞察、策略規劃,最終輸出結構完整的 PRD 文件。 +--- + +# /pm — 完整產品規劃 + +啟動完整的產品規劃流程,依序呼叫 4 個專業 Agent,最終產出結構化的 PRD。 + +## 使用方式 + +``` +/pm 我想做一個幫助獨立接案者管理客戶與發票的 SaaS 工具, + 目標用戶是台灣的設計師和工程師, + 預計 3 個月內上線 MVP,只有我一個工程師和一個設計師。 + +/pm 我們的電商平台需要新增一個 AI 推薦功能, + 參考競品:Amazon、momo、蝦皮。 +``` + +## 工作流程 + +### Step 1:需求澄清 + +接收使用者的產品描述後,快速確認以下資訊(**最多問 3 個問題**): + +- 這是 0→1 新產品,還是既有產品的新功能? +- 目標用戶是誰? +- 有無特定競品作為參考(名稱或 URL)? +- 預計時程與團隊規模? + +**若資訊足夠,直接進入 Step 2。** + +### Step 2:決定執行範圍 + +根據需求複雜度選擇 Agent 組合: + +| 情境 | Agent 組合 | +|------|-----------| +| 快速概念驗證(< 30 分鐘) | PM User Analyst + PM Writer | +| 新市場 / 新產品 | 全部 4 個 Agent | +| 功能迭代 | PM User Analyst + PM Strategist + PM Writer | +| 完整策略規劃 | 全部 4 個 Agent | + +### Step 3:建立草稿目錄 + +建立 `docs/prd/drafts/[產品名稱]-[YYYY-MM-DD]/` 目錄。 + +### Step 4:依序呼叫 Agent + +#### 可平行執行(無依賴): +1. **`pm-researcher`**(`.claude/agents/pm-researcher.md`) + - 市場規模 + 趨勢 + 競品功能盤點 + UX 體驗 + - 輸出:`01-market-research.md` + `02-competitor-analysis.md` + +2. **`pm-user-analyst`**(`.claude/agents/pm-user-analyst.md`) + - 真實用戶痛點挖掘 + - 輸出:`03-user-insights.md` + +#### 依序執行(需前面產出): +3. **`pm-strategist`**(`.claude/agents/pm-strategist.md`) + - 讀取 User Analyst 和 Researcher 的報告 → 旅程設計 + 功能排序 + Roadmap + - 輸出:`04-journey-strategy.md` + `05-prioritization.md` + +4. **`pm-writer`**(`.claude/agents/pm-writer.md`) + - 讀取所有草稿 → 一致性檢查 → 整合為完整 PRD + - 輸出:`docs/prd/[產品名]-prd-[YYYY-MM-DD].md` + +### Step 5:品質把關 + +在呼叫 PM Writer 前確認: + +| 項目 | 最低標準 | +|------|---------| +| 功能數量(Must Have) | ≥ 8 個 | +| 用戶痛點 | ≥ 8 個具體痛點 | +| 競品數量 | ≥ 3 個完整分析 | +| 旅程流程 | ≥ 1 Macro + 2 Micro Journey | +| 風險清單 | ≥ 5 個 | + +未達標則要求對應 Agent 補充,**不要自行湊數**。 + +### Step 6:輸出 PRD + +最終 PRD 存至 `docs/prd/[產品名]-prd-[YYYY-MM-DD].md`,同時顯示給使用者。 + +--- + +## Agent 一覽 + +| Agent | 主要職責 | 使用的 Skills | +|-------|---------|-------------| +| `pm-researcher` | 市場研究 + 競品分析 | web-research, web-to-markdown, competitor-profiling | +| `pm-user-analyst` | 用戶痛點挖掘 | web-research, user-voice-mining | +| `pm-strategist` | 旅程設計 + 功能排序 + Roadmap | prioritization-framework | +| `pm-writer` | PRD 整合撰寫 | report-writer | + +--- + +## 重要注意事項 + +- **不要自己做市場研究**:交給 `pm-researcher` +- **不要跳過澄清**:需求不清楚是後續所有浪費的根源 +- **輸出前做整合**:各 Agent 產出可能有矛盾,需統一 +- **語言一致**:繁體中文,技術術語保留英文 +- **PRD 必須可執行**:驗收標準應具體、可測試 + +--- + +## 若已有部分研究 + +如果之前已經執行過 `/pm-research` 或 `/pm-user`,`/pm` 會自動讀取草稿資料夾中已有的報告,**跳過已完成的步驟**,從缺少的部分繼續。 \ No newline at end of file diff --git a/.claude/mcp-configs/mcp-servers.json b/claude/mcp-configs/mcp-servers.json similarity index 100% rename from .claude/mcp-configs/mcp-servers.json rename to claude/mcp-configs/mcp-servers.json diff --git a/.claude/rules/README.md b/claude/rules/README.md similarity index 100% rename from .claude/rules/README.md rename to claude/rules/README.md diff --git a/.claude/rules/common/agents.md b/claude/rules/common/agents.md similarity index 100% rename from .claude/rules/common/agents.md rename to claude/rules/common/agents.md diff --git a/.claude/rules/common/coding-style.md b/claude/rules/common/coding-style.md similarity index 100% rename from .claude/rules/common/coding-style.md rename to claude/rules/common/coding-style.md diff --git a/.claude/rules/common/development-workflow.md b/claude/rules/common/development-workflow.md similarity index 76% rename from .claude/rules/common/development-workflow.md rename to claude/rules/common/development-workflow.md index dd4aa32..c5f4ae0 100644 --- a/.claude/rules/common/development-workflow.md +++ b/claude/rules/common/development-workflow.md @@ -1,6 +1,6 @@ # Development Workflow -> This file extends [common/git-workflow.md](./git-workflow.md) with the full feature development process that happens before git operations. +> This file extends [common/git-workflow.md](git-workflow.md) with the full feature development process that happens before git operations. The Feature Implementation Workflow describes the development pipeline: planning, TDD, code review, and then committing to git. @@ -26,4 +26,4 @@ The Feature Implementation Workflow describes the development pipeline: planning 4. **Commit & Push** - Detailed commit messages - Follow conventional commits format - - See [git-workflow.md](./git-workflow.md) for commit message format and PR process + - See [git-workflow.md](git-workflow.md) for commit message format and PR process diff --git a/.claude/rules/common/git-workflow.md b/claude/rules/common/git-workflow.md similarity index 90% rename from .claude/rules/common/git-workflow.md rename to claude/rules/common/git-workflow.md index d57d9e2..15c1646 100644 --- a/.claude/rules/common/git-workflow.md +++ b/claude/rules/common/git-workflow.md @@ -21,4 +21,4 @@ When creating PRs: 5. Push with `-u` flag if new branch > For the full development process (planning, TDD, code review) before git operations, -> see [development-workflow.md](./development-workflow.md). +> see [development-workflow.md](development-workflow.md). diff --git a/.claude/rules/common/hooks.md b/claude/rules/common/hooks.md similarity index 100% rename from .claude/rules/common/hooks.md rename to claude/rules/common/hooks.md diff --git a/.claude/rules/common/patterns.md b/claude/rules/common/patterns.md similarity index 100% rename from .claude/rules/common/patterns.md rename to claude/rules/common/patterns.md diff --git a/.claude/rules/common/performance.md b/claude/rules/common/performance.md similarity index 100% rename from .claude/rules/common/performance.md rename to claude/rules/common/performance.md diff --git a/.claude/rules/common/security.md b/claude/rules/common/security.md similarity index 100% rename from .claude/rules/common/security.md rename to claude/rules/common/security.md diff --git a/.claude/rules/common/testing.md b/claude/rules/common/testing.md similarity index 100% rename from .claude/rules/common/testing.md rename to claude/rules/common/testing.md diff --git a/.claude/rules/golang/coding-style.md b/claude/rules/golang/coding-style.md similarity index 100% rename from .claude/rules/golang/coding-style.md rename to claude/rules/golang/coding-style.md diff --git a/.claude/rules/golang/hooks.md b/claude/rules/golang/hooks.md similarity index 100% rename from .claude/rules/golang/hooks.md rename to claude/rules/golang/hooks.md diff --git a/.claude/rules/golang/patterns.md b/claude/rules/golang/patterns.md similarity index 100% rename from .claude/rules/golang/patterns.md rename to claude/rules/golang/patterns.md diff --git a/.claude/rules/golang/security.md b/claude/rules/golang/security.md similarity index 100% rename from .claude/rules/golang/security.md rename to claude/rules/golang/security.md diff --git a/.claude/rules/golang/testing.md b/claude/rules/golang/testing.md similarity index 100% rename from .claude/rules/golang/testing.md rename to claude/rules/golang/testing.md diff --git a/.claude/rules/python/coding-style.md b/claude/rules/python/coding-style.md similarity index 100% rename from .claude/rules/python/coding-style.md rename to claude/rules/python/coding-style.md diff --git a/.claude/rules/python/hooks.md b/claude/rules/python/hooks.md similarity index 100% rename from .claude/rules/python/hooks.md rename to claude/rules/python/hooks.md diff --git a/.claude/rules/python/patterns.md b/claude/rules/python/patterns.md similarity index 100% rename from .claude/rules/python/patterns.md rename to claude/rules/python/patterns.md diff --git a/.claude/rules/python/security.md b/claude/rules/python/security.md similarity index 100% rename from .claude/rules/python/security.md rename to claude/rules/python/security.md diff --git a/.claude/rules/python/testing.md b/claude/rules/python/testing.md similarity index 100% rename from .claude/rules/python/testing.md rename to claude/rules/python/testing.md diff --git a/.claude/rules/swift/coding-style.md b/claude/rules/swift/coding-style.md similarity index 100% rename from .claude/rules/swift/coding-style.md rename to claude/rules/swift/coding-style.md diff --git a/.claude/rules/swift/hooks.md b/claude/rules/swift/hooks.md similarity index 100% rename from .claude/rules/swift/hooks.md rename to claude/rules/swift/hooks.md diff --git a/.claude/rules/swift/patterns.md b/claude/rules/swift/patterns.md similarity index 100% rename from .claude/rules/swift/patterns.md rename to claude/rules/swift/patterns.md diff --git a/.claude/rules/swift/security.md b/claude/rules/swift/security.md similarity index 100% rename from .claude/rules/swift/security.md rename to claude/rules/swift/security.md diff --git a/.claude/rules/swift/testing.md b/claude/rules/swift/testing.md similarity index 100% rename from .claude/rules/swift/testing.md rename to claude/rules/swift/testing.md diff --git a/.claude/rules/typescript/coding-style.md b/claude/rules/typescript/coding-style.md similarity index 100% rename from .claude/rules/typescript/coding-style.md rename to claude/rules/typescript/coding-style.md diff --git a/.claude/rules/typescript/hooks.md b/claude/rules/typescript/hooks.md similarity index 100% rename from .claude/rules/typescript/hooks.md rename to claude/rules/typescript/hooks.md diff --git a/.claude/rules/typescript/patterns.md b/claude/rules/typescript/patterns.md similarity index 100% rename from .claude/rules/typescript/patterns.md rename to claude/rules/typescript/patterns.md diff --git a/.claude/rules/typescript/security.md b/claude/rules/typescript/security.md similarity index 100% rename from .claude/rules/typescript/security.md rename to claude/rules/typescript/security.md diff --git a/.claude/rules/typescript/testing.md b/claude/rules/typescript/testing.md similarity index 100% rename from .claude/rules/typescript/testing.md rename to claude/rules/typescript/testing.md diff --git a/.claude/settings.local.json b/claude/settings.local.json similarity index 100% rename from .claude/settings.local.json rename to claude/settings.local.json diff --git a/.claude/skills/api-design/SKILL.md b/claude/skills/api-design/SKILL.md similarity index 100% rename from .claude/skills/api-design/SKILL.md rename to claude/skills/api-design/SKILL.md diff --git a/.claude/skills/backend-patterns/SKILL.md b/claude/skills/backend-patterns/SKILL.md similarity index 100% rename from .claude/skills/backend-patterns/SKILL.md rename to claude/skills/backend-patterns/SKILL.md diff --git a/.claude/skills/clickhouse-io/SKILL.md b/claude/skills/clickhouse-io/SKILL.md similarity index 100% rename from .claude/skills/clickhouse-io/SKILL.md rename to claude/skills/clickhouse-io/SKILL.md diff --git a/.claude/skills/coding-standards/SKILL.md b/claude/skills/coding-standards/SKILL.md similarity index 100% rename from .claude/skills/coding-standards/SKILL.md rename to claude/skills/coding-standards/SKILL.md diff --git a/.claude/skills/competitor-intelligence/SKILL.md b/claude/skills/competitor-intelligence/SKILL.md similarity index 100% rename from .claude/skills/competitor-intelligence/SKILL.md rename to claude/skills/competitor-intelligence/SKILL.md diff --git a/.claude/skills/competitor-profiling/SKILL.md b/claude/skills/competitor-profiling/SKILL.md similarity index 100% rename from .claude/skills/competitor-profiling/SKILL.md rename to claude/skills/competitor-profiling/SKILL.md diff --git a/.claude/skills/configure-ecc/SKILL.md b/claude/skills/configure-ecc/SKILL.md similarity index 100% rename from .claude/skills/configure-ecc/SKILL.md rename to claude/skills/configure-ecc/SKILL.md diff --git a/.claude/skills/content-hash-cache-pattern/SKILL.md b/claude/skills/content-hash-cache-pattern/SKILL.md similarity index 100% rename from .claude/skills/content-hash-cache-pattern/SKILL.md rename to claude/skills/content-hash-cache-pattern/SKILL.md diff --git a/.claude/skills/continuous-learning-v2/SKILL.md b/claude/skills/continuous-learning-v2/SKILL.md similarity index 94% rename from .claude/skills/continuous-learning-v2/SKILL.md rename to claude/skills/continuous-learning-v2/SKILL.md index 09597a0..8f113d2 100644 --- a/.claude/skills/continuous-learning-v2/SKILL.md +++ b/claude/skills/continuous-learning-v2/SKILL.md @@ -135,14 +135,14 @@ Add to your `~/.claude/settings.json`. "matcher": "*", "hooks": [{ "type": "command", - "command": "~/.claude/skills/continuous-learning-v2/hooks/observe.sh pre" + "command": "~/claude/skills/continuous-learning-v2/hooks/observe.sh pre" }] }], "PostToolUse": [{ "matcher": "*", "hooks": [{ "type": "command", - "command": "~/.claude/skills/continuous-learning-v2/hooks/observe.sh post" + "command": "~/claude/skills/continuous-learning-v2/hooks/observe.sh post" }] }] } @@ -154,8 +154,8 @@ Add to your `~/.claude/settings.json`. The Python CLI will create these automatically, but you can also create them manually: ```bash -mkdir -p ~/.claude/homunculus/{instincts/{personal,inherited},evolved/{agents,skills,commands}} -touch ~/.claude/homunculus/observations.jsonl +mkdir -p ~/claude/homunculus/{instincts/{personal,inherited},evolved/{agents,skills,commands}} +touch ~/claude/homunculus/observations.jsonl ``` ### 3. Use the Instinct Commands @@ -185,13 +185,13 @@ Edit `config.json`: "version": "2.0", "observation": { "enabled": true, - "store_path": "~/.claude/homunculus/observations.jsonl", + "store_path": "~/claude/homunculus/observations.jsonl", "max_file_size_mb": 10, "archive_after_days": 7 }, "instincts": { - "personal_path": "~/.claude/homunculus/instincts/personal/", - "inherited_path": "~/.claude/homunculus/instincts/inherited/", + "personal_path": "~/claude/homunculus/instincts/personal/", + "inherited_path": "~/claude/homunculus/instincts/inherited/", "min_confidence": 0.3, "auto_approve_threshold": 0.7, "confidence_decay_rate": 0.05 @@ -209,7 +209,7 @@ Edit `config.json`: }, "evolution": { "cluster_threshold": 3, - "evolved_path": "~/.claude/homunculus/evolved/" + "evolved_path": "~/claude/homunculus/evolved/" } } ``` diff --git a/.claude/skills/continuous-learning-v2/agents/observer.md b/claude/skills/continuous-learning-v2/agents/observer.md similarity index 100% rename from .claude/skills/continuous-learning-v2/agents/observer.md rename to claude/skills/continuous-learning-v2/agents/observer.md diff --git a/.claude/skills/continuous-learning-v2/agents/start-observer.sh b/claude/skills/continuous-learning-v2/agents/start-observer.sh similarity index 100% rename from .claude/skills/continuous-learning-v2/agents/start-observer.sh rename to claude/skills/continuous-learning-v2/agents/start-observer.sh diff --git a/.claude/skills/continuous-learning-v2/config.json b/claude/skills/continuous-learning-v2/config.json similarity index 100% rename from .claude/skills/continuous-learning-v2/config.json rename to claude/skills/continuous-learning-v2/config.json diff --git a/.claude/skills/continuous-learning-v2/hooks/observe.sh b/claude/skills/continuous-learning-v2/hooks/observe.sh similarity index 93% rename from .claude/skills/continuous-learning-v2/hooks/observe.sh rename to claude/skills/continuous-learning-v2/hooks/observe.sh index 86cfb22..0ad7aab 100755 --- a/.claude/skills/continuous-learning-v2/hooks/observe.sh +++ b/claude/skills/continuous-learning-v2/hooks/observe.sh @@ -4,7 +4,7 @@ # Captures tool use events for pattern analysis. # Claude Code passes hook data via stdin as JSON. # -# Hook config (in ~/.claude/settings.json): +# Hook config (in ~/claude/settings.json): # # If installed as a plugin, use ${CLAUDE_PLUGIN_ROOT}: # { @@ -20,16 +20,16 @@ # } # } # -# If installed manually to ~/.claude/skills: +# If installed manually to ~/claude/skills: # { # "hooks": { # "PreToolUse": [{ # "matcher": "*", -# "hooks": [{ "type": "command", "command": "~/.claude/skills/continuous-learning-v2/hooks/observe.sh pre" }] +# "hooks": [{ "type": "command", "command": "~/claude/skills/continuous-learning-v2/hooks/observe.sh pre" }] # }], # "PostToolUse": [{ # "matcher": "*", -# "hooks": [{ "type": "command", "command": "~/.claude/skills/continuous-learning-v2/hooks/observe.sh post" }] +# "hooks": [{ "type": "command", "command": "~/claude/skills/continuous-learning-v2/hooks/observe.sh post" }] # }] # } # } diff --git a/.claude/skills/continuous-learning-v2/scripts/instinct-cli.py b/claude/skills/continuous-learning-v2/scripts/instinct-cli.py similarity index 100% rename from .claude/skills/continuous-learning-v2/scripts/instinct-cli.py rename to claude/skills/continuous-learning-v2/scripts/instinct-cli.py diff --git a/.claude/skills/continuous-learning-v2/scripts/test_parse_instinct.py b/claude/skills/continuous-learning-v2/scripts/test_parse_instinct.py similarity index 100% rename from .claude/skills/continuous-learning-v2/scripts/test_parse_instinct.py rename to claude/skills/continuous-learning-v2/scripts/test_parse_instinct.py diff --git a/.claude/skills/continuous-learning/SKILL.md b/claude/skills/continuous-learning/SKILL.md similarity index 96% rename from .claude/skills/continuous-learning/SKILL.md rename to claude/skills/continuous-learning/SKILL.md index 4527155..bd090b6 100644 --- a/.claude/skills/continuous-learning/SKILL.md +++ b/claude/skills/continuous-learning/SKILL.md @@ -33,7 +33,7 @@ Edit `config.json` to customize: "min_session_length": 10, "extraction_threshold": "medium", "auto_approve": false, - "learned_skills_path": "~/.claude/skills/learned/", + "learned_skills_path": "~/claude/skills/learned/", "patterns_to_detect": [ "error_resolution", "user_corrections", @@ -70,7 +70,7 @@ Add to your `~/.claude/settings.json`: "matcher": "*", "hooks": [{ "type": "command", - "command": "~/.claude/skills/continuous-learning/evaluate-session.sh" + "command": "~/claude/skills/continuous-learning/evaluate-session.sh" }] }] } diff --git a/.claude/skills/continuous-learning/config.json b/claude/skills/continuous-learning/config.json similarity index 100% rename from .claude/skills/continuous-learning/config.json rename to claude/skills/continuous-learning/config.json diff --git a/.claude/skills/continuous-learning/evaluate-session.sh b/claude/skills/continuous-learning/evaluate-session.sh similarity index 87% rename from .claude/skills/continuous-learning/evaluate-session.sh rename to claude/skills/continuous-learning/evaluate-session.sh index a5946fc..38de1db 100755 --- a/.claude/skills/continuous-learning/evaluate-session.sh +++ b/claude/skills/continuous-learning/evaluate-session.sh @@ -6,14 +6,14 @@ # - Stop runs once at session end (lightweight) # - UserPromptSubmit runs every message (heavy, adds latency) # -# Hook config (in ~/.claude/settings.json): +# Hook config (in ~/claude/settings.json): # { # "hooks": { # "Stop": [{ # "matcher": "*", # "hooks": [{ # "type": "command", -# "command": "~/.claude/skills/continuous-learning/evaluate-session.sh" +# "command": "~/claude/skills/continuous-learning/evaluate-session.sh" # }] # }] # } @@ -21,7 +21,7 @@ # # Patterns to detect: error_resolution, debugging_techniques, workarounds, project_specific # Patterns to ignore: simple_typos, one_time_fixes, external_api_issues -# Extracted skills saved to: ~/.claude/skills/learned/ +# Extracted skills saved to: ~/claude/skills/learned/ set -e @@ -36,7 +36,7 @@ if [ -f "$CONFIG_FILE" ]; then echo "[ContinuousLearning] jq is required to parse config.json but not installed, using defaults" >&2 else MIN_SESSION_LENGTH=$(jq -r '.min_session_length // 10' "$CONFIG_FILE") - LEARNED_SKILLS_PATH=$(jq -r '.learned_skills_path // "~/.claude/skills/learned/"' "$CONFIG_FILE" | sed "s|~|$HOME|") + LEARNED_SKILLS_PATH=$(jq -r '.learned_skills_path // "~/claude/skills/learned/"' "$CONFIG_FILE" | sed "s|~|$HOME|") fi fi diff --git a/.claude/skills/cost-aware-llm-pipeline/SKILL.md b/claude/skills/cost-aware-llm-pipeline/SKILL.md similarity index 100% rename from .claude/skills/cost-aware-llm-pipeline/SKILL.md rename to claude/skills/cost-aware-llm-pipeline/SKILL.md diff --git a/.claude/skills/cpp-coding-standards/SKILL.md b/claude/skills/cpp-coding-standards/SKILL.md similarity index 100% rename from .claude/skills/cpp-coding-standards/SKILL.md rename to claude/skills/cpp-coding-standards/SKILL.md diff --git a/.claude/skills/cpp-testing/SKILL.md b/claude/skills/cpp-testing/SKILL.md similarity index 100% rename from .claude/skills/cpp-testing/SKILL.md rename to claude/skills/cpp-testing/SKILL.md diff --git a/.claude/skills/customer-profiling/SKILL.md b/claude/skills/customer-profiling/SKILL.md similarity index 100% rename from .claude/skills/customer-profiling/SKILL.md rename to claude/skills/customer-profiling/SKILL.md diff --git a/.claude/skills/data-visualization/SKILL.md b/claude/skills/data-visualization/SKILL.md similarity index 100% rename from .claude/skills/data-visualization/SKILL.md rename to claude/skills/data-visualization/SKILL.md diff --git a/.claude/skills/database-migrations/SKILL.md b/claude/skills/database-migrations/SKILL.md similarity index 100% rename from .claude/skills/database-migrations/SKILL.md rename to claude/skills/database-migrations/SKILL.md diff --git a/.claude/skills/deployment-patterns/SKILL.md b/claude/skills/deployment-patterns/SKILL.md similarity index 100% rename from .claude/skills/deployment-patterns/SKILL.md rename to claude/skills/deployment-patterns/SKILL.md diff --git a/.claude/skills/django-patterns/SKILL.md b/claude/skills/django-patterns/SKILL.md similarity index 100% rename from .claude/skills/django-patterns/SKILL.md rename to claude/skills/django-patterns/SKILL.md diff --git a/.claude/skills/django-security/SKILL.md b/claude/skills/django-security/SKILL.md similarity index 100% rename from .claude/skills/django-security/SKILL.md rename to claude/skills/django-security/SKILL.md diff --git a/.claude/skills/django-tdd/SKILL.md b/claude/skills/django-tdd/SKILL.md similarity index 100% rename from .claude/skills/django-tdd/SKILL.md rename to claude/skills/django-tdd/SKILL.md diff --git a/.claude/skills/django-verification/SKILL.md b/claude/skills/django-verification/SKILL.md similarity index 100% rename from .claude/skills/django-verification/SKILL.md rename to claude/skills/django-verification/SKILL.md diff --git a/.claude/skills/docker-patterns/SKILL.md b/claude/skills/docker-patterns/SKILL.md similarity index 100% rename from .claude/skills/docker-patterns/SKILL.md rename to claude/skills/docker-patterns/SKILL.md diff --git a/.claude/skills/e2e-testing/SKILL.md b/claude/skills/e2e-testing/SKILL.md similarity index 100% rename from .claude/skills/e2e-testing/SKILL.md rename to claude/skills/e2e-testing/SKILL.md diff --git a/.claude/skills/eval-harness/SKILL.md b/claude/skills/eval-harness/SKILL.md similarity index 100% rename from .claude/skills/eval-harness/SKILL.md rename to claude/skills/eval-harness/SKILL.md diff --git a/.claude/skills/financial-modeling/SKILL.md b/claude/skills/financial-modeling/SKILL.md similarity index 100% rename from .claude/skills/financial-modeling/SKILL.md rename to claude/skills/financial-modeling/SKILL.md diff --git a/.claude/skills/foundation-models-on-device/SKILL.md b/claude/skills/foundation-models-on-device/SKILL.md similarity index 100% rename from .claude/skills/foundation-models-on-device/SKILL.md rename to claude/skills/foundation-models-on-device/SKILL.md diff --git a/.claude/skills/frontend-patterns/SKILL.md b/claude/skills/frontend-patterns/SKILL.md similarity index 100% rename from .claude/skills/frontend-patterns/SKILL.md rename to claude/skills/frontend-patterns/SKILL.md diff --git a/.claude/skills/golang-clean-arch/SKILL.md b/claude/skills/golang-clean-arch/SKILL.md similarity index 100% rename from .claude/skills/golang-clean-arch/SKILL.md rename to claude/skills/golang-clean-arch/SKILL.md diff --git a/.claude/skills/golang-patterns/SKILL.md b/claude/skills/golang-patterns/SKILL.md similarity index 100% rename from .claude/skills/golang-patterns/SKILL.md rename to claude/skills/golang-patterns/SKILL.md diff --git a/.claude/skills/golang-testing/SKILL.md b/claude/skills/golang-testing/SKILL.md similarity index 100% rename from .claude/skills/golang-testing/SKILL.md rename to claude/skills/golang-testing/SKILL.md diff --git a/.claude/skills/iterative-retrieval/SKILL.md b/claude/skills/iterative-retrieval/SKILL.md similarity index 100% rename from .claude/skills/iterative-retrieval/SKILL.md rename to claude/skills/iterative-retrieval/SKILL.md diff --git a/.claude/skills/java-coding-standards/SKILL.md b/claude/skills/java-coding-standards/SKILL.md similarity index 100% rename from .claude/skills/java-coding-standards/SKILL.md rename to claude/skills/java-coding-standards/SKILL.md diff --git a/.claude/skills/jpa-patterns/SKILL.md b/claude/skills/jpa-patterns/SKILL.md similarity index 100% rename from .claude/skills/jpa-patterns/SKILL.md rename to claude/skills/jpa-patterns/SKILL.md diff --git a/.claude/skills/liquid-glass-design/SKILL.md b/claude/skills/liquid-glass-design/SKILL.md similarity index 100% rename from .claude/skills/liquid-glass-design/SKILL.md rename to claude/skills/liquid-glass-design/SKILL.md diff --git a/.claude/skills/macro-sector-analysis/SKILL.md b/claude/skills/macro-sector-analysis/SKILL.md similarity index 100% rename from .claude/skills/macro-sector-analysis/SKILL.md rename to claude/skills/macro-sector-analysis/SKILL.md diff --git a/.claude/skills/market-sizing/SKILL.md b/claude/skills/market-sizing/SKILL.md similarity index 100% rename from .claude/skills/market-sizing/SKILL.md rename to claude/skills/market-sizing/SKILL.md diff --git a/.claude/skills/nutrient-document-processing/SKILL.md b/claude/skills/nutrient-document-processing/SKILL.md similarity index 100% rename from .claude/skills/nutrient-document-processing/SKILL.md rename to claude/skills/nutrient-document-processing/SKILL.md diff --git a/.claude/skills/postgres-patterns/SKILL.md b/claude/skills/postgres-patterns/SKILL.md similarity index 100% rename from .claude/skills/postgres-patterns/SKILL.md rename to claude/skills/postgres-patterns/SKILL.md diff --git a/.claude/skills/prioritization-framework/SKILL.md b/claude/skills/prioritization-framework/SKILL.md similarity index 100% rename from .claude/skills/prioritization-framework/SKILL.md rename to claude/skills/prioritization-framework/SKILL.md diff --git a/.claude/skills/project-guidelines-example/SKILL.md b/claude/skills/project-guidelines-example/SKILL.md similarity index 100% rename from .claude/skills/project-guidelines-example/SKILL.md rename to claude/skills/project-guidelines-example/SKILL.md diff --git a/.claude/skills/python-patterns/SKILL.md b/claude/skills/python-patterns/SKILL.md similarity index 100% rename from .claude/skills/python-patterns/SKILL.md rename to claude/skills/python-patterns/SKILL.md diff --git a/.claude/skills/python-testing/SKILL.md b/claude/skills/python-testing/SKILL.md similarity index 100% rename from .claude/skills/python-testing/SKILL.md rename to claude/skills/python-testing/SKILL.md diff --git a/.claude/skills/quant-screening/SKILL.md b/claude/skills/quant-screening/SKILL.md similarity index 100% rename from .claude/skills/quant-screening/SKILL.md rename to claude/skills/quant-screening/SKILL.md diff --git a/.claude/skills/regex-vs-llm-structured-text/SKILL.md b/claude/skills/regex-vs-llm-structured-text/SKILL.md similarity index 100% rename from .claude/skills/regex-vs-llm-structured-text/SKILL.md rename to claude/skills/regex-vs-llm-structured-text/SKILL.md diff --git a/.claude/skills/report-writer/SKILL.md b/claude/skills/report-writer/SKILL.md similarity index 100% rename from .claude/skills/report-writer/SKILL.md rename to claude/skills/report-writer/SKILL.md diff --git a/.claude/skills/search-first/SKILL.md b/claude/skills/search-first/SKILL.md similarity index 100% rename from .claude/skills/search-first/SKILL.md rename to claude/skills/search-first/SKILL.md diff --git a/.claude/skills/security-review/SKILL.md b/claude/skills/security-review/SKILL.md similarity index 100% rename from .claude/skills/security-review/SKILL.md rename to claude/skills/security-review/SKILL.md diff --git a/.claude/skills/security-review/cloud-infrastructure-security.md b/claude/skills/security-review/cloud-infrastructure-security.md similarity index 100% rename from .claude/skills/security-review/cloud-infrastructure-security.md rename to claude/skills/security-review/cloud-infrastructure-security.md diff --git a/.claude/skills/security-scan/SKILL.md b/claude/skills/security-scan/SKILL.md similarity index 93% rename from .claude/skills/security-scan/SKILL.md rename to claude/skills/security-scan/SKILL.md index dba372e..922c7f0 100644 --- a/.claude/skills/security-scan/SKILL.md +++ b/claude/skills/security-scan/SKILL.md @@ -1,6 +1,6 @@ --- name: security-scan -description: Scan your Claude Code configuration (.claude/ directory) for security vulnerabilities, misconfigurations, and injection risks using AgentShield. Checks CLAUDE.md, settings.json, MCP servers, hooks, and agent definitions. +description: Scan your Claude Code configuration (claude/ directory) for security vulnerabilities, misconfigurations, and injection risks using AgentShield. Checks CLAUDE.md, settings.json, MCP servers, hooks, and agent definitions. origin: ECC --- @@ -52,7 +52,7 @@ Run against the current project's `.claude/` directory: npx ecc-agentshield scan # Scan a specific path -npx ecc-agentshield scan --path /path/to/.claude +npx ecc-agentshield scan --path /path/to/claude # Scan with minimum severity filter npx ecc-agentshield scan --min-severity medium diff --git a/.claude/skills/sentiment-altdata/SKILL.md b/claude/skills/sentiment-altdata/SKILL.md similarity index 100% rename from .claude/skills/sentiment-altdata/SKILL.md rename to claude/skills/sentiment-altdata/SKILL.md diff --git a/.claude/skills/skill-stocktake/SKILL.md b/claude/skills/skill-stocktake/SKILL.md similarity index 99% rename from .claude/skills/skill-stocktake/SKILL.md rename to claude/skills/skill-stocktake/SKILL.md index 03bc497..f259e51 100644 --- a/.claude/skills/skill-stocktake/SKILL.md +++ b/claude/skills/skill-stocktake/SKILL.md @@ -160,7 +160,7 @@ Obtain via Bash: `date -u +%Y-%m-%dT%H:%M:%SZ`. Never use a date-only approximat }, "skills": { "skill-name": { - "path": "~/.claude/skills/skill-name/SKILL.md", + "path": "~/claude/skills/skill-name/SKILL.md", "verdict": "Keep", "reason": "Concrete, actionable, unique value for X workflow", "mtime": "2026-01-15T08:30:00Z" diff --git a/.claude/skills/skill-stocktake/scripts/quick-diff.sh b/claude/skills/skill-stocktake/scripts/quick-diff.sh similarity index 87% rename from .claude/skills/skill-stocktake/scripts/quick-diff.sh rename to claude/skills/skill-stocktake/scripts/quick-diff.sh index c145100..81772a3 100755 --- a/.claude/skills/skill-stocktake/scripts/quick-diff.sh +++ b/claude/skills/skill-stocktake/scripts/quick-diff.sh @@ -3,28 +3,28 @@ # Usage: quick-diff.sh RESULTS_JSON [CWD_SKILLS_DIR] # Output: JSON array of changed/new files to stdout (empty [] if no changes) # -# When CWD_SKILLS_DIR is omitted, defaults to $PWD/.claude/skills so the +# When CWD_SKILLS_DIR is omitted, defaults to $PWD/claude/skills so the # script always picks up project-level skills without relying on the caller. # # Environment: -# SKILL_STOCKTAKE_GLOBAL_DIR Override ~/.claude/skills (for testing only; +# SKILL_STOCKTAKE_GLOBAL_DIR Override ~/claude/skills (for testing only; # do not set in production — intended for bats tests) # SKILL_STOCKTAKE_PROJECT_DIR Override project dir detection (for testing only) set -euo pipefail RESULTS_JSON="${1:-}" -CWD_SKILLS_DIR="${SKILL_STOCKTAKE_PROJECT_DIR:-${2:-$PWD/.claude/skills}}" -GLOBAL_DIR="${SKILL_STOCKTAKE_GLOBAL_DIR:-$HOME/.claude/skills}" +CWD_SKILLS_DIR="${SKILL_STOCKTAKE_PROJECT_DIR:-${2:-$PWD/claude/skills}}" +GLOBAL_DIR="${SKILL_STOCKTAKE_GLOBAL_DIR:-$HOME/claude/skills}" if [[ -z "$RESULTS_JSON" || ! -f "$RESULTS_JSON" ]]; then echo "Error: RESULTS_JSON not found: ${RESULTS_JSON:-}" >&2 exit 1 fi -# Validate CWD_SKILLS_DIR looks like a .claude/skills path (defense-in-depth). +# Validate CWD_SKILLS_DIR looks like a claude/skills path (defense-in-depth). # Only warn when the path exists — a nonexistent path poses no traversal risk. -if [[ -n "$CWD_SKILLS_DIR" && -d "$CWD_SKILLS_DIR" && "$CWD_SKILLS_DIR" != */.claude/skills* ]]; then +if [[ -n "$CWD_SKILLS_DIR" && -d "$CWD_SKILLS_DIR" && "$CWD_SKILLS_DIR" != */claude/skills* ]]; then echo "Warning: CWD_SKILLS_DIR does not look like a .claude/skills path: $CWD_SKILLS_DIR" >&2 fi diff --git a/.claude/skills/skill-stocktake/scripts/save-results.sh b/claude/skills/skill-stocktake/scripts/save-results.sh similarity index 100% rename from .claude/skills/skill-stocktake/scripts/save-results.sh rename to claude/skills/skill-stocktake/scripts/save-results.sh diff --git a/.claude/skills/skill-stocktake/scripts/scan.sh b/claude/skills/skill-stocktake/scripts/scan.sh similarity index 91% rename from .claude/skills/skill-stocktake/scripts/scan.sh rename to claude/skills/skill-stocktake/scripts/scan.sh index 5f1d12d..e50e51b 100755 --- a/.claude/skills/skill-stocktake/scripts/scan.sh +++ b/claude/skills/skill-stocktake/scripts/scan.sh @@ -3,25 +3,25 @@ # Usage: scan.sh [CWD_SKILLS_DIR] # Output: JSON to stdout # -# When CWD_SKILLS_DIR is omitted, defaults to $PWD/.claude/skills so the +# When CWD_SKILLS_DIR is omitted, defaults to $PWD/claude/skills so the # script always picks up project-level skills without relying on the caller. # # Environment: -# SKILL_STOCKTAKE_GLOBAL_DIR Override ~/.claude/skills (for testing only; +# SKILL_STOCKTAKE_GLOBAL_DIR Override ~/claude/skills (for testing only; # do not set in production — intended for bats tests) # SKILL_STOCKTAKE_PROJECT_DIR Override project dir detection (for testing only) set -euo pipefail -GLOBAL_DIR="${SKILL_STOCKTAKE_GLOBAL_DIR:-$HOME/.claude/skills}" -CWD_SKILLS_DIR="${SKILL_STOCKTAKE_PROJECT_DIR:-${1:-$PWD/.claude/skills}}" +GLOBAL_DIR="${SKILL_STOCKTAKE_GLOBAL_DIR:-$HOME/claude/skills}" +CWD_SKILLS_DIR="${SKILL_STOCKTAKE_PROJECT_DIR:-${1:-$PWD/claude/skills}}" # Path to JSONL file containing tool-use observations (optional; used for usage frequency counts). # Override via SKILL_STOCKTAKE_OBSERVATIONS env var if your setup uses a different path. -OBSERVATIONS="${SKILL_STOCKTAKE_OBSERVATIONS:-$HOME/.claude/observations.jsonl}" +OBSERVATIONS="${SKILL_STOCKTAKE_OBSERVATIONS:-$HOME/claude/observations.jsonl}" -# Validate CWD_SKILLS_DIR looks like a .claude/skills path (defense-in-depth). +# Validate CWD_SKILLS_DIR looks like a claude/skills path (defense-in-depth). # Only warn when the path exists — a nonexistent path poses no traversal risk. -if [[ -n "$CWD_SKILLS_DIR" && -d "$CWD_SKILLS_DIR" && "$CWD_SKILLS_DIR" != */.claude/skills* ]]; then +if [[ -n "$CWD_SKILLS_DIR" && -d "$CWD_SKILLS_DIR" && "$CWD_SKILLS_DIR" != */claude/skills* ]]; then echo "Warning: CWD_SKILLS_DIR does not look like a .claude/skills path: $CWD_SKILLS_DIR" >&2 fi diff --git a/.claude/skills/springboot-patterns/SKILL.md b/claude/skills/springboot-patterns/SKILL.md similarity index 100% rename from .claude/skills/springboot-patterns/SKILL.md rename to claude/skills/springboot-patterns/SKILL.md diff --git a/.claude/skills/springboot-security/SKILL.md b/claude/skills/springboot-security/SKILL.md similarity index 100% rename from .claude/skills/springboot-security/SKILL.md rename to claude/skills/springboot-security/SKILL.md diff --git a/.claude/skills/springboot-tdd/SKILL.md b/claude/skills/springboot-tdd/SKILL.md similarity index 100% rename from .claude/skills/springboot-tdd/SKILL.md rename to claude/skills/springboot-tdd/SKILL.md diff --git a/.claude/skills/springboot-verification/SKILL.md b/claude/skills/springboot-verification/SKILL.md similarity index 100% rename from .claude/skills/springboot-verification/SKILL.md rename to claude/skills/springboot-verification/SKILL.md diff --git a/.claude/skills/strategic-compact/SKILL.md b/claude/skills/strategic-compact/SKILL.md similarity index 94% rename from .claude/skills/strategic-compact/SKILL.md rename to claude/skills/strategic-compact/SKILL.md index 67bbb31..ead23e6 100644 --- a/.claude/skills/strategic-compact/SKILL.md +++ b/claude/skills/strategic-compact/SKILL.md @@ -46,11 +46,11 @@ Add to your `~/.claude/settings.json`: "PreToolUse": [ { "matcher": "Edit", - "hooks": [{ "type": "command", "command": "node ~/.claude/skills/strategic-compact/suggest-compact.js" }] + "hooks": [{ "type": "command", "command": "node ~/claude/skills/strategic-compact/suggest-compact.js" }] }, { "matcher": "Write", - "hooks": [{ "type": "command", "command": "node ~/.claude/skills/strategic-compact/suggest-compact.js" }] + "hooks": [{ "type": "command", "command": "node ~/claude/skills/strategic-compact/suggest-compact.js" }] } ] } diff --git a/.claude/skills/strategic-compact/suggest-compact.sh b/claude/skills/strategic-compact/suggest-compact.sh similarity index 93% rename from .claude/skills/strategic-compact/suggest-compact.sh rename to claude/skills/strategic-compact/suggest-compact.sh index 38f5aa9..4133a4f 100755 --- a/.claude/skills/strategic-compact/suggest-compact.sh +++ b/claude/skills/strategic-compact/suggest-compact.sh @@ -8,14 +8,14 @@ # - Compact after exploration, before execution # - Compact after completing a milestone, before starting next # -# Hook config (in ~/.claude/settings.json): +# Hook config (in ~/claude/settings.json): # { # "hooks": { # "PreToolUse": [{ # "matcher": "Edit|Write", # "hooks": [{ # "type": "command", -# "command": "~/.claude/skills/strategic-compact/suggest-compact.sh" +# "command": "~/claude/skills/strategic-compact/suggest-compact.sh" # }] # }] # } diff --git a/.claude/skills/strategy-synthesis/SKILL.md b/claude/skills/strategy-synthesis/SKILL.md similarity index 100% rename from .claude/skills/strategy-synthesis/SKILL.md rename to claude/skills/strategy-synthesis/SKILL.md diff --git a/.claude/skills/swift-actor-persistence/SKILL.md b/claude/skills/swift-actor-persistence/SKILL.md similarity index 100% rename from .claude/skills/swift-actor-persistence/SKILL.md rename to claude/skills/swift-actor-persistence/SKILL.md diff --git a/.claude/skills/swift-concurrency-6-2/SKILL.md b/claude/skills/swift-concurrency-6-2/SKILL.md similarity index 100% rename from .claude/skills/swift-concurrency-6-2/SKILL.md rename to claude/skills/swift-concurrency-6-2/SKILL.md diff --git a/.claude/skills/swift-protocol-di-testing/SKILL.md b/claude/skills/swift-protocol-di-testing/SKILL.md similarity index 100% rename from .claude/skills/swift-protocol-di-testing/SKILL.md rename to claude/skills/swift-protocol-di-testing/SKILL.md diff --git a/.claude/skills/swiftui-patterns/SKILL.md b/claude/skills/swiftui-patterns/SKILL.md similarity index 100% rename from .claude/skills/swiftui-patterns/SKILL.md rename to claude/skills/swiftui-patterns/SKILL.md diff --git a/.claude/skills/tdd-workflow/SKILL.md b/claude/skills/tdd-workflow/SKILL.md similarity index 100% rename from .claude/skills/tdd-workflow/SKILL.md rename to claude/skills/tdd-workflow/SKILL.md diff --git a/.claude/skills/user-voice-mining/SKILL.md b/claude/skills/user-voice-mining/SKILL.md similarity index 100% rename from .claude/skills/user-voice-mining/SKILL.md rename to claude/skills/user-voice-mining/SKILL.md diff --git a/.claude/skills/valuation-analysis/SKILL.md b/claude/skills/valuation-analysis/SKILL.md similarity index 100% rename from .claude/skills/valuation-analysis/SKILL.md rename to claude/skills/valuation-analysis/SKILL.md diff --git a/.claude/skills/verification-loop/SKILL.md b/claude/skills/verification-loop/SKILL.md similarity index 100% rename from .claude/skills/verification-loop/SKILL.md rename to claude/skills/verification-loop/SKILL.md diff --git a/.claude/skills/visa-doc-translate/README.md b/claude/skills/visa-doc-translate/README.md similarity index 100% rename from .claude/skills/visa-doc-translate/README.md rename to claude/skills/visa-doc-translate/README.md diff --git a/.claude/skills/visa-doc-translate/SKILL.md b/claude/skills/visa-doc-translate/SKILL.md similarity index 100% rename from .claude/skills/visa-doc-translate/SKILL.md rename to claude/skills/visa-doc-translate/SKILL.md diff --git a/.claude/skills/web-research/SKILL.md b/claude/skills/web-research/SKILL.md similarity index 100% rename from .claude/skills/web-research/SKILL.md rename to claude/skills/web-research/SKILL.md diff --git a/.claude/skills/web-to-markdown/SKILL.md b/claude/skills/web-to-markdown/SKILL.md similarity index 96% rename from .claude/skills/web-to-markdown/SKILL.md rename to claude/skills/web-to-markdown/SKILL.md index c814cbc..dbcf882 100644 --- a/.claude/skills/web-to-markdown/SKILL.md +++ b/claude/skills/web-to-markdown/SKILL.md @@ -23,7 +23,7 @@ pip install requests beautifulsoup4 html2text lxml ### 模式一:單頁轉換 ```bash -python .claude/skills/web-to-markdown/scripts/web_to_md.py \ +python claude/skills/web-to-markdown/scripts/web_to_md.py \ --url "https://example.com/features" \ --output "scraped/features.md" ``` @@ -31,7 +31,7 @@ python .claude/skills/web-to-markdown/scripts/web_to_md.py \ ### 模式二:爬蟲模式(追蹤同域連結) ```bash -python .claude/skills/web-to-markdown/scripts/web_to_md.py \ +python claude/skills/web-to-markdown/scripts/web_to_md.py \ --url "https://example.com" \ --crawl \ --depth 2 \ diff --git a/.claude/skills/web-to-markdown/scripts/web_to_md.py b/claude/skills/web-to-markdown/scripts/web_to_md.py similarity index 100% rename from .claude/skills/web-to-markdown/scripts/web_to_md.py rename to claude/skills/web-to-markdown/scripts/web_to_md.py