skills/opencode/SKILL.md
Delegate a bulk-work subtask to the local Qwen via one-shot opencode run. Use when the subtask is high-volume but low-complexity (file scans, log parsing, large-text summaries, repetitive transforms) so it should not burn parent-model tokens.
npx skillsauth add krystophny/prompts opencodeInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Run a one-shot opencode run against the local llama.cpp model (llamacpp/qwen, 256k context). Use this to offload bulk grunt work — scanning thousands of files, summarising large CSV/JSON dumps, extracting patterns from message archives, repetitive transforms — so the parent session does not spend tokens on it.
Trigger when the user invokes /opencode or asks to delegate to local/qwen/opencode. Also trigger proactively when about to read or summarise:
-f <image>. Do not send image bytes to the parent model when this skill applies.Do NOT use for tasks needing strong reasoning, tight specification compliance, or correctness on tricky edge cases. Use the gpt or codex skills for those.
Take the user's argument (or current subtask) as the prompt. If absent, ask what to delegate.
Frame the prompt with explicit inputs (paths, shell commands to run) and a precise expected output format. The local model is strong at following structured instructions but weak at open-ended judgement — be specific.
Pick --dir so the right AGENTS.md is in scope. opencode walks upward from --dir looking for AGENTS.md; if none is found before /, it falls back to ~/.config/opencode/AGENTS.md. Set --dir to the directory whose AGENTS.md chain you want the model to follow. If the working files live somewhere with no relevant AGENTS.md above them (e.g. /tmp/...), embed the rule snippet directly in the prompt — opencode only ever loads the AGENTS.md it found at startup, it does not chase pointers.
Run with --dangerously-skip-permissions. The prompt is a positional argument (the --prompt flag does not apply to run). Suppress stderr to drop the verbose info logs; the result is on stdout:
opencode run --model llamacpp/qwen --dangerously-skip-permissions --dir <cwd> "<prompt>" 2>/dev/null
For image input, attach with -f <path> (repeatable). The local llama-server is started with --mmproj so multimodal is live (/v1/models reports "capabilities":["completion","multimodal"]). The prompt must come before any -f flags or after a -- separator — -f is variadic and will swallow a trailing prompt as another file path:
# Right: prompt then -f flags
opencode run --model llamacpp/qwen --dangerously-skip-permissions --dir <cwd> \
"Describe each image. Output JSONL with file and caption." \
-f photo1.jpg -f photo2.png 2>/dev/null
# Also right: -- separator
opencode run --model llamacpp/qwen --dangerously-skip-permissions --dir <cwd> \
-f photo1.jpg -f photo2.png \
-- "Describe each image."
Verified end-to-end: a 184x184 PNG returns a coherent caption in ~30s on the local box.
For long jobs, prefer run_in_background: true on the Bash tool. Capture stdout to a file under /tmp/ and read it back when ready.
Parallelism. The current local backend may expose multiple llama.cpp slots. Independent opencode jobs may run in parallel when the server is configured for it. Keep dependent steps sequential, cap fan-out deliberately, and fall back to serial execution if latency spikes, contexts contend, or the server reports slot exhaustion.
Watch the output cap. Replies are limited to ~16k tokens. Chunk inputs so each call's expected output fits with margin (≈25-30 structured items per call, or roughly 8-10k characters of free-form summary). Pre-filter large source files instead of dumping them whole — keep input prompts in the low-100k range to leave headroom for the response.
Verify the output before integrating. Local-model output may contain hallucinated paths/names — spot-check against the source files.
llamacpp/qwen → http://127.0.0.1:8080/v1 (local llama.cpp; Qwen3.6 35B A3B Q4 + KV-Q8; 256k context, 16k output).:8081 if it has been registered as a model in ~/.config/opencode/opencode.json.Local inference: zero tokens billed to the parent model and no Anthropic spend on the bulk text. Only the framing prompt and the returned summary consume parent-session context. This is the entire point of the skill.
data-ai
Delegate a bulk-work subtask to the local Qwen via one-shot pi run. Use when the subtask is high-volume but low-complexity (file scans, log parsing, large-text summaries, repetitive transforms) so it should not burn parent-model tokens.
development
ETL pipeline that imports manually-downloaded Discord, LinkedIn, and WhatsApp archive ZIPs into the user's brain vaults as plain files (no APIs, no tokens, no daemons). Use when the task involves processing or querying a Discord/LinkedIn/WhatsApp data export.
tools
The user's email, contacts, personal tasks/todos, and full-CRUD Google + EWS calendars. Drives the sloptools CLI (same surface as the sloppy MCP on 127.0.0.1:9420). Use for mail (Gmail / Exchange-EWS / IMAP — list, read, send, reply, forward, flag, categorize, server-side filters, delegated mailboxes, out-of-office), calendar events (create / update / delete / RSVP / freebusy / ICS export across work + private accounts), contacts and contact groups, tasks (Google Tasks, Todoist), slopshell canvas, agent handoffs, and workspace items/artifacts/actors/triage.
tools
Render lecture videos from Beamer PDFs and pdfpc speaker notes via the slopcast pipeline (slide.pdf → segments.json → audio → clips → final/lecture.mp4) with Qwen3-TTS voice cloning and optional split-screen livecode. Use to generate, re-render, or splice slopcast lecture videos, or to author Beamer notes for slopcast.