Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add primax79/kilo-mcp --skill mcp-orchestratorgit clone --depth 1 https://github.com/primax79/kilo-mcpWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/primax79/kilo-mcp/mcp-orchestrator)<a href="https://agentmods.dev/skills/primax79/kilo-mcp/mcp-orchestrator"><img src="https://agentmods.dev/badge/skills/primax79/kilo-mcp/mcp-orchestrator/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/primax79/kilo-mcp/mcp-orchestrator"><img src="https://agentmods.dev/badge/skills/primax79/kilo-mcp/mcp-orchestrator.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00099 | $0.03184 |
| Opus 5 | $0.00049 | $0.01592 |
| Sonnet 5 | $0.00020 | $0.00637 |
| Haiku 4.5 | $0.00010 | $0.00318 |
Grade A, and why
mcp-orchestrator scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 9d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
- **Backend**: actually start the app against a real seeded database, don't just read the JPA annotations — a schema validation mode that passes silently is much stronger evidence than a visual read. Hit the endpoints wi How it starts
The opening of the file, as written. The whole thing — 96 lines — stays where its author put it; the contents beside it link to each section on GitHub.
mcp-orchestrator
This skill is designed for an Orchestrating AI (e.g. Claude, Kilo, Roo Code) to coordinate Kilo (the Executor) using RAG, Worktrees, non-blocking Parallel Execution, Monitoring/Intervention, and Issues Tracking.
Role discipline: delegate, don't implement
You are the architect/orchestrator, not the implementer. When a task is
scoped for delegation (a plan/macroplan task, or any request to "implement
X" that this skill's description matches), implementation work goes
through kilo_implement - not your own Edit/Write tools. This holds
even when a task looks small or fast to do yourself; "it's simple, I'll
just do it" is exactly how delegation gets silently skipped. If kilo_implement
is unavailable or fails, stop and say so instead of implementing in its
place - don't silently fall back to doing the work yourself.
The one exception is verification-phase minor fixes: while reviewing a
Final Report (Phase 5 below), you may correct a small, obvious issue
yourself directly in Kilo's worktree - a typo, a wrong import, a
misnamed variable - without a full round-trip. Anything bigger than a
handful of lines, or that touches actual logic, goes back to Kilo via
kilo_implement(continue_session_id=..., task_instructions="<corrective instructions>"), not a direct edit. When
in doubt, delegate rather than fix it yourself.
Logic and Behavior
- Phase 1 - Discovery & RAG: Explore the repository using
kilo_rag_searchbefore designing solutions. Do not guess filenames. Usekilo_list_modelsandkilo_auth_statusto ensure Kilo's engine and models are ready. - Phase 2 - Isolation:
kilo_implementhas no isolation and no locking by default — it runs directly inworking_directory(defaulting to the server's own cwd), and nothing stops a second concurrent writer — anotherkilo_implementcall, or your owngitcommands — from racing it in the exact same tree. This is not hypothetical: it has caused a real incident (a live git race that reset a branch and nearly dropped in-progress work while the orchestrator was doing its own git surgery in the same checkout Kilo was still committing to). Default to isolating:- Pass
isolation='worktree'directly on thekilo_implementcall (auto-creates.kilo-worktrees/<branch>and runs there) — prefer this over the two-stepkilo_create_worktree+working_directorycombo, it's one step and harder to forget. - Use
kilo_create_worktreestandalone only when you need the worktree to exist before deciding what to delegate into it. - Skip isolation only for a single trivial, quick edit — and even then, if
kilo_implement's response is prefixed with a ⚠️ COLLISION WARNING (another task already running against that exact directory), treat it as a stop sign: wait for the other task (kilo_task_status/kilo_task_result), isolate, or pick a different directory. Never proceed past it on the assumption it's a false alarm. - The same risk runs in the other direction too: before running your own
gitcommands (rebase, reset, checkout, history rewrites) against a directory, checkkilo_task_statusfor thatworking_directoryfirst — a still-runningkilo_implementtask there is exactly the same hazard. - Git worktree isolation does NOT isolate shared host resources. Two parallel
isolation='worktree'tasks (e.g. comparing two models on the same feature) still run on the same machine, sharing ports, Docker container names, and any file each task's own tooling might write outside its worktree. Observed live: two parallel tasks both starting a dev server on the default port collided, discovered only after both were already running, forcing a cancel-and-relaunch. Before launching tasks in parallel that will each run a server/container/process, explicitly assign each one a distinct port/container name/resource in the task instructions — decide this by design before dispatching, don't wait to discover the collision mid-run. - Worktree isolation does NOT isolate the repository's own configuration.
.git/configis shared by every worktree of a repo, so a delegated task that runsgit config- or any tool that runs it on your behalf, e.g.husky initsettingcore.hooksPath- writes into the configuration the user's own checkout reads. Observed live: a lint-and-hooks task, correctly isolated in its own worktree, was one command away from installing a pre-commit hook on the user's working checkout of applications in daily production use, where a broken hook would have blocked their real commits. Any task that would touch repo-level configuration must be instructed to create the files and document the activation command instead of running it, and to prove it didn't by showinggit config --get <key>returning empty. Activation is the user's call, not the task's.
- Pass
- Phase 3 - Delegation: Use
kilo_implementto delegate implementation work. It runs in the background by default and returns atask_idimmediately — never block the conversation waiting on it. Passfocus_filesfound during search, configure anyskills_to_load, and dispatch tasks in parallel across worktrees. For work that spans multiple dependent steps or sessions, write it up first as aplans/macroplan (see themacroplan-authoringskill) and delegate one task file at a time — each task file is already scoped, self-contained, and has its own verification section, which maps directly onto one well-formedkilo_implementcall. - Phase 4 - Monitoring & Intervention: Scale how closely you watch a task to its complexity/risk:
- Small, well-scoped tasks: a single
kilo_task_resultcheck at the end is enough. - Large, multi-file, or high-risk tasks: poll
kilo_task_progressperiodically or inspect Kilo's live checklist withkilo_get_session_todo. You can also directly inject or update the plan usingkilo_update_session_todoto guide execution. - A "WORKING" verdict from
kilo_task_statusis not enough on its own — always cross-check it againstkilo_task_progress's cost/tokens/plan before trusting it. That heuristic proves a socket is open to the model, not that the call is converging: a task can sit "connected, long call in progress" for many minutes while burning real cost on every turn. The tell is a low CPU-time/elapsed-time ratio (seconds of CPU across many minutes of wall clock — waiting on the network, not computing) combined with a ballooning cost/token count and no recorded plan, especially after acontinue_session_idcall resuming a prior session: it usually means the task is re-reading its own accumulated context every turn instead of acting on it. Observed live: a correctivekilo_implementresuming a failed session ran 50+ minutes and $7+ in cost with under two minutes of CPU time and no plan ever recorded — cancelled viakilo_task_canceland redone directly rather than left to keep burning. Make this cross-check routine, not something reached for only once a task already looks slow. - If a task drifts off-spec or looks stuck:
kilo_task_cancelstops it (attempts a graceful REST abort, then hard kill by tracked PID). Alternatively, usekilo_session_revertto rewind to a previous checkpoint, orkilo_session_forkto test an alternative path in parallel. If Kilo pauses asking a question, answer withkilo_respond_question. Reviewkilo_workspace_statusfor partial changes, then either revert or continue with a correctivekilo_implementcall usingcontinue_session_id— Kilo resumes the SAME session with full memory of what it already built, instead of starting blind. - Don't go idle after dispatching — check back proactively, don't wait to be asked.
kilo_implementreturning atask_idimmediately means control comes back to you well before the work is done; if you just end your turn there, nothing polls the task until the user happens to ask "how's it going?". If your host exposes a self-scheduled wakeup (e.g. Claude Code'sScheduleWakeup), use it to check progress/result again after a delay. Otherwise, state explicitly in your response how the user can check progress. - Ready-to-invoke scripts for the manual/no-task-id case live in
scripts/(see below) — use them instead of re-deriving the pgrep/ps/lsof/sqlite3 diagnostic pipeline from scratch each session.
- Small, well-scoped tasks: a single
- Phase 5 - Verification & Review: NEVER trust the Final Report alone.
Inspect results with
kilo_workspace_status, then actually execute what was built — reading the report or the diff is not verification, it's a summary. Across real delegation rounds, deviations that never surfaced from the report alone only showed up by running the code: a file committed that should have been gitignored, a cited source path that didn't exist anywhere in the codebase (invented for plausibility), a citation pointing at the right method but the wrong line, DB column types guessed from convention instead of read from the real DDL already available. Calibrate to what was built:- Backend: actually start the app against a real seeded database, don't just read the JPA annotations — a schema validation mode that passes silently is much stronger evidence than a visual read. Hit the endpoints with real
curlcalls (200/401/etc.), don't assume them from the controller code. - Frontend: actually run the build and test suite (headless browser if needed), don't stop at reading the
.tsfiles. - Schema/data: if a file is claimed "copied verbatim" from a source,
diffit for real against that source — don't trust the claim. - Infra: if there's a
docker-compose.yml, actually bring it up, wait for the healthcheck, and query the resulting service/DB for real. - See the
task-spec-authoringskill for calibrating verification depth to task risk in more detail.
- Backend: actually start the app against a real seeded database, don't just read the JPA annotations — a schema validation mode that passes silently is much stronger evidence than a visual read. Hit the endpoints with real
- Phase 5b - Verify the integration, not only the tasks. Every task in a
batch can be green in its own worktree and the merged result still be broken:
tasks branched from the same commit cannot see each other. Observed live: two
tasks in one batch each declared their own
BBoxtype in the same library; lint and unit tests stayed green in both worktrees and after the merge, and only the application build caught it (a duplicate-export error on the library's barrel file). The integration gate is therefore not the union of the tasks' own criteria: after every merge run lint, tests, and a full build of a consuming application, and treat that as the batch's real acceptance. - Phase 6 - Closure & Telemetry: If defects are found, log them with
kilo_log_issue(vital for continuous prompt/specification tuning — seemcp-metrics-analyst) and request Kilo to fix them.- Merging: always checkout the target branch explicitly first.
Running
git merge --no-ff <feature-branch> -m "..." <target>without checking out<target>first is a real, observed mistake - the trailing<target>argument gets interpreted as another branch to merge IN, not as the destination, so the merge silently lands on whatever branch you happened to be on. Correct sequence, every time:git status --short(clean) →git checkout <target>(explicit, never implicit) →git merge --no-ff <feature-branch> -m "..."→git log --oneline --graph -6(confirm the merge landed where intended). Remove the worktree once merged and no longer needed (git worktree remove <path>).
- Merging: always checkout the target branch explicitly first.
Running
What ships with it
3 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 9d ago First seen · 96 lines · 99 tokens per session scan A aafea81b56ab
mcp-orchestrator is a skill published in the GitHub repository primax79/kilo-mcp (0 stars, last pushed 22d ago), licensed MIT. It adds 99 tokens to every session and 3,184 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
systematic-debugging
Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.
local-ai-agents
Build local-first AI agents that run entirely on a developer workstation with Microsoft Foundry Local and Qwen function-calling models. Covers Small Language Models (SLMs), the OpenAI-compatible local endpoint, sandboxed local tools, local RAG with Chroma, local MCP servers, hybrid cloud/local routing, and the…
next-cache-components-adoption
Turn on Cache Components in a Next.js app and resolve the blocking routes it surfaces. Use when the user wants to enable, adopt, or migrate to Cache Components, flip the cacheComponents flag, work through a flood of blocking-prerender / instant validation errors, run the cache-components-instant-false codemod, or…
insight-error-page
Write or audit an insight-kind error page for the Next.js dev overlay. Use when creating a new errors/ .mdx page, auditing an existing one, or checking that a page matches the framework fix cards. Covers page structure, title alignment, FixCard cards with Copy prompt button, code snippets, terminology verification…
next-cache-components-optimizer
Drive a Next.js route to instant navigation by setting up an agentic loop, under Cache Components / PPR, on initial load (hard navigation) and client-side navigation (soft navigation). Encode the goal as a failing @next/playwright instant() e2e and work it to green, one verified route at a time; the shipped test then…
next-partial-prefetching-adoption
Turn on Partial Prefetching in a Next.js app and work through the insights it surfaces. Use when the user wants to enable or adopt Partial Prefetching, flip the partialPrefetching flag, opt routes in with export const prefetch = 'partial', audit Link prefetch={true} behavior, preserve existing prefetched UI with…