opencode-skills-collection 4.0.4 → 4.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/bundled-skills/.antigravity-install-manifest.json +4 -1
  2. package/bundled-skills/antigravity-maintainer-batch-release/SKILL.md +150 -0
  3. package/bundled-skills/create-pr/SKILL.md +4 -4
  4. package/bundled-skills/docs/README.md +1 -0
  5. package/bundled-skills/docs/contributors/quality-bar.md +1 -2
  6. package/bundled-skills/docs/integrations/jetski-cortex.md +5 -3
  7. package/bundled-skills/docs/integrations/jetski-gemini-loader/README.md +3 -1
  8. package/bundled-skills/docs/maintainers/aas-agent-first-control-plane-preview-profile.md +141 -0
  9. package/bundled-skills/docs/maintainers/aas-agent-first-control-plane-v1-design.md +302 -0
  10. package/bundled-skills/docs/maintainers/aas-agent-first-control-plane-v1-goal.md +169 -0
  11. package/bundled-skills/docs/maintainers/aas-agent-first-control-plane-v1-worklog.md +102 -0
  12. package/bundled-skills/docs/maintainers/audit.md +3 -8
  13. package/bundled-skills/docs/maintainers/legacy-redirect-bridge.md +46 -0
  14. package/bundled-skills/docs/maintainers/merge-batch.md +3 -7
  15. package/bundled-skills/docs/maintainers/merging-prs.md +1 -1
  16. package/bundled-skills/docs/maintainers/pr-autonomy.md +2 -3
  17. package/bundled-skills/docs/maintainers/release-process.md +12 -5
  18. package/bundled-skills/docs/maintainers/repo-growth-seo.md +16 -14
  19. package/bundled-skills/docs/maintainers/skills-update-guide.md +1 -1
  20. package/bundled-skills/docs/users/aas-core.md +147 -0
  21. package/bundled-skills/docs/users/agentic-awesome-skills-vs-awesome-claude-skills.md +10 -9
  22. package/bundled-skills/docs/users/ai-agent-skills.md +22 -19
  23. package/bundled-skills/docs/users/best-claude-code-skills-github.md +8 -8
  24. package/bundled-skills/docs/users/best-cursor-skills-github.md +5 -5
  25. package/bundled-skills/docs/users/bundles.md +3 -1
  26. package/bundled-skills/docs/users/claude-code-skills.md +23 -7
  27. package/bundled-skills/docs/users/codex-cli-skills.md +30 -13
  28. package/bundled-skills/docs/users/discovery-manifest.md +6 -3
  29. package/bundled-skills/docs/users/faq.md +37 -10
  30. package/bundled-skills/docs/users/gemini-cli-skills.md +1 -1
  31. package/bundled-skills/docs/users/getting-started.md +24 -10
  32. package/bundled-skills/docs/users/kiro-integration.md +1 -1
  33. package/bundled-skills/docs/users/plugins.md +15 -3
  34. package/bundled-skills/docs/users/skills-vs-mcp-tools.md +68 -49
  35. package/bundled-skills/docs/users/usage.md +38 -25
  36. package/bundled-skills/docs/users/visual-guide.md +28 -22
  37. package/bundled-skills/docs/vietnamese/AAS_CORE.vi.md +28 -0
  38. package/bundled-skills/docs/vietnamese/README.vi.md +10 -6
  39. package/bundled-skills/game-development/2d-games/SKILL.md +22 -19
  40. package/bundled-skills/game-development/SKILL.md +27 -35
  41. package/bundled-skills/game-development/engine-selection/SKILL.md +115 -0
  42. package/bundled-skills/game-development/web-games/SKILL.md +47 -45
  43. package/bundled-skills/git-advanced-workflows/SKILL.md +1 -11
  44. package/bundled-skills/git-pushing/SKILL.md +4 -4
  45. package/bundled-skills/modellix/SKILL.md +80 -0
  46. package/bundled-skills/pptx-deck-creation/SKILL.md +15 -7
  47. package/bundled-skills/pptx-deck-creation/references/audit-checklist.md +7 -3
  48. package/bundled-skills/pptx-deck-creation/references/ooxml-parsing.md +58 -0
  49. package/bundled-skills/pptx-deck-creation/references/{python-snippets.md → reference-deck-analysis-patterns.md} +1 -1
  50. package/bundled-skills/pptx-deck-creation/references/reference-deck-analysis.md +30 -8
  51. package/bundled-skills/pptx-deck-creation/references/visual-asset-adapters.md +23 -13
  52. package/bundled-skills/pr-writer/SKILL.md +2 -2
  53. package/bundled-skills/repo-maintainer/SKILL.md +4 -2
  54. package/bundled-skills/tools-page-seo-optimizer/SKILL.md +6 -6
  55. package/package.json +1 -1
  56. package/skills_index.json +86 -7
  57. package/bundled-skills/docs/contributors/skill-scoring.md +0 -235
