Skip to content
Skills Library
Programming · Tool integration

create-issues

/create-issues

Create GitHub issues from AI-reported findings stored in the external findings directory (e.g., C:\git\slf4j-toys-findings\<analyzer>\<NN-scope>\). Use whenever converting analysis findings into trackable GitHub issues: reading finding files, extracting metadata into labels, creating issues via `gh issue create`, and closing resolved/accepted findings with resolution comments. Trigger on requests like "create issues", "convert findings to issues", "open GitHub issues", or any request to publish findings as repository issues — even when the word "issue" is not used explicitly.

Repository
slf4j-toys ↗
Licence
Apache-2.0
Last repository change
14.07.2026

Assessment and security

98/ 100Class: good
Format25 / 25
Frontmatter with name and description, valid name, description up to 1,024 characters, name matching the folder.
Discoverability25 / 25
Description explains when to use the skill, has a reasonable length and uses third person.
Content35 / 35
At least 150 words and at most 500 lines, headings, step lists, examples or code.
Hygiene13 / 15
No placeholders such as TODO, no Windows paths, with a licence.
Riskno signals detected in the scan
Files in this package
1
Scripts
0
HTML comments
0
URLs in SKILL.md
0
Deprecation

No signals detected. Repository changed on 14.07.2026, without references to retired models or APIs.

Licence

Apache-2.0, otwarta: można używać i zmieniać, z zachowaniem licencji i informacji o zmianach.

What it does and when to use it

Create GitHub issues from AI-reported findings stored in the external findings directory (e.g., C:\git\slf4j-toys-findings\<analyzer>\<NN-scope>\). Use whenever converting analysis findings into trackable GitHub issues: reading finding files, extracting metadata into labels, creating issues via `gh issue create`, and closing resolved/accepted findings with resolution comments. Trigger on requests like "create issues", "convert findings to issues", "open GitHub issues", or any request to publish findings as repository issues — even when the word "issue" is not used explicitly.

Triggers from the description

create issuesconvert findings to issuesopen GitHub issuesissue
Original author description

Create GitHub issues from AI-reported findings stored in the external findings directory (e.g., C:\git\slf4j-toys-findings\<analyzer>\<NN-scope>\). Use whenever converting analysis findings into trackable GitHub issues: reading finding files, extracting metadata into labels, creating issues via `gh issue create`, and closing resolved/accepted findings with resolution comments. Trigger on requests like "create issues", "convert findings to issues", "open GitHub issues", or any request to publish findings as repository issues — even when the word "issue" is not used explicitly.

How it works

  1. When to use
  2. Prerequisites
  3. Label Taxonomy
  4. Mapping findings to issues
  5. Issue body format
  6. Workflow
  7. PowerShell quoting notes
  8. Relationship with other skills
  9. Related files
  10. Language
Original SKILL.md headings · 243 lines, 1,334 words
SKILL.md preview
---
name: create-issues
description: 'Create GitHub issues from AI-reported findings stored in the external findings directory (e.g., C:\git\slf4j-toys-findings\<analyzer>\<NN-scope>\). Use whenever converting analysis findings into trackable GitHub issues: reading finding files, extracting metadata into labels, creating issues via `gh issue create`, and closing resolved/accepted findings with resolution comments. Trigger on requests like "create issues", "convert findings to issues", "open GitHub issues", or any request to publish findings as repository issues — even when the word "issue" is not used explicitly.'
---

# Creating GitHub Issues from Findings

This skill converts findings produced by code reviews and audits (see `document-findings` and `code-review` skills) into trackable GitHub issues in the `useful-toys/slf4j-toys` repository, using a standardized English label taxonomy that mirrors the finding file metadata. All issue titles, bodies, comments, and labels must be written in English.

## When to use

- After an analysis run (e.g., `fable/01-watcher`) is complete and the user wants the findings tracked as GitHub issues.
- When the user asks to "create issues", "open issues", "convert findings to issues", or similar.
- When a revalidation sweep updates finding statuses and the corresponding GitHub issues need to be closed or updated.

