Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsBlogPro
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges
  • Chrome Extension
  • Skill Manager

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Address Issue

ASecurity

Plan and implement a GitHub issue on the current branch, stopping for approval first. Use for "address issue #42" or "fix issue #42".

2 stars
0 votes
0 copies
0 views
Added 10/2/2026
developmentgobashgitdocumentation

Works with

claude codecli

Security Analysis

A100/100

Scanned 10/7/2026

$npx -y skills add cboone/agent-harness-plugins --skill address-issue --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Address Issue?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Address Issue
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/cboone-address-issue/badge)](https://www.skillsdirectory.com/skills/cboone-address-issue)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
Files
SKILL.md
---
name: address-issue
description: >-
  Plan and implement a GitHub issue on the current branch, stopping for approval
  first. Use for "address issue #42" or "fix issue #42".
argument-hint: "<issue-number|description> [--dry-run|--no-approval] [--no-commit] [--commit-per-change]"
---

# Address Issue

Fetch a GitHub issue, plan the work, stop for approval, then execute changes and commit with issue references.

## Options

The user may provide these options inline:

- **--dry-run**: Fetch and analyze the issue, present the plan, but do not make changes
- **--no-approval**: Skip the approval stop in step 6 and go straight from the plan to execution
- **--no-commit**: Make changes but do not commit them
- **--commit-per-change**: Commit after each logical change instead of grouping at the end

`--dry-run` and `--no-approval` are opposite ends of the same gate: `--dry-run` stops permanently after the plan, the default stops and resumes once the user approves, and `--no-approval` never stops.

## Workflow

### 1. Find the Issue

The user provides either an issue number or descriptive text.

**By number:**

```bash
gh issue view NUMBER --json number,title,labels,assignees,body,state
```

**By text (fuzzy search):**

```bash
gh issue list --search "USER_TEXT" --state all --json number,title,labels,state --limit 10
```

If the search returns exactly one result, proceed automatically with that issue without asking for additional confirmation.

If the search returns multiple results, present them to the user and ask which one to use.

If no results, try broadening the search or ask the user to refine their query.

### 2. Check Issue State

If the issue is closed, warn the user and ask whether to proceed. Do not proceed without confirmation.

### 3. Mark Issue In Progress

If the issue is open, signal that work is starting. Skip this step for closed issues.

**Self-assign:**

```bash
gh issue edit NUMBER --add-assignee @me
```

**Ensure the label exists, then add it:**

```bash
gh label create "in progress" --description "Work is actively being done" --color FBCA04 2> /dev/null || true
gh issue edit NUMBER --add-label "in progress"
```

The `gh label create` command is safe to run even if the label already exists. `2> /dev/null` suppresses the "already exists" error and `|| true` ensures a zero exit code so the subsequent command always runs. This ensures the label is available before `gh issue edit --add-label` attempts to use it, since `gh` does **not** auto-create labels.

Self-assignment is idempotent, safe to re-run if the assignee already exists.

If any command fails, warn the user but continue. Status marking is best-effort and must never block the primary workflow. Record whether this step succeeded for the completion summary.

If the session is already in plan mode when the skill starts, all three commands above write to GitHub and will be blocked: the self-assign, the label creation, and the label add. Skip this step, note that the issue was not marked in progress, and continue.

### 4. Display Issue Context

Show the issue details to establish shared context:

```text
## Issue #NUMBER: TITLE

**State:** open/closed
**Labels:** label1, label2
**Assignees:** user1, user2

BODY_CONTENT
```

- If the issue body exceeds approximately 2000 characters, truncate it at the nearest paragraph or sentence boundary and append: "(Issue body truncated. Run `gh issue view NUMBER` for full details.)"
- If the issue body is empty, note that the body is empty.
- If there are no labels, omit the labels line.
- If there are no assignees, omit the assignees line.

### 5. Analyze the Issue

**Classify the issue** into one of these types based on labels, title, and body content:

<!-- prettier-ignore -->
| Type          | Signals                                                       | Commit prefix |
| ------------- | ------------------------------------------------------------- | ------------- |
| bug fix       | "bug" label, "fix", "crash", "error", "broken" in title/body  | `fix`         |
| feature       | "enhancement"/"feature" label, "add", "implement", "support"  | `feat`        |
| documentation | "documentation" label, "docs", "readme", "guide"              | `docs`        |
| refactor      | "refactor" label, "clean up", "simplify", "reorganize"        | `refactor`    |
| chore         | "chore"/"maintenance" label, "update", "bump", "dependencies" | `chore`       |

Default to `feat` when the classification is ambiguous.

**Extract sub-tasks** from the issue body if it contains GitHub task list checkboxes:

- Unchecked items (`- [ ] ...`) become sub-tasks to address
- Checked items (`- [x] ...`) are treated as already completed and skipped

If there are no task list items, treat the entire issue as a single task.

### 6. Plan the Work

**Do not create, modify, or delete any file until the plan is approved.** This is a hard gate, not a suggestion. Asking the user a clarifying question is allowed; editing is not.

**Check the flags before doing anything else in this step.** `--dry-run` and `--no-approval` both bypass plan mode, so read their paragraphs at the end of this step first.

**If your harness provides plan mode** (Claude Code) and neither flag was given: call `EnterPlanMode` before exploring, keep the exploration read-only, then call `ExitPlanMode` with the plan below and wait for the approval result.

**Otherwise** (Codex CLI, OpenCode, or any harness without those tools): present the plan below, then stop and wait for the user to confirm, adjust, or reject it.

Enter plan mode here rather than at step 1. Steps 1 and 4 are read-only, but step 3 writes to GitHub, and plan mode would block it.

1. Explore the codebase to understand the relevant areas
1. Identify the files that need to be created, modified, or deleted
1. Present a plan to the user:

```text
## Plan for Issue #NUMBER

**Classification:** bug fix / feature / documentation / refactor / chore
**Sub-tasks:** N (if extracted from task list)

### Changes

1. Modify `src/auth.go` - fix null pointer in login handler
1. Add `src/auth_test.go` - add test for the fix
1. Update `README.md` - document the new behavior
```

**If `--dry-run` was specified**: Present the plan, then stop permanently. Do not make any changes.

**If `--no-approval` was specified**: Skip the stop and continue to step 7.

**Either flag bypasses plan mode entirely.** With `--dry-run` or `--no-approval` set, call neither `EnterPlanMode` nor `ExitPlanMode`, and present the plan as plain output instead. Skipping only `EnterPlanMode` while still following the instruction above to call `ExitPlanMode` would leave the harness exiting a mode it never entered. Neither flag has an approval for those tools to gate: `--dry-run` ends at the plan, and `--no-approval` proceeds past it without asking.

### 7. Execute the Changes

Work through each planned change, announcing progress:

```text
### Change 1 of N: Modify src/auth.go
```

If sub-tasks were extracted from the issue body, work through each sub-task in order.

### 8. Commit the Changes

**If `--no-commit` was specified**: Skip this step entirely.

**If `--commit-per-change` was specified**: Commit after each change in step 7 instead of waiting until the end.

**Default behavior** (neither flag): After all changes are complete, group them into the smallest logical commits that are appropriate. Each commit should be a self-contained, reviewable unit.

All commit messages must:

- Use the conventional commit prefix derived from the issue classification (step 5)
- Include the issue number for GitHub auto-linking: `(#NUMBER)`
- Be concise and descriptive

Examples:

```text
fix: resolve null pointer in login handler (#42)
feat: add dark mode toggle to settings page (#15)
docs: update installation instructions (#88)
```

For multi-commit cases, each commit references the same issue number.

### 9. Leave Issue In Progress

Do not remove the "in progress" label after local implementation or committing.

The label means the issue has active work associated with it. Keep it in place until the related pull request is merged or the user explicitly abandons the effort.

If step 3 succeeded, report that issue status cleanup is deferred until PR merge or explicit abandonment. If step 3 was skipped or failed, report that no issue status was retained. Do not add PR merge automation or invent an abandonment workflow.

### 10. Report Completion

Display a summary of what was done:

```text
## Summary for Issue #NUMBER: TITLE

| #   | Change                              | Status  | Commit  |
| --- | ----------------------------------- | ------- | ------- |
| 1   | Fix null pointer in auth.go         | Done    | abc1234 |
| 2   | Add test for login handler          | Done    | abc1234 |
| 3   | Update README                       | Skipped | -       |

**Total**: N changes made, M skipped
```

If any changes were skipped, list them with explanations.

If step 3 succeeded, include a note that issue #NUMBER remains labeled "in progress" until the related PR merges or the user explicitly abandons the effort.

### 11. Offer Next Steps

Suggest logical follow-up actions:

- `/pr` to create a pull request for the changes
- If the issue had sub-tasks and some remain unchecked, note which items still need attention
- If the issue references other issues, mention them

## Error Handling

- If `gh` is not installed or not authenticated, instruct the user to install it from https://cli.github.com/ and run `gh auth login`
- If the issue is not found, report that and stop
- If the issue is closed, warn and ask before proceeding
- If status marking fails (assignment or labeling), warn but continue with the work
- If the session is already in plan mode, step 3 is blocked; skip it, say so, and continue
- If the user rejects the plan in step 6, stop without making changes and report that the issue is still marked in progress
- If a planned change cannot be made (file not found, ambiguous requirement), skip it with an explanation and continue with the remaining changes
- If commits fail, report the error and leave changes uncommitted for the user to handle

Attribution

cboonecboone
View sourceSee grades on GitHubMore from cboone →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Clean Code

Pragmatic coding standards - concise, direct, no over-engineering, no unnecessary comments

304955 votes

Browser Extension Developer

Use this skill when developing or maintaining browser extension code in the `browser/` directory, including Chrome/Firefox/Edge compatibility, content scripts, background scripts, or i18n updates.

286712 votes

Seo Optimizer

SEO optimization with keyword analysis, readability assessment, technical validation, content quality. Use for search rankings, blog posts, content audits, or encountering keyword density, readability scores, meta tags, schema markup errors.

2222 votes

Google Official Seo Guide

Official Google SEO guide covering search optimization, best practices, Search Console, crawling, indexing, and improving website search visibility based on official Google documentation

1862 votes

Writing Plans

Use when you have a spec or requirements for a multi-step task, before touching code

2927051 votes
View all in development →