@jini-ai/agent-plugins 0.6.17 → 0.6.19
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.
- package/CHANGELOG.md +29 -1
- package/NOTICE +14 -0
- package/README.md +35 -14
- package/charts-echarts/plugin.json +39 -0
- package/charts-echarts/skills/charts-echarts/SKILL.md +110 -0
- package/charts-recharts/plugin.json +32 -0
- package/charts-recharts/skills/charts-recharts/SKILL.md +108 -0
- package/cloudflare/NOTES.md +16 -0
- package/cloudflare/form-destinations/cloudflare-d1.mjs +9 -0
- package/cloudflare/lib/api.mjs +96 -0
- package/cloudflare/lib/assets.mjs +65 -0
- package/cloudflare/lib/dns.mjs +32 -0
- package/cloudflare/lib/domain-inventory.mjs +61 -0
- package/cloudflare/lib/domain-status.mjs +48 -0
- package/cloudflare/lib/domains.mjs +95 -0
- package/cloudflare/lib/forms.mjs +254 -0
- package/cloudflare/lib/pages-upload.mjs +51 -0
- package/cloudflare/lib/target.mjs +165 -0
- package/cloudflare/lib/workers-upload.mjs +48 -0
- package/cloudflare/lib/zones.mjs +25 -0
- package/cloudflare/mcp.json +4 -0
- package/cloudflare/plugin.json +96 -0
- package/cloudflare/skills/cloudflare/SKILL.md +57 -0
- package/cloudflare/skills/cloudflare/references/domains.md +31 -0
- package/cloudflare/skills/cloudflare/references/pages.md +18 -0
- package/cloudflare/skills/cloudflare/references/permissions.md +29 -0
- package/cloudflare/skills/cloudflare/references/troubleshooting.md +20 -0
- package/cloudflare/skills/cloudflare/references/workers.md +42 -0
- package/cloudflare/targets/cloudflare-pages.mjs +12 -0
- package/cloudflare/targets/cloudflare-workers.mjs +17 -0
- package/cloudflare/tovu-consent.json +6 -0
- package/cloudflare/tovu-deploy-targets.json +630 -0
- package/cloudflare/tovu-form-destinations.json +12 -0
- package/cloudflare/worker/forms-receiver.mjs +249 -0
- package/composio/mcp.json +10 -0
- package/composio/plugin.json +68 -0
- package/composio/skills/composio/SKILL.md +85 -0
- package/dist/core/identity-namespace.d.ts +12 -0
- package/dist/core/identity-namespace.js +20 -0
- package/dist/folder-zip-node.js +29 -7
- package/dist/lifecycle/bundled-digests.js +4 -3
- package/dist/lifecycle/install.d.ts +7 -0
- package/dist/lifecycle/install.js +45 -3
- package/dist/lifecycle/manifest.d.ts +2 -2
- package/dist/lifecycle/manifest.js +5 -3
- package/dist/lifecycle/node.js +2 -0
- package/dist/lifecycle/persistent-state.js +1 -1
- package/dist/lifecycle/ports.d.ts +8 -0
- package/dist/lifecycle/seed-bundled.js +4 -1
- package/dist/manifest.d.ts +1 -1
- package/dist/manifest.js +3 -2
- package/fly/deploy-configs/fly.mjs +115 -0
- package/fly/deploy-ops/fly.mjs +102 -0
- package/fly/mcp.json +4 -0
- package/fly/plugin.json +81 -0
- package/fly/scripts/render-deploy-workflow.mjs +150 -0
- package/fly/skills/fly/SKILL.md +43 -0
- package/fly/skills/fly/references/fly-deploy.template.yml +117 -0
- package/fly/skills/fly/references/fly.template.toml +81 -0
- package/fly/tovu-credential-schemes.json +11 -0
- package/fly/tovu-deploy-configs.json +21 -0
- package/fly/tovu-deploy-ops.json +14 -0
- package/github/deploy-ops/github-actions.mjs +164 -0
- package/github/deployments/github.mjs +415 -0
- package/github/mcp.json +4 -0
- package/github/plugin.json +105 -0
- package/github/skills/github/SKILL.md +249 -0
- package/github/skills/github/references/actions.md +224 -0
- package/github/skills/github/references/auth-and-tokens.md +140 -0
- package/github/skills/github/references/repo-files.md +135 -0
- package/github/skills/github/references/site-backup.md +159 -0
- package/github/skills/github/references/source-control.md +123 -0
- package/github/source-control/backup-push.mjs +242 -0
- package/github/source-control/commit-site.mjs +459 -0
- package/github/source-control/github.mjs +93 -0
- package/github/source-control/write-files.mjs +468 -0
- package/github/tovu-deploy-ops.json +13 -0
- package/github/tovu-source-control.json +117 -0
- package/github-pages/NOTES.md +19 -0
- package/github-pages/mcp.json +4 -0
- package/github-pages/plugin.json +48 -0
- package/github-pages/skills/github-pages/SKILL.md +44 -0
- package/github-pages/targets/github-pages.mjs +543 -0
- package/github-pages/tovu-deploy-targets.json +327 -0
- package/google-login/exports/google-g.svg +1 -0
- package/google-login/exports/sign-in-button.css +68 -0
- package/google-login/exports/sign-in-button.html +4 -0
- package/google-login/mcp.json +4 -0
- package/google-login/plugin.json +59 -0
- package/google-login/skills/google-login/SKILL.md +96 -0
- package/google-login/tovu-login-providers.json +21 -0
- package/google-workspace/README.md +132 -0
- package/google-workspace/form-destinations/README.md +87 -0
- package/google-workspace/form-destinations/dedupe.mjs +43 -0
- package/google-workspace/form-destinations/delivery-result.mjs +69 -0
- package/google-workspace/form-destinations/mapping.mjs +152 -0
- package/google-workspace/form-destinations/sheets.mjs +202 -0
- package/google-workspace/lib/auth.mjs +81 -0
- package/google-workspace/lib/drive-files.mjs +54 -0
- package/google-workspace/lib/form-destination-settings.mjs +72 -0
- package/google-workspace/lib/http.mjs +168 -0
- package/google-workspace/lib/picker-flow.mjs +171 -0
- package/google-workspace/lib/picker-selection.mjs +107 -0
- package/google-workspace/lib/product-state.mjs +93 -0
- package/google-workspace/lib/request-policy.mjs +163 -0
- package/google-workspace/lib/sheets-a1.mjs +79 -0
- package/google-workspace/lib/sheets-admin-csv.mjs +82 -0
- package/google-workspace/lib/sheets-admin-request-kinds.mjs +183 -0
- package/google-workspace/lib/sheets-client.mjs +286 -0
- package/google-workspace/lib/surface-actions.mjs +107 -0
- package/google-workspace/mcp.json +4 -0
- package/google-workspace/plugin.json +77 -0
- package/google-workspace/products.json +12 -0
- package/google-workspace/skills/google-workspace/SKILL.md +82 -0
- package/google-workspace/skills/google-workspace/references/connection.md +102 -0
- package/google-workspace/skills/google-workspace/references/form-delivery.md +50 -0
- package/google-workspace/skills/google-workspace/references/sheets.md +149 -0
- package/google-workspace/skills/google-workspace/references/troubleshooting.md +31 -0
- package/google-workspace/tools/account-info.mjs +18 -0
- package/google-workspace/tools/sheets/README.md +54 -0
- package/google-workspace/tools/sheets/copy-tab.mjs +23 -0
- package/google-workspace/tools/sheets/copy.mjs +23 -0
- package/google-workspace/tools/sheets/create.mjs +35 -0
- package/google-workspace/tools/sheets/find-replace.mjs +38 -0
- package/google-workspace/tools/sheets/find.mjs +52 -0
- package/google-workspace/tools/sheets/get-by-data-filter.mjs +23 -0
- package/google-workspace/tools/sheets/get.mjs +22 -0
- package/google-workspace/tools/sheets/values-append.mjs +27 -0
- package/google-workspace/tools/sheets/values-batch-clear.mjs +20 -0
- package/google-workspace/tools/sheets/values-batch-get.mjs +20 -0
- package/google-workspace/tools/sheets/values-batch-update.mjs +29 -0
- package/google-workspace/tools/sheets/values-by-data-filter.mjs +62 -0
- package/google-workspace/tools/sheets/values-clear.mjs +20 -0
- package/google-workspace/tools/sheets/values-get.mjs +21 -0
- package/google-workspace/tools/sheets/values-update.mjs +26 -0
- package/google-workspace/tools/sheets-admin/README.md +45 -0
- package/google-workspace/tools/sheets-admin/basic-filter.mjs +32 -0
- package/google-workspace/tools/sheets-admin/batch-update.mjs +25 -0
- package/google-workspace/tools/sheets-admin/developer-metadata.mjs +28 -0
- package/google-workspace/tools/sheets-admin/export-csv.mjs +67 -0
- package/google-workspace/tools/sheets-admin/filter-views.mjs +38 -0
- package/google-workspace/tools/sheets-admin/format.mjs +70 -0
- package/google-workspace/tools/sheets-admin/named-ranges.mjs +42 -0
- package/google-workspace/tools/sheets-admin/open-existing.mjs +34 -0
- package/google-workspace/tools/sheets-admin/protected-ranges-get.mjs +18 -0
- package/google-workspace/tools/sheets-admin/sort.mjs +18 -0
- package/google-workspace/tools/sheets-admin/tab-modify.mjs +36 -0
- package/google-workspace/tovu-admin-surfaces.json +63 -0
- package/google-workspace/tovu-agent-tools.json +1178 -0
- package/google-workspace/tovu-connections.json +35 -0
- package/google-workspace/tovu-form-destinations.json +10 -0
- package/google-workspace/ui/README.md +73 -0
- package/google-workspace/ui/connection-panel.handler.mjs +167 -0
- package/google-workspace/ui/connection-panel.html +17 -0
- package/google-workspace/ui/connection-panel.mjs +189 -0
- package/google-workspace/ui/connection-view.mjs +120 -0
- package/google-workspace/ui/destination-panel.handler.mjs +106 -0
- package/google-workspace/ui/destination-panel.html +17 -0
- package/google-workspace/ui/destination-panel.mjs +150 -0
- package/google-workspace/ui/dom.mjs +140 -0
- package/google-workspace/ui/panel.css +170 -0
- package/google-workspace/ui/picker-flow.mjs +87 -0
- package/google-workspace/ui/picker-view.mjs +44 -0
- package/google-workspace/ui/picker.handler.mjs +56 -0
- package/google-workspace/ui/picker.html +17 -0
- package/google-workspace/ui/picker.mjs +88 -0
- package/google-workspace/ui/surface-client.mjs +227 -0
- package/higgsfield-media/mcp.json +9 -0
- package/higgsfield-media/plugin.json +109 -0
- package/higgsfield-media/skills/higgsfield-media/SKILL.md +325 -0
- package/higgsfield-media/skills/higgsfield-media/references/failure-modes.md +116 -0
- package/higgsfield-media/skills/higgsfield-media/references/models-and-plan-gates.md +142 -0
- package/jev/mcp.json +4 -0
- package/jev/plugin.json +44 -0
- package/jev/skills/jev/SKILL.md +308 -0
- package/jev/skills/jev/references/cookbooks.md +197 -0
- package/jev/skills/jev/references/jaggedness.md +135 -0
- package/jev/skills/jev/references/javascript-sdk.md +146 -0
- package/jev/skills/jev/references/patterns.md +123 -0
- package/jev/skills/jev/references/primitives-reference.md +187 -0
- package/langfuse/plugin.json +22 -0
- package/meilisearch/mcp.json +4 -0
- package/meilisearch/plugin.json +54 -0
- package/meilisearch/providers/meilisearch.mjs +651 -0
- package/meilisearch/skills/meilisearch/SKILL.md +43 -0
- package/meilisearch/tovu-search-providers.json +10 -0
- package/netlify/NOTES.md +13 -0
- package/netlify/mcp.json +4 -0
- package/netlify/plugin.json +47 -0
- package/netlify/skills/netlify/SKILL.md +39 -0
- package/netlify/targets/netlify.mjs +384 -0
- package/netlify/tovu-consent.json +6 -0
- package/netlify/tovu-deploy-targets.json +163 -0
- package/opentelemetry/mcp.json +4 -0
- package/opentelemetry/plugin.json +52 -0
- package/opentelemetry/skills/opentelemetry/SKILL.md +39 -0
- package/package.json +161 -6
- package/posthog/mcp.json +4 -0
- package/posthog/plugin.json +46 -0
- package/posthog/skills/posthog/SKILL.md +36 -0
- package/railway/deploy-configs/railway.mjs +135 -0
- package/railway/deploy-ops/railway.mjs +167 -0
- package/railway/mcp.json +4 -0
- package/railway/plugin.json +45 -0
- package/railway/skills/railway/SKILL.md +66 -0
- package/railway/tovu-deploy-configs.json +16 -0
- package/railway/tovu-deploy-ops.json +11 -0
- package/render/deploy-configs/render.mjs +141 -0
- package/render/deploy-ops/render.mjs +152 -0
- package/render/mcp.json +4 -0
- package/render/plugin.json +47 -0
- package/render/skills/render/SKILL.md +63 -0
- package/render/tovu-deploy-configs.json +16 -0
- package/render/tovu-deploy-ops.json +11 -0
- package/resend/NOTES.md +52 -0
- package/resend/adapters/resend.mjs +161 -0
- package/resend/lib/domains.mjs +137 -0
- package/resend/lib/errors.mjs +25 -0
- package/resend/lib/feedback.mjs +118 -0
- package/resend/mcp.json +13 -0
- package/resend/plugin.json +192 -0
- package/resend/skills/resend/SKILL.md +107 -0
- package/resend/tovu-mail-adapters.json +22 -0
- package/s3-compatible/NOTES.md +11 -0
- package/s3-compatible/mcp.json +4 -0
- package/s3-compatible/object-stores/s3-compatible.mjs +287 -0
- package/s3-compatible/plugin.json +56 -0
- package/s3-compatible/skills/s3-compatible/SKILL.md +39 -0
- package/s3-compatible/targets/s3-compatible.mjs +1054 -0
- package/s3-compatible/tovu-deploy-targets.json +432 -0
- package/s3-compatible/tovu-object-stores.json +29 -0
- package/sentry/mcp.json +4 -0
- package/sentry/plugin.json +49 -0
- package/sentry/skills/sentry/SKILL.md +34 -0
- package/shopify/mcp.json +4 -0
- package/shopify/plugin.json +22 -0
- package/shopify/skills/shopify/SKILL.md +103 -0
- package/shopify/skills/shopify/references/catalog-sync.md +74 -0
- package/shopify/skills/shopify/references/domains.md +26 -0
- package/shopify/skills/shopify/references/live-storefront.md +34 -0
- package/shopify/skills/shopify/references/storefront-snippets.md +21 -0
- package/site-compliance/mcp.json +4 -0
- package/site-compliance/plugin.json +34 -0
- package/site-compliance/skills/site-compliance/SKILL.md +220 -0
- package/site-compliance/skills/site-compliance/references/ccpa-cpra.md +115 -0
- package/site-compliance/skills/site-compliance/references/gdpr-eu-uk.md +143 -0
- package/site-compliance/skills/site-compliance/references/wcag-2-2.md +129 -0
- package/site-import/mcp.json +4 -0
- package/site-import/plugin.json +41 -0
- package/site-import/skills/site-import/SKILL.md +232 -0
- package/site-import/skills/site-import/references/content-mapping.md +166 -0
- package/site-import/skills/site-import/references/discovery-and-classification.md +117 -0
- package/site-import/skills/site-import/references/theme-extraction.md +34 -0
- package/slide-design/com.anthropic.claude-code/hooks/hooks.json +4 -0
- package/slide-design/mcp.json +4 -0
- package/slide-design/plugin.json +26 -0
- package/slide-design/skills/slide-design/SKILL.md +103 -0
- package/slide-design/skills/slide-design/references/charts-and-exhibits.md +100 -0
- package/slide-design/skills/slide-design/references/html-deck.md +175 -0
- package/slide-design/skills/slide-design/references/layout-and-style.md +131 -0
- package/slide-design/skills/slide-design/references/review.md +93 -0
- package/slide-design/skills/slide-design/references/storyline.md +118 -0
- package/stripe/plugin.json +22 -0
- package/supabase/mcp.json +26 -0
- package/supabase/plugin.json +78 -0
- package/supabase/skills/supabase/SKILL.md +169 -0
- package/supabase/skills/supabase/references/failure-modes.md +101 -0
- package/ui-ux-design/CHANGELOG.md +28 -0
- package/ui-ux-design/LICENSE +201 -0
- package/ui-ux-design/NOTICE +14 -0
- package/ui-ux-design/README.md +62 -0
- package/ui-ux-design/com.anthropic.claude-code/hooks/hooks.json +4 -0
- package/ui-ux-design/mcp.json +4 -0
- package/ui-ux-design/plugin.json +26 -0
- package/ui-ux-design/skills/frontend-accessibility/SKILL.md +60 -0
- package/ui-ux-design/skills/gstack-design/SKILL.md +53 -0
- package/ui-ux-design/skills/gstack-design/references/consultation.md +30 -0
- package/ui-ux-design/skills/gstack-design/references/html.md +29 -0
- package/ui-ux-design/skills/gstack-design/references/review.md +28 -0
- package/ui-ux-design/skills/gstack-design/references/shotgun.md +33 -0
- package/ui-ux-design/skills/gstack-design/references/upstream-notes.md +23 -0
- package/ui-ux-design/skills/interface-design/ORIGINAL.md +16 -0
- package/ui-ux-design/skills/interface-design/SKILL.md +41 -0
- package/ui-ux-design/skills/interface-design/references/commands/audit.md +40 -0
- package/ui-ux-design/skills/interface-design/references/commands/critique.md +21 -0
- package/ui-ux-design/skills/interface-design/references/commands/extract.md +34 -0
- package/ui-ux-design/skills/interface-design/references/commands/init.md +31 -0
- package/ui-ux-design/skills/interface-design/references/commands/status.md +22 -0
- package/ui-ux-design/skills/interface-design/references/examples/system-precision.md +29 -0
- package/ui-ux-design/skills/interface-design/references/examples/system-warmth.md +29 -0
- package/ui-ux-design/skills/interface-design/references/system-template.md +57 -0
- package/ui-ux-design/skills/shadcn-ui/README.md +244 -0
- package/ui-ux-design/skills/shadcn-ui/SKILL.md +333 -0
- package/ui-ux-design/skills/shadcn-ui/examples/auth-layout.tsx +177 -0
- package/ui-ux-design/skills/shadcn-ui/examples/data-table.tsx +313 -0
- package/ui-ux-design/skills/shadcn-ui/examples/form-pattern.tsx +177 -0
- package/ui-ux-design/skills/shadcn-ui/resources/component-catalog.md +481 -0
- package/ui-ux-design/skills/shadcn-ui/resources/customization-guide.md +516 -0
- package/ui-ux-design/skills/shadcn-ui/resources/migration-guide.md +463 -0
- package/ui-ux-design/skills/shadcn-ui/resources/setup-guide.md +412 -0
- package/ui-ux-design/skills/shadcn-ui/scripts/verify-setup.sh +134 -0
- package/ui-ux-design/skills/ui-ux-design/SKILL.md +171 -0
- package/ui-ux-design/skills/ui-ux-design/references/brand-and-voice.md +78 -0
- package/ui-ux-design/skills/ui-ux-design/references/chrome-mobile-test-matrix.md +137 -0
- package/ui-ux-design/skills/ui-ux-design/references/components-and-states.md +112 -0
- package/ui-ux-design/skills/ui-ux-design/references/delight-and-motion.md +54 -0
- package/ui-ux-design/skills/ui-ux-design/references/foundations.md +145 -0
- package/ui-ux-design/skills/ui-ux-design/references/inclusive-ai-imagery.md +57 -0
- package/ui-ux-design/skills/ui-ux-design/references/kole-jain-uiux-concepts.md +104 -0
- package/ui-ux-design/skills/ui-ux-design/references/kuinetic-reference.md +184 -0
- package/ui-ux-design/skills/ui-ux-design/references/openai-frontend-skill.md +139 -0
- package/ui-ux-design/skills/ui-ux-design/references/premium-ui.md +55 -0
- package/ui-ux-design/skills/ui-ux-design/references/research-and-validation.md +88 -0
- package/ui-ux-design/skills/ui-ux-design/references/sam-crawford-premium-websites.md +103 -0
- package/ui-ux-design/skills/ui-ux-design/references/self-made-web-designer-core-skills.md +119 -0
- package/ui-ux-design/skills/ui-ux-design/references/ui-animation.md +173 -0
- package/ui-ux-design/skills/ui-ux-design/references/ui-loop.md +234 -0
- package/ui-ux-design/skills/ui-ux-design/references/visual-storytelling.md +54 -0
- package/ui-ux-design/skills/vercel-web-design-guidelines/SKILL.md +39 -0
- package/ui-ux-design/skills/web-compliance/SKILL.md +134 -0
- package/ui-ux-design/skills/web-compliance/references/audit-evidence.md +59 -0
- package/vercel/NOTES.md +23 -0
- package/vercel/mcp.json +4 -0
- package/vercel/object-stores/vercel-blob.mjs +147 -0
- package/vercel/plugin.json +47 -0
- package/vercel/skills/vercel/SKILL.md +48 -0
- package/vercel/targets/vercel.mjs +586 -0
- package/vercel/tovu-consent.json +6 -0
- package/vercel/tovu-deploy-targets.json +219 -0
- package/vercel/tovu-object-stores.json +10 -0
- package/wordpress/NOTES.md +33 -0
- package/wordpress/plugin.json +30 -0
- package/wordpress/skills/wordpress/SKILL.md +43 -0
- package/wordpress/skills/wordpress/references/free-site-redirect.md +46 -0
- package/wordpress/skills/wordpress/references/subdomain.md +66 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: slide-design
|
|
3
|
+
version: 0.1.0
|
|
4
|
+
last_updated: 2026-11-01
|
|
5
|
+
description: Use when planning, writing, designing, reviewing or fixing slides or a presentation deck (pitch, talk, teaching, status update, report or decision deck), including the storyline, slide titles, charts, 16:9 layout, speaker notes, accessibility and HTML decks.
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Skill: Slide Design
|
|
9
|
+
|
|
10
|
+
A good deck makes one point per slide, and the slides add up to one message.
|
|
11
|
+
This skill covers the thinking and the design. It renders nothing itself.
|
|
12
|
+
|
|
13
|
+
## Modes
|
|
14
|
+
|
|
15
|
+
- **New deck** — run the workflow below.
|
|
16
|
+
- **Fix my slide / fix my deck** — go to `references/review.md`, "Fix one slide".
|
|
17
|
+
- **Review only** — run the checklist in `references/review.md` and report by severity.
|
|
18
|
+
- **Outline only** — stop after step 3.
|
|
19
|
+
|
|
20
|
+
## Workflow
|
|
21
|
+
|
|
22
|
+
1. **Brief.** Get these. Ask only for what you can't infer; otherwise state your assumptions and go on.
|
|
23
|
+
- Audience: who they are, what they already know, what they care about.
|
|
24
|
+
- Goal: what they should think or do afterwards, in one sentence.
|
|
25
|
+
- Setting: presented live, read alone, or both. Room, video call or printed.
|
|
26
|
+
- Length: minutes available. Rough guide: 1 slide per 1–2 minutes when presented.
|
|
27
|
+
- Deck type: pitch, talk, teaching, update, report or decision (`references/storyline.md`).
|
|
28
|
+
- Brand: the host's theme, a brand the user gives, or the neutral default.
|
|
29
|
+
- Material: data, images, logos, quotes and anything that must appear.
|
|
30
|
+
2. **Story shape.** Write the deck's message as one sentence. Pick the structure for the deck type
|
|
31
|
+
(`references/storyline.md`).
|
|
32
|
+
3. **Titles-only outline.** List every slide as a takeaway title plus one line saying what evidence
|
|
33
|
+
it will show. Read the titles alone: they must tell the story. Show the outline before building
|
|
34
|
+
when the deck has more than 5 slides or the stakes are high. If the host runs without a user in
|
|
35
|
+
the loop, show it and continue.
|
|
36
|
+
4. **Build.** For each slide: title, visual or text, speaker notes, source.
|
|
37
|
+
Charts: `references/charts-and-exhibits.md`. Layout, type, colour, images, accessibility:
|
|
38
|
+
`references/layout-and-style.md`. HTML output: `references/html-deck.md`.
|
|
39
|
+
5. **Review.** Run `references/review.md`. Fix every blocker before you hand the deck over.
|
|
40
|
+
If the host can take screenshots, look at every slide.
|
|
41
|
+
|
|
42
|
+
## Core rules
|
|
43
|
+
|
|
44
|
+
1. One message per slide. Its title states that message by default; `references/storyline.md`
|
|
45
|
+
lists the exceptions.
|
|
46
|
+
2. Read in order, the titles tell the whole story.
|
|
47
|
+
3. Answer first in update, report and decision decks; detail follows.
|
|
48
|
+
4. The body proves the title. Anything else goes to notes or the appendix.
|
|
49
|
+
5. Show before you list: chart, diagram, image or big number before bullets.
|
|
50
|
+
6. Text must read from the back of the room: body at least 18 pt (36 px at 1920×1080).
|
|
51
|
+
7. Neutral colours plus one accent. The accent marks what to look at.
|
|
52
|
+
8. Everything sits on one grid. Titles, sources and slide numbers never move.
|
|
53
|
+
9. Every presented slide has speaker notes.
|
|
54
|
+
10. Accessible by default: contrast, alt text, reading order, never colour alone.
|
|
55
|
+
11. Never invent data, quotes or sources. Keep observations, estimates and causal evidence
|
|
56
|
+
distinct; a before/after trend shows timing, not cause.
|
|
57
|
+
|
|
58
|
+
## Output
|
|
59
|
+
|
|
60
|
+
Default: an outline and slide specs in chat, one block per slide:
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
### 4. Churn fell by a third after the onboarding rollout
|
|
64
|
+
Visual: line chart, monthly churn Jan–Oct; months after rollout in accent; dashed line at the 6% target
|
|
65
|
+
On slide: "Rollout, Mar" callout; y-axis "Monthly churn, %"
|
|
66
|
+
Notes: The point: churn declined after rollout; attribution needs further evidence, such as a
|
|
67
|
+
cohort comparison. Look at March... (40–120 words)
|
|
68
|
+
Alt: Line chart: churn fell from 8.1% to 5.4% after the March rollout.
|
|
69
|
+
Source: Billing data, Jan–Oct 2026
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
All figures in this skill's examples are illustrative.
|
|
73
|
+
|
|
74
|
+
Other outputs:
|
|
75
|
+
- **HTML deck** — one HTML document, one section per slide (`references/html-deck.md`).
|
|
76
|
+
- **PowerPoint, Keynote, Google Slides** — give the slide specs. Use a host export tool if one
|
|
77
|
+
exists; this skill doesn't produce those files.
|
|
78
|
+
|
|
79
|
+
## Host tool use
|
|
80
|
+
|
|
81
|
+
- Find the host's tools first (tool search or tool list). Use what fits:
|
|
82
|
+
- page or HTML tools to publish the deck;
|
|
83
|
+
- theme tools to read colour and font tokens;
|
|
84
|
+
- media tools to find or upload images;
|
|
85
|
+
- screenshot tools to check each slide;
|
|
86
|
+
- chart tools, if the host has them, to render charts.
|
|
87
|
+
- With no such tools, answer with slide specs, or one self-contained HTML file, in chat.
|
|
88
|
+
- Don't install packages or run shell commands to make a deck unless the host says you may.
|
|
89
|
+
- Ask before overwriting an existing page or deck.
|
|
90
|
+
- The host may add its own instructions. They win over this section.
|
|
91
|
+
|
|
92
|
+
## References
|
|
93
|
+
|
|
94
|
+
Load only what the task needs.
|
|
95
|
+
|
|
96
|
+
- `references/storyline.md` — deck types and their structures, answer-first, the opening, titles,
|
|
97
|
+
summary slide, outline, closing slide, speaker notes.
|
|
98
|
+
- `references/charts-and-exhibits.md` — choosing a chart from the question, finishing it,
|
|
99
|
+
tables, diagrams, numbers, icons.
|
|
100
|
+
- `references/layout-and-style.md` — 16:9 canvas, grid and spacing numbers, type sizes, density,
|
|
101
|
+
colour roles, images, accessibility, slide types.
|
|
102
|
+
- `references/review.md` — checklist by severity, fixing one slide, long decks.
|
|
103
|
+
- `references/html-deck.md` — an HTML deck: structure, CSS, reading copy, notes, printing, checks.
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# Charts and exhibits
|
|
2
|
+
|
|
3
|
+
An exhibit is the proof for its slide's title. Write the title first, then pick the form.
|
|
4
|
+
|
|
5
|
+
## Pick the form from the question
|
|
6
|
+
|
|
7
|
+
| The title says… | Use | Avoid |
|
|
8
|
+
|---|---|---|
|
|
9
|
+
| A is bigger than B (compare items) | Horizontal bars, sorted | Pie, 3D, radar |
|
|
10
|
+
| It went up or down (change over time) | Line for many points; columns for a few periods | Area stacks with many series |
|
|
11
|
+
| X is most of the total (share) | One 100% bar, or a pie with ≤ 3 slices and one highlighted | Donut with many slices |
|
|
12
|
+
| Values spread out or cluster (distribution) | Histogram, box plot, dot strip | An average alone |
|
|
13
|
+
| X moves with Y (relationship) | Scatter, with a trend line if useful | Two lines on two y-axes |
|
|
14
|
+
| We got from A to B because… (bridge) | Waterfall | Stacked columns |
|
|
15
|
+
| Who leads (ranking) | Sorted bars or dot plot | Unsorted bars |
|
|
16
|
+
| Where it happens (place) | Map, only if location matters; otherwise bars | Choropleth of raw counts |
|
|
17
|
+
| One number matters | Big number with its comparison | Gauge, speedometer |
|
|
18
|
+
| When things happen (plan) | Timeline or Gantt | Bulleted dates |
|
|
19
|
+
|
|
20
|
+
Use several aligned charts on one slide when they support the same takeaway. Different takeaways
|
|
21
|
+
get different slides.
|
|
22
|
+
|
|
23
|
+
## Finish the chart
|
|
24
|
+
|
|
25
|
+
Make the chart say the title, in this order. Steps 2, 4 and 5 are defaults, not laws:
|
|
26
|
+
|
|
27
|
+
1. **Strip.** Remove borders, background fills, 3D, shadows and heavy gridlines. Keep light
|
|
28
|
+
gridlines only if people need to read values.
|
|
29
|
+
2. **Mute.** Draw supporting data in a neutral grey. When series are categories people must tell
|
|
30
|
+
apart (products, regions), keep their colours from the deck's colour key instead.
|
|
31
|
+
3. **Highlight.** Put the one bar, line or point that proves the title in the accent colour.
|
|
32
|
+
4. **Label directly.** Name lines at their ends and put values on the bars that matter, then drop
|
|
33
|
+
the legend. If direct labels would collide, keep a compact legend. Drop the value axis if
|
|
34
|
+
every bar is labelled.
|
|
35
|
+
5. **Add a reference** only when it means something here: target, average, last year or plan, as
|
|
36
|
+
a thin dashed labelled line.
|
|
37
|
+
6. **Annotate.** One short callout where it matters ("Launch, Mar"), with a thin leader line if
|
|
38
|
+
needed. Two at most.
|
|
39
|
+
7. **Round.** 2–3 significant figures. Units once, in the axis title or label. Same units across
|
|
40
|
+
the deck.
|
|
41
|
+
8. **Source.** A small line at the bottom left: "Source: <who>, <date>".
|
|
42
|
+
|
|
43
|
+
## Axes and honesty
|
|
44
|
+
|
|
45
|
+
- Ordinary bars and columns that show magnitude start at zero. Lines may zoom in if the axis is
|
|
46
|
+
clearly labelled.
|
|
47
|
+
- Waterfalls: the start and end bars rise from zero; each change bar floats from the previous
|
|
48
|
+
running total. Label the start, every change and the end.
|
|
49
|
+
- Charts shown side by side share a scale.
|
|
50
|
+
- No dual y-axes. Use two aligned charts instead.
|
|
51
|
+
- Time runs left to right.
|
|
52
|
+
- Rank bars largest to smallest, top to bottom. Leave built-in sequences as they are: periods,
|
|
53
|
+
age bands, rating scales from "disagree" to "agree".
|
|
54
|
+
- Show uncertainty when it changes the decision: a range, error bars, "est.".
|
|
55
|
+
- Don't cherry-pick the time window. If you crop it, say why in the notes.
|
|
56
|
+
|
|
57
|
+
## Tables
|
|
58
|
+
|
|
59
|
+
Use a table when people need exact values to look up.
|
|
60
|
+
|
|
61
|
+
- Presented: at most about 6 rows and 5 columns. Bigger tables go to the appendix.
|
|
62
|
+
- Right-align numbers and use the same decimals in a column.
|
|
63
|
+
- Thin row separators only; no full grid.
|
|
64
|
+
- Mark the row or cell that matters with weight or the accent.
|
|
65
|
+
- Header row and first column in plain words, with units.
|
|
66
|
+
|
|
67
|
+
## Diagrams
|
|
68
|
+
|
|
69
|
+
- **Process:** 3–6 steps left to right. Use arrows only for a real sequence.
|
|
70
|
+
- **2×2:** two axes that really are independent, each end labelled (low/high). Place items as
|
|
71
|
+
dots. Name the quadrants only if that helps.
|
|
72
|
+
- **Breakdown tree:** whole on the left or top, parts after it. Parts don't overlap and add up to
|
|
73
|
+
the whole.
|
|
74
|
+
- **Option comparison:** 2–4 options as columns, the same criteria as rows. Mark the chosen
|
|
75
|
+
option with the accent.
|
|
76
|
+
- **Layers or pyramid:** only for a real hierarchy or stack.
|
|
77
|
+
- **Overlap circles:** only for real overlap, with the shared part labelled.
|
|
78
|
+
|
|
79
|
+
Rules for all diagrams: same shape for the same kind of thing, one line weight, text inside
|
|
80
|
+
shapes at body size or larger, no decorative arrows or 3D.
|
|
81
|
+
|
|
82
|
+
## Numbers on slides
|
|
83
|
+
|
|
84
|
+
- A big-number slide: one figure, 160–240 px at 1920×1080, with what it measures and its
|
|
85
|
+
comparison ("+18% vs. plan").
|
|
86
|
+
- Format the same way everywhere: 1.2M, 34%, $4.5k.
|
|
87
|
+
- Don't rely on green and red to mean good and bad. Say "better" or "worse", or use arrows.
|
|
88
|
+
- Check every total adds up and every number matches across slides.
|
|
89
|
+
|
|
90
|
+
## Screenshots and photos as evidence
|
|
91
|
+
|
|
92
|
+
- Crop to the part that matters, then enlarge it.
|
|
93
|
+
- Point at the detail: an outline box, or dim everything else.
|
|
94
|
+
- Screenshots must be current and readable at slide size. Blur personal or secret data.
|
|
95
|
+
|
|
96
|
+
## Icons
|
|
97
|
+
|
|
98
|
+
- One family, one style (line or filled), one colour (neutral or the accent).
|
|
99
|
+
- Use an icon only when it adds meaning. Not one on every bullet.
|
|
100
|
+
- Prefer the literal icon to the clever one, and still label it.
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
# HTML deck
|
|
2
|
+
|
|
3
|
+
Build the deck as one HTML document when the host can publish pages or HTML, or when the user
|
|
4
|
+
wants a file. It works in any browser, presents full screen, and prints to PDF.
|
|
5
|
+
|
|
6
|
+
## Structure
|
|
7
|
+
|
|
8
|
+
- One document. One `<section class="slide">` per slide, in presenting order.
|
|
9
|
+
- One unique heading per slide (`<h1>` on the title slide, `<h2>` after) in an `<hgroup>` with an
|
|
10
|
+
optional kicker. The `<hgroup>` is a fixed-height header zone, so bodies never shift.
|
|
11
|
+
- Speaker notes go in `<aside class="notes">` as the slide's last child. Hidden when presenting.
|
|
12
|
+
- Use real elements: lists, `<figure>` and `<figcaption>`, `<img alt>`, `<table>` with `<th>`.
|
|
13
|
+
- Source order is the reading order: title, then content in speaking order, then source.
|
|
14
|
+
- No script is needed. Scroll snap steps through slides with arrow and Page Down keys.
|
|
15
|
+
- **Presentation copy:** design pixels at 1920×1080 (`layout-and-style.md`) scaled by one unit,
|
|
16
|
+
`--u`, so a slide fills the screen and prints as one page. Browser zoom can't enlarge it.
|
|
17
|
+
- **Reading copy:** `class="reading"` on `<html>`. `rem` text that zoom enlarges, slides that
|
|
18
|
+
grow, no clipping, one column on narrow screens, notes shown. It doubles as the speaker copy.
|
|
19
|
+
Publish or send it alongside the presentation copy.
|
|
20
|
+
|
|
21
|
+
## Template
|
|
22
|
+
|
|
23
|
+
The figures in this template are illustrative.
|
|
24
|
+
|
|
25
|
+
```html
|
|
26
|
+
<!doctype html>
|
|
27
|
+
<html lang="en">
|
|
28
|
+
<head>
|
|
29
|
+
<meta charset="utf-8">
|
|
30
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
31
|
+
<title>Onboarding review</title>
|
|
32
|
+
<style>
|
|
33
|
+
:root {
|
|
34
|
+
/* Set these from the host theme tokens or the user's brand. Fallbacks = neutral default. */
|
|
35
|
+
--deck-bg: #ffffff; --deck-text: #1a1a1a; --deck-muted: #6b6b6b;
|
|
36
|
+
--deck-line: #d4d4d4; --deck-accent: #2563eb; --deck-font: system-ui, sans-serif;
|
|
37
|
+
/* One design pixel of a 1920x1080 slide, fitted to the window. */
|
|
38
|
+
--u: calc(min(100vw, 100vh * 16 / 9) / 1920);
|
|
39
|
+
}
|
|
40
|
+
* { box-sizing: border-box; }
|
|
41
|
+
html { scroll-snap-type: y mandatory; }
|
|
42
|
+
body { margin: 0; background: #111; font-family: var(--deck-font); }
|
|
43
|
+
.slide {
|
|
44
|
+
position: relative; overflow: hidden; scroll-snap-align: center;
|
|
45
|
+
width: calc(1920 * var(--u)); height: calc(1080 * var(--u));
|
|
46
|
+
margin: 0 auto calc(16 * var(--u));
|
|
47
|
+
padding: calc(80 * var(--u)) calc(96 * var(--u)) calc(64 * var(--u));
|
|
48
|
+
background: var(--deck-bg); color: var(--deck-text);
|
|
49
|
+
font-size: calc(40 * var(--u)); line-height: 1.35;
|
|
50
|
+
}
|
|
51
|
+
/* Header zone: kicker + two 72px title lines, the same height on every slide. */
|
|
52
|
+
.slide hgroup { min-height: calc(220 * var(--u)); margin: 0 0 calc(32 * var(--u)); }
|
|
53
|
+
.slide h1, .slide h2 { margin: 0; line-height: 1.15; max-width: calc(1500 * var(--u)); }
|
|
54
|
+
.slide h1 { font-size: calc(104 * var(--u)); }
|
|
55
|
+
.slide h2 { font-size: calc(72 * var(--u)); }
|
|
56
|
+
.kicker { margin: 0 0 calc(16 * var(--u)); font-size: calc(28 * var(--u)); color: var(--deck-muted);
|
|
57
|
+
text-transform: uppercase; letter-spacing: .06em; }
|
|
58
|
+
.grid { display: grid; grid-template-columns: repeat(12, 1fr); column-gap: calc(24 * var(--u)); }
|
|
59
|
+
.span-4 { grid-column: span 4; } .span-6 { grid-column: span 6; }
|
|
60
|
+
.span-8 { grid-column: span 8; } .span-12 { grid-column: span 12; }
|
|
61
|
+
.big-number { font-size: calc(200 * var(--u)); font-weight: 700; line-height: 1; color: var(--deck-accent); }
|
|
62
|
+
.accent { color: var(--deck-accent); }
|
|
63
|
+
.slide figure { margin: 0; }
|
|
64
|
+
.slide img { display: block; max-width: 100%; height: auto; }
|
|
65
|
+
.source, .slide-number { position: absolute; bottom: calc(24 * var(--u)); margin: 0;
|
|
66
|
+
font-size: calc(22 * var(--u)); color: var(--deck-muted); }
|
|
67
|
+
.source { left: calc(96 * var(--u)); }
|
|
68
|
+
.slide-number { right: calc(96 * var(--u)); }
|
|
69
|
+
.notes { display: none; }
|
|
70
|
+
/* Reading and speaker copy: <html class="reading">. */
|
|
71
|
+
html.reading { scroll-snap-type: none; } .reading body { background: var(--deck-bg); }
|
|
72
|
+
.reading .slide { width: auto; max-width: 64rem; height: auto; overflow: visible; margin: 0 auto;
|
|
73
|
+
padding: 2rem 1.5rem; font-size: 1.25rem; border-bottom: 1px solid var(--deck-line); }
|
|
74
|
+
.reading .slide hgroup { min-height: 0; margin-bottom: 1rem; }
|
|
75
|
+
.reading .slide h1 { font-size: 2.5rem; } .reading .slide h2 { font-size: 1.75rem; }
|
|
76
|
+
.reading .kicker, .reading .source, .reading .slide-number { font-size: 1rem; }
|
|
77
|
+
.reading .source, .reading .slide-number { position: static; margin-top: 1rem; }
|
|
78
|
+
.reading .big-number { font-size: 4rem; } .reading .grid { column-gap: 1.5rem; row-gap: 1rem; }
|
|
79
|
+
.reading .notes { display: block; margin-top: 1.5rem; padding-top: 1rem;
|
|
80
|
+
border-top: 1px solid var(--deck-line); font-size: 1.125rem; color: var(--deck-muted); }
|
|
81
|
+
@media (max-width: 48rem) { .reading .grid { grid-template-columns: 1fr; } .reading .grid > * { grid-column: 1 / -1; } }
|
|
82
|
+
@page { size: 13.333in 7.5in; margin: 0; }
|
|
83
|
+
@page reading { size: auto; margin: 0.6in; }
|
|
84
|
+
@media print {
|
|
85
|
+
:root { --u: calc(13.333in / 1920); }
|
|
86
|
+
html { scroll-snap-type: none; }
|
|
87
|
+
body { background: none; }
|
|
88
|
+
.slide { margin: 0; break-after: page; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
|
|
89
|
+
/* The reading copy flows across ordinary pages; long notes may span a page break. */
|
|
90
|
+
.reading main { page: reading; }
|
|
91
|
+
.reading .slide { break-after: auto; padding: 0 0 1.5rem; }
|
|
92
|
+
}
|
|
93
|
+
</style>
|
|
94
|
+
</head>
|
|
95
|
+
<body>
|
|
96
|
+
<main>
|
|
97
|
+
<section class="slide" aria-labelledby="s1">
|
|
98
|
+
<hgroup><h1 id="s1">Onboarding v2: three months of results</h1></hgroup>
|
|
99
|
+
<p>Product review · Ana Silva · 3 Nov 2026</p>
|
|
100
|
+
<aside class="notes">One-line point of the talk, then what you'll cover.</aside>
|
|
101
|
+
</section>
|
|
102
|
+
|
|
103
|
+
<section class="slide" aria-labelledby="s2">
|
|
104
|
+
<hgroup>
|
|
105
|
+
<p class="kicker">Retention</p>
|
|
106
|
+
<h2 id="s2">Churn fell by a third after the onboarding rollout</h2>
|
|
107
|
+
</hgroup>
|
|
108
|
+
<div class="grid">
|
|
109
|
+
<figure class="span-8">
|
|
110
|
+
<img src="churn.png" alt="Line chart: churn fell from 8.1% to 5.4% after the March rollout.">
|
|
111
|
+
</figure>
|
|
112
|
+
<p class="span-4">The biggest drop came in a customer's <strong class="accent">first 30 days</strong>.</p>
|
|
113
|
+
</div>
|
|
114
|
+
<p class="source">Source: billing data, Jan–Oct 2026</p>
|
|
115
|
+
<p class="slide-number">2</p>
|
|
116
|
+
<aside class="notes">The point: churn declined after rollout; attribution needs further
|
|
117
|
+
evidence, such as a cohort comparison. Look at March...</aside>
|
|
118
|
+
</section>
|
|
119
|
+
|
|
120
|
+
<section class="slide" aria-labelledby="s3">
|
|
121
|
+
<hgroup><h2 id="s3">Roll the new onboarding out to every plan by January</h2></hgroup>
|
|
122
|
+
<p>Ask: approve two engineers for six weeks.</p>
|
|
123
|
+
<p>Questions: ana@example.com</p>
|
|
124
|
+
<aside class="notes">Restate the ask, then take questions with this slide up.</aside>
|
|
125
|
+
</section>
|
|
126
|
+
</main>
|
|
127
|
+
</body>
|
|
128
|
+
</html>
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Adapt, don't copy blindly: change the variables, keep the unit, add slide types from
|
|
132
|
+
`layout-and-style.md` as needed.
|
|
133
|
+
|
|
134
|
+
## Brand and theme
|
|
135
|
+
|
|
136
|
+
- If the host has a theme, read its colour and font tokens and set the `--deck-*` variables from
|
|
137
|
+
them, for example `--deck-accent: var(--theme-accent, #2563eb)` with the host's real token name. Don't hard-code colours
|
|
138
|
+
the theme already defines.
|
|
139
|
+
- With a user brand, use its hex codes and fonts. Load web fonts only from sources the host allows.
|
|
140
|
+
- Check contrast after mapping. Theme colours made for a website can fail on a projector.
|
|
141
|
+
|
|
142
|
+
## Charts and images
|
|
143
|
+
|
|
144
|
+
- Use the host's chart tool or plugin if it has one, or an image of the chart. Simple bars can be
|
|
145
|
+
inline SVG with `role="img"` and an `aria-label` that states the point.
|
|
146
|
+
- Every chart needs a text alternative: alt text or a short caption with the key numbers.
|
|
147
|
+
- Upload images through the host's media tools when it has them, and reference the stored URL.
|
|
148
|
+
|
|
149
|
+
## Host limits
|
|
150
|
+
|
|
151
|
+
- Some page tools accept only body content, strip `<style>` or `<script>`, or rewrite markup.
|
|
152
|
+
Keep the same structure and put the CSS where the host allows: a style block, theme custom CSS,
|
|
153
|
+
or inline styles. Then check a screenshot.
|
|
154
|
+
- Ask before replacing an existing page. Publish as a draft or unlisted page if the host can.
|
|
155
|
+
|
|
156
|
+
## Presenting and exporting
|
|
157
|
+
|
|
158
|
+
- Present: open the page, go full screen (F11, or the browser's full-screen command), and use the
|
|
159
|
+
arrow or Page Down keys.
|
|
160
|
+
- PDF: print, choose "Save as PDF". The presentation copy prints one 16:9 page per slide. Turn
|
|
161
|
+
on background graphics if the browser asks.
|
|
162
|
+
- Speaker or reading copy: add `class="reading"` to `<html>` and print; it flows across ordinary
|
|
163
|
+
pages, notes included. Or list the notes in chat.
|
|
164
|
+
- PowerPoint, Keynote or Google Slides: out of scope here. Hand over the slide specs, or use a
|
|
165
|
+
host export tool if one exists.
|
|
166
|
+
|
|
167
|
+
## Checks
|
|
168
|
+
|
|
169
|
+
- Screenshot each slide at a 1920×1080 viewport. Text must not run past the margins; overflow is
|
|
170
|
+
hidden, so look.
|
|
171
|
+
- Print preview of the presentation copy shows one slide per page, nothing cut off.
|
|
172
|
+
- Reading copy at 200% browser zoom and at a phone width: text grows, nothing is clipped, the grid
|
|
173
|
+
is one column, notes show.
|
|
174
|
+
- Contrast passes; every image has alt text; headings are unique and in order.
|
|
175
|
+
- The page still makes sense with CSS off: headings, then content, in speaking order.
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# Layout and style
|
|
2
|
+
|
|
3
|
+
All sizes are for a 16:9 slide designed at 1920×1080 px. On a 13.33 × 7.5 in slide
|
|
4
|
+
(PowerPoint's 16:9 default), 1 pt = 2 px.
|
|
5
|
+
|
|
6
|
+
## Canvas and grid
|
|
7
|
+
|
|
8
|
+
- **Margins (safe area):** 96 px left and right, 80 px top, 64 px bottom. All text stays inside.
|
|
9
|
+
Full-bleed images may run to the edge.
|
|
10
|
+
- **Grid:** 12 columns inside the margins, 24 px gutters. Content width 1728 px, each column
|
|
11
|
+
122 px.
|
|
12
|
+
- **Common splits:** 12 (full width), 6 + 6, 4 + 8 (text + visual), 8 + 4 (visual + text),
|
|
13
|
+
4 + 4 + 4, 3 + 3 + 3 + 3.
|
|
14
|
+
- **Spacing scale:** 8, 16, 24, 32, 48, 64, 96 px. Use 16–24 inside a group and 48–64 between
|
|
15
|
+
groups. The same relationship always gets the same gap.
|
|
16
|
+
- **Header zone:** starts at the top margin, same height on every slide: room for a kicker plus
|
|
17
|
+
2 title lines (about 220 px with a 72 px title). The body starts below it, whatever the title's
|
|
18
|
+
length.
|
|
19
|
+
- **Footer zone (optional):** the bottom 48 px. Source on the left, slide number on the right.
|
|
20
|
+
|
|
21
|
+
## Type
|
|
22
|
+
|
|
23
|
+
| Role | Size at 1920×1080 | Points |
|
|
24
|
+
|---|---|---|
|
|
25
|
+
| Title | 64–88 px | 32–44 pt |
|
|
26
|
+
| Statement or section title | 96–128 px | 48–64 pt |
|
|
27
|
+
| Big number | 160–240 px | 80–120 pt |
|
|
28
|
+
| Body, presented | 40–48 px, never below 36 px | 20–24 pt, never below 18 pt |
|
|
29
|
+
| Body, read alone | 28–32 px, never below 24 px | 14–16 pt, never below 12 pt |
|
|
30
|
+
| Chart labels needed to read the chart | the body minimum: 36 px presented, 24 px read alone | 18 pt / 12 pt |
|
|
31
|
+
| Source, footnote, footer (supplementary only) | 20–24 px | 10–12 pt |
|
|
32
|
+
|
|
33
|
+
- Lines up to about 60 characters. Line height 1.1–1.2 for titles, 1.3–1.4 for body.
|
|
34
|
+
- At most 2 typefaces, or 1 family in 2 weights. Use the host theme's fonts when there are some.
|
|
35
|
+
- Left-align text. Centre only title slides, statements and big numbers.
|
|
36
|
+
- Emphasis by weight or the accent colour, not underline or long italics.
|
|
37
|
+
- No all-caps sentences. Caps are fine for short labels with a little letter spacing.
|
|
38
|
+
|
|
39
|
+
## Density
|
|
40
|
+
|
|
41
|
+
- One message per slide, one focal point. The eye should land on the accent first.
|
|
42
|
+
- Word budget, excluding chart labels: about 30 words presented, about 80 read alone.
|
|
43
|
+
- Bullets: 3–5 per slide, at most 2 lines each, one level deep.
|
|
44
|
+
- Too much? Split the slide, move detail to notes, or move it to the appendix.
|
|
45
|
+
- Too little, or the same point as the slide before? Merge.
|
|
46
|
+
|
|
47
|
+
## Alignment and grouping
|
|
48
|
+
|
|
49
|
+
- **Gaps carry grouping:** use the 16–24 px step inside a group and 48–64 px between groups.
|
|
50
|
+
Never let a between-group gap shrink to an inside-group size.
|
|
51
|
+
- **Parallel items share a style:** every option card, step or bullet in a set gets the same size,
|
|
52
|
+
fill and title weight. Change the style only to mark the highlighted item.
|
|
53
|
+
- **Alignment:** every edge sits on a grid line. Title and body share one left edge.
|
|
54
|
+
- **Repetition:** equal gaps between repeated items, equal sizes for parallel boxes.
|
|
55
|
+
- **Consistency:** title, logo, source and slide number stay put across slides.
|
|
56
|
+
- **Squint test:** view a thumbnail; structure and focal point should still show. A thumbnail
|
|
57
|
+
checks hierarchy; check legibility on the intended display.
|
|
58
|
+
|
|
59
|
+
## Colour
|
|
60
|
+
|
|
61
|
+
Where colours come from, in order:
|
|
62
|
+
|
|
63
|
+
1. The host's theme tokens (primary or accent, text, background, fonts), read with its theme tools.
|
|
64
|
+
2. A brand the user supplies: hex codes, logo, fonts.
|
|
65
|
+
3. The neutral default: text #1A1A1A on #FFFFFF or #FAFAF7, grey #6B6B6B for secondary text and
|
|
66
|
+
muted data marks, #D4D4D4 for decorative separators and gridlines only, one accent #2563EB.
|
|
67
|
+
|
|
68
|
+
Rules:
|
|
69
|
+
|
|
70
|
+
- Give colours roles: background, text, muted text, neutral data, accent, and optionally
|
|
71
|
+
good and bad. Don't pick colours slide by slide.
|
|
72
|
+
- One accent per slide for "look here". Use shades of one hue before adding a second hue.
|
|
73
|
+
- Before building, write a colour key: each recurring category (product, region, segment) and its
|
|
74
|
+
hex. Every chart in the deck uses that key.
|
|
75
|
+
- Light backgrounds suit read-alone decks and printing. Dark ones suit talks in dim rooms. Pick
|
|
76
|
+
one per deck.
|
|
77
|
+
- At most about 5 colours in one chart. Group the rest as "Other".
|
|
78
|
+
|
|
79
|
+
## Images
|
|
80
|
+
|
|
81
|
+
- Show the real thing: the product, the people, the place. Skip generic stock.
|
|
82
|
+
- Give images real space: full-bleed or a whole grid cell, not a small floating picture.
|
|
83
|
+
- Text on an image only over a calm area or a dark overlay (at least 50% opacity), and the text
|
|
84
|
+
must still pass contrast.
|
|
85
|
+
- Full-bleed images need at least 1920 px of width. Crop, never stretch.
|
|
86
|
+
- Use only images the user owns, has a licence for, or generated with permission. Credit when
|
|
87
|
+
required.
|
|
88
|
+
- Logos: official files, original colours, same visual height in a row.
|
|
89
|
+
- Generated images: one style across the deck, no fake text inside them, check hands and faces,
|
|
90
|
+
show people inclusively.
|
|
91
|
+
|
|
92
|
+
## Accessibility
|
|
93
|
+
|
|
94
|
+
- **Contrast:** text at least 4.5:1 against its background. Large titles and chart marks at
|
|
95
|
+
least 3:1.
|
|
96
|
+
- **Never colour alone:** add labels, patterns, icons or arrows. Avoid red and green pairs; blue
|
|
97
|
+
and orange read for most people.
|
|
98
|
+
- **Alt text** for every meaningful image and chart. Say the point, not the look:
|
|
99
|
+
"Line chart: churn fell from 8.1% to 5.4% after the March launch." Decorative images get empty
|
|
100
|
+
alt text.
|
|
101
|
+
- **Reading order:** title first, then content in the order you'd present it. In HTML that is the
|
|
102
|
+
source order; in slide apps, set the object order.
|
|
103
|
+
- **Unique titles:** screen reader users jump between slides by title.
|
|
104
|
+
- **Motion and media:** captions for video and audio, no flashing more than 3 times a second,
|
|
105
|
+
little motion.
|
|
106
|
+
- **Plain words:** spell out an acronym the first time it appears.
|
|
107
|
+
- Share the deck and notes as a file people can open on their own device (for HTML, the reading copy).
|
|
108
|
+
|
|
109
|
+
## Builds and transitions
|
|
110
|
+
|
|
111
|
+
- Use builds only to reveal points in the order you speak them.
|
|
112
|
+
- One transition for the whole deck: a fade or none. No flying or spinning.
|
|
113
|
+
|
|
114
|
+
## Slide types
|
|
115
|
+
|
|
116
|
+
| Type | Layout |
|
|
117
|
+
|---|---|
|
|
118
|
+
| Title | Deck title, subtitle, presenter, date. Left-aligned or centred. |
|
|
119
|
+
| Agenda | 3–5 items in the words the section dividers use. |
|
|
120
|
+
| Section divider | Section name large, optional number. |
|
|
121
|
+
| Statement | One sentence, 96–128 px, lots of space. |
|
|
122
|
+
| Big number | The number, what it measures, its comparison. |
|
|
123
|
+
| Chart | Takeaway title, chart over 8–12 columns, source in the footer. |
|
|
124
|
+
| Text + visual | Text in 4 columns, visual in 8. |
|
|
125
|
+
| Comparison | 2–4 equal columns with the same rows. |
|
|
126
|
+
| Process | 3–6 steps across. |
|
|
127
|
+
| Quote | The quote large, the person's name and role small. |
|
|
128
|
+
| Full-bleed image | The image, plus at most one line of text. |
|
|
129
|
+
| Summary | Message, 3–4 reasons, the ask. |
|
|
130
|
+
| Closing | Message, ask or next step, contact. |
|
|
131
|
+
| Appendix | Its own divider, then backup slides with full detail. |
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Review
|
|
2
|
+
|
|
3
|
+
## How to review
|
|
4
|
+
|
|
5
|
+
Work top-down and fix in that order. Don't polish a slide that will be cut.
|
|
6
|
+
|
|
7
|
+
1. **Deck:** read the titles only. Is the message clear? Does the story flow? Do the type and
|
|
8
|
+
length fit the audience and the time?
|
|
9
|
+
2. **Slide:** does the body prove the title? Is there one focal point?
|
|
10
|
+
3. **Detail:** numbers, words, alignment, sizes.
|
|
11
|
+
|
|
12
|
+
If the host can take screenshots, capture every slide at 1920×1080 and look at each one, then
|
|
13
|
+
look at them small, side by side, for consistency. Ideally see it full screen on the real display.
|
|
14
|
+
|
|
15
|
+
## Checklist by severity
|
|
16
|
+
|
|
17
|
+
**Blocker** — fix before anyone sees the deck:
|
|
18
|
+
|
|
19
|
+
- No clear deck message, or no ask in a pitch or decision deck.
|
|
20
|
+
- A title claims something its slide doesn't show, or the data contradicts it.
|
|
21
|
+
- Invented data, quotes or sources; a causal claim resting only on a before/after trend.
|
|
22
|
+
- Wrong or inconsistent numbers: totals that don't add up, units that change.
|
|
23
|
+
- Text below the minimum sizes, or contrast below 4.5:1 (3:1 for large titles).
|
|
24
|
+
- Personal or confidential data on screen; images without the rights to use them.
|
|
25
|
+
- Broken slides: text overflowing or cut off, missing images, placeholder text left in.
|
|
26
|
+
- A typo in a title, a name, a number or a date. Check these letter by letter.
|
|
27
|
+
|
|
28
|
+
**Major** — fix before presenting:
|
|
29
|
+
|
|
30
|
+
- Titles are topic labels, or the title chain doesn't read. Image-only talk slides, dividers and
|
|
31
|
+
teaching questions are allowed exceptions (`storyline.md`).
|
|
32
|
+
- More than one message on a slide; a wall of text.
|
|
33
|
+
- The wrong chart for the question, no highlight, a legend where direct labels would fit, a
|
|
34
|
+
magnitude bar or column axis that doesn't start at zero (floating waterfall change bars are
|
|
35
|
+
fine, `charts-and-exhibits.md`).
|
|
36
|
+
- Groups that overlap or leave gaps.
|
|
37
|
+
- Fonts, colours or positions that change between slides; more than one accent on a slide.
|
|
38
|
+
- Missing speaker notes on presented slides; missing alt text.
|
|
39
|
+
- No closing slide with the next step.
|
|
40
|
+
- Too many slides for the time.
|
|
41
|
+
|
|
42
|
+
**Minor** — fix if there's time:
|
|
43
|
+
|
|
44
|
+
- Elements off the grid by a few pixels; uneven gaps.
|
|
45
|
+
- Number formats that differ; a chart without its source and date.
|
|
46
|
+
- A title slide missing the deck title, presenter or date.
|
|
47
|
+
- A single word alone on a title's last line.
|
|
48
|
+
- Mixed icon styles.
|
|
49
|
+
- Other typos.
|
|
50
|
+
|
|
51
|
+
Report format:
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
Verdict: <one line: ready / ready after fixes / needs rework>
|
|
55
|
+
Blockers
|
|
56
|
+
1. Slide 4: title says churn fell, chart shows signups → chart monthly churn instead
|
|
57
|
+
Major
|
|
58
|
+
2. Slides 6–9: titles are labels ("Market") → rewrite as takeaways (proposed below)
|
|
59
|
+
Minor
|
|
60
|
+
3. Slide 11: source line missing → add "Source: CRM export, Oct 2026"
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Give the fix with each problem, not just the problem.
|
|
64
|
+
|
|
65
|
+
## Fix one slide
|
|
66
|
+
|
|
67
|
+
1. **Find the message.** What is the slide trying to say? If its title doesn't say it, propose a
|
|
68
|
+
takeaway title and say it's your reading.
|
|
69
|
+
2. **Give each element a destination** as you go: a text, figure, image or chart that proves the
|
|
70
|
+
message stays; context moves to the notes; detail someone may ask for goes to the appendix;
|
|
71
|
+
noise is cut. Write the destinations down; the user sees every cut.
|
|
72
|
+
3. **Pick the form:** chart, diagram, comparison, big number or short text
|
|
73
|
+
(`charts-and-exhibits.md`).
|
|
74
|
+
4. **Rebuild** on the grid, with the takeaway as the title (`layout-and-style.md`).
|
|
75
|
+
5. **Check:** the message reads faster than before; sizes and contrast pass.
|
|
76
|
+
6. Still two messages? Make two slides.
|
|
77
|
+
|
|
78
|
+
Answer with: the new title, the new layout spec, where each moved or cut item went, and a short
|
|
79
|
+
before → after.
|
|
80
|
+
|
|
81
|
+
## Fix a whole deck
|
|
82
|
+
|
|
83
|
+
Run the checklist, then fix in this order: message and outline, titles, one slide at a time,
|
|
84
|
+
then consistency across slides. Show the new titles-only outline before rebuilding slides.
|
|
85
|
+
|
|
86
|
+
## Long decks (15+ slides)
|
|
87
|
+
|
|
88
|
+
- Section dividers whose words match the agenda.
|
|
89
|
+
- Optionally a small section label at the top left so people know where they are.
|
|
90
|
+
- Same header and footer and slide numbers throughout.
|
|
91
|
+
- The appendix comes after the closing slide, under its own divider. Point to it from the body
|
|
92
|
+
("see A3").
|
|
93
|
+
- After every edit, check the summary slide still matches the body.
|