# 用 Arcrun 完成這個自動化需求

使用者想做一個自動化。你的任務：用 Arcrun 做出來，全程不要讓使用者自己寫程式。

⚠️ **不要上網搜 Arcrun 文件**（網路上沒有）。先讀 **arcrun-mindset** Skill，再用 `acr` 指令查現況。

## 鐵則
- **用 Arcrun 工作流／recipe，絕不自己寫 Python/Node 腳本。** 使用者選 Arcrun 就是不想要一次性腳本。
- **打外部 API → 寫 recipe**（`acr recipe push`），不自刻 HTTP client。缺 recipe 就自己補一個，不必問人。
- **不自製零件（WASM）**——零件由 Arcrun 維護。你能用的是現有零件 ＋ recipe ＋ 工作流。
- **需要 AI 判斷時你自己做**，不要讓工作流回頭呼叫 LLM。
- 🔴 **查不到零件就改寫成 `code` 節點 ＝ 腹語術**，禁止。缺 API 寫 recipe、缺能力投稿零件。

## 步驟

### 1. 先寫「意圖」，不要先寫 YAML
把使用者的需求寫成一串「誰接誰」（**不必是真實零件名**，用你想得到的名字即可）：

```
input >> ON_SUCCESS >> fetch_rows
fetch_rows >> 對每個 row >> notify
```

- 第一個節點固定是 `input`
- 邊只有 `ON_SUCCESS` 與 `對每個 <變數>`（**沒有** `ON_TRUE`／`ON_FALSE`／`ON_FAILURE`）
- 需要判斷 → 寫成獨立節點（例 `check_amount`）再接 `ON_SUCCESS`

語法細節、四份實跑過的範本、節點命名慣例 → **arcrun-mindset** Skill。

### 2. 丟去查，讓系統告訴你有什麼
`acr search <關鍵字>` 一次掃零件／recipe／auth-recipe／workflow；
或把意圖串丟 `/cypher/search`，逐節點拿 `found` / `resolved` / `not_found` / `unknown`。

- `found`／`resolved` → **只填 payload**
- `not_found` → 照回應的 `suggestion` 走（缺 API 寫 recipe、缺計算能力投稿零件），
  並看 `similar_components`／`similar_recipes` 有沒有現成能用的
- `unknown` → **不代表不存在**，別據此改寫成 code

### 3. 把意圖變成 workflow YAML
節點填上查到的真實零件／recipe ＋ payload。
需要 credential 時：`acr auth-recipe scaffold <service>` 看要哪些，明確告訴使用者去哪取得、怎麼 `acr creds push`。
🔑 定義裡只寫 `{{credential.<名字>}}`，**真身絕不寫進檔案**。

### 4. 驗證 → 部署 → 給證據
```bash
acr validate <workflow>.yaml   # 先驗
acr push <workflow>.yaml       # 部署（暴露動作，見下）
acr run <workflow>             # 觸發一次
acr logs <workflow>            # 看執行紀錄
```
完成要給客觀證據（HTTP 2xx／trace），不要只說「做好了」。

## 遇到要暴露資料（對外 webhook／recipe 投稿）
停下來，明確告訴使用者「這會讓 X 可被外部呼叫」，要他同意。不要替他決定公開。
非互動環境下把完整指令印給使用者自己貼上跑。

## 還沒設定好 Arcrun？
若 `acr` 指令不存在或還沒 `acr init`：先帶使用者完成前置設定
（裝 CLI → 拿 Cloudflare 帳號的兩串憑證 → `acr init --self-hosted`）。
拿 Cloudflare 憑證時用白話照抄式引導，不要對使用者講 KV / Worker / R2 等術語。

## 使用者的需求
（使用者打在 /arcrun 後面的文字會接在這裡）
