Agent skill

Do

by notque in notque/vexjoy-agent

Classify user requests and route to the correct agent + skill.

MITAuto-check: notes

Install Do

skills CLI
$ npx skills add notque/vexjoy-agent --skill do -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install notque/vexjoy-agent do --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/notque/vexjoy-agent.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/meta/do .claude/skills/do && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
do
GitHub stars
438
Token cost
~7.1k tokens
SKILL.md length
2,543 words
Files
18 (incl. references)
Skills in repo
61
Repo updated
First seen
Licence
MIT

At a glance

Classify user requests and route to the correct agent + skill.

  • Works in 4 steps: CLASSIFY → ROUTE → ENHANCE → …
  • SKILL.md covers Instructions, Error Handling and References
  • Calls python3 and bash

What it does

Do is an agent skill from notque/vexjoy-agent. Classify user requests and route to the correct agent + skill. Primary entry point for all delegated work.

Its SKILL.md is about 7.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 18 other files, including reference files (for example `references/error-handling.md`, `references/execution-architecture.md` and `references/hooks-guide.md`).

The repository describes itself as: VexJoy AI Agent with Jev Intelligent Routing - /do routes plain-English requests to the right specialist agent and gates the work with reviews, tests, and a learning loop. The licence is MIT.

Example prompts

  • “/do”

Requirements

  • Pre-approved tools (allowed-tools): Read, Bash, Grep, Glob, Skill, Task

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. CLASSIFY
  2. ROUTE
  3. ENHANCE
  4. EXECUTE

What it can do on your machine

Read from SKILL.md and the folder at commit 5218674. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Bash
    • Grep
    • Glob
    • Skill
    • Task

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • python3
    • bash

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Do loads about 7.1k tokens when it runs, and up to ~24k if it reads all its reference files. Until then it costs about 27 tokens; SKILL.md has 2,543 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~27
When it runs · the whole SKILL.md, loaded when a task matches
~7.1k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~24k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Read, Bash, Grep, Glob, Skill, Task

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from notque/vexjoy-agent at commit 5218674, republished under its MIT licence (© notque). 2,543 words, ~7,088 tokens.

