Agent skill

Moai Lane Watchdog

by modu-ai in modu-ai/moai-adk

One lane stall watchdog iteration: measure lane progress on three channels, classify the stall cause, apply the remedy or resolve the judgment through the decision ladder — instead of waiting on a…

Apache-2.0Auto-check passedDevelopment

Install Moai Lane Watchdog

skills CLI
$ npx skills add modu-ai/moai-adk --skill moai-lane-watchdog -a claude-code

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

GitHub CLI
$ gh skill install modu-ai/moai-adk moai-lane-watchdog --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/modu-ai/moai-adk.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/moai-lane-watchdog .claude/skills/moai-lane-watchdog && 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
moai-lane-watchdog
GitHub stars
1.2k
Token cost
~3k tokens
SKILL.md length
1,475 words
Files
1
Skills in repo
48
Repo updated
First seen
Licence
Apache-2.0

At a glance

One lane stall watchdog iteration: measure lane progress on three channels, classify the stall cause, apply the remedy or resolve the judgment through the decision ladder — instead of waiting on a…

  • Works in 8 steps: Never prompt → Measure progress → Classify the cause → …
  • Development work in your project
  • SKILL.md covers 0. Never prompt, 1. Measure progress, 2. Classify the cause and 3. Apply the remedy, plus 5 more sections
  • Calls git

What it does

Moai Lane Watchdog is an agent skill from modu-ai/moai-adk. One lane stall watchdog iteration: measure lane progress on three channels, classify the stall cause, apply the remedy or resolve the judgment through the decision ladder — instead of waiting on a reply — then record the outcome and report. Reads the unified --auto doctrine at .claude/rules/moai/workflow/auto-semantics.md for the ladder, the gate inventory, and the record formats.

Its SKILL.md is about 3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts. Compatibility notes: Designed for Claude Code and Codex sessions

It sits in Development. The repository describes itself as: Agentic development harness for Claude Code — SPEC-driven plan/run/sync, TRUST 5 quality gates, model+effort routing, and Claude×GLM multi-LLM cost control. Single Go binary, 16… The licence is Apache-2.0.

When your agent uses it

  • Development work in your project

Example prompts

  • “/moai-lane-watchdog”

Requirements

  • Compatibility (from SKILL.md): Designed for Claude Code and Codex sessions
  • Pre-approved tools (allowed-tools): Read, Grep, Glob, Bash(git rev-parse:*), Bash(git status:*), Bash(git log:*), Bash(stat:*), Bash(ls:*), Bash(test:*), Bash(moai integration status:*)

Workflow steps

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

  1. Never prompt
  2. Measure progress
  3. Classify the cause
  4. Apply the remedy
  5. Decision board protocol
  6. Decision records
  7. Composition boundary
  8. Output shape — escalate or record

What it can do on your machine

Read from SKILL.md and the folder at commit 2aab5f7. 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
    • Grep
    • Glob
    • Bash(git rev-parse:*)
    • Bash(git status:*)
    • Bash(git log:*)
    • Bash(stat:*)
    • Bash(ls:*)
    • Bash(test:*)
    • Bash(moai integration status:*)

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • git

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

  • Network

    No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.

    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.

  • Compatibility

    Designed for Claude Code and Codex sessions

    From compatibility in the SKILL.md frontmatter.

Context cost

Moai Lane Watchdog loads about 3k tokens when it runs. Until then it costs about 101 tokens; SKILL.md has 1,475 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~101
When it runs · the whole SKILL.md, loaded when a task matches
~3k

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 passed

The automated check found no risky patterns in SKILL.md.

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 modu-ai/moai-adk at commit 2aab5f7, republished under its Apache-2.0 licence (© modu-ai). 1,475 words, ~2,954 tokens.

