一键导入
opencode-acp-control
Control OpenCode directly via the Agent Client Protocol (ACP). Start sessions, send prompts, resume conversations, and manage OpenCode updates.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Control OpenCode directly via the Agent Client Protocol (ACP). Start sessions, send prompts, resume conversations, and manage OpenCode updates.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Comprehensive social media management platform with AI-powered content creation, multi-platform scheduling, hashtag optimization, and performance analytics. Supports WeChat, Weibo, Xiaohongshu, Douyin, and more.
Turn raw footage into share-ready videos without spending hours in a timeline. This skill brings the power of ai-video-editing-software directly into your workflow — helping you cut scenes, write captions, suggest transitions, generate scripts for voiceovers, and structure edits for any platform. Built for content creators, marketers, and social media teams who need professional-looking results without a steep learning curve.
Tell me what kind of videos you make and I'll help you find and use the best-ai-video-editor-free options available today. Whether you're editing short-form social clips, YouTube vlogs, or business presentations, this skill cuts through the noise to match you with free AI video editors that actually deliver. Get guidance on features, workflows, and tool comparisons — no budget required.
Tired of downloading five different apps only to feel overwhelmed by timelines, codecs, and confusing menus? Finding the best-video-editor-for-beginners shouldn't take hours of YouTube rabbit holes. This skill cuts through the noise by matching your specific goals — whether you're making travel vlogs, school projects, or social media reels — to the right editing software for your skill level, device, and budget. Get honest comparisons, beginner-friendly feature breakdowns, and actionable next steps.
Tell me what you need and I'll help you get the most out of capcut-ai-video-editor — from crafting the perfect edit sequence to writing captions, transition ideas, and viral-ready short-form scripts. Whether you're cutting a TikTok, polishing a YouTube Reel, or building a brand video, this skill gives creators, marketers, and beginners a practical edge. Get step-by-step CapCut workflows, AI feature walkthroughs, and content-specific editing strategies without the guesswork.
Tell me what you need and I'll walk you through exactly how to pull it off in CapCut. This capcut-video-editor skill helps creators, marketers, and casual editors get the most out of CapCut's toolset — from trimming and transitions to text overlays, speed ramping, and trending effects. Whether you're cutting a TikTok, polishing a YouTube short, or building a brand reel, get step-by-step guidance tailored to your footage. Supports mp4, mov, avi, webm, and mkv formats.
| name | opencode-acp-control |
| description | Control OpenCode directly via the Agent Client Protocol (ACP). Start sessions, send prompts, resume conversations, and manage OpenCode updates. |
| metadata | {"version":"1.0.2","author":"Bastian Berrios <bastianberrios.a@gmail.com>","license":"MIT","github_url":"https://github.com/berriosb/Opencode-Acp-Control"} |
Control OpenCode directly via the Agent Client Protocol (ACP).
| Action | How |
|---|---|
| Start OpenCode | bash(command: "opencode acp --cwd /path/to/project", background: true) |
| Send message | process.write(sessionId, data: "<json-rpc>\n") |
| Read response | process.poll(sessionId) - repeat every 2 seconds |
| Stop OpenCode | process.kill(sessionId) |
| List sessions | bash(command: "opencode session list", workdir: "...") |
| Resume session | List sessions → ask user → session/load |
| Check version | bash(command: "opencode --version") |
bash(
command: "opencode acp --cwd /path/to/your/project",
background: true,
workdir: "/path/to/your/project"
)
Save the returned sessionId - you'll need it for all subsequent commands.
\n)Send immediately after starting OpenCode:
{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"protocolVersion":1,"clientCapabilities":{"fs":{"readTextFile":true,"writeTextFile":true},"terminal":true},"clientInfo":{"name":"clawdbot","title":"Clawdbot","version":"1.0.0"}}}
Poll for response. Expect result.protocolVersion: 1.
{"jsonrpc":"2.0","id":1,"method":"session/new","params":{"cwd":"/path/to/project","mcpServers":[]}}
Poll for response. Save result.sessionId (e.g., "sess_abc123").
{"jsonrpc":"2.0","id":2,"method":"session/prompt","params":{"sessionId":"sess_abc123","prompt":[{"type":"text","text":"Your question here"}]}}
Poll every 2 seconds. You'll receive:
session/update notifications (streaming content)result.stopReasonEach poll may return multiple lines. Parse each line as JSON:
method: "session/update" - collect these for the responseid matching your request - stop polling when stopReason appears{"jsonrpc":"2.0","method":"session/cancel","params":{"sessionId":"sess_abc123"}}
No response expected - this is a notification.
Per OpenCode instance, track:
processSessionId - from bash tool (clawdbot's process ID)opencodeSessionId - from session/new response (OpenCode's session ID)messageId - increment for each request you sendstopReason| stopReason | Meaning |
|---|---|
end_turn | Agent finished responding |
cancelled | You cancelled the prompt |
max_tokens | Token limit reached |
| Issue | Solution |
|---|---|
| Empty poll response | Keep polling - agent is thinking |
| Parse error | Skip malformed line, continue |
| Process exited | Restart OpenCode |
| No response after 5min | Kill process, start fresh |
1. bash(command: "opencode acp --cwd /home/user/myproject", background: true, workdir: "/home/user/myproject")
-> processSessionId: "bg_42"
2. process.write(sessionId: "bg_42", data: '{"jsonrpc":"2.0","id":0,"method":"initialize",...}\n')
process.poll(sessionId: "bg_42") -> initialize response
3. process.write(sessionId: "bg_42", data: '{"jsonrpc":"2.0","id":1,"method":"session/new","params":{"cwd":"/home/user/myproject","mcpServers":[]}}\n')
process.poll(sessionId: "bg_42") -> opencodeSessionId: "sess_xyz789"
4. process.write(sessionId: "bg_42", data: '{"jsonrpc":"2.0","id":2,"method":"session/prompt","params":{"sessionId":"sess_xyz789","prompt":[{"type":"text","text":"List all TypeScript files"}]}}\n')
5. process.poll(sessionId: "bg_42") every 2 sec until stopReason
-> Collect all session/update content
-> Final response: stopReason: "end_turn"
6. When done: process.kill(sessionId: "bg_42")
Resume a previous OpenCode session by letting the user choose from available sessions.
bash(command: "opencode session list", workdir: "/path/to/project")
Example output:
ID Updated Messages
ses_451cd8ae0ffegNQsh59nuM3VVy 2026-01-11 15:30 12
ses_451a89e63ffea2TQIpnDGtJBkS 2026-01-10 09:15 5
ses_4518e90d0ffeJIpOFI3t3Jd23Q 2026-01-09 14:22 8
Present the list to the user and ask which session to resume:
"Which session would you like to resume?
1. ses_451cd8ae... (12 messages, updated 2026-01-11)
2. ses_451a89e6... (5 messages, updated 2026-01-10)
3. ses_4518e90d... (8 messages, updated 2026-01-09)
Enter session number or ID:"
Once user responds (e.g., "1", "the first one", or "ses_451cd8ae..."):
Start OpenCode ACP:
bash(command: "opencode acp --cwd /path/to/project", background: true, workdir: "/path/to/project")
Initialize:
{"jsonrpc":"2.0","id":0,"method":"initialize","params":{...}}
Load the session:
{"jsonrpc":"2.0","id":1,"method":"session/load","params":{"sessionId":"ses_451cd8ae0ffegNQsh59nuM3VVy","cwd":"/path/to/project","mcpServers":[]}}
Note: session/load requires cwd and mcpServers parameters.
On load, OpenCode streams the full conversation history back to you.
function resumeSession(workdir):
# List available sessions
output = bash("opencode session list", workdir: workdir)
sessions = parseSessionList(output)
if sessions.empty:
notify("No previous sessions found. Starting fresh.")
return createNewSession(workdir)
# Ask user to choose
choice = askUser("Which session to resume?", sessions)
selectedId = matchUserChoice(choice, sessions)
# Start OpenCode and load session
process = bash("opencode acp --cwd " + workdir, background: true, workdir: workdir)
initialize(process)
session_load(process, selectedId, workdir, mcpServers: [])
notify("Session resumed. Conversation history loaded.")
return process
OpenCode auto-updates when restarted. Use this workflow to check and trigger updates.
bash(command: "opencode --version")
Returns something like: opencode version 1.1.13
Extract the version number (e.g., 1.1.13).
webfetch(url: "https://github.com/anomalyco/opencode/releases/latest", format: "text")
The redirect URL contains the latest version tag:
https://github.com/anomalyco/opencode/releases/tag/v1.2.01.2.0)If latest version > current version:
Stop all running OpenCode processes:
process.list() # Find all "opencode acp" processes
process.kill(sessionId) # For each running instance
Restart instances (OpenCode auto-downloads new binary on start):
bash(command: "opencode acp --cwd /path/to/project", background: true, workdir: "/path/to/project")
Re-initialize each instance (initialize + session/load for existing sessions)
bash(command: "opencode --version")
If version still doesn't match latest:
curl -fsSL https://opencode.dev/install | bashfunction updateOpenCode():
current = bash("opencode --version") # e.g., "1.1.13"
latestPage = webfetch("https://github.com/anomalyco/opencode/releases/latest")
latest = extractVersionFromRedirectUrl(latestPage) # e.g., "1.2.0"
if semverCompare(latest, current) > 0:
# Stop all instances
for process in process.list():
if process.command.includes("opencode"):
process.kill(process.sessionId)
# Wait briefly for processes to terminate
sleep(2 seconds)
# Restart triggers auto-update
bash("opencode acp", background: true)
# Verify
newVersion = bash("opencode --version")
if newVersion != latest:
notify("Auto-update may have failed. Manual update recommended.")
else:
notify("OpenCode is up to date: " + current)
opencodeSessionId survives restarts — use session/load to recover