kotonoha 0.1.2 → 0.1.4

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 (36) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.md +95 -20
  3. package/bin/kotonoha.js +81 -13
  4. package/package.json +7 -3
  5. package/skills/presentation-planner/SKILL.md +243 -0
  6. package/skills/presentation-planner/assets/design-templates/data-report.yaml +97 -0
  7. package/skills/presentation-planner/assets/design-templates/executive-proposal.yaml +92 -0
  8. package/skills/presentation-planner/assets/design-templates/technical-briefing.yaml +96 -0
  9. package/skills/presentation-planner/assets/scenario-templates/data-report.md +47 -0
  10. package/skills/presentation-planner/assets/scenario-templates/executive-decision.md +43 -0
  11. package/skills/presentation-planner/assets/scenario-templates/technical-briefing.md +45 -0
  12. package/skills/presentation-planner/references/customizing-design-templates.md +160 -0
  13. package/skills/presentation-planner/references/design-spec-schema.md +72 -0
  14. package/skills/presentation-planner/references/handoff-contract.md +49 -0
  15. package/skills/presentation-planner/references/responsibility-boundary.md +32 -0
  16. package/skills/presentation-planner/references/scenario-templates.md +55 -0
  17. package/skills/tech-writer/SKILL.md +57 -16
  18. package/skills/tech-writer/assets/templates/migration-plan.md +173 -0
  19. package/skills/tech-writer/assets/templates/operations-runbook.md +202 -0
  20. package/skills/tech-writer/assets/templates/requirements-definition.md +170 -0
  21. package/skills/tech-writer/assets/templates/rfi.md +113 -0
  22. package/skills/tech-writer/assets/templates/rfp.md +180 -0
  23. package/skills/tech-writer/assets/templates/security-design.md +167 -0
  24. package/skills/tech-writer/assets/templates/system-design.md +220 -0
  25. package/skills/tech-writer/assets/templates/technical-proposal.md +112 -0
  26. package/skills/tech-writer/assets/templates/test-plan.md +153 -0
  27. package/skills/tech-writer/references/doctypes/migration-plan.md +63 -0
  28. package/skills/tech-writer/references/doctypes/operations-runbook.md +63 -0
  29. package/skills/tech-writer/references/doctypes/requirements-definition.md +61 -0
  30. package/skills/tech-writer/references/doctypes/rfi.md +43 -0
  31. package/skills/tech-writer/references/doctypes/rfp.md +46 -0
  32. package/skills/tech-writer/references/doctypes/security-design.md +71 -0
  33. package/skills/tech-writer/references/doctypes/system-design.md +74 -0
  34. package/skills/tech-writer/references/doctypes/technical-proposal.md +49 -0
  35. package/skills/tech-writer/references/doctypes/test-plan.md +67 -0
  36. package/skills/tech-writer/references/style-constitution.md +7 -6
package/CHANGELOG.md CHANGED
@@ -5,6 +5,34 @@ All notable changes to this project are documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [Unreleased]
9
+
10
+ ## [0.1.4] - 2026-09-29
11
+
12
+ ### Added
13
+
14
+ - Add Japanese requirements-definition and system-design templates with
15
+ doctype routing, responsibility boundaries, traceability, and review
16
+ checklists.
17
+ - Add Japanese test-plan, operations-runbook, migration-plan, and
18
+ security-design/threat-model templates with dedicated doctype guidance
19
+ and review checklists.
20
+ - Add the `presentation-planner` skill for presentation requirements,
21
+ storyline, slide outlines, design specifications, and PPTX-skill handoff.
22
+ - Add executive decision, technical briefing, and data report presentation
23
+ scenario templates plus a `presentation-scenario.md` planning artifact.
24
+ - Add executive proposal, technical briefing, and data report design
25
+ specifications in YAML.
26
+ - Standardize presentation designs on white backgrounds with Microsoft
27
+ corporate colors and accessible dark semantic text colors.
28
+ - Add a guide for adapting design specifications and adding reusable
29
+ presentation templates.
30
+ - Add multi-skill installation with `kotonoha install --skill <name|all>`.
31
+ - Add Japanese templates for technical proposals, requests for information
32
+ (RFI), and requests for proposal (RFP).
33
+ - Add doctype routing, writing guidance, and checklists for the three new
34
+ templates.
35
+
8
36
  ## [0.1.2] - 2026-09-29
