From apache-cayenne
Regenerates Apache Cayenne Java entity classes from a DataMap schema. Responds to stale entities, missing fields, and modeling changes.
How this skill is triggered — by the user, by Claude, or both
Slash command
/apache-cayenne:cayenne-cgenThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
<!--
Run Cayenne's class generator on a DataMap via the mcp__cayenne__cgen_run MCP tool. The tool reads the embedded <cgen> block in the DataMap to determine destination, mode, templates, etc.; if no block is present the tool generates anyway using a sensible default config (all entities, makePairs=true, destination derived from the Maven layout). A missing <cgen> block is not an error and must never stop you from running the tool.
${CLAUDE_PLUGIN_ROOT}/references/mcp-tools.md — cgen_run tool reference (arguments, return shape, failure modes).${CLAUDE_PLUGIN_ROOT}/references/cgen-config.md — every <cgen> field; needed when the user has to add or tweak the config block.${CLAUDE_PLUGIN_ROOT}/references/project-layout.md — locate the project descriptor.The MCP tool needs two arguments:
projectPath — absolute path to the top-level project descriptor (cayenne-*.xml). Not a DataMap file.dataMap — the name as it appears in <map name="..."> in the descriptor. Not a file path.Locate the descriptor via project-layout.md. If multiple descriptors exist, ask which one. Open the descriptor to extract the DataMap names from <map> elements.
If the user named the DataMap directly (e.g. "regenerate classes for the customers DataMap"), use that. If they said "regenerate everything" and there are multiple DataMaps, run cgen_run once per DataMap in sequence (the tool generates per-DataMap).
cgen_runmcp__cayenne__cgen_run({
"projectPath": "<absolute path to cayenne-*.xml>",
"dataMap": "<map name from the descriptor>"
})
Call the tool directly for each DataMap — never inspect the DataMap for a <cgen> block first, and never treat its absence as a blocker. The tool generates with a default config when no block exists.
If the tool is not available (MCP server not registered), surface cayenne-mcp-server/README.md and stop. Do not suggest mvn cayenne:cgen or the Gradle cgen task.
The tool returns structured JSON. Report:
summary.writtenCount, summary.skippedCount, summary.errorCount verbatim — these are the headline.writtenFiles (relative paths). Full list is informational; offer to dump it if the user asks.errors — these are blocking. Read the messages and explain in user terms (a missing entity class name, a bad template path, an invalid <destDir>, etc.).resolvedConfig.destDir — the absolute output directory. If the DataMap had no <cgen> block, the tool generated from a synthesized default; report this destination so the user can confirm it's right, and offer to persist a <cgen> block (via cayenne-modeling) if they want to customize destination, templates, or entity filtering.If writtenCount is 0 and skippedCount covers everything, say so — it means everything is already up-to-date and no work was needed.
_<Entity>.java superclass files were generated, gently remind the user not to edit those — they will be overwritten next run. User code goes in the matching <Entity>.java subclass.cayenne-modeling if they need to tweak names/types before regenerating.<cgen> block before calling cgen_run, and do not add a block before running. A missing block is not an error — the tool generates with defaults. Only add a <cgen> block afterward if the user wants to persist or customize the config.mvn cayenne:cgen) or Gradle (cayenneCgen) goals when MCP is unavailable. Those build plugins are out of scope. Point at MCP setup instead._<Entity>.java files. Generated superclasses. Edit <Entity>.java subclasses.projectPath and dataMap arguments. projectPath is a file system path to cayenne-*.xml. dataMap is a logical name (e.g. mydb), not a path to mydb.map.xml.npx claudepluginhub apache/cayenne --plugin apache-cayenneOrchestrates three Cayenne skills (db-import, model-naming, cgen) to sync the entire project — mapping, names, and Java classes — with the database in one pass.
Generates TypeORM entity definitions and configurations with step-by-step guidance and production-ready code.
Generates Spring Boot + ScalarDB Java entity, repository, domain service, and configuration code from design specifications. Invoked via /architect:generate-scalardb-code.