## Prerequisites

- `gh` CLI authenticated with `repo` scope (`gh auth status`).
- Findings directory at `C:\git\slf4j-toys-findings\<analyzer>\<NN-scope>\` with `general.md` and per-finding `.md` files.
- Labels created in the repository (see Label Taxonomy below). If labels do not exist yet, create them first.

## Label Taxonomy

The label scheme uses `<dimension>:<value>` format with colons, grouped by dimension. Each dimension maps directly to a field in the finding file metadata table.

### Dimensions and Labels

| Dimension | Labels | Source in finding | Color |
|-----------|--------|-------------------|-------|
| **analyzer** | `analyzer:fable`, `analyzer:kimi`, `analyzer:sonet`, `analyzer:glm`, `analyzer:qodana`, `analyzer:codeql` | Directory name under `slf4j-toys-findings/` | `#666666` (gray) |
| **type** | `type:bug`, `type:sec`, `type:design`, `type:style`, `type:robust`, `type:doc`, `type:perf` | Filename prefix (`bug-`, `sec-`, `design-`, etc.) | `#0366d6` (blue) |
| **severity** | `severity:high`, `severity:medium`, `severity:low` | Filename severity segment or metadata table | `#d73a4a` / `#fbca04` / `#96f7d6` |
| **effort** | `effort:trivial`, `effort:small`, `effort:medium`, `effort:n/a` | Metadata table "Effort to fix" | `#c2e0c6` |
| **verdict** | `verdict:confirmed`, `verdict:plausible` | Metadata table "Verdict" | `#5319e7` (purple) |
| **status** | `status:pending`, `status:resolved`, `status:accepted` | Metadata table "Status" + filename suffix (`-fixed`, `-accepted`) | `#ffd54f` / `#28a745` / `#6f42c1` |
| **component** | `component:watcher`, `component:meter`, `component:reporter`, `component:logger`, `component:utils`, `component:config`, `component:build`, `component:docs`, `component:test` | Inferred from the "Where" field (package/module affected) | `#1d76db` |

### Creating labels

If labels do not exist in the repository, create them before creating issues:

```powershell
gh label create "analyzer:fable" --color "666666" --description "Finding produced by Fable analyzer"
gh label create "type:bug" --color "0366d6" --description "Bug - functional defect"
gh label create "severity:medium" --color "fbca04" --description "Medium severity"
gh label create "effort:small" --color "c2e0c6" --description "Small effort to fix"
gh label create "status:pending" --color "ffd54f" --description "Finding pending - not yet addressed"
# ... etc for all labels in the taxonomy
```

Run `gh label list --limit 100` first to check which labels already exist.

## Mapping findings to issues

### From filename

The finding filename encodes type, severity, and status:

```
<prefix>-<number>-<severity>-<slug>[-accepted][-fixed].md
```

- `prefix` → `type:<prefix>` label
- `severity` (`high`, `medium`, `low`) → `severity:<severity>` label
- `-fixed` suffix → `status:resolved` label (issue will be closed)
- `-accepted` suffix → `status:accepted` label (issue will be closed)
- no suffix → `status:pending` label (issue stays open)
- `-accepted-fixed` suffix → `status:resolved` label (issue will be closed; accepted risk with mitigation applied)

### From metadata table

The finding's metadata table (the `| | |` block) provides:

| Finding field | Label(s) |
|---------------|----------|
| Status row | `status:pending` / `status:resolved` / `status:accepted` |
| Verdict row | `verdict:confirmed` / `verdict:plausible` (extract the uppercase word) |
| Effort to fix row | `effort:trivial` / `effort:small` / `effort:medium` / `effort:n/a` |
| Severity row | `severity:high` / `severity:medium` / `severity:low` |

### From directory

The parent directory of the finding file is the analyzer name:

```
C:\git\slf4j-toys-findings\fable\01-watcher\robust-001-...md
                                ^^^^
                                analyzer:fable
```

