Skip to content
Robert Gorsuch edited this page Aug 7, 2026 · 3 revisions

AI-JasperReports-Generator

BI pipeline automation for JasperReports Server, driven by Claude Code. A working reference that pairs a statewide Texas PostGIS geocoder with a JasperReports 7 report suite and a full server-automation toolkit — the jasper-deploy Claude Code plugin (49 scripts, 29 references, 4 slash commands) plus a self-service web wizard.

Built by the Actian SE team. Licensed Apache 2.0.

Quick links: Latest release · CHANGELOG · CI status · Security policy

Start here (pick your path)

I want to demo or evaluate Jaspersoft automation

I want to run the project locally

I want to contribute

Install the plugin (60 seconds)

In any Claude Code session:

/plugin marketplace add robertgorsuch/AI-JasperReports-Generator
/plugin install jasper-deploy@jaspersoft-tools
/reload-plugins

Then run /jasper-deploy:doctor — it preflight-checks the whole toolchain and tells you exactly what is missing.

Slash commands (since v1.1.0):

Command What it does
/jasper-deploy:doctor Preflight the toolchain and server connectivity — run this first on a new machine
/jasper-deploy:deploy Scaffold/compile/deploy a report from SQL or a .jrxml, then verify it renders
/jasper-deploy:promote Promote a resource between environments (STAGE → PROD) with a target backup first
/jasper-deploy:smoke Run the full 24-step lifecycle regression test

The skill also activates on natural language — "scaffold a report from this query", "deploy this jrxml", "plan an upgrade from JRS 7.9 to 10.1".

Prerequisites (doctor checks all of these): PowerShell 5.1 or pwsh 7+ (Windows/macOS/Linux), JDK 11+, psql 14, curl 8.x, Python 3 with sqlglot + pypdfium2, a local JasperReports 7.0.6 jar directory, and a JasperReports Server 10.x Pro REST v2 endpoint.

What's in the box

Piece What it is
Texas geocoder PostgreSQL 14 + PostGIS 3.4, all 254 counties via TIGER — 5.7M edges, 5M feature names, 2.7M address ranges
Report suite JasperReports 7 templates: a 317-page density report, charts, crosstabs, drill-downs, dashboards
jasper-deploy plugin 49 PowerShell/Python scripts automating the whole JRS lifecycle over REST v2: scaffold jrxml from SQL, lint, compile, deploy, dashboards, Domains, OLAP, themes, scheduling, permissions, STAGE→PROD promotion — plus the four slash commands above
Reference library Doc-derived, page-cited references covering JRS 4.7 through 10.1: version deltas, platform cliffs, vendor EOL dates, and a cross-version upgrade/migration playbook
Web wizard Jakarta servlet WAR putting the skill behind a browser UI for business users (internal, trusted-user tool — see the Security policy)

How the pieces fit

flowchart LR
    PG[(PostgreSQL + PostGIS)] --> SK[jasper-deploy skill<br/>49 scripts]
    SK -->|REST v2| JRS[JasperReports Server 10]
    WW[Web wizard WAR] -->|bundles the scripts| JRS
    CC[Claude Code] -->|drives| SK
    SK --> REF[References 4.7-10.1<br/>playbook, gotchas, version matrix]
Loading

The core pipeline: SQL query → scaffold_jrxml.py → JR7 .jrxml → lint (automatic) → compile → deploy_report.ps1 → verify (run to PDF, content asserts, visual baseline diff). Everything is JasperReports 7.0.6-native — the jrxml schema is not 6.x compatible, and the built-in linter exists precisely to catch 6.x-isms before the server rejects them at fill time.

Configuration

Credentials resolve in priority order: script parameters → JRS_URL/JRS_USER/JRS_PASS environment variables → a gitignored jrs.config.json in the skill root (copy jrs.config.example.json). Extras:

  • passwordCommand — shell out to a secret manager instead of storing a password
  • environments — named profiles used by promote.ps1 -FromEnv stage -ToEnv prod
  • jrLibDir — path to the JR 7.0.6 runtime jars

No credentials are stored in the repository; CI runs a full-history gitleaks scan on every push.

Cross-platform

The scripts run unchanged on Windows PowerShell 5.1 and under pwsh 7 on Windows, macOS, and Linux — tool selection goes through helpers (Get-JrsCurl, Get-JrsPython, Get-JrsNull), paths use / separators, and curl JSON bodies come from files. The ubuntu CI leg keeps the claim honest on every push.

Quality gates

  • smoke_test.ps1 — 24-step end-to-end lifecycle against a throwaway /reports/_smoke folder, asserting every step
  • check_docs.ps1 — doc/link consistency guard (every capability-map script exists, every link resolves)
  • Pester unit tests — offline tests for the linter and shared helpers
  • CI — the offline checks run on windows-latest + ubuntu-latest on every push/PR; gitleaks scans full history; branch protection requires all three checks before merge
  • Releases — semver-tagged with a clean plugin payload zip attached

FAQ

Do I need the demo database to use the plugin? No — the geocoder/census stack is the reference environment. The skill works against any PostgreSQL database and JRS 10.x server; /jasper-deploy:doctor validates yours.

Does it work with JRS 9.x or Community Edition? The scripts target JRS 10.x Pro over REST v2 and are verified there. Much of the REST surface exists in 9.x, and the reference library covers 4.7 → 10.1 for planning — but only 10.x Pro is exercised end to end.

Where do I report a security issue? Privately, via GitHub security advisories — never a public issue.

Is this affiliated with Cloud Software Group? No. Jaspersoft®, JasperReports®, and related marks are trademarks of Cloud Software Group, Inc.; this is an independent demo/reference project.


This wiki summarizes; the repository is canonical. Every fact here is maintained in a tracked file — follow the links.