name: overnight-build
Claude Codeを一晩走らせてプロダクトをビルドし、自動監視するスキル。
project-initスキル参照)exec pty:true background:true workdir:<project-dir> timeout:14400 command:"claude --dangerously-skip-permissions '<タスクプロンプト>
完了したら以下のコマンドを実行して通知:
openclaw gateway wake --text \"<完了メッセージ>\" --mode now'"
重要パラメータ:
pty: true — 必須。Claude Codeはインタラクティブターミナルアプリbackground: true — バックグラウンド実行timeout: 14400 — 4時間(必要に応じて調整)--dangerously-skip-permissions — 権限確認をスキップ(自動実行用)プロンプトのコツ:
openclaw gateway wake で完了通知させる設定例: references/cron-monitor-config.json
特定スレッドに報告を集約する:
{
"action": "send",
"channel": "slack",
"target": "<channelId>",
"threadId": "<threadTs>",
"message": "📊 進捗報告: Phase X 完了..."
}
ログから読み取る状態:
| 表示 | 状態 |
|---|---|
Musing… / Percolating… | 考え中(正常) |
| ツール実行ログ | 作業中(正常) |
❯ プロンプトのみ | 入力待ち(要対処) |
API Error | エラー(要対処) |
入力待ちの場合:
process action:submit sessionId:<id> data:"yes"
認証エラーの場合:
claude /login を依頼cron action:remove jobId:claude-code-monitor| エラー | 対処 |
|---|---|
| OAuth token expired (401) | kill → ユーザーに /login 依頼 → 再起動 |
| プロセスタイムアウト | timeout値を増やして再起動 |
| ビルドエラーでループ | ログ確認 → submit で方針指示 |
sessionTarget: "main" のcronジョブはheartbeat経由で実行される。
HEARTBEAT.mdが空だと lastError: "empty-heartbeat-file" でスキップされる。
対策: 起動前にHEARTBEAT.mdに内容があることを確認。なければ追記:
## 定期タスク
- cronジョブからのsystemEventを処理する
正確な形式を守ること。特に以下に注意:
sessionTarget: 文字列 "main" (オブジェクトではない)payload.kind: "systemEvent" ("wake" ではない)payload.text: テキストフィールド名は text(message ではない)schedule.kind: "every" / "at" / "cron" のいずれか--dangerously-skip-permissions + PTY の罠--dangerously-skip-permissions と PTY の組み合わせでは、確認ダイアログが表示された後に exit してしまうことがある。
代わりに --print --permission-mode bypassPermissions を使うとこの問題を回避できる。
Claude Codeが確認入力を待って停止することがある。定期監視cronジョブを必ず設定し、process action:log で入力待ち状態を検知したら process action:submit で応答する。
claude --version で認証確認(401出ないか)--dangerously-skip-permissions で起動openclaw gateway wake を含めた