@@ -0,0 +1,115 @@
1
+ ---
2
+ name: engine-selection
3
+ description: >-
4
+ Selects game engines and frameworks by platform, genre, and architecture
5
+ (full canvas shell vs hybrid DOM shell + guest viewport). Covers Phaser,
6
+ PixiJS, Kaplay, Canvas/WebGL, Three.js, Babylon.js, Godot, Unity, Ink, Twine.
7
+ Use when choosing a stack or comparing runtimes before implementation.
8
+ risk: safe
9
+ source: self
10
+ date_added: "2026-07-17"
11
+ ---
12
+
13
+ # Engine selection
14
+
15
+ > Pick tools that match **delivery target**, **interaction model**, and **team constraints**. Engines serve the game type — not the reverse.
16
+
17
+ ---
18
+
19
+ ## Fit questions (ask first)
20
+
21
+ 1. **Platform:** Web, mobile, PC, console, VR?
22
+ 2. **Primary loop:** Action/physics, turn-based, narrative branch, management/UI, hybrid?
23
+ 3. **Presentation:** Full-screen canvas, DOM/UI chrome, or both?
24
+ 4. **Toolchain:** No-build / ESM OK, or bundler + editor OK?
25
+ 5. **Authoring:** Code-only, or designers need Twine/Ink/Godot/Unity editors?
26
+
27
+ ---
28
+
29
+ ## Architecture patterns
30
+
31
+ | Pattern | When | Notes |
32
+ |---------|------|-------|
33
+ | **Full engine shell** | Game *is* the canvas/scene | Phaser, Godot, Unity, Kaplay as app root |
34
+ | **Renderer + custom logic** | You want draw power, own gameplay | PixiJS, Three.js + your systems |
35
+ | **Hybrid shell + guest** | Dense UI/text + occasional skill-checks | DOM/app shell; mount canvas engines in modals/viewports only |
36
+ | **Narrative runtime** | Branching prose is the product | Ink, Twine; host chrome separately |
37
+ | **Content-as-data** | Levels/events authored as packs | JSON/YAML + thin loader; engine optional |
38
+
39
+ ---
40
+
41
+ ## Web — decision tree
42
+
43
+ ```
44
+ What type of game?
45
+
46
+ ├── Mostly DOM / panels / forms / text UI
47
+ │ ├── + small arcade/spatial challenges
48
+ │ │ └── Hybrid: custom shell + guest
49
+ │ │ Raw Canvas/WebGL → Kaplay → Phaser → PixiJS
50
+ │ └── + branching story
51
+ │ └── Ink (inkjs) or Twine export → host in DOM
52
+
53
+ ├── Full-screen 2D game
54
+ │ ├── Full gameplay features (scenes, physics, input)
55
+ │ │ └── Phaser 4 (or Kaplay if you want lighter/faster prototype)
56
+ │ └── Mostly rendering / custom systems
57
+ │ └── PixiJS 8 (or Raw Canvas/WebGL if tiny scope)
58
+
59
+ └── Full-screen 3D game
60
+ ├── Full engine / physics / XR
61
+ │ └── Babylon.js
62
+ └── Rendering-focused / lighter
63
+ └── Three.js
64
+ ```
65
+
66
+ ---
67
+
68
+ ## Quick comparison (web & common exports)
69
+
70
+ | Tool | Type | Best for | Watch-outs |
71
+ |------|------|----------|------------|
72
+ | **Raw Canvas / WebGL** | 2D/low-level | Tiny games, learning, no framework tax | You own everything |
73
+ | **Kaplay** (ex-Kaboom) | 2D toolkit | Fast prototypes, jam games | Less “full product” structure than Phaser |
74
+ | **Phaser 4** | 2D engine | Complete 2D features | Heavier; often bundled |
75
+ | **PixiJS 8** | 2D renderer | Performance, custom game code | Not a full gameplay framework alone |
76
+ | **Three.js** | 3D renderer | Visuals, lightweight 3D | You add gameplay systems |
77
+ | **Babylon.js** | 3D engine | Fuller 3D + XR | Heavier than Three for simple scenes |
78
+ | **Ink + inkjs** | Narrative | Complex branching prose | Weak for real-time multi-entity sims |
79
+ | **Twine / Twison / TweeJS** | Narrative | Educator-friendly branches | Export/host glue; not a physics engine |
80
+ | **Godot 4** | Full engine | 2D/3D indie, open source | Web export iteration cost |
81
+ | **Unity** | Full engine | Large teams, multi-platform | Heavy for simple web UI games |
82
+
83
+ Editor-first web shells (**Construct**, **GDevelop**) fit visual prototyping; weaker when you need versioned code-first content pipelines.
84
+
85
+ ---
86
+
87
+ ## Non-web defaults (see also platform skills)
88
+
89
+ | Target | Lean toward |
90
+ |--------|-------------|
91
+ | PC indie / open source | Godot 4 |
92
+ | PC large team / multi-platform | Unity |
93
+ | Mobile | See `game-development/mobile-games` (touch, stores, battery) |
94
+ | VR/AR | See `game-development/vr-ar` (+ Babylon/Three on web) |
95
+
96
+ ---
97
+
98
+ ## Anti-patterns
99
+
100
+ | Don't | Do |
101
+ |-------|-----|
102
+ | Choose Unity/Godot for a form-heavy browser tool | Prefer DOM/hybrid |
103
+ | Force Ink to run real-time concurrent simulations | Use narrative tools for branches; custom/sim code for clocks & entities |
104
+ | Use Phaser as “the whole app” when the surrounding UI is HTML | Prefer a hybrid guest viewport |
105
+ | Optimize for WebGPU on day one | Ship WebGL; add WebGPU + fallback when needed |
106
+
107
+ ## When to Use
108
+
109
+ Use when choosing or comparing game engines/frameworks before implementation, especially for hybrid DOM+canvas or narrative-first products.
110
+
111
+ ## Limitations
112
+
113
+ - Does not replace platform skills (`game-development/web-games`, `game-development/pc-games`, …).
114
+ - Final choice still depends on team skill and shipping constraints.
115
+ - Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
@@ -1,6 +1,10 @@
1
1
  ---
