# Tasks: 用戶 CC harness(acr install-harness) > 對應 design.md。**design 待 richblack review 後才動 code。** > 每完成一個 task 立刻標 [x],不批次。 --- ## 待 review 確認(design §8 開放問題) - [ ] Q1 python 提醒強度:「提醒 + 要 CC 自證」(傾向)vs 硬擋? - [ ] Q2 CLAUDE.md append(標記包夾,傾向)vs 獨立檔? - [ ] Q3 CLAUDE.md 放靜態零件清單 vs 只指「跑 acr parts」(傾向動態)? - [ ] Q4(design §8.5,壓測 §9)暴露動作同意機制:選③「AI 代跑」+「以後不要問我」+ 同意記錄要不要支援?(a) 維持選①/② 誠實告知選③不支援(傾向)/ (b) arcrun 預留「hook 驗同意 token」那半 / (c) 法律記錄。**安全約束:同意訊號不可由 AI 自產,需 harness 寫、hook 驗。本次只修了選②的字串 bug(A6),其餘待 richblack 拍板** ## 第一接觸點(§1.0,用戶只丟連結 + 聊天) - [x] E1 `llms.txt`(repo 根):給 CC 的啟動指南(第一步 install-harness + 鐵則 + 啟動流程 + CF 白話引導)。部署到 arcrun.dev/llms.txt 待網站部署 - [x] E2 README 開頭加「🤖 給 AI 操盤手」段:導向 install-harness + llms.txt - [x] E3 CF 憑證話術(不講術語、照抄式)內建進 llms.txt(design §1.0 步驟2 已定稿,CF 白癡化焦點) ## A. harness 素材(內嵌 npm 套件,SSOT=cli/harness/) - [x] A1 `cli/harness/CLAUDE.block.md`:CLAUDE.md arcrun 區塊(標記包夾) - [x] A2 `cli/harness/skills/arcrun-mindset/SKILL.md`:mindset + 「資源去哪取」表 + 去 DECISIONS 引用 - [x] A3 `cli/harness/commands/arcrun.md`:/arcrun slash command - [x] A4 `cli/harness/hooks/arcrun-guard.sh`:用戶版 guard(python 提醒不硬擋 / 暴露 exit 2 / 每條含正路) - [x] A5 `cli/harness/settings.fragment.json`:hook 註冊片段 - [x] A6 修正壓測 §9.5 字串比對 bug:guard hook 用 `grep "acr push"` 連「輸出/heredoc 裡**提到** push 字串」都擋 → 違反 §0.5「擋下必須印出正路」自身鐵則(連選②的可貼指令都印不出)。啟發式區分「執行 push」vs「展示指令」,誠實標明(mindset §7:shell 層無法 100% 區分,降低誤殺非完美)✓ 改法:awk 抽掉 heredoc 主體 → 看 push 是否在「實際執行命令列」的命令位置(行首 / ; & | && ||);block 訊息一併補上選②可貼指令(符合 §0.5) ## B. install-harness 指令 - [x] B1 `cli/src/commands/install-harness.ts`:冪等安裝 —— CLAUDE.md append(標記包夾)、複製 skill/command/hook、settings 合併不覆蓋 - [x] B2 從已安裝套件目錄解析 harness 路徑(import.meta.url → dist/commands → ../../harness) - [x] B3 `cli/src/index.ts` 註冊 `acr install-harness` - [x] B4 `cli/src/commands/init.ts` 末尾呼叫 install-harness(失敗不擋 init) - [x] B5 `cli/package.json` `files` 加 `harness/`(素材原樣打包,不經 build) - [ ] B6 install-harness 加 P7:`claude mcp add` arcrun MCP(**待 MCP 對齊**,§2.5;optional) - [ ] B7 `acr update` 納入 MCP 連線對齊(**待 MCP 對齊**,§2.5) > MCP 對齊本身(u6u_*→arcrun 命名 / finally.click→arcrun.dev / 移除 api_config 反模式 / 確認薄殼) > 是**另一條 BACKLOG 線**,不在本 SDD;本 SDD 只做「MCP 納入 install-harness/update 的接點」。 ## C. 驗收(design §7,客觀證據) - [x] C1 空目錄 install-harness → 產生 5 檔(CLAUDE.md + skills/arcrun-mindset + commands/arcrun.md + hooks + settings.json)✓ 實測 - [x] C2 重跑不重複(冪等)✓ 實測:跑兩次 CLAUDE.md 區塊仍 1 對、guard hook 仍 1 個 - [x] C3 已有 CLAUDE.md + settings.json(含用戶自己 hook/設定)→ 合併不破壞 ✓ 實測:原內容/hook/設定全保留 - [ ] C4 trust 後試「寫 python 自動化」→ 收到提醒(需真 Claude Code session 測,hook 邏輯已寫) - [x] C5 每個 guard 訊息含可執行下一步(§0.5 鐵則)✓ hook 內 remind/block 都帶「正路:」 - [ ] C6 打 `/arcrun <需求>` → CC 走 command 流程(需真 session 測,command 內容已寫) - [ ] C7 `npm pack` tarball 含 harness/ 素材(待 npm 發布步驟驗) - [x] C8 cli `tsc --noEmit` exit 0 ✓ - [x] C9 (A6) guard hook 執行 vs 展示啟發式:8/8 案例正確(真執行 4 種全 BLOCK:純執行/cd&&/echo;/recipe;展示 4 種全 ALLOW:echo提到/printf提到/cat-heredoc/無關)+ 邊角(env 同意放行、pipe||後執行 BLOCK、heredoc-dash ALLOW);`bash -n` 語法 OK