kotonoha 0.1.1 → 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 +42 -0
  2. package/README.md +99 -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 +108 -20
  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
@@ -0,0 +1,97 @@
1
+ id: data-report
2
+ base_template: null
3
+ intent:
4
+ - KPI review
5
+ - research findings
6
+ - operational report
7
+ - analytical recommendation
8
+ canvas:
9
+ aspect_ratio: "16:9"
10
+ width_in: 13.333
11
+ height_in: 7.5
12
+ safe_area_percent: 6
13
+ grid_columns: 12
14
+ max_content_blocks: 4
15
+ colors:
16
+ background: "#FFFFFF"
17
+ surface: "#F3F3F3"
18
+ text_primary: "#1B1B1B"
19
+ text_secondary: "#505050"
20
+ accent: "#005A9E"
21
+ accent_soft: "#E5F1FB"
22
+ border_neutral: "#8A8886"
23
+ positive: "#107C10"
24
+ warning: "#8A5A00"
25
+ critical: "#A4262C"
26
+ brand_red: "#F25022"
27
+ brand_green: "#7FBA00"
28
+ brand_blue: "#00A4EF"
29
+ brand_yellow: "#FFB900"
30
+ chart_sequence:
31
+ - "#005A9E"
32
+ - "#F25022"
33
+ - "#767676"
34
+ typography:
35
+ heading_font: "Aptos Display"
36
+ body_font: "Aptos"
37
+ numeric_font: "Aptos"
38
+ title_size_pt: 28
39
+ section_title_size_pt: 24
40
+ body_size_pt: 17
41
+ metric_size_pt: 34
42
+ caption_size_pt: 10
43
+ title_weight: 700
44
+ body_line_spacing: 1.12
45
+ spacing:
46
+ outer_margin_percent: 6
47
+ content_gap_percent: 2
48
+ card_padding_percent: 2
49
+ components:
50
+ cards:
51
+ corner_radius: medium
52
+ border: none
53
+ shadow: none
54
+ callouts:
55
+ use_accent_bar: false
56
+ maximum_per_slide: 1
57
+ tables:
58
+ header_fill: accent_soft
59
+ header_text: text_primary
60
+ zebra_rows: true
61
+ maximum_rows: 8
62
+ charts:
63
+ style: analytical
64
+ gridlines: minimal
65
+ direct_labels_required: true
66
+ series_outline: background
67
+ source_note_required: true
68
+ zero_baseline_required_for_bars: true
69
+ diagrams:
70
+ connector_style: simple
71
+ maximum_nodes: 6
72
+ slide_patterns:
73
+ - title
74
+ - key-findings
75
+ - metric-scorecard
76
+ - trend
77
+ - comparison
78
+ - distribution
79
+ - drivers
80
+ - implication
81
+ - recommendation
82
+ - appendix-method
83
+ accessibility:
84
+ minimum_body_size_pt: 15
85
+ minimum_contrast_ratio: 4.5
86
+ never_use_color_alone: true
87
+ alt_text_required: true
88
+ constraints:
89
+ - one primary message per slide
90
+ - assertion title required
91
+ - chart axes and units must be visible
92
+ - uncertainty and sample size must be disclosed
93
+ - three-dimensional charts are prohibited
94
+ - Microsoft logo colors are not used for small text on white
95
+ - brand_yellow uses a direct label and pattern or marker encoding
96
+ - charts with more than three series add pattern or shape encoding
97
+ deviations: []
@@ -0,0 +1,92 @@
1
+ id: executive-proposal
2
+ base_template: null
3
+ intent:
4
+ - executive decision
5
+ - investment approval
6
+ - transformation roadmap
7
+ - technical proposal
8
+ canvas:
9
+ aspect_ratio: "16:9"
10
+ width_in: 13.333
11
+ height_in: 7.5
12
+ safe_area_percent: 6
13
+ grid_columns: 12
14
+ max_content_blocks: 4
15
+ colors:
16
+ background: "#FFFFFF"
17
+ surface: "#F3F3F3"
18
+ text_primary: "#1B1B1B"
19
+ text_secondary: "#505050"
20
+ accent: "#005A9E"
21
+ accent_soft: "#E5F1FB"
22
+ border_neutral: "#8A8886"
23
+ positive: "#107C10"
24
+ warning: "#8A5A00"
25
+ critical: "#A4262C"
26
+ brand_red: "#F25022"
27
+ brand_green: "#7FBA00"
28
+ brand_blue: "#00A4EF"
29
+ brand_yellow: "#FFB900"
30
+ chart_sequence:
31
+ - "#005A9E"
32
+ - "#F25022"
33
+ - "#767676"
34
+ typography:
35
+ heading_font: "Aptos Display"
36
+ body_font: "Aptos"
37
+ title_size_pt: 30
38
+ section_title_size_pt: 26
39
+ body_size_pt: 18
40
+ caption_size_pt: 11
41
+ title_weight: 700
42
+ body_line_spacing: 1.15
43
+ spacing:
44
+ outer_margin_percent: 6
45
+ content_gap_percent: 2
46
+ card_padding_percent: 2
47
+ components:
48
+ cards:
49
+ corner_radius: medium
50
+ border: none
51
+ shadow: subtle
52
+ callouts:
53
+ use_accent_bar: true
54
+ maximum_per_slide: 1
55
+ tables:
56
+ header_fill: accent_soft
57
+ header_text: text_primary
58
+ zebra_rows: true
59
+ maximum_rows: 7
60
+ charts:
61
+ style: direct-label
62
+ gridlines: minimal
63
+ direct_labels_required: true
64
+ series_outline: background
65
+ source_note_required: true
66
+ diagrams:
67
+ connector_style: orthogonal
68
+ maximum_nodes: 7
69
+ slide_patterns:
70
+ - title
71
+ - executive-summary
72
+ - problem-evidence
73
+ - option-comparison
74
+ - recommendation
75
+ - roadmap
76
+ - investment-and-value
77
+ - risk-and-mitigation
78
+ - decision-request
79
+ accessibility:
80
+ minimum_body_size_pt: 16
81
+ minimum_contrast_ratio: 4.5
82
+ never_use_color_alone: true
83
+ alt_text_required: true
84
+ constraints:
85
+ - one primary message per slide
86
+ - assertion title required
87
+ - no more than one chart per slide
88
+ - no decorative stock imagery without narrative value
89
+ - Microsoft logo colors are not used for small text on white
90
+ - brand_yellow uses a direct label and pattern or marker encoding
91
+ - charts with more than three series add pattern or shape encoding
92
+ deviations: []
@@ -0,0 +1,96 @@
1
+ id: technical-briefing
2
+ base_template: null
3
+ intent:
4
+ - architecture explanation
5
+ - engineering review
6
+ - technical proposal
7
+ - implementation briefing
8
+ canvas:
9
+ aspect_ratio: "16:9"
10
+ width_in: 13.333
11
+ height_in: 7.5
12
+ safe_area_percent: 5
13
+ grid_columns: 12
14
+ max_content_blocks: 5
15
+ colors:
16
+ background: "#FFFFFF"
17
+ surface: "#F3F3F3"
18
+ text_primary: "#1B1B1B"
19
+ text_secondary: "#505050"
20
+ accent: "#005A9E"
21
+ accent_soft: "#E5F1FB"
22
+ border_neutral: "#8A8886"
23
+ positive: "#107C10"
24
+ warning: "#8A5A00"
25
+ critical: "#A4262C"
26
+ brand_red: "#F25022"
27
+ brand_green: "#7FBA00"
28
+ brand_blue: "#00A4EF"
29
+ brand_yellow: "#FFB900"
30
+ chart_sequence:
31
+ - "#005A9E"
32
+ - "#F25022"
33
+ - "#767676"
34
+ typography:
35
+ heading_font: "Aptos Display"
36
+ body_font: "Aptos"
37
+ code_font: "Cascadia Mono"
38
+ title_size_pt: 28
39
+ section_title_size_pt: 24
40
+ body_size_pt: 17
41
+ code_size_pt: 13
42
+ caption_size_pt: 10
43
+ title_weight: 700
44
+ body_line_spacing: 1.12
45
+ spacing:
46
+ outer_margin_percent: 5
47
+ content_gap_percent: 1.5
48
+ card_padding_percent: 1.5
49
+ components:
50
+ cards:
51
+ corner_radius: small
52
+ border: border_neutral
53
+ shadow: none
54
+ callouts:
55
+ use_accent_bar: true
56
+ maximum_per_slide: 2
57
+ tables:
58
+ header_fill: accent_soft
59
+ header_text: text_primary
60
+ zebra_rows: false
61
+ maximum_rows: 8
62
+ charts:
63
+ style: technical
64
+ gridlines: subtle
65
+ direct_labels_required: true
66
+ series_outline: background
67
+ source_note_required: true
68
+ diagrams:
69
+ connector_style: orthogonal
70
+ maximum_nodes: 9
71
+ boundary_labels_required: true
72
+ slide_patterns:
73
+ - title
74
+ - system-context
75
+ - architecture
76
+ - sequence-or-flow
77
+ - component-responsibilities
78
+ - interface-and-data
79
+ - security-boundaries
80
+ - implementation-plan
81
+ - tradeoffs
82
+ - decision-request
83
+ accessibility:
84
+ minimum_body_size_pt: 15
85
+ minimum_contrast_ratio: 4.5
86
+ never_use_color_alone: true
87
+ alt_text_required: true
88
+ constraints:
89
+ - one primary message per slide
90
+ - assertion title required
91
+ - code samples limited to twelve visible lines
92
+ - diagrams must identify trust or ownership boundaries
93
+ - Microsoft logo colors are not used for small text on white
94
+ - brand_yellow uses a direct label and pattern or marker encoding
95
+ - charts with more than three series add pattern or shape encoding
96
+ deviations: []
@@ -0,0 +1,47 @@
1
+ # Data report presentation scenario
2
+
3
+ Use this scenario for KPI reviews, research findings, operational analysis,
4
+ experiments, surveys, or evidence-led recommendations.
5
+
6
+ - Working title: <presentation title>
7
+ - Audience: <decision-makers or analysts>
8
+ - Question to answer: <one analytical question>
9
+ - Decision or action enabled: <outcome>
10
+ - Analysis period: <date range>
11
+ - Data sources: <systems, files, studies>
12
+ - Target slide count: <count or range>
13
+
14
+ ## Scenario arc
15
+
16
+ | Stage | Audience question | Assertion to establish | Required evidence | Transition to next stage | Suggested slides |
17
+ |---|---|---|---|---|---:|
18
+ | Question | What decision-relevant question does the analysis answer? | <the question and success measure are unambiguous> | <business context, metric definition> | Explain whether the data can answer it credibly | 1 |
19
+ | Method | How reliable and comparable is the analysis? | <scope, source, sample, and method support the conclusion> | <definitions, coverage, exclusions> | Present the most decision-relevant findings first | 1 |
20
+ | Finding | What changed or differs materially? | <one quantified finding per slide> | <chart, table, confidence, baseline> | Move from observation to explanation | 2–4 |
21
+ | Interpretation | Why did it happen and what uncertainty remains? | <drivers and limitations explain the finding without overstating causality> | <segmentation, comparison, caveats> | Translate the finding into impact | 1–2 |
22
+ | Impact | Why does the result matter? | <finding changes cost, risk, experience, or opportunity> | <scenario, forecast, affected population> | Compare available responses | 1–2 |
23
+ | Recommendation | What action follows from the evidence? | <recommended action is proportional to evidence and uncertainty> | <options, expected effect, cost> | Define measurement and ownership | 1–2 |
24
+ | Next measure | How will we know the action worked? | <owner, metric, target, and review date close the loop> | <measurement plan> | End with the required decision or action | 1 |
25
+
26
+ ## Claim and evidence register
27
+
28
+ | Claim | Metric definition | Source | Analysis period | Confidence | Caveat |
29
+ |---|---|---|---|---|---|
30
+ | <claim> | <numerator, denominator, unit> | <source> | <period> | High / Medium / Low | <limitation> |
31
+
32
+ ## Analytical integrity checks
33
+
34
+ - Baseline and comparison periods: <definitions>
35
+ - Population, sample, and exclusions: <definitions>
36
+ - Missing data and outliers: <treatment>
37
+ - Correlation versus causation: <allowed conclusion>
38
+ - Statistical or practical significance: <threshold>
39
+ - Reproducibility: <query, notebook, report, owner>
40
+
41
+ ## Scenario acceptance checks
42
+
43
+ - The analytical question and metric definitions precede the findings.
44
+ - Each finding slide states one quantified conclusion, unit, period, and source.
45
+ - Limitations and uncertainty appear before recommendations.
46
+ - Recommendations are proportional to the strength of the evidence.
47
+ - The final stage assigns an action, metric, owner, and review date.
@@ -0,0 +1,43 @@
1
+ # Executive decision presentation scenario
2
+
3
+ Use this scenario when executives or accountable sponsors must approve an
4
+ investment, architecture, roadmap, policy, or delivery decision.
5
+
6
+ - Working title: <presentation title>
7
+ - Audience: <decision-makers and prior knowledge>
8
+ - Decision required: <one explicit approval or choice>
9
+ - Decision deadline: <date or meeting>
10
+ - Current audience position: <what they believe or question now>
11
+ - Intended final position: <what they should believe and do>
12
+ - Target slide count: <count or range>
13
+
14
+ ## Scenario arc
15
+
16
+ | Stage | Audience question | Assertion to establish | Required evidence | Transition to next stage | Suggested slides |
17
+ |---|---|---|---|---|---:|
18
+ | Context | Why does this require attention now? | <change, deadline, or opportunity makes action timely> | <external change, KPI, commitment> | If action is timely, show the consequence of inaction | 1–2 |
19
+ | Tension | What happens if we continue as-is? | <current state creates measurable cost, risk, or delay> | <baseline, incident, trend, user impact> | Once the gap is credible, define the decision criteria | 1–2 |
20
+ | Criteria | How should the options be judged? | <shared cost, value, risk, and feasibility criteria> | <constraints, targets, policy> | Compare options using the agreed criteria | 1 |
21
+ | Options | What choices are realistically available? | <credible alternatives include the status quo> | <comparable analysis> | Identify the option that best satisfies the criteria | 1–2 |
22
+ | Recommendation | What should we choose and why? | <recommended option delivers the best justified outcome> | <benefits, trade-offs, TCO, evidence> | Show that execution risk is controlled | 1–2 |
23
+ | Plan | Can this be delivered safely? | <owners, milestones, controls, and rollback make delivery feasible> | <roadmap, staffing, risk controls> | Convert confidence into a precise decision | 1–2 |
24
+ | Decision | What exactly must be approved today? | <specific approval, funding, owner, and next checkpoint> | <decision wording and consequences> | End with the requested action | 1 |
25
+
26
+ ## Evidence gaps and assumptions
27
+
28
+ | Claim needed by the scenario | Source | Status | Assumption or follow-up |
29
+ |---|---|---|---|
30
+ | <claim> | <file, URL, owner> | Verified / Assumption / Missing | <action> |
31
+
32
+ ## Objections to resolve
33
+
34
+ | Likely objection | Where it is answered | Evidence or concession |
35
+ |---|---|---|
36
+ | <cost, risk, timing, alternative> | <scenario stage> | <response> |
37
+
38
+ ## Scenario acceptance checks
39
+
40
+ - Reading only the assertions forms a complete decision argument.
41
+ - The status quo and at least one alternative use the same evaluation axes.
42
+ - Benefits, cost, risks, and delivery controls are evidence-based.
43
+ - The final stage asks for one explicit decision with an owner and deadline.
@@ -0,0 +1,45 @@
1
+ # Technical briefing presentation scenario
2
+
3
+ Use this scenario to explain an architecture, engineering change, technical
4
+ proposal, system behavior, or implementation approach to a technical audience.
5
+
6
+ - Working title: <presentation title>
7
+ - Audience: <engineers, architects, operators, reviewers>
8
+ - Prior-knowledge floor: <what can be assumed>
9
+ - Understanding or decision required: <outcome>
10
+ - Technical depth: Overview / Working knowledge / Review-ready
11
+ - Target slide count: <count or range>
12
+
13
+ ## Scenario arc
14
+
15
+ | Stage | Audience question | Assertion to establish | Required evidence | Transition to next stage | Suggested slides |
16
+ |---|---|---|---|---|---:|
17
+ | Context | What system and constraint are we discussing? | <boundary, users, and constraints define the problem> | <context diagram, requirements> | Show where the current design fails or must change | 1–2 |
18
+ | Problem | What technical problem must be solved? | <specific quality or delivery gap requires a design response> | <failure mode, measurement, limitation> | State the design drivers used to judge solutions | 1–2 |
19
+ | Drivers | What properties matter most? | <requirements and quality attributes determine the design> | <NFRs, constraints, priorities> | Introduce the architecture that satisfies them | 1 |
20
+ | Architecture | How is the solution structured? | <components and boundaries assign clear responsibilities> | <context, container, deployment diagrams> | Walk through the critical behavior | 2–3 |
21
+ | Flow | What happens in the important scenarios? | <data and control flow meet functional and failure requirements> | <sequence, state, data flow> | Examine trade-offs and failure behavior | 1–3 |
22
+ | Trade-offs | Why this design instead of alternatives? | <accepted costs are justified by the design drivers> | <alternatives, benchmarks, risks> | Show that the design can be operated and evolved | 1–2 |
23
+ | Operations | How will it be secured, observed, scaled, and recovered? | <operational controls make the design production-ready> | <SLO, threat controls, runbook, capacity> | Close with implementation or review actions | 1–2 |
24
+ | Next step | What must the audience do next? | <review decision, implementation step, or open issue is explicit> | <owners, dates, unresolved decisions> | End with the required action | 1 |
25
+
26
+ ## Technical evidence map
27
+
28
+ | Assertion | Requirement or decision ID | Source artifact | Confidence | Missing validation |
29
+ |---|---|---|---|---|
30
+ | <assertion> | <FR/NFR/ADR/Issue> | <file or URL> | High / Medium / Low | <test or review> |
31
+
32
+ ## Complexity controls
33
+
34
+ - Terms requiring definition: <terms>
35
+ - Details delegated to appendix: <schemas, exhaustive tables, code>
36
+ - Diagrams required: <context, sequence, data, deployment>
37
+ - Known limitations: <unsupported or deferred behavior>
38
+
39
+ ## Scenario acceptance checks
40
+
41
+ - The system boundary and design drivers appear before component detail.
42
+ - Architecture diagrams and processing flows carry the primary explanation.
43
+ - Alternatives and accepted trade-offs are explicit.
44
+ - Security, operation, failure, and recovery behavior are not deferred silently.
45
+ - The final stage identifies a review decision or implementation action.
@@ -0,0 +1,160 @@
1
+ # Customizing presentation design templates
2
+
3
+ Use this guide to adapt a packaged design for one presentation or to add a
4
+ new reusable design to kotonoha. Design templates are YAML specifications;
5
+ they are not `.pptx` theme files and do not replace the host's PPTX creation
6
+ skill.
7
+
8
+ ## Choose between a deck override and a packaged template
9
+
10
+ Use a **deck override** when one presentation needs different colors, type,
11
+ spacing, or component behavior. Copy a packaged design into:
12
+
13
+ ```text
14
+ .presentation/<deck-slug>/design-spec.yaml
15
+ ```
16
+
17
+ Use a **new packaged template** only when the design will be reused across
18
+ multiple presentations or teams. Add it under:
19
+
20
+ ```text
21
+ skills/presentation-planner/assets/design-templates/<template-id>.yaml
22
+ ```
23
+
24
+ Do not edit a packaged template merely to customize one deck; that changes
25
+ future presentations and makes upgrades harder to compare.
26
+
27
+ ## Copy and identify an adapted design
28
+
29
+ 1. Copy the closest packaged YAML file to the deck directory.
30
+ 2. Set `base_template` to the packaged template's original `id`.
31
+ 3. Change `id` to a deck-specific value such as
32
+ `<deck-slug>:<base-template>`.
33
+ 4. Keep every documented top-level key from
34
+ `design-spec-schema.md`.
35
+ 5. Record intentional changes under `deviations`.
36
+
37
+ Example:
38
+
39
+ ```yaml
40
+ id: migration-proposal:executive-proposal
41
+ base_template: executive-proposal
42
+ deviations:
43
+ - "Use the customer-approved heading font."
44
+ - "Increase the table row limit from 7 to 9 for the appendix."
45
+ ```
46
+
47
+ ## Change colors by semantic role
48
+
49
+ Change the meaning-bearing token rather than replacing colors wherever they
50
+ appear.
51
+
52
+ ```yaml
53
+ colors:
54
+ background: "#FFFFFF"
55
+ surface: "#F3F3F3"
56
+ text_primary: "#1B1B1B"
57
+ text_secondary: "#505050"
58
+ accent: "#005A9E"
59
+ accent_soft: "#E5F1FB"
60
+ border_neutral: "#8A8886"
61
+ positive: "#107C10"
62
+ warning: "#8A5A00"
63
+ critical: "#A4262C"
64
+ ```
65
+
66
+ The packaged designs expose Microsoft's corporate logo colors as brand
67
+ tokens:
68
+
69
+ ```yaml
70
+ brand_red: "#F25022"
71
+ brand_green: "#7FBA00"
72
+ brand_blue: "#00A4EF"
73
+ brand_yellow: "#FFB900"
74
+ ```
75
+
76
+ Keep the following rules when changing the palette:
77
+
78
+ - Keep `background` white unless the presentation requirement explicitly
79
+ overrides the packaged visual direction.
80
+ - Maintain at least the declared `minimum_contrast_ratio` for text.
81
+ - Do not use the four logo colors for small text on white without checking
82
+ the actual contrast.
83
+ - Give `brand_yellow` and other low-contrast chart series a direct label plus
84
+ pattern or marker encoding.
85
+ - Never use color as the only way to communicate status or series identity.
86
+ - Keep categorical charts to the packaged three-series sequence where
87
+ possible; use pattern, marker, or shape encoding for additional series.
88
+
89
+ ## Change typography and spacing
90
+
91
+ Update font families only when the target environment has them or the PPTX
92
+ skill can embed or substitute them predictably.
93
+
94
+ ```yaml
95
+ typography:
96
+ heading_font: "Aptos Display"
97
+ body_font: "Aptos"
98
+ title_size_pt: 30
99
+ body_size_pt: 18
100
+
101
+ spacing:
102
+ outer_margin_percent: 6
103
+ content_gap_percent: 2
104
+ card_padding_percent: 2
105
+ ```
106
+
107
+ - Keep body text at or above `accessibility.minimum_body_size_pt`.
108
+ - Use percentages for margins and gaps instead of absolute object
109
+ coordinates.
110
+ - Record required font substitutions in `deviations`.
111
+
112
+ ## Change components and slide patterns
113
+
114
+ Use only values documented in `design-spec-schema.md`.
115
+
116
+ ```yaml
117
+ components:
118
+ tables:
119
+ header_fill: accent_soft
120
+ header_text: text_primary
121
+ maximum_rows: 7
122
+ charts:
123
+ style: direct-label
124
+ gridlines: minimal
125
+ direct_labels_required: true
126
+ series_outline: background
127
+ ```
128
+
129
+ `slide_patterns` declares supported presentation intents, not PowerPoint
130
+ layout names or coordinates. Add a pattern only when the handoff can describe
131
+ its information structure and the PPTX skill can render it without
132
+ template-specific code in `presentation-planner`.
133
+
134
+ ## Validate an adapted design before handoff
135
+
136
+ Check all of the following:
137
+
138
+ - The YAML parses successfully.
139
+ - All top-level keys from `design-spec-schema.md` remain present.
140
+ - Every token reference resolves to a key under `colors`.
141
+ - Text and table-header foreground/background pairs meet the contrast floor.
142
+ - Chart series remain distinguishable without color alone.
143
+ - `id`, `base_template`, and `deviations` describe the adaptation accurately.
144
+ - The PPTX handoff points to the adapted file, not the packaged base file.
145
+
146
+ If the renderer cannot implement a token or component value, update the
147
+ design spec with an explicit fallback. Do not add PPTX generation code to
148
+ this skill.
149
+
150
+ ## Add a reusable packaged template
151
+
152
+ When adding a new base template:
153
+
154
+ 1. Add `<template-id>.yaml` under `assets/design-templates/`.
155
+ 2. Add the template to the selection table in `SKILL.md`.
156
+ 3. Document its intended and unsuitable use cases.
157
+ 4. Add the filename to the packed-artifact test in `test/install.test.js`.
158
+ 5. Update `CHANGELOG.md`.
159
+ 6. Run the repository tests, Markdown lint, YAML schema checks, and contrast
160
+ checks before committing.
@@ -0,0 +1,72 @@
1
+ # Design specification schema
2
+
3
+ Each packaged YAML design uses the following stable top-level keys.
4
+
5
+ | Key | Purpose |
6
+ |---|---|
7
+ | `id` | Unique specification identifier; change it for an adapted deck |
8
+ | `base_template` | Packaged template ID from which the spec was adapted |
9
+ | `intent` | Presentations this design supports |
10
+ | `canvas` | Aspect ratio, dimensions, safe area, and grid |
11
+ | `colors` | Semantic color tokens and chart sequence |
12
+ | `typography` | Font families, sizes, weights, and line spacing |
13
+ | `spacing` | Margins, gaps, and density limits |
14
+ | `components` | Cards, callouts, tables, charts, and diagrams |
15
+ | `slide_patterns` | Supported layout intents, not binary PPTX layouts |
16
+ | `accessibility` | Contrast, minimum type, alt text, and color-use rules |
17
+ | `constraints` | Rules the PPTX skill must not violate |
18
+ | `deviations` | Deliberate differences from the packaged base template |
19
+
20
+ ## Portable component vocabulary
21
+
22
+ Use only these renderer-independent values unless a deviation explains the
23
+ fallback:
24
+
25
+ | Field | Allowed values |
26
+ |---|---|
27
+ | `corner_radius` | `none`, `small`, `medium`, `large` |
28
+ | `shadow` | `none`, `subtle`, `medium` |
29
+ | `charts.style` | `direct-label`, `technical`, `analytical` |
30
+ | `charts.gridlines` | `none`, `subtle`, `minimal` |
31
+ | `charts.series_outline` | `none` or an exact key under `colors` |
32
+ | `charts.direct_labels_required` | `true` or `false` |
33
+ | `connector_style` | `simple`, `orthogonal`, `curved` |
34
+ | `cards.border` | `none` or an exact key under `colors` |
35
+ | `tables.header_fill` | `none` or an exact key under `colors` |
36
+ | `tables.header_text` | an exact key under `colors` |
37
+
38
+ Values that reference a color token must exactly match a key under `colors`,
39
+ for example `accent_soft`, not a display label such as `accent-soft`.
40
+ Do not assume that `accent` text is readable on `accent_soft`; validate the
41
+ actual foreground/background pair against `minimum_contrast_ratio`.
42
+
43
+ The packaged designs expose Microsoft's four corporate logo colors as
44
+ `brand_red`, `brand_green`, `brand_blue`, and `brand_yellow`. Treat them as
45
+ brand or decorative tokens, not as an automatic categorical chart palette.
46
+ Do not use them for small text on white unless the actual pair passes the
47
+ contrast threshold; `brand_yellow` requires a direct label plus pattern or
48
+ marker encoding on a white canvas.
49
+
50
+ The packaged categorical `chart_sequence` is intentionally capped at three
51
+ well-separated series: dark Microsoft blue, Microsoft red, and neutral gray.
52
+ When a chart needs more than three series, add pattern, marker, or shape
53
+ encoding instead of appending the remaining logo colors.
54
+
55
+ `charts.series_outline: background` separates adjacent stacked, pie, or area
56
+ segments; it does not make a light fill visible against the canvas. Use
57
+ direct labels and pattern or marker encoding for light series.
58
+
59
+ Nested typography and component keys may be omitted when irrelevant. A
60
+ renderer must use its documented defaults for missing optional keys rather
61
+ than treating every packaged template as an identical nested schema.
62
+
63
+ ## Adaptation rules
64
+
65
+ - Keep the documented top-level keys stable. Optional nested keys may vary by
66
+ presentation intent.
67
+ - Use brand colors only after assigning semantic roles such as `accent`,
68
+ `positive`, `warning`, and `critical`.
69
+ - Do not specify absolute object coordinates. Layout engines differ; use
70
+ proportions, alignment, safe areas, and maximum element counts.
71
+ - Prefer one dominant visual hierarchy per slide.
72
+ - Record all changes from the packaged template under `deviations`.