Download SKILL.mdSave it as .claude/skills/moai-lane-watchdog/SKILL.md (or your agent's skills folder).
name
moai-lane-watchdog
description
One lane stall watchdog iteration: measure lane progress on three channels, classify the stall cause, apply the remedy or resolve the judgment through the decision ladder — instead of waiting on a reply — then record the outcome and report. Reads the unified --auto doctrine at .claude/rules/moai/workflow/auto-semantics.md for the ladder, the gate inventory, and the record formats.
allowed-tools
Read, Grep, Glob, Bash(git rev-parse:*), Bash(git status:*), Bash(git log:*), Bash(stat:*), Bash(ls:*), Bash(test:*), Bash(moai integration status:*)
compatibility
Designed for Claude Code and Codex sessions
when_to_use
Use when a loop iteration re-awakens a lane session (the awaken rule: the watchdog pass runs BEFORE card work resumes), when a lane shows no progress across…
license
Apache-2.0
user-invocable
false
metadata.version
1.0.0
metadata.category
workflow
metadata.status
active
metadata.tags
watchdog, stall, lane, ladder, decision-ladder, unattended, auto
progressive_disclosure.enabled
true

Lane Stall Watchdog — One Iteration

<!-- moai:role-rules-required -->

[HARD] Before the first watchdog pass of a session running this skill, read BOTH role-gated rule files in full: .claude/rules/moai/workflow/factory-dispatch.md and .claude/rules/moai/workflow/cross-session-messaging.md. A Codex-only project deploys the same files under .moai/policies/ (for example .moai/policies/workflow/factory-dispatch.md) — read whichever layout this project carries. The always-loaded surface carries only their stubs; the lane obligations and the messaging rules the ladder operates under live in those two files.

One watchdog pass for a lane session (a factory lane running under moai cc / moai glm / moai codex). The law — the ladder, the outcome transitions, the gate inventory, the view–SSOT rule, the record formats — lives in .claude/rules/moai/workflow/auto-semantics.md. Read that doctrine before the first pass and whenever a step below needs its detail; this body is the executable procedure.

0. Never prompt

The watchdog never asks the operator a question and never answers an approval gate on anyone's behalf. Everything that would have been a question becomes either a resolved judgment (the ladder) or an explicit wait record. A keep-set gate — environment-impossible, operator-held, or an irreversible external-shared operation — is never satisfied here: the recheck reads the gate surface, and finding no change, it re-records the wait and yields.

1. Measure progress

Three channels (doctrine §3–4):

  • HEAD: git rev-parse --short HEAD in the lane's own worktree.
  • evidence mtimes: the newest mtime across .moai/reports/<card-id>/ and the active SPEC's progress.md.
  • integration-window state: moai integration status.

Compare against the previous snapshot at .moai/state/watchdog/<card-id>.json (fields: observed_at, head_sha, evidence_mtime_max, window_state). The lane is stalled only when ALL THREE channels are unchanged AND the previous observation is at least N minutes old. N defaults to 15 minutes and is a per-invocation parameter — never a config key. No previous snapshot → record a fresh one, no stall verdict (fail-open first observation). One channel moving is progress — evidence mtime advancing without a commit included: end the iteration with a one-line status — unless the lane itself is parked on a delegate (§3.5): then the movement is the delegate's, and the deliverable read in §3.5 decides, not this rule. Write the new snapshot after the verdict.

2. Classify the cause

CauseSignature
awaited-judgmentthe lane stopped where a judgment was needed (a gate, a verdict, a choice) and no reply arrived
blocked-bythe card waits on a predecessor card; the predecessor's landing state is the open question
shell-errorthe lane halted on an unadjudicated command failure (a non-zero exit with no recorded disposition)
accidental-stopthe session died or was interrupted mid-card — an API error (a 429) ends the turn with no further model action — and no deliberate stop was recorded
awaited-delegatethe lane parked on delegated work — a spawned agent's report, a background run's completion — and the report or notice has not arrived; an available idle notice that promised a later report counts, because that agent sends nothing more unless it is messaged

No stall / progress detected → end the iteration.

3. Apply the remedy

3.1 awaited-judgment — the decision ladder

Resolve through the ladder IN ORDER (doctrine §6–7). Availability failures fail-open downward; negative or inconclusive verdicts never auto-proceed, and at an authority gate they fail closed.

  1. Disk evidence — read the deciding artifact directly: audit verdict files, the card's progress record, plan-audit verdicts, evidence paths. Evidence shows proceed → resume. Evidence shows do-not-proceed → record the wait; never proceed against evidence. Unreadable or absent → step 2.
  2. Decision board — run moai decision read --scope card:<id> (the card's rulings plus every standing ruling; doctrine §11: the append-only board under the moai home, keyed by the project). A recorded judgment → follow it. A judgment that says wait → explicit wait record (with an id; doctrine §14). A record whose resolves names an open wait ends that wait. board=absent / board=empty → step 3; never wait on the board being filled. While a wait on the leader stays open, keep the one-shot short recheck of doctrine §14 armed.
  3. Audit cross — run one moai MCP audit tool (codex_audit, glm_audit, claude_audit, or audit_multi) for an independent second opinion. Positive → proceed per verdict. Negative → fail-closed: no proceed; record + escalate to step 5. Tool absent → step 4. Inconclusive → record it, → step 4.
  4. jev_ask — only while workflow.jev.enabled is true; a bounded proceed / retry / wait judgment with repeatable, side-effect-free parameters; never for completion, merge, or queue outcomes. Gated off or unavailable → step 5 (fail-open by design).
  5. Lead chat — last resort. Record the explicit wait (§5 below), then yield.

Write a decision record naming whichever step resolved the judgment (§5 below).

3.2 blocked-by

Read the blocking predecessor's on-disk evidence directly (its .moai/reports/<card-id>/ path, its progress record). Evidence shows the predecessor landed → resume. Otherwise record an explicit wait: reason + predecessor id + recheck point. Where the predecessor was dropped, the wait record names the queue relation-removal verb as the operator escape — the lane does NOT run it (queue mutation is prohibited). The queue-level pickup filter is another surface's decision; this remedy only reads.

3.3 shell-error

Adjudicate the error: transient (network blip, lock contention, flaky timing) vs determinate (missing remote, bad ref, usage error).

  • transient → retry at most 3 times, recording the error and the retry count each time; retries exhausted → structured blocker report.
  • determinate → ZERO retries; straight to a structured blocker report with the verbatim error text.

Never halt indefinitely on an unadjudicated error; never loop silently.

Show full SKILL.md (608 more words)Show less
3.4 accidental-stop

Resume by checkpoint return: use the session-handoff resume message with the worktree-anchored Block 0 (git rev-parse --show-toplevel → this worktree), resuming from the last recorded checkpoint in the card's progress record. Never restart the card from zero.

3.5 awaited-delegate

Read the delegate's deliverable on disk — the artifacts it was asked to write, its output file, its commits — against the delegation record (what was asked, where it was to land). Never read the absence of its message as the absence of its work.

  • Deliverable present and consistent with the delegation → resume and consume it; never wait for the report or the notice. An agent that went available sends nothing more unless it is messaged, so the report may never come.
  • Deliverable absent or partial and the delegate evidently ended (its idle or completion notice arrived, or its process is gone) → re-delegate with the partial state, or resume the delegate with SendMessage only while it is a live teammate. Never address a teammate stopped with TaskStop by name — one message revives it as an ownerless writer (cross-session-messaging.md § Rules). Record which.
  • Deliverable absent and the evidence still moving (the delegate is working) → explicit wait whose recheck point is the next cron fire.
  • Deliverable absent, no sign the delegate ended, and the evidence unchanged across two consecutive fires → structured blocker naming the delegate, what was asked of it, and the evidence read; do not wait a third time.

4. Decision board protocol

  • SSOT: the disk board (doctrine §11). Append-only, one record per line; never rewrite board history.
  • Views: render state with the runner's native task tool — TaskCreate / TaskUpdate on the Claude runner, update_plan on codex — and read judgments ONLY from disk. A view is never the SSOT; a long-form plan document is never the board.
  • Codex step ⑤: no session-messaging tool exists there — cross-harness notice rides the broker (session_msg_register / session_msg_send + poll) and the queue-on-disk delegation channel; the wait reason is recorded on disk either way.

5. Decision records

Every autonomous gate transition and every ladder-resolved judgment writes ONE grep-able line on the disk board:

text
decision record: decided_by=<runner+role> evidence_refs=<paths+verdict-ids> ladder_path=<step>

decided_by names the deciding runner and role; evidence_refs names the artifact paths and verdict ids the decision rests on; ladder_path names the ladder step (①–⑤) or the gate row that resolved it. The sync audit re-reads these records — write them so a stranger can re-verify.

6. Composition boundary

The queue-level pickup decision — the pickup filter that excludes unrelated or blocked cards before a pick — belongs to the queue surface's owner. This watchdog is queue-readonly: it reads evidence and state surfaces, performs zero queue mutation, and never picks, drops, edits, or unrelates anything.

7. Output shape — escalate or record

Every iteration ends in exactly one of:

  • resumed — progress detected or a judgment resolved; say which step, and cite the decision record line.
  • explicit wait — the wait record line and its recheck point, nothing more; end the iteration (no idle-spin).
  • structured blocker — determinate failure or retries exhausted: the verbatim error, what was attempted, the evidence read, and the decision owed. Return it to the orchestrating session; do not retry past the ceiling; do not prompt anyone.

Boundaries (hard)

  1. Never prompt the operator; never answer an approval gate. Keep-set gates (environment-impossible, operator-held, irreversible external-shared operations) are rechecked and yielded to, never satisfied by this skill.
  2. Queue read-only (§6).
  3. One writer per tree: the watchdog writes only its own snapshot, its own evidence records, and the disk board.
  4. Verification is lane-local; no background load.
  5. Hook-independent: awaken-tick only; no hook surface. The scheduler that fires the awaken is the lane's standing recheck cron (doctrine §5.1), armed at card intake — this skill is its prompt, not its owner.

© modu-ai, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/moai-lane-watchdog of modu-ai/moai-adk.

Open the folder on GitHubat commit 2aab5f7

Compare with similar skills

Moai Lane Watchdog 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.

Moai Lane Watchdog compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Moai Lane Watchdog this skillmodu-ai/moai-adk1.2k—~3kAutomated safety check: PassApache-2.0
Vercel Composition Patternssupabase/supabase111k58 repos~726Automated safety check: PassMIT
Finishing a Development Branchobra/superpowers297k5 repos~1.9kAutomated safety check: PassMIT
Typescript Advanced Typesrolling-scopes/rsschool-app10k25 repos~4.2kAutomated safety check: PassMPL-2.0
PR Babysitteropeninterpreter/openinterpreter69k3 repos~4.2kAutomated safety check: PassApache-2.0
Code Review ChecklistshareAI-lab/learn-claude-code78k4 repos~1.1kAutomated safety check: PassMIT

Similar skills

  • Official

    React composition patterns that scale. An agent skill from supabase/supabase.

    111k GitHub starsUsed in 58 repos~726 tokens
    DevelopmentAuto-check passed
  • Walks the last step of a branch: confirm tests pass, detect the git environment, ask how to integrate, carry out your choice and clean up the worktree.

    297k GitHub starsUsed in 5 repos~1.9k tokens
    DevelopmentAuto-check passed
  • Typescript Advanced Types

    rolling-scopes/rsschool-app

    Master TypeScript's advanced type system including generics, conditional types, mapped types, template literals, and utility types for building type-safe applications.

    10k GitHub starsUsed in 25 repos~4.2k tokens
    DevelopmentAuto-check passed
  • PR Babysitter

    openinterpreter/openinterpreter

    Watches an open GitHub pull request until it merges, handling review comments, diagnosing CI failures and retrying flaky checks along the way.

    69k GitHub starsUsed in 3 repos~4.2k tokens
    DevelopmentAuto-check passed
  • Code Review Checklist

    shareAI-lab/learn-claude-code

    Reviews code against a five-part checklist covering security, correctness, performance, maintainability and testing, and reports findings in a fixed format.

    78k GitHub starsUsed in 4 repos~1.1k tokens
    DevelopmentAuto-check passed
  • Greploop

    onyx-dot-app/onyx

    Iteratively improves a PR (GitHub), MR (GitLab), or shelved changelist (Perforce) until Greptile gives it a 5/5 confidence score with zero unresolved comments.

    32k GitHub starsUsed in 4 repos~3.3k tokens
    DevelopmentAuto-check passed

More from modu-ai/moai-adk

All 48 skills in this repo
  • Builds hand-editable SVG diagrams from computed layout coordinates, lints the source and renders a 2x PNG, with rules for when mermaid is the better choice.

    1.2k GitHub stars~5.2k tokensUpdated yesterday
    Auto-check: notes
  • MoAI Foundation Core

    modu-ai/moai-adk

    Reference for MoAI-ADK's core development principles: TRUST 5 quality gates, SPEC-first domain-driven workflow, agent delegation and token budgeting.

    1.2k GitHub stars~5k tokensUpdated yesterday
    Auto-check passed
  • MoAI SPEC Workflow

    modu-ai/moai-adk

    Manages SPEC documents for MoAI-ADK development, with GEARS or EARS requirement notation, acceptance criteria and a link into the Plan-Run-Sync workflow.

    1.2k GitHub stars~5.1k tokensUpdated yesterday
    Auto-check passed
  • MoAI TDD Workflow

    modu-ai/moai-adk

    Drives test-first development through the RED, GREEN, REFACTOR cycle, with a config switch that selects between TDD and a DDD workflow for existing code.

    1.2k GitHub stars~3.1k tokensUpdated yesterday
    Auto-check passed
  • MoAI Worktree Management

    modu-ai/moai-adk

    Gives each SPEC its own Git worktree with a registry of active workspaces, base-branch sync and cleanup of merged ones, inside the MoAI-ADK workflow.

    1.2k GitHub stars~3.9k tokensUpdated yesterday
    Auto-check passed
  • Watches a pull request's CI checks after creation, separates required from auxiliary failures, applies limited safe fixes and escalates anything semantic to you.

    1.2k GitHub stars~2.4k tokensUpdated yesterday
    Auto-check: notes

Categories

Questions about Moai Lane Watchdog

What does Moai Lane Watchdog do?

One lane stall watchdog iteration: measure lane progress on three channels, classify the stall cause, apply the remedy or resolve the judgment through the decision ladder — instead of waiting on a…. Moai Lane Watchdog is an agent skill from modu-ai/moai-adk. One lane stall watchdog iteration: measure lane progress on three channels, classify the stall cause, apply the remedy or resolve the judgment through the decision ladder — instead of waiting on a reply — then record the outcome and report.

When should I use Moai Lane Watchdog?

Moai Lane Watchdog fits situations like: development work in your project.

How do I install Moai Lane Watchdog in Claude Code?

Run `npx skills add modu-ai/moai-adk --skill moai-lane-watchdog -a claude-code`. Or copy the skill folder (.claude/skills/moai-lane-watchdog in modu-ai/moai-adk) into .claude/skills/moai-lane-watchdog in your project. Claude Code loads it when a task matches its description.

How do I install Moai Lane Watchdog in Codex?

Run `npx skills add modu-ai/moai-adk --skill moai-lane-watchdog -a codex`. Or copy the skill folder (.claude/skills/moai-lane-watchdog in modu-ai/moai-adk) into .agents/skills/moai-lane-watchdog in your project. Codex loads it when a task matches its description.

Can I use Moai Lane Watchdog 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 modu-ai/moai-adk --skill moai-lane-watchdog -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/moai-lane-watchdog, .gemini/skills/moai-lane-watchdog, .github/skills/moai-lane-watchdog and .opencode/skills/moai-lane-watchdog in your project.

What does Moai Lane Watchdog need to run?

Going by SKILL.md and its folder, Moai Lane Watchdog needs the command-line tools its instructions call (git). Its frontmatter pre-approves these tools: Read, Grep, Glob, Bash(git rev-parse:*), Bash(git status:*), Bash(git log:*), Bash(stat:*), Bash(ls:*), Bash(test:*), Bash(moai integration status:*). Compatibility (from SKILL.md): Designed for Claude Code and Codex sessions.

Does Moai Lane Watchdog access the network?

SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Moai Lane Watchdog safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Moai Lane Watchdog use?

Moai Lane Watchdog is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Moai Lane Watchdog use?

About 3k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Moai Lane Watchdog?

Skills that share tags, products or a category with Moai Lane Watchdog: Vercel Composition Patterns (supabase/supabase, 111k stars), Finishing a Development Branch (obra/superpowers, 297k stars), Typescript Advanced Types (rolling-scopes/rsschool-app, 10k stars) and PR Babysitter (openinterpreter/openinterpreter, 69k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Moai Lane Watchdog?

modu-ai (a GitHub organization) maintains it in modu-ai/moai-adk, which has 1,230 GitHub stars. The repository holds 48 skills in this directory. The repository was last updated on October 9, 2026.

Source: modu-ai/moai-adk on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.