9
37
 
10
38
  ### Added
@@ -45,3 +73,5 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
45
73
  [0.1.2]: https://github.com/nahisaho/kotonoha/compare/v0.1.1...v0.1.2
46
74
  [0.1.1]: https://github.com/nahisaho/kotonoha/compare/v0.1.0...v0.1.1
47
75
  [0.1.0]: https://github.com/nahisaho/kotonoha/releases/tag/v0.1.0
76
+ [0.1.4]: https://github.com/nahisaho/kotonoha/compare/v0.1.2...v0.1.4
77
+ [Unreleased]: https://github.com/nahisaho/kotonoha/compare/v0.1.4...HEAD
package/README.md CHANGED
@@ -1,10 +1,15 @@
1
1
  # kotonoha
2
2
 
3
- kotonoha provides `tech-writer`, a GitHub Copilot CLI skill that helps
4
- structure and polish technical documents. It covers README, design
3
+ kotonoha provides GitHub Copilot CLI skills for technical documents and
4
+ presentation planning. `tech-writer` helps structure and polish README, design
5
5
  docs/ADRs, API reference, PR descriptions/commit messages/issue reports,
6
- release notes, user manuals/how-to guides, code comments, and Qiita/Zenn
7
- articles, structured so readers never get lost.
6
+ release notes, user manuals/how-to guides, code comments, requirements
7
+ definitions, system designs, test plans, operations runbooks, migration plans,
8
+ security designs, technical proposals, RFI/RFP procurement documents, and
9
+ Qiita/Zenn articles,
10
+ structured so readers never get lost. `presentation-planner` turns source
11
+ material into a reusable presentation scenario, slide outline, design
12
+ specification, and handoff for a dedicated PPTX creation skill.
8
13
 
9
14
  ## What tech-writer solves
10
15
 
@@ -20,7 +25,9 @@ Japanese prose with natural-japanese.
20
25
 
21
26
  - Create/review README, design docs/ADRs, API reference, PR
22
27
  descriptions/commit messages/issue reports, release notes, user manuals,
23
- code comments, and Qiita/Zenn articles
28
+ code comments, requirements definitions, system designs, test plans,
29
+ operations runbooks, migration plans, security designs, technical proposals,
30
+ RFI/RFP procurement documents, and Qiita/Zenn articles
24
31
  - Doctype-specific structure and checklists to guide writing
25
32
  - Iterative rubber-duck review after document creation, with fixes and
26
33
  re-review until no actionable findings remain; unavailable reviews are