### Component inference

Infer the `component:*` label from the "Where" field in the metadata table:

| Package/path in "Where" | Component label |
|------------------------|-----------------|
| `org.usefultoys.slf4j.watcher` | `component:watcher` |
| `org.usefultoys.slf4j.meter` | `component:meter` |
| `org.usefultoys.slf4j.reporter` (or `Report*`) | `component:reporter` |
| `org.usefultoys.slf4j` (LoggerFactory, streams, Session) | `component:logger` |
| `org.usefultoys.slf4j.utils` | `component:utils` |
| `WatcherConfig`, `MeterConfig`, `SystemConfig`, `SessionConfig` | `component:config` |
| `pom.xml`, `.github/workflows/`, `mvnw` | `component:build` |
| `README.md`, `doc/`, `wiki/` | `component:docs` |
| `src/test/` (test infrastructure only) | `component:test` |

If a finding spans multiple components, choose the primary one (the one where the fix would be applied).

## Issue body format

Each issue body should include (in English):

```markdown
## Summary

<one-paragraph summary from the finding's opening or "Problem" section>

## Where

- `<file:lines>` — branch: `<branch>`
- (list all locations from the "Where" field)

## Category

<from metadata table>

## Verdict

<from metadata table>

## Severity / Probability

<from metadata table>

## Effort

<from metadata table>

## Problem

<from the finding's "Problem" section — the mechanism description>

## Failure scenario

<from the finding's "Failure scenario" section>

## Suggested fix

<from the finding's "Suggested fix" or "Fix options" + "Recommended fix">

## Resolution

(Only for resolved/accepted findings — from the validation blockquote at the top of the file)

**FIXED** or **ACCEPTED** — validated on <date>, commit `<hash>`. <what the fix does>. <test evidence>.

## Traceability

- Commit(s): `<hash>`
- TDR(s): TDR-XXXX
- Analysis file: `<analyzer>/<NN-scope>/<finding-file>`
```

## Workflow

### 1. Read the findings

Read `general.md` for the overview and index, then read each finding `.md` file to extract:
- Title (from the `# ` heading)
- Metadata table fields
- Problem description
- Failure scenario
- Suggested fix
- Validation status (from blockquotes under the title)
- Resolution commit (from the validation blockquote or Status row)

### 2. Ensure labels exist

```powershell
gh label list --limit 100
```

Create any missing labels using `gh label create`.

### 3. Create issue body files

Write each issue body to a temporary file (e.g., `$env:LOCALAPPDATA\Temp\opencode\issue-<id>.md`). This avoids PowerShell quoting issues with `--body` on Windows.

### 4. Create issues

Use `gh issue create` with `--body-file` (or `-F`) and multiple `-l` flags:

```powershell
gh issue create `
    -t "DOC-001: WatcherConfig Javadoc outdated after singleton removal" `
    -F "$env:LOCALAPPDATA\Temp\opencode\issue-doc-001.md" `
    -l 'analyzer:fable' -l 'type:doc' -l 'verdict:confirmed' `
    -l 'severity:medium' -l 'effort:small' -l 'status:pending' -l 'component:watcher'
```

Capture the returned URL/number for each issue.

### 5. Close resolved and accepted issues

For findings with `status:resolved` or `status:accepted`, close the issue immediately after creation with a resolution comment:

```powershell
gh issue close <number> -c "Resolved in commit <hash>. <description>. <N/N tests pass>."
```

For accepted findings, the comment should reference the TDR or documentation that records the decision:

```powershell
gh issue close <number> -c "Accepted as project decision (TDR-XXXX). <what was documented>."
```

### 6. Verify

```powershell
gh issue list --state all --limit 30 --json number,title,labels,state
```

## PowerShell quoting notes

