moai-adk-go Domain Patterns

SkillDev tools

moai-adk-go domain-patterns reference for the 4 harness specialists (cli-template-specialist, quality-specialist, workflow-specialist, hook-ci-specialist). Covers the CLI/template/config/hook/spec subsystem architecture, key source paths, the Pipeline specialist delegation map, the Template-First build cycle, the namespace separation contract, and common add-a-template / add-a-hook / add-an-agent / add-a-SPEC workflows. Loaded by the specialists when working on moai-adk-go's own Go codebase and templates.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the moai-adk-go Domain Patterns skill

What this skill tells your AI

The instructions your AI receives, as published by modu-ai/moai-adk in .claude/skills/hns-moaiadk-patterns/SKILL.md and read by ahel’s review.

Architecture Quick Reference

moai-adk-go is a Go binary (moai) with four subsystems:

  1. CLI (internal/cli/*.go, cmd/moai/) — Cobra commands: init, update, hook, build, glm, cc, cg, version, doctor, spec. Subcommand handlers read stdin JSON for hooks, emit structured output for the orchestrator.
  2. Template system (internal/template/) — go:embed-based scaffolding. Source at internal/template/templates/, embedded into the binary via //go:embed all:templates in internal/template/embed.go (no generated .go file). make build recompiles the binary. TemplateContext ({{.GoBinPath}} / {{.HomeDir}}) renders at moai init.
  3. Config (internal/config/) — defaults.go (single source for thresholds), envkeys.go (env-var constants), TemplateContext renderer.
  4. Hook + CI (.claude/hooks/moai/*.sh, .github/workflows/) — bash wrapper hooks calling moai hook <event>; CI guard enforces template neutrality.

Plus the SPEC lifecycle (.moai/specs/) governing the project's own development (plan→run→sync→Mx).

Key Source Paths

SubsystemPathNotes
Cobra commandsinternal/cli/*.gowired from cmd/moai/
Template sourceinternal/template/templates/**edit HERE first
Embedded assetsinternal/template/embed.go//go:embed all:templates (no generated file)
Config defaultsinternal/config/defaults.gothreshold SSOT
Env constantsinternal/config/envkeys.gono hardcoded env names
SPEC docs.moai/specs/SPEC-*/spec/plan/acceptance/progress
Era classifierinternal/spec/era.goClassifyEra() H-1..H-6
Hook scripts.claude/hooks/moai/*.shbash only, no Python
CI workflows.github/workflows/*.yamlneutrality guard active
Harness agents.claude/agents/harness/*.mdUSER-OWNED (this skill)

Pipeline Specialist Delegation Map

This harness is a 4-stage pipeline; each specialist delegates to retained agents (never archived, never replaces them):

CLI/Template ──→ quality ──→ workflow ──→ hook/CI
  │                │            │            │
  ├─ manager-develop (tdd, backend)
  ├─ Explore (read-only)
  ├─ sync-auditor (4-dim scoring)
  ├─ sync-phase-quality-gate.sh (Stop hook)
  ├─ manager-spec (plan)
  ├─ manager-develop (run)
  ├─ manager-docs (sync)
  ├─ plan-auditor (audit)
  ├─ builder-harness (artifact_type=hook|command|plugin)
  └─ Agent(general-purpose, model: opus, tools: ..., prompt: "...CI specialist...")

Template-First Build Cycle

When adding/editing anything that ships to user projects:

  1. Edit internal/template/templates/<path> FIRST.
  2. Run make build → recompiles the binary (templates embedded via //go:embed all:templates in embed.go; no generated .go file).
  3. Sync to local: moai update (or manual copy).
  4. Verify the local .claude/ / .moai/ reflects the template.
  5. Run go test ./internal/template/... (neutrality audit included).

Never edit .claude/ or .moai/ directly without a template source. The source of truth is templates/ — edit files there, then make build.

Namespace Separation Contract

Two namespaces, enforced by moai update:

NamespaceLocationOwnermoai update behavior
Template-managedinternal/template/templates/**.claude/agents/{core,expert,meta}/, moai-* skillsMoAI-ADK distributionOverwrites local on sync
User-owned (this harness).claude/agents/harness/, harness-* skills, .moai/harness/Project developerNEVER deleted/modified; backup before update

The canonical user-owned skill prefix is harness-* (recognized by Go enforcement after the namespace catch-up, SPEC-V3R6-HARNESS-NAMESPACE-V2-001). The legacy my-harness-* form is retained during a backward-compat deprecation window; new skills MUST use the bare harness-* prefix.

Common Workflows

Add a template

  1. Create file at internal/template/templates/<path>.
  2. make build.
  3. moai update (or test via ./moai init /tmp/test-project).
  4. go test ./internal/template/... -run TestTemplateNeutralityAudit.

Add a hook

  1. Write .claude/hooks/moai/handle-<event>.sh (bash, reads stdin JSON, calls moai hook <event>).
  2. Wire in .claude/settings.json with "$CLAUDE_PROJECT_DIR/..." quoting + timeout: 5.
  3. If the hook is template-distributable, add the wrapper template source AND the settings.json entry to internal/template/templates/.

Add an agent (harness specialist)

  1. Create .claude/agents/harness/<role>-specialist.md with name, trigger-shaped description, skills: array (companion skill), tools: (CSV string).
  2. Ensure the companion harness-* skill exists (else self-activation smoke gate FAILs).

Add a SPEC

  1. /moai plan "<description>"manager-spec authors plan-phase artifacts.
  2. plan-auditor independent audit gate.
  3. Implementation Kickoff Approval human gate (orchestrator runs AskUserQuestion).
  4. /moai run SPEC-<ID>manager-develop (cycle_type per quality.yaml).
  5. /moai sync SPEC-<ID>manager-docs.
  6. sync-auditor 4-dimension gate.
  7. 3-phase close on the single sync commit (populate sync_commit_sha in §E.4; the sync commit carries the implemented → completed transition — per SPEC-V3R6-LIFECYCLE-REDESIGN-001, the former separate mx_commit_sha / §E.5 Mx-phase step is retired; MX Tag validation is a sync sub-step).

Cross-References

  • CLAUDE.local.md §2 (Template-First Rule), §7 (hooks), §21 (dev-only commands)
  • .claude/rules/moai/development/agent-authoring.md — agent frontmatter schema
  • .claude/rules/moai/development/skill-authoring.md — skill frontmatter schema
  • .claude/rules/moai/workflow/archived-agent-rejection.md §C — migration table
  • .claude/skills/moai-meta-harness/SKILL.md § Namespace Separation

Signals

GitHub stars
1k
Forks
221
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
hns-moaiadk-patterns
Source
github.com/modu-ai/moai-adk