Download SKILL.mdSave it as .claude/skills/do/SKILL.md (or your agent's skills folder). This skill also uses 17 other files; get the full folder from GitHub.
name
do
description
Classify user requests and route to the correct agent + skill. Primary entry point for all delegated work.
allowed-tools
Read, Bash, Grep, Glob, Skill, Task
user-invocable
true
argument-hint
<request>
routing.triggers
route task, classify request, which agent, delegate to skill, smart router
routing.category
meta-tooling

/do - Smart Router

ROUTER, not worker. Classify → agent+skill → dispatch. All execution goes to agents. Catching yourself reading/writing code or analyzing — pause and route to an agent. Exception: reading to fill the Task Spec is routing work — up to 5 files as excerpts; more → one read-only Explore dispatch whose deliverable is the excerpt list. Main: Classify→Select→Dispatch→Evaluate→Re-route→Report.

Do the whole thing (tests+docs). Product, not plan. Permanent solve over workaround. Search before building; test before shipping. Decompose into agent-sized tasks. The result reads as "that's done," not "that's a start." Partial → follow-up. Inject Simple+. Confidence in handling directly is a signal to route.

Dense-Complete Writing (build-dispatch.py injects; skills/shared-patterns/dense-complete-writing.md). User: banners+summary. Internal: JSON/reasoning/stacking (Verbose overrides).

Google Developer Documentation Style (build-dispatch.py injects; skills/shared-patterns/google-devdocs-style.md), alongside Dense-Complete. Precedence: completeness floor (never drop a required point) > Google construction (active voice, second person, context-before-instruction, formatting) > Dense-Complete length.

Instructions

Phase Banners

Every phase: /do > Phase N: PHASE_NAME — description... After Phase 2: === routing banner. Both required.


Phase 1: CLASSIFY

Read CLAUDE.md first.

ComplexityAgentSkillDirect
TrivialNoNoONLY user-named file by path
SimpleYesYesRoute
MediumRequiredRequiredRoute
Complex2+2+Route

Beyond user-named file = Simple+, must route. Uncertain → UP. Depth: references/progressive-depth.md. NOT Trivial: repos/URLs, opinions, git, codebase Qs, process, comparisons.

Parallel FIRST: 2+ failures / 3+ subtasks → multiple Agent tools. Research→research-coordinator-engineer; coord→project-coordinator-engineer; plan+exec→process; feature→workflow (.feature/→feature-state.py status). Force Direct: OFF.

Creation Detection: create/scaffold/build/"add new"/"new [component]" targeting agent/skill/pipeline/hook/feature/plugin/workflow/voice. Any of these + Simple+ → is_creation=true, Phase 4 Step 0. Not: debug/review/fix/refactor/explain/audit.

Gate: Complexity set. Creation → [CREATION REQUEST DETECTED]. Trivial: direct. Simple+: Phase 2.


Phase 2: ROUTE

Goal: fill every slot the request earns — agent(s), skill, pipeline. The semantic self-route is PRIMARY and runs FIRST — the orchestrator reads the manifest in-session and decides for itself, with no routing sub-dispatch (self-route beat the Haiku hop by +8.1 accuracy points, zero new safety misses: scripts/routing-ab-results/self-route-v1/VERDICT.md). pre-route.py is a guardrail that runs AFTER the semantic decision and never short-circuits it.

Contract: read for INTENT. Route on what the user MEANS. Trigger keywords are hints, never gates. Plain or non-native phrasing routes as well as jargon: "send my commits to the server" routes like "git push". Cost: one manifest read per request — measured and accepted.

Step 0: Semantic self-route (PRIMARY — runs first)

The routing manifest (scripts/routing-manifest.py) is the runtime form; docs/routing-map.md is the human-readable committed form of the same data. Both are generated from frontmatter, so frontmatter is the single source of truth. CI checks staleness via scripts/generate-routing-map.py --check.

Resolve SDIR to locate installed scripts, then read the manifest for this request (hash-gated cache or regenerate). This probe does not identify the active session model or provider:

bash
SDIR="${HOME}/.claude/scripts"; [ -d "$SDIR" ] || SDIR="${HOME}/.hermes/scripts"; [ -d "$SDIR" ] || SDIR="${HOME}/.factory/scripts"; [ -d "$SDIR" ] || SDIR="${HOME}/.codex/scripts"; [ -d "$SDIR" ] || SDIR="${HOME}/.reasonix/scripts"
REQUEST_FILE=$(mktemp); printf '%s' "{user_request}" > "$REQUEST_FILE"
bash "$SDIR/get-routing-manifest.sh" --request-file "$REQUEST_FILE"
rm -f "$REQUEST_FILE"

Use bash explicitly so routing does not depend on the script's executable bit. Pass the request: private overlay skills appear in the manifest only when the request names their domain, the same gate pre-route.py and /d apply.

Hold the decision internally as JSON. It stays unprinted; the [do-route] marker is its sole external trace:

{
  "agent": "primary agent-name or null",
  "agents": ["extra agent names for parallel fan-out; [] when one agent covers it"],
  "skill": "skill-name or null",
  "pipeline": "pipeline-name or null",
  "reasoning": "one sentence why",
  "confidence": "high/medium/low"
}

Routing rules (ALL apply):

SECTION-INTEGRITY RULE (HARD CONSTRAINT — never violate):
- `agent` must be a name listed in the manifest's AGENTS: section, or null. Do not put a skill name in `agent`.
- `skill` must be a name listed in the SKILLS: section, or null. Do not put an agent name in `skill`.
- `pipeline` must be a name listed in the PIPELINES: section, or null.
- If no agent fits, return `"agent": null` — DO NOT promote a skill into the `agent` slot. The router falls back to a default agent (e.g. `general-purpose`) and pairs it with your chosen skill.
- Skills marked FORCE are still skills, not agents. They fill the `skill` slot only. Example: `deploy` is a SKILL — on a match set `"skill": "deploy"` and pick a separate agent (or null) for `agent`.
- Pipelines marked FORCE are still pipelines. They fill the `pipeline` slot only, and the run still needs its own `agent` and `skill`.
- Every name in `agents` must also be an AGENTS: name, and distinct from `agent`.

FORCE-ROUTE RULE: manifest entries marked FORCE — in SKILLS: or in PIPELINES: — are selected when their domain clearly matches the user's intent. FORCE matching is semantic, not keyword-based — match what the user means, not individual words:
- "push my changes" → pr-workflow ✓ (git push) | "push back on this frontend" → NOT pr-workflow (means resist)
- "configure my fish shell" → deploy ✓ (the Fish shell) | "fish for bugs" → NOT deploy (means search)
- "quick fix to the login page" → quick ✓ (small edit) | "quick overview of the architecture" → NOT quick (means explore)
A FORCE pipeline (5 of the 29) binds the `pipeline` slot exactly as a FORCE skill binds `skill`. `pre-route.py` reads FORCE pipelines and applies their semantic guard policy; the semantic route still owns intent and must apply the same MEANS-not-words test above.

PIPELINE-SELECTION RULE: pick a pipeline whenever the work has REAL PHASES. The PIPELINES: section ships in every manifest and 25 pipelines are available; reach for one on ANY of:
(1) the intent semantically matches a pipeline's description or its `t:` triggers, OR
(2) the shape is multi-phase — 3+ distinct steps, gather-then-synthesize, mixed script+LLM work, or intermediate artifacts worth keeping, OR
(3) Phase 1 classified the request Complex.
The user saying the word "pipeline" is one signal among these, never the gate. Examples:
- "write an article in vexjoy voice about X" → writing ✓ | "research X with artifacts and sources" → research ✓
- "comprehensive review of these 8 files" → comprehensive-review ✓ (outranked by `right-size-review.py` when a real diff exists)
- "add caching to the API and update the docs" → feature-pipeline ✓ (frontend → implement → document; nobody said "pipeline")
- "help me understand how auth works across this repo" → explore-pipeline ✓ (parallel exploration; a plain pipeline earns the pick on shape, no FORCE flag needed)
Return null when the whole job is one step for one agent: "fix the typo on line 42 of foo.py", "debug this failing test", "review this 10-line function".

MULTI-AGENT RULE: `agents` holds EXTRA agents beyond `agent`; `[]` when one agent covers the work. Fan out when the parts run at once against separate files: 2+ independent failures, 3+ independent subtasks, per-package or per-language review, gather from several domains. Keep a single agent when the parts touch the same files or each step consumes the previous step's output. Complex (Phase 1) starts from fan-out and justifies staying single.

SPECIFICITY RULES:
- Pick the most specific match. "Go tests" → golang-general-engineer + programming, not general-purpose.
- Agent handles the domain. Skill handles the methodology. Pick both when possible.
- Prefer entries whose description semantically matches the request, not just keyword overlap.
- A task verb in the request (review, debug, refactor, test) prefers the skill matching that verb.
- GENUINE git / version-control operations — actually pushing code, committing files, opening or merging a pull request — select pr-workflow. Metaphorical uses ("commit to a decision", "merge ideas in your head", "push back on a proposal") do not route to pr-workflow.
- Return a single skill name as a string, not an array. Multiple candidates → pick the primary one.

COMBINATION DOCTRINE. Four surfaces compose; they do not compete. Fill every slot the request earns.

SurfaceAnswersSlot
Agentwho owns the domainagent, plus agents for fan-out
Skillwhich methodology runsskill
Pipelinewhich phase structure holds the workpipeline
Stackwhich extra rigor rides alongPhase 3 stack

One surface filled is the FLOOR, not the ceiling — and 29.2% of dispatches sit at or below it (evidence_route_decisions 2026-08-15; a fallback agent or fallback skill counts as unfilled). Combine upward: Simple = agent+skill. Medium = agent+skill+stack. Complex = 2+ agents (agent plus agents), 2+ skills (skill plus Phase 3 stack), and a pipeline unless one phase truly covers the work — which is how Phase 1's "2+/2+" row is satisfied with one skill string.

Composition rules:

  • A pipeline names the phases; the agent and skill still fill their slots and run inside those phases. Picking a pipeline replaces neither.
  • Stack always composes: anti-rationalization-core rides every route, and Phase 3 adds the rest.
  • A FORCE skill and a FORCE pipeline matching together is legal — different slots, both get filled.
  • Contradictory pairs, keep one: quick with any pipeline (quick means one step — drop the pipeline); comprehensive-review with right-size-review.py (a real diff wins); workflow as fallback beside a real domain skill (the fallback yields); two pipelines (pick the outer one, nest the other through Step 1c).

Step 0b: Apply the routing decision

Use the agent and skill fields directly. Low confidence → verify against the INDEX files.

Skill-greediness gate (HARD — non-negotiable for Simple+). Null skill → pick: review→review, debug→workflow (systematic-debugging), refactor→workflow (systematic-refactoring), audit→review (whole-repo→review), explain→assessment, compare→assessment (agent A/Bs→toolkit), plan→workflow, loop→workflow. Fallback: workflow.

Agent-greediness gate (HARD — non-negotiable for Simple+). general-purpose is the last resort, not the default. Measured share of dispatches: 42.5% (128/301, evidence_route_decisions 2026-08-15). Target band: unmeasured -- see the learning-db.py route health report for the current band and its provenance. A null agent works this table before general-purpose is permitted:

Domain signal in the requestAgent
Gogolang-general-engineer
Pythonpython-general-engineer
TypeScript UI, React, bundling, statetypescript-frontend-engineer
TypeScript runtime bug, async race, type errortypescript-debugging-engineer
Node backend, REST, auth, webhooksnodejs-api-engineer
Swift, Kotlin, PHPswift-general-engineer, kotlin-general-engineer, php-general-engineer
SQL schema, query plans, migrationsdatabase-engineer (SQLite + Peewee → sqlite-peewee-engineer)
ETL, warehouse, stream processingdata-engineer
Kubernetes, Helm, Ansiblekubernetes-helm-engineer, ansible-automation-engineer
Metrics and dashboards, search clusters, message queuesprometheus-grafana-engineer, opensearch-elasticsearch-engineer, rabbitmq-messaging-engineer
This toolkit: Python hookshook-development-engineer
This toolkit: skills, agents, routing tables, ADRs, INDEX filestoolkit-governance-engineer
Harness or toolkit upgrade sweepsystem-upgrade-engineer
Tests, coverage, E2Etesting-automation-engineer
Web performance; frontend system and accessibilityperformance-optimization-engineer, ui-design-engineer
React Native, Exporeact-native-engineer
API docs and runbooks; explainers and articlestechnical-documentation-engineer, technical-journalist-writer
Review: quality / system + security / ADR + business logic / perspectivesreviewer-code, reviewer-system, reviewer-domain, reviewer-perspectives
Broad investigation; agent coordination; pipeline scaffoldingresearch-coordinator-engineer, project-coordinator-engineer, pipeline-orchestrator-engineer
MCP serversmcp-local-docs-engineer

No row fits → read the manifest's AGENTS: section again and match on description before falling back.

Pairing rule (the measured defect). 72% of those 128 (92) carried a named domain skill, fallbacks excluded: the router read the domain and had no slot to say so. A specific domain skill therefore obliges a matching domain agent — or a stated reason no agent covers it.

Fallback reason. Every general-purpose pick carries a written reason, one line, in both places the dispatch records it: the Step 3 banner's -> Agent: why field, and task_spec.constraints handed to build-dispatch.py. Shape: general-purpose: <why no listed agent covers this domain>. A pick with no reason is a routing bug — return to the table.

Section validator (before dispatch):

agents = tokens(manifest, "AGENTS:", "SKILLS:")
skills = tokens(manifest, "SKILLS:", "PIPELINES:")
if route.agent not in agents:
    if route.agent in skills: route.skill ||= route.agent
    route.agent = None; record_misroute(...)
route.agent ||= "general-purpose"

No pair→general-purpose+workflow. [cross-repo]→.claude/agents/. Code→domain agents.

Step 1: Deterministic safety-net (pre-route.py — runs AFTER the semantic decision, never short-circuits it)

Use its result ONLY as a guardrail. Run once per /do; Phase 3 reads its stack:

bash
REQUEST_FILE=$(mktemp); printf '%s' "{user_request}" > "$REQUEST_FILE"
python3 "$SDIR/pre-route.py" --request-file "$REQUEST_FILE" --json-compact
rm -f "$REQUEST_FILE"

→ PRE_ROUTE_RESULT.

  • (a) Safety-critical force-route override — the one case that beats Step 0. "confidence": "high" with a force_route match for pr-workflow or a security skill overrides a disagreeing semantic pick: genuine push, commit, create-PR, and merge work, and security work, must hit the quality gates (lint, tests, CI). Record match_type. The agent stays the Step 0 pick, or the Agent-greediness table result when Step 0 returned null.
  • (b) Every other result keeps the Step 0 decision. Phrase and unigram guards inside pre-route.py already suppress idiom false positives ("fish out", metaphorical commit/merge), so a guarded or non-matching result leaves the semantic pick standing. Matching only force-routes is by frontend — the semantic route owns the long tail.

Step 2: Apply skill override — "review"→review, "debug"→workflow (systematic-debugging pipeline), "refactor"→workflow (systematic-refactoring pipeline), "TDD"→testing. Full table in INDEX.

Step 3: Routing banner (first visible output)

===================================================================
 ROUTING: [brief summary]
===================================================================
 Selected:
   -> Agent: [name] - [why]
   -> Skill: [name] - [why]
   -> Pipeline: PHASE1 → PHASE2 → ... (if pipeline; phases from skills/workflow/references/pipeline-index.json)
   -> Extra Rigor: [verification patterns for code/security/testing when needed]
 Invoking...
===================================================================

Trivial: Classification: Trivial - [reason], Handling directly.

Gate: Agent+skill set, banner shown. Phase 3.


Show full SKILL.md (1,303 more words)Show less
Phase 3: ENHANCE

Stack on signals.

SignalEnhancement
SubstantiveRetro knowledge when material
"with tests"/"production ready"testing+testing
"research needed"/"investigate first"research-coordinator-engineer
Comprehensive/thorough/full review or 5+ files, no diffreview (Security, BizLogic, Arch)
Multi-file review, real diffright-size-review.py; T1→3,T2→12,T3→17,T4→27. CRITICAL+1. Outranks comprehensive-review.
Complex implementationOffer process
"local only"/"no push"/"keep it local"/"stay local"Inject shared-patterns/local-only.md
Voice profile (e.g. voice-example-profile)Stack writing; voice-*=profile
Needed knowledge or approval exists with another personworkflow — human-source-elicitation.md
Observation can settle a high impact uncertaintyworkflow — empirical-prototype.md
Objective with done-criteria / "loop until done"Stack workflow
Protected PR/security intent with a Go source operandKeep pr-workflow/security primary and stack programming from PRE_ROUTE_RESULT.stack or router pairs_with

Review overlap: real-diff row wins; fallback only without diff.

Unresolved stateAction
Low impact, reversible, or covered by a safe conventionState the assumption and execute.
One high impact decision owned by the current userAsk one question with a recommendation, then execute.
Two or more high impact decisions owned by the current userUse depth-first-interview.md: batch the independent frontier, then traverse genuine dependencies; interviews initiated by the router cap at five questions and three decision rounds.
Facts, constraints, preferences, or approval exist with another personUse human-source-elicitation.md; draft the artifact and never send without authorization.
Evidence can settle the choice faster than discussionUse empirical-prototype.md: Question → Evidence → Verdict → Next action.

Explicit "interview me" or "grill me" opts into exhaustive material coverage until shared understanding or a user stop; it has no arbitrary question or round cap. An implicit interview must earn its interruption cost through likely avoided rework and remains bounded. "Just build it," "skip questions," and equivalents use recommended defaults and continue.

An interview is not terminal when it suspends an active delivery objective. Compile the decisions and automatically resume the originating build, fix, deploy, validation, or other execution flow; never report the decision artifact as completion of the original objective. Stop after compilation only when the user explicitly requested only an interview artifact or excluded implementation.

Ask the current independent frontier in one logical round. In Markdown, include the full frontier with a recommendation for each and wait once. A harness native structured question UI may chunk the frontier only at its capacity per call; do not recompute between chunks unless an answer invalidates a pending question. Single question turns are reserved for true dependency branches. Interviews initiated by the router cap at five questions and three decision rounds, plus at most one concise confirmation response; explicit grills construct and exhaust the material decision tree, with the kinds and number of questions determined by what shared understanding requires. Do not add ceremonial questions. Answering the last frontier does not authorize execution by itself: ask one concise shared understanding confirmation. Skip that extra confirmation only when the same response explicitly says "proceed", "build it", "looks right, continue", or equivalent. Resume nested execution only after explicit proceed or confirmation; a request for only an interview stops at the artifact.

Check pairs_with before stacking. Skills with built-in verification gates may suffice.

Step G: GATHER (Simple+) — fill the Task Spec before the Gate.

  1. Keep request_verbatim unchanged. State this worker's intent, constraints (including authority), files, ownership, and acceptance.
  2. Include decisions, prior results, and gaps when they affect this assignment. Summarize findings and link durable evidence; quote exact text only when its wording matters. Do not copy the whole investigation into every handoff.
  3. Verify named paths. Add excerpts only when they explain a decision or let the worker act; the builder validates paths even when gathering is off.
  4. Use context_mode: "summary" for current git status, diff stat, and recent commits. Use files when initial excerpts help, or none when the worker already has valid context. The legacy default is files. Mode none retains a notice that no fresh state was gathered, so the handoff envelope stays complete. Legacy --no-gather removes that envelope too; use none for Medium+ handoffs. Context modes never omit the supplied Task Spec or required injections.

Reuse reads only while their source and task context remain unchanged; a fresh worker needs access to the relevant content or references. For worker transitions, use process. Verification evidence follows testing; repeat checks when their inputs or relevant environment change, not just because a new phase starts.

Gate: Enhancements applied, Task Spec filled. Phase 4.


Phase 4: EXECUTE

Step 0: Creation — ADR at adr/{name}.md, adr-query.py register, plan.

Step 1: Plan (Simple+) — task_plan.md; skip Trivial.

Step 1b: Quality-loop (Medium+ code mod) — references/quality-loop.md 14 phases. P2 agent=implementation. Force-route in loop. Skip non-code/Trivial/Simple.

Step 1c: Workflow — Pipeline pick or Complex no pick or explicit → ${CLAUDE_SKILL_DIR}/references/workflow-dispatch.md. Both 1b+1c → quality-loop OUTER, workflow in IMPLEMENT.

Step 2: Invoke agent

build-dispatch.py — source for [do-route], exact Skill-tool calls, thinking, budget, Task Spec, injections, worktree/local-only. Do not hand-assemble it.

bash
python3 "$SDIR/build-dispatch.py" --json '{
  "agent": "<agent>", "skill": "<skill; omit when agent-only>",
  "pipeline": "<pipeline; omit when Phase 2 returned null>",
  "complexity": "<trivial|simple|medium|complex>",
  "model": "inherit",
  "context_mode": "summary",
  "provider": "<anthropic|openai|other>",
  "manual_model_override": false,
  "health": "-",
  "fallback_reason": "<REQUIRED when agent=general-purpose; omit otherwise>",
  "stack": ["s1","s2"],
  "task_spec": {"request_verbatim": "<user message, unchanged>", "intent": "...",
                "constraints": "<applicable rules, limits, and authorization>",
                "decisions": "...", "prior_results": "...", "gaps": "...",
                "acceptance": "<command> → <expected>",
                "files": "<owned paths; optional line ranges>", "ownership": "<worker scope>",
                "operator_context": "..."},
  "flags": {"worktree": false, "local_only": false, "thinking_override": null},
  "token_remaining": 480000
}'

