Unattended backlog runner, level 5 — /autopilot. Picks items from labelled GitHub issues, STATE.md Next, or unguarded failure lines, runs each as /ship-loop (no release), batches green PRs, then ONE Ship question; writes a brief to STATE.md. Owner-only; also headless via claude -p.
Instal·la
npx skillscat add 8-sync-dev/8sync/autopilot Instal·la des del registre de SkillsCat.
Tham số: $ARGUMENTS
Level 5. Mặc định --max-items 5, --hours 8, backlog theo thứ tự dưới (--backlog chỉ giới hạn vào một nguồn). Chỉ owner khởi động; "dừng"/"stop" kết thúc ngay.
- Khởi động — đọc
su-code/STATE.md; ghiautopilotvàosu-code/ship/ACTIVE(sống sót qua /compact); ghi mốc bắt đầu để tính--hours.8sync ccc . ls+ ListAgents để biết lane, mục tiêu và file của session khác;8sync ccc . goal "autopilot: <item>" --files <file>mỗi khi đổi item. - Chọn item (đủ tiêu chí kiểm được mới nhận):
- GitHub issue mở, label
ccchoặc8sync, có acceptance criteria, chưa assignee:gh issue list --label ccc --state open --json number,title,body,assignees(và--label 8sync). - Mục trong
su-code/STATE.mdphầnNext. - Dòng
failure:trongsu-code/KNOWLEDGE.mdchưa có guard (hook/test/rule ngăn lặp).
Bỏ qua item thuộc session khác (cùng file/chủ đề với8sync ccc . ls/ListAgents) →SendMessagehỏi/chia việc, không sửa chồng. Item chạm auth/secret/deploy, hoặc không viết được criterion có lệnh kiểm → bỏ qua, ghi lý do vào brief.
- GitHub issue mở, label
- Chạy từng item như
/ship-loop "<item>"(không--release), kể cả item nhỏ — không sửa thẳng: nhánh riêng (worktree trong repo),su-code/ship/<slug>/PLAN.md(criterion + lệnh kiểm),8sync ccc loop init <slug>rồiCronCreate*/5 * * * *→/ship-tick <slug>(tick tự tiếp khi session rảnh;CronDeletekhi item xong), mỗi check qua8sync ccc loop ev <slug> <C#> -- '<lệnh>'(evidence vào LOOP.md),/goal(tuỳ chọn), skillsec(Skill tool, bắt buộc trước commit, không thay bằng grep tay), commit./goalchỉ một cái mỗi session và là built-in (Claude không tự gõ được: not verified, theo docs hiện có) — nên chạy tuần tự từng item; interactive: in dòng/goalcho owner dán ở mỗi item, hoặc dùng chế độ headless bên dưới (mỗi item mộtclaude -p). Mỗi item chạy theo nhịp/sprintở chế độ gọn (cổng quy mô, ≤2 subagent mỗi item, tính vào--max-budget-usd; chỉ dispatch khi chạy bằng API key Console, không thì một agent), standup8sync ccc standup <slug>mỗi iteration, retro →/remember. Item stop: → ghi brief, sang item sau. Dừng toàn bộ khi: hết backlog, đủ--max-items, quá--hours, owner dừng, hoặc 2 item liên tiếp stuck. - Không có remote/CI (
git remoterỗng) → item xanh chỉ commit trên nhánh của nó; cuối batch ghiShip: n/a (no remote)vào brief, không tạo remote, không hỏi Ship. - Gom batch — mỗi item xanh: push nhánh feature +
gh workflow runcho CI được phép trước Ship; merge/main/tag/release/deploy KHÔNG làm trước Ship. Cuối batch (hết backlog / đủ N PR xanh / hết giờ) hỏi MỘTAskUserQuestionheaderShip, liệt kê từng nhánh/PR/tag: options đúngDuyệt tất cả (Recommended)·Chỉ merge, chưa deploy·Dừng. Duyệt → push → PR →gh pr checks --watchnền → merge từng PR xanh (CI phải xanh trên cả Windows, macOS và Linux (test + build release) trước merge/tag; OS nào chưa có job → ghi "not verified: " và không merge) → monitor. Build nặng chỉ trên CI. - Brief — ghi ≤10 dòng vào
su-code/STATE.mdmục## Brief: item xong (PR/commit + evidence), item bỏ/stuck + lý do, việc owner cần làm, thời gian/iteration đã dùng. Xoá dòng khỏiACTIVE.
Chạy headless (không cần mở terminal)
claude -p "/autopilot --max-items 5 --hours 8" --permission-mode auto --permission-prompts none --max-turns 200 --max-budget-usd 20--permission-prompts none cần Claude Code v2.1.259+. Docs: -p chạy một lần tới xong; /goal dùng được trong -p (https://code.claude.com/docs/en/goal). --max-budget-usd là ước lượng phía client, có thể vượt; auto mode tạm dừng sau 3 lần liên tiếp / 20 lần tổng bị classifier chặn, và trong -p hành động bị chặn bị bỏ qua chứ không fatal (theo su-code/ship/auto-harness/DESIGN.md, chưa kiểm lại với bản docs hiện tại: not verified) → mỗi item kết thúc bằng bước verify trước câu hỏi Ship. Headless không trả lời được AskUserQuestion: batch dừng ở trước bước Ship và ghi brief; owner chạy /ship-auto/duyệt sau. Cần hooks bật + workspace đã trust.
Giới hạn của lập lịch
Muốn chạy lặp theo giờ bằng /loop: tác vụ lặp hết hạn sau 7 ngày, chỉ chạy khi session mở và idle, và /loop tự pace không được khôi phục khi --resume (https://code.claude.com/docs/en/scheduled-tasks#limitations). Skill có disable-model-invocation: true không chạy khi scheduled task dùng nó làm prompt — nên cron/routine phải gọi claude -p hoặc owner khởi động; /ship-tick <slug> thì model-invocable, là prompt cron mà /ship-loop, /autopilot, /ship-auto đặt sau khi owner đã khởi động để vòng lặp tự tiếp (một việc mỗi tick, tự xoá cron khi xong). Cần chạy bền không phụ thuộc session → Routines/GitHub Actions.
Rails: không bypassPermissions; 8sync ccc risk rồi /sec mỗi diff; owner "dừng"/"huỷ" → 8sync ccc cancel (loop trong ACTIVE, goal, urgent; fail-closed); không in secret; không đụng data client/CRM; không push main. Mọi câu "xong/pass" phải kèm lệnh + output; thiếu → "not verified".