[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71KEG676XJ33BVDGYAXSXES":3,"skill-same:01M71KEG676XJ33BVDGYAXSXES":81},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":57,"commitSha":58,"skillDirectory":59,"forksCount":60,"repositoryHtmlUrl":61,"repositoryHomepageUrl":62,"ownerHtmlUrl":63,"ownerBlogUrl":64,"ownerDescription":65,"updatedAt":66,"install":67,"resources":80},"01M71KEG676XJ33BVDGYAXSXES","coding-agent",null,"Delegate coding tasks to Codex, Claude Code, or Pi agents via background process. Use when: (1) building\u002Fcreating new features or apps, (2) reviewing PRs (spawn in temp dir), (3) refactoring large codebases, (4) iterative coding that needs file exploration. NOT for: simple one-liner fixes (just edit), reading code (use read tool), thread-bound ACP harness requests in chat (for example spawn\u002Frun Codex or Claude Code in a Discord thread; use sessions_spawn with runtime:\"acp\"), or any work in ~\u002Fclawd workspace (never spawn agents here). Claude Code: use --print --permission-mode bypassPermissions (no PTY). Codex\u002FPi\u002FOpenCode: pty:true required.","clawdsolana\u002FOpenClawd","clawdsolana","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F279036008?v=4","01M71JTVF9FNGKE2SVJRPTQM31","OpenClawd","01M71JTVGCKWBSS8ZYC1HYWVA5",2,"MIT","https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Fcoding-agent\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"coding agent","coding","features","read","spawn","clawd","run","refactoring","opencode","work","tasks","code","discord","when","apps","new","mode","delegate","never","exploration","2026-11-10 10:12:30",false,"---\nname: coding-agent\ndescription: 'Delegate coding tasks to Codex, Claude Code, or Pi agents via background process. Use when: (1) building\u002Fcreating new features or apps, (2) reviewing PRs (spawn in temp dir), (3) refactoring large codebases, (4) iterative coding that needs file exploration. NOT for: simple one-liner fixes (just edit), reading code (use read tool), thread-bound ACP harness requests in chat (for example spawn\u002Frun Codex or Claude Code in a Discord thread; use sessions_spawn with runtime:\"acp\"), or any work in ~\u002Fclawd workspace (never spawn agents here). Claude Code: use --print --permission-mode bypassPermissions (no PTY). Codex\u002FPi\u002FOpenCode: pty:true required.'\nmetadata:\n  {\n    \"solanaos\": { \"emoji\": \"🧩\", \"requires\": { \"anyBins\": [\"claude\", \"codex\", \"opencode\", \"pi\"] } },\n  }\n---\n\n# Coding Agent (bash-first)\n\nUse **bash** (with optional background mode) for all coding agent work. Simple and effective.\n\n## ⚠️ PTY Mode: Codex\u002FPi\u002FOpenCode yes, Claude Code no\n\nFor **Codex, Pi, and OpenCode**, PTY is still required (interactive terminal apps):\n\n```bash\n# ✅ Correct for Codex\u002FPi\u002FOpenCode\nbash pty:true command:\"codex exec 'Your prompt'\"\n```\n\nFor **Claude Code** (`claude` CLI), use `--print --permission-mode bypassPermissions` instead.\n`--dangerously-skip-permissions` with PTY can exit after the confirmation dialog.\n`--print` mode keeps full tool access and avoids interactive confirmation:\n\n```bash\n# ✅ Correct for Claude Code (no PTY needed)\ncd \u002Fpath\u002Fto\u002Fproject && claude --permission-mode bypassPermissions --print 'Your task'\n\n# For background execution: use background:true on the exec tool\n\n# ❌ Wrong for Claude Code\nbash pty:true command:\"claude --dangerously-skip-permissions 'task'\"\n```\n\n### Bash Tool Parameters\n\n| Parameter    | Type    | Description                                                                 |\n| ------------ | ------- | --------------------------------------------------------------------------- |\n| `command`    | string  | The shell command to run                                                    |\n| `pty`        | boolean | **Use for coding agents!** Allocates a pseudo-terminal for interactive CLIs |\n| `workdir`    | string  | Working directory (agent sees only this folder's context)                   |\n| `background` | boolean | Run in background, returns sessionId for monitoring                         |\n| `timeout`    | number  | Timeout in seconds (kills process on expiry)                                |\n| `elevated`   | boolean | Run on host instead of sandbox (if allowed)                                 |\n\n### Process Tool Actions (for background sessions)\n\n| Action      | Description                                          |\n| ----------- | ---------------------------------------------------- |\n| `list`      | List all running\u002Frecent sessions                     |\n| `poll`      | Check if session is still running                    |\n| `log`       | Get session output (with optional offset\u002Flimit)      |\n| `write`     | Send raw data to stdin                               |\n| `submit`    | Send data + newline (like typing and pressing Enter) |\n| `send-keys` | Send key tokens or hex bytes                         |\n| `paste`     | Paste text (with optional bracketed mode)            |\n| `kill`      | Terminate the session                                |\n\n---\n\n## Quick Start: One-Shot Tasks\n\nFor quick prompts\u002Fchats, create a temp git repo and run:\n\n```bash\n# Quick chat (Codex needs a git repo!)\nSCRATCH=$(mktemp -d) && cd $SCRATCH && git init && codex exec \"Your prompt here\"\n\n# Or in a real project - with PTY!\nbash pty:true workdir:~\u002FProjects\u002Fmyproject command:\"codex exec 'Add error handling to the API calls'\"\n```\n\n**Why git init?** Codex refuses to run outside a trusted git directory. Creating a temp repo solves this for scratch work.\n\n---\n\n## The Pattern: workdir + background + pty\n\nFor longer tasks, use background mode with PTY:\n\n```bash\n# Start agent in target directory (with PTY!)\nbash pty:true workdir:~\u002Fproject background:true command:\"codex exec --full-auto 'Build a snake game'\"\n# Returns sessionId for tracking\n\n# Monitor progress\nprocess action:log sessionId:XXX\n\n# Check if done\nprocess action:poll sessionId:XXX\n\n# Send input (if agent asks a question)\nprocess action:write sessionId:XXX data:\"y\"\n\n# Submit with Enter (like typing \"yes\" and pressing Enter)\nprocess action:submit sessionId:XXX data:\"yes\"\n\n# Kill if needed\nprocess action:kill sessionId:XXX\n```\n\n**Why workdir matters:** Agent wakes up in a focused directory, doesn't wander off reading unrelated files (like your soul.md 😅).\n\n---\n\n## Codex CLI\n\n**Model:** `gpt-5.2-codex` is the default (set in ~\u002F.codex\u002Fconfig.toml)\n\n### Flags\n\n| Flag            | Effect                                             |\n| --------------- | -------------------------------------------------- |\n| `exec \"prompt\"` | One-shot execution, exits when done                |\n| `--full-auto`   | Sandboxed but auto-approves in workspace           |\n| `--yolo`        | NO sandbox, NO approvals (fastest, most dangerous) |\n\n### Building\u002FCreating\n\n```bash\n# Quick one-shot (auto-approves) - remember PTY!\nbash pty:true workdir:~\u002Fproject command:\"codex exec --full-auto 'Build a dark mode toggle'\"\n\n# Background for longer work\nbash pty:true workdir:~\u002Fproject background:true command:\"codex --yolo 'Refactor the auth module'\"\n```\n\n### Reviewing PRs\n\n**⚠️ CRITICAL: Never review PRs in SolanaOS's own project folder!**\nClone to temp folder or use git worktree.\n\n```bash\n# Clone to temp for safe review\nREVIEW_DIR=$(mktemp -d)\ngit clone https:\u002F\u002Fgithub.com\u002Fuser\u002Frepo.git $REVIEW_DIR\ncd $REVIEW_DIR && gh pr checkout 130\nbash pty:true workdir:$REVIEW_DIR command:\"codex review --base origin\u002Fmain\"\n# Clean up after: trash $REVIEW_DIR\n\n# Or use git worktree (keeps main intact)\ngit worktree add \u002Ftmp\u002Fpr-130-review pr-130-branch\nbash pty:true workdir:\u002Ftmp\u002Fpr-130-review command:\"codex review --base main\"\n```\n\n### Batch PR Reviews (parallel army!)\n\n```bash\n# Fetch all PR refs first\ngit fetch origin '+refs\u002Fpull\u002F*\u002Fhead:refs\u002Fremotes\u002Forigin\u002Fpr\u002F*'\n\n# Deploy the army - one Codex per PR (all with PTY!)\nbash pty:true workdir:~\u002Fproject background:true command:\"codex exec 'Review PR #86. git diff origin\u002Fmain...origin\u002Fpr\u002F86'\"\nbash pty:true workdir:~\u002Fproject background:true command:\"codex exec 'Review PR #87. git diff origin\u002Fmain...origin\u002Fpr\u002F87'\"\n\n# Monitor all\nprocess action:list\n\n# Post results to GitHub\ngh pr comment \u003CPR#> --body \"\u003Creview content>\"\n```\n\n---\n\n## Claude Code\n\n```bash\n# Foreground\nbash workdir:~\u002Fproject command:\"claude --permission-mode bypassPermissions --print 'Your task'\"\n\n# Background\nbash workdir:~\u002Fproject background:true command:\"claude --permission-mode bypassPermissions --print 'Your task'\"\n```\n\n## Gateway-Controlled Claude Sessions\n\nWhen SolanaOS's web gateway is available, Claude Code sessions can be driven through REST instead of a raw shell process.\nThis is the preferred path when you want SolanaOS to own the session registry and let clients list\u002Fresume\u002Fkill runs.\n\nEndpoints:\n\n```text\nGET  \u002Fapi\u002Fgateway\u002Fcoding\u002Fsessions\nPOST \u002Fapi\u002Fgateway\u002Fcoding\u002Fsessions\nGET  \u002Fapi\u002Fgateway\u002Fcoding\u002Fsessions\u002F:id\nPOST \u002Fapi\u002Fgateway\u002Fcoding\u002Fsessions\u002F:id\u002Fprompt\nGET  \u002Fapi\u002Fgateway\u002Fcoding\u002Fsessions\u002F:id\u002Flog\nPOST \u002Fapi\u002Fgateway\u002Fcoding\u002Fsessions\u002F:id\u002Fkill\nGET  \u002Fapi\u002Fgateway\u002Faccess\n```\n\nExample create request:\n\n```json\n{\n  \"runtime\": \"claude\",\n  \"workdir\": \"\u002Fabsolute\u002Fpath\u002Fto\u002Fproject\",\n  \"prompt\": \"Review the auth flow and fix the failing tests\",\n  \"label\": \"auth-fix\",\n  \"model\": \"claude-sonnet-4-6\"\n}\n```\n\nNotes:\n\n- Claude runs through `claude --print --output-format stream-json --permission-mode bypassPermissions`.\n- SolanaOS stores the Claude `session_id` and continues the same Claude conversation on later `:id\u002Fprompt` calls via `--resume`.\n- Gateway control is session-based, not PTY-based, for Claude Code. PTY guidance still applies to Codex\u002FPi\u002FOpenCode.\n- The web gateway can now expose the dashboard through Tailscale Serve (`--tailscale serve`) or Funnel (`--tailscale funnel --auth password`) while keeping the local service on loopback.\n\n### Telegram Natural Language\n\nWhen you're talking to SolanaOS through Telegram, you can now hit the same flow without slash-only syntax.\nExamples:\n\n```text\ncreate a GitHub repo for a private Next.js SaaS starter\nstart Claude Code in \u002FUsers\u002F8bit\u002FProjects\u002Fmyapp and scaffold an auth API\ncontinue and add Stripe billing\nshow my coding log\nstop the coding session\n```\n\n---\n\n## OpenCode\n\n```bash\nbash pty:true workdir:~\u002Fproject command:\"opencode run 'Your task'\"\n```\n\n---\n\n## Pi Coding Agent\n\n```bash\n# Install: npm install -g @mariozechner\u002Fpi-coding-agent\nbash pty:true workdir:~\u002Fproject command:\"pi 'Your task'\"\n\n# Non-interactive mode (PTY still recommended)\nbash pty:true command:\"pi -p 'Summarize src\u002F'\"\n\n# Different provider\u002Fmodel\nbash pty:true command:\"pi --provider openai --model gpt-4o-mini -p 'Your task'\"\n```\n\n**Note:** Pi now has Anthropic prompt caching enabled (PR #584, merged Jan 2026)!\n\n---\n\n## Parallel Issue Fixing with git worktrees\n\nFor fixing multiple issues in parallel, use git worktrees:\n\n```bash\n# 1. Create worktrees for each issue\ngit worktree add -b fix\u002Fissue-78 \u002Ftmp\u002Fissue-78 main\ngit worktree add -b fix\u002Fissue-99 \u002Ftmp\u002Fissue-99 main\n\n# 2. Launch Codex in each (background + PTY!)\nbash pty:true workdir:\u002Ftmp\u002Fissue-78 background:true command:\"pnpm install && codex --yolo 'Fix issue #78: \u003Cdescription>. Commit and push.'\"\nbash pty:true workdir:\u002Ftmp\u002Fissue-99 background:true command:\"pnpm install && codex --yolo 'Fix issue #99 from the approved ticket summary. Implement only the in-scope edits and commit after review.'\"\n\n# 3. Monitor progress\nprocess action:list\nprocess action:log sessionId:XXX\n\n# 4. Create PRs after fixes\ncd \u002Ftmp\u002Fissue-78 && git push -u origin fix\u002Fissue-78\ngh pr create --repo user\u002Frepo --head fix\u002Fissue-78 --title \"fix: ...\" --body \"...\"\n\n# 5. Cleanup\ngit worktree remove \u002Ftmp\u002Fissue-78\ngit worktree remove \u002Ftmp\u002Fissue-99\n```\n\n---\n\n## ⚠️ Rules\n\n1. **Use the right execution mode per agent**:\n   - Codex\u002FPi\u002FOpenCode: `pty:true`\n   - Claude Code: `--print --permission-mode bypassPermissions` (no PTY required)\n2. **Respect tool choice** - if user asks for Codex, use Codex.\n   - Orchestrator mode: do NOT hand-code patches yourself.\n   - If an agent fails\u002Fhangs, respawn it or ask the user for direction, but don't silently take over.\n3. **Be patient** - don't kill sessions because they're \"slow\"\n4. **Monitor with process:log** - check progress without interfering\n5. **--full-auto for building** - auto-approves changes\n6. **vanilla for reviewing** - no special flags needed\n7. **Parallel is OK** - run many Codex processes at once for batch work\n8. **NEVER start Codex in ~\u002F.solanaos\u002F** - it'll read your soul docs and get weird ideas about the org chart!\n9. **NEVER checkout branches in ~\u002FProjects\u002Fsolanaos\u002F** - that's the LIVE SolanaOS instance!\n\n---\n\n## Progress Updates (Critical)\n\nWhen you spawn coding agents in the background, keep the user in the loop.\n\n- Send 1 short message when you start (what's running + where).\n- Then only update again when something changes:\n  - a milestone completes (build finished, tests passed)\n  - the agent asks a question \u002F needs input\n  - you hit an error or need user action\n  - the agent finishes (include what changed + where)\n- If you kill a session, immediately say you killed it and why.\n\nThis prevents the user from seeing only \"Agent failed before reply\" and having no idea what happened.\n\n---\n\n## Auto-Notify on Completion\n\nFor long-running background tasks, append a wake trigger to your prompt so SolanaOS gets notified immediately when the agent finishes (instead of waiting for the next heartbeat):\n\n```\n... your task here.\n\nWhen completely finished, run this command to notify me:\nsolanaos system event --text \"Done: [brief summary of what was built]\" --mode now\n```\n\n**Example:**\n\n```bash\nbash pty:true workdir:~\u002Fproject background:true command:\"codex --yolo exec 'Build a REST API for todos.\n\nWhen completely finished, run: solanaos system event --text \\\"Done: Built todos REST API with CRUD endpoints\\\" --mode now'\"\n```\n\nThis triggers an immediate wake event — Skippy gets pinged in seconds, not 10 minutes.\n\n---\n\n## Learnings (Jan 2026)\n\n- **PTY is essential:** Coding agents are interactive terminal apps. Without `pty:true`, output breaks or agent hangs.\n- **Git repo required:** Codex won't run outside a git directory. Use `mktemp -d && git init` for scratch work.\n- **exec is your friend:** `codex exec \"prompt\"` runs and exits cleanly - perfect for one-shots.\n- **submit vs write:** Use `submit` to send input + Enter, `write` for raw data without newline.\n- **Sass works:** Codex responds well to playful prompts. Asked it to write a haiku about being second fiddle to a space lobster, got: _\"Second chair, I code \u002F Space lobster sets the tempo \u002F Keys glow, I follow\"_ 🦞\n","# Coding Agent (bash-first)\n\nUse **bash** (with optional background mode) for all coding agent work. Simple and effective.\n\n## ⚠️ PTY Mode: Codex\u002FPi\u002FOpenCode yes, Claude Code no\n\nFor **Codex, Pi, and OpenCode**, PTY is still required (interactive terminal apps):\n\n```bash\n# ✅ Correct for Codex\u002FPi\u002FOpenCode\nbash pty:true command:\"codex exec 'Your prompt'\"\n```\n\nFor **Claude Code** (`claude` CLI), use `--print --permission-mode bypassPermissions` instead.\n`--dangerously-skip-permissions` with PTY can exit after the confirmation dialog.\n`--print` mode keeps full tool access and avoids interactive confirmation:\n\n```bash\n# ✅ Correct for Claude Code (no PTY needed)\ncd \u002Fpath\u002Fto\u002Fproject && claude --permission-mode bypassPermissions --print 'Your task'\n\n# For background execution: use background:true on the exec tool\n\n# ❌ Wrong for Claude Code\nbash pty:true command:\"claude --dangerously-skip-permissions 'task'\"\n```\n\n### Bash Tool Parameters\n\n| Parameter    | Type    | Description                                                                 |\n| ------------ | ------- | --------------------------------------------------------------------------- |\n| `command`    | string  | The shell command to run                                                    |\n| `pty`        | boolean | **Use for coding agents!** Allocates a pseudo-terminal for interactive CLIs |\n| `workdir`    | string  | Working directory (agent sees only this folder's context)                   |\n| `background` | boolean | Run in background, returns sessionId for monitoring                         |\n| `timeout`    | number  | Timeout in seconds (kills process on expiry)                                |\n| `elevated`   | boolean | Run on host instead of sandbox (if allowed)                                 |\n\n### Process Tool Actions (for background sessions)\n\n| Action      | Description                                          |\n| ----------- | ---------------------------------------------------- |\n| `list`      | List all running\u002Frecent sessions                     |\n| `poll`      | Check if session is still running                    |\n| `log`       | Get session output (with optional offset\u002Flimit)      |\n| `write`     | Send raw data to stdin                               |\n| `submit`    | Send data + newline (like typing and pressing Enter) |\n| `send-keys` | Send key tokens or hex bytes                         |\n| `paste`     | Paste text (with optional bracketed mode)            |\n| `kill`      | Terminate the session                                |\n\n---\n\n## Quick Start: One-Shot Tasks\n\nFor quick prompts\u002Fchats, create a temp git repo and run:\n\n```bash\n# Quick chat (Codex needs a git repo!)\nSCRATCH=$(mktemp -d) && cd $SCRATCH && git init && codex exec \"Your prompt here\"\n\n# Or in a real project - with PTY!\nbash pty:true workdir:~\u002FProjects\u002Fmyproject command:\"codex exec 'Add error handling to the API calls'\"\n```\n\n**Why git init?** Codex refuses to run outside a trusted git directory. Creating a temp repo solves this for scratch work.\n\n---\n\n## The Pattern: workdir + background + pty\n\nFor longer tasks, use background mode with PTY:\n\n```bash\n# Start agent in target directory (with PTY!)\nbash pty:true workdir:~\u002Fproject background:true command:\"codex exec --full-auto 'Build a snake game'\"\n# Returns sessionId for tracking\n\n# Monitor progress\nprocess action:log sessionId:XXX\n\n# Check if done\nprocess action:poll sessionId:XXX\n\n# Send input (if agent asks a question)\nprocess action:write sessionId:XXX data:\"y\"\n\n# Submit with Enter (like typing \"yes\" and pressing Enter)\nprocess action:submit sessionId:XXX data:\"yes\"\n\n# Kill if needed\nprocess action:kill sessionId:XXX\n```\n\n**Why workdir matters:** Agent wakes up in a focused directory, doesn't wander off reading unrelated files (like your soul.md 😅).\n\n---\n\n## Codex CLI\n\n**Model:** `gpt-5.2-codex` is the default (set in ~\u002F.codex\u002Fconfig.toml)\n\n### Flags\n\n| Flag            | Effect                                             |\n| --------------- | -------------------------------------------------- |\n| `exec \"prompt\"` | One-shot execution, exits when done                |\n| `--full-auto`   | Sandboxed but auto-approves in workspace           |\n| `--yolo`        | NO sandbox, NO approvals (fastest, most dangerous) |\n\n### Building\u002FCreating\n\n```bash\n# Quick one-shot (auto-approves) - remember PTY!\nbash pty:true workdir:~\u002Fproject command:\"codex exec --full-auto 'Build a dark mode toggle'\"\n\n# Background for longer work\nbash pty:true workdir:~\u002Fproject background:true command:\"codex --yolo 'Refactor the auth module'\"\n```\n\n### Reviewing PRs\n\n**⚠️ CRITICAL: Never review PRs in SolanaOS's own project folder!**\nClone to temp folder or use git worktree.\n\n```bash\n# Clone to temp for safe review\nREVIEW_DIR=$(mktemp -d)\ngit clone https:\u002F\u002Fgithub.com\u002Fuser\u002Frepo.git $REVIEW_DIR\ncd $REVIEW_DIR && gh pr checkout 130\nbash pty:true workdir:$REVIEW_DIR command:\"codex review --base origin\u002Fmain\"\n# Clean up after: trash $REVIEW_DIR\n\n# Or use git worktree (keeps main intact)\ngit worktree add \u002Ftmp\u002Fpr-130-review pr-130-branch\nbash pty:true workdir:\u002Ftmp\u002Fpr-130-review command:\"codex review --base main\"\n```\n\n### Batch PR Reviews (parallel army!)\n\n```bash\n# Fetch all PR refs first\ngit fetch origin '+refs\u002Fpull\u002F*\u002Fhead:refs\u002Fremotes\u002Forigin\u002Fpr\u002F*'\n\n# Deploy the army - one Codex per PR (all with PTY!)\nbash pty:true workdir:~\u002Fproject background:true command:\"codex exec 'Review PR #86. git diff origin\u002Fmain...origin\u002Fpr\u002F86'\"\nbash pty:true workdir:~\u002Fproject background:true command:\"codex exec 'Review PR #87. git diff origin\u002Fmain...origin\u002Fpr\u002F87'\"\n\n# Monitor all\nprocess action:list\n\n# Post results to GitHub\ngh pr comment \u003CPR#> --body \"\u003Creview content>\"\n```\n\n---\n\n## Claude Code\n\n```bash\n# Foreground\nbash workdir:~\u002Fproject command:\"claude --permission-mode bypassPermissions --print 'Your task'\"\n\n# Background\nbash workdir:~\u002Fproject background:true command:\"claude --permission-mode bypassPermissions --print 'Your task'\"\n```\n\n## Gateway-Controlled Claude Sessions\n\nWhen SolanaOS's web gateway is available, Claude Code sessions can be driven through REST instead of a raw shell process.\nThis is the preferred path when you want SolanaOS to own the session registry and let clients list\u002Fresume\u002Fkill runs.\n\nEndpoints:\n\n```text\nGET  \u002Fapi\u002Fgateway\u002Fcoding\u002Fsessions\nPOST \u002Fapi\u002Fgateway\u002Fcoding\u002Fsessions\nGET  \u002Fapi\u002Fgateway\u002Fcoding\u002Fsessions\u002F:id\nPOST \u002Fapi\u002Fgateway\u002Fcoding\u002Fsessions\u002F:id\u002Fprompt\nGET  \u002Fapi\u002Fgateway\u002Fcoding\u002Fsessions\u002F:id\u002Flog\nPOST \u002Fapi\u002Fgateway\u002Fcoding\u002Fsessions\u002F:id\u002Fkill\nGET  \u002Fapi\u002Fgateway\u002Faccess\n```\n\nExample create request:\n\n```json\n{\n  \"runtime\": \"claude\",\n  \"workdir\": \"\u002Fabsolute\u002Fpath\u002Fto\u002Fproject\",\n  \"prompt\": \"Review the auth flow and fix the failing tests\",\n  \"label\": \"auth-fix\",\n  \"model\": \"claude-sonnet-4-6\"\n}\n```\n\nNotes:\n\n- Claude runs through `claude --print --output-format stream-json --permission-mode bypassPermissions`.\n- SolanaOS stores the Claude `session_id` and continues the same Claude conversation on later `:id\u002Fprompt` calls via `--resume`.\n- Gateway control is session-based, not PTY-based, for Claude Code. PTY guidance still applies to Codex\u002FPi\u002FOpenCode.\n- The web gateway can now expose the dashboard through Tailscale Serve (`--tailscale serve`) or Funnel (`--tailscale funnel --auth password`) while keeping the local service on loopback.\n\n### Telegram Natural Language\n\nWhen you're talking to SolanaOS through Telegram, you can now hit the same flow without slash-only syntax.\nExamples:\n\n```text\ncreate a GitHub repo for a private Next.js SaaS starter\nstart Claude Code in \u002FUsers\u002F8bit\u002FProjects\u002Fmyapp and scaffold an auth API\ncontinue and add Stripe billing\nshow my coding log\nstop the coding session\n```\n\n---\n\n## OpenCode\n\n```bash\nbash pty:true workdir:~\u002Fproject command:\"opencode run 'Your task'\"\n```\n\n---\n\n## Pi Coding Agent\n\n```bash\n# Install: npm install -g @mariozechner\u002Fpi-coding-agent\nbash pty:true workdir:~\u002Fproject command:\"pi 'Your task'\"\n\n# Non-interactive mode (PTY still recommended)\nbash pty:true command:\"pi -p 'Summarize src\u002F'\"\n\n# Different provider\u002Fmodel\nbash pty:true command:\"pi --provider openai --model gpt-4o-mini -p 'Your task'\"\n```\n\n**Note:** Pi now has Anthropic prompt caching enabled (PR #584, merged Jan 2026)!\n\n---\n\n## Parallel Issue Fixing with git worktrees\n\nFor fixing multiple issues in parallel, use git worktrees:\n\n```bash\n# 1. Create worktrees for each issue\ngit worktree add -b fix\u002Fissue-78 \u002Ftmp\u002Fissue-78 main\ngit worktree add -b fix\u002Fissue-99 \u002Ftmp\u002Fissue-99 main\n\n# 2. Launch Codex in each (background + PTY!)\nbash pty:true workdir:\u002Ftmp\u002Fissue-78 background:true command:\"pnpm install && codex --yolo 'Fix issue #78: \u003Cdescription>. Commit and push.'\"\nbash pty:true workdir:\u002Ftmp\u002Fissue-99 background:true command:\"pnpm install && codex --yolo 'Fix issue #99 from the approved ticket summary. Implement only the in-scope edits and commit after review.'\"\n\n# 3. Monitor progress\nprocess action:list\nprocess action:log sessionId:XXX\n\n# 4. Create PRs after fixes\ncd \u002Ftmp\u002Fissue-78 && git push -u origin fix\u002Fissue-78\ngh pr create --repo user\u002Frepo --head fix\u002Fissue-78 --title \"fix: ...\" --body \"...\"\n\n# 5. Cleanup\ngit worktree remove \u002Ftmp\u002Fissue-78\ngit worktree remove \u002Ftmp\u002Fissue-99\n```\n\n---\n\n## ⚠️ Rules\n\n1. **Use the right execution mode per agent**:\n   - Codex\u002FPi\u002FOpenCode: `pty:true`\n   - Claude Code: `--print --permission-mode bypassPermissions` (no PTY required)\n2. **Respect tool choice** - if user asks for Codex, use Codex.\n   - Orchestrator mode: do NOT hand-code patches yourself.\n   - If an agent fails\u002Fhangs, respawn it or ask the user for direction, but don't silently take over.\n3. **Be patient** - don't kill sessions because they're \"slow\"\n4. **Monitor with process:log** - check progress without interfering\n5. **--full-auto for building** - auto-approves changes\n6. **vanilla for reviewing** - no special flags needed\n7. **Parallel is OK** - run many Codex processes at once for batch work\n8. **NEVER start Codex in ~\u002F.solanaos\u002F** - it'll read your soul docs and get weird ideas about the org chart!\n9. **NEVER checkout branches in ~\u002FProjects\u002Fsolanaos\u002F** - that's the LIVE SolanaOS instance!\n\n---\n\n## Progress Updates (Critical)\n\nWhen you spawn coding agents in the background, keep the user in the loop.\n\n- Send 1 short message when you start (what's running + where).\n- Then only update again when something changes:\n  - a milestone completes (build finished, tests passed)\n  - the agent asks a question \u002F needs input\n  - you hit an error or need user action\n  - the agent finishes (include what changed + where)\n- If you kill a session, immediately say you killed it and why.\n\nThis prevents the user from seeing only \"Agent failed before reply\" and having no idea what happened.\n\n---\n\n## Auto-Notify on Completion\n\nFor long-running background tasks, append a wake trigger to your prompt so SolanaOS gets notified immediately when the agent finishes (instead of waiting for the next heartbeat):\n\n```\n... your task here.\n\nWhen completely finished, run this command to notify me:\nsolanaos system event --text \"Done: [brief summary of what was built]\" --mode now\n```\n\n**Example:**\n\n```bash\nbash pty:true workdir:~\u002Fproject background:true command:\"codex --yolo exec 'Build a REST API for todos.\n\nWhen completely finished, run: solanaos system event --text \\\"Done: Built todos REST API with CRUD endpoints\\\" --mode now'\"\n```\n\nThis triggers an immediate wake event — Skippy gets pinged in seconds, not 10 minutes.\n\n---\n\n## Learnings (Jan 2026)\n\n- **PTY is essential:** Coding agents are interactive terminal apps. Without `pty:true`, output breaks or agent hangs.\n- **Git repo required:** Codex won't run outside a git directory. Use `mktemp -d && git init` for scratch work.\n- **exec is your friend:** `codex exec \"prompt\"` runs and exits cleanly - perfect for one-shots.\n- **submit vs write:** Use `submit` to send input + Enter, `write` for raw data without newline.\n- **Sass works:** Codex responds well to playful prompts. Asked it to write a haiku about being second fiddle to a space lobster, got: _\"Second chair, I code \u002F Space lobster sets the tempo \u002F Keys glow, I follow\"_ 🦞\n",{"name":5,"metadata":49,"description":7},{"solanaos":50},{"emoji":51,"requires":52},"🧩",{"anyBins":53},[54,55,32,56],"claude","codex","pi","main","6b4a291df75c639681e93b4b5b812126443fd6ed","skills\u002Fcoding-agent",3,"https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd","https:\u002F\u002Fsolanaclawd.com\u002Fopenclawd","https:\u002F\u002Fgithub.com\u002Fclawdsolana","https:\u002F\u002Fmusebook.trade","Welcome to Open Clawd. The future of Ai on and off chain. Bringing webMCP to web 3 using X402, A2A, MPP and so much more!","2026-08-01 09:30:51",{"source":8,"skillName":5,"commands":68,"prompt":78,"zipAvailable":79},[69,72,75],{"tool":70,"command":71},"npx","npx skills add clawdsolana\u002FOpenClawd --skill coding-agent",{"tool":73,"command":74},"bunx","bunx skills add clawdsolana\u002FOpenClawd --skill coding-agent",{"tool":76,"command":77},"pnpm","pnpm dlx skills add clawdsolana\u002FOpenClawd --skill coding-agent","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Fcoding-agent\u002FSKILL.md",true,[],[82,110,135,159,169,193],{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":91,"publishedAt":109},"01M71KRBD0W01EAXJ8YM4M1SJ2","solana-dev","End-to-end Solana development playbook (Jan 2026). Prefer Solana Foundation framework-kit (@solana\u002Fclient + @solana\u002Freact-hooks) for React\u002FNext.js UI. Prefer @solana\u002Fkit for all new client\u002FRPC\u002Ftransaction code. When legacy dependencies require web3.js, isolate it behind @solana\u002Fweb3-compat (or @solana\u002Fweb3.js as a true legacy fallback). Covers wallet-standard-first connection (incl. ConnectorKit), Anchor\u002FPinocchio programs, Codama-based client generation, LiteSVM\u002FMollusk\u002FSurfpool testing, and security checklists.","https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Fsolana-dev\u002FSKILL.md",[88],{"categoryNo":89,"categoryName":90,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",[92,93,94,95,96,97,98,99,39,37,100,35,101,102,103,104,105,106,107,108],"solana dev","dev","solana","Wallet","end","testing","hooks","kit","web3","react","next","2026","playbook","security","ui","fallback","framework","2026-11-10 10:56:23",{"skillNo":111,"name":112,"nameZh":6,"description":113,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":114,"categories":115,"keywords":117,"publishedAt":109},"01M71KR8QPESSY61SVE8ZTFNVT","xurl","A CLI tool for making authenticated requests to the X (Twitter) API. Use this skill when you need to post tweets, reply, quote, search, read posts, manage followers, send DMs, upload media, or interact with any X API v2 endpoint.","https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Fxurl\u002FSKILL.md",[116],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[112,118,119,120,121,122,123,37,124,125,126,27,127,128,129,130,131,132,133,134],"posts","Media","x api","search","send","tap","you","api","cli","install","cli tool","endpoint","brew","for","manage","tool","twitter",{"skillNo":136,"name":137,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":142,"publishedAt":109},"01M71KR6FSXV88YDKWP7NBY3SH","wurk-integration","WURK API integration for monetizing agents with x402 payments on Solana\u002FBase - create social jobs, custom challenges, and agent help tasks","https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Fwurk-integration\u002FSKILL.md",[141],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[143,144,145,146,147,148,34,149,125,150,151,152,153,154,29,155,131,156,157,158],"wurk","wurk integration","integration","x402","social","payments","team","create","social-jobs","command","agent-help","custom-jobs","safe","api integration","custom","true",{"skillNo":160,"name":161,"nameZh":6,"description":162,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":163,"categories":164,"keywords":165,"publishedAt":109},"01M71KR4HCX41BPAK9GP7RPRRP","workflows","Manage application workflows including configuration, restart, and removal.","https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Fworkflows\u002FSKILL.md",[],[161,132,166,167,168],"configuration","application","restart",{"skillNo":170,"name":171,"nameZh":6,"description":172,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":173,"categories":174,"keywords":175,"publishedAt":109},"01M71KR1VM0F5GPEQDNG5J7A0H","web-search","Search the web, fetch content, extract branding profiles, and capture screenshots from URLs. Use for real-time information, API documentation, current events, design matching, and visual reference.","https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Fweb-search\u002FSKILL.md",[],[176,121,177,178,179,131,180,181,182,183,184,185,186,125,187,188,189,190,191,192],"web search","web","fetch","api documentation","real-time","time","profiles","design","use","information","visual","documentation","branding","matching","reference","capture","content",{"skillNo":194,"name":195,"nameZh":6,"description":196,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":197,"categories":198,"keywords":199,"publishedAt":109},"01M71KQZN5MR1JFQHG5GWXYAHS","weather","Get current weather and forecasts via wttr.in or Open-Meteo. Use when: user asks about weather, temperature, or forecasts for any location. NOT for: historical weather data, severe weather alerts, or detailed meteorological analysis. No API key needed.","https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Fweather\u002FSKILL.md",[],[195,200,131,201,184,37,202,125,203,204,205,206,207,208,209,210,211,212],"get","open","analysis","alerts","temperature","curl","via","help","about","https","location","data","user"]