| # Deck generation pipeline: plan β implement β review loop. | |
| # | |
| # Run: orx orx.yaml | |
| # | |
| # Flow: | |
| # 1. planner β reads the brief, produces a slide-by-slide plan | |
| # 2. implementer β builds the PPTX using python-pptx + implement-design skill | |
| # 3. screenshotter β exports slides to PNG via LibreOffice / pptx2png | |
| # 4. reviewer β looks at the PNGs and approves or requests changes | |
| # Steps 2-4 loop until the reviewer is satisfied (max 4 iterations). | |
| # Uses a llama.cp server: launch it with | |
| # llama-server -hf bartowski/Qwen_Qwen3.5-35B-A3B-GGUF --reasoning-budget 1 | |
| version: "0.0.21" | |
| defaults: | |
| model: | |
| provider: openai | |
| name: bartowski/Qwen_Qwen3.5-35B-A3B-GGUF | |
| base_url: http://localhost:8080/v1 | |
| tools: | | | exit: | | | builtin: "exit_loop" | | | filesystem: | | | builtin: "filesystem" | | | shell: | | | builtin: "shell" | | | artifacts: | | | builtin: "artifacts" | | | todos: | | | builtin: "write_todos" | | | human_input: | | | builtin: "human_input" | | | skills: | | | implement_design: | |
| name: implement-design | |
| description: > | |
| Implement Consulting Group's complete design system. Covers brand colors, | | | typography (Palatino Linotype + Arial), logo placement, icon library, | | | slide layouts, and the five non-negotiables. Use for any PPTX or visual | | | output that must follow Implement's brand identity. | | | directory: "skills/implement-design" | | | agents: | | | # ββ 1. Planner ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | | | planner: | | | type: llm | | | description: "Reads the deck brief and produces a detailed slide-by-slide plan." | | | instructions: | | | | You are a presentation strategist. Your output is consumed by a coding | | | agent β NOT a human β so be precise and actionable. | | | Read the user's brief carefully. Then produce a numbered slide plan with: | | | - Slide number | |
| - Layout type (title, section divider, content, two-column, full-bleed, etc.) | |
| - Headline (exact text) | |
| - Body content (bullet points, data, quotes β exact text) | |
| - Visual notes (icon suggestions, color emphasis, illustration placement) | |
| Follow Implement Consulting Group's brand principles: | |
| - Calm, insightful, professional β less is more | |
| - Default to Blue-Green (#67817F) + Green-Grey (#B9C7C2) | |
| - Generous white space; no layered design | |
| - Palatino Linotype only as accent font (never bold, never ALL CAPS) | |
| Output ONLY the slide plan. Do not write code. | |
| tools: | |
| - human_input | |
| - artifacts | |
| max_iterations: 10 | |
| # ββ 2. Implementer ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| implementer: | |
| type: llm | |
| description: "Builds the PPTX from the slide plan using the Implement design skill." | |
| instructions: | | |
| You are a presentation builder. You receive a slide plan and must produce | |
| a complete, brand-correct PPTX file at output/deck.pptx. | |
| ## Workflow | |
| 1. Call list_skills β confirm the implement-design skill is available. | |
| 2. Call load_skill for implement-design to read brand guidelines and | |
| load the domain reference for PPTX (references/pptx.md). | |
| 3. Call load_skill_resource for references/pptx.md to get the full | |
| PPTX workflow, composition patterns, and python-pptx code examples. | |
| 4. Use read_file to inspect skills/implement-design/scripts/im_slide.py | |
| and the core slide template at skills/implement-design/assets/core_slide.pptx. | |
| 5. Write a Python build script (output/build_deck.py) that: | |
| - Uses python-pptx and im_slide.py helpers | |
| - Starts from the core_slide.pptx template | |
| - Implements every slide from the plan with correct layout, typography, | |
| colors, and logo placement | |
| - Saves the result to output/deck.pptx | |
| 6. Run the build script with the shell tool. | |
| 7. Verify output/deck.pptx exists; read it back to confirm non-zero size. | |
| ## Brand non-negotiables (from Implement design system) | |
| - Tone-in-tone color β one main color (max two) and its nuances | |
| - No layered design β no element stacked on another | |
| - Palatino Linotype is an ACCENT font only β never bold, never colored | |
| - Icons only when they add genuine value; no fill colors on icons | |
| - White space is a feature β resist the urge to fill every area | |
| Never ask the user to do anything manually. Execute every step yourself. | |
| tools: | |
| - filesystem | |
| - shell | |
| - artifacts | |
| - todos | |
| skills: | |
| - implement_design | |
| max_iterations: 20 | |
| # ββ 3. Screenshotter ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| screenshotter: | |
| type: llm | |
| description: "Exports the PPTX slides to PNG files for visual review." | |
| instructions: | | |
| You are a screenshot agent. Convert output/deck.pptx to PNG images | |
| so the reviewer agent can inspect each slide visually. | |
| ## Steps | |
| 1. Create the directory output/screenshots/ if it does not exist. | |
| 2. Try exporting via LibreOffice headless: | |
| shell_exec: libreoffice --headless --convert-to png --outdir output/screenshots/ output/deck.pptx | |
| If that succeeds, rename files to slide_01.png, slide_02.png, etc. | |
| 3. If LibreOffice is unavailable, try python-pptx + Pillow: | |
| - Read each slide, render its thumbnail, save as output/screenshots/slide_NN.png | |
| 4. List output/screenshots/ and confirm PNG files are present. | |
| 5. Save the list of screenshot paths as an artifact named screenshot_paths. | |
| Report success or failure clearly so the reviewer knows what to look at. | |
| tools: | |
| - filesystem | |
| - shell | |
| - artifacts | |
| max_iterations: 10 | |
| # ββ 4. Reviewer βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| reviewer: | |
| type: llm | |
| description: "Reviews slide screenshots and approves or requests targeted fixes." | |
| instructions: | | |
| You are a design reviewer for Implement Consulting Group presentations. | |
| You will receive PNG screenshots of each slide. Evaluate them against | |
| the Implement brand standard: | |
| ## What to check | |
| - Layout: No layered elements. Generous white space. Clean alignment. | |
| - Color: Tone-in-tone. Primarily Blue-Green (#67817F) / Green-Grey (#B9C7C2). | |
| No unauthorized accent colors. | |
| - Typography: Palatino Linotype used sparingly as accent only (never bold, | |
| never ALL CAPS, never colored). Arial for all body/headline text. | |
| - Logo: IM_ logo present in correct corner position on title/section slides. | |
| - Icons: Only present when adding clear value; no fill colors. | |
| - Content: Slide headlines match the plan. No text overflow. | |
| ## Decision | |
| - If ALL slides pass: call exit_loop to finish. | |
| - If issues exist: output a numbered list of specific, actionable fixes for | |
| the implementer. Be precise β include slide number, what is wrong, and | |
| what the correct behavior should be. | |
| Load screenshots with load_artifact using the screenshot_paths artifact. | |
| You MUST read the actual PNG files with read_file to visually inspect them. | |
| tools: | |
| - exit | |
| - filesystem | |
| - artifacts | |
| max_iterations: 10 | |
| # ββ Loops & pipeline ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| build_review_loop: | |
| type: loop | |
| description: "Implement β screenshot β review loop until approved." | |
| agents: [implementer, screenshotter, reviewer] | |
| max_iterations: 8 | |
| deck_pipeline: | |
| type: sequential | |
| description: "Full deck generation: plan first, then the build-review loop." | |
| agents: [planner, build_review_loop] | |
| main_agent: deck_pipeline | |
| runner: | |
| app_name: deck-generator | |
| session_service: memory | |
| artifact_service: | |
| type: local | |
| path: artifacts/ |