@@ -35,6 +42,49 @@ Japanese prose with natural-japanese.
35
42
  (the target programming language's own syntax)
36
43
  - Japanese as the primary target language, with English document support
37
44
 
45
+ ## Supported document types
46
+
47
+ | Document type | Examples | Doctype |
48
+ |---|---|---|
49
+ | Project overview | README | `readme` |
50
+ | Design decision | Design doc, ADR, RFC | `design-doc` |
51
+ | Requirements definition | 要件定義書, functional and non-functional requirements | `requirements-definition` |
52
+ | System design | システム設計書, architecture and detailed system design | `system-design` |
53
+ | Test planning | テスト計画書, test strategy and acceptance evidence | `test-plan` |
54
+ | Operations | 運用設計書, operations runbook, incident procedures | `operations-runbook` |
55
+ | Migration | 移行計画書, data and system cutover plan | `migration-plan` |
56
+ | Security | セキュリティ設計書, threat model | `security-design` |
57
+ | API reference | REST API, events, SDK reference | `api-docs` |
58
+ | Development workflow text | PR description, commit message, bug report, feature request | `pr-commit` |
59
+ | Release documentation | Release notes, CHANGELOG | `release-notes` |
60
+ | User guidance | User manual, how-to guide, tutorial | `user-manual` |
61
+ | Source documentation | Code comments, docstrings | `code-comments` |
62
+ | Internal technical proposal | Architecture, investment, and delivery proposal | `technical-proposal` |
63
+ | Request for information | RFI | `rfi` |
64
+ | Request for proposal | RFP | `rfp` |
65
+ | Technical article | Zenn article | `zenn` |
66
+ | Technical article | Qiita article | `qiita` |
67
+
68
+ Reusable templates are included for README, design decisions, user manuals,
69
+ PR descriptions, requirements definitions, system designs, test plans,
70
+ operations runbooks, migration plans, security designs, technical proposals,
71
+ RFI, and RFP documents. Every supported doctype includes dedicated structure
72
+ guidance and a review checklist under
73
+ `skills/tech-writer/references/doctypes/`.
74
+
75
+ ## What presentation-planner does
76
+
77
+ - Defines the audience, decision, call to action, and presentation constraints
78
+ - Produces a brief, audience-reasoning scenario, assertion-title slide outline,
79
+ YAML design specification, and deterministic handoff for the host's PPTX
80
+ creation skill
81
+ - Includes executive decision, technical briefing, and data report scenario
82
+ templates
83
+ - Includes executive proposal, technical briefing, and data report design
84
+ specifications
85
+ - Delegates `.pptx` generation, binary editing, rendering, and visual QA to
86
+ the dedicated PPTX skill instead of duplicating it
87
+
38
88
  ## Setup
39
89
 
40
90
  ### Prerequisites
@@ -45,43 +95,54 @@ Japanese prose with natural-japanese.
45
95
 
46
96
  ### Install from npm
47
97
 
48
- Install the package, then copy `tech-writer` into a skill directory with
49
- the included CLI:
98
+ Install the package, then copy all packaged skills into a skill directory
99
+ with the included CLI:
50
100
 
51
101
  ```bash
52
102
  npm install --save-dev kotonoha
53
103
  npx kotonoha install
54
104
  ```
55
105
 
56
- The default destination is `.github/skills/tech-writer` in the current
57
- project. To install into another supported skill directory, pass its parent
58
- directory:
106
+ The default destinations are `.github/skills/tech-writer` and
107
+ `.github/skills/presentation-planner` in the current project. To install
108
+ only one skill, or use another supported skill directory:
59
109
 
60
110
  ```bash
111
+ npx kotonoha install --skill presentation-planner
61
112
  npx kotonoha install --target .claude/skills
62
113
  npx kotonoha install --target ~/.copilot/skills
63
114
  ```
64
115
 
65
- The command refuses to overwrite an existing `tech-writer` directory. Review
66
- or back up the existing installation, then pass `--force` only when you
67
- intend to replace it:
116
+ An explicit `--skill <name>` install refuses to overwrite that existing
117
+ skill directory. Review or back up the existing installation, then pass
118
+ `--force` only when you intend to replace the selected skills:
68
119
 
69
120
  ```bash
70
121
  npx kotonoha install --force
71
122
  ```
72
123
 
124
+ When installing all skills, existing skill directories are skipped and only
125
+ missing skills are added. This makes upgrading from a tech-writer-only
126
+ installation safe:
127
+
128
+ ```bash
129
+ npx kotonoha install
130
+ # Skipped tech-writer (...)
131
+ # Installed presentation-planner (...)
132
+ ```
133
+
73
134
  ### Install from a source checkout
74
135
 
75
- Inside this repository, the skill is already placed at
76
- `.github/skills/tech-writer`, so no extra setup is needed to use it with
77
- Copilot CLI here.
136
+ Inside this repository, the skills are linked under `.github/skills/`, so no
137
+ extra setup is needed to use them with Copilot CLI here.
78
138
 
79
- To use it in another project, copy the `skills/tech-writer` directory into
80
- that repository's `.github/skills/`, `.claude/skills/`, or your global
139
+ To use a skill from a source checkout in another project, copy its directory
140
+ into that repository's `.github/skills/`, `.claude/skills/`, or your global
81
141
  `~/.copilot/skills/`.
82
142
 
83
143
  ```bash
84
144
  cp -r skills/tech-writer /path/to/your-repo/.github/skills/tech-writer
145
+ cp -r skills/presentation-planner /path/to/your-repo/.github/skills/presentation-planner
85
146
  ```
86
147
 
87
148
  ## Ask Copilot for the document you need
@@ -91,6 +152,10 @@ invoked automatically.
91
152
 
92
153
  - "Write a README", "Review this design doc", "Write the PR description",
93
154
  "Make this how-to guide clearer"
155
+ - "要件定義書を作って", "承認済み要件からシステム設計書を書いて",
156
+ "移行計画とRunbookを作って"
157
+ - "Create a PPTX from this proposal", "Plan an executive presentation",
158
+ "Design a technical briefing deck"
94
159
 
95
160
  To run a quick structure-only diagnostic:
96
161
 
@@ -107,10 +172,16 @@ works too (standard library only).
107
172
  skills/tech-writer/ # the skill itself
108
173
  SKILL.md # skill definition
109
174
  references/ # structure constitution + doctype rules/checklists
110
- references/doctypes/ # README, design doc, API docs, PR/issue, release notes, manual, comments, Qiita/Zenn
175
+ references/doctypes/ # README, requirements/design/test/operations/migration/security, API docs, PR/issue, release notes, proposals, RFI/RFP, Qiita/Zenn
111
176
  scripts/lint.py # structural lint script
112
- assets/templates/ # skeleton templates for the main doctypes
177
+ assets/templates/ # doctype skeletons including requirements, design, test, operations, migration, security, and procurement
178
+ skills/presentation-planner/ # storyline, design-spec, and PPTX handoff skill
179
+ SKILL.md
180
+ references/ # boundary, scenario/design guidance, customization, handoff contract
181
+ assets/scenario-templates/ # executive, technical, and data-report narrative scenarios
182
+ assets/design-templates/ # executive, technical, and data-report YAML designs
113
183
  .github/skills/tech-writer # symlink to skills/tech-writer (where Copilot CLI reads it)
184
+ .github/skills/presentation-planner
114
185
  ```
115
186
 
116
187
  ## Known limitations
@@ -121,6 +192,10 @@ skills/tech-writer/ # the skill itself
121
192
  - The doctypes are written mainly with Japanese technical-writing
122
193
  conventions in mind; most of the guidance (especially the commit-message
123
194
  imperative-mood rule) applies directly to English documents as well.
195
+ - `presentation-planner` does not create or validate `.pptx` binaries by
196
+ itself; a dedicated PPTX skill is required for generation and visual QA.
197
+ - Design customization is documented in
198
+ `skills/presentation-planner/references/customizing-design-templates.md`.
124
199
 
125
200
  ## Acknowledgment
126
201
 
package/bin/kotonoha.js CHANGED
@@ -7,11 +7,12 @@ const packageJson = require("../package.json");
7
7
 
8
8
  function printUsage() {
9
9
  console.log(`Usage:
10
- kotonoha install [--target <directory>] [--force]
10
+ kotonoha install [--target <directory>] [--skill <name|all>] [--force]
11
11
 
12
12
  Options:
13
13
  --target <directory> Skill directory root (default: .github/skills)
14
- --force Replace an existing tech-writer installation
14
+ --skill <name|all> Skill to install (default: all)
15
+ --force Replace existing selected skill installations
15
16
  --help Show this help
16
17
  --version Show the installed kotonoha version`);
17
18
  }
@@ -23,6 +24,7 @@ function fail(message) {
23
24
 
24
25
  function parseInstallOptions(args) {
25
26
  let target = ".github/skills";
27
+ let skill = "all";
26
28
  let force = false;
27
29
 
28
30
  for (let index = 0; index < args.length; index += 1) {
@@ -43,6 +45,25 @@ function parseInstallOptions(args) {
43
45
  continue;
44
46
  }
45
47
 
48
+ if (argument === "--skill") {
49
+ const value = args[index + 1];
50
+ if (!value || value.startsWith("--")) {
51
+ throw new Error("--skill requires a skill name or all");
52
+ }
53
+ skill = value;
54
+ index += 1;
55
+ continue;
56
+ }
57
+
58
+ if (argument.startsWith("--skill=")) {
59
+ const value = argument.slice("--skill=".length);
60
+ if (!value) {
61
+ throw new Error("--skill requires a skill name or all");
62
+ }
63
+ skill = value;
64
+ continue;
65
+ }
66
+
46
67
  if (argument.startsWith("--target=")) {
47
68
  const value = argument.slice("--target=".length);
48
69
  if (!value) {
@@ -55,7 +76,7 @@ function parseInstallOptions(args) {
55
76
  throw new Error(`unknown option: ${argument}`);
56
77
  }
57
78
 
58
- return { target, force };
79
+ return { target, skill, force };
59
80
  }
60
81
 
61
82
  function install(args) {
@@ -67,28 +88,75 @@ function install(args) {
67
88
  return;
68
89
  }
69
90
 
70
- const source = path.resolve(__dirname, "..", "skills", "tech-writer");
91
+ const skillsRoot = path.resolve(__dirname, "..", "skills");
71
92
  const targetRoot = path.resolve(process.cwd(), options.target);
72
- const destination = path.join(targetRoot, "tech-writer");
73
93
 
74
- if (!fs.existsSync(source)) {
75
- fail(`packaged skill not found at ${source}`);
94
+ if (!fs.existsSync(skillsRoot)) {
95
+ fail(`packaged skills not found at ${skillsRoot}`);
76
96
  return;
77
97
  }
78
98
 
79
- if (fs.existsSync(destination)) {
80
- if (!options.force) {
99
+ const availableSkills = fs
100
+ .readdirSync(skillsRoot, { withFileTypes: true })
101
+ .filter(
102
+ (entry) =>
103
+ entry.isDirectory() &&
104
+ fs.existsSync(path.join(skillsRoot, entry.name, "SKILL.md")),
105
+ )
106
+ .map((entry) => entry.name)
107
+ .sort();
108
+ const selectedSkills =
109
+ options.skill === "all" ? availableSkills : [options.skill];
110
+ const installAll = options.skill === "all";
111
+
112
+ for (const skill of selectedSkills) {
113
+ if (!availableSkills.includes(skill)) {
81
114
  fail(
82
- `${destination} already exists; rerun with --force to replace it`,
115
+ `unknown skill: ${skill}; available skills: ${availableSkills.join(", ")}`,
83
116
  );
84
117
  return;
85
118
  }
86
- fs.rmSync(destination, { recursive: true, force: true });
119
+ }
120
+
121
+ const existingDestinations = selectedSkills
122
+ .map((skill) => path.join(targetRoot, skill))
123
+ .filter((destination) => fs.existsSync(destination));
124
+
125
+ if (existingDestinations.length > 0 && !options.force && !installAll) {
126
+ fail(
127
+ `${existingDestinations.join(", ")} already exists; rerun with --force to replace selected skills`,
128
+ );
129
+ return;
87
130
  }
88
131
 
89
132
  fs.mkdirSync(targetRoot, { recursive: true });
90
- fs.cpSync(source, destination, { recursive: true });
91
- console.log(`Installed tech-writer to ${destination}`);
133
+ for (const skill of selectedSkills) {
134
+ const source = path.join(skillsRoot, skill);
135
+ const destination = path.join(targetRoot, skill);
136
+ if (fs.existsSync(destination) && !options.force) {
137
+ console.log(
138
+ `Skipped ${skill} (${destination} already exists; use --force to replace)`,
139
+ );
140
+ continue;
141
+ }
142
+
143
+ const temporaryDestination = path.join(
144
+ targetRoot,
145
+ `.kotonoha-${skill}-${process.pid}-${Date.now()}`,
146
+ );
147
+ try {
148
+ fs.cpSync(source, temporaryDestination, { recursive: true });
149
+ if (options.force) {
150
+ fs.rmSync(destination, { recursive: true, force: true });
151
+ }
152
+ fs.renameSync(temporaryDestination, destination);
153
+ } catch (error) {
154
+ fs.rmSync(temporaryDestination, { recursive: true, force: true });
155
+ fail(`failed to install ${skill}: ${error.message}`);
156
+ return;
157
+ }
158
+ console.log(`Installed ${skill} to ${destination}`);
159
+ }
92
160
  }
93
161
 
94
162
  const [command, ...args] = process.argv.slice(2);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "kotonoha",
3
- "version": "0.1.2",
4
- "description": "A GitHub Copilot CLI skill for structuring and polishing technical documents.",
3
+ "version": "0.1.4",
4
+ "description": "GitHub Copilot CLI skills for technical writing and PPTX presentation planning.",
5
5
  "license": "MIT",
6
6
  "author": "nahisaho",
7
7
  "repository": {
@@ -27,7 +27,11 @@
27
27
  "skill",
28
28
  "technical-writing",
29
29
  "documentation",
30
- "markdown"
30
+ "markdown",
31
+ "presentation",
32
+ "pptx",
33
+ "powerpoint",
34
+ "slides"
31
35
  ],
32
36
  "files": [
33
37
  "CHANGELOG.md",
@@ -0,0 +1,243 @@
1
+ ---
2
+ name: presentation-planner
3
+ description: >-
4
+ Plans the content structure and visual design handoff for PowerPoint/PPTX
5
+ presentations without generating or editing the .pptx file itself. Use for
6
+ requests like "create a PowerPoint", "make a PPTX", "design a slide deck",
7
+ "turn this proposal into slides", 「PowerPointを作って」「PPTXを作成して」
8
+ 「提案書をスライドにして」「プレゼン資料の構成を作って」
9
+ 「プレゼンシナリオを作って」. Produces a presentation brief, reusable
10
+ scenario-based narrative, slide-by-slide outline, design specification,
11
+ and handoff instructions for the host's dedicated PPTX creation skill. Does
12
+ NOT implement PPTX generation, python-pptx/PptxGenJS code, binary editing,
13
+ rendering, thumbnail creation, or visual-overlap inspection; those remain
14
+ the responsibility of the dedicated PPTX skill. Does NOT handle simple
15
+ edits to an existing deck, single-slide changes, or direct generation when
16
+ the storyline and design are already settled; use the dedicated PPTX skill
17
+ directly for those requests.
18
+ license: MIT
19
+ argument-hint: "[plan|review] <presentation request or source files>"
20
+ ---
21
+
22
+ # presentation-planner
23
+
24
+ Plans what a presentation must communicate, how the story progresses, and
25
+ which visual system the PPTX renderer must apply. The output is a complete
26
+ handoff package for a dedicated PPTX creation skill, not a `.pptx` file.
27
+
28
+ ## Responsibility boundary
29
+
30
+ Read `references/responsibility-boundary.md` before acting. This skill owns:
31
+
32
+ - Audience, objective, decision, and call-to-action definition
33
+ - Scenario selection, audience reasoning journey, and slide ordering
34
+ - One-message-per-slide content architecture
35
+ - Evidence and source mapping
36
+ - Selection and adaptation of a packaged design specification
37
+ - A deterministic handoff contract for the host's PPTX skill
38
+
39
+ This skill must not:
40
+
41
+ - Create, edit, unzip, or inspect `.pptx` binaries
42
+ - Write PowerPoint generation code using python-pptx, PptxGenJS, COM, or
43
+ similar libraries
44
+ - Render slides, create thumbnails, or detect visual overlap
45
+ - Reimplement layout or visual QA tooling supplied by the host's PPTX skill
46
+
47
+ When the host provides a registered `pptx` or PowerPoint creation skill,
48
+ delegate binary generation and visual QA to it. If no such skill is
49
+ available, still produce the five planning artifacts and report
50
+ `PPTX generation not performed`; do not silently implement a renderer.
51
+
52
+ ## Execution modes
53
+
54
+ - `plan` (default): gather context, produce the five handoff artifacts, and
55
+ delegate generation when a PPTX skill is available.
56
+ - `review`: review existing brief, scenario, outline, and design spec for
57
+ audience fit, storyline gaps, evidence gaps, and handoff ambiguity. Do not
58
+ inspect the binary presentation.
59
+
60
+ ## 0. Route direct PPTX operations away
61
+
62
+ Before intake, skip this skill and use the dedicated PPTX skill directly
63
+ when any of the following is true:
64
+
65
+ - The request is a mechanical edit to an existing deck
66
+ - Only one slide, title, image, note, or formatting property must change
67
+ - The user supplied a final scenario, slide outline, and design with no
68
+ request to restructure them
69
+ - The task is only binary generation, rendering, conversion, or visual QA
70
+
71
+ Use `presentation-planner` when the audience, storyline, evidence,
72
+ slide sequence, or visual system still needs design.
73
+
74
+ ## 1. Gather context one question at a time
75
+
76
+ Ask only the single most informative missing question, then wait. Stop once
77
+ the following are known:
78
+
79
+ 1. Target audience and what they already know
80
+ 2. The decision, action, or understanding the presentation must produce
81
+ 3. Presentation setting: meeting type, speaking time, and target slide count
82
+ 4. Source material and evidence that may be cited
83
+ 5. Required language, aspect ratio, brand rules, and accessibility needs
84
+ 6. Whether an existing `.pptx` or brand template must be reused
85
+
86
+ If an existing `.pptx` must be reused, ask the host's PPTX skill to inspect
87
+ its theme and layouts. Consume the returned design summary; do not inspect
88
+ the binary in this skill.
89
+
90
+ ## 2. Choose a packaged design specification
91
+
92
+ Choose the closest design under `assets/design-templates/`:
93
+
94
+ | Design | Use when | Avoid when |
95
+ |---|---|---|
96
+ | `executive-proposal.yaml` | Approval, investment, roadmap, or executive decision | Dense technical training |
97
+ | `technical-briefing.yaml` | Architecture, engineering explanation, technical proposal | Primarily financial reporting |
98
+ | `data-report.yaml` | KPI review, research findings, operational or analytical reporting | Slides without credible data |
99
+
100
+ Read `references/design-spec-schema.md` and adapt the selected design into
101
+ the presentation's `design-spec.yaml`. Preserve the schema keys so the PPTX
102
+ skill can consume it predictably.
103
+
104
+ For project-specific changes or new reusable templates, follow
105
+ `references/customizing-design-templates.md`.
106
+
107
+ ## 3. Build the storyline before slide content
108
+
109
+ Read `references/scenario-templates.md`, then choose the closest scenario
110
+ under `assets/scenario-templates/`:
111
+
112
+ | Scenario | Use when |
113
+ |---|---|
114
+ | `executive-decision.md` | Approval, investment, roadmap, policy, or option selection |
115
+ | `technical-briefing.md` | Architecture, engineering behavior, or technical review |
116
+ | `data-report.md` | KPI, research, experiment, survey, or operational analysis |
117
+
118
+ Copy and adapt it into `presentation-scenario.md`. Use the shortest storyline
119
+ that gets the audience to the intended outcome. The selected template's
120
+ scenario arc is authoritative; keep its stage names unless the adaptation
121
+ records why a stage is removed, merged, or renamed.
122
+
123
+ When none of the packaged templates fits, use this generic fallback:
124
+
125
+ 1. **Context**: why the audience should care now
126
+ 2. **Tension**: the problem, gap, risk, or opportunity
127
+ 3. **Evidence**: facts that establish scale and credibility
128
+ 4. **Resolution**: the proposed answer or interpretation
129
+ 5. **Plan**: actions, owners, cost, timing, and controls
130
+ 6. **Decision**: the exact approval, action, or next step
131
+
132
+ Remove a stage when it adds no decision value. Do not add agenda, section
133
+ divider, or summary slides merely to increase slide count.
134
+
135
+ ## 4. Produce the five handoff artifacts
136
+
137
+ Write the artifacts under `.presentation/<deck-slug>/` unless the user
138
+ specifies another directory. Derive a stable, filesystem-safe slug from the
139
+ presentation title so multiple decks do not overwrite each other.
140
+
141
+ ### `presentation-brief.md`
142
+
143
+ Include:
144
+
145
+ - Working title and one-sentence purpose
146
+ - Audience and prior-knowledge floor
147
+ - Decision or call to action
148
+ - Setting, duration, slide count, language, and aspect ratio
149
+ - Source files and citation expectations
150
+ - Constraints, non-goals, and known unknowns
151
+ - Selected design template and reason
152
+
153
+ ### `presentation-scenario.md`
154
+
155
+ Copy and adapt one packaged scenario template. If no packaged template fits,
156
+ write the generic fallback arc from §3 into this file using the same fields:
157
+ stage, audience question, assertion, required evidence, transition, and
158
+ suggested slide range. Include:
159
+
160
+ - Current and intended audience position
161
+ - One assertion and audience question per scenario stage
162
+ - Required evidence, source status, and assumptions
163
+ - The transition that makes the next stage relevant
164
+ - Likely objections, uncertainty, and trade-offs
165
+ - The exact final decision, action, or understanding
166
+
167
+ The scenario defines the reasoning journey, not individual slide content.
168
+
169
+ ### `slide-outline.md`
170
+
171
+ Use one row per slide:
172
+
173
+ | # | Scenario stage(s) | Assertion title | Audience takeaway | Evidence/source | Visual form | Speaker note purpose |
174
+ |---:|---|---|---|---|---|---|
175
+
176
+ Rules:
177
+
178
+ - Titles state the slide's conclusion, not its topic
179
+ - Each slide has one primary message
180
+ - Every slide maps to at least one scenario stage; separate multiple stage
181
+ names with ` / `
182
+ - Evidence is traceable to a source or marked as an assumption
183
+ - Visual form is specific: comparison table, timeline, architecture diagram,
184
+ annotated chart, process, quote, or full-bleed image
185
+ - A slide must earn its place by advancing the decision or outcome
186
+
187
+ ### `design-spec.yaml`
188
+
189
+ Copy and adapt one packaged design specification. Set `base_template` to the
190
+ packaged template ID and change `id` to a unique value such as
191
+ `<deck-slug>:<base-template>`. Resolve its placeholders, then record any
192
+ deliberate deviation in a `deviations` list.
193
+
194
+ ### `pptx-handoff.md`
195
+
196
+ Follow `references/handoff-contract.md`. It must tell the PPTX skill:
197
+
198
+ - Exact input artifact paths
199
+ - Exact output `.pptx` path
200
+ - Required design template and deviations
201
+ - Slide count and aspect ratio
202
+ - Source and citation rules
203
+ - Required speaker notes and accessibility behavior
204
+ - Binary-generation and visual-QA acceptance checks
205
+
206
+ ## 5. Validate the planning package
207
+
208
+ Before handoff, verify:
209
+
210
+ - Reading only assertion titles reproduces the full argument
211
+ - Reading only scenario-stage assertions reproduces the audience journey
212
+ - Every slide maps to at least one stage without introducing an unsupported
213
+ conclusion
214
+ - The final slide asks for the exact intended decision or action
215
+ - Every factual or quantitative claim has a source or assumption marker
216
+ - No slide has more than one primary message
217
+ - Visual forms vary with the information instead of repeating one layout
218
+ - The design spec contains all required schema keys
219
+ - The handoff assigns all binary and visual checks to the PPTX skill
220
+
221
+ Use an independent `rubber-duck` reviewer when available. Fix actionable
222
+ findings and repeat for at most five rounds. A round is clean when no
223
+ unaddressed correctness, storyline, evidence, design, or handoff findings
224
+ remain. If the reviewer is unavailable, report `review not performed`. If
225
+ five rounds end with actionable findings, report `review did not converge`
226
+ with the unresolved findings and attempted fixes.
227
+
228
+ ## 6. Delegate PPTX creation
229
+
230
+ Pass the five artifact paths to the host's dedicated PPTX skill. The PPTX
231
+ skill may choose its own implementation library, but it must preserve the
232
+ approved storyline and design tokens unless it reports a concrete rendering
233
+ constraint.
234
+
235
+ After generation, require the PPTX skill to report:
236
+
237
+ - Output file path and slide count
238
+ - Render/thumbnail review result
239
+ - Overlap, clipping, contrast, and font-substitution checks
240
+ - Missing assets or unsupported design instructions
241
+ - Any deviation from `slide-outline.md` or `design-spec.yaml`
242
+
243
+ Do not claim a presentation is complete from this planning skill alone.