2
2
  name: web-games
3
- description: "Web browser game development principles. Framework selection, WebGPU, optimization, PWA."
3
+ description: >-
4
+ Web browser game development. Framework selection (Phaser, PixiJS, Kaplay,
5
+ Canvas/WebGL, Three.js, Babylon.js), hybrid DOM+canvas, WebGPU, optimization,
6
+ PWA, audio unlock. Use when building HTML5/WebGL/WebGPU games or choosing a
7
+ browser runtime.
4
8
  risk: unknown
5
9
  source: community
6
10
  date_added: "2026-02-27"
@@ -8,7 +12,7 @@ date_added: "2026-02-27"
8
12
 
9
13
  # Web Browser Game Development
10
14
 
11
- > Framework selection and browser-specific principles.
15
+ > Framework selection and browser-specific principles. For stack choice details see `game-development/engine-selection`.
12
16
 
13
17
  ---
14
18
 
@@ -20,25 +24,43 @@ date_added: "2026-02-27"
20
24
  What type of game?
21
25
 
22
26
  ├── 2D Game
23
- │ ├── Full game engine features? → Phaser
24
- └── Raw rendering power? PixiJS
27
+ │ ├── Full game engine features? → Phaser 4
28
+ ├── Fast prototype / jam? Kaplay
29
+ │ ├── Raw rendering power? → PixiJS 8
30
+ │ └── Tiny / no dependency? → Raw Canvas / WebGL
25
31
 
26
32
  ├── 3D Game
27
33
  │ ├── Full engine (physics, XR)? → Babylon.js
28
- │ └── Rendering focused? → Three.js
34
+ │ └── Rendering focused? → Three.js
29
35
 
