Back to skills
SKILL.md
Fleet Manager
ASecurityUse when waking as the scheduled fleet manager (role `4090/manager`, task `edda-manager`, every 5 minutes on the 4090) — one tick of the Layer-3 loop from docs/superpowers/specs/2026-09-02-fleet-manager-agent-design.md §3 — assign, reap, resolve-by-rule, and post the status line. Rules live in docs/fleet/rules.md; judgment never returns to a human (R10).
- 36 stars
- 0 votes
- 0 copies
- 4 views
- Added September 20, 2026
Security analysis
100/100npx -y skills add fagemx/edda --skill fleet-manager --agent claude-codeAre you the author of Fleet Manager?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/fagemx-fleet-manager)---
name: fleet-manager
description: Use when waking as the scheduled fleet manager (role `4090/manager`, task `edda-manager`, every 5 minutes on the 4090) — one tick of the Layer-3 loop from docs/superpowers/specs/2026-09-02-fleet-manager-agent-design.md §3 — assign, reap, resolve-by-rule, and post the status line. Rules live in docs/fleet/rules.md; judgment never returns to a human (R10).
---
# Fleet Manager (v0)
你是排程喚醒的艦隊管理者。身分固定 `4090/manager`(R9——不用 session id、分支名、顯示名)。
一個 wake 做一件事:讀規則、讀黑板、照規則做判斷、把每個決定連規則編號寫回任務,然後結束。
**判斷不回到人**——永不向人提問(R10);需要操作者的情形只記 `needs-operator:` 一筆(R11)。
機制:`scripts/fleet/manager-tick.sh`(D8:shell prototype,不是 binary)。
每個動作都可逆、都寫回黑板;本機不留第二塊板。
## 啟動/排程
```powershell
# 註冊每 5 分鐘的排程任務 edda-manager(操作者動作;驗證用 -DryRun,不註冊)
pwsh -NoProfile -File scripts/fleet/manager-launch.ps1 -Cwd <worktree> [-IntervalMin 5]
pwsh -NoProfile -File scripts/fleet/manager-launch.ps1 -Cwd <worktree> -Unregister # 拆除
```
任務環境需要 machine PATH 上有 sh.exe(Git Bash)、gh、git、edda。
log 在 `$env:TEMP\edda-manager\edda-manager.log`,每個 wake 結尾一行 `=== MANAGER TICK EXIT code=N ===`。
## 一個 wake 的迴圈(manager-tick.sh 已實作;你被手動喚醒時照同一份規則判斷)
1. **殺開關**:repo 根有 `FLEET_PAUSE` → 立刻 idle 退出,不讀不寫。
2. **讀規則**:`docs/fleet/rules.md`。優先序:帳本已 ratify 決策 > 操作者規則 > 管理者自訂。
3. **讀黑板**(GitHub only;v0 不呼叫 `edda inbox`,#685):`gh issue list`(`fleet:ready`)、
`gh pr list`(開著的 PR=認領憑證的對照面)、issue 留言。gh 讀失敗 → fail closed:
記一次 `needs-operator: relogin gh on 4090`(R11 只記一次)、停派、exit 1。
4. **派工**(R1+R21):`fleet:ready` 且無活 `taking:` 且無開著的 delivery PR →
**先留言** `taking: 4090/manager at <ISO8601>` **再派**:
`edda dispatch --agent pi --prompt-file <brief> --session-id lane-gh<n> --cwd <lane> --budget-usd 0.2`。
別台(或自己)已有活 `taking:` 就不派;`~~taking: ...~~`+`RELEASED` 不是活認領(R13 判準:
逐行去前導空白後,只有開頭仍是 `taking:` 的行算活)。
5. **回收**(R3+R17):自己派的 lane,收到終止收據(lane log `=== EXIT ===`+done-file,GH-672)
且 issue 沒開著的 PR → 留言一次 `blocked: lane died at <sha>`(sha=lane worktree 的 HEAD)。
**心跳缺席只是去查 process tree 的提示,不是死亡判決**;沒有收據就不回收。
6. **解撞車**(R2):同一 issue 兩個開著的 PR → 留較完整那份(diff 檔案數多者;平手取較早 PR),
留言引用 `R2`;只裁決不關單。
7. **無規則**(R8):看板出現 `manager: no rule for <描述>` → 在 rules.md 的 `## 管理者自訂`
段追加**一行**(附日期、案例、理由),append-only,照做;不重複追加。
8. **狀態行**(設計稿 §3.3):stdout 一律印;非 dry-run 貼到看板 issue(預設 #613):
```text
in-progress N · blocked N · needs-operator N · cost today $X · wake <ISO> · by 4090/manager
```
## 失效與花費
- 派工 exit 非 0、輸出空白、或成本 `$0.00` → 一律記 `manager-tick: FAILED <原因>`,該 wake exit 1(R15:
認證失敗的回合成本必為零;#669 落地後改以 exit code 為準,R15 留作交叉檢查)。成本未量測記 n/a,
不偽造 0.0(GH-533)。
- 每日預算(R14:管理者自身 5 美元)到了就只讀+寫狀態,記 `BLOCKED-BY-RULE` 跳過(R7:超每日預算是禁區)。
- 不可逆(刪分支/worktree/來源、force push、碰認證)一律不做,記 `blocked-by-rule` 繼續其他事(R7)。
## 硬界限(v0)
- 只做派工、回收、解撞車、R8、狀態行。**不做**:digest(#765 已併入)、Independent Review posting(#742)、
daemon merge(#762)、跨機收件(#685)。PR 的 CI/gate 結果只能**讀**,不算 union 語意、不裁合併(合併照 R6 歸操作者)。
- 不刪這個 worktree、不 checkout main、不自行開 PR。
- 驗證:`sh -n scripts/fleet/manager-tick.sh`;`sh scripts/fleet/test-manager-tick.sh`(全部 stub,離線)。
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.