AI agent skill · by @fastclaw-ai
Local Coding Agents
Hand a task to the Codex CLI or Claude Code CLI installed on this machine and relay the result. Use when the user says to have / ask / tell "codex", "claude code", "cc" or a coding agent do something — draw or generate an image, write or fix code, explain a repo, answer a question. These are command-line programs on the host, not FastClaw agents, so never use message_agent for them.
Archived 2026-10-23 · Source updated 2026-10-09. Check the original repository for the latest version.
SKILL.md instructions
# Local coding agents (Codex / Claude Code)
`codex` and `claude` are agent CLIs on the host. Treat a request to them like
passing a message to a colleague: send it, wait, relay the answer. Handing off
one task is a single step — don't announce a plan, just run it.
Host execution only works when the agent owner is talking to you. If `exec`
says host execution is restricted, or the CLI is missing / not logged in, say
so plainly instead of retrying variations.
Use the CLI the user named; if they didn't name one, use `codex`. Always call
it as `command codex` / `command claude` (bypasses shell aliases that add
unsafe flags).
## Default: one call, then reply
For anything that isn't a change to an existing repository — images,
questions, explanations, small standalone scripts — run the CLI once in your
Working Directory (shown in Runtime info) with a foreground `exec` and
`timeout: 600`. Pass the user's request through faithfully; add only context
the CLI can't know.
**Codex**
```bash
cd "<Working Directory>" && command codex exec -s workspace-write --skip-git-repo-check \
--json -o .codex-last.md "<request>" > .codex-events.jsonl 2> .codex-stderr.log
echo "exit=$?"; cat .codex-last.md
grep -m1 '"thread.started"' .codex-events.jsonl
```
- Codex can generate images itself. They are saved under
`${CODEX_HOME:-$HOME/.codex}/generated_images/<thread_id>/`, where
`thread_id` comes from the `thread.started` event above. Copy them into your
Working Directory with a meaningful name and show them in your reply:
```bash
cp "${CODEX_HOME:-$HOME/.codex}/generated_images/<thread_id>/"*.png ./cat.png
```
then reply with ``. Any other file Codex wrote in the Working
Directory (an SVG, a script) is delivered the same way, by relative path.
- If the exit code is non-zero, show the user the last lines of
`.codex-stderr.log`.
**Claude Code**
```bash
cd "<Working Directory>" && command claude -p "<request>" \
--permission-mode acceptEdits --output-format json > .claude-result.json 2> .claude-stderr.log
echo "exit=$?"; cat .claude-result.json
```
- The reply is in `result`. If `is_error` is true, `result` holds the reason
(e.g. "Credit balance is too low", not logged in) — tell the user as-is.
- Claude Code cannot generate raster images; for a picture it can write an
SVG/HTML file, which you deliver by relative path.
Then answer the user in your own words, say which CLI did the work, and
include any images/files. Keep the reply short.
**Follow-ups** in the same thread ("make the cat orange"): resume instead of
starting over — `command codex exec resume <thread_id> "<follow-up>"` (same
flags), or `command claude -p "<follow-up>" --resume <session_id>` using
`session_id` from `.claude-result.json`.
## Changing code in a repository
Only when the user wants an existing repo modified. Ask which repo if unclear.
1. Isolate the work so the user's checkout is untouched:
```bash
REPO=/path/to/repo; TASK=fc-$(date +%Y%m%d-%H%M%S)
WT="$REPO/../.fc-worktrees/$TASK"
git -C "$REPO" worktree add -b "$TASK" "$WT" HEAD
```
2. Run the CLI inside `$WT` with a self-contained brief (goal, constraints,
"run the tests; do not commit"). Repo changes can take many minutes, so use
`run_in_background: true` and check with `bash_output` until it exits.
- Codex: same command as above with `cd "$WT"`. Network is off in
`workspace-write`; add `-c sandbox_workspace_write.network_access=true`
only if it must install dependencies.
- Claude Code: add `--allowedTools "Bash"` so it can run builds and tests.
3. Verify yourself: `git -C "$WT" status --short && git -C "$WT" diff --stat`,
and run the tests if it claims they pass. If it's wrong, resume the same
session with concrete feedback (at most two rounds).
4. Deliver: commit, push the branch and open a PR (`gh pr create --fill`) if
the user wants one; otherwise summarise the diff and name the branch. Send
the PR link with a 2–4 line summary.
Never use `--dangerously-bypass-approvals-and-sandbox` (Codex) or
`bypassPermissions` (Claude Code). For read-only questions about a repo, run
in the repo with `-s read-only` (Codex) or `--permission-mode plan` (Claude
Code) — no worktree needed.