30
- └── Hybrid / Canvas
31
- └── Custom Raw Canvas/WebGL
36
+ ├── Hybrid (DOM UI + canvas moments)
37
+ └── Custom shell + guest viewport
38
+ │ (Canvas/Kaplay/Phaser/Pixi inside a region/modal)
39
+
40
+ └── Narrative-first
41
+ └── Ink (inkjs) or Twine export + DOM host
32
42
  ```
33
43
 
34
- ### Comparison (2025)
44
+ ### Comparison
35
45
 
36
46
  | Framework | Type | Best For |
37
47
  |-----------|------|----------|
38
- | **Phaser 4** | 2D | Full game features |
39
- | **PixiJS 8** | 2D | Rendering, UI |
40
- | **Three.js** | 3D | Visualizations, lightweight |
41
- | **Babylon.js 7** | 3D | Full engine, XR |
48
+ | **Raw Canvas / WebGL** | 2D / low-level | Small scope, full control |
49
+ | **Kaplay** | 2D toolkit | Rapid prototypes |
50
+ | **Phaser 4** | 2D engine | Full game features |
51
+ | **PixiJS 8** | 2D renderer | Rendering, custom systems |
52
+ | **Three.js** | 3D renderer | Visualizations, lightweight 3D |
53
+ | **Babylon.js** | 3D engine | Full engine, XR |
54
+
55
+ ### Hybrid shell + guest
56
+
57
+ Use when chrome is HTML (menus, inventories, text, dashboards) but bursts of play need a canvas:
58
+
59
+ 1. Mount guest in a container; pass context in.
60
+ 2. Run a **local** game loop in the guest.
61
+ 3. Return results (score, pass/fail); **destroy** guest (RAF, listeners, GL context as needed).
62
+
63
+ Do not let the guest own global app routing unless the product *is* a full-screen game.
42
64
 
43
65
  ---
44
66
 
@@ -56,8 +78,8 @@ What type of game?
56
78
 
57
79
  ### Decision
58
80
 
59
- - **New projects**: Use WebGPU with WebGL fallback
60
- - **Legacy support**: Start with WebGL
81
+ - **New GPU-heavy projects**: Use WebGPU with WebGL fallback
82
+ - **Broad legacy / simple 2D**: Start with WebGL or Canvas 2D
61
83
  - **Feature detection**: Check `navigator.gpu`
62
84
 
63
85
  ---
@@ -69,7 +91,7 @@ What type of game?
69
91
  | Constraint | Strategy |
70
92
  |------------|----------|
71
93
  | No local file access | Asset bundling, CDN |
72
- | Tab throttling | Pause when hidden |
94
+ | Tab throttling | Pause when hidden (`visibilitychange`) |
73
95
  | Mobile data limits | Compress assets |
74
96
  | Audio autoplay | Require user interaction |
75
97
 
@@ -85,16 +107,12 @@ What type of game?
85
107
 
86
108
  ## 4. Asset Strategy
87
109
 
88
- ### Compression Formats
89
-
90
110
  | Type | Format |
91
111
  |------|--------|
92
- | Textures | KTX2 + Basis Universal |
112
+ | Textures | KTX2 + Basis Universal (or WebP/PNG for simple 2D) |
93
113
  | Audio | WebM/Opus (fallback: MP3) |
94
114
  | 3D Models | glTF + Draco/Meshopt |
95
115
 
96
- ### Loading Strategy
97
-
98
116
  | Phase | Load |
99
117
  |-------|------|
100
118
  | Startup | Core assets, <2MB |
@@ -105,35 +123,16 @@ What type of game?
105
123
 
106
124
  ## 5. PWA for Games
107
125
 
108
- ### Benefits
109
-
110
- - Offline play
111
- - Install to home screen
112
- - Full screen mode
113
- - Push notifications
114
-
115
- ### Requirements
116
-
117
- - Service worker for caching
118
- - Web app manifest
119
- - HTTPS
126
+ **Benefits:** offline play, install, fullscreen, optional push.
127
+ **Requirements:** service worker, web app manifest, HTTPS.
120
128
 
121
129
  ---
122
130
 
123
131
  ## 6. Audio Handling
124
132
 
125
- ### Browser Requirements
126
-
127
- - Audio context requires user interaction
128
- - Create AudioContext on first click/tap
129
- - Resume context if suspended
130
-
131
- ### Best Practices
132
-
133
- - Use Web Audio API
134
- - Pool audio sources
135
- - Preload common sounds
136
- - Compress with WebM/Opus
133
+ - Create/resume `AudioContext` on first click/tap
134
+ - Prefer Web Audio API; pool sources; preload common SFX
135
+ - Compress with WebM/Opus when possible
137
136
 
138
137
  ---
139
138
 
@@ -146,15 +145,18 @@ What type of game?
146
145
  | Block on audio load | Lazy load audio |
147
146
  | Skip compression | Compress everything |
148
147
  | Assume fast connection | Handle slow networks |
148
+ | Leave canvas engines running off-screen | Tear down guests |
149
149
 
150
150
  ---
151
151
 
152
152
  > **Remember:** Browser is the most accessible platform. Respect its constraints.
153
153
 
154
154
  ## When to Use
155
- This skill is applicable to execute the workflow or actions described in the overview.
155
+
156
+ Use when building HTML5/WebGL/WebGPU games, choosing a browser runtime, or wiring hybrid DOM+canvas guests.
156
157
 
157
158
  ## Limitations
159
+
158
160
  - Use this skill only when the task clearly matches the scope described above.
159
161
  - Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
160
162
  - Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
@@ -20,9 +20,8 @@ Master advanced Git techniques to maintain clean history, collaborate effectivel
20
20
  - Clarify goals, constraints, and required inputs.
21
21
  - Apply relevant best practices and validate outcomes.
22
22
  - Provide actionable steps and verification.
23
- - If detailed examples are required, open `resources/implementation-playbook.md`.
24
23
 
25
- ## Use this skill when
24
+ ## When to Use
26
25
 
27
26
  - Cleaning up commit history before merging
28
27
  - Applying specific commits across branches
@@ -405,15 +404,6 @@ git reflog
405
404
  git branch recovered-branch abc123
406
405
  ```
407
406
 
