spawn-quest

spawn-quest is a skill for Claude Code, Codex from moq-dev/moq. It costs 65 tokens per session (1,408 once invoked), scanned A, original, Apache-2.0.

A workflow for reviewing quests in a project scope and starting suitable work through background coding agents that open pull requests. It checks instructions, remote branches, existing claims, stale work, and each quest's actual state before starting anything.

In plain words
What is it for?
It is for triaging quest or milestone work, resolving stale branches, deciding what can start now, and assigning selected quests to agents for pull-request work.
Why use it?
It prevents duplicate work and false claims caused by outdated branch information, abandoned placeholders, or incomplete scope reviews.

Skill for Claude CodeCodex

About the project

moq-dev/moq is an implementation of Media over QUIC, a protocol for delivering live media and other real-time data over QUIC with WebTransport, WebCodecs, and WebAudio. It is intended for live streaming and other applications that need low latency and large-scale fan-out, with Rust and TypeScript libraries. The catalogue add-ons teach coding agents how to build with MoQ.

moq-dev/moq · 1,493 stars · on GitHub

Install

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.

agentmods
npx agentmods add skills/moq-dev/moq/spawn-quest
Any agent
npx skills add moq-dev/moq --skill spawn-quest
Clone the repo
git clone --depth 1 https://github.com/moq-dev/moq

Made for: Claude Code, Codex.

Wrote 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.

agentmods badge for spawn-quest

