From maestro
Adversarially review a grooming spec before implementation starts. Finds hidden risks, unvalidated assumptions, and missing dependencies. Standalone entry point for the challenger agent.
How this skill is triggered — by the user, by Claude, or both
Slash command
/maestro:challenge <issue-number><issue-number>The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Standalone adversarial spec review. Runs the full challenger analysis on an existing
Standalone adversarial spec review. Runs the full challenger analysis on an existing grooming spec and outputs a verdict (APPROVED / NEEDS_REVISION / BLOCKED) with MoSCoW-classified findings. Posting to the GitHub issue is your choice — you are prompted at the end.
Read .claude/maestro.json. Extract:
TEMP_ROOT = .ai.temp_rootREPO = .ai.repoUse $ARGUMENTS as the issue number N. Then verify both files exist:
{TEMP_ROOT}/issues/<N>/issue.md{TEMP_ROOT}/issues/<N>/spec.mdIf the spec does not exist, tell the user: "No spec found for issue #N. Run
/maestro:groom <N> first to produce one." Stop here.
If only the issue file is missing, run the issue sync to fetch it:
bash .claude/skills/issue-workflow/scripts/issue-sync.sh <N>
Invoke the challenger sub-agent with:
N{TEMP_ROOT}/issues/<N>/issue.md{TEMP_ROOT}/issues/<N>/spec.mdplan_version: 1 (or detect from the spec's Plan v<N> header if present)CURRENT_MODEL: "standalone"session_learnings: read Section 13 of AGENTS.md if it exists, else pass empty stringSTANDALONE MODE — one difference from the normal pipeline run: Skip the StructuredOutput JSON return. Output the full human-readable verdict (APPROVED / NEEDS_REVISION / BLOCKED) and findings in a section titled
## Challenge Report, using the same format the orchestrator would receive (verdict, MoSCoW-classified findings, alternative suggestions).
After the agent responds, display its ## Challenge Report and ask:
Post this challenge report as a comment on issue #<N>? Reply
yesto post,noto finish here.
If yes — post as an issue comment with dedup:
EXISTING_ID=$(gh api repos/{REPO}/issues/<N>/comments \
--jq '[.[] | select(.body | contains("<!-- ai-pipeline:challenge -->"))] | last | .id // empty')
Update with PATCH if found, otherwise post a new comment. Body always starts with
<!-- ai-pipeline:challenge -->.
If no — finish. Remind the user: if the verdict is NEEDS_REVISION, the spec at
{TEMP_ROOT}/issues/<N>/spec.md should be updated before running /maestro:groom <N>
again or starting implementation.
npx claudepluginhub wp-media/maestroCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.