408
- ## Resources
409
-
410
- - **references/git-rebase-guide.md**: Deep dive into interactive rebase
411
- - **references/git-conflict-resolution.md**: Advanced conflict resolution strategies
412
- - **references/git-history-rewriting.md**: Safely rewriting Git history
413
- - **assets/git-workflow-checklist.md**: Pre-PR cleanup checklist
414
- - **assets/git-aliases.md**: Useful Git aliases for advanced workflows
415
- - **scripts/git-clean-branches.sh**: Clean up merged and stale branches
416
-
417
407
  ## Limitations
418
408
  - Use this skill only when the task clearly matches the scope described above.
419
409
  - Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
@@ -32,22 +32,22 @@ Do not use this skill for a maintainer merge batch, canonical synchronization, v
32
32
 
33
33
  ## Workflow
34
34
 
35
- Use the helper only after the safety gates pass. With no paths it stages all current changes, so use that form only when every dirty file belongs to the requested commit:
35
+ Use the helper only after the safety gates pass. Resolve the installed directory that contains this `SKILL.md` and substitute its absolute path for `<skill-directory>` below; do not assume the current working directory is the catalog repository. With no paths the helper stages all current changes, so use that form only when every dirty file belongs to the requested commit:
36
36
 
37
37
  ```bash
38
- bash skills/git-pushing/scripts/smart_commit.sh
38
+ bash "<skill-directory>/scripts/smart_commit.sh"
39
39
  ```
40
40
 
41
41
  With custom message:
42
42
 
43
43
  ```bash
44
- bash skills/git-pushing/scripts/smart_commit.sh "feat: add feature"
44
+ bash "<skill-directory>/scripts/smart_commit.sh" "feat: add feature"
45
45
  ```
46
46
 
47
47
  To stage only named files, pass them after `--`:
48
48
 
49
49
  ```bash
50
- bash skills/git-pushing/scripts/smart_commit.sh "fix: scope change" -- path/to/file
50
+ bash "<skill-directory>/scripts/smart_commit.sh" "fix: scope change" -- path/to/file
51
51
  ```
52
52
 
53
53
  The helper handles isolated staging, commit creation, and push; it does not replace validation, release tooling, or a rebase required by an advanced upstream branch.
@@ -0,0 +1,80 @@
1
+ ---
2
+ name: modellix
3
+ description: "Integrate Modellix unified API/CLI for async AI image and video generation (model run --wait, task download)."
4
+ category: creative
5
+ risk: critical
6
+ source: community
7
+ source_repo: Modellix/modellix-skill
8
+ source_type: official
9
+ date_added: "2026-07-16"
10
+ author: Modellix
11
+ tags: [image-generation, video-generation, modellix, cli, api]
12
+ tools: [claude, cursor, gemini]
13
+ license: "MIT"
14
+ license_source: "https://github.com/Modellix/modellix-skill/blob/main/LICENSE"
15
+ ---
16
+
17
+ # Modellix
18
+
19
+ ## Overview
20
+
21
+ Modellix is a Model-as-a-Service platform for AI image and video generation. This skill teaches agents to use the official `modellix-cli` workflow (doctor → model run --wait → task download).
22
+
23
+ Upstream package: https://github.com/Modellix/modellix-skill/tree/main/modellix-skill
24
+
25
+ ## When to Use This Skill
26
+
27
+ - Generate images from text prompts
28
+ - Generate or edit videos from text or images
29
+ - Call Modellix models through a unified API/CLI
30
+ - The user mentions Modellix, Seedream, Seedance, Nano Banana, or similar providers via Modellix
31
+
32
+ ## How It Works
33
+
34
+ 1. Authenticate with `MODELLIX_API_KEY` or `modellix-cli auth login`
35
+ 2. Run `modellix-cli doctor --json`
36
+ 3. Use default models when unspecified (T2I: `google/nano-banana-2-lite`, T2V: `bytedance/seedance-2.0-mini-t2v`)
37
+ 4. Submit with `modellix-cli model run --wait --json`
38
+ 5. Persist outputs with `modellix-cli task download`
39
+
40
+ ## Examples
41
+
42
+ ### Text-to-image
43
+
44
+ ```bash
45
+ modellix-cli model run \
46
+ --model-slug google/nano-banana-2-lite \
47
+ --body '{"prompt":"A cinematic sunset over a futuristic city"}' \
48
+ --wait --timeout 5m --json
49
+ ```
50
+
51
+ ### Text-to-video
52
+
53
+ ```bash
54
+ modellix-cli model run \
55
+ --model-slug bytedance/seedance-2.0-mini-t2v \
56
+ --body '{"prompt":"Ocean waves under a cloudy sunset"}' \
57
+ --wait --timeout 10m --json
58
+ ```
59
+
60
+ ## Best Practices
61
+
62
+ - Prefer CLI `model run --wait` over hand-rolled polling
63
+ - Before a paid submission, disclose the provider, model, prompt or source media that will leave the machine, expected cost, and output path; obtain explicit user approval
64
+ - Prefer session-scoped API-key use; run `modellix-cli auth login` only when the user approves persistent local credential storage
65
+ - Do not blindly retry paid submissions after unknown outcomes — check `task history`
66
+ - Confirm the destination and overwrite policy before `task download`; never replace an existing file without explicit approval
67
+ - Fetch request schemas from `model describe` `docs_url` or https://docs.modellix.ai/llms.txt
68
+
69
+ ## Security & Safety Notes
70
+
71
+ - Requires a Modellix API key; never print secrets in logs
72
+ - Prompts and uploaded source media leave the machine for `api.modellix.ai` and Modellix CDN processing
73
+ - Paid generation consumes account balance and must not be submitted or retried without the approval described above
74
+
75
+ ## Limitations
76
+
77
+ - Requires a Modellix account, network access, a valid API key, and sufficient account balance.
78
+ - Model availability, request schemas, pricing, quotas, moderation, and generation time are controlled by Modellix and may change.
79
+ - Generated outputs require human review for quality, rights, privacy, and policy compliance before publication.
80
+ - This skill documents the CLI workflow only; it does not define a REST fallback or guarantee that a completed remote task downloads successfully.
@@ -154,8 +154,10 @@ Own net-new PPTX creation in this workflow. When a PPTX file is required,
154
154
  create a small task-specific builder with the user's approved environment. Start