README.md
[![agentmods](https://agentmods.dev/badge/skills/moq-dev/moq/spawn-quest.svg)](https://agentmods.dev/skills/moq-dev/moq/spawn-quest)
Your own site
<a href="https://agentmods.dev/skills/moq-dev/moq/spawn-quest"><img src="https://agentmods.dev/badge/skills/moq-dev/moq/spawn-quest.svg" alt="Measured on agentmods" height="20"></a>
Per session 65 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,408 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5 $0.00065 $0.01408
Opus 5 $0.00032 $0.00704
Sonnet 5 $0.00013 $0.00282
Haiku 4.5 $0.00006 $0.00141

Measured today against content hash 6b09b802db48, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

spawn-quest scanned grade A with 0 findings 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 today.

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.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.claude/skills/spawn-quest/SKILL.md · 103 lines

How it starts

The opening of the file, as written. The whole thing — 103 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Before you begin, read quest/AGENTS.md completely.

Resolve the first argument to a questline directory under quest/, defaulting to quest/ itself: m0 means quest/m0.

git fetch origin before looking at claims. The remote branch is the coordination mechanism, so stale remote-tracking refs mean offering a quest another agent already claimed, and the spawned agent finds out only when its push is rejected.

Read every quest in the scope, not just the summaries in each README.md. Drop the ones a recent branch or open PR already claims.

Resolve a stale branch (old, no open PR) before keeping its quest in the start pool, rather than only mentioning it. Left in place it makes the agent's claim push fail as non-fast-forward, which the agent then reports as a lost race that never happened.

Inspect what the branch carries beyond its base. A claim placeholder is itself a commit, so "carries no work" is not the same as "has nothing unmerged", and conflating the two strands a quest forever:

  • Placeholder commits only. Someone claimed the quest and abandoned it without starting. Delete the ref and keep the quest in the pool: nothing is lost, and treating it as claimed would retire the quest permanently on the strength of an empty commit. Pin the remote delete to the tip you inspected, with git push --force-with-lease=<branch>:<sha> origin --delete <branch>. An unconditional delete races the owner coming back, and would erase a real commit pushed between the inspection and the delete along with the claim it renewed. A rejected lease means that is what happened, so treat the quest as claimed. Delete the local ref too when it points at that same tip, or the agent cannot cut the branch it was told to cut.
  • Real commits. Do not cut a fresh branch over them. Hand the agent the existing branch to continue, rebased onto its base. It still claims, with a fresh UUID placeholder pushed under a lease pinned to the tip you inspected. Two runs that both adopt the same branch would otherwise both skip the claim, and a rebase that changes nothing gives neither of them the rejected push that decides the race.
  • Checked out in a worktree, or carrying an open PR. Treat the quest as claimed and take it out of the pool.

Put every quest to the user in priority order - the depth-first walk of the scope's Quests lists - with a recommendation and the one fact behind it. Batch the questions; do not spend a round per quest. The choices are start, plan (use $plan-quest when a material decision is unmade), move, delete, and leave.

Offer start only for a ready quest: quest/AGENTS.md executes one only when it has no Required section. For work an agent cannot do - a decision that is a conversation, a credential only the user can mint, or verification this machine cannot run, such as a Linux-only build or a benchmark whose exit criteria is a measured before/after - recommend leave and name what would unblock it.

Spawning

Settle a base branch per quest and pass it to that quest's agent. Apply the Branch Targeting rules in CLAUDE.md: dev only for a semver break in a published API, main for everything else. One scope mixes both, so a single base for the whole wave puts some PR on the wrong branch. Never let an agent derive its own base: an agent branching from wherever it stands puts this skill's own tree edits in its PR.

Spawn one background agent per start, each with isolation: "worktree", in waves of two or three unless the machine is idle - a saturated box makes agents ship unverified. Never edit a running agent's worktree; message it instead.

Give each agent the base branch, the quest path, and nothing it could read for itself. Instruct it to:

  • Read quest/AGENTS.md, the quest, CONTRIBUTING.md, and the guides for the areas it touches.
  • Cut the quest branch (the quest path without .md) from that base and claim it with an empty placeholder commit whose message contains a freshly generated UUID, pushed immediately with git push origin HEAD after pointing the upstream at the base. When triage hands over an existing branch to continue, rebase it onto the base and claim it the same way, but push the placeholder with --force-with-lease pinned to the tip triage inspected, so a second adopter loses the race rather than joining it. The UUID is what makes the claim a race: two agents claiming the same quest from the same base in the same second otherwise produce the same commit object, and the loser's push succeeds as already-up-to-date instead of being rejected. A rejected push lost the race: stop and report. Never force the claim push; --force-with-lease pinned to its own claim is fine after a rebase.
  • Implement, run just fix, just check, and just test through nix develop --command, exercise the changed surface for real, walk the Cross-Package Sync table, and open a PR per CONTRIBUTING.md, deleting the quest and every reference to it in that same PR.
  • Leave package versions and lockfile version metadata alone.
  • Name in the PR any check that did not run, rather than claiming it or leaving it out.
  • Never deploy, apply, or mutate anything outside the repository.
  • On a blocker: write what it learned into the quest so the next attempt starts ahead, push that, then stop and report rather than improvising past it.

Read the full file on GitHub · 103 lines

Files

What ships with it

1 file 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.

Changes

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.

  1. today First seen · 103 lines · 65 tokens per session scan A 6b09b802db48

Subscribe to this mod's changes

spawn-quest is a skill published in the GitHub repository moq-dev/moq (1,493 stars, last pushed today), licensed Apache-2.0. It adds 65 tokens to every session and 1,408 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-05.

Related

Other skills, from other repositories

observability-stack

Spin up StreamKit's local observability stack (skit + Prometheus + Grafana, optional speech gateway) and validate the Grafana dashboards end-to-end. Use when testing metrics/dashboards, debugging empty dashboard panels, or reproducing the speech-gateway monitoring setup locally.

streamer45/streamkit · 61 tokens

testing-web-capture

End-to-end testing of the StreamKit web-capture gateway demo (examples/web-capture) with the native servo plugin. Use when verifying clip/cast endpoints, servo page rendering, or cross-session pixel isolation.

streamer45/streamkit · 48 tokens

testing-convert-stream-views

Testing the Convert and Stream views end-to-end in StreamKit. Use when writing or running browser-based tests for oneshot pipelines (TTS, transcription, file conversion) or dynamic MoQ stream pipelines, including marketplace plugin installation and YAML-driven UI controls.

streamer45/streamkit · 58 tokens

adding-plugins

Checklist for making a StreamKit plugin official and downloadable from the registry. Use when adding a new native plugin or updating an existing one for marketplace distribution.

streamer45/streamkit · 34 tokens

architecture

StreamKit crate relationships, data flow, key abstractions, and UI architecture. Use when understanding how the codebase is structured, how pipelines flow from YAML to execution, or how crates depend on each other.

streamer45/streamkit · 44 tokens

common-pitfalls

Known mistakes that coding agents frequently make in the StreamKit codebase. Use before starting any task to avoid wasted effort — covers WebSocket vs REST state, perf baselines, Bun-only tooling, SPDX headers, lint suppressions, and React.memo barriers.

streamer45/streamkit · 56 tokens