diff --git a/config/external-sources.lock.json b/config/external-sources.lock.json index ddc12671..8b8e8973 100644 --- a/config/external-sources.lock.json +++ b/config/external-sources.lock.json @@ -33,8 +33,8 @@ "repo": "https://github.com/nextlevelbuilder/ui-ux-pro-max-skill.git", "ref": "main", "adapter": "claude-skill", - "commit": "bc826e2267a36d98a2dcf5231e16c30ff546770f", - "syncedAt": "2026-08-20T16:00:00Z" + "commit": "13179471f97162b3297558621a76682438caf017", + "syncedAt": "2026-08-24T16:00:00Z" }, { "id": "caveman", @@ -51,8 +51,8 @@ "repo": "https://github.com/Leonxlnx/taste-skill.git", "ref": "main", "adapter": "skill-collection", - "commit": "72e299530e2eb31ed8da06181bc19f6c18a00821", - "syncedAt": "2026-08-22T16:00:00Z" + "commit": "ccbc15639c97057cbfcf32ecebc38ef716e4bb37", + "syncedAt": "2026-08-24T16:00:00Z" }, { "id": "shadcn", @@ -60,8 +60,8 @@ "repo": "https://github.com/shadcn-ui/ui.git", "ref": "main", "adapter": "claude-skill", - "commit": "ac60ef5c4db4265d71454dd9ecd3f93e255d7211", - "syncedAt": "2026-08-23T16:00:00Z" + "commit": "b9938d94635fca7a4560449713b0b1ba87d77bc6", + "syncedAt": "2026-08-24T16:00:00Z" }, { "id": "frontend-slides", @@ -96,8 +96,8 @@ "repo": "https://github.com/hugohe3/ppt-master.git", "ref": "main", "adapter": "claude-skill", - "commit": "65bb2eca59a36270819caba377097910c4466c6e", - "syncedAt": "2026-08-22T16:00:00Z" + "commit": "e2b4e6a7c43594a66fb477d00e18267ce50bbd93", + "syncedAt": "2026-08-24T16:00:00Z" }, { "id": "grill-me", @@ -105,8 +105,8 @@ "repo": "https://github.com/mattpocock/skills.git", "ref": "main", "adapter": "skill-collection", - "commit": "5b15a47f2d7150f545fbcacbfe381787fc0230dc", - "syncedAt": "2026-08-21T15:59:59Z" + "commit": "6654f6b60cd9d5be8b54c6fafe44346dabeb3b76", + "syncedAt": "2026-08-24T16:00:00Z" }, { "id": "next-skills", @@ -114,8 +114,8 @@ "repo": "https://github.com/vercel/next.js.git", "ref": "canary", "adapter": "skill-collection", - "commit": "cb463843e78506c6b79518af8125af05e6cbac77", - "syncedAt": "2026-08-23T16:00:00Z" + "commit": "30e73d2d14803ff252638caa3d67f047a89e4bb5", + "syncedAt": "2026-08-24T16:00:00Z" } ] } diff --git a/plugins/codex/plugins/grill-me/THIRD_PARTY_SOURCE.json b/plugins/codex/plugins/grill-me/THIRD_PARTY_SOURCE.json index 3e50bbe3..73d1807f 100644 --- a/plugins/codex/plugins/grill-me/THIRD_PARTY_SOURCE.json +++ b/plugins/codex/plugins/grill-me/THIRD_PARTY_SOURCE.json @@ -2,8 +2,8 @@ "sourceId": "grill-me", "repo": "https://github.com/mattpocock/skills.git", "ref": "main", - "commit": "5b15a47f2d7150f545fbcacbfe381787fc0230dc", + "commit": "6654f6b60cd9d5be8b54c6fafe44346dabeb3b76", "adapter": "skill-collection", "sourcePath": "skills/productivity", - "syncedAt": "2026-08-21T15:59:59Z" + "syncedAt": "2026-08-24T16:00:00Z" } diff --git a/plugins/codex/plugins/mcp-playwright/MCP_SOURCE.json b/plugins/codex/plugins/mcp-playwright/MCP_SOURCE.json index 6698ca54..4b8b3f0a 100644 --- a/plugins/codex/plugins/mcp-playwright/MCP_SOURCE.json +++ b/plugins/codex/plugins/mcp-playwright/MCP_SOURCE.json @@ -3,5 +3,5 @@ "name": "playwright浏览器自动化操作", "version": "20260605", "keySource": "none", - "syncedAt": "2026-08-23T16:01:48Z" + "syncedAt": "2026-08-24T16:01:54Z" } diff --git a/plugins/codex/plugins/next-skills/THIRD_PARTY_SOURCE.json b/plugins/codex/plugins/next-skills/THIRD_PARTY_SOURCE.json index 6a7dd530..0c9c791a 100644 --- a/plugins/codex/plugins/next-skills/THIRD_PARTY_SOURCE.json +++ b/plugins/codex/plugins/next-skills/THIRD_PARTY_SOURCE.json @@ -2,8 +2,8 @@ "sourceId": "next-skills", "repo": "https://github.com/vercel/next.js.git", "ref": "canary", - "commit": "cb463843e78506c6b79518af8125af05e6cbac77", + "commit": "30e73d2d14803ff252638caa3d67f047a89e4bb5", "adapter": "skill-collection", "sourcePath": "skills", - "syncedAt": "2026-08-23T16:00:00Z" + "syncedAt": "2026-08-24T16:00:00Z" } diff --git a/plugins/codex/plugins/ppt-master/README.md b/plugins/codex/plugins/ppt-master/README.md index a9ba62ab..0ea357b2 100644 --- a/plugins/codex/plugins/ppt-master/README.md +++ b/plugins/codex/plugins/ppt-master/README.md @@ -49,8 +49,8 @@ Thanks to [Kimi](https://www.kimi.com/code/?aff=ppt-master) for sponsoring this > **Editable is already table stakes — what sets PPT Master apart is native depth.** It hands you a real PowerPoint: slide masters, native shapes, data-backed charts and tables — not flat text boxes, and not a filled-in template. It also does more than lay slides out nicely — it reasons the argument into shape first, then designs; and that native depth keeps **converging with PowerPoint itself**, adding more of its native capabilities release after release. In form, it's a workflow that runs inside any agent-capable AI tool: hand the AI your topic or material, and it generates on your machine — your data stays local, no platform or model lock-in. How it works and where the limits are → [Product Positioning](#product-positioning).

- Live Demo · - Examples · + Live Demo · + Examples · FAQ · Roadmap

@@ -62,42 +62,42 @@ Thanks to [Kimi](https://www.kimi.com/code/?aff=ppt-master) for sponsoring this
- Editorial magazine — Pritzker 2026 architecture review
+ Editorial magazine — Pritzker 2026 architecture review
Editorial Magazine — architecture photography, calm typographic grid
- Flip online · Download .pptx
+ Flip online · Download .pptx
- Data journalism — Global AI Capital 2026
+ Data journalism — Global AI Capital 2026
Data Journalism — Bloomberg-style dark dashboard, chart-driven
- Flip online · Download .pptx
+ Flip online · Download .pptx
- Swiss typographic grid — Grid Systems primer
+ Swiss typographic grid — Grid Systems primer
Swiss Grid — strict modular grid, restrained type, red-accent
- Flip online · Download .pptx
+ Flip online · Download .pptx
- Glassmorphism SaaS — AI Agent engineering demo
+ Glassmorphism SaaS — AI Agent engineering demo
Glassmorphism SaaS — translucent layers, gradient depth, product UI
- Flip online · Download .pptx
+ Flip online · Download .pptx
- Memphis pop — Sugar Rush festival
+ Memphis pop — Sugar Rush festival
Memphis Pop — bold primaries, geometric patterns, playful energy
- Flip online · Download .pptx
+ Flip online · Download .pptx
- Risograph zine — Indie bookstore guide
+ Risograph zine — Indie bookstore guide
Risograph Zine — duotone print, hand-made bookstore-culture feel
- Flip online · Download .pptx
+ Flip online · Download .pptx

- Downloading any .pptx and opening it in PowerPoint is the fastest way to see what it can really do.
Flip through all examples online → · examples/ directory · Why PPT Master?
+ Downloading any .pptx and opening it in PowerPoint is the fastest way to see what it can really do.
Flip through all examples online → · Source repository · Why PPT Master?

--- @@ -126,7 +126,7 @@ Why you'd choose it, and where it isn't the right fit → [Why PPT Master](./doc > ### This is a tool, not a wishing well > `harness + model = agent` — PPT Master only owns the workflow; the model sets the ceiling. Recommended: **Kimi K3 (or Claude) with a large context window (~1M tokens) + AI image generation (`gpt-image-2` or Google `gemini-3.1-flash-image`)**; other models can run the pipeline, with a quality gap. > -> And don't expect a finished, perfect deck in one shot. The tool's value is taking most of the tedious work off your plate; the polishing that's left is yours — a natively editable deck exists precisely so you can keep working on it, not a flat image you can't touch. The cheaper the model, the more there is to do; if results disappoint, upgrade the model first, then check your usage against [Getting Started](./docs/getting-started.md) and the example projects. +> And don't expect a finished, perfect deck in one shot. The tool's value is taking most of the tedious work off your plate; the polishing that's left is yours — a natively editable deck exists precisely so you can keep working on it, not a flat image you can't touch. The cheaper the model, the more there is to do; if results disappoint, upgrade the model first, then check your usage against [Getting Started](./docs/getting-started.md) and the [example projects](https://hugohe3.github.io/ppt-master-examples/). --- @@ -369,7 +369,7 @@ PPT Master reads the current process environment first, then the first `.env` fo | 📖 | [SKILL.md](./skills/ppt-master/SKILL.md) | Core workflow and rules | | 📐 | [Canvas Formats](./skills/ppt-master/references/canvas-formats.md) | PPT 16:9, Xiaohongshu, WeChat, and 10+ formats | | 🛠️ | [Scripts & Tools](./skills/ppt-master/scripts/README.md) | All scripts and commands | -| 💼 | [Examples](./examples/README.md) | All example projects | +| 💼 | [Examples](https://hugohe3.github.io/ppt-master-examples/) | All example projects | | 🏗️ | [Technical Design](./docs/technical-design.md) | Architecture, design philosophy, why SVG | | ❓ | [FAQ](./docs/faq.md) | Model selection, cost, layout troubleshooting, custom templates | diff --git a/plugins/codex/plugins/ppt-master/THIRD_PARTY_SOURCE.json b/plugins/codex/plugins/ppt-master/THIRD_PARTY_SOURCE.json index 7ef7cb0e..e667b105 100644 --- a/plugins/codex/plugins/ppt-master/THIRD_PARTY_SOURCE.json +++ b/plugins/codex/plugins/ppt-master/THIRD_PARTY_SOURCE.json @@ -2,8 +2,8 @@ "sourceId": "ppt-master", "repo": "https://github.com/hugohe3/ppt-master.git", "ref": "main", - "commit": "65bb2eca59a36270819caba377097910c4466c6e", + "commit": "e2b4e6a7c43594a66fb477d00e18267ce50bbd93", "adapter": "claude-skill", "sourcePath": "skills/ppt-master", - "syncedAt": "2026-08-22T16:00:00Z" + "syncedAt": "2026-08-24T16:00:00Z" } diff --git a/plugins/codex/plugins/ppt-master/skills/ppt-master/SKILL.md b/plugins/codex/plugins/ppt-master/skills/ppt-master/SKILL.md index 7099e9b2..50d761ef 100644 --- a/plugins/codex/plugins/ppt-master/skills/ppt-master/SKILL.md +++ b/plugins/codex/plugins/ppt-master/skills/ppt-master/SKILL.md @@ -2,7 +2,7 @@ name: ppt-master description: "多格式源文档到高质量 SVG 页面再导出 PPTX 的多阶段演示文稿生成工作流。" metadata: - version: "4.8.0" + version: "5.0.0" copyright: "Copyright (c) 2025-2026 Hugo He" license: "MIT" official_repository: "https://github.com/hugohe3/ppt-master" diff --git a/plugins/codex/plugins/ppt-master/skills/ppt-master/references/executor-structure.md b/plugins/codex/plugins/ppt-master/skills/ppt-master/references/executor-structure.md index 63d6dfc9..d7fd3d68 100644 --- a/plugins/codex/plugins/ppt-master/skills/ppt-master/references/executor-structure.md +++ b/plugins/codex/plugins/ppt-master/skills/ppt-master/references/executor-structure.md @@ -16,16 +16,46 @@ the grammar does not select `Structure=yes` or create a geometry quota. ## 1. Relationship Atoms -| Atom | Meaning | Encode with | -|---|---|---| -| `order` | Sequence, progression, or rank | Position, numbering, direction, shared path | -| `link` | Dependency, exchange, influence, transition | Proximity/alignment when unmistakable; otherwise an edge | -| `parent` | One unit governs or decomposes into children | Branching, indentation, nesting, scale | -| `membership` | Units belong to a group, stage, lane, or region | Containment, shared field, band, repetition | -| `contrast` | Peers, states, options, or positions compare | Shared baseline, opposing regions, parallel framing | -| `overlap` | Units share a meaningful subset or duty | Intersecting regions plus a clear common area | +**Mandatory — relationship → topology before contour**: For each active atom, +resolve only the path, junctions, enclosure, field partition, shared region, +scale change, and entry / endpoint that carry meaning. Adapt that topology to +the actual units, text load, page role, and active visual system before +selecting contours. -Combine atoms as needed; never force a named business model. Numbers used only as labels do not create a chart. Value-derived position/length/angle/area/radius/width/color routes to [`executor-chart.md`](./executor-chart.md); row-header × column-header facts route to [`executor-table.md`](./executor-table.md). Qualitative lanes use this grammar, but date/duration-driven task-bar `x`/`width` is Gantt Chart geometry. +| Atom | Meaning | Encode with | Generate topology from | +|---|---|---|---| +| `order` | Sequence, progression, or rank | Position, numbering, direction, shared path | One reading path: open / closed; straight / bent / stepped / switchback / coiled; level / rising / falling; constant / expanding / contracting; turns, milestones, endpoint | +| `link` | Dependency, exchange, influence, transition | Proximity / alignment when unmistakable; otherwise an edge | Sources, targets, and junctions: direct, hub, chain, split, merge, exchange, or feedback; let the relationship determine the fewest necessary edges | +| `parent` | One unit governs or decomposes into children | Branching, indentation, nesting, scale | Root, depth, and sibling groups: branch, indent, nest, radiate, or scale; let child roles set fan-out and weight | +| `membership` | Units belong to a group, stage, lane, or region | Containment, shared field, band, repetition | Owning fields: enclose, band, lane, cluster, repeat, or nest; let content set field shape and occupancy | +| `contrast` | Peers, states, options, or positions compare | Shared baseline, opposing regions, parallel framing | Shared invariants plus separation: one or more semantic axes / baselines, opposing or parallel fields, counterweight, divergence, or a before / after boundary | +| `overlap` | Units share a meaningful subset or duty | Intersecting regions plus a clear common area | Exact exclusive / shared regions: paired, chained, or layered intersections; keep every owner and common area legible | + +**Reference — not a constraint**: `Generate topology from` names common +transform axes rather than an exhaustive set. Combine, deform, or invent +page-fit topologies from the active atoms; never recall a named diagram or +reproduce a listed form by default. + +**Mandatory — combined-atom spatial relation before contour**: Combine atoms as +needed; never force a named business model. When multiple atoms share one +construct, resolve whether their topologies share a field, nest, run in +parallel, cross orthogonally, or intersect. Orthogonal overlay applies when +independent dimensions occupy one field, including but not limited to an +`order` path across `membership` lanes and two independent `contrast` +dimensions; preserve each atom's ownership and reading direction. The overlay +never implies equal partitions. + +**Hard rule — no topology from balance alone**: Node count and text fit may +change spacing, route, or wrap. They never justify equal shapes, gaps, or +partitions, mirroring, radial symmetry, or closure that invents peer weight, +centrality, reciprocity, or recurrence. + +Numbers used only as labels do not create a chart. Value-derived position, +length, angle, area, radius, width, or color routes to +[`executor-chart.md`](./executor-chart.md); row-header × column-header facts +route to [`executor-table.md`](./executor-table.md). Qualitative lanes use this +grammar, but date / duration-driven task-bar `x` / `width` is Gantt Chart +geometry. --- diff --git a/plugins/codex/plugins/ppt-master/skills/ppt-master/references/native-shape-authoring.md b/plugins/codex/plugins/ppt-master/skills/ppt-master/references/native-shape-authoring.md index 83f17991..0be0f556 100644 --- a/plugins/codex/plugins/ppt-master/skills/ppt-master/references/native-shape-authoring.md +++ b/plugins/codex/plugins/ppt-master/skills/ppt-master/references/native-shape-authoring.md @@ -149,29 +149,38 @@ owned by the preserve/mirror round-trip contract. - `chartX`, `chartStar`, or `chartPlus` as a substitute for native charts; - logo, icon glyph, illustration, brand contour, or data-chart marks. -### 2.1 Compound page geometry +### 2.1 Topology assembly and compound page geometry -**Trigger**: after the page or prototype's communication / slot job, composition -anchors, and any applicable topology under +**Trigger**: after the page or prototype's communication / slot job, +composition anchors, and any applicable topology under [`executor-structure.md`](./executor-structure.md) are resolved, but before -writing coordinates, resolve the page-scale geometry move that best carries its -background field, content zoning, focal hierarchy, or reading path. Apply §1's -exact-fit decision and compare the useful lenses below. Before repeating stacked -rectangles / rounded cards or uniform equal columns, compare a page-field, -outline, nesting, or continuity construction and the relevant contour family's -exact members. Readability of the first workable arrangement does not close this -gate. -This applies whether the per-page Structure result is `no` or `yes`; it never -creates a decoration requirement. +writing coordinates, run this gate at every active granularity. For +`Structure=yes`, assemble each resolved topology without changing it, using +[`topology-assembly.md`](./topology-assembly.md) as assembly and relative +registration material; for every page, resolve the page-scale geometry move +carrying its background field, +content zoning, focal hierarchy, or reading path. Apply §1's exact-fit decision +and compare the useful lenses below. Before repeating stacked rectangles / +rounded cards or uniform equal columns, compare a page-field, outline, nesting, +or continuity construction and the relevant contour family's exact members. +Readability of the first workable arrangement does not close this gate. This +never creates a decoration requirement. | Pass | Action | Result | |---|---|---| -| Page job | Name the page-scale geometry move and its jobs: surface, boundary, focal mark, shared region, counterweight, or any source-backed direction / reveal. | One composition direction and a small set of functional zones; no shape names yet. | -| Decompose | Separate visible content from geometric atoms. Identify which atoms need independent movement, paint, or reuse and which contour must become one object. | Editable siblings plus any explicit Boolean operand set. | -| Select | Choose the contour family, then its exact member from the job, full native vocabulary, and edge / corner / opening behavior; retain the reader effect when the result is generic or undrawn. | Page-fit native atoms without syntax bias. | -| Compose | Establish page frame, scale, z-order, and negative space with independent atoms. Keep text, images, icons, data marks, and non-merged accents outside Boolean operands. | One page-level geometry system, not a collection of unrelated decorations. | +| Topology / page job | Retain the resolved topology and state its relationship duties; name the page-scale geometry move and its jobs: surface, boundary, focal mark, shared region, counterweight, or any source-backed direction / reveal. | Required relationship duties plus one composition direction and a small set of functional zones; no shape names yet. | +| Decompose | Partition the resolved topology and visible content. Identify components needing independent editing, movement, paint, animation, or reuse; separately identify contour / region semantics that require one object or independently retained Boolean result paths. | Editable siblings plus any explicit Boolean operand set. | +| Select | For each required component, choose the contour family, then its exact member from the job, full native vocabulary, and edge / corner / opening behavior; retain the reader effect when the result is generic or undrawn. | Page-fit native atoms without syntax bias. | +| Compose | Assemble the resolved topology from its independent atoms, then establish page frame, scale, z-order, and negative space. Keep text, images, icons, data marks, and non-merged accents outside Boolean operands. | Relationship-faithful assembly inside one page-level geometry system, not unrelated decorations. | | Materialize | Run the preset helper for each adopted preset. Run the Boolean helper only for contours that require Merge Shapes semantics, then replace those operands with its stdout paths. | Valid authoring SVG ready for native export. | +**Reference — not a constraint**: At topology scale, compare independent pieces, +one body with dividers, overlapping siblings, fitted joints, intentional gaps, +and independently retained `fragment` regions. These are common assembly +strategies rather than an exhaustive set. Choose from component independence +and contour / region semantics; never map a topology name to a shape list or +infer equal size or spacing. + **Composition lenses — not a checklist**: | Lens | Use when it strengthens the resolved page | @@ -432,15 +441,17 @@ reads correctly at slide scale. ### 7.3 Fragment as a modelling tool, not just a boolean -`fragment` (§6) is the fastest way to build layered diagrams from one silhouette: -lay evenly distributed bars across a triangle and fragment it into pyramid tiers; -cross a circle with two bars for a quadrant wheel; slice an annulus radially for -ring segments. Every piece inherits the parent contour, so the assembly stays -perfectly registered — impossible to achieve by drawing the tiers separately. +`fragment` (§6) can build registered layered diagrams from one silhouette: +cross a triangle with topology-derived bars for pyramid tiers; cross a circle +with two topology-derived bars for a quadrant wheel; slice an annulus radially +for ring segments. These are construction examples rather than topology +defaults or an exhaustive set. Every retained piece inherits the parent contour, +so the assembly stays registered without independently redrawing its parts. -Distribute the cutting bars with a constant step before fragmenting; uneven tiers -read as a mistake rather than a hierarchy. Paint the resulting pieces with one -gradient family per §7.1 so the stack reads as a single solid. +Derive cutter count, position, and piece size from the resolved topology. Use a +constant step and one §7.1 gradient family only when equal tier / segment weight +and one-solid reading are semantic; otherwise preserve the required differences +in geometry and paint. ### 7.4 Soft edges without the soft-edge effect diff --git a/plugins/codex/plugins/ppt-master/skills/ppt-master/references/topology-assembly.md b/plugins/codex/plugins/ppt-master/skills/ppt-master/references/topology-assembly.md new file mode 100644 index 00000000..5f81a7ca --- /dev/null +++ b/plugins/codex/plugins/ppt-master/skills/ppt-master/references/topology-assembly.md @@ -0,0 +1,275 @@ +> See [`executor-structure.md`](./executor-structure.md) §1 for relationship → topology and [`native-shape-authoring.md`](./native-shape-authoring.md) §§1–2.1 for contour selection and materialization. + +# Topology Assembly Reference + +Generative material for turning one resolved qualitative topology into editable native-shape components with coherent relative registration before coordinates. + +**Load**: Default and Quick read this reference once with the fixed construction +bundle before SVG authoring and reuse it for every `Structure=yes` assembly. + +**Hard rule — relative constraints, never copyable geometry**: State exact +preset or primitive identities, semantic counts, inter-component relations, and +only the relative geometry required to make the assembly hold together. Never +provide coordinates, concrete sizes or ratios, adjustment values, points, path +data, SVG fragments, copy, color, styling, page composition, or full-page +frames. Materialize every adopted call fresh through +[`native-shape-authoring.md`](./native-shape-authoring.md). + +**Mandatory — two-step assembly test**: Preserve the topology resolved by +[`executor-structure.md`](./executor-structure.md); do not select or rename it +here. Then decide in order: + +1. Split every piece that needs independent editing, movement, paint, animation, or reuse. +2. From outline and region semantics, choose one continuous shape, one shape with dividers, stacked siblings, seamed pieces, overlapping siblings, or independently retained Boolean regions. + +**Mandatory — registration closure**: After the two-step test, resolve only the +relative conditions that make the chosen pieces read as one construct: shared +datum, center, taper, or contour; aligned endpoints and seams; fitted contact or +intentional clearance; nesting margin; overlap depth; joint type; direction +continuity; and cutters that fully cross the parent silhouette. A set of valid +individual shapes is not an assembly until its required contacts and boundaries +register. + +**Hard rule — no assembly lookup**: Never recall a paragraph as a named +structure, resolve a key, or match the page to the nearest mechanism. Generate +from the active atoms and the two-step test; adapt, combine, or invent calls and +relative constraints even when no paragraph resembles the result. + +**Reference — not a constraint**: The mechanisms below are common generative +material rather than an exhaustive set, ranking, recommendation, or allowed +combination list. A primitive, another registered preset, necessary freeform, +or no drawn carrier may still win the current contour comparison. + +**Hard rule — semantic counts, not balance**: Derive every call count from real +units, runs, turns, boundaries, junctions, owners, or retained regions. A count +never implies equal size, spacing, angle, weight, or symmetry. Closure, +mirroring, centrality, taper, interlock, and contact require the relationship +meaning already resolved upstream. + +**Hard rule — information-model boundary**: Value-derived position, length, +width, area, angle, radius, or color remains Chart geometry; row-header × +column-header facts remain Table. The assemblies below carry only qualitative +relationships. + +--- + +## 1. `order` + +For independently owned stages on one directional path, call `chevron` once per +stage and keep the calls as siblings. On a continuous handoff, register each +tip into the next notch and keep the entry / exit direction coherent through +the joint; let the tip enter far enough to close the carrier without occluding +the next stage's independently owned interior. Preserve an intentional gap when +the boundary is a pause, reset, or discontinuity. The per-stage split preserves +independent edit, paint, animation, and reuse duties; continuity versus boundary +semantics decides fitted interlock versus clearance. Stage bodies may vary with +their duties while every adopted joint still fits. + +For a path that wraps and reverses, call `rightArrow` once per forward run, +`leftArrow` once per return run, `downArrow` once per turn, and `roundRect` once +per independently owned stop. Place successive runs on distinct parallel +baselines; align each turn's entry with the preceding run endpoint and its exit +with the next run entry so the path neither doubles back ambiguously nor jumps +across a gap. Attach each stop to its owning run without covering the carrier's +entry, exit, or turn joint. Stops split for independent duties; run and turn +pieces split because each owns a distinct direction / continuation duty. +Contact at a turn means continuation, while clearance means a stage break; run +lengths and offsets follow the resolved path rather than a regular wrap. + +For recurrence with independently owned stages, call `blockArc` once per stage +and seam the siblings into one closed reading path. Make every segment share one +center and registered inner / outer contours; meet adjacent end faces on both +contours so the ring has neither accidental steps nor overlaps. Segment spans +may differ, but their sequence and seam direction must remain legible. Retain a +gap only for a semantic reset. When recurrence is one indivisible duty, call one +`circularArrow` instead. Stage independence decides one versus many pieces; +recurrence and direction decide closure, while shared-center registration makes +the segmented result one carrier rather than unrelated arcs. + +--- + +## 2. `link` + +For a qualitative split or merge, call `roundRect` once per semantic source or +target and `line` once per necessary edge. Call `ellipse` zero or one time for +each junction: omit it when edges merely share a meeting point, and retain it +when the junction is independently editable, reusable, or animatable. Terminate +each edge on its node boundary rather than inside the node; make converging edge +endpoints meet the same junction, preserve a collinear shared trunk when one +exists, and separate branches soon enough that they do not read as one line. +An apparent crossing must either remain visibly non-joining or receive a real +semantic junction. Nodes, edges, and retained junctions split by ownership; +junction and outline semantics decide an implied meeting, one visible node, or +separate passing paths. + +For a two-way exchange owned as one relationship, call one `leftRightArrow` +between two independently owned `roundRect` nodes. Register both arrow ends to +the facing node boundaries and preserve one uninterrupted exchange corridor. +When the two directions need independent editing, paint, animation, or reuse, +call one `rightArrow` and one `leftArrow` as parallel siblings instead. Keep the +two directional corridors distinct, align each endpoint to its own node port, +and prevent either arrowhead from covering the other carrier or a node interior. +Directional responsibility decides whether the edge splits; reciprocal-single- +duty versus two owned transfers decides one contour or two, while endpoint and +corridor registration preserves the exchange. + +--- + +## 3. `parent` + +For enclosure hierarchy or nested bubbles, call `ellipse` once per unit that +owns a visible boundary and nest each child inside its immediate parent. Keep +all ellipses as independent siblings rather than unioning parent and child. +Preserve a visible containment margin around every child, keep its complete +boundary inside the parent, and prevent sibling interiors from touching unless +another active atom requires contact or overlap. Deeper levels may move, +contract, or cluster asymmetrically; they need only preserve unambiguous +containment and enough parent field to remain perceptible. Independent node +ownership requires separate edit, movement, paint, animation, and reuse; +enclosure semantics requires nesting while preserving every outline. + +For an indented decomposition without explicit relationship edges, call +`roundRect` once per independently owned node and `leftBrace` once for each +parent whose child group needs a visible shared boundary. Register siblings to +one depth datum, place the child group deeper than its parent, and make the brace +span only that parent's actual children with its open side facing their shared +entry edge. Nested braces must remain distinct and must not cross a node +boundary. Nodes split for independent duties; the brace remains a separate +shared ownership mark because one outline governs several children. Depth and +group extent, not equal offsets or repeated widths, carry the hierarchy. + +--- + +## 4. `membership` + +For independently owned qualitative lanes, call `rect` once per lane and +`roundRect` once per member that needs a carrier. Keep lane fields as parallel +siblings; make adjacent long boundaries share one seam when membership is +continuous, or preserve a clear gap when the groups are separate fields. Keep +each member's complete contour inside its owning lane with a visible nesting +margin; cross a lane boundary only when the member truly has multiple ownership +or changes owner. If all lanes form one indivisible field and only boundaries +carry meaning, call one `rect` for the field and `line` once per semantic lane +boundary instead. Independent lane / member duties require siblings; one-field +semantics permits dividers. Lane width and occupancy follow responsibility, not +uniform partitioning. + +For membership that needs a light grouping boundary rather than a closed field, +call `leftBrace` once per group and `roundRect` once per independently owned +member. Keep the brace separate, face its open side toward the members, span the +complete member group but no adjacent group, and maintain clearance so neither +the brace nor a nested brace touches a member contour. Members split for +independent edit, movement, paint, animation, and reuse; one brace is the shared +ownership mark because the group boundary itself is one duty. Member count does +not require repeated contours, equal spacing, or equal weight. + +--- + +## 5. `contrast` + +For opposing fields on one comparison baseline, call `rect` once per field when +the sides need independent editing, movement, paint, animation, or reuse. Align +the comparable anchors to a shared baseline and register the facing boundaries +as parallel edges separated by either a semantic gap or one explicit `line` +divider; do not let an incidental offset become a false rank. If the field is +one indivisible duty and only the state boundary matters, call one `rect` plus +one `line` at that boundary instead. Independent side responsibility decides +two siblings versus one divided field; opposing-field semantics decides the +facing joint. Shared framing and counterweight never require equal dimensions +or mirrored content. + +For a tapered rank or support stack, call `trapezoid` once per independently +owned tier and stack the siblings with semantic seams. Register all tier side +edges to one shared taper, make each adjacent seam meet across the complete +current width, and vary tier width monotonically in the rank direction without +assuming equal change, height, or area. Do not substitute one `triangle` plus +divider lines when tiers need independent paint or animation. If the whole +stack is one duty, call one `triangle` plus one `line` per semantic tier +boundary; make every divider cross the interior and terminate on both outer +edges so no tier leaks into the next. If one registered outer silhouette and +independently retained tier regions are both required, call one `triangle` plus +one `rect` strip per tier region, make every strip fully cross the parent +silhouette and meet the next strip without an accidental sliver, run `fragment`, +and retain the required triangle-covered regions. Independent tier duty decides +the split; continuous-outline versus retained-region semantics decides stacked +siblings, dividers, or Boolean regions. Shared taper and complete crossings keep +all three routes registered as one stack. + +--- + +## 6. `overlap` + +When each owner must remain independently editable and the shared area needs no +separate treatment, call `ellipse` once per owner and overlap the calls as +siblings without Boolean materialization. Preserve enough of every complete +owner boundary to identify it, make each intended common area substantial +enough to read as a region rather than an accidental tangent, and avoid full +containment unless subset meaning is active. Choose overlap order and depth so +one owner does not erase another owner or create unintended micro-regions. +Owner responsibility requires the split; outline semantics preserves each +complete boundary, while the common area remains a consequence of overlap. +Paired, chained, or layered ownership does not imply equal ellipses or symmetric +intersection. + +When exclusive and shared regions need independent editing, paint, animation, +or reuse, call `ellipse` once per owner, run `fragment` across the overlapping +set, and retain every required exclusive / shared result as an independent +shape. Register the owner overlaps before fragmenting so their crossings produce +only the semantic regions; eliminate accidental tangencies, hidden owners, and +unintended slivers rather than retaining them as topology. Region +responsibility—not owner count alone—requires the further split; exact retained- +region semantics requires `fragment` rather than ordinary siblings or +`intersect`, which keeps only the common region. Retain no region merely to +complete a symmetric pattern. + +--- + +## 7. Combined atoms + +**Mandatory — compose active topologies, not reference paragraphs**: Generate +each active atom's topology from its own relationship duties, then resolve how +those topologies share a field, nest, run in parallel, cross orthogonally, or +intersect. Preserve each atom's ownership and reading direction. Let one +component carry several atoms only when its edit, movement, paint, animation, +reuse, outline, and region duties never need to separate; otherwise keep the +atom systems as registered siblings. Re-run the two-step test at every contact, +crossing, shared boundary, and retained region. A shared field does not make one +atom dominant, and authoring convenience never justifies merging them. + +For an actual `order` path crossing `membership` lanes, call `rect` once per +independently owned lane, `roundRect` once per process unit, `line` once per +necessary transition, and `line` once per semantic phase boundary. Keep all +lane bands parallel and register the process axis orthogonally across them. +Place each process unit fully inside its current owner's lane; let only a real +responsibility transfer cross a lane seam, and terminate every transition on +the process-unit boundaries rather than using a lane boundary as an edge. +Phase boundaries must cross the lane field coherently and remain distinguishable +from process transitions. If lane regions are one field duty, use one `rect` +plus lane dividers instead of independent lane rectangles. Lane ownership and +process-unit responsibility decide the splits; orthogonal registration keeps +the two atom systems readable without implying equal bands, phases, or steps. + +For two independent `contrast` dimensions partitioning one field, call one +`rect` plus one `line` per axis when only the axes carry meaning. Make both axes +cross the complete field, keep them orthogonal, and let their intersection move +with the semantic thresholds rather than centering it. When the four resulting +regions need independent editing, movement, paint, animation, or reuse, call +four `rect` siblings instead; tile them to one shared outer field with one +continuous seam per axis, no accidental gaps or overlaps, and the same +non-central intersection when required. Axis-only semantics chooses one body +with dividers; region responsibility chooses four siblings. Orthogonality and +continuous seams create one partition while unequal region extents remain +legal. + +For a radial `parent` topology whose ancestry requires explicit `link` edges, +call `ellipse` once per semantic node and `line` once per parent-child relation. +Only after radial organization is resolved upstream, register depth to +concentric bands around the actual root; the bands and sibling sectors may vary +with role and content. Start and end every edge on node boundaries, keep each +branch moving outward to the child's depth, and make shared branch junctions +coincide only when the relations truly share a trunk. Nodes split for +independent content and motion duties; edges remain separate because ancestry +is a relation rather than a shared silhouette. Concentric registration makes +depth legible, while root centrality, even fan-out, mirrored branches, and equal +radial spacing remain forbidden unless the relationship itself requires them. + diff --git a/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/batch_validate.py b/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/batch_validate.py index 0981fe57..72f65b8a 100644 --- a/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/batch_validate.py +++ b/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/batch_validate.py @@ -5,10 +5,8 @@ PPT Master - Batch Project Validation Tool Checks the structural integrity and compliance of multiple projects at once. Usage: - python3 scripts/batch_validate.py examples python3 scripts/batch_validate.py projects python3 scripts/batch_validate.py --all - python3 scripts/batch_validate.py examples projects """ import argparse @@ -265,14 +263,12 @@ def build_parser() -> argparse.ArgumentParser: description="Validate one or more PPT Master project directories.", formatter_class=argparse.RawDescriptionHelpFormatter, epilog="""Examples: - python3 scripts/batch_validate.py examples python3 scripts/batch_validate.py projects - python3 scripts/batch_validate.py examples projects python3 scripts/batch_validate.py --all """, ) parser.add_argument("directories", nargs="*", help="Directories to scan") - parser.add_argument("--all", action="store_true", help="Validate examples and projects") + parser.add_argument("--all", action="store_true", help="Validate the default projects directory") parser.add_argument("--export", action="store_true", help="Write a validation report") parser.add_argument( "--output", @@ -290,7 +286,7 @@ def main(argv: list[str] | None = None) -> int: validator = BatchValidator() if args.all: - directories = ['examples', 'projects'] + directories = ['projects'] else: directories = args.directories diff --git a/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/config.py b/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/config.py index 04820712..61ebd910 100644 --- a/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/config.py +++ b/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/config.py @@ -40,7 +40,6 @@ WORKFLOWS_DIR = PROJECT_ROOT / 'workflows' # Repository root directory REPO_ROOT = PROJECT_ROOT.parent.parent -EXAMPLES_DIR = REPO_ROOT / 'examples' PROJECTS_DIR = REPO_ROOT / 'projects' # Template subdirectories diff --git a/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/docs/project.md b/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/docs/project.md index e04ea7bc..ddd91105 100644 --- a/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/docs/project.md +++ b/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/docs/project.md @@ -216,21 +216,20 @@ python3 scripts/project_utils.py Batch-check project structure and compliance. ```bash -python3 scripts/batch_validate.py examples -python3 scripts/batch_validate.py examples projects +python3 scripts/batch_validate.py projects python3 scripts/batch_validate.py --all -python3 scripts/batch_validate.py examples --export +python3 scripts/batch_validate.py projects --export ``` -Use this for repository-wide health checks before release or cleanup. +Use this for multi-project health checks before release or cleanup. ## `generate_examples_index.py` -Rebuild `examples/README.md` automatically. +Rebuild the examples `README.md` index. The example projects live in the separate +[ppt-master-examples](https://github.com/hugohe3/ppt-master-examples) repository. ```bash -python3 scripts/generate_examples_index.py -python3 scripts/generate_examples_index.py examples +python3 scripts/generate_examples_index.py /ppt-master-examples/examples ``` ## `pptx_template_import.py` diff --git a/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/docs/svg-pipeline.md b/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/docs/svg-pipeline.md index 301fe117..03ef7533 100644 --- a/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/docs/svg-pipeline.md +++ b/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/docs/svg-pipeline.md @@ -729,14 +729,14 @@ Requirements: Validate SVG technical compliance. ```bash -python3 scripts/svg_quality_checker.py examples/project/svg_output/01_cover.svg -python3 scripts/svg_quality_checker.py examples/project/svg_output -python3 scripts/svg_quality_checker.py examples/project -python3 scripts/svg_quality_checker.py examples/project --stage first-page -python3 scripts/svg_quality_checker.py examples/project --stage final --json -python3 scripts/svg_quality_checker.py examples/project --format ppt169 -python3 scripts/svg_quality_checker.py --all examples -python3 scripts/svg_quality_checker.py examples/project --export +python3 scripts/svg_quality_checker.py projects/project/svg_output/01_cover.svg +python3 scripts/svg_quality_checker.py projects/project/svg_output +python3 scripts/svg_quality_checker.py projects/project +python3 scripts/svg_quality_checker.py projects/project --stage first-page +python3 scripts/svg_quality_checker.py projects/project --stage final --json +python3 scripts/svg_quality_checker.py projects/project --format ppt169 +python3 scripts/svg_quality_checker.py --all projects +python3 scripts/svg_quality_checker.py projects/project --export python3 scripts/svg_quality_checker.py path/to/template/templates --template-mode ``` @@ -806,7 +806,7 @@ Use this after SVG generation to inspect existing SVG geometry when manual compa ### `flatten_tspan.py` ```bash -python3 scripts/svg_finalize/flatten_tspan.py examples//svg_output +python3 scripts/svg_finalize/flatten_tspan.py projects//svg_output python3 scripts/svg_finalize/flatten_tspan.py path/to/input.svg path/to/output.svg ``` diff --git a/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/finalize_svg.py b/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/finalize_svg.py index 7156a5bc..0680cf23 100644 --- a/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/finalize_svg.py +++ b/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/finalize_svg.py @@ -24,7 +24,7 @@ Usage: Examples: python3 scripts/finalize_svg.py projects/my_project - python3 scripts/finalize_svg.py examples/ppt169_demo --only embed-icons + python3 scripts/finalize_svg.py projects/ppt169_demo --only embed-icons Processing options: embed-icons - Expand project icons and static same-document diff --git a/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/generate_examples_index.py b/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/generate_examples_index.py index 9a41ab84..e25cb225 100644 --- a/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/generate_examples_index.py +++ b/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/generate_examples_index.py @@ -5,8 +5,10 @@ PPT Master - Examples Index Generator Automatically scans the examples directory and generates a README.md index file. Usage: - python3 scripts/generate_examples_index.py - python3 scripts/generate_examples_index.py examples + python3 scripts/generate_examples_index.py + +The example projects live in the separate ppt-master-examples repository; +pass the path to its examples/ directory. """ import argparse @@ -220,9 +222,7 @@ def build_parser() -> argparse.ArgumentParser: ) parser.add_argument( "examples_dir", - nargs="?", - default="examples", - help="Examples directory (default: examples)", + help="Path to the examples/ directory of the ppt-master-examples repository", ) return parser diff --git a/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/prompt_audit_manifest.json b/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/prompt_audit_manifest.json index 15325e4e..56b2eabe 100644 --- a/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/prompt_audit_manifest.json +++ b/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/prompt_audit_manifest.json @@ -22,7 +22,8 @@ "skills/ppt-master/references/executor-structured.md": 5500, "skills/ppt-master/references/executor-chart.md": 3500, "skills/ppt-master/references/executor-visualization.md": 1250, - "skills/ppt-master/references/executor-structure.md": 1500, + "skills/ppt-master/references/executor-structure.md": 2250, + "skills/ppt-master/references/topology-assembly.md": 3750, "skills/ppt-master/references/executor-table.md": 1000, "skills/ppt-master/references/executor-image.md": 2000, "skills/ppt-master/references/executor-web-image.md": 750, @@ -117,7 +118,7 @@ "skills/ppt-master/templates/README.md", "skills/ppt-master/templates/decks/README.md" ], - "max_tokens": 75000 + "max_tokens": 83000 }, "route.create-template.layout": { "description": "Create Layout standard/fidelity path through Template_Designer, the strategy-triggered native-shape bundle, SVG core, and the structured PPTX interface; mirror excludes the authored bundle.", @@ -229,6 +230,7 @@ "skills/ppt-master/references/preset-shape-vocabulary.md", "skills/ppt-master/references/semantic-svg.md", "skills/ppt-master/references/executor-structure.md", + "skills/ppt-master/references/topology-assembly.md", "skills/ppt-master/references/canvas-formats.md", "skills/ppt-master/references/image-layout-spec.md", "skills/ppt-master/references/image-layout-patterns.md", @@ -384,7 +386,7 @@ "stage.generate.executor.web-image" ], "files": [], - "max_tokens": 130000 + "max_tokens": 145000 }, "route.generate.quick-generate.visualization": { "description": "Quick Generate with complete Chart/Table expression vocabularies already in the fixed planning context, their data-object branches, optional native-data metadata, and chart-coordinate verification before the final checker; the fixed Quick context already carries Shape Composition Grammar. Ceiling raised after BUDGET_LOAD_SET reported 126726 tokens.", @@ -739,6 +741,7 @@ "skills/ppt-master/references/preset-shape-vocabulary.md", "skills/ppt-master/references/semantic-svg.md", "skills/ppt-master/references/executor-structure.md", + "skills/ppt-master/references/topology-assembly.md", { "glob": "skills/ppt-master/references/modes/*.md", "exclude": [ @@ -760,7 +763,7 @@ "allow_repeat": true } ], - "max_tokens": 64000 + "max_tokens": 71000 }, "stage.generate.executor.structured": { "description": "Structured template execution layered on the flat/shared core.", @@ -772,7 +775,7 @@ "skills/ppt-master/references/executor-structured.md", "skills/ppt-master/references/pptx-structure-interface.md" ], - "max_tokens": 74000 + "max_tokens": 85000 }, "stage.generate.image.ai-two-types": { "description": "Incremental AI-image role with the selected preset or exact custom rendering bases and two selected local types. Ceiling raised after BUDGET_LOAD_SET reported 26216 tokens.", @@ -838,7 +841,7 @@ "skills/ppt-master/workflows/stages/resume-execute.md", "skills/ppt-master/references/artifact-ownership.md" ], - "max_tokens": 99000 + "max_tokens": 115000 }, "stage.generate.resume-execute-image": { "description": "Fresh-session resume when the locked resource plan contains image rows.", @@ -848,7 +851,7 @@ "stage.generate.executor.image" ], "files": [], - "max_tokens": 115000 + "max_tokens": 130000 }, "stage.generate.topic-research": { "description": "Gap-targeted factual intake stage.", diff --git a/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/svg_finalize/embed_images.py b/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/svg_finalize/embed_images.py index 482faa86..0a64fc87 100644 --- a/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/svg_finalize/embed_images.py +++ b/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/svg_finalize/embed_images.py @@ -8,8 +8,8 @@ Usage: python3 scripts/svg_finalize/embed_images.py *.svg Examples: - python3 scripts/svg_finalize/embed_images.py examples/ppt169_demo/svg_output/01_cover.svg - python3 scripts/svg_finalize/embed_images.py examples/ppt169_demo/svg_output/*.svg + python3 scripts/svg_finalize/embed_images.py projects/ppt169_demo/svg_output/01_cover.svg + python3 scripts/svg_finalize/embed_images.py projects/ppt169_demo/svg_output/*.svg """ import os diff --git a/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/svg_finalize/svg_rect_to_path.py b/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/svg_finalize/svg_rect_to_path.py index b793bac9..ffb797c1 100644 --- a/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/svg_finalize/svg_rect_to_path.py +++ b/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/svg_finalize/svg_rect_to_path.py @@ -12,8 +12,8 @@ Usage: python3 scripts/svg_finalize/svg_rect_to_path.py -s final -o svg_rounded Examples: - python3 scripts/svg_finalize/svg_rect_to_path.py examples/ppt169_demo - python3 scripts/svg_finalize/svg_rect_to_path.py examples/ppt169_demo/svg_output/01_cover.svg + python3 scripts/svg_finalize/svg_rect_to_path.py projects/ppt169_demo + python3 scripts/svg_finalize/svg_rect_to_path.py projects/ppt169_demo/svg_output/01_cover.svg Output: - Directory mode: outputs to svg_rounded/ subdirectory @@ -240,9 +240,9 @@ def main() -> None: formatter_class=argparse.RawDescriptionHelpFormatter, epilog=''' Examples: - %(prog)s examples/ppt169_demo - %(prog)s examples/ppt169_demo -s final - %(prog)s examples/ppt169_demo/svg_output/01_cover.svg + %(prog)s projects/ppt169_demo + %(prog)s projects/ppt169_demo -s final + %(prog)s projects/ppt169_demo/svg_output/01_cover.svg What it does: Converts elements with rx/ry to equivalent elements. diff --git a/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/svg_quality/cli.py b/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/svg_quality/cli.py index 374ece6a..6326c1cf 100644 --- a/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/svg_quality/cli.py +++ b/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/svg_quality/cli.py @@ -61,11 +61,11 @@ def print_usage() -> None: print(" python3 scripts/svg_quality_checker.py ") print(" python3 scripts/svg_quality_checker.py ") print(" python3 scripts/svg_quality_checker.py /templates --template-mode") - print(" python3 scripts/svg_quality_checker.py --all examples") + print(" python3 scripts/svg_quality_checker.py --all projects") print("\nExamples:") - print(" python3 scripts/svg_quality_checker.py examples/project/svg_output/slide_01.svg") - print(" python3 scripts/svg_quality_checker.py examples/project/svg_output") - print(" python3 scripts/svg_quality_checker.py examples/project") + print(" python3 scripts/svg_quality_checker.py projects/project/svg_output/slide_01.svg") + print(" python3 scripts/svg_quality_checker.py projects/project/svg_output") + print(" python3 scripts/svg_quality_checker.py projects/project") print(" python3 scripts/svg_quality_checker.py templates/layouts/presentation_core/templates --template-mode") print(" python3 scripts/svg_quality_checker.py templates/decks/中国电信/templates --template-mode") print("\nOptions:") @@ -142,7 +142,7 @@ def main() -> None: if stage != "final": print("[ERROR] --stage first-page does not support --all") sys.exit(1) - base_dir = sys.argv[2] if len(sys.argv) > 2 else "examples" + base_dir = sys.argv[2] if len(sys.argv) > 2 else "projects" from project_utils import find_all_projects projects = find_all_projects(base_dir) diff --git a/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/svg_quality_checker.py b/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/svg_quality_checker.py index 60133912..0c7c4001 100644 --- a/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/svg_quality_checker.py +++ b/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/svg_quality_checker.py @@ -7,7 +7,7 @@ Implementation lives in ``svg_quality/``. Usage: python3 scripts/svg_quality_checker.py python3 scripts/svg_quality_checker.py - python3 scripts/svg_quality_checker.py --all examples + python3 scripts/svg_quality_checker.py --all projects Examples: python3 scripts/svg_quality_checker.py projects/demo --stage final --json diff --git a/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/svg_to_pptx/pptx_package/cli.py b/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/svg_to_pptx/pptx_package/cli.py index aaeb7b8b..cb1824f1 100644 --- a/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/svg_to_pptx/pptx_package/cli.py +++ b/plugins/codex/plugins/ppt-master/skills/ppt-master/scripts/svg_to_pptx/pptx_package/cli.py @@ -817,13 +817,13 @@ def main(argv: list[str] | None = None) -> int: formatter_class=argparse.RawDescriptionHelpFormatter, epilog=f''' Examples: - %(prog)s examples/ppt169_demo # Default: native pptx -> exports/, svg_output -> backup// - %(prog)s examples/ppt169_demo -o out.pptx # Explicit path (no backup/) + %(prog)s projects/ppt169_demo # Default: native pptx -> exports/, svg_output -> backup// + %(prog)s projects/ppt169_demo -o out.pptx # Explicit path (no backup/) %(prog)s projects/quick_generate_demo --quick-generate # Lockless flat export with normal postflight # Disable transition / change transition effect - %(prog)s examples/ppt169_demo -t none - %(prog)s examples/ppt169_demo -t push --transition-duration 1.0 + %(prog)s projects/ppt169_demo -t none + %(prog)s projects/ppt169_demo -t push --transition-duration 1.0 SVG source directory (-s): output - svg_output (hand-authored source; native default) @@ -870,7 +870,7 @@ Speaker notes: - Disabled by default in Quick Generate; use --with-notes to enable Recorded narration: - %(prog)s examples/ppt169_demo --recorded-narration audio \\ + %(prog)s projects/ppt169_demo --recorded-narration audio \\ --inherit-motion-from validation/.report.json - Keeps speaker notes when enabled - Prepares PowerPoint recorded timings and narrations @@ -884,7 +884,7 @@ Recorded narration: - Sets slide auto-advance from audio duration so video export can use "recorded timings and narrations" - Rejects on-click object animations; use after-previous or with-previous - %(prog)s examples/ppt169_demo --narration-audio-dir audio + %(prog)s projects/ppt169_demo --narration-audio-dir audio - Lower-level audio embedding: embeds matched files but allows partial matches - Use only when you do not need a complete recorded-timings export ''', diff --git a/plugins/codex/plugins/ppt-master/skills/ppt-master/workflows/generate-pptx.md b/plugins/codex/plugins/ppt-master/skills/ppt-master/workflows/generate-pptx.md index a2187b3c..e4810600 100644 --- a/plugins/codex/plugins/ppt-master/skills/ppt-master/workflows/generate-pptx.md +++ b/plugins/codex/plugins/ppt-master/skills/ppt-master/workflows/generate-pptx.md @@ -617,6 +617,7 @@ Read ${SKILL_DIR}/references/svg-effects.md # REQUIRED: §6.1 job Read ${SKILL_DIR}/references/native-shape-authoring.md # REQUIRED: native-shape selection and Boolean construction Read ${SKILL_DIR}/references/preset-shape-vocabulary.md # REQUIRED: complete 187-name authoring vocabulary Read ${SKILL_DIR}/references/executor-structure.md # REQUIRED: qualitative relationship and topology grammar +Read ${SKILL_DIR}/references/topology-assembly.md # REQUIRED: topology assembly and relative-registration material Read ${SKILL_DIR}/references/semantic-svg.md # REQUIRED: semantic metadata boundary Read ${SKILL_DIR}/references/modes/.md # one preset id, or each `mode_references` id Read ${SKILL_DIR}/references/visual-styles/.md # one preset id, or each `visual_style_references` id diff --git a/plugins/codex/plugins/ppt-master/skills/ppt-master/workflows/profiles/quick-generate.md b/plugins/codex/plugins/ppt-master/skills/ppt-master/workflows/profiles/quick-generate.md index 3ba4f1e7..8a1548ca 100644 --- a/plugins/codex/plugins/ppt-master/skills/ppt-master/workflows/profiles/quick-generate.md +++ b/plugins/codex/plugins/ppt-master/skills/ppt-master/workflows/profiles/quick-generate.md @@ -525,7 +525,8 @@ not route among them one file at a time: [`native-shape-authoring.md`](../../references/native-shape-authoring.md), [`preset-shape-vocabulary.md`](../../references/preset-shape-vocabulary.md), [`semantic-svg.md`](../../references/semantic-svg.md), -and [`executor-structure.md`](../../references/executor-structure.md). Retain +[`executor-structure.md`](../../references/executor-structure.md), +and [`topology-assembly.md`](../../references/topology-assembly.md). Retain only the mode/style detail files selected during one-pass design resolution and realize that chosen direction. Exact `*_references` define the catalog material actually used by a custom: apply one basis under its behavior, synthesize several @@ -543,11 +544,13 @@ and [`svg-image-embedding.md`](../../references/svg-image-embedding.md); add Reread only after a known file change or context invalidation. `executor-structure.md` is loaded once before all SVG authoring so every -`Structure=yes` result can apply its qualitative topology grammar. -`native-shape-authoring.md` independently owns contour selection and compound -page geometry for both Structure results. Reuse both throughout the valid -execution context; before P01, read the complete preset vocabulary once, then -reread only after a known file change or context invalidation. +`Structure=yes` result can resolve its qualitative topology. +`topology-assembly.md` supplies assembly and relative-registration material for +that resolved topology; `native-shape-authoring.md` owns the two-step assembly +gate, contour selection, and compound page geometry for both Structure results. +Reuse all three throughout the valid execution context; before P01, read the +complete preset vocabulary once, then reread only after a known file change or +context invalidation. **Mandatory — per-image-page composition decision**: For every page with one or more images, after its content and communication move are diff --git a/plugins/codex/plugins/shadcn/THIRD_PARTY_SOURCE.json b/plugins/codex/plugins/shadcn/THIRD_PARTY_SOURCE.json index be590496..2f228dfd 100644 --- a/plugins/codex/plugins/shadcn/THIRD_PARTY_SOURCE.json +++ b/plugins/codex/plugins/shadcn/THIRD_PARTY_SOURCE.json @@ -2,8 +2,8 @@ "sourceId": "shadcn", "repo": "https://github.com/shadcn-ui/ui.git", "ref": "main", - "commit": "ac60ef5c4db4265d71454dd9ecd3f93e255d7211", + "commit": "b9938d94635fca7a4560449713b0b1ba87d77bc6", "adapter": "claude-skill", "sourcePath": "skills/shadcn", - "syncedAt": "2026-08-23T16:00:00Z" + "syncedAt": "2026-08-24T16:00:00Z" } diff --git a/plugins/codex/plugins/taste-skill/THIRD_PARTY_SOURCE.json b/plugins/codex/plugins/taste-skill/THIRD_PARTY_SOURCE.json index 9bf7a9d1..cb73cc29 100644 --- a/plugins/codex/plugins/taste-skill/THIRD_PARTY_SOURCE.json +++ b/plugins/codex/plugins/taste-skill/THIRD_PARTY_SOURCE.json @@ -2,8 +2,8 @@ "sourceId": "taste-skill", "repo": "https://github.com/Leonxlnx/taste-skill.git", "ref": "main", - "commit": "72e299530e2eb31ed8da06181bc19f6c18a00821", + "commit": "ccbc15639c97057cbfcf32ecebc38ef716e4bb37", "adapter": "skill-collection", "sourcePath": "skills", - "syncedAt": "2026-08-22T16:00:00Z" + "syncedAt": "2026-08-24T16:00:00Z" } diff --git a/plugins/codex/plugins/ui-ux-pro-max/README.md b/plugins/codex/plugins/ui-ux-pro-max/README.md index bcf78f66..70fd535a 100755 --- a/plugins/codex/plugins/ui-ux-pro-max/README.md +++ b/plugins/codex/plugins/ui-ux-pro-max/README.md @@ -256,6 +256,7 @@ uipro init --ai kilocode # KiloCode uipro init --ai warp # Warp uipro init --ai augment # Augment uipro init --ai codewhale # CodeWhale +uipro init --ai openclaw # OpenClaw uipro init --ai universal # Universal / Agent Standard (.agents/skills/) uipro init --ai all # All assistants ``` diff --git a/plugins/codex/plugins/ui-ux-pro-max/THIRD_PARTY_SOURCE.json b/plugins/codex/plugins/ui-ux-pro-max/THIRD_PARTY_SOURCE.json index 67ca062d..fc8592eb 100644 --- a/plugins/codex/plugins/ui-ux-pro-max/THIRD_PARTY_SOURCE.json +++ b/plugins/codex/plugins/ui-ux-pro-max/THIRD_PARTY_SOURCE.json @@ -2,8 +2,8 @@ "sourceId": "ui-ux-pro-max", "repo": "https://github.com/nextlevelbuilder/ui-ux-pro-max-skill.git", "ref": "main", - "commit": "bc826e2267a36d98a2dcf5231e16c30ff546770f", + "commit": "13179471f97162b3297558621a76682438caf017", "adapter": "claude-skill", "sourcePath": ".claude/skills/ui-ux-pro-max", - "syncedAt": "2026-08-20T16:00:00Z" + "syncedAt": "2026-08-24T16:00:00Z" }