claude-code-queue
CLAUDE.md2 starsChanged 4 months agoMITView on GitHub
A single skill: /queue <request> defers a request until the current turn ends. There is deliberately no mechanism here — no hooks, no scripts, no storage. Read the "History" section before adding any. - SKILL.md — the whole skill: frontmatter (disable-model-invocation: true, user-invoked only) + the instruction body delivered with each queued request. Installed at ~/.claude/skills/queue/, the directory name is what registers /queue. - docs/ — the entire GitHub Pages site (repo Settings → Pages → source is set to…
- Pipes a download into a shell
In this repositoryOne other file it gives its agents.
- queueSkill
The file
We split this CLAUDE.md into the rules it gives an agent
1 rule. About 0 are common, 0 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 69
Don't reintroduce hooks/scripts unless native behavior regresses — verify against a real session transcript …
≈ “Common” is an estimate: at least 1 in 5 of the 26,980 CLAUDE.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
claude-code-queue — dev notes
A single skill: /queue <request> defers a request until the current turn
ends. There is deliberately no mechanism here — no hooks, no scripts, no
storage. Read the "History" section before adding any.
Layout
SKILL.md— the whole skill: frontmatter (disable-model-invocation: true, user-invoked only) + the instruction body delivered with each queued request. Installed at~/.claude/skills/queue/, the directory name is what registers/queue.docs/— the entire GitHub Pages site (repo Settings → Pages → source is set to/docs, not root — keeps the repo root to just the skill + its docs).en_US.html/cn_ZH.htmlare the landing pages (symmetric names — neither language gets to be the unnamed default);index.htmlis a tiny meta-refresh stub toen_US.htmlso the bare directory URL still resolves;install.shis thecurl … | bashinstaller, fetching onlySKILL.mdfrom raw master into~/.claude/skills/queue/(idempotent — re-run to update);.nojekylldisables Jekyll soinstall.shis served byte-for-byte atjinhuang712.github.io/claude-code-queue/install.sh. None of this is part of the mechanism.
Ships as a standalone skill, NOT a plugin
Install is the curl … | bash one-liner in install.sh (drops SKILL.md into
~/.claude/skills/queue/). There is intentionally no .claude-plugin/ manifest
and no marketplace. Reason (verified against the docs + a live install, July
2026): Claude Code always namespaces a plugin's command as
/plugin-name:command, and nothing removes the prefix. Evidence, strongest
first:
- The cleanest possible plugin — a single
SKILL.mdat the plugin root,name: queuein frontmatter,name: "queue"inplugin.json, noskills/orcommands/dir (cache commitb8525fb58468) — loaded in a live v2.1.201 session asplugin:queue:queue. So the single-skill-at-root layout does not buy a bare command. - The plugins reference says a root
SKILL.md's frontmatternamesets the "invocation name" — but that only controls the segment after the colon (without it, a marketplace install falls back to the version-hash dir name). It never drops thequeue:namespace. - Earlier probes agreed: a
commands/qtest.mdinside the plugin registered as/queue:qtest.
A bare /queue (the whole point) only comes from a standalone skill under
~/.claude/skills/ with no .claude-plugin/. Adding a .claude-plugin/
back — even for the "elegant" /plugin install flow — turns it into a
namespaced plugin and breaks the bare command. The trade-off was put to the
user directly (bare /queue vs /plugin-install elegance); they chose the bare
command, so we ship a standalone skill with a curl installer. Don't re-add a
manifest.
History — why there is no code
Earlier versions implemented queueing themselves: a UserPromptSubmit/Stop hook
pair (queue-hook.py), per-session storage under ~/.claude/queue/, busy
detection, preemption counters, and a test suite. Investigation (July 2026,
Claude Code v2.1.201) showed all of it was redundant: Claude Code natively
holds any recognized slash command typed mid-turn until the whole turn ends
(FIFO, one per turn), while plain messages are injected at the next tool-call
boundary and naturally preempt. The hooks had in fact never fired in the
sessions where the queue "worked" — native behavior was doing everything.
The mechanism was deleted; registering the command IS the feature. See git
history (hooks/queue-hook.py et al.) if you need the old implementation.
Conventions
- One concern per commit; messages explain why (the failure mode addressed).
- Don't reintroduce hooks/scripts unless native behavior regresses — verify
against a real session transcript (
~/.claude/projects/<proj>/<sid>.jsonl,queue-operationrecords) before believing any claim about delivery timing.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