155
155
  slides from a blank layout and create native objects from the final bounding
156
156
  boxes. Enable word wrap, disable automatic text resizing, set text insets and
157
- alignment explicitly, and reject zero or negative bounding boxes before
158
- building.
157
+ alignment explicitly, and reject zero or negative bounding boxes for non-line
158
+ objects before building. Validate lines by requiring two distinct endpoints;
159
+ horizontal and vertical lines may have a zero-height or zero-width bounding
160
+ box.
159
161
 
160
162
  Save the authored specification, PPTX, build manifest, audit records, and
161
163
  source manifest together. Do not add a large shared renderer or copy source
@@ -181,7 +183,11 @@ with the slide ID, object ID, reason, owner, and review date.
181
183
 
182
184
  The skill provides a read-only analysis contract, not packaged code. For a
183
185
  specific task, use `python-pptx` and the Office Open XML package to inspect a
184
- presentation. Produce only the context needed for the task:
186
+ presentation. Use OOXML package inspection when `python-pptx` cannot expose
187
+ theme, master, layout, relationship, notes, comments, animation, media, or
188
+ non-modeled formatting evidence. Resolve the package relationship graph;
189
+ never infer slide order from filenames or copy source package parts. Produce
190
+ only the context needed for the task:
185
191
 
186
192
  * Compact prompt context with slide count, styles, brands, template, and layout
187
193
  * Full extraction with `layout_tree`, summary metrics, and render-aware elements
@@ -189,8 +195,10 @@ presentation. Produce only the context needed for the task:
189
195
  * Style-master analysis with colors, fonts, layout usage, and flow patterns
190
196
 
191
197
  Use [reference-deck analysis recipes](references/reference-deck-analysis.md)
192
- and [Python guidance](references/python-snippets.md) as static implementation
193
- references. Keep all extraction read-only.
198
+ and [reference-deck analysis patterns](references/reference-deck-analysis-patterns.md) as static implementation
199
+ references. Use the bundled `references/ooxml-parsing.md` guidance for the
200
+ package-part map, relationship resolution, namespace, and secure parsing
201
+ requirements. Keep all extraction read-only.
194
202
 
195
203
  ## Visual Assets
196
204
 
@@ -208,8 +216,8 @@ objects.
208
216
  Before any external generation call, disclose the provider and model, what
209
217
  prompt or source material will leave the machine, the likely cost, and the
210
218
  output path. Obtain explicit confirmation unless the user already authorized
211
- that exact operation. Never overwrite an existing output without separate
212
- confirmation.
219
+ that exact operation. Never overwrite an existing output or manifest without
220
+ separate explicit confirmation.
213
221
 
214
222
  ## Examples
215
223
 
@@ -20,16 +20,20 @@ A.y < B.y + B.h AND B.y < A.y + A.h
20
20
  For each text object estimate whether its text fits within its bbox.
21
21
 
22
22
  Rough capacity (Latin):
23
- - Characters per line ≈ `(bbox.w × 72) / (font_size × 0.5)`, using `0.5 em` as an average Latin glyph-width factor
23
+ - Characters per line ≈ `(bbox.w × 72) / (font_size × 0.5)`, using `0.5 em`
24
+ as an average Latin glyph-width factor
24
25
  - Lines available ≈ `(bbox.h × 72) / (font_size × 1.2)`
