Skip to content
Back to skills

Reporting

ASecurity

**Purpose**: turn raw engagement output (`reports/*.md`, evidence chains, case dirs) into machine-readable findings and an interactive dashboard — the ReverseOps panel (`panel/`).

  • 4 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 6, 2026
ai-agentspythontestinggit

Works with

  • terminal
  • cli

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned September 6, 2026

npx -y skills add xAmirHamza77/ReverseOps-Skill --skill reporting --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Reporting?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Reporting
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/xamirhamza77-reporting/badge)](https://www.skillsdirectory.com/skills/xamirhamza77-reporting)

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

Download with Pro
SKILL.md
# reporting — findings schema, panel export, report automation

**Purpose**: turn raw engagement output (`reports/*.md`, evidence chains, case dirs) into
machine-readable findings and an interactive dashboard — the ReverseOps panel (`panel/`).

## When this skill fires

- "write up the findings", "generate the report", "make a dashboard", "pentest report"
- After any ACT phase completes (Evidence → Finding → Path lands, then this skill renders it)
- When the user opens `panel/index.html` and it shows stale / no data

## Contract

1. **Every finding is data first.** Either:
   - a JSON file conforming to `skills/reporting/finding-schema.json`
     (`work/<case>/findings/HIG-001.json`, one file per finding), or
   - a `## Finding N: title` (or `## vulnerability N:标题`) section inside a markdown report with an
     inline `Severity:` / `risk等级:` line — the exporter parses these heuristically.
2. **Severity vocabulary is fixed**: `critical | high | medium | low | info`
   (Chinese reports' critical / high risk / medium risk / low risk / info map onto these automatically).
3. **IDs are stable**: `<SEV3>-<NNN>` (`HIG-001`). Never renumber a finding that a client has seen.

## Workflow

```text
evidence chain (skills/ops/evidence-finding-path.md)
  → write finding JSON (work/<case>/findings/*.json)        # preferred
    OR structured section in reports/<date>_<case>.md
  → python3 scripts/mkreport.py                             # repo-local defaults
  → python3 panel/serve.py  → http://127.0.0.1:8377          # dashboard + terminal
```

- `mkreport.py` outputs `panel/data/data.js` + `panel/data/data.json`.
  Both are **gitignored** — regeneration is a local step, never commit client data.
- Extra sources: `--findings-dir <dir>`, `--include <file>`, `--cases-root work`.
- Panel from `file://`? It falls back to bundled `panel/data/sample.data.js` when
  `data.js` is missing, tagged `DEMO` in the header. Terminal + report-body view need `serve.py`.

## ACTION REQUIRED

1. Confirm each finding has ≥1 evidence ref (`evidence[]`) before setting
   `status: confirmed` — mirrors `skills/ops/scope-contract.md` (no evidence, no finding).
2. Run `python3 scripts/mkreport.py` and read the warning list; fix unparsed sections.
3. Open the panel, verify severity counts match the markdown report by hand once.
4. Redact before sharing: `grep -Ri 'token\|password\|secret' panel/data/` then delete the export.

## Files

| File | Role |
|------|------|
| `finding-schema.json` | JSON-Schema for a finding |
| `templates/finding.json` | Copy-paste starting point |
| `templates/report.md` | Markdown report skeleton the parser fully understands |
| `../../scripts/mkreport.py` | exporter (stdlib only, py3.8+) |
| `../../panel/` | the dashboard (UI + local server + terminal bridge) |

## Common pitfalls

- Missing `Severity:`/`risk等级` line → finding lands as `info`. Always write it inline.
- In Chinese reports, findings need the `## vulnerability N:` heading form to split sections
  (`## Finding N:` in English reports).
- Timeline chart needs ISO dates — put `Testing日期:`/`Date: YYYY-MM-DD` near the report top.

Files in this skill

  • SKILL.md3.1 KB
  • finding-schema.json2.8 KB
  • templates/finding.json990 B
  • templates/report.md835 B

Attribution

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

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.