Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "designmd-pptx",
"version": "2.0.0",
"version": "2.1.0",
"description": "Compile awesome-design-md / Stitch DESIGN.md into officecli PPTX tokens, ordered decks, and staging-safe apply.",
"author": {
"name": "Min-Gul Kim",
Expand Down
4 changes: 2 additions & 2 deletions .grok/skills/officecli-pptx-designmd/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
---
name: officecli-pptx-designmd
description: "designmd-pptx v2.0: compile awesome-design-md / Stitch DESIGN.md into officecli PPTX tokens, ordered decks, staging-safe apply; compose markdown briefs into deck-specs; constraint-based layout engine with density adaptation for text-heavy patterns; extract existing pptx into a deck-spec draft (geometry-aware); restyle existing pptx with brand tokens (font-role aware); brand slide masters/layouts and export pruned .potx templates; a11y WCAG gate; before/after benchmark; doctor --install (officecli-dist pin); 20+ slide patterns; CJK-aware text-fit validation; Gate 3 screenshot gating; render quick drafts via the official officecli agent-bridge. Trigger on DESIGN.md, getdesign.md, brand design for slides, deck outline, restyle deck, modernize slides, slide master, potx template, /designmd-pptx, /officecli-pptx-designmd."
description: "designmd-pptx v2.1: compile awesome-design-md / Stitch DESIGN.md into officecli PPTX tokens, ordered decks, staging-safe apply; compose briefs; constraint layout + generative freeform; refine/animate; extract/restyle/reconstruct; a11y + public benchmark; doctor --install; Windows one-file installer; VS Code extension; 60+ patterns; CJK text-fit; Gate 3 vision; render via agent-bridge. Trigger on DESIGN.md, getdesign.md, brand design for slides, deck outline, restyle deck, modernize slides, slide master, potx template, /designmd-pptx, /officecli-pptx-designmd."
---

# officecli-pptx-designmd (v2.0)
# officecli-pptx-designmd (v2.1)

## Locate the toolkit

Expand Down
83 changes: 68 additions & 15 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,83 @@

All notable changes to designmd-pptx are documented here.

## [Unreleased] — Phase 5 (#21 / #40 / #42 / #35)
## [2.1.0] — 2026-07-15

Phase 5 / **intelligence** release. Production core from v2.0.0 plus generative
layout, animation, public benchmark, Windows installer, refine loop, chart/table
reconstruction, and VS Code/Cursor editor MVP.

### Added

#### Intelligence & layout
- **`refine`** CLI (#19) — iterative visual refinement: natural-language feedback
and Gate 3 findings → deterministic deck-spec patches (split / shorten /
recipe swap) over 1–N rounds.
- **`generate`** CLI (#21) — hybrid generative layout: NL style directives
(`Apple Keynote`, Swiss, consulting, minimal, editorial) → pattern recipe
maps and/or **freeform** Box trees validated by the constraint layout engine
(text-fit floors preserved). Vision density findings force re-layout.
Recipe `freeform` materializes editable native shapes via officecli ops.
(Apple Keynote, Swiss, consulting, minimal, editorial) → pattern recipe maps
and/or **`freeform`** Box trees validated by the constraint layout engine
(title/body floors preserved). Vision density findings force re-layout.
Results remain editable native PPTX shapes.
- Recipe registry **61** builders (`freeform` + `GENERATIVE_SEQUENCE`).

#### Charts / extract
- **`reconstruct`** CLI + modern extract classify (#22) — chart/table recovery
maps to modern recipes (`waterfall_insight`, `chart_callout_panel`,
`appendix_table`, …).

#### Animation
- **`animate`** CLI + DESIGN.md `animation:` frontmatter (#40) — entrance
presets (`fade` / `appear` / `wipe` / `fly_in`), slide transitions, default
targets on key patterns; **namespace-safe OOXML** injection via `opc` (lxml).
- **Public 100+ deck benchmark** (#42) — `benchmark --public` runs ≥100
synthetic CC0 fixtures across the recipe catalog; methodology + results in
[docs/public-benchmark.md](docs/public-benchmark.md). Rights: synthetic only;
private corpus remains separate (`docs/corpus.md`).
targets on key patterns; **namespace-safe OOXML** via `opc` (lxml).

#### Editor
- **Editor decision** (#44) — primary surface is VS Code / Cursor (not PowerPoint
Add-in); see `docs/editor-integration-decision.md`.
- **VS Code / Cursor extension MVP** (#45) — `editor/vscode/` (doctor, compose,
scaffold, a11y, refine, benchmark, explorer, Problems from reports).

#### Ecosystem / packaging
- **Public ≥100-deck benchmark** (#42) — `benchmark --public` runs synthetic
CC0 fixtures across the recipe catalog; methodology + results in
[docs/public-benchmark.md](docs/public-benchmark.md).
- **Windows standalone installer** (#35) — one-file
`packaging/windows/Install-DesignmdPptx.ps1` (venv + pip + pinned
officecli-dist + user PATH + uninstall); optional Inno Setup
`DesignmdPptx-Setup.exe`; `windows-install` CLI for plan/manifest checks.
officecli-dist + user PATH + uninstall); optional Inno Setup Setup.exe;
`windows-install` CLI for plan/manifest checks.
Docs: [docs/windows-installer.md](docs/windows-installer.md).

#### Recipe coverage (post-v2.0 waves, landed before 2.1 cut)
- Wave 1 full-family patterns (12) + Wave 2 long-tail (12) + Wave 3 vertical
example decks (business / marketing / health / education / finance).

### Changed
- Recipe registry **61** builders (`freeform` + GENERATIVE_SEQUENCE).
- Maturity roadmap: Phase 5 items #21 / #40 / #42 / #35 marked shipped.
- Package / skill / plugin / compiler version **2.1.0** (was 2.0.0).
- Maturity roadmap: Phase 5 marked **shipped** as v2.1.0.
- Skill description and agent docs cover `generate`, `animate`, `refine`,
`reconstruct`, `benchmark --public`, `windows-install`.

### Verified
- Full unit suite green (347 tests, 1 skip).
- Multi-OS CI unit + package + benchmark fixture + e2e pin contract.
- `benchmark --public` → 100 pass / 0 fail (CC0 synthetic).
- `npm run check` green (version alignment across manifests).

### Install
```bash
pip install . # or: PYTHONPATH=python from a checkout
python -m designmd_pptx doctor --install
python -m designmd_pptx scaffold default -o out/demo \
--content python/examples/content.deck.json
python -m designmd_pptx generate content.deck.json -o gen --directive "Keynote style"
python -m designmd_pptx benchmark --public -o public-benchmark-out
# Windows (one-file):
# powershell -ExecutionPolicy Bypass -File packaging\windows\Install-DesignmdPptx.ps1
```

### Next (v3.0)
- Hosted gallery of rendered examples with DESIGN.md provenance
- Multi-format export evaluation
- Community pattern registry + signed releases / SBOM

## [2.0.0] — 2026-07-15

Expand Down Expand Up @@ -60,7 +113,7 @@ Production release: Phase 0–4 complete.
(`a11y_error` delta −4) + `render` → 7-slide draft.pptx.
- Full unit suite green; plugin `npm run check` green.

### Deferred to v2.1 (at 2.0.0 cut; now largely shipped — see Unreleased)
### Deferred at 2.0.0 cut (shipped in 2.1.0)
- Windows installer (#35), animation (#40), generative layout (#21), chart
reconstruction (#22), iterative vision loop (#19), editor integration
(#44/#45), 100+ public benchmark corpus (#42).
Expand Down
26 changes: 17 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# designmd-pptx

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
[![Version](https://img.shields.io/badge/version-2.0.0-brightgreen)](plugin.json)
[![Release](https://img.shields.io/badge/release-v2.0.0-blue)](https://github.com/kimmingul/designmd-pptx/releases/tag/v2.0.0)
[![Version](https://img.shields.io/badge/version-2.1.0-brightgreen)](plugin.json)
[![Release](https://img.shields.io/badge/release-v2.1.0-blue)](https://github.com/kimmingul/designmd-pptx/releases/tag/v2.1.0)

**awesome-design-md / Stitch `DESIGN.md` → [OfficeCLI](https://github.com/officecli/officecli) PPTX** — packaged for **Claude Code, OpenAI Codex, and Grok Build** (**v2.0**).
**awesome-design-md / Stitch `DESIGN.md` → [OfficeCLI](https://github.com/officecli/officecli) PPTX** — packaged for **Claude Code, OpenAI Codex, and Grok Build** (**v2.1**).

Drop a brand `DESIGN.md` in, scaffold an ordered deck, and materialize slides with staging-safe apply. v1.x delivered reverse extract/restyle, masters/.potx, compose, layout engine, dual OfficeCLI backends, and `render`. **v2.0** is the production release: version-locked `doctor --install` (officecli-dist pin), WCAG a11y gate, before/after benchmark harness, maturity docs/gallery, and a green CI fixture suite.
Drop a brand `DESIGN.md` in, scaffold an ordered deck, and materialize slides with staging-safe apply. v1.x delivered reverse extract/restyle, masters/.potx, compose, layout engine, dual OfficeCLI backends, and `render`. **v2.0** shipped the production core (doctor pin, a11y, benchmark, docs). **v2.1** adds Phase 5 intelligence: `refine` / `generate` / `animate`, chart reconstruction, public 100+ benchmark, Windows one-file installer, and a VS Code/Cursor extension MVP.

## What you get

Expand Down Expand Up @@ -243,13 +243,21 @@ Phases 0–4 complete. See [CHANGELOG](CHANGELOG.md) and [docs/maturity-roadmap.
- ✅ **Phase 3 — Intelligence adapters** — `compose --llm`, vision Gate 3.
- ✅ **Phase 4 — v2.0 release** — `doctor --install` (officecli-dist pin), a11y, benchmark, docs/gallery/governance.

### v2.1 (Phase 5) — in progress
### v2.1 — shipped (Phase 5)

Intelligence + packaging train. Full notes: [CHANGELOG](CHANGELOG.md) · tag `v2.1.0`.

- ✅ **#19 Iterative visual refinement** — `refine` CLI: NL / Gate 3 findings → deck-spec patches.
- ✅ **#22 Chart/table reconstruction** — lossless extract of type/series/categories; modern recipe mapping (`waterfall_insight`, `chart_callout_panel`, `appendix_table`); `reconstruct` CLI.
- ✅ **#44 Editor decision** — primary surface is **VS Code / Cursor extension** (not PowerPoint Add-in); see [docs/editor-integration-decision.md](docs/editor-integration-decision.md).
- ✅ **#45 Editor implementation** — MVP extension in [`editor/vscode/`](editor/vscode/) (compose/scaffold/a11y/refine/doctor, explorer, Problems from reports; VSIX sideload).
- ✅ Generative layout (#21), animation (#40), public 100+ benchmark (#42), Windows installer (#35).
- ✅ **#22 Chart/table reconstruction** — modern chart/table recipes + `reconstruct` CLI.
- ✅ **#44 / #45 Editor** — VS Code/Cursor extension MVP ([`editor/vscode/`](editor/vscode/)); decision doc (not PPT Add-in).
- ✅ **#21 Hybrid generative layout** — `generate` + `freeform` recipe (constraint-validated).
- ✅ **#40 Animation** — DESIGN.md `animation:` + `animate` (namespace-safe OOXML).
- ✅ **#42 Public 100+ benchmark** — `benchmark --public` + [docs/public-benchmark.md](docs/public-benchmark.md).
- ✅ **#35 Windows installer** — one-file `Install-DesignmdPptx.ps1` + optional Setup.exe.

### v3.0 — planned

Hosted gallery, multi-format export evaluation, community pattern registry, signed releases / SBOM.

## License

Expand Down
5 changes: 3 additions & 2 deletions docs/governance.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,15 @@
| `effort:S` / `effort:M` / `effort:L` | Rough sizing |
| `v2.0` / `v2.1` | Target release train |

Milestones map to roadmap phases (Phase 4 = v2.0 release, Phase 5 = intelligence).
Milestones map to roadmap phases (Phase 4 = v2.0 release, Phase 5 = v2.1
intelligence — **shipped**). Next train is v3.0 platform work.

## Triage SLA (best-effort)

1. New issues: label + milestone within a few days when active.
2. Security / data exposure: treat as highest priority; do not paste secrets in issues.
3. Duplicate: close with pointer to canonical issue.
4. Out of scope (Phase 5 while shipping v2.0): label `v2.1` and leave open.
4. Out of scope for the active train: label the next milestone (`v3.0`) and leave open.

## PR merge bar

Expand Down
4 changes: 3 additions & 1 deletion docs/maturity-roadmap.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,9 @@ CI. A private/licensed 50-deck held-out set may still be incomplete; that is
documented rather than blocking the release. Methodology and thresholds live in
`python/designmd_pptx/benchmark_thresholds.json`.

## v2.1 — intelligence (Phase 5)
## v2.1 — intelligence (**shipped** as v2.1.0)

Phase 5 complete. See [CHANGELOG.md](../CHANGELOG.md) for the release notes.

- ✅ Iterative visual refinement loop (#19) — `refine` CLI
- ✅ Chart/table reconstruction from extract (#22) — modern classify + `reconstruct`
Expand Down
4 changes: 2 additions & 2 deletions editor/vscode/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ Thin **command palette + explorer + Problems** shell around the existing
cd editor/vscode
npm install -g @vscode/vsce # once
npx @vscode/vsce package --no-dependencies
# → designmd-pptx-0.1.0.vsix
code --install-extension designmd-pptx-0.1.0.vsix
# → designmd-pptx-0.2.0.vsix
code --install-extension designmd-pptx-0.2.0.vsix
```

Cursor: **Extensions → … → Install from VSIX…**
Expand Down
2 changes: 1 addition & 1 deletion editor/vscode/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "designmd-pptx",
"displayName": "designmd-pptx",
"description": "Compose DESIGN.md / markdown briefs into OfficeCLI PPTX decks via the designmd-pptx CLI",
"version": "0.1.0",
"version": "0.2.0",
"publisher": "kimmingul",
"license": "MIT",
"engines": {
Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "designmd-pptx",
"version": "2.0.0",
"description": "DESIGN.md → officecli PPTX compiler, packaged for Claude Code / Codex / Grok Build (v2.0)",
"version": "2.1.0",
"description": "DESIGN.md → officecli PPTX compiler, packaged for Claude Code / Codex / Grok Build (v2.1)",
"license": "MIT",
"private": true,
"scripts": {
Expand Down
2 changes: 1 addition & 1 deletion packaging/windows/designmd-pptx.iss
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
; with -Uninstall.

#define MyAppName "designmd-pptx"
#define MyAppVersion "2.0.0"
#define MyAppVersion "2.1.0"
#define MyAppPublisher "designmd-pptx contributors"
#define MyAppURL "https://github.com/kimmingul/designmd-pptx"

Expand Down
2 changes: 1 addition & 1 deletion plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "designmd-pptx",
"version": "2.0.0",
"version": "2.1.0",
"description": "DESIGN.md → officecli PPTX compiler for agentic AI: compose markdown briefs into decks, extract/restyle existing decks, brand slide masters, Gate 3 screenshot QA. Grok Build manifest of the multi-platform (Claude Code / Codex / Grok) plugin.",
"author": {
"name": "Min-Gul Kim",
Expand Down
14 changes: 14 additions & 0 deletions python/ACCEPTANCE.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,19 @@
# designmd-pptx — Definition of Done

## v2.1.0 acceptance criteria (Phase 5)

| # | Criterion | Evidence |
|---|---|---|
| 1 | Package/compiler/plugin **2.1.0** aligned | `__version__`, `COMPILER_VERSION`, `plugin.json`, `package.json`, `.claude-plugin/plugin.json` |
| 2 | (#19) `refine` CLI | `refine.py` + `tests/test_refine.py` |
| 3 | (#21) Hybrid generative layout + `freeform` | `generative.py` + `tests/test_phase5_21_40_42.py` |
| 4 | (#22) Chart/table reconstruct | `reconstruct.py` + `tests/test_reconstruct.py` |
| 5 | (#40) Animation OOXML | `animation.py` + phase5 tests |
| 6 | (#42) Public ≥100-deck benchmark | `public_benchmark.py` + `docs/public-benchmark.md` |
| 7 | (#35) Windows one-file installer + uninstall | `packaging/windows/Install-DesignmdPptx.ps1` + `win_install.py` + `tests/test_windows_installer.py` |
| 8 | (#44/#45) Editor decision + VS Code MVP | `docs/editor-integration-decision.md` + `editor/vscode/` |
| 9 | CI green + `npm run check` | unit matrix, package, benchmark fixture |

## v1.7 acceptance criteria (issues #25–#30)

| # | Criterion | Evidence |
Expand Down
2 changes: 1 addition & 1 deletion python/designmd_pptx/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
"""DESIGN.md (awesome-design-md / Stitch) → officecli PPTX slide tokens & recipes."""

__version__ = "2.0.0"
__version__ = "2.1.0"
2 changes: 1 addition & 1 deletion python/designmd_pptx/backend.py
Original file line number Diff line number Diff line change
Expand Up @@ -318,7 +318,7 @@ def _ensure_proc(self) -> subprocess.Popen:
daemon=True,
).start()
init = self._call("initialize", {
"clientInfo": {"name": "designmd-pptx", "version": "2.0.0"},
"clientInfo": {"name": "designmd-pptx", "version": "2.1.0"},
})
self._caps = None
self._server = init
Expand Down
2 changes: 1 addition & 1 deletion python/designmd_pptx/compile.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
from .colors_parse import collect_css_vars
from .validate import validate_content_overlay, validate_tokens_against_schema_file

COMPILER_VERSION = "2.0.0"
COMPILER_VERSION = "2.1.0"

DEFAULT_PATTERNS = [
"cover",
Expand Down
6 changes: 3 additions & 3 deletions python/tests/test_v11.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@

class Version(unittest.TestCase):
def test_package_and_compiler_1_1(self):
self.assertTrue(__version__.startswith("2.0"))
self.assertTrue(COMPILER_VERSION.startswith("2.0"))
self.assertTrue(__version__.startswith("2.1"))
self.assertTrue(COMPILER_VERSION.startswith("2.1"))


class ColorV11(unittest.TestCase):
Expand Down Expand Up @@ -87,7 +87,7 @@ class CompileVarFixture(unittest.TestCase):
def test_var_oklch_fixture(self):
path = ROOT / "fixtures" / "var-oklch.DESIGN.md"
tokens = compile_design_md(path, brand="VarOKLCH")
self.assertTrue(tokens["compiler"]["version"].startswith("2.0"))
self.assertTrue(tokens["compiler"]["version"].startswith("2.1"))
self.assertEqual(tokens["colors"]["accent"], "0B5FFF")
self.assertTrue(tokens["dark_first"])
self.assertIn("image_text_2col", tokens["patterns"])
Expand Down
4 changes: 2 additions & 2 deletions scripts/check-plugin.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ ok(sync.status === 0, `adapters in sync: ${(sync.stdout || sync.stderr || '').tr
const pkg = path.join(root, 'python', 'designmd_pptx', '__init__.py');
ok(fs.existsSync(pkg), 'python package present');
const init = fs.readFileSync(pkg, 'utf8');
ok(init.includes('2.0'), 'package version 2.0.x');
ok(init.includes('2.1'), 'package version 2.1.x');

const req = path.join(root, 'python', 'requirements.txt');
ok(fs.existsSync(req), 'requirements.txt');
Expand All @@ -79,7 +79,7 @@ const py = spawnSync('python', ['-c', pyCode], {
shell: false,
});
ok(
py.status === 0 && (py.stdout || '').includes('2.0'),
py.status === 0 && (py.stdout || '').includes('2.1'),
`python import: ${(py.stdout || py.stderr || '').trim()}`
);

Expand Down
4 changes: 2 additions & 2 deletions skills/officecli-pptx-designmd/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
---
name: officecli-pptx-designmd
description: "designmd-pptx v2.0: compile awesome-design-md / Stitch DESIGN.md into officecli PPTX tokens, ordered decks, staging-safe apply; compose markdown briefs into deck-specs; constraint-based layout engine with density adaptation for text-heavy patterns; extract existing pptx into a deck-spec draft (geometry-aware); restyle existing pptx with brand tokens (font-role aware); brand slide masters/layouts and export pruned .potx templates; a11y WCAG gate; before/after benchmark; doctor --install (officecli-dist pin); 20+ slide patterns; CJK-aware text-fit validation; Gate 3 screenshot gating; render quick drafts via the official officecli agent-bridge. Trigger on DESIGN.md, getdesign.md, brand design for slides, deck outline, restyle deck, modernize slides, slide master, potx template, /designmd-pptx, /officecli-pptx-designmd."
description: "designmd-pptx v2.1: compile awesome-design-md / Stitch DESIGN.md into officecli PPTX tokens, ordered decks, staging-safe apply; compose briefs; constraint layout + generative freeform; refine/animate; extract/restyle/reconstruct; a11y + public benchmark; doctor --install; Windows one-file installer; VS Code extension; 60+ patterns; CJK text-fit; Gate 3 vision; render via agent-bridge. Trigger on DESIGN.md, getdesign.md, brand design for slides, deck outline, restyle deck, modernize slides, slide master, potx template, /designmd-pptx, /officecli-pptx-designmd."
---

# officecli-pptx-designmd (v2.0)
# officecli-pptx-designmd (v2.1)

## Locate the toolkit

Expand Down
Loading