25
26
  _(bbox in inches, font_size in pt)_
26
27
 
27
28
  Adjustments:
28
- - **CJK / full-width text:** use a glyph-width factor near `1.0 em` instead of `0.5 em`. The extractor reports `non_ascii_text` — use it to flag CJK-heavy slides.
29
+ - **CJK / full-width text:** halve the characters-per-line value (full-width glyphs Latin advance). The extractor reports `non_ascii_text` — use it to flag CJK-heavy slides.
29
30
  - **Text on a shape/card:** subtract ≈0.1 in of inner padding from each side of the shape before computing capacity; the text occupies the inset inner area, not the full shape.
30
31
 
31
32
  - **Pass:** estimated text volume ≤ available capacity.
32
- - **Warning:** likely overflow → inspect the generated PPTX or rendered preview, then shorten bullets, enlarge the bbox, or split the slide when clipping is confirmed. This estimate is a triage heuristic, not a deterministic failure by itself.
33
+ - **Warning:** likely overflow → inspect the generated PPTX or rendered preview,
34
+ then shorten bullets, enlarge the bbox, or split the slide when clipping is
35
+ confirmed. This estimate is a triage heuristic, not a deterministic failure
36
+ by itself.
33
37
  **Never set `font_size` below 9 pt for `classification: "content"` objects.**
34
38
 
35
39
  ## 3. Font Size Minimums
@@ -0,0 +1,58 @@
1
+ # OOXML Parsing Reference
2
+
3
+ A `.pptx` is an Open Packaging Conventions ZIP archive. Inspect it read-only
4
+ by resolving its relationship graph; do not assume sequential filenames or
5
+ copy package parts into a generated deck.
6
+
7
+ ## Package-Part Map
8
+
9
+ | Need | Parts |
10
+ | --- | --- |
11
+ | Slide order | `ppt/presentation.xml`, `ppt/_rels/presentation.xml.rels` |
12
+ | Slide text and shapes | Slide parts resolved from presentation relationships (commonly `ppt/slides/slideN.xml`) |
13
+ | Layout, notes, images, charts | The slide's relationship part (commonly `ppt/slides/_rels/slideN.xml.rels`) |
14
+ | Template geometry | `ppt/slideLayouts/`, `ppt/slideMasters/` |
15
+ | Colors and fonts | Theme parts resolved from presentation/master relationships (commonly under `ppt/theme/`) |
16
+ | Notes and comments | `ppt/notesSlides/`, `ppt/comments/` |
17
+ | Media and embeddings | `ppt/media/`, `ppt/embeddings/` |
18
+
19
+ ## Relationship Resolution
20
+
21
+ 1. Start with `ppt/presentation.xml`; use its slide ID list and
22
+ `ppt/_rels/presentation.xml.rels` to resolve slides in presentation order.
23
+ 2. For every part that needs linked content, resolve targets from that part's
24
+ `.rels` file relative to the owning part rather than from a hard-coded path.
25
+ 3. Retain the relationship ID, type, resolved target, and any unreadable or
26
+ missing target in the analysis result.
27
+ 4. Treat raw element ordering as evidence for rendering, not as a reason to
28
+ reproduce a source slide or its package XML.
29
+
30
+ ## Namespaces
31
+
32
+ - PresentationML: `http://schemas.openxmlformats.org/presentationml/2006/main`
33
+ - DrawingML: `http://schemas.openxmlformats.org/drawingml/2006/main`
34
+ - Office relationships: `http://schemas.openxmlformats.org/officeDocument/2006/relationships`
35
+ - Package relationships: `http://schemas.openxmlformats.org/package/2006/relationships`
36
+
37
+ ## Analysis Output Guidance
38
+
39
+ For a read-only extraction, retain the slide number, resolved relationship
40
+ target, concatenated text, shape counts, notes, relationship types, and
41
+ OOXML-only markers such as animations, comments, transitions, unsupported
42
+ shapes, and non-modeled formatting. For design context, retain theme
43
+ color/font tokens without inventing an RGB value when a scheme or system color
44
+ cannot be fully resolved.
45
+
46
+ Record the input deck path, inspected parts, relationship-resolution errors,
47
+ and unreadable XML in the analysis manifest. Keep the result limited to the
48
+ evidence needed for the requested analysis.
49
+
50
+ ## Secure, Read-Only Handling
51
+
52
+ - Treat a source deck as untrusted input. Reject path traversal, symlinks,
53
+ oversized members, and compressed archive bombs before reading ZIP members.
54
+ - Parse XML with a secure parser. Disable DTD loading, entity expansion, and
55
+ network access.
56
+ - Preserve `xml:space="preserve"` semantics when collecting text.
57
+ - Do not modify the source archive, overwrite it, or blindly copy XML, media,
58
+ fonts, images, or embedded files into a new deck.
@@ -1,4 +1,4 @@
1
- # PPTX Python Snippets
1
+ # Reference-Deck Analysis Patterns
2
2
 
