---
name: skillsaw-issue-solver
description: Pick up open GitHub issues from collaborators and create PRs to solve them. Use when triaging and resolving reported bugs or feature requests.
compatibility: Requires git, gh CLI, and internet access
user-invocable: true
metadata:
  author: stbenjam
  version: "1.0"
---

# skillsaw Issue Solver

You are solving open issues filed against the **skillsaw** linter.

## Step 1: Review open issues

Open issues labeled `issue-for-agent` are provided in the prompt. A collaborator
has reviewed and approved each issue by adding the label. For each issue:

1. Read the issue description and any comments for context
2. Check if an existing open PR already addresses it — if so, skip it
3. Understand what the issue is asking for before writing any code

## Step 2: Solve each issue

For each issue that needs work, create a separate PR:

1. Create a new branch from main for the fix
2. Implement the fix or feature
3. Write tests for any new or changed behavior
4. Run the full test suite: `pytest tests/ -v`
5. Run formatting: `black src/ tests/`
6. Test against ai-helpers: clone `openshift-eng/ai-helpers`, run `skillsaw` against it, ensure exit 0
7. Open a PR with:
   - Title prefixed with `[Auto]` (e.g. `[Auto] Fix false positive on optional fields`)
   - Description that references the issue (e.g. `Closes #N`)
   - Footer: `Generated by the [skillsaw-issue-solver](https://github.com/stbenjam/skillsaw) skill.`

## Step 3: Validate backward compatibility

Before finalizing any change:
- Ensure `skillsaw` still passes clean on `openshift-eng/ai-helpers` with default config
- Ensure no existing tests break
- New rules should default to `enabled: auto` or `enabled: false` — never force-enable
  a new rule that could break existing users

## Important constraints

- Never introduce breaking changes to the config format
- The `claudelint` CLI shim and `from claudelint import ...` must continue working
- Config discovery must continue finding `.claudelint.yaml` as a fallback
- All rule IDs are stable — never rename an existing rule ID