- Use `--body-file` (`-F`) instead of `--body` (`-b`) for multi-line bodies — PowerShell mangles strings with backticks, quotes, and special characters when passed inline.
- Wrap each `-l` value in single quotes: `-l 'severity:medium'`. The colon in label names is safe inside single quotes.
- Issue titles with special characters (accents, em-dashes) may need to be simplified for `gh` CLI compatibility on PowerShell. Replace accented characters with their ASCII equivalents in titles if `gh` rejects them.
- Comments passed via `-c` must also avoid characters that PowerShell interprets as argument separators. Keep comments concise and ASCII-safe.

## Relationship with other skills

- **`document-findings`**: Produces the finding files that this skill converts to issues. The finding files are the source of truth; GitHub issues are the tracking layer.
- **`code-review`**: Produces the analysis that `document-findings` persists and this skill publishes.
- **`trunk-based-development`**: Creating labels and issues is a repository configuration action (section 7 exception) — it can be done directly on `main` without a branch/PR. However, if the user asks for the skill file itself (under `.agents/skills/`) to be created or updated, that is also a section 7 exception.
- **`git-commit-message`**: If committing the skill file or any repo changes, follow the conventional commit format.

## Related files

- Findings directory: `C:\git\slf4j-toys-findings\<analyzer>\<NN-scope>\`
- Skills directory: `.agents/skills/`
- `document-findings` skill: `.agents/skills/document-findings/SKILL.md`
- `code-review` skill: `.agents/skills/code-review/SKILL.md`

## Language

All issue titles, bodies, comments, and labels must be in English. Translate any Portuguese finding fields (e.g., `Resumo` → `Summary`, `Problema` → `Problem`, `Cenário de falha` → `Failure scenario`) when creating the GitHub issue.

Versions

RepositoryScoreLicence
This page · useful-toys/slf4j-toys98Apache-2.0
afonsoft/skills100MIT
AlbertoRiorda95/agent-team90MIT

Database snapshot: 13.11.2026 · package version 091804b2bb03 (SHA-256 digest of the entire package)

Downloads in the last 30 days: 0 · ranking

Report a problem with this skill: harmful content, incorrect descriptions or an author’s removal request.

Similar skills

  • 100create-github-issue
    Create GitHub issues using GitHub CLI with support for templates, labels, assignees, milestones, and draft issues. Use when the user asks to create a GitHub issue, file a bug report, submit a feature request, or open an issue in a GitHub repository.
  • 100github
    Work with GitHub code, issues, pull requests, comments and files. Clone and push with git, list and read issues and pull requests, create and update issues, create pull requests, comment, read the changed files of a pull request, read a file or folder of a repository, search…
  • 100create-github-issue
    Create GitHub issues using the gh CLI. Use when the user wants to create a new issue, report a bug, request a feature, or create a task in GitHub. Trigger keywords - create issue, new issue, file bug, report bug, feature request, github issue.
  • 100create-issue
    Turn a feature request or a finished implementation plan into GitHub issues grounded in the real code, then create them with the gh CLI. A plan with several tasks becomes one parent issue with one sub-issue per task. Use when the user says "create an issue", "file this as…
  • 90issues
    把项目待办与记忆放进 GitHub issues。来自审读、审计或用户的每条审查发现都可归档为独立 issue 并避免重复;列出与当前工作相关的未关闭 issue;关闭时用评论记录原问题、尝试过的方法、有效方案和最终修复。当审查发现或问题需要跟踪时(论文误导性断言、代码 bug、日后改进),在开工/续接并决定下一步时,或修复落地后需要带记录关闭 issue 时使用。需要 GitHub CLI;发布到公开仓库前会警告。用户说 "file issues"、"list issues"、"close issue"、"归档审查发现" 或 "列出待办 issue" 时也使用。
  • 100github-triage
    Triages a repository's open GitHub issues and pull requests via the gh CLI. Optionally reviews and merges ready PRs — incrementally merging passing automated/bot PRs and maintainer-approved ones, and spawning review subagents for never-reviewed ones — then closes…

Feedback and reports

Your message goes to Bartosz Sokoliński. An email address is needed only for a reply. See the privacy policy.