agent/skill/complexity: Phase 2 (null→-). pipeline: the Phase 2 pick, passed so the marker carries it; omit when null. The builder validates each name against its index, then emits this exact action contract once per callable skill, primary first with ordered stack de-duplication: Call the Skill tool with \skill-name`.Shared-pattern stack entries remain prompt injections. Agents and pipelines stay out of Skill-tool calls. Fan-out: one call per agent, sameskill/pipeline. model: **required Medium+**; use inheritby default. Explicit overrides followreferences/model-selection.md. providerdescribes the active harness (anthropic|openai|other), not an installed directory.health: -(in-context weights read retired —docs/route-loop-validation.md). fallback_reason: **required when agent=general-purpose** — the one-line reason from the Agent-greediness gate, any prose; build-dispatch.pyslugifies it and appendsfallback=<slug>to the marker so every fallback is countable. Dispatch fails without it.stack: Phase 3. task_spec: mandatory Simple+ (Phase 3 Step G); the script rejects an empty spec at Medium+; creation+"match ADR". thinking_override`: slow=security/arch/5+files; fast=lookups.

[do-route] = SOLE signal for routing-decision-recorder. Sub-agents excluded.

Fallback: [do-route] agent={a} skill={s|-} complexity={c}[ pipeline={p}] health=- model={m|-}, Task Spec inline, dispatch.

