| name | self-test |
| description | Validate omo plugin integrity — structure, frontmatter, script permissions, version consistency. Activate when #st appears anywhere in the user message. |
| argument-hint | |
| disable-model-invocation | false |
| allowed-tools | Read, Glob, Grep, Bash |
Run omo plugin self-test.
Phase 1 — Structure check:
- Verify
.claude-plugin/plugin.json exists and is valid JSON.
- Verify
.claude-plugin/marketplace.json exists and is valid JSON.
- Check that
skills/, agents/, scripts/, templates/, examples/ directories exist.
Phase 2 — Version consistency:
- Extract version from
plugin.json.
- Extract version(s) from
marketplace.json (metadata.version and plugins[0].version).
- If any versions differ, report as FAIL with details.
- If
scripts/check-version.sh exists, run it and report the result.
Phase 3 — Skill validation:
For each directory in skills/:
- Check that
SKILL.md exists.
- Verify the frontmatter has required fields:
name, description, allowed-tools.
- Verify the
name field matches the directory name.
Phase 4 — Agent validation:
For each .md file in agents/:
- Verify the frontmatter has required fields:
name, description, tools, model, maxTurns.
- Verify
model is one of: haiku, sonnet, opus.
Phase 5 — Script validation:
For each .sh file in scripts/:
- Check the file has a shebang line (
#!/usr/bin/env bash or #!/bin/bash).
- Check the file has execute permission.
- If
shellcheck is available, run it on each script and report warnings.
Phase 5.5 — Hooks validation:
- Check if
hooks/hooks.json exists.
- If it exists, verify it is valid JSON.
- Check that it defines
Stop, SessionStart, Notification, SubagentStop, TeammateIdle, TaskCompleted, and PreCompact hook events.
- Verify each hook command references a script that exists in
scripts/.
Phase 5.6 — Config validation:
- If
.omo/config.json exists, run bash scripts/validate-config.sh and report the result.
- If
.omo/config.json does not exist, report as SKIP (config is optional).
- If config exists, verify that every agent's
category: field matches a category defined in the config.
Phase 6 — Report:
Summarize results:
omo self-test results
=====================
Plugin version: X.Y.Z
Structure: PASS/FAIL
Versions: PASS/FAIL (details if fail)
Skills (N): PASS/FAIL (details if fail)
Agents (N): PASS/FAIL (details if fail)
Scripts (N): PASS/FAIL (details if fail)
Hooks: PASS/FAIL/SKIP (details if fail)
Config: PASS/FAIL/SKIP (details if fail)
Overall: PASS / FAIL (N issues)
If any check fails, list each failure with enough detail to fix it.