17 Commits

Author SHA1 Message Date
Allen 981b92e456 fix(plugins): clamp Codex timeout and filter paired output flags
When the codex-reviewer and ralph-reviewed Stop hooks invoke
`codex exec`, they pass `-o <outputFile>` so the verdict can be parsed
back from a known path, then append the user's `extra_args`. Two latent
bugs surfaced after the docs commit started promoting the shared
~/.claude/codex.json knobs to standalone users:

1. The previous filter dropped `-o` / `--output*` tokens individually
   but not the value that followed a bare flag. With
   extra_args: ["-o", "/tmp/other"], the filter left "/tmp/other" as a
   stray positional that Codex treated as an extra prompt argument.
   The new index-walk filter consumes both halves of paired flags
   (-o, --output, --output-last-message) and drops the inline
   --flag=value variants. Applied to both hooks.

2. ralph-reviewed honored `timeout_seconds` raw. A configured value at
   or above the 1800s Stop hook timeout let Claude kill the hook
   before it could parse Codex's output and surface a verdict. Now
   clamped to [60, 1680] (matching the existing codex-reviewer
   clamp), leaving a 120s buffer below the hook ceiling.

Bumps ralph-reviewed to 3.0.2 and codex-reviewer to 1.6.10 in
lockstep across each plugin.json and the root marketplace.json. The
ralph-reviewed troubleshooting README is updated to describe the new
clamp range rather than telling users to "increase to 1800".
2026-05-21 16:24:01 +00:00
Allen 5247b194cc fix(plugins): remove explicit hooks field to fix duplicate hooks error
Claude Code now auto-loads hooks/hooks.json from plugin directories,
so explicit declaration causes duplicate loading. Also adds enabledPlugins
to settings template.

- ralph-reviewed: 1.8.7 → 1.8.8
- codex-reviewer: 1.6.8 → 1.6.9

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 05:04:12 +00:00
Big Boss 4c38d9347d fix(plugins): harden stop hooks and avoid dedupe 2026-01-08 15:56:39 -06:00
Allen 1fff4fc342 fix(plugins): move hooks to separate hooks.json files
Claude Code auto-loads hooks/hooks.json by convention. Inline hooks
in plugin.json were not being loaded, causing Stop hooks to never
trigger.

- codex-reviewer: 1.6.5 → 1.6.6
- ralph-reviewed: 1.8.4 → 1.8.5

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-08 20:26:12 +00:00
Big Boss 57f87f638b fix(plugins): stop outputting approve when no active gate
When codex-reviewer has no active review gate, it was outputting
{"decision": "approve"} which could override other plugin hooks'
block decisions. Now it exits silently (no output) to let other
hooks like ralph-reviewed make the decision.