Model selection. Default to model: "inherit". Omit model_policy, model_effort, and tool-level model/effort overrides. Do not pass the word inherit to an agent tool as a model name. This uses the current session model when the harness supports inheritance. If it cannot, report the limitation rather than silently selecting another model.

The marker records the requested selection, not an observed worker model. The actual model remains unknown unless the harness reports it. Do not infer session identity from installed script directories or historical model tables.

Medium+ must provide model: "inherit", a supported explicit model, or a policy. For a deliberate override, load references/model-selection.md; existing provider policies and explicit choices remain supported. Use scripts for deterministic work. Change model or effort only for a concrete task need or a missed acceptance criterion. Session configuration stays under the user's control. Codex prompts stay read-only and public unless the task requires otherwise.

Complex (3+ sources):

VerbsMode
list/count/extract/inventory/search/check/find/grepScripts when deterministic; otherwise readers → synthesis, inheriting the session model
review/audit/assess/analyze/debug/investigate/evaluateSingle agent, inheriting the session model

Simple/Medium: direct. Feature-branch; mods commit. isolation:"worktree"→flags.worktree. Non-org: 3 reviews→fix→PR. Org: confirm git.

Step 3: Multi-part / fan-out — deps sequential; independent parallel (max 10). Phase 2 agents → ONE build-dispatch.py call and ONE Agent dispatch per agent: N agents = N calls = N markers, one marker each. Emit the parallel Agent calls in a single message. Each agent gets its own files and scope. Sequential stages pass relevant prior results and evidence locations; synthesis receives the findings and access to evidence from every required stage. Packing several markers into one Bash/Workflow script keeps them recorded but forfeits route-fit scoring, which reads a lone marker per event.

