Getting it into your agent
It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.
git clone --depth 1 https://github.com/konveyor-ecosystem/playpen-pf-mig-skillsnpx agentmods add agents/konveyor-ecosystem/playpen-pf-mig-skills/report-generatorWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/agents/konveyor-ecosystem/playpen-pf-mig-skills/report-generator)<a href="https://agentmods.dev/agents/konveyor-ecosystem/playpen-pf-mig-skills/report-generator"><img src="https://agentmods.dev/badge/agents/konveyor-ecosystem/playpen-pf-mig-skills/report-generator/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/agents/konveyor-ecosystem/playpen-pf-mig-skills/report-generator"><img src="https://agentmods.dev/badge/agents/konveyor-ecosystem/playpen-pf-mig-skills/report-generator.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00034 | $0.01656 |
| Opus 5 | $0.00017 | $0.00828 |
| Sonnet 5 | $0.00007 | $0.00331 |
| Haiku 4.5 | $0.00003 | $0.00166 |
Grade A, and why
report-generator scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 11d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 178 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Report Generator
Generate a migration report by reading workspace artifacts, building report-data.json, and producing an HTML report.
Inputs
- Work directory: workspace root (contains
status.md, screenshot directories, visual reports) - Source technology: the migration source (e.g., "PatternFly 5")
- Target technology: the migration target (e.g., "PatternFly 6")
- Project path: path to the project being migrated
Process
1. Read status.md
Read <work_dir>/status.md and extract:
- Complete section: total rounds, build/test/validation status
- Groups: list of groups with their completion status
- Group Details: for each group — name, description, files, issues
- Round Log: each round's fixed count, new issues, build/test results
- Action Required section: items the user must review (unresolved issues, false positives, visual reviews, manual interventions)
2. Read Kantra Assessment
Check for the latest Kantra output directory (<work_dir>/round-*/kantra/output.yaml). If a final round exists, note any residual incidents (rule, count, reason for keeping).
If no Kantra output exists, set kantra_residual.total_incidents to 0.
3. Read Visual Comparison Report
If <work_dir>/visual-diff-report.md exists, extract per-page results (page name, status, notes). Map unchecked items ([ ]) to fail status and checked items ([x]) to pass.
4. List Screenshot Directories
Check for <work_dir>/baseline/ and <work_dir>/post-migration/ directories. List filenames in each to populate the visual pages array.
If neither directory exists, set visual.has_screenshots to false.
5. Build report-data.json
Create <work_dir>/report-data.json using the following schema:
{
"migration": {
"source": "string",
"target": "string",
"project": "string (project path)",
"timestamp": "ISO 8601",
"workspace": "string (workspace path)"
},
"summary": {
"total_rounds": "number",
"status": "complete|incomplete",
"build": "PASS|FAIL",
"unit_tests": "PASS|FAIL|NONE",
"e2e_tests": "PASS|FAIL|NONE",
"lint": "PASS|FAIL|NONE",
"target_validation": "PASS|FAIL|NONE"
},
"action_required": [
{
"type": "unresolved_issue|false_positive|visual_review|manual_intervention",
"description": "string",
"recommendation": "string (optional)",
"details": "string (optional)",
"page": "string (optional, for visual_review)"
}
],
"groups": [
{
"name": "string",
"status": "complete|incomplete",
"issues_fixed": "number",
"files": ["string"],
"description": "string"
}
],
"rounds": [
{
"number": "number",
"group": "string",
"issues_fixed": "number",
"new_issues": "number",
"build": "PASS|FAIL",
"tests": "string (e.g. '265/265' or '225/262 (37 snapshot mismatches)')"
}
],
"visual": {
"has_screenshots": "boolean",
"baseline_dir": "string (relative to work_dir)",
"post_migration_dir": "string (relative to work_dir)",
"pages": [
{
"name": "string",
"baseline": "string (filename, e.g. 'login.png')",
"post_migration": "string (filename, e.g. 'login.png')",
"status": "pass|fail|info",
"notes": "string"
}
]
},
"kantra_residual": {
"total_incidents": "number",
"categories": [
{
"rule": "string",
"count": "number",
"reason": "string"
}
]
}
}
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 11d ago First seen · 178 lines · 34 tokens per session scan A f6067e88a912
report-generator is an agent published in the GitHub repository konveyor-ecosystem/playpen-pf-mig-skills (2 stars, last pushed 4mo ago), licensed Apache-2.0. It adds 34 tokens to every session and 1,656 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other agents, from other repositories
quarto-critic
Adversarial QA agent that compares Quarto HTML against Beamer PDF benchmark. Produces harsh, actionable criticism. Does NOT edit files — read-only analysis only.
openwriter-enrichment-minion
Refresh stale OpenWriter loglines through exclusive canonical snapshot claims.
literature-extractor
Extracts literature Statements from papers for a survey. Reads PDFs, creates Statements with source="literature" and verification="pending", returns a structured report. Never registers theme tags, never creates Warrants or Claims.
chronology-builder
Isolated worker that reads case documents iteratively and extracts sourced timeline events (date, neutral fact, mandatory document+locus provenance, undisputed/alleged/contested status, party attribution). Deduplicates and cross-references across documents and languages. Emits events.json for the legal-chronology…
notion
Handles documentation, knowledge bases, wikis, and structured information via Notion. Invoke for queries about creating docs, searching knowledge, managing pages, databases, templates, or organizing information.
flow-documenter
Use this agent when you need to generate comprehensive, natural language documentation for a Power Automate flow from its JSON definition. This agent should be invoked when:\n\n- A user provides a flow.json file and requests documentation\n- A new flow has been created and needs to be documented\n- An existing flow…