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

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

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

Lesson 6 — Articulate ROI

What the customer gets, in dollars-and-cents language

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.

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.