Step 4: Auto-Pipeline Fallback (no match, Simple+) — auto-pipeline. None → closest+workflow. Never empty skill.

Lazy-completion check. "Done" on enumerable → compare scope; short → reject, re-dispatch (references/lazy-completion-detector.md). Re-dispatch → route failure.

Gate: Agent invoked, results delivered.


Routing telemetry (automatic)

Hooks record routing. On an observed route failure, or to re-derive a quoted telemetry figure → load ${CLAUDE_SKILL_DIR}/references/routing-telemetry.md (hooks table, outcome fidelity, route-failure protocol, figure queries).


Error Handling

On any routing error → load ${CLAUDE_SKILL_DIR}/references/error-handling.md.

References

  • ${CLAUDE_SKILL_DIR}/references/progressive-depth.md
  • agents/INDEX.json, skills/INDEX.json
  • skills/workflow/SKILL.md, skills/workflow/references/pipeline-index.json
  • scripts/routing-manifest.py

© notque, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 17 other files (references) in skills/meta/do of notque/vexjoy-agent.

  • SKILL.md
  • references/error-handling.md
  • references/execution-architecture.md
  • references/hooks-guide.md
  • references/lazy-completion-detector.md
  • references/model-selection.md
  • references/parallel-analysis.md
  • references/perspective-prompts.md
  • references/pipeline-guide.md
  • references/planning-guide.md
  • references/progressive-depth.md
  • references/quality-gates.md
  • references/quality-loop.md
  • references/repo-architecture.md
  • references/routing-telemetry.md
  • references/semantic-first-ab-results.md
  • references/workflow-dispatch.md
  • references/worktree-rules.md

