moai
SkillProductivityMoAI unified orchestrator for autonomous development. Routes natural language or subcommands (plan, run, sync, project, fix, loop, mx, feedback, review, clean, codemaps, gate, e2e, harness, goal, todo) to specialized agents.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the moai skill
What this skill tells your AI
The instructions your AI receives, as published by modu-ai/moai-adk in .claude/skills/moai/SKILL.md and read by ahel’s review.
Pre-execution Context
!git status --porcelain 2>/dev/null || true
!git branch --show-current 2>/dev/null || true
Essential Files
.moai/config/sections/*.yaml
Authority References
Rules and constraints governing all workflows are always loaded from these sources. Do NOT duplicate their content here:
- Core identity, orchestration principles, agent catalog: CLAUDE.md
- Quality gates, security boundaries: .claude/rules/moai/core/moai-constitution.md
- SPEC workflow phases, token budgets: .claude/rules/moai/workflow/spec-workflow.md
- Development methodologies (DDD/TDD): .claude/rules/moai/workflow/spec-workflow.md (Run Phase section)
- Agent definitions: See CLAUDE.md Section 4. For agent creation, use builder-harness subagent (artifact_type=agent).
- @MX tag rules and protocol: .claude/rules/moai/workflow/mx-tag-protocol.md
Routing Observation Ledger
When dispatching a subcommand or workflow, the orchestrator records the routing decision to the append-only routing-ledger (.moai/state/routing-ledger.jsonl) via moai harness ledger record at dispatch time — the request text is piped via stdin and only a privacy-preserving digest is stored, never verbatim user text. As the routed pipeline reaches gate points, machine evidence is appended via moai harness ledger evidence (gate exits, audit verdicts, verify-log paths). Outcome is never supplied as an input; it is finalized from machine evidence only. This observation is opt-in and fail-open — it never blocks routing. NOTE: recording depends on the orchestrator actually invoking moai harness ledger record at dispatch; when the observability opt-in is ON but that record call is not emitted, the ledger stays empty — an un-recorded dispatch, NOT an opt-in-off no-op. Do not read an empty routing-ledger as 'opt-in disabled'.
Intent Router
Raw User Input
$ARGUMENTS
Routing Instructions
[HARD] Route the Raw User Input above using the strict priority order below. Extract the FIRST WORD of the input for subcommand matching. All text after the subcommand keyword is CONTEXT to be passed to the matched workflow — it is NOT a routing signal and MUST NOT influence which workflow is selected.
Execution Mode Flags (mutually exclusive)
--team: Force agent-team of the Phase 4 4-mode catalog (.claude/rules/moai/workflow/orchestration-mode-selection.md§A), subject to its capability gate--solo: Force serial (sub-agent — single sequential agent per phase)- No flag: The orchestrator auto-selects from the full 4-mode catalog at Phase 4; the complexity auto-select thresholds are stated once in
orchestration-mode-selection.md§B.1 (machine source:workflow.yamlauto_selection) and are not restated here
The --team / --solo flags are forced overrides onto the catalog; the flag-free default resolves through the catalog decision tree (§B) and its capability gates. The --mode dispatch axis is a separate axis — see the crosswalk in orchestration-mode-selection.md §G.1 (correspondence, not merge).
Priority 1: Explicit Subcommand Matching
[HARD] Extract the FIRST WORD from the Raw User Input section above. If it matches any subcommand below (or its alias), route to that workflow IMMEDIATELY. Do NOT analyze the remaining text for routing — it is context for the matched workflow:
[HARD] Mixed-language guard: FIRST-WORD subcommand matching applies only when (a) the input is pure ASCII/Latin, OR (b) the message is prefixed with a literal /moai slash form. When the message contains non-Latin script (Korean/Japanese/Chinese/etc.) beyond the first token, do NOT route immediately on the leading English word — treat it as a possible embedded loanword and fall through to Priority 3 semantic classification of the ENTIRE message. Rationale: CJK technical writing embeds English loanwords such as 'goal', 'run', 'fix', 'plan' at sentence start; immediate first-word routing misfires on them.
- plan (aliases: spec): SPEC document creation workflow
- run (aliases: impl): DDD/TDD implementation workflow (per quality.yaml constitution.development_mode)
- sync (aliases: docs, pr): Documentation synchronization and PR creation
- project (aliases: init): Project documentation generation
- feedback (aliases: fb): GitHub issue creation
- fix: Auto-fix errors in a single pass
- loop: Iterative auto-fix until completion conditions are satisfied
- mx: MX tag scan and annotation for codebase
- review (aliases: code-review): Code review with security and MX tag compliance
- clean (aliases: dead-code): Identify and safely remove dead code
- codemaps: Generate architecture documentation in
.moai/project/codemaps/ - gate (aliases: check, pre-commit): Lightweight pre-commit quality gate (lint+format+type-check+test)
- e2e (aliases: e2e-test, end-to-end): Multi-platform end-to-end testing (web/mobile/desktop) with project-type auto-detection and CLI-first toolchain selection
- harness (aliases: hrn): harness lifecycle management — learning-lifecycle verbs (status / apply / rollback <date> / disable) + v4-lifecycle verbs (list / edit / remove / doctor), all dispatching through the unified
moai harnessGo-binary Cobra subcommand tree; the slash command is the documented user-facing entry point - goal: Condition-declared universal agentic loop — arm a completion condition (
/moai goal "<condition>"), check status, clear, or resume; evaluated each turn-end by thestop-goalStop hook - todo (aliases: backlog): Backlog queue — the slash surface covers two acts: add an item (
/moai todo "<description>") and list the queue (bare/moai todo). Picking the next card and removing one are CLI-only verbs, run asmoai todo next [<n>]andmoai todo done <n>; the operator's entry point into the kanban board
Priority 2: SPEC-ID Detection
Only if Priority 1 did not match: Check if the Raw User Input contains a pattern matching SPEC-XXX (such as SPEC-AUTH-001). If found, route to the run workflow automatically. The SPEC-ID becomes the target for DDD/TDD implementation.
Priority 3: Natural Language Classification
Only if BOTH Priority 1 AND Priority 2 did not match: Classify the intent of the ENTIRE Raw User Input as natural language. This priority is NEVER reached when the first word matches a known subcommand.
[HARD] The cue words listed below are English exemplars, NOT literal-match requirements. Classify intent semantically for any conversation_language — a Korean, Japanese, Chinese, or other-language request expressing the same intent routes identically. Do not require the literal English tokens to appear.
- Planning and design language (design, architect, plan, spec, requirements, feature request) routes to plan
- Quality gate language (format, check, pre-commit, quality gate) routes to gate
- E2E and user-journey testing language (e2e, end-to-end test, browser test, mobile app test, desktop app test, user journey) routes to e2e — semantic exemplars; any conversation_language expressing e2e-testing intent routes identically
- Security language (security, audit, owasp, vulnerability, injection, xss, csrf) routes to review (with
--securityscope) - Code-review language (review my code, code review, check my PR, look at my changes, take a look at my changes) routes to review
- Error and fix language (fix, error, bug, broken, failing, lint) routes to fix
- Iterative and repeat language (keep fixing, until done, repeat, iterate, all errors) routes to loop
- Dead-code and cleanup language (dead code, unused code, safely remove, cleanup, orphaned code) routes to clean
- Documentation language (document, sync, docs, readme, changelog, PR) routes to sync or project
- Architecture-map language (architecture map, code maps, dependency graph, structure documentation) routes to codemaps
- Feedback and bug report language (report, feedback, suggestion, issue) routes to feedback
- MX tag language (mx tag, annotation, code context, legacy annotate) routes to mx
- Backlog language (add to the backlog, note this for later, what should I work on next, remind me to) routes to todo — semantic exemplars; a request in any conversation_language expressing "queue this, do not start it now" routes identically
- Implementation language (implement, build, create, add, develop) with clear scope routes to moai (default autonomous)
Priority 4: Default Behavior
If the intent remains ambiguous after all priority checks, use AskUserQuestion to present the top 2-3 matching workflows and let the user choose.
If the intent is clearly a development task with no specific routing signal, default to the moai workflow (plan -> run -> sync pipeline) for full autonomous execution.
Workflow Quick Reference
plan - SPEC Document Creation
Purpose: Create comprehensive specification documents using GEARS format with Research-Plan-Annotate cycle. Phases: Deep Research (research.md) -> SPEC Planning -> Annotation Cycle (1-6 iterations) -> SPEC Creation -> Independent Review (plan-auditor) Agents: manager-spec (primary), Explore (research), plan-auditor (quality gate), manager-git (conditional) Skills: moai-workflow-spec, moai-foundation-thinking (per delegation.yaml) Flags: --branch, --resume SPEC-XXX, --issue (opt-in; default skips GitHub Issue creation per the late-branch opt-in policy) For detailed orchestration: Read ${CLAUDE_SKILL_DIR}/workflows/plan.md
run - DDD/TDD Implementation
Purpose: Implement SPEC requirements through configured development methodology. Agents: manager-develop (cycle_type=ddd|tdd per quality.yaml, primary), manager-git Skills: moai-workflow-tdd, moai-workflow-ddd (per delegation.yaml; cycle_type-selected) + domain moai-ref-* injected per mission Flags: --resume SPEC-XXX, --team (experimental — Agent Teams re-allowed; see Execution Mode Flags) For detailed orchestration: Read ${CLAUDE_SKILL_DIR}/workflows/run.md
sync - Documentation Sync and PR
Purpose: Synchronize documentation with code changes and prepare pull requests. Agents: manager-docs (primary), sync-auditor (quality gate), manager-git Skills: moai-workflow-project (per delegation.yaml) Modes: auto, force, status, project. Flags: --merge, --skip-mx For detailed orchestration: Read ${CLAUDE_SKILL_DIR}/workflows/sync.md
gate - Pre-Commit Quality Gate
Purpose: Lightweight pre-commit quality check running lint, format, type-check, and tests in parallel. Also integrated into run (Phase 15) and sync (Phase 1) workflows as automatic pre-checks. Agents: Direct execution (no agent delegation) Flags: --fix, --staged, --file PATH Integration: Automatically invoked by run workflow (Phase 15) and sync workflow (Phase 1) with --fix behavior. For detailed orchestration: Read ${CLAUDE_SKILL_DIR}/workflows/gate.md
e2e - Multi-Platform End-to-End Testing
Purpose: Create and run E2E tests across web, mobile, and desktop applications with project-type auto-detection, CLI-first toolchain selection (Playwright, Maestro, Playwright-Electron, WebdriverIO + tauri-service), and token-minimized execution. Agents: e2e-tester (primary — detection, journey mapping, script creation, execution, recording) Skills: moai-foundation-quality, moai-ref-testing-pyramid (per delegation.yaml) Flags: --tool, --platform, --record, --url, --journey, --headless, --browser, --timeout, --retry For detailed orchestration: Read ${CLAUDE_SKILL_DIR}/workflows/e2e.md
goal - Condition-Declared Agentic Loop
Purpose: Arm a completion condition (mechanical commands + model claims); the stop-goal Stop-hook evaluator blocks each turn-end until the conditions hold or a turn ceiling (default 30) is reached.
Verbs: /moai goal "<condition>" (register + arm), status [--all], clear, resume.
Progression mode: autonomous (default) vs. semi-autonomous — chosen at Implementation Kickoff Approval; the gate stays mandatory in both modes.
For detailed orchestration: Read ${CLAUDE_SKILL_DIR}/workflows/goal.md
todo - Backlog Queue
Purpose: Hold what the operator wants to work on next. backlog has no owning session, so admission to the board is always an operator act — this is that surface.
Verbs — slash surface: /moai todo "<description>" (append), bare /moai todo (list). CLI only: moai todo next (print queued cards; moai todo next <n> [--spec <SPEC-ID>] marks one picked — the pick itself is presented through AskUserQuestion), moai todo done <n> (remove).
State: .moai/state/kanban/backlog.json — project-local, not committed, atomic writes.
The pick is the operator's: never preselect, never reorder by inferred priority, never auto-populate from TODO comments or issues.
Enablement: when workflow.todo.enabled is false in .moai/config/sections/workflow.yaml, do NOT route to this workflow by inference — a backlog-shaped phrase the operator did not name a subcommand for is answered directly instead of being queued. The gate binds AUTOMATIC routing only: an explicit /moai todo or /moai todo "<description>" still runs normally, exactly as it does when the key is absent or true. The flag suppresses guidance, not the feature — moai todo stays registered and every verb keeps working, so refusing or silently ignoring a named invocation is a defect, not the intended behavior.
For detailed orchestration: Read ${CLAUDE_SKILL_DIR}/workflows/todo.md
fix - Auto-Fix Errors
Purpose: Autonomously detect and fix LSP errors, linting issues, and type errors. Agents: manager-develop (cycle_type=autofix), Agent(general-purpose) with domain whitelist (fixes) Skills: moai-workflow-ddd (per delegation.yaml) + domain moai-ref-* injected per mission Flags: --dry, --sequential, --level N, --resume, --team (experimental — Agent Teams re-allowed; see Execution Mode Flags) For detailed orchestration: Read ${CLAUDE_SKILL_DIR}/workflows/fix.md
loop - Iterative Auto-Fix
Purpose: Repeatedly fix issues until completion conditions are satisfied or max iterations reached. Agents: manager-develop (cycle_type=autofix), Agent(general-purpose) with domain whitelist Skills: moai-workflow-loop (per delegation.yaml) + domain moai-ref-* injected per mission Flags: --max N, --auto-fix, --seq For detailed orchestration: Read ${CLAUDE_SKILL_DIR}/workflows/loop.md
mx - MX Tag Scan and Annotation
Purpose: Scan codebase and add @MX code-level annotations for AI agent context. Agents: Explore (scan), Agent(general-purpose) with backend scope (annotation) Flags: --all, --dry, --priority P1-P4, --force, --team (experimental — Agent Teams re-allowed; see Execution Mode Flags) For detailed orchestration: Read ${CLAUDE_SKILL_DIR}/workflows/mx.md
review - Code Review
Purpose: Multi-perspective code review with security, performance, quality, and UX analysis. Agents: sync-auditor (review), Agent(general-purpose) with security scope Skills: moai-foundation-quality, moai-ref-owasp-checklist (per delegation.yaml; per-perspective ref skills injected per lens) Flags: --staged, --branch, --security, --team (experimental — Agent Teams re-allowed; see Execution Mode Flags) For detailed orchestration: Read ${CLAUDE_SKILL_DIR}/workflows/review.md
clean - Dead Code Removal
Purpose: Identify and safely remove unused code with test verification. Agents: manager-develop, Agent(general-purpose) with refactoring scope Skills: moai-workflow-ddd (per delegation.yaml) Flags: --dry, --safe-only, --file PATH For detailed orchestration: Read ${CLAUDE_SKILL_DIR}/workflows/clean.md
codemaps - Architecture Documentation
Purpose: Scan codebase and generate architecture documentation. Agents: Explore, manager-docs Flags: --force, --area AREA For detailed orchestration: Read ${CLAUDE_SKILL_DIR}/workflows/codemaps.md
(default) - MoAI Autonomous Workflow
Purpose: Full autonomous research -> plan -> annotate -> run -> sync pipeline. Phases: Parallel Exploration (research.md) -> SPEC Generation -> Annotation Cycle -> Implementation -> Sync Agents: Explore, manager-spec, plan-auditor (quality gate), manager-develop, manager-docs, manager-git, sync-auditor (quality gate) Skills: moai-workflow-spec, moai-workflow-tdd (per delegation.yaml) + domain moai-ref-* injected per mission Flags: --loop, --max N, --branch, --pr, --resume SPEC-XXX, --team (experimental — Agent Teams re-allowed; see Execution Mode Flags), --solo, --issue (opt-in; default skips GitHub Issue creation per the late-branch opt-in policy) For detailed orchestration: Read ${CLAUDE_SKILL_DIR}/workflows/moai.md
project - Project Documentation
Purpose: Generate project documentation by analyzing the existing codebase. Agents: Explore, manager-docs, Agent(general-purpose) with devops scope (optional) Skills: moai-workflow-project (per delegation.yaml) Output: product.md, structure.md, tech.md in .moai/project/ For detailed orchestration: Read ${CLAUDE_SKILL_DIR}/workflows/project.md
feedback - GitHub Issue Creation
Purpose: Collect user feedback and create GitHub issues. Agents: orchestrator-direct (records feedback via gh CLI) For detailed orchestration: Read ${CLAUDE_SKILL_DIR}/workflows/feedback.md
harness - Harness Lifecycle + Natural-Language Build (argument-branching)
This single harness subcommand dispatches to ONE of two workflows based on the FIRST token of $ARGUMENTS (argument-based routing — no second command is introduced). Apply the routing rule before any workflow-specific logic:
- Reserved verb (
status/apply/rollback/disable) → route to the existing harness learning lifecycle workflow (Branch A below). This path is unchanged. - Reserved verb (
list/edit/remove/doctor) → route to the harness-v4 lifecycle handler (Branch A.1 below). These enumerate / edit / atomically-remove harness-v4 entries and run the reference-integrity smoke gate (doctor) via themoai harness <verb>Go binary subcommand. - Anything else (a natural-language harness-creation request, e.g. "build a harness for CLI template development") → route to the harness build entry workflow (Branch B below).
Branch A — harness learning lifecycle (reserved verbs: status / apply / rollback / disable)
Purpose: Surface the harness learning subsystem (observer, 4-tier proposal ladder, 5-layer safety pipeline) to the user via the slash command path. The lifecycle verbs (status / apply / rollback / disable) dispatch through the unified moai harness Go-binary Cobra subcommand tree, which performs the file-system operations. Tier-4 application is gated by orchestrator-issued AskUserQuestion.
Skills: moai-harness-learner (Tier-4 surfacing companion). Project-specific harness generation is handled by the v4 Builder (builder-harness agent, Branch B).
Verbs: status (tier distribution + telemetry) | apply (next Tier-4 proposal → AskUserQuestion → 5-layer pipeline → snapshot + write) | rollback <YYYY-MM-DD> (restore snapshot) | disable (set learning.enabled: false)
Artifacts: .moai/harness/usage-log.jsonl, .moai/harness/proposals/, .moai/harness/learning-history/snapshots/, .moai/harness/learning-history/applied/, .moai/harness/learning-history/frozen-guard-violations.jsonl
Authoritative SPEC: the harness foundation policy (supersedes V3R3-HARNESS-001, V3R3-HARNESS-LEARNING-001, V3R3-PROJECT-HARNESS-001)
For detailed orchestration: Read ${CLAUDE_SKILL_DIR}/workflows/harness.md
Branch A.1 — harness-v4 lifecycle (reserved verbs: list / edit / remove / doctor)
Purpose: Manage harness-v4 entries — enumerate built harnesses, locate their manifest + specialist files for editing, atomically remove a harness with all its artifacts, or run the reference-integrity smoke gate. The four verbs dispatch to the moai harness <verb> Go binary subcommand which performs the filesystem work (scan .claude/commands/harness/*.md joined with manifest.json; atomic remove with fail-closed orphan prevention; doctor cross-references manifest/specialist/skill file existence).
Verbs: list (enumerate all harnesses: name + domain + entry command, plus the declared schedule — interval + mechanism — when the manifest declares one; schedule-less harnesses render identically to the pre-schedule baseline) | edit <name> (show manifest + specialist + skill paths for editing — manifest is the SSOT) | remove <name> (atomic removal of command + workflow + specialists + skills + manifest; fail-closed if any artifact is missing; when the manifest declared a schedule, prints an unregister notice naming the declared mechanism — CronDelete for cron, session-scoped loop cancellation for loop — computed from the manifest before deletion) | doctor (reference-integrity smoke gate: verifies every built harness's manifest/specialist/skill files exist and cross-reference correctly; a schema-invalid schedule declaration is an ERROR-severity finding)
CLI: moai harness list [--json], moai harness edit <name> [--json], moai harness remove <name>, moai harness doctor (all support --project-root)
Artifacts: .claude/commands/harness/<name>.md (thin-wrapper command), .claude/commands/harness/<name>/manifest.json (SSOT), .claude/workflows/hns-<name>-run.js (Runner), .claude/agents/harness/hns-<name>*-specialist.md (specialists), .claude/skills/hns-<name>*/ (companion skills)
Namespace: .claude/commands/harness/, .claude/workflows/hns-*.js, .claude/agents/harness/, and .claude/skills/hns-*/ are USER-OWNED — moai update preserves them (backup if needed, never overwrites). Legacy generations with the harness- or my-harness- prefix are equally preserved (recognition-based backward compatibility); the Builder emits hns- names only.
Branch B — harness build entry (natural-language request)
Purpose: Turn a natural-language harness-creation request into a concrete harness via Context-First Discovery (extract domain / goal / constraints / scope), harness <name> derivation (the name is derived from the request — NOT statically supplied by the user), explicit orchestrator-issued approval, then transition into the orchestrator-direct Builder (4 signal-driven phases: ANALYZE / PLAN / GENERATE / ACTIVATE). The orchestrator MUST conduct AskUserQuestion Socratic rounds (max 4 questions per round) when intent clarity is below 100%.
Agent: builder-harness (v4 Builder — project-specific harness generation)
Builder: orchestrator-direct processing (NOT a dynamic-workflow script) — the entry's Phases 0-3 hand off to ${CLAUDE_SKILL_DIR}/workflows/harness-builder.md for the 4-phase creation logic. The orchestrator holds the PLAN→GENERATE AskUserQuestion approval gate directly; that gate round also carries the recurrence question (optional manifest schedule, discovery-only scheduled runs), and ACTIVATE registers a declared schedule after the smoke gate. A request referencing an EXISTING harness together with scheduling intent routes to the entry workflow's Schedule Retrofit branch (evaluated before name-collision handling) instead of the creation pipeline.
For detailed orchestration: Read ${CLAUDE_SKILL_DIR}/workflows/harness-build-entry.md
Execution Directive
When this skill is activated, execute the following steps in order:
Step 1 - Parse Arguments:
Extract subcommand keywords and flags from the Raw User Input. Recognized global flags: --resume [ID], --seq, --team, --solo. Also detect ultrathink keyword in the input text.
CRITICAL: Deep analysis mode:
ultrathinkkeyword detected → Activate Claude's native extended reasoning (xhigh effort mode). This is native Claude behavior with no MCP dependency.
Shortened here. Read the whole file on GitHub.
Signals
- GitHub stars
- 1k
- Forks
- 221
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
moai- Source
- github.com/modu-ai/moai-adk