Coaching Joe — Grand Edition
Commercial decks · Design Thinking · 5W1H · Roadmap to 2028
Copilot CLI → Joe · v3 · 2026-05-27 · 偉大版
Recorded under /skills/joe/lessons/ — Joe re-reads every run
The Mission — 5W1H
Before any deck: answer all six questions explicitly
WHYTo prove the AISpark + Joe stack is production-ready commercial-grade, not a side-project. Decks are TRUST artifacts — they convert internal work into external credibility.
WHATA 14–17 slide commercial deck (PPTX + HTML mirror) covering KPI tiles · architecture · model/skill/agent inventories · workflow · business value · roadmap — with real UI screenshots.
WHOAuthor: Joe (orchestrator) · Coach: Copilot CLI · Audience: executives, customers, internal engineering. Each audience sees the same deck but different headline numbers.
WHENEvery time the user says “簡報”/“deck”/“pptx”. Re-render is <15s because templates are builtin — no LLM codegen latency.
WHERETemplates: /skills/joe/templates/deck_*.py · Output: /tmp/*.{pptx,html} → /var/www/html/files/ · Served: http://192.168.1.125/files/
HOWBuiltin Python template > LLM codegen. Pillow for diagrams · python-pptx for slides · base64 inline for self-contained HTML · playwright for real UI screenshots.
Design Thinking — applied to deck building
Five stages, repeated every iteration
1. EMPATHIZEUser said “內容太爛”. Listen to the emotion, not just words. The pain = “I can’t send this to a customer.”
2. DEFINEReal problem: decks lacked NUMBERS, TABLES, REAL UI. Reframed from “make slides” → “make trust artifacts.”
3. IDEATEKPI tiles · inventory tables · ROI page · screenshots · meta-recursive deck-of-deck. Eight lessons codified.
4. PROTOTYPEv1 (8 slides) → v2 (14 slides + tables) → v3 (real screenshots + 5W1H + Roadmap). Each version 1-shot rebuild.
5. TESTcurl size check · open in browser · user feedback “偉大一點” → loop back to EMPATHIZE. Self-evolving via /skills/joe/lessons/.
Every “內容太爛” is a Design Thinking gift — it forces re-empathizing with the audience.
Why this deck exists
What went wrong in the first attempt
- First Joe deck: 8 plain slides, no images, no tables → user said "內容太爛"
- Second: CEO timed out at 180s on a 5 KB prompt; OOM on retry
- Third: CEO emitted broken JSON (python code escaping into JSON keys)
- Pivot: builtin template instead of LLM-generated code
- Fourth: commercial-grade — 14 slides, KPI tiles, full inventories, ROI
- These 8 lessons are now distilled here so Joe doesn't repeat them
Lesson 1 — Executive summary with KPI tiles
Open with numbers, not adjectives

Rule: 6 KPI tiles · large cyan number · short label · cyan border on dark tile.
Lesson 2 — Show the architecture
Diagrams beat bullet stacks

Rule: every Solution slide needs at least one diagram. matplotlib 1280×720 with the deck bg color.
Lesson 3 — Tabulate everything
Never use "etc." with business audiences
- Models → table (name · size · role · node), sorted by size desc
- Agents → table (group · agents) grouped by function
- Skills → 3-column layout (Superpowers · AirCore · Joe+DevOps)
- Header row: cyan bg + navy bold text
- Body rows: alternating navy / code-bg for scan-ability
- Completeness > brevity for inventories
Lesson 4 — Skills in 3 columns
Group, don't dump
Why 3 columns
- Reader scans vertically per category
- Each column gets its own header
- Width 1/3 = comfortable bullet width
- Responsive: collapses to 1 col on mobile
What to put
- Superpowers — 14 disciplines
- AirCore + Iron-law skills — 14
- Joe + DevOps + governance — 12
- One token per bullet; pipe-separate variants
Lesson 5 — Group OpenClaw agents
25 agents → 8 functional groups
- C-Suite — ceo · cfo · coo · cto · cro
- Engineering — engineer · rd-db-integrity · rnd_manager
- QA — aircore-qa · ceo-aircore-summary
- PM / Ops — project_manager · task_coordinator · document · meeting
- Domain — isaac-sim · isaac_lab_research · openusd_architect
- Knowledge · Sales / CR · Default — main · acp-defaultagent
Lesson 6 — Articulate ROI
What the customer gets, in dollars-and-cents language
- Zero cloud-token spend — fixed CAPEX replaces variable OPEX
- Data sovereignty — code · models · prompts stay on the LAN
- Verified artifacts — no silent failures, no rework loops
- Self-evolving — every task ends with a lesson; smarter for free
- Composable — Copilot plans, Joe dispatches, OpenClaw executes
- Fast time-to-value — polished deck in under 10 seconds
Lesson 7 — Story arc
Cover → Problem → Solution → … → Closing

Gold anchors (Cover + Closing) bracket the cyan narrative slides.
Lesson 8 — Templates, not LLM codegen
gpt-oss:20b cannot reliably emit JSON-embedded code
When the artifact format is well-known, prefer a template over LLM-generated code. LLM plans WHAT to include, not HOW to render it.
- Symptom — CEO JSON had
open(p, rb) bare names, escaping bleeding into top-level keys - Diagnose — json-repair fixed structure but not semantic escaping
- Fix —
/skills/joe/templates/deck_*.py builders; CEO only ratifies - Wire —
orchestrate_task() detects deck tasks → calls builder directly - Result — reliable 200 KB pptx + 240 KB html in <10s
How Joe applies these
Two mechanisms, both already wired
Auto-load before every run
_load_joe_lessons() reads /skills/joe/SKILL.md- Plus latest 10 .md under
/skills/joe/lessons/ - Capped at 2 KB, prepended to CEO prompt
- → CEO sees recent corrections every time
Builtin template shortcut
orchestrate_task() regex-detects deck tasks- Bypasses CEO codegen entirely
- Calls
/skills/joe/templates/deck_*.py build_deck() - Copies to
/var/www/html/files/ and prints ARTIFACT_OK
How to re-render this deck
One command — same template every time
# Joe re-renders the coaching deck
joe --orchestrate "give me copilot coaching deck for joe pptx html"
# Or run the template directly
python3 /skills/joe/templates/deck_copilot_advice.py
# Artifacts always at:
# http://192.168.1.125/files/joe_copilot_advice.pptx
# http://192.168.1.125/files/joe_copilot_advice.html
Lesson 9 — Embed REAL screenshots
Real UI captures > synthetic diagrams alone

Why screenshots beat diagrams
Empathy: a customer who has never seen the product needs visual proof. A diagram says “trust me”; a screenshot says “here it is, running right now.”
Mechanism: playwright chromium · viewport 1440×900 · networkidle + 0.8s settle · PNG · base64-inline so the HTML stays self-contained.
Meta-recursive trick: render the deck → screenshot the deck → embed THAT into the deck. Audience sees the product is real AND the deck is generated by it.
Implementation in one file
/skills/joe/templates/screenshots.py captures 5 targets. build_deck() calls it before rendering. If playwright is missing it falls back to cached PNGs — never breaks the pipeline.
Caveat: nginx types {} in a location REPLACES the global mime.types — must re-declare text/html, png, jpeg, svg, css, js per location, or the browser will download instead of render.

Lesson 10 — Show the production UI
Three real front-ends, captured live from 192.168.1.125
192.168.1.125/ — AISpark portal

The single front-door for every AISpark service — proves the system has a real face, not just a CLI.
:8888 — Joe 智能協調引擎

Joe’s own dashboard — the orchestrator UI that runs tasks across the fleet. This is the hero screenshot for any Joe-centric deck.
/files/ — artifact index

Every generated PPTX/HTML lands here · autoindex on · accessible from 1.98 over LAN. The “delivery dock” of the whole system.
Lesson 11 — How to capture them
Playwright is preinstalled — use it for evidence
# Joe ships /skills/joe/templates/screenshots.py
from screenshots import capture_all
capture_all(out_dir="/tmp/joe_shots")
# Copilot CLI tips Joe internalized:
# - viewport screenshot for UI; full_page=True only for long docs
# - sleep ~0.8s after networkidle so fonts/animations settle
# - nginx types {} block REPLACES inherited mime.types —
# must re-declare text/html, png, jpeg, svg, css, js per location
# - "Download is starting" warning == octet-stream mime; fix nginx
# - meta-recursive: screenshot the deck and embed back into the deck
Grand Roadmap — where Joe goes next
2026 Q3 → 2028 · From deck-builder to autonomous business-comms agent
NOW · 2026 Q3
Foundation
- 14-slide commercial intro deck
- 13-slide coaching deck (v3)
- Real UI screenshots via playwright
- Auto-load lessons + SKILL.md
- 5W1H + Design Thinking in every deck
NEXT · 2026 Q4
Audience-aware
- 3 variants per deck: exec / engineer / sales
- Same data, different KPI headlines
- Auto-A/B render and let user pick
- Persona-aware narrative generation
- Multilingual: 中/英/日 mirror
2027
Multi-modal
- Embedded short demo videos (MP4)
- AI voiceover narration per slide
- Live data widgets (real KPI from PostgreSQL)
- One-click PDF + 16:9 + 4:3 + speaker-notes
- Interactive web version (click to drill-down)
2028 · NORTH STAR
Autonomous comms
- Joe attends meetings, drafts decks live
- Reads customer email → generates tailored pitch
- Tracks deck open + dwell + commits learnings back
- RFP → 30-slide proposal in < 10 min
- Becomes the 24/7 business-comms layer of AISpark
Every deck Joe ships today is a brick in tomorrow’s autonomous-communications cathedral.
Closing — what Joe takes away
Eight lessons, one principle
Commercial decks earn trust with NUMBERS, TABLES, DIAGRAMS, and ROI — not adjectives.
- KPI tiles open every business deck
- Tables enumerate inventories — never "etc."
- Diagrams replace bullet stacks for Solution / Workflow
- ROI / Roadmap slides build executive trust
- Builtin templates beat LLM codegen for known formats
- Every task ends with a lesson — Joe evolves automatically