Open the folder on GitHubat commit 5218674

Compare with similar skills

Do next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Do compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Do this skillnotque/vexjoy-agent438—~7.1kAutomated safety check: NotesMIT
OmniRoute Routing CLIdiegosouzapw/OmniRoute74k1 repos~342Automated safety check: PassMIT
OmniRoute Combo Routingdiegosouzapw/OmniRoute74k—~2.1kAutomated safety check: PassMIT
Intelligence Routeruvnet/ruflo74k—~874Automated safety check: NotesMIT
Correctcursor/plugins10k3 repos~612Automated safety check: PassNone
CorrectionNxcoreAI/EverRoom3k—~290Automated safety check: PassCustom licence

Similar skills

  • OmniRoute Routing CLI

    diegosouzapw/OmniRoute

    Creates, switches, and inspects OmniRoute model-routing combos, plus a suggestion command with cost and latency constraints.

    74k GitHub starsUsed in 1 repo~342 tokens
    AI & LLM EngineeringAuto-check passed
  • OmniRoute Combo Routing

    diegosouzapw/OmniRoute

    Manages OmniRoute routing combos through its REST API: create and update combos, choose from 19 strategies, set fallback chains, test outcomes and read metrics.

    74k GitHub stars~2.1k tokensUpdated today
    Backend & APIsAuto-check passed
  • Intelligence Route

    ruvnet/ruflo

    Route tasks via the 3-tier model selector and learned patterns; emits a routing rationale via hooksexplain

    74k GitHub stars~874 tokensUpdated today
    DevelopmentAuto-check: notes
  • Correct

    cursor/plugins

    Official

    Find the mistakes agents keep repeating in this repo and make each one impossible.

    10k GitHub starsUsed in 3 repos~612 tokens
    Auto-check passed
  • Correction

    NxcoreAI/EverRoom

    Compute Room overview corrections—citation corrections as per-claim edits and general corrections as a single proposal.

    3k GitHub stars~290 tokensUpdated today
    Research & ScienceAuto-check passed
  • Changelog Entry

    sickn33/agentic-awesome-skills

    Generate a properly formatted CHANGELOG.md entry in Keep a Changelog format from a commit range or PR.

    47k GitHub starsUsed in 1 repo~1.1k tokens
    DevelopmentAuto-check passed

