From branding
Coordinates multi-format output generation. Triggered when the user requests output in multiple formats simultaneously (e.g., "create a PDF and an Excel and a dashboard"), or when the user asks to "generate reports in multiple formats", "create all outputs", "multi-format export", or requests more than one output type in a single message.
npx claudepluginhub equiforte/reporting-services-plugins --plugin brandingThis skill uses the workspace's default tool permissions.
When a user requests output in multiple formats, follow this fixed sequence. Do not skip steps. Do not reorder.
Guides Next.js Cache Components and Partial Prerendering (PPR): 'use cache' directives, cacheLife(), cacheTag(), revalidateTag() for caching, invalidation, static/dynamic optimization. Auto-activates on cacheComponents: true.
Creates, reads, edits, and analyzes .docx files using docx-js for new documents, pandoc for text extraction, Python scripts for XML unpacking/validation/changes, and LibreOffice for conversions.
Share bugs, ideas, or general feedback.
When a user requests output in multiple formats, follow this fixed sequence. Do not skip steps. Do not reorder.
1. RESOLVE BRAND — trigger brand skill → write .reporting-resolved/
2. DATA-FIRST — generate structured JSON as canonical data source
3. GENERATE — invoke each generator skill sequentially
4. VALIDATE — each generator validates its own output
5. SELF-CORRECT — in strict mode, fix failures (one retry max)
6. SUMMARIZE — list all produced files with paths and status
Trigger the brand skill first. This writes .reporting-resolved/ with the fully resolved brand config, assets, and office scripts.
If brand resolution fails (e.g., invalid JSON in .reporting/brand-config.json):
When multiple formats are requested from the same data AND json-generator is available (the text-generation plugin is installed):
json-generator to produce a canonical JSON file.output/text/{slug}-{date}-{HHmm}-{xxx}.json.Why: This ensures 100% data parity across formats. The PDF, XLSX, and dashboard all render the same numbers because they all read from the same JSON.
Fallback when json-generator is not installed: Skip this step. Generators use data from the conversation context directly. When generating multiple outputs within the same plugin (e.g., XLSX + CSV), the primary format is generated first and secondary formats are derived from the same in-memory data.
Invoke each requested generator skill sequentially, in the order the user mentioned them. Each generator:
.reporting-resolved/brand-config.json.output/{format}/.Each generator handles its own validation based on the mode setting in brand-config.json:
best_effort (default)strict{name}.validation.json sidecar alongside each artifact.{
"artifact": "filename.ext",
"mode": "strict",
"checks": [
{ "check": "check_name", "status": "pass" | "fail", "detail": "description" }
],
"overall": "pass" | "fail"
}
After each generator produces output in strict mode:
validation.json sidecar.overall is "fail", attempt to fix the specific failures.This is limited to one retry per artifact to prevent infinite correction loops.
After all generators have run (or failed), present a summary:
Summary: N/M outputs generated.
✓ output/text/q1-data-2026-04-04-1430-c3a.json
✓ output/pdf/q1-executive-summary-2026-04-04-1430-a8f.pdf
✓ output/xlsx/q1-financial-model-2026-04-04-1430-b2c.xlsx
✗ output/pptx/q1-board-deck-2026-04-04-1430-d4e.pptx — PptxGenJS error: ...
✓ output/app/q1-dashboard/dist/
All outputs branded consistently, all sourced from the same data.
Include:
| Failure type | Behavior |
|---|---|
| Brand resolution fails | STOP entirely. No generators run. Report error, offer to fix. |
| Generator fails | Log error, continue with remaining generators. Report partial success. |
| Validation fails (strict, first attempt) | Attempt self-correction — one retry. |
| Validation fails (strict, second attempt) | Report to user with sidecar details. Continue with remaining generators. |
| Missing dependency (best_effort) | Warn and skip that generator. Continue with others. |
| Missing dependency (strict) | Hard-fail that generator. Continue with others. |
For single-format requests (e.g., "create a PDF"), the orchestration is simpler:
The data-first step is skipped for single-format requests (no cross-format parity needed).