agentleFS
northraystudionorthraystudio/maruda/skills/report-to-issues/SKILL.md

report-to-issues

Skill7 starsChanged 21 days agoMITView on GitHub

Parses reports generated by the software-evaluation, vulnerability-scan, dependency-audit or sakuda-triage skills and interactively registers selected tasks as GitHub Issues using the `gh` CLI. Use when the user wants to convert an evaluation report (docs/evaluation/*.md) or security audit report (docs/security-audit/*.md, docs/dependency-audit/*.md) into GitHub Issues. Triggers on requests like "create issues from report", "register tasks to GitHub", "convert report to issues", or when pointing at a specific report file.

1 other project uses a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

11 rules. About 0 are common, 8 are distinctive, and 3 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈8

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 3

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    If the user specifies a file path, use it directly.

    line 16
  2. Distinctive:

    If multiple exist, ask the user to select one.

    line 22
  3. Distinctive:

    Wait for the user's response before proceeding.

    line 66
  4. Distinctive:

    Before creating issues, check for existing issues that may overlap with the selected tasks.

    line 72
  5. Distinctive:

    Wait for the user's response.

    line 101
  6. Distinctive:

    Before creating issues, verify required labels exist.

    line 107
  7. Distinctive:

    Check and create missing labels:

    line 122
  8. Very specific:

    Always add report-type label: software-evaluation or security-audit

    line 176
  9. Very specific:

    Always add priority label: P0, P1, P2, or P3

    line 177
  10. Very specific:

    Check exit code after each gh issue create.

    line 180
  11. Distinctive:

    After all issues are created, output:

    line 186

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Workflow

Phase 1: Locate Report

  1. If the user specifies a file path, use it directly.
  2. Otherwise, list available reports:
    • docs/evaluation/ — software-evaluation reports
    • docs/security-audit/ — vulnerability-scan reports, and sakuda-triage reports (sakuda-triage.*.md, same format — only confirmed findings have ### V-XX sections)
    • docs/dependency-audit/ — dependency-audit reports (same security-audit format; one ### V-XX per package upgrade, P0/P1 only). Treat them as security-audit reports, including the security-audit label. A report whose status is not run yields no tasks — say so and point at its Coverage reasons instead of reporting "nothing to file"
    • Skip docs/security-audit/rule-proposals.*.md — those are rule proposals from rule-proposer, not findings
    • If multiple exist, ask the user to select one.
  3. Detect report type by content:
    • Contains ## Improvement Roadmap → evaluation report
    • Contains ## Remediation Priority → security-audit report

Phase 2: Extract Tasks

Evaluation report — extract rows from ## Improvement Roadmap tables (P0–P3):

Each row yields:

  • priority: P0 / P1 / P2 / P3
  • title: Problem column (first sentence or file:line prefix)
  • problem: full Problem cell
  • solution: Solution cell
  • expected_outcome: Expected Outcome cell

Security-audit report — extract from ## Remediation Priority table AND individual ## Findings sections:

Each row yields:

  • priority: P0 / P1 from Priority column
  • title: Finding column
  • action: Action column
  • body: full finding detail from the matching ### V-XX section (Vulnerable Code, Attack Path, Risk Assessment, Recommended Fix)

Phase 3: Present Tasks for Selection

Display all extracted tasks before creating any issue:

Extracted tasks from <report file>:

  1. [P0] <title> (<file:line if present>)
  2. [P1] <title>
  3. [P1] <title>
  ...

Which tasks would you like to register as GitHub Issues?
Enter numbers (e.g. 1 3 5), a range (e.g. 1-3), "all", or "none":

Wait for the user's response before proceeding.


Phase 4: Duplicate Detection

Before creating issues, check for existing issues that may overlap with the selected tasks.

4.1 Fetch existing open issues:

gh issue list --state open --json number,title,labels --limit 200

4.2 For each selected task, check for duplicates:

Compare the task title/problem against existing issue titles using keyword overlap. Flag a potential duplicate when:

  • 3+ significant keywords match between the task and an existing issue title/body
  • The same file:line location is referenced
  • The same label combination exists (e.g., both P0 + security-audit)

4.3 Present duplicates to the user:

⚠ Potential duplicates detected:

  Task 2: [P1] No timeouts on external HTTP calls
    → May overlap with #34: "[P1] Add timeout to fetch calls in src/lib/http.ts"

  Task 5: [P0] SQL Injection in user search
    → May overlap with #12: "[P0] Parameterize DB queries in src/api/"

Create anyway? Enter task numbers to skip (e.g. 2 5), or "proceed" to create all:

Wait for the user's response. Remove confirmed duplicates from the creation list.


Phase 5: Ensure Labels Exist

Before creating issues, verify required labels exist. Required labels:

LabelColorWhen used
software-evaluation#0075caEvaluation reports
security-audit#e4e669Security-audit reports
P0#d93f0bPriority 0
P1#e99695Priority 1
P2#f9d0c4Priority 2
P3#fef2c0Priority 3
critical#b60205Critical severity findings
high#d93f0bHigh severity findings
medium#e4e669Medium severity findings
low#0e8a16Low severity findings

Check and create missing labels:

gh label list --json name | jq -r '.[].name'
gh label create "<label>" --color "<hex>" --description "<desc>"

Phase 6: Create Issues

For each selected task (after duplicate filtering), create the issue using the gh CLI --body flag with the formatted content:

gh issue create --title "<title>" --body "<body>" --label "<label1>" --label "<label2>"

Title format:

  • Evaluation: [<Priority>] <problem summary>
  • Security: [<Priority>] <finding title>

Body format — evaluation task:

## Problem
<problem>

## Solution
<solution>

## Expected Outcome
<expected_outcome>

---
*Source: <report file path>*

Body format — security finding:

## Finding
<full finding detail: Vulnerable Code, Attack Path, Risk Assessment>

## Recommended Fix
<recommended fix>

## Action
<action from Remediation Priority table>

---
*Source: <report file path>*

Labels per issue:

  • Always add report-type label: software-evaluation or security-audit
  • Always add priority label: P0, P1, P2, or P3
  • Security findings: also add severity label (critical, high, medium, low)

Check exit code after each gh issue create. If non-zero, report the error and continue with remaining tasks.


Phase 7: Summary

After all issues are created, output:

Registered N / M issues:
  #<number>  <title>  <URL>
  #<number>  <title>  <URL>
  ...

Skipped: <any that failed with reason>

Quality Gate

  • Report file exists and type is correctly detected
  • All extracted tasks shown to user before any issue is created
  • User selection confirmed
  • Duplicate detection run against existing open issues
  • Duplicate conflicts resolved by user before creation
  • Labels verified / created before issue creation
  • Each gh issue create exit code checked
  • Final summary lists all created issue URLs

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.