generate-reports — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited generate-reports (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
The three PDF reports are the deliverables a human reviews before approving the year. They are deterministic Python scripts — no LLM in the loop — built on top of reportlab.
In regnskab{YYYY}/output/:
Bilag, with per-bilag and grand totals (debet must equal kredit).input/ linked to journal lines.scripts/ is installed (uv pip install -e . from the scripts folder).{YYYY} {Company}-vN.xlsx exists in regnskab{YYYY}/.regnskab{YYYY}/input/ contains the source documents (the bilagsoversigt scans this folder).cd scripts
python run_reports.py {YYYY}This:
regnskab{YYYY}/ledger.db.regnskab{YYYY}/output/.For a partial period:
python run_reports.py {YYYY} --from {YYYY}-01-01 --to {YYYY}-06-30For a different root folder:
HOLDING_ROOT=/path/to/data python run_reports.py {YYYY}
# or:
python run_reports.py {YYYY} --root /path/to/data-v3 → -v4).input/ (the bilagsoversigt scan picks them up).Type column (AKTIV, PASSIV, EGENKAPITAL, RESULTAT). The import script reads Type from the Saldobalance sheet.6480-MAINBANK-FOLIO). The aggregate parent (e.g. 6480) is not collapsed in this report — that is intentional.Σdebet − Σkredit = 0 is the test.Bilag-fil column (preferred), fallback to filename stem == Bilag.After running, present the user with:
computer:// links to the PDFs in regnskab{YYYY}/output/.Recon {Bank} sheets.HARD STOP. Do not proceed to statutory annual report or ERP push until the user explicitly approves.
Title, colour, font are in scripts/_pdf.py. The company name in the title comes from settings/business.md (first H1) or the COMPANY_NAME environment variable. To change:
_pdf.py constants (INK, MUTED, H1, H2).Paragraph(...) call near the top of each report_*.py.landscape_orientation on doc(...).~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.