Core plan: current-state, goal-state (layered architecture, OtOpcUa, Redpanda EventHub, SnowBridge, canonical model, UNS posture + naming hierarchy, digital twin use cases absorbed), roadmap (7 workstreams x 3 years), and status bookmark. Component detail files: legacy integrations inventory (3 integrations, pillar 3 denominator closed), equipment protocol survey template (dual mandate with UNS hierarchy snapshot), digital twin management brief (conversation complete, outcome recorded). Output generation pipeline: specs for 18-slide mixed-stakeholder PPTX and faithful-typeset PDF, with README, design doc, and implementation plan. No generated outputs yet — deferred until source data is stable.
11 KiB
Output Generation Pipeline Implementation Plan
For Claude: REQUIRED SUB-SKILL: Use
superpowers-extended-cc:executing-plansto implement this plan task-by-task. Note: this repo is not a git project and the work is markdown authoring + skill invocation, not code. The standard writing-plans template (TDD, pytest, git commits) does not apply; use the verification steps per task as the equivalent of "run the tests."
Goal: Scaffold a repeatable PPTX + PDF generation pipeline over the plan markdown source, and produce the first pair of outputs.
Architecture: Spec files (presentation-spec.md, longform-spec.md) as structure anchors; hand-drawn Mermaid diagrams committed as .mmd + .png; document-skills:pptx and document-skills:pdf invoked per a fixed checklist in outputs/README.md; append-only run-log.md records every regeneration.
Tech Stack: Markdown, Mermaid (for diagrams), document-skills:pptx, document-skills:pdf, document-skills:theme-factory default theme.
Design reference: outputs/DESIGN.md
Path note: Writing-plans' default location is docs/plans/YYYY-MM-DD-<name>.md; this repo convention keeps documents in topical directories, so this plan lives alongside the pipeline it implements.
Task 0: Directory scaffold
Status: Parent directory outputs/ already exists (created when DESIGN.md was written). This task creates the remaining subdirectories.
Files:
- Create:
outputs/diagrams/(directory) - Create:
outputs/generated/(directory)
Step 1: mkdir -p outputs/diagrams outputs/generated
Step 2: Verify
Run: ls outputs/
Expected: DESIGN.md IMPLEMENTATION-PLAN.md diagrams generated (README, specs, run-log not yet created)
Task 1: outputs/README.md — trigger phrases + regeneration checklist
Files:
- Create:
outputs/README.md
Content requirements:
- Purpose statement (what
outputs/is and isn't) - Trigger phrases section —
regenerate outputs,regenerate presentation,regenerate longform - Numbered regeneration procedure (the 5-step checklist from design section 2)
- Edit-this-not-that rules — when to edit specs vs. source vs. diagrams
- Pointers to
DESIGN.md,presentation-spec.md,longform-spec.md,run-log.md
Verification:
- File exists at
outputs/README.md - Contains the three trigger phrases verbatim
- Contains the 5-step procedure numbered 1–5
- Links to the four companion files resolve to existing or soon-to-exist paths
Task 2: outputs/presentation-spec.md — 18-slide PPTX structure anchor
Files:
- Create:
outputs/presentation-spec.md
Content requirements:
- Meta header — audience (mixed-stakeholder), theme (theme-factory default), truncation rules (6 bullets, ~12 words each, overflow → footer pointer)
- 18 slide entries, one per slide. Each entry specifies:
- Slide number, title, layout type
- Source file + section anchor
- Population instructions (verbatim / N-bullet summary / diagram embed / table render)
- Optional: notes on layout fallbacks if the PPTX skill can't do the requested layout
- A closing "editing this spec" section explaining that structural changes go here, not in prompts
Verification:
- File exists
- Has exactly 18 slide entries
- Every slide cites a specific source file (or
—for the title slide) - Slides 8 and 9 reference
outputs/diagrams/architecture-layers.pngandoutputs/diagrams/end-to-end-flow.pngrespectively
Task 3: outputs/longform-spec.md — PDF chapter/appendix structure anchor
Files:
- Create:
outputs/longform-spec.md
Content requirements:
- Meta header — audience (anyone reading the plan standalone), theme (theme-factory default serif), page setup (Letter, 1" margins, chapter header, page+date footer)
- File-to-chapter mapping:
- Cover page (title, subtitle, as-of date, abstract from
goal-state.md→ Vision) - TOC (auto, two levels)
- Chapter 1:
current-state.md - Chapter 2:
goal-state.md - Chapter 3:
roadmap.md - Appendix A:
current-state/legacy-integrations.md - Appendix B:
current-state/equipment-protocol-survey.md
- Cover page (title, subtitle, as-of date, abstract from
- Transformation rules (numbered heading, link normalization,
_TBD_highlight, ASCII diagram preservation, table handling) - Exclusion list (
status.md,CLAUDE.md,goal-state/digital-twin-management-brief.md,outputs/*)
Verification:
- File exists
- Lists 3 chapters + 2 appendices in the specified order
- Transformation rules section is present and enumerated
Task 4: outputs/diagrams/architecture-layers.mmd — Mermaid source for the 4-layer stack
Files:
- Create:
outputs/diagrams/architecture-layers.mmd
Content requirements:
- Mermaid
flowchart TB(top-to-bottom) - Nodes: Equipment (bottom) → OtOpcUa (L2, with two namespace sub-nodes) → System Platform + Ignition (L3) → ScadaBridge (L4) → Enterprise IT (Camstar, Delmia, Snowflake, Power BI)
- A visible IT↔OT boundary line between L4 and Enterprise IT (Mermaid supports this via subgraphs or styled edges)
- Labels use the exact vocabulary from
goal-state.md→ Layered Architecture
Verification:
- File exists
- Starts with
flowchart TBor equivalent directive - Contains node labels for
Equipment,OtOpcUa,System Platform,Ignition,ScadaBridge, andEnterprise IT - Passes basic Mermaid syntax sanity check (paste into mermaid.live renders without error — verify this step on first authoring)
Task 5: outputs/diagrams/end-to-end-flow.mmd — Mermaid source for the data flow
Files:
- Create:
outputs/diagrams/end-to-end-flow.mmd
Content requirements:
- Mermaid
flowchart LR(left-to-right) - Nodes match
goal-state.mdline 77 exactly: Equipment → OtOpcUa → System Platform/Ignition → ScadaBridge → Redpanda → SnowBridge → Snowflake → dbt → Power BI - IT↔OT boundary marker between ScadaBridge and Redpanda (Redpanda is IT-adjacent from ScadaBridge's central crossing)
Verification:
- File exists
- Starts with
flowchart LRor equivalent - Has exactly the 9 nodes in the exact order from
goal-state.mdline 77 - Renders at mermaid.live without error
Task 6: Render diagrams to PNG (or document manual fallback)
Files:
- Create:
outputs/diagrams/architecture-layers.png(if rendering available) - Create:
outputs/diagrams/end-to-end-flow.png(if rendering available)
Step 1: Attempt to render Mermaid → PNG in the Claude Code environment. Options, in order of preference:
document-skills:pptxskill may expose a diagram embed path that handles Mermaid natively- Python with
mermaid-pyormermaid-cliif available - A headless browser with mermaid.js
Step 2 (if rendering succeeds): Write the PNGs to outputs/diagrams/. Verify file size > 0 and file type is PNG.
Step 3 (if rendering fails): Do not block. Instead:
- Create placeholder empty PNGs or skip PNG creation entirely
- Record in the run log: "Render
outputs/diagrams/architecture-layers.mmdandoutputs/diagrams/end-to-end-flow.mmdat https://mermaid.live and save the PNGs tooutputs/diagrams/. Then re-runregenerate presentation." - Note in the human-facing summary that this is the one-time manual step
Verification:
- Either both PNG files exist with non-zero size, OR the run log contains the explicit manual-render instruction
Task 7: Update CLAUDE.md index
Files:
- Modify:
CLAUDE.md
Change: Add outputs/ to the component detail files list with a one-line description, so future Claude sessions see the pipeline exists when loading the project.
Verification:
CLAUDE.mdmentionsoutputs/and points tooutputs/README.mdas the regeneration entry point
Task 8: Execute first PPTX generation
Files:
- Create:
outputs/generated/plan-presentation.pptx
Step 1: Read outputs/presentation-spec.md (the structure anchor).
Step 2: Read every source file named in the spec.
Step 3: For each of the 18 slides, populate content per the spec's rules.
Step 4: Invoke document-skills:pptx with:
- Theme:
document-skills:theme-factorydefault professional - Title: "Shopfloor IT/OT Transformation — 3-Year Plan"
- Output path:
outputs/generated/plan-presentation.pptx - Diagram images from
outputs/diagrams/
Step 5: Append run log entry.
Verification:
outputs/generated/plan-presentation.pptxexists, file size > 0- Slide count is 18 (verify by re-reading the file's structure if possible)
- Run log has a new entry with timestamp and a "presentation regenerated" note
- If any source content was truncated, a warning appears in the run log entry
Task 9: Execute first PDF generation
Files:
- Create:
outputs/generated/plan-longform.pdf
Step 1: Read outputs/longform-spec.md.
Step 2: Read all 5 source files (current-state.md, goal-state.md, roadmap.md, legacy-integrations.md, equipment-protocol-survey.md).
Step 3: Apply the transformation rules from the spec — numbered headings, link normalization, _TBD_ highlighting.
Step 4: Invoke document-skills:pdf with:
- Theme: theme-factory default
- Cover page with title, subtitle, as-of date, abstract
- TOC, 3 chapters, 2 appendices
- Output path:
outputs/generated/plan-longform.pdf
Step 5: Append run log entry.
Verification:
outputs/generated/plan-longform.pdfexists, file size > 0- Basic sanity: first page is cover, second is TOC, chapters appear in the expected order
- Run log has a new entry for the PDF generation
- Broken/unresolvable inter-file links are logged as warnings, not silently dropped
Task 10: Initial run log + human-facing summary
Files:
- Create:
outputs/run-log.md
Content:
- Header explaining the run log's purpose (append-only audit trail, one entry per regeneration, newest at bottom)
- Inaugural entry:
- Timestamp (2026-04-15)
- What ran: first PPTX + PDF generation
- Source plan version: brief summary ("plan as of 2026-04-15 — 5 source files, 3 legacy integrations, 6 protocol survey placeholder rows")
- Warnings: any truncations, missing sections, broken links, or PNG rendering fallbacks from tasks 6, 8, 9
- Next actions for the human reviewer
Verification:
- File exists
- Contains the inaugural entry
- If Task 6 hit the manual-render fallback, the run log surfaces that prominently
Dependencies
Task 0 (scaffold)
├── Task 1 (README)
├── Task 2 (presentation-spec)
├── Task 3 (longform-spec)
├── Task 4 (architecture-layers.mmd)
├── Task 5 (end-to-end-flow.mmd)
└── Task 7 (CLAUDE.md index) — can run in parallel
Tasks 4, 5 → Task 6 (render PNGs)
Tasks 1, 2, 6 → Task 8 (PPTX generation)
Tasks 1, 3 → Task 9 (PDF generation)
Tasks 8, 9 → Task 10 (run log)
Tasks 0–5 and 7 can run in parallel where sensible; tasks 6, 8, 9, 10 are sequentially dependent.
Out of scope for this plan
- A second theme / branded version of the deck (first run uses theme-factory default; branding iteration is a follow-up)
- A third diagram (roadmap-timeline) — starter set is 2, per design
- A
.claude/commands/regenerate-outputs.mdslash command — plain English trigger + README checklist is enough for first pass - A curated long-form narrative PDF (option b from earlier brainstorm) — first run is option (a) faithful typeset only
- Editing source plan files — regeneration is read-only on plan content
- Any git operations — this repo is not a git project