More from notque/vexjoy-agent

All 61 skills in this repo
  • Game Asset Generator

    notque/vexjoy-agent

    Deterministic palette/matrix pixel art (not AI). An agent skill from notque/vexjoy-agent.

    438 GitHub stars~2.3k tokensUpdated 5 days ago
    Auto-check: notes
  • PR Workflow

    notque/vexjoy-agent

    Pull request lifecycle: commit, codex review, sync, review, fix, status, cleanup, and PR mining.

    438 GitHub stars~2.8k tokensUpdated 5 days ago
    Auto-check: notes
  • Architecture Deepening

    notque/vexjoy-agent

    Improve architecture across modules by deepening interfaces.

    438 GitHub stars~3.3k tokensUpdated 5 days ago
    Auto-check: notes
  • Code Quality

    notque/vexjoy-agent

    Code quality: cleanup, linting, formatting, quality gates. An agent skill from notque/vexjoy-agent.

    438 GitHub stars~1.5k tokensUpdated 5 days ago
    Auto-check: notes
  • Codebase Analyzer

    notque/vexjoy-agent

    Statistical rule discovery from Go codebase patterns. An agent skill from notque/vexjoy-agent.

    438 GitHub stars~2k tokensUpdated 5 days ago
    Auto-check: notes
  • Comment Quality

    notque/vexjoy-agent

    Review and fix temporal references in code comments. An agent skill from notque/vexjoy-agent.

    438 GitHub stars~2k tokensUpdated 5 days ago
    Auto-check: notes

