Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
git clone --depth 1 https://github.com/sigistry/marketplaceWrote 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/commands/sigistry/marketplace/generate-report)<a href="https://agentmods.dev/commands/sigistry/marketplace/generate-report"><img src="https://agentmods.dev/badge/commands/sigistry/marketplace/generate-report.svg" alt="Measured on agentmods" 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.00011 | $0.03821 |
| Opus 5 | $0.00005 | $0.01911 |
| Sonnet 5 | $0.00002 | $0.00764 |
| Haiku 4.5 | $0.00001 | $0.00382 |
Grade A, and why
generate-report 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 8d 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 — 560 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Review the current conversation history and generate a comprehensive HTML assessment report using the standardized template.
Instructions
-
Analyze the conversation for assessment results from any of these commands:
/architecture-assessment/generic-code-assessment/java-security-assessment
Extract the markdown content from these assessments to use as the report body.
-
Generate an HTML report using the exact template structure below:
- Use the standardized HTML template provided in step 3
- Replace placeholder values with actual data from the assessment:
{{ASSESSMENT_TYPE}}- Type of assessment (e.g., "Architecture Assessment", "Security Assessment", "Code Quality Assessment"){{TECH_STACK}}- Technology stack analyzed (e.g., "JavaScript", "Java", "Python"){{TARGET_DIR}}- Directory that was analyzed (e.g., ".", "/src", etc.){{TIMESTAMP}}- Current date/time in format: "M/D/YYYY h:mm:ss A"{{MODEL}}- Claude model used (e.g., "claude-sonnet-4-5-20250929"){{SESSION_ID}}- Generate a session ID in format: "YYYY-MM-DD-HHmmss-XXXX" where XXXX is random hex{{MARKDOWN_CONTENT}}- The full markdown assessment content from the conversation{{FILENAME}}- Filename for PDF export: "assessment-report-{{SESSION_ID}}.pdf"{{MD_FILENAME}}- Filename for markdown download: "assessment-report-{{SESSION_ID}}.md"
- Keep all CSS styling, JavaScript functions, and structure exactly as provided
- The markdown content should be inserted as-is (Claude Code will write it directly, no need for marked.js conversion)
-
HTML Template Structure:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Code Assessment Report - {{ASSESSMENT_TYPE}}</title>
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/html2pdf.bundle.min.js"></script>
<style>
/* Reset and Base Styles */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
:root {
--primary-color: #2c3e50;
--secondary-color: #3498db;
--text-dark: #2c3e50;
--text-light: #5a6c7d;
--bg-light: #f8f9fa;
--border-color: #dee2e6;
--success-color: #27ae60;
--warning-color: #f39c12;
--danger-color: #e74c3c;
}
body {
font-family: 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
line-height: 1.4;
color: var(--text-dark);
background: white;
margin: 0;
padding: 0;
font-size: 14px;
}
/* Document Container */
.document {
max-width: 1056px;
margin: 0 auto;
background: white;
box-shadow: 0 0 20px rgba(0,0,0,0.1);
min-height: 100vh;
}
/* Export Buttons */
.export-buttons {
position: fixed;
top: 20px;
right: 20px;
z-index: 1000;
display: flex;
gap: 10px;
}
.export-btn {
background: var(--secondary-color);
color: white;
border: none;
padding: 10px 20px;
border-radius: 5px;
cursor: pointer;
font-size: 14px;
transition: background 0.3s;
}
.export-btn:hover {
background: #2980b9;
}
/* Cover Page */
.cover-page {
background: white;
color: var(--text-dark);
text-align: center;
padding: 80px 60px;
padding-bottom: 0;
}
.cover-page h1 {
font-size: 2.5em;
font-weight: 400;
margin-bottom: 30px;
letter-spacing: -0.5px;
color: var(--primary-color);
border-bottom: 3px solid var(--secondary-color);
padding-bottom: 20px;
display: inline-block;
}
.cover-page .subtitle {
font-size: 1.3em;
color: var(--text-light);
margin-bottom: 60px;
font-weight: 300;
}
.cover-page .meta-info {
width: 100%;
color: var(--text-light);
}
.cover-page .meta-row {
margin: 20px 0;
font-size: 1em;
display: flex;
justify-content: space-between;
align-items: center;
border-bottom: 1px solid var(--border-color);
padding-bottom: 15px;
}
.cover-page .meta-row:last-child {
border-bottom: none;
margin-bottom: 0;
}
.cover-page .meta-label {
font-weight: 600;
color: var(--text-light);
text-transform: uppercase;
font-size: 1em;
letter-spacing: 0.5px;
}
.cover-page .meta-value {
font-weight: 400;
color: var(--text-dark);
text-align: right;
flex: 1;
margin-left: 20px;
}
/* Main Content */
.main-content {
padding: 60px;
line-height: 1.4;
}
.main-content h1 {
font-size: 1.75em;
color: var(--primary-color);
margin: 30px 0 15px 0;
padding-bottom: 8px;
border-bottom: 2px solid var(--secondary-color);
page-break-after: avoid;
font-weight: 400;
line-height: 1.2;
}
.main-content h1:first-child {
margin-top: 0;
}
.main-content h2 {
font-size: 1.375em;
color: var(--primary-color);
margin: 25px 0 12px 0;
padding-bottom: 6px;
border-bottom: 1px solid var(--border-color);
page-break-after: avoid;
font-weight: 500;
line-height: 1.2;
}
.main-content h3 {
font-size: 1.125em;
color: var(--text-dark);
margin: 20px 0 10px 0;
page-break-after: avoid;
font-weight: 600;
line-height: 1.2;
}
.main-content h4 {
font-size: 1em;
color: var(--text-dark);
margin: 15px 0 8px 0;
page-break-after: avoid;
font-weight: 600;
line-height: 1.2;
}
.main-content h5 {
font-size: 1em;
color: var(--text-light);
margin: 12px 0 6px 0;
page-break-after: avoid;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.5px;
line-height: 1.2;
}
.main-content h6 {
font-size: 1em;
color: var(--text-light);
margin: 10px 0 5px 0;
page-break-after: avoid;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.5px;
line-height: 1.2;
}
.main-content p {
margin: 8px 0;
text-align: left;
hyphens: auto;
font-size: 1em;
line-height: 1.4;
}
.main-content ul, .main-content ol {
margin: 10px 0;
padding-left: 24px;
}
.main-content li {
margin: 4px 0;
line-height: 1.3;
font-size: 1em;
}
.main-content li p {
margin: 4px 0;
}
.main-content code {
background: var(--bg-light);
padding: 2px 6px;
border-radius: 3px;
font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;
font-size: 1em;
color: var(--danger-color);
border: 1px solid var(--border-color);
}
.main-content pre {
background: var(--bg-light);
border: 1px solid var(--border-color);
border-radius: 4px;
padding: 16px;
overflow-x: auto;
margin: 12px 0;
page-break-inside: avoid;
box-shadow: 0 1px 3px rgba(0,0,0,0.1);
}
.main-content pre code {
background: none;
padding: 0;
color: var(--text-dark);
font-size: 0.9em;
line-height: 1.3;
border: none;
}
.main-content blockquote {
border-left: 3px solid var(--secondary-color);
padding: 12px 16px;
margin: 12px 0;
font-style: italic;
color: var(--text-light);
background: var(--bg-light);
border-radius: 0 4px 4px 0;
font-size: 1em;
line-height: 1.4;
}
.main-content table {
width: 100%;
border-collapse: collapse;
margin: 16px 0;
page-break-inside: avoid;
box-shadow: 0 1px 3px rgba(0,0,0,0.1);
border-radius: 4px;
overflow: hidden;
font-size: 1em;
}
.main-content th {
background: var(--primary-color);
color: white;
padding: 10px 12px;
text-align: left;
font-weight: 600;
font-size: 1em;
line-height: 1.3;
}
.main-content td {
padding: 8px 12px;
border: 1px solid var(--border-color);
vertical-align: top;
font-size: 1em;
line-height: 1.3;
}
.main-content tr:nth-child(even) {
background: var(--bg-light);
}
.main-content tr:hover {
background: #f1f3f5;
}
/* Footer */
.document-footer {
background: var(--bg-light);
padding: 30px 60px;
text-align: center;
color: var(--text-light);
border-top: 2px solid var(--border-color);
margin-top: 60px;
}
/* Print Styles */
@media print {
body {
background: white;
}
.document {
box-shadow: none;
max-width: 100%;
}
.cover-page {
page-break-after: always;
}
.main-content h1 {
page-break-before: auto;
page-break-after: avoid;
}
.main-content h2 {
page-break-before: auto;
page-break-after: avoid;
}
.main-content pre,
.main-content table,
.main-content blockquote {
page-break-inside: avoid;
}
.no-print, .export-buttons {
display: none !important;
}
a {
color: inherit;
text-decoration: none;
}
}
/* Screen-only styles */
@media screen {
body {
background: #e9ecef;
padding: 20px 0;
}
.document {
margin: 20px auto;
}
}
/* Responsive adjustments */
@media (max-width: 768px) {
.cover-page {
padding: 40px 30px;
}
.cover-page h1 {
font-size: 2em;
}
.main-content {
padding: 40px 30px;
}
.main-content h1 {
font-size: 1.6em;
}
.main-content h2 {
font-size: 1.4em;
}
.main-content pre {
padding: 20px;
margin: 20px 0;
}
}
@media (max-width: 480px) {
.cover-page {
padding: 30px 20px;
}
.main-content {
padding: 30px 20px;
}
.cover-page .meta-row {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}
.cover-page .meta-value {
text-align: left;
margin-left: 0;
}
.export-buttons {
position: relative;
top: 0;
right: 0;
margin: 20px;
justify-content: center;
}
}
</style>
</head>
<body>
<div class="document">
<!-- Export Buttons -->
<div class="export-buttons no-print">
<button class="export-btn" onclick="exportToPDF()">Export as PDF</button>
</div>
<!-- Cover Page -->
<div class="cover-page">
<h1>Code Assessment Report</h1>
<div class="subtitle">{{ASSESSMENT_TYPE}}</div>
<div class="meta-info">
<div class="meta-row">
<span class="meta-label">Technology Stack:</span>
<span class="meta-value">{{TECH_STACK}}</span>
</div>
<div class="meta-row">
<span class="meta-label">Target Directory:</span>
<span class="meta-value">{{TARGET_DIR}}</span>
</div>
<div class="meta-row">
<span class="meta-label">Generated at:</span>
<span class="meta-value">{{TIMESTAMP}}</span>
</div>
<div class="meta-row">
<span class="meta-label">Model:</span>
<span class="meta-value">{{MODEL}}</span>
</div>
</div>
</div>
<!-- Main Content -->
<div class="main-content" id="report-content">
<div id="summary-content">
{{MARKDOWN_CONTENT}}
</div>
</div>
<!-- Footer -->
<div class="document-footer">
<p>Generated with Code Auditor Assessment Tool</p>
<p>2025 - Confidential Document</p>
</div>
</div>
<script>
// Markdown content from the assessment
const markdownSummary = `{{MARKDOWN_CONTENT}}`;
// Render markdown to HTML
document.addEventListener('DOMContentLoaded', function() {
const summaryElement = document.getElementById('summary-content');
if (summaryElement && markdownSummary) {
summaryElement.innerHTML = marked.parse(markdownSummary);
}
});
// Export to PDF function
function exportToPDF() {
const element = document.querySelector('.document');
const options = {
margin: [0.5, 0.5],
filename: '{{FILENAME}}',
image: { type: 'jpeg', quality: 0.98 },
html2canvas: { scale: 2, useCORS: true, letterRendering: true },
jsPDF: { unit: 'in', format: 'letter', orientation: 'portrait' },
pagebreak: { mode: ['avoid-all', 'css', 'legacy'] }
};
html2pdf().from(element).set(options).save();
}
</script>
</body>
</html>
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.
- 8d ago First seen · 560 lines · 11 tokens per session scan A be890f3cf01c
generate-report is a command published in the GitHub repository sigistry/marketplace (3 stars, last pushed 4d ago), licensed MIT. It adds 11 tokens to every session and 3,821 once invoked, about $0.0001 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 commands, from other repositories
f5-import
Import documents - single, batch, analyze, or schema management.
f5-excel-to-csv
Convert Excel files to CSV for AI processing.
f5-import-batch
This command has been consolidated into /f5-import --batch.
draft
Draft an output document, pulling from the wiki. Trigger FR — rédiger un livrable, draft un document, produire un brief, générer une synthèse à partir du wiki.
show
Display a past OCR review session.
typescript-dev
Start TypeScript development workflow with architecture, implementation, review, and testing phases.