by notque
VexJoy Agent - Creator of the /do router
# Add to your Claude Code skills
git clone https://github.com/notque/vexjoy-agentVexJoy Agent is a complete agent-driven workflow system for Claude Code, Codex, and Gemini CLI. It gives all three CLIs domain-specific expertise, step-by-step workflows, and automated quality gates. The result is your coding agent working like a team of Go, Python, Kubernetes, review, and content specialists instead of one generalist.
It starts from the moment you type a request. You don't pick agents, configure workflows, or learn any internal concepts. You just say what you want done.
/do debug this Go test
In Claude Code, the smart router command is /do. In Codex, use $do. In Gemini CLI, use /do (Gemini discovers skills from ~/.gemini/skills/ automatically).
A router reads your intent and selects a Go specialist agent paired with a systematic debugging methodology. The agent creates a branch, gathers evidence before guessing, runs through phased diagnosis, applies a fix, executes tests, reviews its own work, and presents a PR. You describe the problem. The system handles everything else.
This works because the toolkit separates what you know from what the system knows. Agents carry domain expertise (Go idioms, Python conventions, Kubernetes patterns). Skills enforce process methodology (TDD cycles, debugging phases, review waves). Hooks automate quality gates that fire on lifecycle events. Scripts handle deterministic operations where you want predictable output, not LLM judgment. The router ties it all together, classifying requests, selecting the right combination, and dispatching.
The result: consistent, domain-specific output across Go, Python, TypeScript, infrastructure, content, and more. No configuration required. A first-time user and a power user get the same quality results. The power user just understands why.
No comments yet. Be the first to share your thoughts!
A game built entirely by Claude Code using these agents, skills, and pipelines. Every step from design through implementation.
Requires Claude Code installed and working (claude --version should print a version number). Codex CLI and Gemini CLI are also supported: the installer mirrors toolkit skills and agents into ~/.codex/ and ~/.gemini/ so all three CLIs can use the same skill and agent library.
git clone https://github.com/notque/vexjoy-agent.git ~/vexjoy-agent
cd ~/vexjoy-agent
./install.sh --symlink
The installer links agents, skills, hooks, commands, and scripts into ~/.claude/, where Claude Code loads extensions from. It also mirrors skills and agents into ~/.codex/ for Codex and ~/.gemini/ for Gemini CLI. Use --symlink to get updates via git pull, or run without it for a stable copy.
Verify the install with:
python3 ~/.claude/scripts/install-doctor.py check
python3 ~/.claude/scripts/install-doctor.py inventory
If you update the repo later and want Codex/Gemini to see newly added skills, rerun ./install.sh --symlink from the repo root.
Command entry points:
/do$doDetailed setup: docs/start-here.md
The toolkit mirrors agents, skills, and a curated subset of hooks into ~/.codex/ so they work with the OpenAI Codex CLI alongside Claude Code. The mirror runs automatically on every install.sh; no flags required.
What mirrors
agents/ (and private-agents/ if present) is copied or symlinked to ~/.codex/agents/.skills/, private-skills/, and private-voices/*/skill/ goes to ~/.codex/skills/.~/.codex/hooks/ with a matching generated ~/.codex/hooks.json. The allowlist covers SessionStart injectors (KAIROS briefing, operator context, team config, rules distill), a Stop recorder (session learning), and a PostToolUse Bash scanner. See scripts/codex-hooks-allowlist.txt.install.sh sets [features] codex_hooks = true in ~/.codex/config.toml using a TOML merge that preserves existing sections.What does not mirror (yet)
Bash tool today, so any hook guarding Write or Edit would register but never run.PreCompact, SubagentStop, Notification, or SessionEnd events; hooks on those events stay Claude Code only.install.sh warns if the installed version is below that, and prints a neutral note if the codex binary is not found.Opting out
There is no opt-out flag. The mirror is harmless when Codex CLI is not installed: ~/.codex/ entries sit unused until you install Codex. To skip the hooks portion, delete ~/.codex/hooks/ and ~/.codex/hooks.json after install; the toolkit does not recreate them on normal use.
Reference: adr/182-codex-hooks-mirror.md. Upstream Phase 2 tracker: openai/codex#16732.
The toolkit mirrors agents, skills, and a curated subset of hooks into ~/.gemini/ so they work with the Google Gemini CLI alongside Claude Code and Codex. The mirror runs automatically on every install.sh; no flags required.
What mirrors
agents/ (and private-agents/ if present) is copied or symlinked to ~/.gemini/agents/.skills/, private-skills/, and private-voices/*/skill/ goes to ~/.gemini/skills/.~/.gemini/hooks/. Hook configuration is merged into ~/.gemini/settings.json (only the hooks key is modified; all other settings are preserved). See scripts/gemini-hooks-allowlist.txt.Event name mapping
| Claude/Codex | Gemini CLI | |---|---| | SessionStart | SessionStart | | Stop | SessionEnd | | PostToolUse | AfterTool | | PreToolUse | BeforeTool |
Tool name mapping: Codex Bash becomes Gemini run_shell_command.
Hook runtime compatibility
Hooks can detect which CLI is invoking them via detect_cli() in hooks/lib/hook_utils.py. Normalization functions (normalize_input(), detect_cli()) are available in hooks/lib/hook_utils.py for hooks to import — they are not auto-applied. Output format (hookSpecificOutput) is shared across all three CLIs.
Opting out
The mirror is harmless when Gemini CLI is not installed. To remove hooks after install, delete ~/.gemini/hooks/ and remove the hooks key from ~/.gemini/settings.json.
The toolkit already supplies routing (/do), domain knowledge (agents), methodology (skills), and enforcement (hooks, CLAUDE.md). The shipped Claude Code system prompt, which is several thousand tokens, largely duplicates that structure for toolkit users. Override it to shrink per-request token cost:
claude --system-prompt "."
The . is just a non-empty placeholder (some shells reject an empty string). This is a token-economy and architectural-fit pattern, not a claim about output quality.
Trade-off: overriding the default strips Claude Code's built-in tool-use instructions and style guidance. That context comes back through the toolkit's own agents, skills, hooks, and CLAUDE.md, which is why the pattern fits here. On a bare Claude Code install without the toolkit, use --append-system-prompt "..." instead so the default guidance stays in place.
Routing. You type a request. The router entry point is /do in Claude Code and Gemini CLI, and $do in Codex. It classifies intent, selects a domain agent and a workflow skill, and dispatches. No menus, no configuration.
Planning. For non-trivial work, the system creates a plan before touching code. Plans have phases, gates, and saved artifacts at each step.
Execution. A domain-specific agent handles the work using its skill's methodology. Go work gets Go idioms. Python work gets Python conventions. Reviews get multi-wave specialist panels.
Quality gates. Hooks fire automatically: anti-rationalization checks on code modifications, error learning after failures, context injection at session start. Quality is structural, not advisory.
Verification. Tests run. Deterministic scripts validate what LLM judgment cannot. The system does not claim completion without evidence.
Delivery. Changes land on a feature branch. PRs include lint checks, test runs, and review gates. Nothing merges without CI passing.
Agents carry domain-specific expertise. Not thin wrappers that say "you are an expert," but concrete knowledge: version-specific idiom tables, anti-pattern catalogs with detection commands, error-to-fix mappings from real incidents.
Software Engineering
Code Review