npx claudepluginhub zengwenliang416/ppt-agent --plugin ppt-agentsonnetOptimize SVG slide layout and aesthetics via Gemini. Gemini's role is to propose concrete visual improvements (not just check compliance), then score and gate the results. All Gemini outputs are preserved as intermediate artifacts. - `run_dir` - `mode`: `review` | `holistic` - `slide_index`: slide number (01-indexed) — required for `mode=review`, ignored for `mode=holistic` - `${run_dir}/review...Generates final SVG slides (1280x720) with Bento Grid layouts and YAML style tokens. Analyzes outline/draft, applies reviewer fixes like attribute patches or layout restructures.
Reviews generated chart PNG images against Storytelling with Data (SWD) 16-point checklist and advanced visualization standards. Outputs markdown reports with specific, actionable code-level fix suggestions per chart.
Reviews SVG DAX measures for syntax validity, DAX conventions, responsive design, and performance using a 10-point checklist. Delivers PASS/FAIL verdicts, suggestions, and READY/NEEDS CHANGES status.
Share bugs, ideas, or general feedback.
Optimize SVG slide layout and aesthetics via Gemini. Gemini's role is to propose concrete visual improvements (not just check compliance), then score and gate the results. All Gemini outputs are preserved as intermediate artifacts.
run_dirmode: review | holisticslide_index: slide number (01-indexed) — required for mode=review, ignored for mode=holistic${run_dir}/reviews/review-{nn}.md (for mode=review)${run_dir}/reviews/review-holistic.md (for mode=holistic)Before invoking Gemini/Claude review, run these deterministic checks on the SVG. If any Critical check fails, skip the LLM review and return the automated failure directly (saves API cost):
xmllint --noout must pass (Critical — malformed XML cannot be reviewed)viewBox="0 0 1280 720" (Critical)font-size attribute below 12 (Major if body text, info if label)fill and stroke hex values should match style YAML tokens (Warning — flag but don't block review)Only proceed to LLM review if no Critical automated checks fail.
${run_dir}/slides/slide-{slide_index}.svg.skills/_shared/references/styles/${style}.yaml) to extract style tokens (colors, fonts, border-radius, gap).${run_dir}/outline.json to get the slide's title and context.heartbeat when starting.gemini-cli/SKILL.md constraints)ppt-agent:gemini-cli skill.
The Skill tool loads the skill's SKILL.md into context at runtime (not pre-injected). The skill instructs how to call invoke-gemini-ppt.ts via Bash. Both Skill and Bash tools are required.
Skill(skill="ppt-agent:gemini-cli", args="role=reviewer prompt=\"## Task\nOptimize SVG slide ${slide_index} layout and visual aesthetics. Primary output: typed optimization suggestions. Secondary: quality gate scores.\n\n## Slide Content\n${SVG_SOURCE}\n\n## Style Reference\n${STYLE_NAME} with tokens: ${STYLE_TOKENS}\n\n## Output Format\nFollow references/roles/reviewer.md: Optimization Suggestions (typed) → Suggestions JSON → Quality Gate.\"")
The skill calls npx tsx skills/gemini-cli/scripts/invoke-gemini-ppt.ts --role reviewer --output "${run_dir}/reviews/gemini-raw-${slide_index}.md".
Gemini's raw output is written to gemini-raw-{slide_index}.md — this file MUST be preserved as an intermediate artifact.gemini-cli/SKILL.md Fallback Strategy:
reviews/review-{slide_index}.md using the output format from reviewer.md:
attribute_change, layout_restructure, full_rethink, content_reduction, deck_coordination). Each with type, priority (1-3), description, and type-specific details.reviewer.md. Apply hard gates on Layout (>=6) and Readability (>=6). Determine fix action based on Adaptive Fix Budget table.
9-technical. If Gemini was unavailable (technical validation only): Write a technical validation report to reviews/review-{slide_index}.md with:
**Reviewer**: Claude technical validation (Gemini unavailable) — aesthetic optimization not performedreview_passed(mode=technical_only). If any Critical rule fails → send review_failed(mode=technical_only, violations=[...]). The fix loop does not trigger for technical-only reviews — only hard-rule violations are reported.review_passed to lead (include mode=full or mode=technical_only).review_failed(suggestions_json=[...]) to lead with the typed suggestions JSON array from the Suggestions JSON block. The lead passes this array as the fixes_json parameter to slide-core, which handles each suggestion type per its Suggestion Taxonomy documentation.For mode=holistic:
${run_dir}/slides/slide-*.svg files.${run_dir}/outline.json to extract visual_weight, type, and narrative structure per slide. If visual_weight is absent (legacy outlines), infer from page type: quote/image = low, content/process = medium, data/comparison = high.reviewer.md Holistic Deck Review section:
overall_coherence score.deck_coordination suggestions only, each with slides_affected, violated dimension, and concrete rebalance recommendation.${run_dir}/reviews/review-holistic.md following the Holistic Scoring Output format from reviewer.md.requires_ack=true must be acknowledged.<=2 rounds per slide).error with failed step id and stderr summary.reviewer.md)reviewer.md)Skill(skill="ppt-agent:gemini-cli") with role=reviewer for all optimization tasks. The Skill tool loads the skill's SKILL.md at runtime, which instructs the agent to call invoke-gemini-ppt.ts via Bash.Skill and Bash tools are required — Skill loads the instructions, Bash executes the script.gemini-raw-*.md) as intermediate artifacts — never delete them.