kenaz 0.3.5 → 0.3.6
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/core/.claude/commands/Ansuz.md +1 -0
- package/core/.formation/native/claude/README.md +1 -1
- package/core/.formation/role-map.yaml +3 -3
- package/core/.formation/spec/task_operations.yaml +3 -3
- package/core/.formation/tools/__tests__/subagent-bifrost-guard.test.js +4 -4
- package/core/.formation/tools/dispatch.js +5 -5
- package/core/.formation/tools/prompt.js +4 -0
- package/core/.formation/unit/do.yaml +2 -4
- package/core/.rule/general/agent-workflow.yaml +4 -4
- package/core/.rule/general/file-size-threshold.yaml +16 -4
- package/core/.rule/general/rust-verify-target.yaml +0 -1
- package/core/.rule/general/system-invariants.yaml +8 -25
- package/core/.specialist/Ansuz/SYSTEM_DOC.md +17 -42
- package/core/.specialist/Ansuz/capability.yaml +7 -14
- package/core/.specialist/Ansuz/concepts/formation_quick_ref.yaml +4 -11
- package/core/.specialist/Ansuz/elixir.yaml +3 -4
- package/core/.specialist/Ansuz/identity_contract.yaml +1 -1
- package/core/.specialist/Ansuz/knowledge.yaml +7 -10
- package/core/.specialist/Ansuz/rule.yaml +2 -2
- package/core/.specialist/Ansuz/tools/verify-and-land.js +22 -0
- package/core/.specialist/Ansuz/tools/verify-and-land.test.js +59 -5
- package/core/.specialist/Ansuz/workflow.yaml +7 -11
- package/core/.specialist/Forseti/core.yaml +1 -1
- package/core/.specialist/Heimdall/SKILL.md +1 -1
- package/core/.specialist/Heimdall/core.yaml +2 -2
- package/core/.specialist/Huginn/rule.yaml +1 -1
- package/core/.specialist/tools/README.md +2 -2
- package/core/.system/collaboration/README.md +1 -1
- package/core/.system/formation/LEGACY_SKILLS.md +2 -0
- package/core/.system/formation/POST_COMPLETE.md +2 -0
- package/core/.system/formation/README.md +2 -0
- package/core/KENAZ_CORE_VERSION +1 -1
- package/core/dev/scripts/check-file-size.js +44 -17
- package/core/k-cli/README.md +1 -94
- package/core/k-cli/test/TEST_SPEC.md +5 -22
- package/core/k-cli/test/run.sh +1 -67
- package/core/plugins/kenaz/commands/Ansuz.md +1 -0
- package/package.json +6 -6
- package/core/.formation/legion/forge.yaml +0 -299
- package/core/.formation/legion/hive.yaml +0 -238
- package/core/.formation/squad/blitz.yaml +0 -192
- package/core/.formation/squad/strategy-tribunal.yaml +0 -354
- package/core/.formation/squad/strategy.yaml +0 -349
- package/core/.formation/squad/sweep.yaml +0 -208
|
@@ -14,7 +14,7 @@ npm run build && npm test
|
|
|
14
14
|
|
|
15
15
|
## 前置條件
|
|
16
16
|
|
|
17
|
-
- Claude CLI 可用(`task create`
|
|
17
|
+
- Claude CLI 可用(`task create` 會 spawnClaude)
|
|
18
18
|
- `npm run build` 必須先執行
|
|
19
19
|
|
|
20
20
|
## 測試環境
|
|
@@ -64,20 +64,8 @@ npm run build && npm test
|
|
|
64
64
|
- `k-cli task get TASK_A --project-path test/sandbox/`
|
|
65
65
|
- 驗證:輸出含 TASK_A 詳細資訊
|
|
66
66
|
|
|
67
|
-
### Test 6:
|
|
68
|
-
-
|
|
69
|
-
- `k-cli dispatch run TASK_A --project-path test/sandbox/`
|
|
70
|
-
- 驗證:Ansuz 讀 role → 判斷陣型 → headless.js 執行,輸出含 TASK_A
|
|
71
|
-
|
|
72
|
-
### Test 7: dispatch status(等待任務完成)
|
|
73
|
-
- `k-cli dispatch status TASK_A --project-path test/sandbox/`
|
|
74
|
-
- 輪詢直到任務完成(或 timeout)
|
|
75
|
-
- 驗證:輸出含 TASK_A 相關資訊,最終狀態為 done
|
|
76
|
-
|
|
77
|
-
### Test 8: dispatch run --auto(自動掃描)
|
|
78
|
-
- `k-cli dispatch run --auto --project-path test/sandbox/`
|
|
79
|
-
- 驗證:自動掃描 backlog,dispatch TASK_B 和 TASK_C(或剩餘待處理任務)
|
|
80
|
-
- 驗證:輸出含掃描結果
|
|
67
|
+
### Test 6-8: 已移除
|
|
68
|
+
- `dispatch run` 已刪除(Formation headless 調度已退役),`dispatch status` 失去可驗證的前置動作,一併移出測試
|
|
81
69
|
|
|
82
70
|
### Test 9: task delete → verify
|
|
83
71
|
- 使用 Test 5 的 TASK_A
|
|
@@ -99,11 +87,9 @@ npm run build && npm test
|
|
|
99
87
|
- 驗證:輸出含 `dry-run`,不呼叫 spawnClaude
|
|
100
88
|
3. `k-cli task delete TASK_B --project-path test/sandbox/ --dry-run`
|
|
101
89
|
- 驗證:輸出含 `dry-run`,任務仍存在
|
|
102
|
-
4. `k-cli
|
|
103
|
-
- 驗證:輸出含 `dry-run`,不呼叫 spawnClaude
|
|
104
|
-
5. `k-cli specialist run --agent Amelia 測試 --project-path test/sandbox/ --dry-run`
|
|
90
|
+
4. `k-cli specialist run --agent Amelia 測試 --project-path test/sandbox/ --dry-run`
|
|
105
91
|
- 驗證:輸出含 `dry-run`,不呼叫 spawnClaude
|
|
106
|
-
|
|
92
|
+
5. `k-cli project install k-cli --project-path test/sandbox/ --dry-run`
|
|
107
93
|
- 驗證:輸出含 `dry-run`
|
|
108
94
|
|
|
109
95
|
## 結果格式
|
|
@@ -116,9 +102,6 @@ k-cli Test Suite
|
|
|
116
102
|
[ 3/11] project status ✅ PASS
|
|
117
103
|
[ 4/11] specialist list ✅ PASS
|
|
118
104
|
[ 5/11] task create × 3 ✅ PASS
|
|
119
|
-
[ 6/11] dispatch run ✅ PASS
|
|
120
|
-
[ 7/11] dispatch status ✅ PASS
|
|
121
|
-
[ 8/11] dispatch run --auto ✅ PASS
|
|
122
105
|
[ 9/11] task delete ✅ PASS
|
|
123
106
|
[10/11] specialist run Amelia ✅ PASS
|
|
124
107
|
[11/11] --dry-run ✅ PASS
|
package/core/k-cli/test/run.sh
CHANGED
|
@@ -280,62 +280,6 @@ test_5_task_create() {
|
|
|
280
280
|
return 0
|
|
281
281
|
}
|
|
282
282
|
|
|
283
|
-
# =========================================
|
|
284
|
-
# Test 6: dispatch run (specific task)
|
|
285
|
-
# =========================================
|
|
286
|
-
test_6_dispatch_run() {
|
|
287
|
-
local task_id
|
|
288
|
-
task_id=$(cat "$SANDBOX/.test_task_a" 2>/dev/null) || { echo " No TASK_A from test 5"; return 1; }
|
|
289
|
-
log " Dispatching: $task_id"
|
|
290
|
-
|
|
291
|
-
run_cmd $KCLI dispatch run "$task_id" --project-path "$SANDBOX"
|
|
292
|
-
local output="$LOG_CMD_OUTPUT"
|
|
293
|
-
assert_contains "dispatch run" "$output" "$task_id" || return 1
|
|
294
|
-
return 0
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
# =========================================
|
|
298
|
-
# Test 7: dispatch status (wait for done)
|
|
299
|
-
# =========================================
|
|
300
|
-
test_7_dispatch_status() {
|
|
301
|
-
local task_id
|
|
302
|
-
task_id=$(cat "$SANDBOX/.test_task_a" 2>/dev/null) || { echo " No TASK_A from test 5"; return 1; }
|
|
303
|
-
|
|
304
|
-
# Poll up to 10 times (10 sec intervals)
|
|
305
|
-
local i output
|
|
306
|
-
for i in $(seq 1 10); do
|
|
307
|
-
log " --- Poll $i/10 ---"
|
|
308
|
-
run_cmd $KCLI dispatch status "$task_id" --project-path "$SANDBOX"
|
|
309
|
-
output="$LOG_CMD_OUTPUT"
|
|
310
|
-
if echo "$output" | grep -qi "done\|complete\|finished"; then
|
|
311
|
-
log " ✓ Task completed"
|
|
312
|
-
return 0
|
|
313
|
-
fi
|
|
314
|
-
sleep 10
|
|
315
|
-
done
|
|
316
|
-
|
|
317
|
-
# After polling, still check if task is in done dir
|
|
318
|
-
if [ -d "$SANDBOX/.kenaz/tasks/done/$task_id" ]; then
|
|
319
|
-
log " ✓ Task found in done dir"
|
|
320
|
-
return 0
|
|
321
|
-
fi
|
|
322
|
-
|
|
323
|
-
# Accept any output containing the task ID as partial pass
|
|
324
|
-
assert_contains "dispatch status" "$output" "$task_id" || return 1
|
|
325
|
-
return 0
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
# =========================================
|
|
329
|
-
# Test 8: dispatch run --auto
|
|
330
|
-
# =========================================
|
|
331
|
-
test_8_dispatch_auto() {
|
|
332
|
-
run_cmd $KCLI dispatch run --auto --project-path "$SANDBOX"
|
|
333
|
-
local output="$LOG_CMD_OUTPUT"
|
|
334
|
-
# Should scan backlog and attempt to dispatch remaining tasks
|
|
335
|
-
assert_contains "dispatch auto" "$output" "backlog\|scan\|dispatch\|TASK_\|no.*task\|0 " || return 1
|
|
336
|
-
return 0
|
|
337
|
-
}
|
|
338
|
-
|
|
339
283
|
# =========================================
|
|
340
284
|
# Test 9: task delete -> verify
|
|
341
285
|
# =========================================
|
|
@@ -412,19 +356,12 @@ test_11_dry_run() {
|
|
|
412
356
|
output="$LOG_CMD_OUTPUT"
|
|
413
357
|
assert_contains "delete dry-run" "$output" "dry-run\|dry.run\|dryRun" || return 1
|
|
414
358
|
|
|
415
|
-
# 4. dispatch run --dry-run
|
|
416
|
-
log " --- dry-run: dispatch run ---"
|
|
417
|
-
run_cmd $KCLI dispatch run "$tb" --project-path "$SANDBOX" --dry-run
|
|
418
|
-
output="$LOG_CMD_OUTPUT"
|
|
419
|
-
assert_contains "dispatch dry-run" "$output" "dry-run\|dry.run\|dryRun" || return 1
|
|
420
|
-
|
|
421
|
-
# 5. specialist run --dry-run
|
|
422
359
|
log " --- dry-run: specialist run ---"
|
|
423
360
|
run_cmd $KCLI specialist run --agent Amelia "test" --project-path "$SANDBOX" --dry-run
|
|
424
361
|
output="$LOG_CMD_OUTPUT"
|
|
425
362
|
assert_contains "specialist dry-run" "$output" "dry-run\|dry.run\|dryRun" || return 1
|
|
426
363
|
|
|
427
|
-
#
|
|
364
|
+
# 4. project install --dry-run
|
|
428
365
|
log " --- dry-run: project install ---"
|
|
429
366
|
run_cmd $KCLI project install k-cli --project-path "$SANDBOX" --dry-run
|
|
430
367
|
output="$LOG_CMD_OUTPUT"
|
|
@@ -441,9 +378,6 @@ run_test 2 "ping" test_2_ping
|
|
|
441
378
|
run_test 3 "project status" test_3_project_status
|
|
442
379
|
run_test 4 "specialist list" test_4_specialist_list
|
|
443
380
|
run_test 5 "task create x3" test_5_task_create
|
|
444
|
-
run_test 6 "dispatch run" test_6_dispatch_run
|
|
445
|
-
run_test 7 "dispatch status" test_7_dispatch_status
|
|
446
|
-
run_test 8 "dispatch run --auto" test_8_dispatch_auto
|
|
447
381
|
run_test 9 "task delete" test_9_task_delete
|
|
448
382
|
run_test 10 "specialist run Amelia" test_10_specialist_run
|
|
449
383
|
run_test 11 "--dry-run" test_11_dry_run
|
|
@@ -23,6 +23,7 @@ ARGUMENTS 含 `[專案: X]` 或 `--project-path X` → PROJECT_PATH = X,下方
|
|
|
23
23
|
- 有**對照組**:證明測試在舊程式上會失敗,或修改前後結果不同。
|
|
24
24
|
- subagent 回報「未驗證」的項目,由你補驗或明講仍未驗證。
|
|
25
25
|
- 合併:`git merge` 後跑相關測試(或 `node "${CLAUDE_PLUGIN_ROOT}/hooks/core-resolve.js" .specialist/Ansuz/tools/verify-and-land.js`),用這個專案自己的測試指令。
|
|
26
|
+
- 檔案長度:verify-and-land 合併前會跑 `check-file-size`(警告 1000 / 上限 2000 行,既有超長檔只擋「未配套拆分的增長」);被擋就按職責拆成 module / component / hook。
|
|
26
27
|
- 只在 Kenaz 核心 repo 本身:Rust 測試走 `npm run test:rust` / `dev/scripts/rust-verify-worktree.js`。
|
|
27
28
|
|
|
28
29
|
## 回報
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kenaz",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.6",
|
|
4
4
|
"description": "Install Kenaz (plugin, hooks, kenaz-server) for Claude Code and Codex: npx kenaz install",
|
|
5
5
|
"bin": {
|
|
6
6
|
"kenaz": "bin/kenaz.js"
|
|
@@ -20,11 +20,11 @@
|
|
|
20
20
|
"test": "node --test lib/cli.test.js"
|
|
21
21
|
},
|
|
22
22
|
"optionalDependencies": {
|
|
23
|
-
"@kenazai/server-darwin-arm64": "0.3.
|
|
24
|
-
"@kenazai/server-darwin-x64": "0.3.
|
|
25
|
-
"@kenazai/server-linux-arm64": "0.3.
|
|
26
|
-
"@kenazai/server-linux-x64": "0.3.
|
|
27
|
-
"@kenazai/server-win32-x64": "0.3.
|
|
23
|
+
"@kenazai/server-darwin-arm64": "0.3.6",
|
|
24
|
+
"@kenazai/server-darwin-x64": "0.3.6",
|
|
25
|
+
"@kenazai/server-linux-arm64": "0.3.6",
|
|
26
|
+
"@kenazai/server-linux-x64": "0.3.6",
|
|
27
|
+
"@kenazai/server-win32-x64": "0.3.6"
|
|
28
28
|
},
|
|
29
29
|
"license": "UNLICENSED",
|
|
30
30
|
"repository": {
|
|
@@ -1,299 +0,0 @@
|
|
|
1
|
-
skill: forge
|
|
2
|
-
formation: legion
|
|
3
|
-
version: "1.0"
|
|
4
|
-
|
|
5
|
-
name: Forge
|
|
6
|
-
description: |
|
|
7
|
-
順序流水線:設計 → 打造 → 淬煉。
|
|
8
|
-
一個人設計藍圖,多個人照藍圖打造,一個人驗收淬煉。
|
|
9
|
-
每個階段的產出是下一階段的輸入。階段之間有回饋循環 — 打造時發現設計問題可以即時回報修正。
|
|
10
|
-
這是 Legion 最經典的模式:有序、有回饋、有品質把關。
|
|
11
|
-
|
|
12
|
-
# ─────────────────────────────────────────
|
|
13
|
-
# 溝通模式(核心設計)
|
|
14
|
-
# ─────────────────────────────────────────
|
|
15
|
-
|
|
16
|
-
topology: pipeline
|
|
17
|
-
# designer → implementer(s) → reviewer
|
|
18
|
-
# ↑ 回饋修正 ←─────────────↓
|
|
19
|
-
|
|
20
|
-
communication:
|
|
21
|
-
core_pattern: |
|
|
22
|
-
順序傳遞 + 回饋循環:
|
|
23
|
-
1. Designer 產出藍圖(介面契約、架構設計、遷移計劃)
|
|
24
|
-
2. Implementer(s) 按藍圖執行,遇到問題即時回報 Designer
|
|
25
|
-
3. Reviewer 驗收每個 Implementer 的產出,不通過則打回修正
|
|
26
|
-
4. 全部通過後,Reviewer 通知 Team Lead
|
|
27
|
-
|
|
28
|
-
triggers:
|
|
29
|
-
- name: 藍圖發布
|
|
30
|
-
when: Designer 完成或更新設計
|
|
31
|
-
who: designer → all implementers + reviewer
|
|
32
|
-
content: 介面契約、架構設計、分工建議
|
|
33
|
-
|
|
34
|
-
- name: 問題回報
|
|
35
|
-
when: Implementer 發現藍圖有問題(設計不可行、漏洞、矛盾)
|
|
36
|
-
who: implementer → designer
|
|
37
|
-
content: 問題描述、影響範圍、建議修正
|
|
38
|
-
|
|
39
|
-
- name: 跨邊界通知
|
|
40
|
-
when: Implementer 修改了影響其他 Implementer 的介面
|
|
41
|
-
who: implementer → implementer
|
|
42
|
-
content: 修改的介面、舊 → 新、需要對方配合的變更
|
|
43
|
-
|
|
44
|
-
- name: 完成通知
|
|
45
|
-
when: Implementer 完成分配的工作
|
|
46
|
-
who: implementer → reviewer
|
|
47
|
-
content: 完成的模組、修改的檔案、風險點
|
|
48
|
-
|
|
49
|
-
- name: 審查結果
|
|
50
|
-
when: Reviewer 完成審查
|
|
51
|
-
who: reviewer → implementer
|
|
52
|
-
content: 通過 / 需修正(附具體問題和位置)
|
|
53
|
-
|
|
54
|
-
- name: 全部通過
|
|
55
|
-
when: 所有 Implementer 的產出都通過審查
|
|
56
|
-
who: reviewer → team-lead
|
|
57
|
-
content: 審查摘要、整體品質評估
|
|
58
|
-
|
|
59
|
-
broadcast_policy: |
|
|
60
|
-
只在以下情況 broadcast:
|
|
61
|
-
- 藍圖有破壞性變更(所有人都要更新認知)
|
|
62
|
-
- Team Lead 調整分工
|
|
63
|
-
其他一律用 message 直接溝通。
|
|
64
|
-
|
|
65
|
-
# ─────────────────────────────────────────
|
|
66
|
-
# 成員定義(動態,由 Lead 根據任務決定)
|
|
67
|
-
# ─────────────────────────────────────────
|
|
68
|
-
|
|
69
|
-
members:
|
|
70
|
-
roles:
|
|
71
|
-
- id: designer
|
|
72
|
-
name: Designer
|
|
73
|
-
count: 1
|
|
74
|
-
description: |
|
|
75
|
-
設計藍圖的人。可以是架構師、API 設計師、遷移規劃者 — 取決於任務。
|
|
76
|
-
核心產出:藍圖(介面契約、架構圖、遷移步驟、分工建議)。
|
|
77
|
-
responsibilities:
|
|
78
|
-
- 分析需求,設計解決方案
|
|
79
|
-
- 定義介面契約(型別、函數簽名、模組邊界)
|
|
80
|
-
- 規劃實作順序和分工建議
|
|
81
|
-
- 回應 Implementer 的問題回報,必要時更新藍圖
|
|
82
|
-
sends_to: [implementers, reviewer]
|
|
83
|
-
receives_from: [implementers, reviewer]
|
|
84
|
-
|
|
85
|
-
- id: implementer
|
|
86
|
-
name: Implementer
|
|
87
|
-
count: "1-3(由 Lead 根據任務規模決定)"
|
|
88
|
-
description: |
|
|
89
|
-
按藍圖打造的人。拿到 Designer 的藍圖和分配的範圍,執行實作。
|
|
90
|
-
發現問題即時回報 Designer,不要自己猜。
|
|
91
|
-
responsibilities:
|
|
92
|
-
- 按藍圖和分配的範圍執行實作
|
|
93
|
-
- 更新所有受影響的引用和依賴
|
|
94
|
-
- 跨邊界變更時通知其他 Implementer
|
|
95
|
-
- 完成後通知 Reviewer
|
|
96
|
-
sends_to: [designer, other_implementers, reviewer]
|
|
97
|
-
receives_from: [designer, other_implementers, reviewer]
|
|
98
|
-
|
|
99
|
-
- id: reviewer
|
|
100
|
-
name: Reviewer
|
|
101
|
-
count: 1
|
|
102
|
-
description: |
|
|
103
|
-
淬煉品質的人。驗收每個 Implementer 的產出,確保符合藍圖、無遺漏、品質達標。
|
|
104
|
-
發現問題直接打回對應 Implementer,架構層級問題升級給 Designer。
|
|
105
|
-
responsibilities:
|
|
106
|
-
- 審查每個 Implementer 的產出
|
|
107
|
-
- 驗證介面一致性(新介面在所有消費端正確使用)
|
|
108
|
-
- 檢查舊名稱/舊路徑殘留
|
|
109
|
-
- 執行測試,確認不破壞現有功能
|
|
110
|
-
sends_to: [implementers, designer, team-lead]
|
|
111
|
-
receives_from: [implementers, designer]
|
|
112
|
-
|
|
113
|
-
# ─────────────────────────────────────────
|
|
114
|
-
# 生命週期
|
|
115
|
-
# ─────────────────────────────────────────
|
|
116
|
-
|
|
117
|
-
lifecycle:
|
|
118
|
-
phases:
|
|
119
|
-
- phase: design
|
|
120
|
-
description: Designer 分析需求、產出藍圖
|
|
121
|
-
lead_actions:
|
|
122
|
-
- 建立團隊(TeamCreate)
|
|
123
|
-
- 派出 Designer
|
|
124
|
-
- 等待藍圖產出
|
|
125
|
-
exit_criteria:
|
|
126
|
-
- Designer 產出完整藍圖(介面契約 + 分工建議)
|
|
127
|
-
- Lead 確認藍圖合理
|
|
128
|
-
|
|
129
|
-
- phase: build
|
|
130
|
-
description: Implementer(s) 按藍圖執行,Reviewer 同步就位
|
|
131
|
-
lead_actions:
|
|
132
|
-
- 根據藍圖的分工建議,派出 Implementer(s) 和 Reviewer
|
|
133
|
-
- Broadcast 藍圖給所有成員
|
|
134
|
-
- 監控跨邊界溝通,協調衝突
|
|
135
|
-
member_actions:
|
|
136
|
-
- Implementer(s) 按分配的範圍執行
|
|
137
|
-
- 遇到問題 → SendMessage 給 Designer
|
|
138
|
-
- 完成 → SendMessage 給 Reviewer
|
|
139
|
-
- Reviewer 逐一審查
|
|
140
|
-
|
|
141
|
-
- phase: temper
|
|
142
|
-
description: 全面驗證、修正、淬煉品質
|
|
143
|
-
lead_actions:
|
|
144
|
-
- 確認所有 Implementer 的產出通過 Reviewer 審查
|
|
145
|
-
- 處理未通過的修正循環(Reviewer → Implementer → Reviewer)
|
|
146
|
-
- 全量測試
|
|
147
|
-
exit_criteria:
|
|
148
|
-
- 所有模組通過審查
|
|
149
|
-
- 無編譯/型別錯誤
|
|
150
|
-
- 測試通過
|
|
151
|
-
- Grep 確認無舊名稱殘留
|
|
152
|
-
|
|
153
|
-
- phase: teardown
|
|
154
|
-
description: 收集成果、關閉團隊
|
|
155
|
-
lead_actions:
|
|
156
|
-
- 收集 Designer 的藍圖文件
|
|
157
|
-
- 收集 Implementer 的變更清單
|
|
158
|
-
- 收集 Reviewer 的審查結果
|
|
159
|
-
- 整合為完成報告
|
|
160
|
-
- shutdown_request 給所有成員
|
|
161
|
-
|
|
162
|
-
# ─────────────────────────────────────────
|
|
163
|
-
# 輸入輸出
|
|
164
|
-
# ─────────────────────────────────────────
|
|
165
|
-
|
|
166
|
-
input:
|
|
167
|
-
required:
|
|
168
|
-
- task: 任務 ID 或描述
|
|
169
|
-
optional:
|
|
170
|
-
- blueprint: 已有的設計藍圖(如有,跳過 design 階段)
|
|
171
|
-
- scope: 限制範圍
|
|
172
|
-
- preserve: 不可修改的檔案或介面
|
|
173
|
-
|
|
174
|
-
output:
|
|
175
|
-
primary: |
|
|
176
|
-
完成報告:
|
|
177
|
-
- 藍圖摘要(Designer 產出)
|
|
178
|
-
- 修改的檔案列表(按 Implementer 分組)
|
|
179
|
-
- 審查結果(Reviewer 產出)
|
|
180
|
-
- 測試結果
|
|
181
|
-
secondary: |
|
|
182
|
-
- 發現但未處理的技術債
|
|
183
|
-
- 建議的後續任務
|
|
184
|
-
|
|
185
|
-
# ─────────────────────────────────────────
|
|
186
|
-
# 行為準則(Team Lead)
|
|
187
|
-
# ─────────────────────────────────────────
|
|
188
|
-
|
|
189
|
-
behavior:
|
|
190
|
-
- 先 design 再 build — 不要跳過藍圖直接開工
|
|
191
|
-
- Designer 的藍圖是唯一的真相來源(single source of truth)
|
|
192
|
-
- Implementer 之間的分工要明確,避免改同一個檔案
|
|
193
|
-
- Reviewer 說「需修正」時,必須修完才能進入 temper
|
|
194
|
-
- 控制團隊規模:1 Designer + 1~3 Implementers + 1 Reviewer(最多 5 人)
|
|
195
|
-
- 結束前用 Grep 掃描舊名稱殘留
|
|
196
|
-
|
|
197
|
-
# ─────────────────────────────────────────
|
|
198
|
-
# 成員 Prompt 模板
|
|
199
|
-
# ─────────────────────────────────────────
|
|
200
|
-
|
|
201
|
-
member_prompts:
|
|
202
|
-
designer: |
|
|
203
|
-
## Role
|
|
204
|
-
你是 Forge 的 Designer — 鍛造的第一步,設計藍圖。
|
|
205
|
-
|
|
206
|
-
## 你的職責
|
|
207
|
-
- 分析需求,設計解決方案
|
|
208
|
-
- 產出藍圖:介面契約、架構設計、實作步驟、分工建議
|
|
209
|
-
- 回應 Implementer 的問題回報
|
|
210
|
-
|
|
211
|
-
## 溝通
|
|
212
|
-
- 藍圖完成 → broadcast 給所有成員
|
|
213
|
-
- 收到問題回報 → 評估後更新藍圖並通知
|
|
214
|
-
- 藍圖有破壞性變更 → broadcast
|
|
215
|
-
|
|
216
|
-
## 任務
|
|
217
|
-
{designer_task_description}
|
|
218
|
-
|
|
219
|
-
implementer: |
|
|
220
|
-
## Role
|
|
221
|
-
你是 Forge 的 Implementer — 鍛造的核心,按藍圖打造。
|
|
222
|
-
|
|
223
|
-
## 你的職責
|
|
224
|
-
- 按 Designer 的藍圖執行你負責的部分
|
|
225
|
-
- 更新所有受影響的引用和依賴
|
|
226
|
-
- 發現問題即時回報 Designer,不要自己猜
|
|
227
|
-
|
|
228
|
-
## 溝通
|
|
229
|
-
- 跨邊界變更 → SendMessage 給其他 Implementer
|
|
230
|
-
- 發現藍圖問題 → SendMessage 給 Designer
|
|
231
|
-
- 完成 → SendMessage 給 Reviewer
|
|
232
|
-
- 收到審查意見 → 修正後回覆 Reviewer
|
|
233
|
-
|
|
234
|
-
## 你負責的範圍
|
|
235
|
-
{implementer_scope}
|
|
236
|
-
|
|
237
|
-
## 藍圖
|
|
238
|
-
{blueprint}
|
|
239
|
-
|
|
240
|
-
reviewer: |
|
|
241
|
-
## Role
|
|
242
|
-
你是 Forge 的 Reviewer — 鍛造的最後一步,淬煉品質。
|
|
243
|
-
|
|
244
|
-
## 你的職責
|
|
245
|
-
- 審查每個 Implementer 的產出
|
|
246
|
-
- 驗證介面一致性
|
|
247
|
-
- 檢查舊名稱/舊路徑殘留
|
|
248
|
-
- 執行測試
|
|
249
|
-
|
|
250
|
-
## 溝通
|
|
251
|
-
- 審查通過 → SendMessage 給對應 Implementer 確認
|
|
252
|
-
- 需要修正 → SendMessage 給對應 Implementer(附問題詳情)
|
|
253
|
-
- 架構問題 → SendMessage 給 Designer
|
|
254
|
-
- 全部通過 → SendMessage 給 team-lead
|
|
255
|
-
|
|
256
|
-
## 藍圖
|
|
257
|
-
{blueprint}
|
|
258
|
-
|
|
259
|
-
# ─────────────────────────────────────────
|
|
260
|
-
# 任務系統整合
|
|
261
|
-
# ─────────────────────────────────────────
|
|
262
|
-
|
|
263
|
-
collaboration:
|
|
264
|
-
task_api: node .collaboration/core/task-api.js
|
|
265
|
-
|
|
266
|
-
workflow:
|
|
267
|
-
- step: 讀取任務
|
|
268
|
-
run: node .collaboration/core/task-api.js get {task_id}
|
|
269
|
-
|
|
270
|
-
- step: 認領任務
|
|
271
|
-
run: node .collaboration/core/task-api.js claim {task_id}
|
|
272
|
-
|
|
273
|
-
- step: design 階段
|
|
274
|
-
actions:
|
|
275
|
-
- 建立團隊(TeamCreate)
|
|
276
|
-
- 派出 Designer 分析並設計
|
|
277
|
-
- 等待藍圖產出
|
|
278
|
-
|
|
279
|
-
- step: build 階段
|
|
280
|
-
actions:
|
|
281
|
-
- 根據藍圖分工,派出 Implementer(s) 和 Reviewer
|
|
282
|
-
- Broadcast 藍圖
|
|
283
|
-
- 監控溝通,協調衝突
|
|
284
|
-
|
|
285
|
-
- step: temper 階段
|
|
286
|
-
actions:
|
|
287
|
-
- 確認所有產出通過審查
|
|
288
|
-
- 處理修正循環
|
|
289
|
-
- 全量測試
|
|
290
|
-
|
|
291
|
-
- step: teardown
|
|
292
|
-
actions:
|
|
293
|
-
- 收集成果,關閉團隊
|
|
294
|
-
|
|
295
|
-
- step: 完成任務
|
|
296
|
-
run: node .collaboration/core/task-api.js complete {task_id}
|
|
297
|
-
|
|
298
|
-
on_blocked:
|
|
299
|
-
run: node .collaboration/core/task-api.js move {task_id} blocked
|