@geekbeer/minion 3.59.8 → 3.60.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/api-reference.md +139 -4
- package/docs/task-guides.md +69 -0
- package/linux/routes/chat.js +4 -1
- package/package.json +1 -1
- package/rules/core.md +4 -3
- package/win/routes/chat.js +4 -1
package/docs/api-reference.md
CHANGED
|
@@ -1046,14 +1046,54 @@ Claudeへの注入例:
|
|
|
1046
1046
|
- Linuxミニオン: `tmux ls | grep '^bt-'` でセッション一覧。WSターミナルからアタッチ可能。
|
|
1047
1047
|
- Windowsミニオン: `wsl tmux ls | grep '^bt-'` で確認 (or HQ ダッシュボードのターミナル一覧で `wsl-tmux` タイプとして表示)。
|
|
1048
1048
|
|
|
1049
|
-
|
|
1049
|
+
ミニオン用スプリント API (v3.59.9〜):
|
|
1050
1050
|
|
|
1051
1051
|
| Method | Endpoint | Description |
|
|
1052
1052
|
|--------|----------|-------------|
|
|
1053
|
-
| GET | `/api/projects/:projectId/sprints` |
|
|
1053
|
+
| GET | `/api/minion/projects/:projectId/sprints` | 一覧 (`?status=planned\|active\|completed` で絞り込み可) |
|
|
1054
|
+
| POST | `/api/minion/projects/:projectId/sprints` | 作成 (作成者は `created_by_minion_id` に記録される) |
|
|
1055
|
+
| GET | `/api/minion/projects/:projectId/sprints/:sprintId` | 詳細 |
|
|
1056
|
+
| PATCH | `/api/minion/projects/:projectId/sprints/:sprintId` | 更新 (status遷移含む) |
|
|
1057
|
+
| DELETE | `/api/minion/projects/:projectId/sprints/:sprintId` | 削除 (`planned` のみ可) |
|
|
1054
1058
|
|
|
1055
|
-
|
|
1056
|
-
|
|
1059
|
+
POST body:
|
|
1060
|
+
```json
|
|
1061
|
+
{
|
|
1062
|
+
"name": "Sprint 1", // required
|
|
1063
|
+
"goal": "結合テスト完了" // optional
|
|
1064
|
+
}
|
|
1065
|
+
```
|
|
1066
|
+
作成時の `status` は常に `planned`。HQダッシュボードで一覧/編集できる。
|
|
1067
|
+
|
|
1068
|
+
PATCH body (status 遷移):
|
|
1069
|
+
```json
|
|
1070
|
+
// planned -> active
|
|
1071
|
+
{ "status": "active" }
|
|
1072
|
+
// → タスクが1件もないと 422 {"error": "sprint_has_no_tasks"}
|
|
1073
|
+
// → DoR 違反 (全タスクに assignee_minion_id + 1件以上の acceptance_criteria が必要) なら
|
|
1074
|
+
// 422 {"error": "definition_of_ready_unmet", "violations": [{task_id, title, missing[]}]}
|
|
1075
|
+
// → 別の active スプリントが既にあると 409 (active_sprint がエラーに同梱される)
|
|
1076
|
+
// 成功時は started_at が自動セットされる
|
|
1077
|
+
|
|
1078
|
+
// active -> completed
|
|
1079
|
+
{ "status": "completed", "unfinished_tasks_action": "return_to_backlog" }
|
|
1080
|
+
// or
|
|
1081
|
+
{ "status": "completed", "unfinished_tasks_action": "carry_over" }
|
|
1082
|
+
// → carry_over の場合、未完タスクは最新の planned スプリントに移動 (無い場合 422)
|
|
1083
|
+
// → return_to_backlog (デフォルト) の場合、未完タスクは sprint_id=null & status='backlog' に戻る
|
|
1084
|
+
// 成功時は completed_at が自動セットされる
|
|
1085
|
+
```
|
|
1086
|
+
|
|
1087
|
+
その他の更新項目 (status と独立に同一PATCHで可):
|
|
1088
|
+
- `name` (空文字不可)
|
|
1089
|
+
- `goal` (null可)
|
|
1090
|
+
|
|
1091
|
+
**重要なルール:**
|
|
1092
|
+
- `planned -> active` または `active -> completed` 以外の status 遷移は 400。
|
|
1093
|
+
- DELETE は `planned` 状態のみ許可 (`active`/`completed` は不可)。
|
|
1094
|
+
- 削除しても紐づくタスクは残る (`sprint_id` だけ NULL になる)。
|
|
1095
|
+
|
|
1096
|
+
状況確認用には標準のタスクAPIで `?sprint_id=<uuid>` を使えば所属タスクを取得できる。
|
|
1057
1097
|
|
|
1058
1098
|
### Project Milestones
|
|
1059
1099
|
|
|
@@ -2003,3 +2043,98 @@ hq note search <project_id> "キーワード"
|
|
|
2003
2043
|
参加中の操作 (GET state / long-poll messages / speak / leave / end / heartbeat) は MCP ツール (`meeting_get_state`, `meeting_wait_for_next_message`, `meeting_speak`, `meeting_leave`, `meeting_end`) として claude に公開されるため、直接叩く必要はない。会議の**作成**だけはルーティン/スキルから明示的に叩く必要がある (作成後は HQ がプッシュした招待で各ミニオンに mt-* tmux セッションが立ち上がる)。
|
|
2004
2044
|
|
|
2005
2045
|
**leave と end の違い**: `meeting_leave` は自分だけ退席するアクション (ルームは残る)、`meeting_end` (DELETE) はルームごと削除して全員解散させるアクション (ホストミニオン限定)。自分が招集した会議が終わったら必ず `meeting_end` を呼ばないとルームが孤児として残る。
|
|
2046
|
+
|
|
2047
|
+
### Workspace Drive (HQ, experimental)
|
|
2048
|
+
|
|
2049
|
+
ワークスペース単位のファイル管理機能。`experimental_drive` フィーチャーフラグが ON のワークスペースで利用可能。すべてのエンドポイントは `Authorization: Bearer ${API_TOKEN}` + ワークスペースメンバーであるミニオンに限定。
|
|
2050
|
+
|
|
2051
|
+
| Method | Endpoint | Description |
|
|
2052
|
+
|--------|----------|-------------|
|
|
2053
|
+
| GET | `/api/minion/workspaces/:id/drive/files` | ファイル一覧。Query: `?folder_id=<uuid\|null>`, `?search=<keyword>` |
|
|
2054
|
+
| POST | `/api/minion/workspaces/:id/drive/files` | ファイルアップロード (`multipart/form-data`: `file`, `folder_id?`, `name?`) |
|
|
2055
|
+
| GET | `/api/minion/workspaces/:id/drive/files/:fileId` | ファイル metadata |
|
|
2056
|
+
| GET | `/api/minion/workspaces/:id/drive/files/:fileId/download` | 60秒有効な signed URL を返す |
|
|
2057
|
+
|
|
2058
|
+
### Slide Decks 🧪 (HQ, experimental)
|
|
2059
|
+
|
|
2060
|
+
Drive 内のスライドデッキ。**スライドは Storage ではなく DB テーブルで管理** され、要素単位で API を叩ける。多人数同時編集とミニオン操作を前提に、各 PATCH は楽観ロック (`version` 必須) でガードされる。
|
|
2061
|
+
|
|
2062
|
+
**前提**: 対象ワークスペースで `experimental_drive` が ON、ミニオンが `workspace_minions` のメンバーであること。
|
|
2063
|
+
|
|
2064
|
+
#### デッキ操作
|
|
2065
|
+
|
|
2066
|
+
| Method | Endpoint | Description |
|
|
2067
|
+
|--------|----------|-------------|
|
|
2068
|
+
| GET | `/api/minion/workspaces/:id/drive/decks` | デッキ一覧 (非ゴミ箱、最大200件) |
|
|
2069
|
+
| POST | `/api/minion/workspaces/:id/drive/decks` | デッキ作成。Body: `{name, folder_id?, width?, height?}`。初期空白スライド1枚付き |
|
|
2070
|
+
| GET | `/api/minion/workspaces/:id/drive/decks/:deckId` | デッキメタ + スライド一覧 (要素は含まれない、軽量レスポンス)。`deckId` には `slide_decks.id` か `workspace_files.id` どちらでも可 |
|
|
2071
|
+
| DELETE | `/api/minion/workspaces/:id/drive/decks/:deckId` | ソフト削除 (Drive ゴミ箱へ移動) |
|
|
2072
|
+
|
|
2073
|
+
POST レスポンス例:
|
|
2074
|
+
```json
|
|
2075
|
+
{
|
|
2076
|
+
"deck": { "id": "...", "workspace_file_id": "...", "width": 1920, "height": 1080 },
|
|
2077
|
+
"workspaceFileId": "<file-uuid>",
|
|
2078
|
+
"firstSlideId": "<slide-uuid>",
|
|
2079
|
+
"mime_type": "application/vnd.geekbeer.slides"
|
|
2080
|
+
}
|
|
2081
|
+
```
|
|
2082
|
+
|
|
2083
|
+
#### スライド操作
|
|
2084
|
+
|
|
2085
|
+
| Method | Endpoint | Description |
|
|
2086
|
+
|--------|----------|-------------|
|
|
2087
|
+
| POST | `/api/minion/workspaces/:id/drive/decks/:deckId/slides` | スライド追加。Body: `{position?, background?, speaker_notes?}` (`position` 省略時は末尾) |
|
|
2088
|
+
| GET | `/api/minion/workspaces/:id/drive/slides/:slideId` | スライド + 全要素 (z-order 昇順) |
|
|
2089
|
+
| PATCH | `/api/minion/workspaces/:id/drive/slides/:slideId` | スライド更新。Body: `{version, background?, speaker_notes?, order_key?, is_skipped?}`。`version` 必須。`is_skipped=true` でプレゼン時に飛ばされる(順序は保持) |
|
|
2090
|
+
| DELETE | `/api/minion/workspaces/:id/drive/slides/:slideId` | スライド削除 (要素は CASCADE) |
|
|
2091
|
+
|
|
2092
|
+
#### 要素操作 (text / image)
|
|
2093
|
+
|
|
2094
|
+
| Method | Endpoint | Description |
|
|
2095
|
+
|--------|----------|-------------|
|
|
2096
|
+
| POST | `/api/minion/workspaces/:id/drive/slides/:slideId/elements` | 要素追加。Body: `{element_type: "text"\|"image", x, y, width, height, rotation?, z_index?, data}` |
|
|
2097
|
+
| PATCH | `/api/minion/workspaces/:id/drive/elements/:elementId` | 要素更新。Body: `{version, x?, y?, width?, height?, rotation?, data?, order_key?}`。`version` 必須、`element_type` は不変 |
|
|
2098
|
+
| DELETE | `/api/minion/workspaces/:id/drive/elements/:elementId` | 要素削除 |
|
|
2099
|
+
|
|
2100
|
+
#### data ペイロード形式
|
|
2101
|
+
|
|
2102
|
+
**text:**
|
|
2103
|
+
```json
|
|
2104
|
+
{
|
|
2105
|
+
"content": "Hello",
|
|
2106
|
+
"style": {
|
|
2107
|
+
"fontFamily": "Inter, sans-serif",
|
|
2108
|
+
"fontSize": 32,
|
|
2109
|
+
"fontWeight": 400,
|
|
2110
|
+
"fontStyle": "normal",
|
|
2111
|
+
"color": "#111827",
|
|
2112
|
+
"textAlign": "left",
|
|
2113
|
+
"lineHeight": 1.4
|
|
2114
|
+
}
|
|
2115
|
+
}
|
|
2116
|
+
```
|
|
2117
|
+
|
|
2118
|
+
**image:**
|
|
2119
|
+
```json
|
|
2120
|
+
{ "src": "<workspace_files.id>", "fit": "contain" }
|
|
2121
|
+
```
|
|
2122
|
+
|
|
2123
|
+
`src` が UUID 形式なら表示時に Drive 内画像として解決される。外部URLも指定可。
|
|
2124
|
+
|
|
2125
|
+
#### 座標系
|
|
2126
|
+
|
|
2127
|
+
- 内部座標は **1920×1080 ピクセル固定** (デッキの `width` / `height` で参照可能)。左上が原点
|
|
2128
|
+
- 表示時は CSS transform で viewport にフィットする
|
|
2129
|
+
- `rotation` は中心基準の度数 (MVP では UI 未対応だが API では受け付ける)
|
|
2130
|
+
|
|
2131
|
+
#### エラーコード
|
|
2132
|
+
|
|
2133
|
+
| Code | 意味 |
|
|
2134
|
+
|------|------|
|
|
2135
|
+
| 400 | リクエスト不正 (`version` 欠落、`element_type` 不明、座標が数値でない等) |
|
|
2136
|
+
| 403 | `drive_not_enabled` (ワークスペースで Drive 未有効化) または `Minion is not a member` |
|
|
2137
|
+
| 404 | `not_found` (ID 間違いか別ワークスペースのリソース) |
|
|
2138
|
+
| 409 | `version_conflict` (他者の編集と衝突)、`name_conflict`、`order_key_collision` (同時挿入の競合、再送可) |
|
|
2139
|
+
| 410 | `deck_in_trash` (デッキがゴミ箱にある) |
|
|
2140
|
+
|
package/docs/task-guides.md
CHANGED
|
@@ -702,6 +702,44 @@ curl -X PATCH "$HQ_URL/api/minion/projects/<project-id>/milestones/<m-id>" \
|
|
|
702
702
|
-d '{"status":"in_progress"}'
|
|
703
703
|
```
|
|
704
704
|
|
|
705
|
+
#### 4. スプリント管理 (v3.59.9〜)
|
|
706
|
+
|
|
707
|
+
スプリントはアジャイル運用の単位で、`planned -> active -> completed` の3状態を持つ。
|
|
708
|
+
1プロジェクトにつき `active` は1つだけ。スプリントを `active` にするとボードタスクの
|
|
709
|
+
自動着手 (`board-task-poller`) が起動する。
|
|
710
|
+
|
|
711
|
+
```bash
|
|
712
|
+
# 1. プランドスプリントを作成
|
|
713
|
+
curl -X POST "$HQ_URL/api/minion/projects/<project-id>/sprints" \
|
|
714
|
+
-H "Authorization: Bearer $API_TOKEN" -H "Content-Type: application/json" \
|
|
715
|
+
-d '{"name":"Sprint 1","goal":"MVP のログイン/サインアップ実装完了"}'
|
|
716
|
+
# レスポンスの id を <sprint-id> として控える
|
|
717
|
+
|
|
718
|
+
# 2. スプリントにタスクをアサイン (タスク作成時 or 更新時)
|
|
719
|
+
curl -X PATCH "$HQ_URL/api/minion/projects/<project-id>/tasks/<task-id>" \
|
|
720
|
+
-H "Authorization: Bearer $API_TOKEN" -H "Content-Type: application/json" \
|
|
721
|
+
-d '{"sprint_id":"<sprint-id>","acceptance_criteria":[{"id":"...","text":"...","checked":false}]}'
|
|
722
|
+
|
|
723
|
+
# 3. スプリント開始 (DoR チェックが入る — 全タスクに assignee_minion_id + acceptance_criteria 必須)
|
|
724
|
+
curl -X PATCH "$HQ_URL/api/minion/projects/<project-id>/sprints/<sprint-id>" \
|
|
725
|
+
-H "Authorization: Bearer $API_TOKEN" -H "Content-Type: application/json" \
|
|
726
|
+
-d '{"status":"active"}'
|
|
727
|
+
# 422 {"error":"sprint_has_no_tasks"} → タスクを1件以上追加してから再試行
|
|
728
|
+
# 422 {"error":"definition_of_ready_unmet","violations":[...]} → violations[] の missing を埋めてから再試行
|
|
729
|
+
|
|
730
|
+
# 4. スプリント完了 (未完タスクをバックログに戻すか、次の planned スプリントに持ち越す)
|
|
731
|
+
curl -X PATCH "$HQ_URL/api/minion/projects/<project-id>/sprints/<sprint-id>" \
|
|
732
|
+
-H "Authorization: Bearer $API_TOKEN" -H "Content-Type: application/json" \
|
|
733
|
+
-d '{"status":"completed","unfinished_tasks_action":"return_to_backlog"}'
|
|
734
|
+
# unfinished_tasks_action: "carry_over" にすると最新の planned スプリントへ移動 (無ければ 422)
|
|
735
|
+
```
|
|
736
|
+
|
|
737
|
+
**スプリント運用のガイドライン:**
|
|
738
|
+
- スプリントを `active` 化する前に、所属タスクが全て **assignee_minion_id を持ち、かつ acceptance_criteria が1件以上** あることを確認する (DoR)。違反タスクは PATCH レスポンスの `violations[]` に列挙される。
|
|
739
|
+
- 既に別のスプリントが `active` だと 409 が返る (`active_sprint` フィールドに既存スプリントが入る)。先にそれを `completed` にする必要がある。
|
|
740
|
+
- DELETE は `planned` 状態のみ可。`active` や `completed` のスプリントは削除できない。
|
|
741
|
+
- スプリント完了時、未完タスクのデフォルト挙動は `return_to_backlog` (status=`backlog`、sprint_id=null)。
|
|
742
|
+
|
|
705
743
|
### Engineer ロールの典型操作
|
|
706
744
|
|
|
707
745
|
#### 1. 自分にアサインされたタスクを取得
|
|
@@ -853,6 +891,37 @@ meeting_end() # DELETE /api/minion/meetings/:id を裏で叩く
|
|
|
853
891
|
# → 全参加ミニオンに終了通知が push され、各 mt-* tmux が終了する
|
|
854
892
|
```
|
|
855
893
|
|
|
894
|
+
## スライド作成・編集 🧪 (experimental)
|
|
895
|
+
|
|
896
|
+
ワークスペース Drive にスライドデッキを作成・編集する。「資料作って」「スライドにまとめて」と頼まれた時はこのワークフローを使う。専用スキル `create-slide-deck` / `edit-slide-deck` が用意されており、これらが優先。スキルが手元に無い場合は API 仕様 (`Slide Decks` セクション) を直接叩く。
|
|
897
|
+
|
|
898
|
+
### 新規作成 (推奨フロー)
|
|
899
|
+
|
|
900
|
+
1. **アウトラインを先に決める。** 1枚あたりのタイトルと主要メッセージを箇条書きにする。長くても5-10スライド程度を目安に
|
|
901
|
+
2. デッキを作成: `POST /api/minion/workspaces/:id/drive/decks` (Body: `{name}`)。初期空白スライド1枚が `firstSlideId` で返る
|
|
902
|
+
3. 各スライドに **テキスト要素** を1つずつ追加: `POST .../slides/:slideId/elements`
|
|
903
|
+
- タイトル: `{x: 160, y: 80, width: 1600, height: 160, data: {content, style: {fontSize: 56, fontWeight: 700, ...}}}`
|
|
904
|
+
- 本文: `{x: 160, y: 280, width: 1600, height: 700, data: {content, style: {fontSize: 32, ...}}}`
|
|
905
|
+
4. 2枚目以降: `POST .../decks/:deckId/slides` でスライドを追加し、手順3を繰り返す
|
|
906
|
+
5. 完了したらノートまたはスレッドで起票者にデッキ URL (`${HQ_URL}/drive/slides/<workspaceFileId>`) を共有する
|
|
907
|
+
|
|
908
|
+
座標系は 1920×1080 ピクセル固定。詳細は `~/.minion/docs/api-reference.md` の `Slide Decks` セクションを参照。
|
|
909
|
+
|
|
910
|
+
### 部分編集
|
|
911
|
+
|
|
912
|
+
1. `GET .../decks/:deckId` でスライド一覧 (要素なし、軽量) を取得
|
|
913
|
+
2. 対象スライドの中身を `GET .../slides/:slideId` で取得 (要素の `version` も返る)
|
|
914
|
+
3. 編集対象の要素を `PATCH .../elements/:elementId` で更新。**Body に `version` 必須**
|
|
915
|
+
4. 409 (`version_conflict`) が返ったら手順2から再取得してリトライ
|
|
916
|
+
|
|
917
|
+
### 注意点
|
|
918
|
+
|
|
919
|
+
- **JSON 全体を送る方式ではない。** 1要素単位で PATCH するため、ミニオンが扱うコンテキストは常に小さい
|
|
920
|
+
- **1テキスト要素 = 単一スタイル。** 部分太字などはできない。スタイルを変えたい区間は別要素として配置する
|
|
921
|
+
- **画像は Drive にアップロード済みであることが前提。** `POST .../drive/files` で画像をアップロードした後、その `workspace_files.id` を `data.src` に貼る
|
|
922
|
+
- **削除はソフト削除** (`DELETE .../decks/:deckId` で Drive ゴミ箱に入る)。誤削除は UI から復元できる
|
|
923
|
+
- スライドマスター・テーマ・トランジション・アニメーションは MVP ではサポート外
|
|
924
|
+
|
|
856
925
|
## ツール・MCPサーバーのインストール
|
|
857
926
|
|
|
858
927
|
スキルが `requires` で宣言している MCP サーバーや CLI ツールが不足している場合は、`~/.minion/docs/environment-setup.md` の手順に従ってインストールする。
|
package/linux/routes/chat.js
CHANGED
|
@@ -458,8 +458,11 @@ async function buildContextPrefix(message, context, sessionId, workspaceId, refe
|
|
|
458
458
|
` POST \$HQ_URL/api/minion/projects/${context.projectId}/tasks # 作成 (body: title, description?, status?, priority?, milestone_id?, sprint_id?, parent_task_id?, assignee_minion_id?, due_date?, acceptance_criteria?)`,
|
|
459
459
|
` PATCH \$HQ_URL/api/minion/projects/${context.projectId}/tasks/<id> # 更新 (status変更で status_changed_at がサーバ自動更新、acceptance_criteria/sprint_id も更新可。AC更新時は既存idを保持)`,
|
|
460
460
|
` GET \$HQ_URL/api/minion/projects/${context.projectId}/milestones # マイルストーン一覧`,
|
|
461
|
+
` GET \$HQ_URL/api/minion/projects/${context.projectId}/sprints # スプリント一覧 (?status=planned|active|completed で絞り込み可)`,
|
|
462
|
+
` POST \$HQ_URL/api/minion/projects/${context.projectId}/sprints # 作成 (body: name, goal?) — 初期 status は planned`,
|
|
463
|
+
` PATCH \$HQ_URL/api/minion/projects/${context.projectId}/sprints/<id># 更新 (status遷移: planned→active で DoR 検証、active→completed で unfinished_tasks_action=carry_over|return_to_backlog 指定可)`,
|
|
461
464
|
` GET \$HQ_URL/api/minion/projects/${context.projectId}/health # 健康度サマリ (overdue/stalled/マイルストーン進捗。progress_pct は leaf タスク基準)`,
|
|
462
|
-
`タスクは5段階Kanban (backlog→todo→doing→review→done)、親子は2階層まで(孫不可)。priority は low|normal|high|urgent (可視化+フィルタ用)。親EPICに milestone_id
|
|
465
|
+
`タスクは5段階Kanban (backlog→todo→doing→review→done)、親子は2階層まで(孫不可)。priority は low|normal|high|urgent (可視化+フィルタ用)。親EPICに milestone_id を付ければ子タスクも進捗に自動反映される。スプリントは1プロジェクトにつき active=1つだけ、DoR (全タスクに assignee_minion_id + acceptance_criteria) を満たすと active 化可能。詳細は ~/.minion/docs/api-reference.md の「Project Tasks」「Project Milestones」「Project Sprints」「Project Health」を参照。`,
|
|
463
466
|
`取得した内容をもとに回答してください。`
|
|
464
467
|
)
|
|
465
468
|
}
|
package/package.json
CHANGED
package/rules/core.md
CHANGED
|
@@ -33,15 +33,16 @@ Minion
|
|
|
33
33
|
- **script ノード (v3.54.0〜)** は LLM を使わない決定的処理用。`script_runtime` (`'python'` or `'node'`) と `script_source` を指定。input_data を stdin で JSON 受け取り → output_data を stdout に JSON 出力する規約。outgoing edge に contract を貼れば transform と同じ runtime validation が走る。LLMトークンを節約したい・出力ブレを許容できない定型処理に使う。詳細は `~/.minion/docs/task-guides.md` の「Script ノード」を参照
|
|
34
34
|
- **fan_out の incoming edge に contract を貼る場合**、`fan_out_source` が指すフィールドが contract 内に `type='array'` として宣言されている必要がある(静的検証で弾かれる)
|
|
35
35
|
- **Routine**: ミニオンスコープ。ミニオンローカルの定期タスク。
|
|
36
|
-
- **Project Tasks / Milestones**: プロジェクトスコープ。**人間+ミニオンが共有するタスクボード**(5段階Kanban: `backlog`→`todo`→`doing`→`review`→`done`)
|
|
37
|
-
- PMロールは朝のチェックで `/health`
|
|
36
|
+
- **Project Tasks / Milestones / Sprints**: プロジェクトスコープ。**人間+ミニオンが共有するタスクボード**(5段階Kanban: `backlog`→`todo`→`doing`→`review`→`done`)、ロードマップ(マイルストーン)、アジャイル運用単位(スプリント)。ミニオンは `/api/minion/projects/:projectId/{tasks,milestones,sprints,health}` で操作可能。
|
|
37
|
+
- PMロールは朝のチェックで `/health` を叩いて遅延・停滞タスクを把握、ユーザー要望をエピック+子タスクに分解、スプリントに割り当てて active 化
|
|
38
38
|
- Engineerロールは `?assignee_minion_id=$MINION_ID` で自分のタスクを取得し、着手時に `status: doing` へ更新(以降 `status_changed_at` がサーバ側で自動更新され、停滞検出に使われる)
|
|
39
39
|
- 親子は2階層のみ(孫タスク禁止)、担当は **ミニオン or 人間** の二択
|
|
40
40
|
- **priority**: `low` / `normal` / `high` / `urgent` (default `normal`)。可視化とフィルタ用途(並び順は `sort_order` が優先)
|
|
41
41
|
- **`milestone_id` は親 EPIC に付ければ配下の子タスクも自動的にその進捗に含まれる**(effective milestone)。子を個別にひもづけ直す必要はない。`/health` は leaf タスク基準で `progress_pct` を算出する
|
|
42
42
|
- **タスク検索**: `?q=<keyword>` でタイトル+説明の部分一致検索(pg_trgm、日本語OK)、`?priority=high,urgent` でカンマ区切り複数指定
|
|
43
|
+
- **スプリント**: `planned -> active -> completed` の3状態。1プロジェクトにつき `active` は1つだけ。`planned -> active` 遷移時に DoR (全タスクに `assignee_minion_id` + 1件以上の `acceptance_criteria`) を検証し、満たさないと 422 で `violations[]` が返る。`active -> completed` 時は `unfinished_tasks_action` で未完タスクの扱いを選択 (`return_to_backlog` (default) / `carry_over`)
|
|
43
44
|
- **`[task:UUID]` チケットタグ**: HQチャットでユーザーがチケットを指す際に使う形式。受信メッセージに含まれる場合、HQが解決した詳細がプロンプト先頭の「参照チケット」ブロックに同梱される。応答内でチケットへ言及する際にも同タグを使ってよい(HQ側でチップに描画される)
|
|
44
|
-
- 詳細は `~/.minion/docs/api-reference.md` の「Project Tasks」「Project Milestones」「Project Health」と `~/.minion/docs/task-guides.md` の「プロジェクトタスク管理」を参照
|
|
45
|
+
- 詳細は `~/.minion/docs/api-reference.md` の「Project Tasks」「Project Milestones」「Project Sprints」「Project Health」と `~/.minion/docs/task-guides.md` の「プロジェクトタスク管理」を参照
|
|
45
46
|
- **Workspace**: ミニオンは複数のワークスペースに所属でき、スキルやプロジェクトはワークスペース単位でスコープされる。チャットセッションもワークスペース別に分離される。所属ワークスペースはハートビートで自動同期され、`hq list workspaces` で確認できる。
|
|
46
47
|
- ミニオンは複数プロジェクトに `pm`、`engineer`、`accountant` として参加できる。
|
|
47
48
|
|
package/win/routes/chat.js
CHANGED
|
@@ -519,8 +519,11 @@ async function buildContextPrefix(message, context, sessionId, workspaceId, refe
|
|
|
519
519
|
` POST \$HQ_URL/api/minion/projects/${context.projectId}/tasks # 作成 (body: title, description?, status?, priority?, milestone_id?, sprint_id?, parent_task_id?, assignee_minion_id?, due_date?, acceptance_criteria?)`,
|
|
520
520
|
` PATCH \$HQ_URL/api/minion/projects/${context.projectId}/tasks/<id> # 更新 (status変更で status_changed_at がサーバ自動更新、acceptance_criteria/sprint_id も更新可。AC更新時は既存idを保持)`,
|
|
521
521
|
` GET \$HQ_URL/api/minion/projects/${context.projectId}/milestones # マイルストーン一覧`,
|
|
522
|
+
` GET \$HQ_URL/api/minion/projects/${context.projectId}/sprints # スプリント一覧 (?status=planned|active|completed で絞り込み可)`,
|
|
523
|
+
` POST \$HQ_URL/api/minion/projects/${context.projectId}/sprints # 作成 (body: name, goal?) — 初期 status は planned`,
|
|
524
|
+
` PATCH \$HQ_URL/api/minion/projects/${context.projectId}/sprints/<id># 更新 (status遷移: planned→active で DoR 検証、active→completed で unfinished_tasks_action=carry_over|return_to_backlog 指定可)`,
|
|
522
525
|
` GET \$HQ_URL/api/minion/projects/${context.projectId}/health # 健康度サマリ (overdue/stalled/マイルストーン進捗。progress_pct は leaf タスク基準)`,
|
|
523
|
-
`タスクは5段階Kanban (backlog→todo→doing→review→done)、親子は2階層まで(孫不可)。priority は low|normal|high|urgent (可視化+フィルタ用)。親EPICに milestone_id
|
|
526
|
+
`タスクは5段階Kanban (backlog→todo→doing→review→done)、親子は2階層まで(孫不可)。priority は low|normal|high|urgent (可視化+フィルタ用)。親EPICに milestone_id を付ければ子タスクも進捗に自動反映される。スプリントは1プロジェクトにつき active=1つだけ、DoR (全タスクに assignee_minion_id + acceptance_criteria) を満たすと active 化可能。詳細は ~/.minion/docs/api-reference.md の「Project Tasks」「Project Milestones」「Project Sprints」「Project Health」を参照。`,
|
|
524
527
|
`取得した内容をもとに回答してください。`
|
|
525
528
|
)
|
|
526
529
|
}
|