Also bumps versions: codex-reviewer to 1.6.5, ralph-reviewed to 1.8.4
2026-01-07 23:05:52 -06:00
Big Boss 09ffd9c47e fix(plugins): update hooks format for Claude Code 2.1.1
Claude Code 2.1.1 changed the hook schema to require nested structure:
- Stop hooks now need `"hooks": [{ "hooks": [...] }]` wrapper
- Bump versions: codex-reviewer 1.6.3, ralph-reviewed 1.8.2
2026-01-07 20:47:41 -06:00
Big Boss bf18318f00 fix(plugins): add commands field to plugin.json for command discovery
Both codex-reviewer and ralph-reviewed plugins were missing the
"commands" field, preventing their slash commands from appearing
in the /plugin:command format.
2026-01-07 20:45:53 -06:00
Big Boss de33fe1c25 fix(plugins): consolidate marketplace structure and fix hooks nesting
- Delete nested plugins/.claude-plugin/marketplace.json (was causing load failures)
- Add codex-reviewer to root marketplace.json
- Sync plugin versions in marketplace
- Fix codex-reviewer double-nested hooks structure (same fix as ralph-reviewed)
2026-01-07 17:30:31 -06:00
Big Boss 74c9cb417c fix(commands,codex-reviewer): ensure multi-step skills complete all steps
- Remove clipboard copy from handoff/ralphoff (hooks automate prompt passing)
- Add MANDATORY step markers with CRITICAL warnings for continuation
- Fix stop-hook to find state files in submodules by walking git hierarchy
- Check ACTIVE status when walking ancestors (inactive files don't mask parents)
- Update Step 0 to detect active gates in any ancestor repo
- Add head/grep to allowed-tools for verification commands

Fixes issue where Claude stops after first skill invocation in composite
commands like /ralph and /codex-reviewer:review.
2026-01-07 13:07:31 -06:00
Big Boss 60f5ff0c3b fix(statusline,codex-reviewer): update max_review_cycles default to 10
Align all default values with the new 10-cycle default set in the
codex-reviewer command. Updates struct defaults, test assertions,
documentation examples, and fallback values.
2026-01-06 12:18:03 -06:00
Big Boss 7235762c61 feat(codex-reviewer): add --max-cycles argument for review command
Add support for customizing max review cycles via command argument:
- `/codex-reviewer:review "focus" --max-cycles N`
- Defaults to 5 if not specified
- Matches ralph-loop argument style (description first, flags after)

Also fixes null task_description handling in stop-hook parser.
2026-01-03 08:23:18 -06:00
Big Boss 1ae264e485 feat(codex-reviewer): read handoff file at review time instead of embedding content
- Hook now reads from handoff_path at review time (latest content)
- Falls back to embedded task_description for backwards compatibility
- State file stores handoff path instead of full content
- Claude can update handoff between review cycles without touching state
- Added ALLOWED/FORBIDDEN sections clarifying what Claude can modify
2026-01-02 23:34:50 -06:00
Big Boss d90637e714 feat(hooks): add systemMessage output on review gate approval
When Codex approves, stop hooks now output a systemMessage that Claude
Code displays to the user. This provides visibility into what happened
(approval status, reviewer notes, iteration counts) instead of silent exit.

Changes:
- codex-reviewer: Show approval summary with review cycle and files
- ralph-reviewed: Show status for APPROVE, BLOCKED, max iterations,
  and max review cycles scenarios
- Added JSDoc with reference to official hooks documentation
- Bumped plugin versions (codex-reviewer 1.4.0, ralph-reviewed 1.6.0)
2026-01-02 14:48:33 -06:00
Big Boss a86067d881 fix(codex-reviewer): prevent review count reset on re-invocation
- Add Step 0 guard in review.md to check for existing active gate
- If gate already active, tell Claude to just exit instead of recreating
- Update stop-hook feedback to explicitly warn against calling skill again
- Bump version to 1.3.0
2026-01-02 09:58:18 -06:00
Big Boss 94eaccc46f feat(codex-reviewer): use /handoff for rich review context
The review command now invokes /handoff before creating the state file,
giving Codex rich context about the work instead of a basic summary.

Changes:
- Restructure review.md into 3 steps: generate handoff, create state, exit
- Add YAML frontmatter with description and allowed-tools
- State file task_description now contains full handoff with XML sections:
  <role>, <context>, <current_state>, <key_files>, <next_steps>
- Bump version to 1.2.0

Before: task_description was "Updated file X to do Y"
After: task_description includes reviewer framing, approach context,
       what was done, key files with descriptions, verification steps
2026-01-01 21:26:59 -06:00
Big Boss 7d2e7826e7 chore(codex-reviewer): bump version to 1.1.1 2026-01-01 11:37:52 -06:00
Big Boss c103c08a3b feat(plugins): add codex-reviewer strict code review gate
Implement Codex-powered review gate plugin with fail-closed behavior:
- Stop hook with 1800s timeout to bypass Bash tool limits
- Strict gate: all errors block, requires explicit /cancel to escape
- Timeout clamping to [60s, 1680s] for safe hook execution
- State persistence before max-cycle check
- Execution error handling (spawn, signal, non-zero exit)
- Review history tracking with issue IDs across cycles
- Commands: review (start gate), cancel (escape gate)

Config stored at ~/.claude/codex/config.json separate from other tools.
2025-12-31 22:19:58 -06:00