Questions about Do

What does Do do?

Classify user requests and route to the correct agent + skill. Do is an agent skill from notque/vexjoy-agent. Classify user requests and route to the correct agent + skill.

How do I install Do in Claude Code?

Run `npx skills add notque/vexjoy-agent --skill do -a claude-code`. Or copy the skill folder (skills/meta/do in notque/vexjoy-agent) into .claude/skills/do in your project. Claude Code loads it when a task matches its description.

How do I install Do in Codex?

Run `npx skills add notque/vexjoy-agent --skill do -a codex`. Or copy the skill folder (skills/meta/do in notque/vexjoy-agent) into .agents/skills/do in your project. Codex loads it when a task matches its description.

Can I use Do in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add notque/vexjoy-agent --skill do -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/do, .gemini/skills/do, .github/skills/do and .opencode/skills/do in your project.

What does Do need to run?

Going by SKILL.md and its folder, Do needs the command-line tools its instructions call (python3 and bash). Its frontmatter pre-approves these tools: Read, Bash, Grep, Glob, Skill, Task.

Does Do access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Do safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Do use?

Do is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Do use?

About 7.1k tokens (SKILL.md is roughly 28k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 17k tokens, read only when the agent opens those files.

What are the alternatives to Do?

Skills that share tags, products or a category with Do: OmniRoute Routing CLI (diegosouzapw/OmniRoute, 74k stars), OmniRoute Combo Routing (diegosouzapw/OmniRoute, 74k stars), Intelligence Route (ruvnet/ruflo, 74k stars) and Correct (cursor/plugins, 10k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Do?

notque (a GitHub user) maintains it in notque/vexjoy-agent, which has 438 GitHub stars. The repository holds 61 skills in this directory. The repository was last updated on October 3, 2026.

Source: notque/vexjoy-agent on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.