Awesome-omni-skill darpan-gemini
Use when coding or reviewing the Moqui-based Darpan component to follow local conventions, documentation practices, and verification steps; keep work inside runtime/component/darpan/** and apply both AGENTS files.
install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/development/darpan-gemini" ~/.claude/skills/diegosouzapw-awesome-omni-skill-darpan-gemini && rm -rf "$T"
manifest:
skills/development/darpan-gemini/SKILL.mdsource content
Darpan Gemini Skill
Use this skill whenever coding or reviewing the Darpan component so Gemini follows local conventions without re-reading the full repo. Frontmatter provides the trigger; the instructions below are what to follow.
Scope and priorities
- Keep changes within
; avoid framework/base components unless explicitly asked.runtime/component/darpan/** - Default to best-practice implementation and system design; confirm if the user says prior changes were just a test.
- Always cross-check both
files (repo root for personal prefs, component-level for technical guardrails).AGENTS.md
Execution checklist
- Before coding: re-read this file plus both
files; keep scope toAGENTS.md
.runtime/component/darpan/** - Documentation: when behavior or signatures change, update the closest doc under
with inputs/outputs, defaults, examples, JSONPath, and operational impacts.runtime/component/darpan/docs/** - Services/entities: keep service XML in sync with entities (in/out parameters typed, defaults described); avoid navigation/menu changes unless explicitly requested.
- Verification: lint/validate XML after edits; run targeted
when touching logic; use./gradlew test
+runtime/component/darpan/data/test/test-json-reconciliation.groovy
for reconciliation changes.runtime/schemas/json/ - Safety: confirm intent if the user said prior changes were only a test; avoid framework/runtime paths outside the component; keep secrets out of logs and commits.
Where to implement
- Business logic:
, exposed viaruntime/component/darpan/src/**
.runtime/component/darpan/service/*.xml - Entities:
; keep service and docs in sync with schema changes.runtime/component/darpan/entity/*.xml - Docs: update nearest feature doc under
with behavior changes, examples, and operational impacts.runtime/component/darpan/docs/**
Moqui + service patterns
- Define explicit
/in-parameters
with types/defaults/descriptions; preferout-parameters
/component://
paths.runtime:// - Keep XML thin (routing/validation); move heavy logic to Groovy or
. Use Groovy for loops, branching, Spark, or library calls.src/** - For uploads, accept
; persist underorg.apache.commons.fileupload.FileItem
with sanitized names.runtime://tmp/**
Reconciliation and Spark
- Keep Spark sessions alive (stop only in
for one-off scripts); avoidfinally
on large data, prefercollect()
/limit
or disk writes.select - Persist/unpersist DataFrames explicitly; keep
/sparkMaster
configurable.sparkAppName - Standardize IDs as
(string, non-null, trimmed); use anti-joins for diffs and stream outputs (CSV viacompare_id
+ rename, JSON viacoalesce(1)
writers).toLocalIterator() - Name outputs with
, sanitizeyyyyMMdd-HHmmss
, suffix on collision; return both[A-Za-z0-9._-]
anddiffLocation
.diffFileName - Resolve locations via
; create paths withec.resource.getLocationReference(...)
/makeDirectory
; prefer runtime paths.makeFile
JSON schema handling
- Store schemas in
; reference by filename and document JSONPath inruntime/schemas/json/*.schema.json
.runtime/component/darpan/docs/** - Prefer library-backed validation (Jackson + json-schema-validator); avoid bespoke implementations.
- Resolve simple keys to JSONPath via
; default toJsonSchemaServices.resolve#JsonPathForKey
only with$.id
.processingWarnings
UI and pagination
- Use Moqui built-in pagination widgets/styles; avoid custom HTML pagination.
- If multiple paginated lists exist, isolate pagination per list (standalone list screens in dynamic containers).
- For UI tweaks, limit scope to page display; avoid navigation/menu changes unless asked.
Logging, errors, safety
- Log with context (service name, file labels, counts) without secrets; mask credentials and connection strings.
- Validate inputs early (
with clear messages); normalize strings (IllegalArgumentException
) and booleans via?.toString()?.trim()
.normalizeBool - Treat config and
as sensitive; do not commit secrets.mcp.json
Java 17 compatibility
- Preserve Spark/Java flags (
) in Docker entrypoints and docs.--add-exports=java.base/sun.nio.ch=ALL-UNNAMED
Testing and verification
- Tests are opt-in; run
or targeted tasks when touching logic../gradlew test - After XML edits (entities/services/screens), run an XML verification step/lint and fix errors immediately.
- Use
andruntime/component/darpan/data/test/test-json-reconciliation.groovy
for quick validation when changing reconciliation paths.runtime/schemas/json/