--- name: project description: "TwinMind project engine — the hub for goal-driven work with a clear start and end. Use this skill for any project lifecycle operation: create, pause, resume, complete, archive. Also handles project-scoped actions and tasks (adding/completing actions within a project, managing project task lists), progress logging, and linking cards to projects. Triggers: '建立專案', 'create project', '暫停', 'pause', '恢復', 'resume', '完成專案', 'complete', '歸檔', 'archive', '進度', 'log', '列出專案', 'list projects', '專案狀況', or when the user mentions a specific project name in combination with an action/task operation (e.g., '在 build-blog 加個 action'). This is the central skill for anything that references a named project." license: MIT metadata: author: twinmind version: "1.0" --- 管理知識庫中的專案——從建立到歸檔的完整生命週期。專案是行動導向的容器,將相關卡片組織在共同目標下。與卡片(知識)不同,專案有明確的開始和結束。 一致性驗證由 PostToolUse hooks 自動處理。狀態變更操作完成後透過 Bash tool 執行 `node ${CLAUDE_PLUGIN_ROOT}/scripts/post-op.mjs --layer action` 觸發 post-op pipeline。唯讀查詢不需要。 ### Post-op 執行方式 透過 Bash tool 執行: ```bash node ${CLAUDE_PLUGIN_ROOT}/scripts/post-op.mjs --layer action --event '{"event_type":"","event_context":{"project_id":"","project_title":""}}' ``` 腳本同步執行,執行完成後再回應使用者。 ## 專案操作 所有生命週期操作的完整步驟程序(含狀態轉換表、檔案結構、卡片關聯、Action/Task 管理),請讀取 `references/project-lifecycle.md`。 ### 狀態變更操作(需執行 post-op(Bash tool)) **建立專案**:建立 `PARA/Projects/<name>/` 目錄,含 `goal.md`(frontmatter + 目標描述)、`log.md`、`actions.md`、`tasks.md`。更新 `PARA/Projects/_index.md` 和 `vault-index.json` 的 `projects`(含 `actions: []`、`tasks_total: 0`、`tasks_done: 0`)。 **暫停 / 恢復**:驗證狀態轉換合法(見 `references/project-lifecycle.md` 狀態轉換表),更新 `goal.md` frontmatter 和 `vault-index.json`。 **完成**:驗證狀態轉換合法,更新 `goal.md` 加 `completed: <date>`。**觸發反思鉤**——主動詢問使用者「做完這個專案你有什麼收穫或教訓?要建卡嗎?」。使用者回答則調用 `twinmind:capture` 建卡(source 指向 goal.md),使用者拒絕則跳過。反思鉤是 opt-out 設計。 **歸檔**:移動至 `PARA/Archive/<name>/`(含所有檔案:goal.md、log.md、actions.md、tasks.md),從 `projects` 索引移除。非 completed 狀態需確認。 **連結/取消連結卡片**:更新卡片 frontmatter 的 `related_projects` 和 `vault-index.json` 的 `card_refs`。 **進度紀錄**:向 `log.md` 追加日期區塊。任何狀態皆可紀錄。 ### 專案內 Action 操作(需執行 post-op(Bash tool)) **新增 Action**:在 `PARA/Projects/<name>/actions.md` 追加 H2 區塊(含 status: active、created、description),更新 `vault-index.json` 的 `projects[name].actions` 陣列。 **完成 Action**:將 actions.md 中對應 H2 區塊的 status 改為 done、填入 completed 日期。**觸發反思鉤**——同完成專案流程。更新 `vault-index.json`。 **列出 Actions**:讀取 `actions.md` 顯示所有 action 的標題和狀態。 ### 專案內 Task 操作(需執行 post-op(Bash tool)) **新增 Task(專案直屬)**:在 `PARA/Projects/<name>/tasks.md` 追加 `- [ ] <description>`。更新 `vault-index.json` 的 `projects[name].tasks_total`。 **新增 Task(Action 內)**:在 `actions.md` 中對應 action 的 `### Tasks` 區塊追加 checklist item。更新 `vault-index.json` 的 action `tasks_total` 和 project `tasks_total`。 **完成 Task**:將 `[ ]` 改為 `[x]`,追加完成日期。更新 `vault-index.json` 的 `tasks_done`。 **刪除 Task**:移除 checklist 行。更新 `vault-index.json` 的 `tasks_total`。 ### 唯讀查詢(不需 post-op) 所有查詢從 `vault-index.json` 的 `projects` 執行,不掃描檔案。 **列出所有專案**:依狀態分組(active → paused → completed),顯示名稱、狀態、card_refs、action 數、task 進度。空態:「目前沒有專案」。 **依狀態篩選**:篩選 active/paused/completed。 **查看詳情**:讀取 `goal.md` + `log.md` + `actions.md` + `tasks.md`,顯示標題、狀態、截止日、目標、最近 5 筆進度、關聯卡片數、action 列表、task 進度。