diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index a2f1467..f79497e 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "github", - "version": "1.5.0", + "version": "1.5.1", "description": "GitHub CI/CD automation plugin with autonomous fix loops, PR workflows, and code review", "author": { "name": "Ladislav Martincik", diff --git a/CHANGELOG.md b/CHANGELOG.md index 51131eb..ae2dca2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,13 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.5.1] - 2026-02-10 + +### Fixed + +- **`/review-pr --swarm` routing** — replaced advisory "Argument Parsing" + "Mode Selection" with imperative "CRITICAL: Route Selection" gate to force immediate branching +- **`/fix-ci --swarm` routing** — strengthened "CRITICAL: Parse Flags First" with explicit `SWARM_MODE=true` variable and back-reference in Step 2.5 condition check + ## [1.5.0] - 2026-02-09 ### Added diff --git a/commands/review-pr.md b/commands/review-pr.md index 9241c2a..17b87aa 100644 --- a/commands/review-pr.md +++ b/commands/review-pr.md @@ -8,17 +8,12 @@ You are a comprehensive PR reviewer conducting a thorough analysis of a GitHub p User provided: `$ARGUMENTS` -## Argument Parsing +## CRITICAL: Route Selection -The `$ARGUMENTS` input may contain both the PR number/URL and optional mode flags. Extract the intent: -- Identify if `--swarm` flag is present (indicates user wants parallel team review) -- Separate the flag from the PR identifier itself -- The PR identifier is the remaining text after flag extraction (PR number, URL, or owner/repo#number format) +BEFORE taking any other action, check `$ARGUMENTS` for the `--swarm` flag: -## Mode Selection - -**If user requested swarm mode** (via `--swarm` flag): Execute the **Swarm Workflow** below. -**Otherwise**: Execute the **Standard Workflow** below. +1. If `--swarm` IS present: remove it from the arguments (the remaining text is the PR identifier — number, URL, or owner/repo#number format), then skip directly to **Swarm Workflow**. Do NOT execute any Standard Workflow steps. +2. If `--swarm` is NOT present: the full `$ARGUMENTS` is the PR identifier, skip directly to **Standard Workflow**. Do NOT execute any Swarm Workflow steps. --- diff --git a/package.json b/package.json index 36a9e98..1bba4d5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "github-plugin", - "version": "1.5.0", + "version": "1.5.1", "description": "GitHub CI/CD automation plugin for Claude Code", "private": true, "type": "module", diff --git a/skills/ci-fix-loop/SKILL.md b/skills/ci-fix-loop/SKILL.md index 3047424..4a000d4 100644 --- a/skills/ci-fix-loop/SKILL.md +++ b/skills/ci-fix-loop/SKILL.md @@ -15,12 +15,12 @@ This skill is invoked when: - Multiple CI fix iterations are needed - User wants hands-off CI repair -## Argument Parsing +## CRITICAL: Parse Flags First -The command arguments may contain optional flags that modify the fix loop behavior: -- Extract `--swarm` flag if present (indicates user wants parallel team-based fixing) -- Extract `--loop` or `--auto` flags (standard autonomous mode) -- The flags can be combined with other arguments +BEFORE proceeding to Phase 1, extract these flags from `$ARGUMENTS`: +- `--swarm`: If present, set SWARM_MODE=true. You MUST remember this flag — it changes behavior at Step 2.5 (parallel team-based fixing). +- `--loop` or `--auto`: Standard autonomous mode. +- Remove all extracted flags from arguments; remaining text is additional context. ## Configuration @@ -135,11 +135,11 @@ if current_errors is empty: #### Step 2.5: Apply Fixes -**Condition Check**: Determine fix strategy based on error distribution and `--swarm` flag: +**CRITICAL Condition Check**: Before applying fixes, check BOTH conditions — was `--swarm` set during flag parsing above, AND are errors in 2+ files? ``` file_count = count of distinct files with errors -use_swarm = (file_count >= 2) AND (--swarm flag is set) +use_swarm = (file_count >= 2) AND (SWARM_MODE is true from "Parse Flags First" above) ``` **If use_swarm is FALSE** (errors in single file OR --swarm not requested):