3
3
  It describes how to approach PPTX extraction and style analysis with `python-pptx`, using short illustrative
4
4
  snippets — not a packaged module to copy wholesale.
@@ -6,8 +6,9 @@ This file is static guidance for inspecting existing `.pptx` files and defining
6
6
 
7
7
  - Keep only static guidance for reference-deck prompt context, extraction, folder analysis, and style-master inspection.
8
8
  - Do not place runtime scripts, model assets, importable Python modules, or generated artifacts here.
9
- - This skill ships no importable code; implement the extraction/style-analysis contract on demand with `python-pptx`.
10
- - `python-snippets.md` holds documentation-only `python-pptx` guidance — approach notes plus short illustrative snippets. Do not import from it or recreate packaged `.py` resources from it.
9
+ - This skill ships no importable code; implement the extraction/style-analysis and read-only OOXML inspection contracts on demand with `python-pptx`, `zipfile`, and a secure XML parser.
10
+ - `reference-deck-analysis-patterns.md` holds documentation-only `python-pptx` guidance — approach notes plus short illustrative snippets. Do not import from it or recreate packaged `.py` resources from it.
11
+ - `ooxml-parsing.md` holds documentation-only package-part, relationship, namespace, and security guidance. It is not a runtime dependency or script template.
11
12
 
12
13
  ## Analysis Recipes
13
14
 
@@ -28,15 +29,34 @@ Produce a full JSON extraction including:
28
29
  - `summary` complexity metrics
29
30
  - `slides[*].layout_tree` with groups/objects
30
31
  - `ooxml_elements` for render-aware inspection
32
+ - resolved package relationships, OOXML-only markers, and parsing exceptions
31
33
 
32
- ### 3. Folder Batch Recipe
34
+ ### 3. OOXML Package Inspection Recipe
35
+
36
+ Use read-only package inspection when high-level APIs do not expose the needed
37
+ evidence: slide order, theme tokens, masters/layouts, notes, comments,
38
+ animations, media, charts, or non-modeled formatting.
39
+
40
+ - Resolve slide order from `ppt/presentation.xml` and its relationship part.
41
+ Do not derive it from `slideN.xml` filenames.
42
+ - Resolve every relationship target relative to its owning source part, not its
43
+ `.rels` part. Retain the relationship type, target, and unreadable XML errors
44
+ in the result.
45
+ - Preserve theme colors and fonts as tokens when they cannot be reliably
46
+ resolved to RGB values.
47
+ - Parse untrusted XML with a secure parser; do not enable DTDs, entity
48
+ expansion, or network access.
49
+ - Keep the source package read-only and never copy its XML parts into a new
50
+ deck.
51
+
52
+ ### 4. Folder Batch Recipe
33
53
 
34
54
  Process a folder of decks to produce:
35
55
 
36
56
  - One `.pptx-spec.json` file per deck
37
57
  - A `manifest.json` to track outputs
38
58
 
39
- ### 4. Style Master Recipe
59
+ ### 5. Style Master Recipe
40
60
 
41
61
  Run style-only analysis when you need design lock signals:
42
62
 
@@ -44,7 +64,7 @@ Run style-only analysis when you need design lock signals:
44
64
  - Typography and font-size distribution
45
65
  - Master/layout usage and flow patterns
46
66
 
47
- ### 5. Reference Template Catalog Recipe
67
+ ### 6. Reference Template Catalog Recipe
48
68
 
49
69
  When a reference deck should inform a new deck's layout rhythm, produce a
50
70
  human-readable catalog from the existing prompt-context, extraction, and
@@ -83,9 +103,11 @@ Suggested catalog shape:
83
103
  ## Related Responsibilities
84
104
 
85
105
  This reference covers PPTX prompt context, extraction, folder batch analysis,
86
- style-master inspection, and the derived reference-template catalog only.
106
+ style-master inspection, read-only OOXML package inspection, and the derived
107
+ reference-template catalog only. See [OOXML parsing guidance](ooxml-parsing.md)
108
+ for the package-part map and parser safety rules.
87
109
 
88
110
  - Use the parent `pptx-deck-creation` workflow for narrative/source preparation,
89
- together with [design profiles](design-profiles.md) for profile selection.
111
+ together with [design profiles](design-profiles.md) for profile selection.
90
112
  - Use [visual asset guidelines](visual-asset-adapters.md) for acquiring and
91
- placing icons, images, SVGs, and infographics.
113
+ placing icons, images, SVGs, and infographics.