rsc-universal 0.1.1
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/LICENSE +21 -0
- package/README.md +279 -0
- package/manifest.json +4761 -0
- package/package.json +59 -0
- package/schema/frontmatter.schema.json +12 -0
- package/scripts/build-manifest.js +72 -0
- package/scripts/consult.js +106 -0
- package/scripts/detect-repo.js +118 -0
- package/scripts/doctor.js +21 -0
- package/scripts/eval-lint.sh +179 -0
- package/scripts/install-apply.js +52 -0
- package/scripts/install-plan.js +13 -0
- package/scripts/lib/behavior-score.js +103 -0
- package/scripts/lib/frontmatter.js +47 -0
- package/scripts/lib/harden-policy.js +41 -0
- package/scripts/lib/manifest.js +18 -0
- package/scripts/lib/recommend.js +36 -0
- package/scripts/lib/registry.js +110 -0
- package/scripts/lib/result-envelope.js +35 -0
- package/scripts/lib/state.js +12 -0
- package/scripts/lib/ui.js +17 -0
- package/scripts/reviewer-guard.sh +67 -0
- package/scripts/rsc.js +108 -0
- package/scripts/skill-behavior-eval.js +33 -0
- package/scripts/skill-behavior-eval.workflow.js +136 -0
- package/scripts/skill-behavior-rubric.md +63 -0
- package/scripts/skill-harden-rubric.md +40 -0
- package/scripts/skill-harden.workflow.js +161 -0
- package/scripts/skill-rubric.md +39 -0
- package/scripts/skill-scoreboard.workflow.js +35 -0
- package/skills/ab-testing/SKILL.md +191 -0
- package/skills/ab-testing/evals/README.md +8 -0
- package/skills/ab-testing/evals/cases.yaml +49 -0
- package/skills/ab-testing/references/pitfalls.md +74 -0
- package/skills/ab-testing/references/sample-size-and-cuped.md +128 -0
- package/skills/ab-testing/scripts/verify.sh +89 -0
- package/skills/accessibility/SKILL.md +218 -0
- package/skills/accessibility/evals/README.md +3 -0
- package/skills/accessibility/evals/cases.yaml +47 -0
- package/skills/accessibility/references/aria-patterns.md +113 -0
- package/skills/accessibility/references/wcag22-checklist.md +83 -0
- package/skills/accessibility/scripts/verify.sh +103 -0
- package/skills/ads/SKILL.md +175 -0
- package/skills/ads/evals/README.md +15 -0
- package/skills/ads/evals/cases.yaml +58 -0
- package/skills/ads/references/platform-specs.md +73 -0
- package/skills/ads/references/roas-model.md +77 -0
- package/skills/ads/scripts/verify.sh +210 -0
- package/skills/agent-eval/SKILL.md +213 -0
- package/skills/agent-eval/evals/README.md +12 -0
- package/skills/agent-eval/evals/cases.yaml +45 -0
- package/skills/agent-eval/references/judge-design.md +118 -0
- package/skills/agent-eval/references/runner-and-gate.md +183 -0
- package/skills/agent-eval/scripts/verify.sh +161 -0
- package/skills/agent-safety/SKILL.md +176 -0
- package/skills/agent-safety/evals/README.md +12 -0
- package/skills/agent-safety/evals/cases.yaml +46 -0
- package/skills/agent-safety/references/threat-model.md +51 -0
- package/skills/ai-media/SKILL.md +196 -0
- package/skills/ai-media/evals/README.md +3 -0
- package/skills/ai-media/evals/cases.yaml +45 -0
- package/skills/ai-media/references/ffmpeg-assembly.md +117 -0
- package/skills/ai-media/references/models-and-params.md +78 -0
- package/skills/ai-media/scripts/verify.sh +103 -0
- package/skills/analytics/SKILL.md +219 -0
- package/skills/analytics/evals/README.md +9 -0
- package/skills/analytics/evals/cases.yaml +53 -0
- package/skills/analytics/references/event-taxonomy.md +75 -0
- package/skills/analytics/references/ga4-setup.md +122 -0
- package/skills/analytics/references/posthog-setup.md +100 -0
- package/skills/analytics/scripts/verify.sh +95 -0
- package/skills/analyze/SKILL.md +136 -0
- package/skills/analyze/evals/README.md +72 -0
- package/skills/analyze/evals/cases.yaml +74 -0
- package/skills/angular/SKILL.md +288 -0
- package/skills/angular/evals/README.md +3 -0
- package/skills/angular/evals/cases.yaml +38 -0
- package/skills/angular/references/migration.md +81 -0
- package/skills/angular/references/signals-rxjs.md +92 -0
- package/skills/angular/scripts/verify.sh +122 -0
- package/skills/api-connector-builder/SKILL.md +285 -0
- package/skills/api-connector-builder/evals/README.md +11 -0
- package/skills/api-connector-builder/evals/cases.yaml +47 -0
- package/skills/api-connector-builder/references/auth-flows.md +132 -0
- package/skills/api-connector-builder/references/pagination.md +144 -0
- package/skills/api-connector-builder/scripts/verify.sh +172 -0
- package/skills/api-design/SKILL.md +189 -0
- package/skills/api-design/evals/README.md +3 -0
- package/skills/api-design/evals/cases.yaml +45 -0
- package/skills/api-design/references/graphql-design.md +70 -0
- package/skills/api-design/references/openapi-contract.md +86 -0
- package/skills/api-design/references/rest-conventions.md +63 -0
- package/skills/api-design/references/versioning-and-evolution.md +49 -0
- package/skills/api-design/scripts/verify.sh +138 -0
- package/skills/article-writing/SKILL.md +175 -0
- package/skills/article-writing/evals/README.md +3 -0
- package/skills/article-writing/evals/cases.yaml +47 -0
- package/skills/article-writing/references/ai-tell-banlist.md +114 -0
- package/skills/article-writing/references/on-page-seo.md +133 -0
- package/skills/article-writing/scripts/verify.sh +165 -0
- package/skills/astro/SKILL.md +275 -0
- package/skills/astro/evals/README.md +3 -0
- package/skills/astro/evals/cases.yaml +41 -0
- package/skills/astro/references/content-layer.md +118 -0
- package/skills/astro/references/deploy-and-integrations.md +163 -0
- package/skills/astro/scripts/verify.sh +137 -0
- package/skills/author-skill/SKILL.md +206 -0
- package/skills/author-skill/evals/README.md +66 -0
- package/skills/author-skill/evals/cases.yaml +75 -0
- package/skills/author-skill/references/description-recipe.md +84 -0
- package/skills/author-skill/references/eval-authoring.md +74 -0
- package/skills/author-skill/references/rsc-conventions.md +91 -0
- package/skills/automation-flows/SKILL.md +132 -0
- package/skills/automation-flows/evals/README.md +5 -0
- package/skills/automation-flows/evals/cases.yaml +44 -0
- package/skills/automation-flows/references/error-handling.md +58 -0
- package/skills/automation-flows/references/n8n-workflow-json.md +63 -0
- package/skills/automation-flows/scripts/verify.sh +78 -0
- package/skills/aws-essentials/SKILL.md +223 -0
- package/skills/aws-essentials/evals/README.md +10 -0
- package/skills/aws-essentials/evals/cases.yaml +44 -0
- package/skills/aws-essentials/references/iam-least-privilege.md +134 -0
- package/skills/aws-essentials/references/rds-cloudfront-recipes.md +127 -0
- package/skills/aws-essentials/scripts/verify.sh +99 -0
- package/skills/backups/SKILL.md +137 -0
- package/skills/backups/evals/README.md +3 -0
- package/skills/backups/evals/cases.yaml +42 -0
- package/skills/backups/references/engine-recipes.md +121 -0
- package/skills/backups/references/restore-runbook.md +65 -0
- package/skills/backups/scripts/verify.sh +80 -0
- package/skills/bash-scripting/SKILL.md +231 -0
- package/skills/bash-scripting/evals/README.md +3 -0
- package/skills/bash-scripting/evals/cases.yaml +45 -0
- package/skills/bash-scripting/references/portability.md +97 -0
- package/skills/bash-scripting/scripts/verify.sh +140 -0
- package/skills/bookkeeping/SKILL.md +184 -0
- package/skills/bookkeeping/evals/README.md +5 -0
- package/skills/bookkeeping/evals/cases.yaml +52 -0
- package/skills/bookkeeping/references/chart-of-accounts.md +87 -0
- package/skills/bookkeeping/references/reconciliation-playbook.md +54 -0
- package/skills/bookkeeping/references/tricky-transactions.md +192 -0
- package/skills/brand-identity/SKILL.md +161 -0
- package/skills/brand-identity/evals/README.md +14 -0
- package/skills/brand-identity/evals/cases.yaml +43 -0
- package/skills/brand-identity/references/color-and-tokens.md +129 -0
- package/skills/brand-identity/references/logo-and-assets.md +117 -0
- package/skills/brand-identity/scripts/verify.sh +224 -0
- package/skills/brand-voice/SKILL.md +183 -0
- package/skills/brand-voice/evals/README.md +3 -0
- package/skills/brand-voice/evals/cases.yaml +57 -0
- package/skills/brand-voice/references/voice-guide-template.md +150 -0
- package/skills/brand-voice/references/word-bank.md +61 -0
- package/skills/brand-voice/scripts/verify.sh +190 -0
- package/skills/building-agents/SKILL.md +469 -0
- package/skills/building-agents/evals/README.md +68 -0
- package/skills/building-agents/evals/cases.yaml +60 -0
- package/skills/building-agents/references/agent-loops-and-harness.md +371 -0
- package/skills/building-agents/references/evals-and-observability.md +420 -0
- package/skills/building-agents/references/mcp-servers.md +294 -0
- package/skills/building-agents/references/provider-abstraction.md +489 -0
- package/skills/building-agents/references/tools-and-rag.md +417 -0
- package/skills/building-agents/scripts/verify.sh +121 -0
- package/skills/business-intelligence/SKILL.md +176 -0
- package/skills/business-intelligence/evals/README.md +3 -0
- package/skills/business-intelligence/evals/cases.yaml +43 -0
- package/skills/business-intelligence/references/authoring-semantic-models.md +120 -0
- package/skills/business-intelligence/references/wiring-agents-and-apis.md +79 -0
- package/skills/business-intelligence/scripts/verify.sh +143 -0
- package/skills/calendar-scheduling/SKILL.md +196 -0
- package/skills/calendar-scheduling/evals/README.md +14 -0
- package/skills/calendar-scheduling/evals/cases.yaml +45 -0
- package/skills/calendar-scheduling/references/google-calendar-sync.md +78 -0
- package/skills/calendar-scheduling/references/provider-matrix.md +71 -0
- package/skills/calendar-scheduling/scripts/verify.sh +117 -0
- package/skills/case-studies/SKILL.md +147 -0
- package/skills/case-studies/evals/README.md +3 -0
- package/skills/case-studies/evals/cases.yaml +63 -0
- package/skills/case-studies/references/case-study-skeleton.md +90 -0
- package/skills/case-studies/references/consent-and-substantiation.md +80 -0
- package/skills/case-studies/scripts/verify.sh +161 -0
- package/skills/chatbot/SKILL.md +168 -0
- package/skills/chatbot/evals/README.md +13 -0
- package/skills/chatbot/evals/cases.yaml +43 -0
- package/skills/chatbot/references/handoff-and-sales.md +71 -0
- package/skills/chatbot/references/system-prompt-and-guardrails.md +78 -0
- package/skills/chatbot/scripts/verify.sh +162 -0
- package/skills/chrome-extension/SKILL.md +169 -0
- package/skills/chrome-extension/evals/README.md +12 -0
- package/skills/chrome-extension/evals/cases.yaml +40 -0
- package/skills/chrome-extension/references/store-and-migration.md +84 -0
- package/skills/chrome-extension/scripts/verify.sh +62 -0
- package/skills/clarify/SKILL.md +159 -0
- package/skills/clarify/evals/README.md +70 -0
- package/skills/clarify/evals/cases.yaml +71 -0
- package/skills/clickhouse-analytics/SKILL.md +165 -0
- package/skills/clickhouse-analytics/evals/README.md +3 -0
- package/skills/clickhouse-analytics/evals/cases.yaml +45 -0
- package/skills/clickhouse-analytics/references/ingestion-and-mvs.md +109 -0
- package/skills/clickhouse-analytics/references/query-optimization.md +76 -0
- package/skills/clickhouse-analytics/references/schema-and-engines.md +63 -0
- package/skills/clickhouse-analytics/scripts/verify.sh +109 -0
- package/skills/client-onboarding/SKILL.md +254 -0
- package/skills/client-onboarding/evals/README.md +14 -0
- package/skills/client-onboarding/evals/cases.yaml +40 -0
- package/skills/client-onboarding/references/onboarding-playbook.md +126 -0
- package/skills/cloudflare/SKILL.md +191 -0
- package/skills/cloudflare/evals/README.md +15 -0
- package/skills/cloudflare/evals/cases.yaml +46 -0
- package/skills/cloudflare/references/storage-primitives.md +104 -0
- package/skills/cloudflare/references/wrangler-config.md +91 -0
- package/skills/cloudflare/scripts/verify.sh +133 -0
- package/skills/code-review/SKILL.md +143 -0
- package/skills/code-review/evals/README.md +3 -0
- package/skills/code-review/evals/cases.yaml +55 -0
- package/skills/code-review/references/pr-workflow.md +67 -0
- package/skills/codebase-onboarding/SKILL.md +133 -0
- package/skills/codebase-onboarding/evals/README.md +3 -0
- package/skills/codebase-onboarding/evals/cases.yaml +69 -0
- package/skills/codebase-onboarding/references/recon-playbook.md +57 -0
- package/skills/codebase-onboarding/scripts/verify.sh +54 -0
- package/skills/cold-outreach/SKILL.md +206 -0
- package/skills/cold-outreach/evals/README.md +3 -0
- package/skills/cold-outreach/evals/cases.yaml +60 -0
- package/skills/cold-outreach/references/compliance-footer.md +50 -0
- package/skills/cold-outreach/references/hook-derivation.md +73 -0
- package/skills/cold-outreach/references/templates.md +88 -0
- package/skills/cold-outreach/scripts/verify.sh +170 -0
- package/skills/community/SKILL.md +225 -0
- package/skills/community/evals/README.md +3 -0
- package/skills/community/evals/cases.yaml +40 -0
- package/skills/community/references/metrics-and-rituals.md +58 -0
- package/skills/community/references/platform-playbooks.md +64 -0
- package/skills/community/scripts/verify.sh +83 -0
- package/skills/competitor-watch/SKILL.md +193 -0
- package/skills/competitor-watch/evals/README.md +19 -0
- package/skills/competitor-watch/evals/cases.yaml +54 -0
- package/skills/competitor-watch/references/monitoring-config.md +124 -0
- package/skills/competitor-watch/references/tracker-schema.md +79 -0
- package/skills/competitor-watch/scripts/verify.sh +253 -0
- package/skills/compliance/SKILL.md +184 -0
- package/skills/compliance/evals/README.md +14 -0
- package/skills/compliance/evals/cases.yaml +46 -0
- package/skills/compliance/references/frameworks.md +108 -0
- package/skills/compliance/references/operating-rhythm.md +79 -0
- package/skills/compliance/scripts/verify.sh +168 -0
- package/skills/compose-multiplatform/SKILL.md +198 -0
- package/skills/compose-multiplatform/evals/README.md +3 -0
- package/skills/compose-multiplatform/evals/cases.yaml +40 -0
- package/skills/compose-multiplatform/references/ios-interop.md +91 -0
- package/skills/compose-multiplatform/references/project-setup.md +96 -0
- package/skills/compose-multiplatform/scripts/verify.sh +123 -0
- package/skills/constitution/SKILL.md +160 -0
- package/skills/constitution/evals/README.md +68 -0
- package/skills/constitution/evals/cases.yaml +72 -0
- package/skills/constitution/references/constitution-template.md +90 -0
- package/skills/content-engine/SKILL.md +164 -0
- package/skills/content-engine/evals/README.md +17 -0
- package/skills/content-engine/evals/cases.yaml +62 -0
- package/skills/content-engine/references/atomization.md +81 -0
- package/skills/content-engine/references/brief-and-pipeline.md +90 -0
- package/skills/content-engine/scripts/verify.sh +146 -0
- package/skills/context-budget/SKILL.md +132 -0
- package/skills/context-budget/evals/README.md +11 -0
- package/skills/context-budget/evals/cases.yaml +40 -0
- package/skills/context-budget/references/handoff-and-compaction.md +96 -0
- package/skills/continuous-learning/SKILL.md +136 -0
- package/skills/continuous-learning/evals/README.md +16 -0
- package/skills/continuous-learning/evals/cases.yaml +39 -0
- package/skills/continuous-learning/references/lesson-routing.md +106 -0
- package/skills/contracts/SKILL.md +124 -0
- package/skills/contracts/evals/README.md +3 -0
- package/skills/contracts/evals/cases.yaml +42 -0
- package/skills/contracts/references/clause-library.md +129 -0
- package/skills/contracts/references/review-playbook.md +49 -0
- package/skills/contracts/scripts/verify.sh +53 -0
- package/skills/coolify/SKILL.md +201 -0
- package/skills/coolify/evals/README.md +21 -0
- package/skills/coolify/evals/cases.yaml +46 -0
- package/skills/coolify/references/databases-and-backups.md +99 -0
- package/skills/coolify/references/deploy-recipes.md +105 -0
- package/skills/coolify/references/install-and-proxy.md +80 -0
- package/skills/coolify/scripts/verify.sh +123 -0
- package/skills/cost-tracking/SKILL.md +183 -0
- package/skills/cost-tracking/evals/README.md +3 -0
- package/skills/cost-tracking/evals/cases.yaml +45 -0
- package/skills/cost-tracking/references/cloud-caps.md +52 -0
- package/skills/cost-tracking/references/pricing-tables.md +51 -0
- package/skills/cost-tracking/scripts/verify.sh +135 -0
- package/skills/course-builder/SKILL.md +186 -0
- package/skills/course-builder/evals/README.md +16 -0
- package/skills/course-builder/evals/cases.yaml +49 -0
- package/skills/course-builder/references/assessment-design.md +74 -0
- package/skills/course-builder/references/grounding-and-scoping.md +69 -0
- package/skills/course-builder/references/outcomes-and-blooms.md +82 -0
- package/skills/course-builder/scripts/verify.sh +247 -0
- package/skills/course-storytelling/SKILL.md +205 -0
- package/skills/course-storytelling/evals/README.md +54 -0
- package/skills/course-storytelling/evals/cases.yaml +50 -0
- package/skills/course-storytelling/references/brunson-frameworks.md +190 -0
- package/skills/course-storytelling/references/concept-landing-recipe.md +136 -0
- package/skills/course-storytelling/references/course-analysis.md +124 -0
- package/skills/course-storytelling/references/learner-grounding.md +183 -0
- package/skills/course-storytelling/references/mental-models.md +115 -0
- package/skills/course-storytelling/scripts/verify.sh +223 -0
- package/skills/cpp/SKILL.md +349 -0
- package/skills/cpp/evals/README.md +14 -0
- package/skills/cpp/evals/cases.yaml +44 -0
- package/skills/cpp/references/cmake.md +167 -0
- package/skills/cpp/references/move-and-templates.md +130 -0
- package/skills/cpp/references/undefined-behavior.md +86 -0
- package/skills/cpp/scripts/verify.sh +165 -0
- package/skills/csharp-dotnet/SKILL.md +291 -0
- package/skills/csharp-dotnet/evals/README.md +3 -0
- package/skills/csharp-dotnet/evals/cases.yaml +48 -0
- package/skills/csharp-dotnet/references/aspnetcore.md +99 -0
- package/skills/csharp-dotnet/references/async.md +82 -0
- package/skills/csharp-dotnet/references/efcore.md +96 -0
- package/skills/csharp-dotnet/scripts/verify.sh +90 -0
- package/skills/customer-support/SKILL.md +193 -0
- package/skills/customer-support/evals/README.md +13 -0
- package/skills/customer-support/evals/cases.yaml +61 -0
- package/skills/customer-support/references/macros-and-sla.md +142 -0
- package/skills/dashboard/SKILL.md +205 -0
- package/skills/dashboard/evals/README.md +3 -0
- package/skills/dashboard/evals/cases.yaml +50 -0
- package/skills/dashboard/references/chart-selection.md +34 -0
- package/skills/dashboard/references/tile-schema.md +164 -0
- package/skills/dashboard/scripts/verify.sh +130 -0
- package/skills/data-cleaning/SKILL.md +285 -0
- package/skills/data-cleaning/evals/README.md +16 -0
- package/skills/data-cleaning/evals/cases.yaml +57 -0
- package/skills/data-cleaning/references/normalization-recipes.md +136 -0
- package/skills/data-cleaning/references/validation-patterns.md +134 -0
- package/skills/data-cleaning/scripts/verify.sh +115 -0
- package/skills/data-policy/SKILL.md +163 -0
- package/skills/data-policy/evals/README.md +15 -0
- package/skills/data-policy/evals/cases.yaml +44 -0
- package/skills/data-policy/references/consent-and-ropa.md +97 -0
- package/skills/data-policy/references/retention-schedule.md +83 -0
- package/skills/data-policy/scripts/verify.sh +143 -0
- package/skills/data-scraper/SKILL.md +134 -0
- package/skills/data-scraper/evals/README.md +3 -0
- package/skills/data-scraper/evals/cases.yaml +46 -0
- package/skills/data-scraper/references/anti-bot.md +85 -0
- package/skills/data-scraper/references/frameworks.md +116 -0
- package/skills/data-scraper/references/legal-compliance.md +59 -0
- package/skills/data-scraper/scripts/verify.sh +166 -0
- package/skills/db-migrations/SKILL.md +254 -0
- package/skills/db-migrations/evals/README.md +10 -0
- package/skills/db-migrations/evals/cases.yaml +46 -0
- package/skills/db-migrations/references/backfill-and-batching.md +105 -0
- package/skills/db-migrations/references/expand-contract-playbook.md +152 -0
- package/skills/db-migrations/references/tools-and-runners.md +88 -0
- package/skills/db-migrations/scripts/verify.sh +112 -0
- package/skills/debug/SKILL.md +227 -0
- package/skills/debug/evals/README.md +88 -0
- package/skills/debug/evals/cases.yaml +74 -0
- package/skills/decision-records/SKILL.md +189 -0
- package/skills/decision-records/evals/README.md +3 -0
- package/skills/decision-records/evals/cases.yaml +43 -0
- package/skills/decision-records/references/templates.md +232 -0
- package/skills/decision-records/scripts/verify.sh +105 -0
- package/skills/deployment/SKILL.md +439 -0
- package/skills/deployment/evals/README.md +50 -0
- package/skills/deployment/evals/cases.yaml +53 -0
- package/skills/deployment/references/coolify.md +216 -0
- package/skills/deployment/references/dockerfiles-by-stack.md +319 -0
- package/skills/deployment/references/github-actions.md +295 -0
- package/skills/deployment/references/hosting-targets.md +272 -0
- package/skills/deployment/scripts/verify.sh +134 -0
- package/skills/design/SKILL.md +399 -0
- package/skills/design/evals/README.md +53 -0
- package/skills/design/evals/cases.yaml +56 -0
- package/skills/design/references/brand-grounding.md +187 -0
- package/skills/design/references/copywriting-frameworks.md +138 -0
- package/skills/design/references/landing-anatomy-and-cro.md +202 -0
- package/skills/design/references/motion-and-interaction.md +182 -0
- package/skills/design/references/research-method.md +147 -0
- package/skills/design/references/signature-and-craft.md +148 -0
- package/skills/design/references/trends-2026.md +80 -0
- package/skills/design/references/visual-system.md +236 -0
- package/skills/design/scripts/verify.sh +248 -0
- package/skills/digitalocean/SKILL.md +251 -0
- package/skills/digitalocean/evals/README.md +10 -0
- package/skills/digitalocean/evals/cases.yaml +37 -0
- package/skills/digitalocean/references/app-spec.md +126 -0
- package/skills/digitalocean/references/droplet-ops.md +95 -0
- package/skills/digitalocean/scripts/verify.sh +102 -0
- package/skills/django/SKILL.md +268 -0
- package/skills/django/evals/README.md +11 -0
- package/skills/django/evals/cases.yaml +47 -0
- package/skills/django/references/drf.md +109 -0
- package/skills/django/references/orm-performance.md +91 -0
- package/skills/django/references/security.md +81 -0
- package/skills/django/references/testing.md +86 -0
- package/skills/django/scripts/verify.sh +115 -0
- package/skills/docker/SKILL.md +283 -0
- package/skills/docker/evals/README.md +10 -0
- package/skills/docker/evals/cases.yaml +44 -0
- package/skills/docker/references/base-images-and-stages.md +104 -0
- package/skills/docker/references/compose-recipes.md +109 -0
- package/skills/docker/scripts/verify.sh +149 -0
- package/skills/document-processing/SKILL.md +214 -0
- package/skills/document-processing/evals/README.md +3 -0
- package/skills/document-processing/evals/cases.yaml +65 -0
- package/skills/document-processing/references/engines.md +67 -0
- package/skills/document-processing/scripts/verify.sh +172 -0
- package/skills/domains-dns/SKILL.md +146 -0
- package/skills/domains-dns/evals/README.md +16 -0
- package/skills/domains-dns/evals/cases.yaml +47 -0
- package/skills/domains-dns/references/record-cookbook.md +94 -0
- package/skills/domains-dns/references/tls-and-acme.md +90 -0
- package/skills/domains-dns/references/verify-and-debug.md +64 -0
- package/skills/domains-dns/scripts/verify.sh +163 -0
- package/skills/drizzle-orm/SKILL.md +234 -0
- package/skills/drizzle-orm/evals/README.md +12 -0
- package/skills/drizzle-orm/evals/cases.yaml +47 -0
- package/skills/drizzle-orm/references/relations-and-drivers.md +118 -0
- package/skills/drizzle-orm/scripts/verify.sh +155 -0
- package/skills/duckdb/SKILL.md +207 -0
- package/skills/duckdb/evals/README.md +31 -0
- package/skills/duckdb/evals/cases.yaml +41 -0
- package/skills/duckdb/references/python-and-interop.md +105 -0
- package/skills/duckdb/references/remote-and-lakehouse.md +101 -0
- package/skills/duckdb/scripts/verify.sh +71 -0
- package/skills/dynamodb/SKILL.md +217 -0
- package/skills/dynamodb/evals/README.md +8 -0
- package/skills/dynamodb/evals/cases.yaml +46 -0
- package/skills/dynamodb/references/access-patterns.md +127 -0
- package/skills/dynamodb/references/capacity-and-limits.md +78 -0
- package/skills/dynamodb/scripts/verify.sh +108 -0
- package/skills/e-signature/SKILL.md +185 -0
- package/skills/e-signature/evals/README.md +3 -0
- package/skills/e-signature/evals/cases.yaml +44 -0
- package/skills/e-signature/references/docusign.md +83 -0
- package/skills/e-signature/references/dropbox-sign.md +73 -0
- package/skills/e-signature/references/legal-tiers.md +37 -0
- package/skills/e-signature/scripts/verify.sh +81 -0
- package/skills/e2e-testing/SKILL.md +243 -0
- package/skills/e2e-testing/evals/README.md +10 -0
- package/skills/e2e-testing/evals/cases.yaml +64 -0
- package/skills/e2e-testing/references/config-and-ci.md +156 -0
- package/skills/e2e-testing/references/flakiness-playbook.md +124 -0
- package/skills/e2e-testing/scripts/verify.sh +117 -0
- package/skills/electron/SKILL.md +221 -0
- package/skills/electron/evals/README.md +13 -0
- package/skills/electron/evals/cases.yaml +38 -0
- package/skills/electron/references/packaging-and-updates.md +122 -0
- package/skills/electron/references/security-and-ipc.md +158 -0
- package/skills/electron/scripts/verify.sh +143 -0
- package/skills/elixir/SKILL.md +217 -0
- package/skills/elixir/evals/README.md +3 -0
- package/skills/elixir/evals/cases.yaml +41 -0
- package/skills/elixir/references/mix-and-releases.md +91 -0
- package/skills/elixir/references/otp-patterns.md +96 -0
- package/skills/elixir/scripts/verify.sh +76 -0
- package/skills/email-connector/SKILL.md +294 -0
- package/skills/email-connector/evals/README.md +19 -0
- package/skills/email-connector/evals/cases.yaml +39 -0
- package/skills/email-connector/references/providers.md +107 -0
- package/skills/email-connector/scripts/verify.sh +72 -0
- package/skills/email-deliverability/SKILL.md +168 -0
- package/skills/email-deliverability/evals/README.md +21 -0
- package/skills/email-deliverability/evals/cases.yaml +45 -0
- package/skills/email-deliverability/scripts/verify.sh +98 -0
- package/skills/embeddings-search/SKILL.md +193 -0
- package/skills/embeddings-search/evals/README.md +10 -0
- package/skills/embeddings-search/evals/cases.yaml +44 -0
- package/skills/embeddings-search/references/evaluation.md +86 -0
- package/skills/embeddings-search/references/models.md +73 -0
- package/skills/embeddings-search/scripts/verify.sh +103 -0
- package/skills/error-handling/SKILL.md +307 -0
- package/skills/error-handling/evals/README.md +12 -0
- package/skills/error-handling/evals/cases.yaml +46 -0
- package/skills/error-handling/references/boundaries-and-messaging.md +120 -0
- package/skills/error-handling/references/retry-and-resilience.md +154 -0
- package/skills/error-handling/scripts/verify.sh +110 -0
- package/skills/expo/SKILL.md +253 -0
- package/skills/expo/evals/README.md +13 -0
- package/skills/expo/evals/cases.yaml +44 -0
- package/skills/expo/references/config-plugins.md +117 -0
- package/skills/expo/references/eas-update.md +118 -0
- package/skills/expo/scripts/verify.sh +132 -0
- package/skills/fal/SKILL.md +210 -0
- package/skills/fal/evals/README.md +3 -0
- package/skills/fal/evals/cases.yaml +42 -0
- package/skills/fal/references/models-and-cost.md +53 -0
- package/skills/fal/references/queue-and-webhooks.md +153 -0
- package/skills/fal/scripts/verify.sh +72 -0
- package/skills/fastapi/SKILL.md +499 -0
- package/skills/fastapi/evals/README.md +50 -0
- package/skills/fastapi/evals/cases.yaml +55 -0
- package/skills/fastapi/references/database.md +347 -0
- package/skills/fastapi/references/production.md +338 -0
- package/skills/fastapi/references/security.md +330 -0
- package/skills/fastapi/references/testing.md +349 -0
- package/skills/fastapi/scripts/verify.sh +116 -0
- package/skills/finance-ops/SKILL.md +149 -0
- package/skills/finance-ops/evals/README.md +3 -0
- package/skills/finance-ops/evals/cases.yaml +39 -0
- package/skills/finance-ops/references/cash-flow-forecast.md +57 -0
- package/skills/finance-ops/references/month-close.md +59 -0
- package/skills/finance-ops/references/reconciliation.md +65 -0
- package/skills/finance-ops/scripts/verify.sh +166 -0
- package/skills/financial-model/SKILL.md +170 -0
- package/skills/financial-model/evals/README.md +3 -0
- package/skills/financial-model/evals/cases.yaml +53 -0
- package/skills/financial-model/references/benchmarks-and-scenarios.md +55 -0
- package/skills/financial-model/references/model-structure.md +67 -0
- package/skills/financial-model/references/revenue-build.md +68 -0
- package/skills/financial-model/scripts/verify.sh +232 -0
- package/skills/firebase/SKILL.md +251 -0
- package/skills/firebase/evals/README.md +12 -0
- package/skills/firebase/evals/cases.yaml +45 -0
- package/skills/firebase/references/cloud-functions.md +102 -0
- package/skills/firebase/references/data-modeling.md +108 -0
- package/skills/firebase/references/security-rules.md +137 -0
- package/skills/firebase/scripts/verify.sh +98 -0
- package/skills/flutter/SKILL.md +448 -0
- package/skills/flutter/evals/README.md +54 -0
- package/skills/flutter/evals/cases.yaml +69 -0
- package/skills/flutter/references/architecture-and-state.md +499 -0
- package/skills/flutter/references/i18n-and-dependencies.md +197 -0
- package/skills/flutter/references/performance.md +299 -0
- package/skills/flutter/references/testing.md +385 -0
- package/skills/flutter/references/ui-and-navigation.md +378 -0
- package/skills/flutter/scripts/verify.sh +104 -0
- package/skills/fly-io/SKILL.md +206 -0
- package/skills/fly-io/evals/README.md +3 -0
- package/skills/fly-io/evals/cases.yaml +42 -0
- package/skills/fly-io/references/fly-toml.md +155 -0
- package/skills/fly-io/references/multi-region.md +66 -0
- package/skills/fly-io/scripts/verify.sh +90 -0
- package/skills/forecasting/SKILL.md +139 -0
- package/skills/forecasting/evals/README.md +13 -0
- package/skills/forecasting/evals/cases.yaml +47 -0
- package/skills/forecasting/references/accuracy-and-backtesting.md +104 -0
- package/skills/forecasting/references/methods-cheatsheet.md +94 -0
- package/skills/forecasting/scripts/verify.sh +99 -0
- package/skills/fundraising/SKILL.md +162 -0
- package/skills/fundraising/evals/README.md +18 -0
- package/skills/fundraising/evals/cases.yaml +76 -0
- package/skills/fundraising/references/funnel-math.md +90 -0
- package/skills/fundraising/references/process-playbook.md +97 -0
- package/skills/gcp-essentials/SKILL.md +327 -0
- package/skills/gcp-essentials/evals/README.md +12 -0
- package/skills/gcp-essentials/evals/cases.yaml +38 -0
- package/skills/gcp-essentials/references/deploy-recipes.md +81 -0
- package/skills/gcp-essentials/references/iam-and-auth.md +94 -0
- package/skills/gcp-essentials/references/networking-and-sql.md +74 -0
- package/skills/gcp-essentials/scripts/verify.sh +158 -0
- package/skills/gdpr-privacy/SKILL.md +167 -0
- package/skills/gdpr-privacy/evals/README.md +3 -0
- package/skills/gdpr-privacy/evals/cases.yaml +47 -0
- package/skills/gdpr-privacy/references/dpa-and-transfers.md +63 -0
- package/skills/gdpr-privacy/references/dsar-and-consent.md +83 -0
- package/skills/gdpr-privacy/references/privacy-policy-blueprint.md +99 -0
- package/skills/gdpr-privacy/scripts/verify.sh +84 -0
- package/skills/git-workflow/SKILL.md +190 -0
- package/skills/git-workflow/evals/README.md +10 -0
- package/skills/git-workflow/evals/cases.yaml +47 -0
- package/skills/git-workflow/references/interactive-rebase.md +89 -0
- package/skills/github-actions/SKILL.md +256 -0
- package/skills/github-actions/evals/README.md +3 -0
- package/skills/github-actions/evals/cases.yaml +45 -0
- package/skills/github-actions/references/caching-and-matrix.md +92 -0
- package/skills/github-actions/references/oidc-deploys.md +130 -0
- package/skills/github-actions/scripts/verify.sh +105 -0
- package/skills/go/SKILL.md +438 -0
- package/skills/go/evals/README.md +56 -0
- package/skills/go/evals/cases.yaml +55 -0
- package/skills/go/references/concurrency.md +557 -0
- package/skills/go/references/http-services.md +529 -0
- package/skills/go/references/testing.md +338 -0
- package/skills/go/scripts/verify.sh +109 -0
- package/skills/google-workspace/SKILL.md +287 -0
- package/skills/google-workspace/evals/README.md +16 -0
- package/skills/google-workspace/evals/cases.yaml +44 -0
- package/skills/google-workspace/references/api-recipes.md +148 -0
- package/skills/google-workspace/references/auth-setup.md +100 -0
- package/skills/google-workspace/scripts/verify.sh +128 -0
- package/skills/grants/SKILL.md +171 -0
- package/skills/grants/evals/README.md +3 -0
- package/skills/grants/evals/cases.yaml +69 -0
- package/skills/grants/references/budget-justification.md +71 -0
- package/skills/grants/references/jurisdictions.md +35 -0
- package/skills/grants/references/logic-model.md +66 -0
- package/skills/grants/scripts/verify.sh +193 -0
- package/skills/harness/SKILL.md +329 -0
- package/skills/harness/assets/_TEMPLATE/.env.example +8 -0
- package/skills/harness/assets/_TEMPLATE/CREDENTIALS.md +25 -0
- package/skills/harness/assets/_TEMPLATE/README.md +25 -0
- package/skills/harness/assets/_TEMPLATE/test_connection.sh +30 -0
- package/skills/harness/evals/README.md +54 -0
- package/skills/harness/evals/cases.yaml +72 -0
- package/skills/harness/examples/audit-example.md +120 -0
- package/skills/harness/references/agents-md-template.md +41 -0
- package/skills/harness/references/audit-report-template.html +140 -0
- package/skills/harness/references/audit-report-template.md +116 -0
- package/skills/harness/references/claude-md-template.md +98 -0
- package/skills/harness/references/inbox-readme-template.md +51 -0
- package/skills/harness/references/ingest-formats.md +185 -0
- package/skills/harness/references/providers.yaml +3410 -0
- package/skills/harness/references/tools-readme-template.md +88 -0
- package/skills/harness/references/wiki-archive-template.html +81 -0
- package/skills/harness/references/wiki-article-template.md +20 -0
- package/skills/harness/references/wiki-dashboard-template.html +136 -0
- package/skills/harness/references/wiki-deep-improve-report-template.html +126 -0
- package/skills/harness/references/wiki-gaps-template.md +18 -0
- package/skills/harness/references/wiki-index-template.md +23 -0
- package/skills/harness/references/wiki-protocol.md +699 -0
- package/skills/harness/references/wiki-raw-template.md +7 -0
- package/skills/hetzner/SKILL.md +221 -0
- package/skills/hetzner/evals/README.md +35 -0
- package/skills/hetzner/evals/cases.yaml +46 -0
- package/skills/hetzner/references/cloud-init.md +120 -0
- package/skills/hetzner/references/plans-and-locations.md +56 -0
- package/skills/hetzner/scripts/verify.sh +122 -0
- package/skills/hiring/SKILL.md +248 -0
- package/skills/hiring/evals/README.md +13 -0
- package/skills/hiring/evals/cases.yaml +41 -0
- package/skills/hiring/references/templates.md +118 -0
- package/skills/htmx/SKILL.md +261 -0
- package/skills/htmx/evals/README.md +3 -0
- package/skills/htmx/evals/cases.yaml +38 -0
- package/skills/htmx/references/patterns.md +113 -0
- package/skills/htmx/references/server-contract.md +91 -0
- package/skills/htmx/scripts/verify.sh +93 -0
- package/skills/huggingface/SKILL.md +190 -0
- package/skills/huggingface/evals/README.md +11 -0
- package/skills/huggingface/evals/cases.yaml +41 -0
- package/skills/huggingface/references/endpoints-and-spaces.md +99 -0
- package/skills/huggingface/references/hub-and-cli.md +85 -0
- package/skills/huggingface/references/inference-providers.md +115 -0
- package/skills/huggingface/scripts/verify.sh +123 -0
- package/skills/implement/SKILL.md +283 -0
- package/skills/implement/evals/README.md +56 -0
- package/skills/implement/evals/cases.yaml +43 -0
- package/skills/init/SKILL.md +184 -0
- package/skills/init/evals/README.md +49 -0
- package/skills/init/evals/cases.yaml +74 -0
- package/skills/init/references/accompaniment-and-profile.md +140 -0
- package/skills/init/references/discovery.md +90 -0
- package/skills/init/references/recommend-skills.md +115 -0
- package/skills/init/scripts/verify.sh +122 -0
- package/skills/instagram-api/SKILL.md +241 -0
- package/skills/instagram-api/evals/README.md +3 -0
- package/skills/instagram-api/evals/cases.yaml +43 -0
- package/skills/instagram-api/references/insights-metrics.md +88 -0
- package/skills/instagram-api/references/publish-reel.md +98 -0
- package/skills/instagram-api/scripts/verify.sh +137 -0
- package/skills/inventory/SKILL.md +131 -0
- package/skills/inventory/evals/README.md +3 -0
- package/skills/inventory/evals/cases.yaml +43 -0
- package/skills/inventory/references/abc-xyz.md +52 -0
- package/skills/inventory/references/ddmrp.md +32 -0
- package/skills/inventory/references/reorder-policies.md +85 -0
- package/skills/inventory/references/safety-stock.md +63 -0
- package/skills/inventory/scripts/verify.sh +155 -0
- package/skills/investor-materials/SKILL.md +175 -0
- package/skills/investor-materials/evals/README.md +15 -0
- package/skills/investor-materials/evals/cases.yaml +60 -0
- package/skills/investor-materials/references/dataroom-checklist.md +134 -0
- package/skills/investor-materials/references/update-and-onepager-templates.md +152 -0
- package/skills/investor-materials/scripts/verify.sh +148 -0
- package/skills/invoicing/SKILL.md +154 -0
- package/skills/invoicing/evals/README.md +5 -0
- package/skills/invoicing/evals/cases.yaml +49 -0
- package/skills/invoicing/references/dunning-ladder.md +53 -0
- package/skills/invoicing/references/e-invoicing-mandates.md +43 -0
- package/skills/invoicing/scripts/fixtures/broken-invoice.json +13 -0
- package/skills/invoicing/scripts/fixtures/valid-invoice.json +15 -0
- package/skills/invoicing/scripts/verify.sh +133 -0
- package/skills/ip-trademark/SKILL.md +186 -0
- package/skills/ip-trademark/evals/README.md +10 -0
- package/skills/ip-trademark/evals/cases.yaml +47 -0
- package/skills/ip-trademark/references/jurisdictions.md +63 -0
- package/skills/ip-trademark/references/ownership-and-licensing.md +90 -0
- package/skills/java/SKILL.md +341 -0
- package/skills/java/evals/README.md +23 -0
- package/skills/java/evals/cases.yaml +43 -0
- package/skills/java/references/builds.md +133 -0
- package/skills/java/references/concurrency.md +108 -0
- package/skills/java/references/streams.md +102 -0
- package/skills/java/scripts/verify.sh +107 -0
- package/skills/knowledge-ops/SKILL.md +125 -0
- package/skills/knowledge-ops/evals/README.md +16 -0
- package/skills/knowledge-ops/evals/cases.yaml +50 -0
- package/skills/knowledge-ops/references/gardening-playbook.md +116 -0
- package/skills/kotlin-android/SKILL.md +245 -0
- package/skills/kotlin-android/evals/README.md +13 -0
- package/skills/kotlin-android/evals/cases.yaml +56 -0
- package/skills/kotlin-android/references/architecture.md +200 -0
- package/skills/kotlin-android/references/gradle-setup.md +125 -0
- package/skills/kotlin-android/scripts/verify.sh +109 -0
- package/skills/kpi-framework/SKILL.md +199 -0
- package/skills/kpi-framework/evals/README.md +11 -0
- package/skills/kpi-framework/evals/cases.yaml +42 -0
- package/skills/kpi-framework/references/definition-and-targets.md +64 -0
- package/skills/kpi-framework/references/metric-catalog.md +84 -0
- package/skills/landing-copy/SKILL.md +153 -0
- package/skills/landing-copy/evals/README.md +18 -0
- package/skills/landing-copy/evals/cases.yaml +63 -0
- package/skills/landing-copy/references/frameworks.md +61 -0
- package/skills/landing-copy/references/page-skeleton.md +92 -0
- package/skills/landing-copy/scripts/verify.sh +164 -0
- package/skills/laravel/SKILL.md +301 -0
- package/skills/laravel/evals/README.md +10 -0
- package/skills/laravel/evals/cases.yaml +45 -0
- package/skills/laravel/references/eloquent-patterns.md +126 -0
- package/skills/laravel/references/queues-and-scheduling.md +153 -0
- package/skills/laravel/scripts/verify.sh +128 -0
- package/skills/lead-gen/SKILL.md +155 -0
- package/skills/lead-gen/evals/README.md +3 -0
- package/skills/lead-gen/evals/cases.yaml +43 -0
- package/skills/lead-gen/references/data-sources.md +87 -0
- package/skills/lead-gen/references/scoring-model.md +93 -0
- package/skills/lead-gen/scripts/verify.sh +179 -0
- package/skills/linkedin-api/SKILL.md +211 -0
- package/skills/linkedin-api/evals/README.md +3 -0
- package/skills/linkedin-api/evals/cases.yaml +41 -0
- package/skills/linkedin-api/references/api-reference.md +168 -0
- package/skills/linkedin-api/scripts/verify.sh +98 -0
- package/skills/linkedin-carousels/SKILL.md +239 -0
- package/skills/linkedin-carousels/evals/README.md +13 -0
- package/skills/linkedin-carousels/evals/cases.yaml +62 -0
- package/skills/linkedin-carousels/references/carousel-patterns.md +200 -0
- package/skills/linkedin-carousels/scripts/verify.sh +160 -0
- package/skills/linkedin-content/SKILL.md +162 -0
- package/skills/linkedin-content/evals/README.md +13 -0
- package/skills/linkedin-content/evals/cases.yaml +62 -0
- package/skills/linkedin-content/references/hooks-and-formats.md +114 -0
- package/skills/linkedin-content/scripts/verify.sh +154 -0
- package/skills/linkedin-outreach/SKILL.md +174 -0
- package/skills/linkedin-outreach/evals/README.md +3 -0
- package/skills/linkedin-outreach/evals/cases.yaml +43 -0
- package/skills/linkedin-outreach/references/ledger-schema.md +48 -0
- package/skills/linkedin-outreach/references/sales-navigator-playbook.md +61 -0
- package/skills/linkedin-outreach/scripts/verify.sh +120 -0
- package/skills/linkedin-strategy/SKILL.md +167 -0
- package/skills/linkedin-strategy/evals/README.md +3 -0
- package/skills/linkedin-strategy/evals/cases.yaml +49 -0
- package/skills/linkedin-strategy/references/ssi-and-pillars.md +59 -0
- package/skills/linkedin-strategy/references/wiki-records.md +62 -0
- package/skills/linkedin-strategy/scripts/verify.sh +120 -0
- package/skills/llm-pipeline/SKILL.md +155 -0
- package/skills/llm-pipeline/evals/README.md +3 -0
- package/skills/llm-pipeline/evals/cases.yaml +44 -0
- package/skills/llm-pipeline/references/caching-layers.md +60 -0
- package/skills/llm-pipeline/references/litellm-router.md +101 -0
- package/skills/llm-pipeline/scripts/verify.sh +169 -0
- package/skills/logistics-ops/SKILL.md +219 -0
- package/skills/logistics-ops/evals/README.md +20 -0
- package/skills/logistics-ops/evals/cases.yaml +48 -0
- package/skills/logistics-ops/references/carriers-and-claims.md +105 -0
- package/skills/market-research/SKILL.md +145 -0
- package/skills/market-research/evals/README.md +3 -0
- package/skills/market-research/evals/cases.yaml +48 -0
- package/skills/market-research/references/demand-signals.md +63 -0
- package/skills/market-research/references/sizing-playbook.md +121 -0
- package/skills/market-research/scripts/verify.sh +215 -0
- package/skills/marketing/SKILL.md +233 -0
- package/skills/marketing/evals/README.md +61 -0
- package/skills/marketing/evals/cases.yaml +84 -0
- package/skills/marketing/references/brand-grounding.md +197 -0
- package/skills/marketing/references/campaigns-and-channels.md +151 -0
- package/skills/marketing/references/copy-frameworks.md +166 -0
- package/skills/marketing/references/landing-copy.md +191 -0
- package/skills/marketing/references/seo-geo.md +391 -0
- package/skills/marketing/scripts/seo_audit.py +166 -0
- package/skills/marketing/scripts/verify.sh +233 -0
- package/skills/medium-publishing/SKILL.md +152 -0
- package/skills/medium-publishing/evals/README.md +3 -0
- package/skills/medium-publishing/evals/cases.yaml +42 -0
- package/skills/medium-publishing/references/cross-post-and-canonical.md +65 -0
- package/skills/medium-publishing/references/legacy-api.md +100 -0
- package/skills/medium-strategy/SKILL.md +161 -0
- package/skills/medium-strategy/evals/README.md +3 -0
- package/skills/medium-strategy/evals/cases.yaml +50 -0
- package/skills/medium-strategy/references/distribution-and-boost.md +65 -0
- package/skills/medium-strategy/references/wiki-records.md +60 -0
- package/skills/medium-strategy/scripts/verify.sh +118 -0
- package/skills/medium-writing/SKILL.md +140 -0
- package/skills/medium-writing/evals/README.md +5 -0
- package/skills/medium-writing/evals/cases.yaml +39 -0
- package/skills/medium-writing/references/title-patterns.md +79 -0
- package/skills/meeting-notes/SKILL.md +168 -0
- package/skills/meeting-notes/evals/README.md +14 -0
- package/skills/meeting-notes/evals/cases.yaml +46 -0
- package/skills/meeting-notes/references/templates.md +140 -0
- package/skills/modal/SKILL.md +307 -0
- package/skills/modal/evals/README.md +29 -0
- package/skills/modal/evals/cases.yaml +50 -0
- package/skills/modal/references/images-gpu-cookbook.md +160 -0
- package/skills/modal/references/web-and-scaling.md +138 -0
- package/skills/modal/scripts/verify.sh +127 -0
- package/skills/mongodb/SKILL.md +342 -0
- package/skills/mongodb/evals/README.md +29 -0
- package/skills/mongodb/evals/cases.yaml +41 -0
- package/skills/mongodb/references/aggregation.md +115 -0
- package/skills/mongodb/references/data-modeling.md +135 -0
- package/skills/mongodb/references/transactions-and-ops.md +128 -0
- package/skills/mongodb/scripts/verify.sh +151 -0
- package/skills/monitoring/SKILL.md +155 -0
- package/skills/monitoring/evals/README.md +3 -0
- package/skills/monitoring/evals/cases.yaml +47 -0
- package/skills/monitoring/references/burn-rate-and-oncall.md +128 -0
- package/skills/monitoring/references/tool-setup.md +154 -0
- package/skills/monitoring/scripts/verify.sh +145 -0
- package/skills/mysql/SKILL.md +249 -0
- package/skills/mysql/evals/README.md +12 -0
- package/skills/mysql/evals/cases.yaml +49 -0
- package/skills/mysql/references/indexing-and-explain.md +161 -0
- package/skills/mysql/references/mysql-vs-mariadb.md +78 -0
- package/skills/mysql/references/online-ddl-and-migrations.md +120 -0
- package/skills/mysql/references/replication-and-ha.md +115 -0
- package/skills/mysql/scripts/verify.sh +141 -0
- package/skills/neon/SKILL.md +218 -0
- package/skills/neon/evals/README.md +11 -0
- package/skills/neon/evals/cases.yaml +45 -0
- package/skills/neon/references/branching-ci.md +86 -0
- package/skills/neon/scripts/verify.sh +78 -0
- package/skills/nestjs/SKILL.md +225 -0
- package/skills/nestjs/evals/README.md +3 -0
- package/skills/nestjs/evals/cases.yaml +38 -0
- package/skills/nestjs/references/cross-cutting.md +135 -0
- package/skills/nestjs/references/testing-recipes.md +105 -0
- package/skills/nestjs/scripts/verify.sh +98 -0
- package/skills/netlify/SKILL.md +208 -0
- package/skills/netlify/evals/README.md +13 -0
- package/skills/netlify/evals/cases.yaml +43 -0
- package/skills/netlify/references/functions.md +97 -0
- package/skills/netlify/references/netlify-toml.md +115 -0
- package/skills/netlify/scripts/verify.sh +95 -0
- package/skills/newsletter/SKILL.md +162 -0
- package/skills/newsletter/evals/README.md +12 -0
- package/skills/newsletter/evals/cases.yaml +42 -0
- package/skills/newsletter/references/growth-loops.md +73 -0
- package/skills/newsletter/references/welcome-sequence.md +62 -0
- package/skills/newsletter/scripts/verify.sh +173 -0
- package/skills/nextjs/SKILL.md +472 -0
- package/skills/nextjs/evals/README.md +59 -0
- package/skills/nextjs/evals/cases.yaml +56 -0
- package/skills/nextjs/references/data-and-caching.md +309 -0
- package/skills/nextjs/references/metadata.md +208 -0
- package/skills/nextjs/references/performance.md +325 -0
- package/skills/nextjs/references/react.md +383 -0
- package/skills/nextjs/references/security.md +239 -0
- package/skills/nextjs/references/testing.md +290 -0
- package/skills/nextjs/scripts/verify.sh +141 -0
- package/skills/no-code-app/SKILL.md +153 -0
- package/skills/no-code-app/evals/README.md +3 -0
- package/skills/no-code-app/evals/cases.yaml +43 -0
- package/skills/no-code-app/references/platform-limits.md +100 -0
- package/skills/nodejs/SKILL.md +242 -0
- package/skills/nodejs/evals/README.md +3 -0
- package/skills/nodejs/evals/cases.yaml +39 -0
- package/skills/nodejs/references/express5-migration.md +53 -0
- package/skills/nodejs/references/graceful-shutdown.md +73 -0
- package/skills/nodejs/scripts/verify.sh +122 -0
- package/skills/notion-connector/SKILL.md +234 -0
- package/skills/notion-connector/evals/README.md +15 -0
- package/skills/notion-connector/evals/cases.yaml +45 -0
- package/skills/notion-connector/references/api-versions.md +63 -0
- package/skills/notion-connector/references/property-shapes.md +110 -0
- package/skills/notion-connector/references/sync-patterns.md +95 -0
- package/skills/notion-connector/scripts/verify.sh +162 -0
- package/skills/observability/SKILL.md +231 -0
- package/skills/observability/evals/README.md +3 -0
- package/skills/observability/evals/cases.yaml +49 -0
- package/skills/observability/references/collector-config.md +98 -0
- package/skills/observability/references/instrumentation-recipes.md +115 -0
- package/skills/observability/scripts/verify.sh +156 -0
- package/skills/ollama/SKILL.md +213 -0
- package/skills/ollama/evals/README.md +9 -0
- package/skills/ollama/evals/cases.yaml +43 -0
- package/skills/ollama/references/api.md +148 -0
- package/skills/ollama/references/hardware-sizing.md +87 -0
- package/skills/ollama/scripts/verify.sh +116 -0
- package/skills/orient/SKILL.md +54 -0
- package/skills/orient/evals/README.md +16 -0
- package/skills/orient/evals/cases.yaml +57 -0
- package/skills/orient/references/orientation-contract.md +34 -0
- package/skills/parallel/SKILL.md +198 -0
- package/skills/parallel/evals/README.md +62 -0
- package/skills/parallel/evals/cases.yaml +44 -0
- package/skills/people-ops/SKILL.md +122 -0
- package/skills/people-ops/evals/README.md +14 -0
- package/skills/people-ops/evals/cases.yaml +43 -0
- package/skills/people-ops/references/templates.md +129 -0
- package/skills/performance/SKILL.md +221 -0
- package/skills/performance/evals/README.md +3 -0
- package/skills/performance/evals/cases.yaml +47 -0
- package/skills/performance/references/profiling-playbook.md +54 -0
- package/skills/performance/scripts/verify.sh +94 -0
- package/skills/phoenix/SKILL.md +169 -0
- package/skills/phoenix/evals/README.md +3 -0
- package/skills/phoenix/evals/cases.yaml +40 -0
- package/skills/phoenix/references/auth-and-scopes.md +82 -0
- package/skills/phoenix/references/ecto-patterns.md +93 -0
- package/skills/phoenix/references/liveview.md +134 -0
- package/skills/phoenix/scripts/verify.sh +73 -0
- package/skills/php/SKILL.md +397 -0
- package/skills/php/evals/README.md +12 -0
- package/skills/php/evals/cases.yaml +45 -0
- package/skills/php/references/tooling.md +170 -0
- package/skills/php/references/type-system.md +220 -0
- package/skills/php/scripts/verify.sh +155 -0
- package/skills/pitch-deck/SKILL.md +209 -0
- package/skills/pitch-deck/evals/README.md +15 -0
- package/skills/pitch-deck/evals/cases.yaml +55 -0
- package/skills/pitch-deck/references/numbers-that-matter.md +78 -0
- package/skills/pitch-deck/references/slide-spine.md +149 -0
- package/skills/pitch-deck/scripts/verify.sh +186 -0
- package/skills/plan/SKILL.md +204 -0
- package/skills/plan/evals/README.md +62 -0
- package/skills/plan/evals/cases.yaml +49 -0
- package/skills/plan/references/plan-template.md +124 -0
- package/skills/planetscale/SKILL.md +223 -0
- package/skills/planetscale/evals/README.md +11 -0
- package/skills/planetscale/evals/cases.yaml +46 -0
- package/skills/planetscale/references/deploy-requests.md +75 -0
- package/skills/planetscale/references/no-foreign-keys.md +88 -0
- package/skills/planetscale/scripts/verify.sh +115 -0
- package/skills/podcast/SKILL.md +166 -0
- package/skills/podcast/evals/README.md +17 -0
- package/skills/podcast/evals/cases.yaml +61 -0
- package/skills/podcast/references/rss-and-namespace.md +136 -0
- package/skills/podcast/scripts/verify.sh +246 -0
- package/skills/postgresdb/SKILL.md +372 -0
- package/skills/postgresdb/evals/README.md +55 -0
- package/skills/postgresdb/evals/cases.yaml +57 -0
- package/skills/postgresdb/references/migrations.md +279 -0
- package/skills/postgresdb/references/operations-and-security.md +267 -0
- package/skills/postgresdb/references/query-optimization.md +374 -0
- package/skills/postgresdb/references/schema-and-indexing.md +379 -0
- package/skills/postgresdb/scripts/verify.sh +191 -0
- package/skills/presentations/SKILL.md +296 -0
- package/skills/presentations/evals/README.md +61 -0
- package/skills/presentations/evals/cases.yaml +56 -0
- package/skills/presentations/references/brand-grounding.md +160 -0
- package/skills/presentations/references/markdown-decks.md +290 -0
- package/skills/presentations/references/pptx-python.md +242 -0
- package/skills/presentations/references/slide-design.md +261 -0
- package/skills/presentations/references/storytelling-and-decks.md +150 -0
- package/skills/presentations/scripts/verify.sh +252 -0
- package/skills/press-kit/SKILL.md +243 -0
- package/skills/press-kit/evals/README.md +15 -0
- package/skills/press-kit/evals/cases.yaml +55 -0
- package/skills/press-kit/references/release-types.md +102 -0
- package/skills/press-kit/references/templates.md +132 -0
- package/skills/press-kit/scripts/verify.sh +161 -0
- package/skills/pricing/SKILL.md +160 -0
- package/skills/pricing/evals/README.md +5 -0
- package/skills/pricing/evals/cases.yaml +44 -0
- package/skills/pricing/references/localization.md +56 -0
- package/skills/pricing/references/pricing-models.md +55 -0
- package/skills/pricing/scripts/verify.sh +91 -0
- package/skills/prisma-orm/SKILL.md +320 -0
- package/skills/prisma-orm/evals/README.md +12 -0
- package/skills/prisma-orm/evals/cases.yaml +56 -0
- package/skills/prisma-orm/references/migrations-and-v7-upgrade.md +197 -0
- package/skills/prisma-orm/references/queries-and-performance.md +169 -0
- package/skills/prisma-orm/scripts/verify.sh +137 -0
- package/skills/procurement/SKILL.md +179 -0
- package/skills/procurement/evals/README.md +20 -0
- package/skills/procurement/evals/cases.yaml +49 -0
- package/skills/procurement/references/scorecard-and-tco.md +100 -0
- package/skills/procurement/references/sourcing-requests.md +116 -0
- package/skills/procurement/scripts/verify.sh +280 -0
- package/skills/project-ops/SKILL.md +130 -0
- package/skills/project-ops/evals/README.md +3 -0
- package/skills/project-ops/evals/cases.yaml +71 -0
- package/skills/project-ops/references/raid-and-rag.md +58 -0
- package/skills/project-ops/references/status-report-template.md +68 -0
- package/skills/project-ops/scripts/verify.sh +257 -0
- package/skills/prompt-engineering/SKILL.md +138 -0
- package/skills/prompt-engineering/evals/README.md +11 -0
- package/skills/prompt-engineering/evals/cases.yaml +46 -0
- package/skills/prompt-engineering/references/eval-templates.md +94 -0
- package/skills/prompt-engineering/references/output-contracts.md +120 -0
- package/skills/prompt-engineering/scripts/verify.sh +84 -0
- package/skills/proposals/SKILL.md +159 -0
- package/skills/proposals/evals/README.md +3 -0
- package/skills/proposals/evals/cases.yaml +53 -0
- package/skills/proposals/references/proposal-skeleton.md +110 -0
- package/skills/proposals/references/sow-skeleton.md +79 -0
- package/skills/proposals/scripts/verify.sh +201 -0
- package/skills/python/SKILL.md +369 -0
- package/skills/python/evals/README.md +19 -0
- package/skills/python/evals/cases.yaml +46 -0
- package/skills/python/references/async.md +136 -0
- package/skills/python/references/stdlib.md +162 -0
- package/skills/python/references/typing.md +160 -0
- package/skills/python/scripts/verify.sh +125 -0
- package/skills/rag/SKILL.md +226 -0
- package/skills/rag/evals/README.md +13 -0
- package/skills/rag/evals/cases.yaml +45 -0
- package/skills/rag/references/evaluation.md +99 -0
- package/skills/rag/references/pipeline.md +151 -0
- package/skills/rag/scripts/verify.sh +99 -0
- package/skills/rails/SKILL.md +264 -0
- package/skills/rails/evals/README.md +12 -0
- package/skills/rails/evals/cases.yaml +47 -0
- package/skills/rails/references/activerecord.md +148 -0
- package/skills/rails/references/hotwire.md +139 -0
- package/skills/rails/references/testing.md +110 -0
- package/skills/rails/scripts/verify.sh +128 -0
- package/skills/railway/SKILL.md +245 -0
- package/skills/railway/evals/README.md +14 -0
- package/skills/railway/evals/cases.yaml +44 -0
- package/skills/railway/references/cli-cookbook.md +137 -0
- package/skills/railway/references/config-as-code.md +120 -0
- package/skills/railway/scripts/verify.sh +162 -0
- package/skills/react/SKILL.md +222 -0
- package/skills/react/evals/README.md +3 -0
- package/skills/react/evals/cases.yaml +43 -0
- package/skills/react/references/data-and-state.md +152 -0
- package/skills/react/references/performance.md +75 -0
- package/skills/react/references/routing.md +99 -0
- package/skills/react/scripts/verify.sh +123 -0
- package/skills/react-native/SKILL.md +220 -0
- package/skills/react-native/evals/README.md +3 -0
- package/skills/react-native/evals/cases.yaml +42 -0
- package/skills/react-native/references/native-modules.md +123 -0
- package/skills/react-native/references/performance-debugging.md +46 -0
- package/skills/react-native/scripts/verify.sh +117 -0
- package/skills/redis/SKILL.md +298 -0
- package/skills/redis/evals/README.md +10 -0
- package/skills/redis/evals/cases.yaml +43 -0
- package/skills/redis/references/caching.md +116 -0
- package/skills/redis/references/locks-and-rate-limiting.md +140 -0
- package/skills/redis/references/queues.md +102 -0
- package/skills/redis/scripts/verify.sh +164 -0
- package/skills/remotion-video/SKILL.md +218 -0
- package/skills/remotion-video/evals/README.md +23 -0
- package/skills/remotion-video/evals/cases.yaml +64 -0
- package/skills/remotion-video/references/captions-pipeline.md +163 -0
- package/skills/remotion-video/references/render-and-pipeline.md +131 -0
- package/skills/remotion-video/scripts/verify.sh +169 -0
- package/skills/render/SKILL.md +256 -0
- package/skills/render/evals/README.md +12 -0
- package/skills/render/evals/cases.yaml +45 -0
- package/skills/render/references/blueprint-reference.md +203 -0
- package/skills/render/scripts/verify.sh +167 -0
- package/skills/replicate/SKILL.md +210 -0
- package/skills/replicate/evals/README.md +9 -0
- package/skills/replicate/evals/cases.yaml +45 -0
- package/skills/replicate/references/cog-packaging.md +89 -0
- package/skills/replicate/references/deployments-api.md +87 -0
- package/skills/replicate/references/webhooks-and-async.md +110 -0
- package/skills/replicate/scripts/verify.sh +162 -0
- package/skills/replicate-images/SKILL.md +241 -0
- package/skills/replicate-images/evals/README.md +13 -0
- package/skills/replicate-images/evals/cases.yaml +41 -0
- package/skills/replicate-images/references/editing-recipes.md +129 -0
- package/skills/replicate-images/references/models.md +131 -0
- package/skills/replicate-images/scripts/verify.sh +178 -0
- package/skills/reporting/SKILL.md +178 -0
- package/skills/reporting/evals/README.md +12 -0
- package/skills/reporting/evals/cases.yaml +46 -0
- package/skills/reporting/references/pipeline.md +213 -0
- package/skills/reporting/scripts/verify.sh +149 -0
- package/skills/research-ops/SKILL.md +200 -0
- package/skills/research-ops/evals/README.md +13 -0
- package/skills/research-ops/evals/cases.yaml +38 -0
- package/skills/research-ops/references/credibility-rubric.md +78 -0
- package/skills/research-ops/references/memo-template.md +63 -0
- package/skills/research-ops/scripts/verify.sh +181 -0
- package/skills/retention/SKILL.md +206 -0
- package/skills/retention/evals/README.md +13 -0
- package/skills/retention/evals/cases.yaml +42 -0
- package/skills/retention/references/health-score-and-metrics.md +97 -0
- package/skills/retention/references/save-and-winback-plays.md +65 -0
- package/skills/review/SKILL.md +222 -0
- package/skills/review/evals/README.md +84 -0
- package/skills/review/evals/cases.yaml +55 -0
- package/skills/review-management/SKILL.md +204 -0
- package/skills/review-management/evals/README.md +13 -0
- package/skills/review-management/evals/cases.yaml +60 -0
- package/skills/review-management/references/platform-apis.md +86 -0
- package/skills/review-management/scripts/verify.sh +128 -0
- package/skills/ruby/SKILL.md +316 -0
- package/skills/ruby/evals/README.md +12 -0
- package/skills/ruby/evals/cases.yaml +41 -0
- package/skills/ruby/references/gems-and-testing.md +208 -0
- package/skills/ruby/references/metaprogramming.md +161 -0
- package/skills/ruby/scripts/verify.sh +83 -0
- package/skills/runpod/SKILL.md +238 -0
- package/skills/runpod/evals/README.md +11 -0
- package/skills/runpod/evals/cases.yaml +47 -0
- package/skills/runpod/references/cost-and-scaling.md +85 -0
- package/skills/runpod/references/serverless-workers.md +101 -0
- package/skills/runpod/scripts/verify.sh +126 -0
- package/skills/rust/SKILL.md +395 -0
- package/skills/rust/evals/README.md +12 -0
- package/skills/rust/evals/cases.yaml +42 -0
- package/skills/rust/references/async-tokio.md +141 -0
- package/skills/rust/references/axum-service.md +132 -0
- package/skills/rust/references/ownership.md +86 -0
- package/skills/rust/references/testing.md +108 -0
- package/skills/rust/scripts/verify.sh +91 -0
- package/skills/sales-pipeline/SKILL.md +162 -0
- package/skills/sales-pipeline/evals/README.md +13 -0
- package/skills/sales-pipeline/evals/cases.yaml +60 -0
- package/skills/sales-pipeline/references/forecasting-math.md +82 -0
- package/skills/sales-pipeline/references/stage-playbook.md +84 -0
- package/skills/sales-pipeline/scripts/verify.sh +210 -0
- package/skills/scaling/SKILL.md +137 -0
- package/skills/scaling/evals/README.md +3 -0
- package/skills/scaling/evals/cases.yaml +42 -0
- package/skills/scaling/references/load-testing-k6.md +127 -0
- package/skills/scaling/scripts/example.load.js +24 -0
- package/skills/scaling/scripts/verify.sh +70 -0
- package/skills/sdd/SKILL.md +203 -0
- package/skills/sdd/evals/README.md +60 -0
- package/skills/sdd/evals/cases.yaml +78 -0
- package/skills/sdd-init/SKILL.md +148 -0
- package/skills/sdd-init/evals/README.md +3 -0
- package/skills/sdd-init/evals/cases.yaml +43 -0
- package/skills/secure-coding/SKILL.md +365 -0
- package/skills/secure-coding/evals/README.md +68 -0
- package/skills/secure-coding/evals/cases.yaml +55 -0
- package/skills/secure-coding/references/authn-authz.md +249 -0
- package/skills/secure-coding/references/owasp-by-stack.md +574 -0
- package/skills/secure-coding/references/secrets-and-supply-chain.md +205 -0
- package/skills/secure-coding/references/threat-modeling.md +213 -0
- package/skills/secure-coding/scripts/verify.sh +208 -0
- package/skills/security-scan/SKILL.md +239 -0
- package/skills/security-scan/evals/README.md +14 -0
- package/skills/security-scan/evals/cases.yaml +50 -0
- package/skills/security-scan/references/tools.md +98 -0
- package/skills/security-scan/references/triage.md +93 -0
- package/skills/security-scan/scripts/verify.sh +108 -0
- package/skills/seo-geo/SKILL.md +192 -0
- package/skills/seo-geo/evals/README.md +14 -0
- package/skills/seo-geo/evals/cases.yaml +45 -0
- package/skills/seo-geo/references/ai-crawler-control.md +104 -0
- package/skills/seo-geo/references/schema-recipes.md +130 -0
- package/skills/seo-geo/scripts/verify.sh +236 -0
- package/skills/ship/SKILL.md +258 -0
- package/skills/ship/evals/README.md +89 -0
- package/skills/ship/evals/cases.yaml +44 -0
- package/skills/shopify/SKILL.md +229 -0
- package/skills/shopify/evals/README.md +14 -0
- package/skills/shopify/evals/cases.yaml +41 -0
- package/skills/shopify/references/apps-graphql.md +103 -0
- package/skills/shopify/references/checkout-extensibility.md +71 -0
- package/skills/shopify/references/liquid-themes.md +89 -0
- package/skills/shopify/scripts/verify.sh +120 -0
- package/skills/shortform-editing/SKILL.md +161 -0
- package/skills/shortform-editing/evals/README.md +16 -0
- package/skills/shortform-editing/evals/cases.yaml +61 -0
- package/skills/shortform-editing/references/captions.md +85 -0
- package/skills/shortform-editing/references/ffmpeg-pipeline.md +126 -0
- package/skills/shortform-editing/scripts/verify.sh +148 -0
- package/skills/shortform-ideation/SKILL.md +153 -0
- package/skills/shortform-ideation/evals/README.md +20 -0
- package/skills/shortform-ideation/evals/cases.yaml +58 -0
- package/skills/shortform-ideation/references/experiment-ledger.md +85 -0
- package/skills/shortform-ideation/references/trend-sources.md +69 -0
- package/skills/shortform-ideation/scripts/verify.sh +172 -0
- package/skills/shortform-packaging/SKILL.md +247 -0
- package/skills/shortform-packaging/evals/README.md +10 -0
- package/skills/shortform-packaging/evals/cases.yaml +48 -0
- package/skills/shortform-packaging/references/package-templates.md +117 -0
- package/skills/shortform-packaging/scripts/verify.sh +210 -0
- package/skills/shortform-strategy/SKILL.md +149 -0
- package/skills/shortform-strategy/evals/README.md +3 -0
- package/skills/shortform-strategy/evals/cases.yaml +52 -0
- package/skills/shortform-strategy/references/learning-loop-template.md +49 -0
- package/skills/shortform-strategy/references/platform-signals-2026.md +46 -0
- package/skills/shortform-strategy/scripts/verify.sh +176 -0
- package/skills/skill-scout/SKILL.md +133 -0
- package/skills/skill-scout/evals/README.md +12 -0
- package/skills/skill-scout/evals/cases.yaml +56 -0
- package/skills/skill-scout/references/install-commands.md +76 -0
- package/skills/skill-scout/scripts/verify.sh +154 -0
- package/skills/social-publisher/SKILL.md +179 -0
- package/skills/social-publisher/evals/README.md +14 -0
- package/skills/social-publisher/evals/cases.yaml +55 -0
- package/skills/social-publisher/references/calendar-schema.md +97 -0
- package/skills/social-publisher/references/platform-limits.md +56 -0
- package/skills/social-publisher/scripts/verify.sh +232 -0
- package/skills/solid-js/SKILL.md +260 -0
- package/skills/solid-js/evals/README.md +3 -0
- package/skills/solid-js/evals/cases.yaml +38 -0
- package/skills/solid-js/references/reactivity-deep-dive.md +89 -0
- package/skills/solid-js/references/router-and-start.md +93 -0
- package/skills/solid-js/scripts/verify.sh +130 -0
- package/skills/sop-builder/SKILL.md +233 -0
- package/skills/sop-builder/evals/README.md +14 -0
- package/skills/sop-builder/evals/cases.yaml +48 -0
- package/skills/sop-builder/references/sop-skeleton.md +170 -0
- package/skills/specify/SKILL.md +214 -0
- package/skills/specify/evals/README.md +73 -0
- package/skills/specify/evals/cases.yaml +80 -0
- package/skills/specify/references/eliciting-requirements.md +77 -0
- package/skills/specify/references/spec-template.md +60 -0
- package/skills/spreadsheet-ops/SKILL.md +180 -0
- package/skills/spreadsheet-ops/evals/README.md +33 -0
- package/skills/spreadsheet-ops/evals/cases.yaml +42 -0
- package/skills/spreadsheet-ops/references/formula-cookbook.md +70 -0
- package/skills/spreadsheet-ops/references/python-excel.md +87 -0
- package/skills/spreadsheet-ops/references/sheets-api-appsscript.md +118 -0
- package/skills/spreadsheet-ops/scripts/verify.sh +152 -0
- package/skills/spring-boot/SKILL.md +375 -0
- package/skills/spring-boot/evals/README.md +11 -0
- package/skills/spring-boot/evals/cases.yaml +49 -0
- package/skills/spring-boot/references/jpa.md +94 -0
- package/skills/spring-boot/references/security.md +92 -0
- package/skills/spring-boot/references/testing.md +95 -0
- package/skills/spring-boot/scripts/verify.sh +115 -0
- package/skills/sql/SKILL.md +286 -0
- package/skills/sql/evals/README.md +9 -0
- package/skills/sql/evals/cases.yaml +49 -0
- package/skills/sql/references/ctes-and-recursion.md +63 -0
- package/skills/sql/references/joins-and-sets.md +71 -0
- package/skills/sql/references/portability.md +38 -0
- package/skills/sql/references/window-functions.md +72 -0
- package/skills/sql/scripts/verify.sh +139 -0
- package/skills/sqlite-turso/SKILL.md +214 -0
- package/skills/sqlite-turso/evals/README.md +24 -0
- package/skills/sqlite-turso/evals/cases.yaml +45 -0
- package/skills/sqlite-turso/references/embedded-replicas.md +96 -0
- package/skills/sqlite-turso/scripts/verify.sh +95 -0
- package/skills/stripe/SKILL.md +269 -0
- package/skills/stripe/evals/README.md +11 -0
- package/skills/stripe/evals/cases.yaml +45 -0
- package/skills/stripe/references/going-live.md +64 -0
- package/skills/stripe/references/webhook-events.md +79 -0
- package/skills/stripe/scripts/verify.sh +130 -0
- package/skills/structured-extraction/SKILL.md +230 -0
- package/skills/structured-extraction/evals/README.md +13 -0
- package/skills/structured-extraction/evals/cases.yaml +70 -0
- package/skills/structured-extraction/references/providers.md +152 -0
- package/skills/structured-extraction/scripts/verify.sh +160 -0
- package/skills/suggest/SKILL.md +30 -0
- package/skills/suggest/evals/README.md +14 -0
- package/skills/suggest/evals/cases.yaml +51 -0
- package/skills/supabase/SKILL.md +268 -0
- package/skills/supabase/evals/README.md +12 -0
- package/skills/supabase/evals/cases.yaml +42 -0
- package/skills/supabase/references/auth-ssr.md +173 -0
- package/skills/supabase/references/rls-cookbook.md +122 -0
- package/skills/supabase/scripts/verify.sh +149 -0
- package/skills/svelte/SKILL.md +238 -0
- package/skills/svelte/evals/README.md +3 -0
- package/skills/svelte/evals/cases.yaml +41 -0
- package/skills/svelte/references/runes.md +97 -0
- package/skills/svelte/references/sveltekit-data.md +156 -0
- package/skills/svelte/scripts/verify.sh +128 -0
- package/skills/swift-ios/SKILL.md +217 -0
- package/skills/swift-ios/evals/README.md +3 -0
- package/skills/swift-ios/evals/cases.yaml +46 -0
- package/skills/swift-ios/references/concurrency.md +132 -0
- package/skills/swift-ios/references/testing.md +112 -0
- package/skills/swift-ios/scripts/verify.sh +98 -0
- package/skills/tasks/SKILL.md +260 -0
- package/skills/tasks/evals/README.md +70 -0
- package/skills/tasks/evals/cases.yaml +75 -0
- package/skills/tauri/SKILL.md +224 -0
- package/skills/tauri/evals/README.md +12 -0
- package/skills/tauri/evals/cases.yaml +46 -0
- package/skills/tauri/references/bundling-distribution.md +129 -0
- package/skills/tauri/references/security.md +143 -0
- package/skills/tauri/scripts/verify.sh +178 -0
- package/skills/technical-writing/SKILL.md +230 -0
- package/skills/technical-writing/evals/README.md +12 -0
- package/skills/technical-writing/evals/cases.yaml +53 -0
- package/skills/technical-writing/references/diataxis-modes.md +131 -0
- package/skills/technical-writing/references/vale-starter.md +90 -0
- package/skills/technical-writing/scripts/verify.sh +83 -0
- package/skills/terms-conditions/SKILL.md +147 -0
- package/skills/terms-conditions/evals/README.md +14 -0
- package/skills/terms-conditions/evals/cases.yaml +48 -0
- package/skills/terms-conditions/references/clause-library.md +158 -0
- package/skills/terms-conditions/references/notices-and-aup.md +125 -0
- package/skills/terms-conditions/scripts/verify.sh +92 -0
- package/skills/testing-go/SKILL.md +246 -0
- package/skills/testing-go/evals/README.md +3 -0
- package/skills/testing-go/evals/cases.yaml +44 -0
- package/skills/testing-go/references/coverage-and-benchmarks.md +85 -0
- package/skills/testing-go/references/mocks-and-fakes.md +140 -0
- package/skills/testing-go/references/synctest-and-concurrency.md +82 -0
- package/skills/testing-go/scripts/verify.sh +72 -0
- package/skills/testing-py/SKILL.md +179 -0
- package/skills/testing-py/evals/README.md +5 -0
- package/skills/testing-py/evals/cases.yaml +44 -0
- package/skills/testing-py/references/mocking.md +141 -0
- package/skills/testing-py/references/property-testing.md +99 -0
- package/skills/testing-py/scripts/verify.sh +117 -0
- package/skills/testing-web/SKILL.md +224 -0
- package/skills/testing-web/evals/README.md +11 -0
- package/skills/testing-web/evals/cases.yaml +52 -0
- package/skills/testing-web/references/jest-setup.md +88 -0
- package/skills/testing-web/references/recipes.md +116 -0
- package/skills/testing-web/scripts/verify.sh +111 -0
- package/skills/tiktok-api/SKILL.md +315 -0
- package/skills/tiktok-api/evals/README.md +17 -0
- package/skills/tiktok-api/evals/cases.yaml +51 -0
- package/skills/tiktok-api/references/metrics-and-publish.md +127 -0
- package/skills/tiktok-api/references/oauth-setup.md +105 -0
- package/skills/tiktok-api/references/wiki-schema.md +85 -0
- package/skills/tiktok-api/scripts/verify.sh +96 -0
- package/skills/together-fireworks/SKILL.md +181 -0
- package/skills/together-fireworks/evals/README.md +3 -0
- package/skills/together-fireworks/evals/cases.yaml +50 -0
- package/skills/together-fireworks/references/batch-and-tuning.md +59 -0
- package/skills/together-fireworks/references/models-and-pricing.md +79 -0
- package/skills/together-fireworks/scripts/verify.sh +165 -0
- package/skills/translation-l10n/SKILL.md +229 -0
- package/skills/translation-l10n/evals/README.md +3 -0
- package/skills/translation-l10n/evals/cases.yaml +39 -0
- package/skills/translation-l10n/references/icu-cookbook.md +82 -0
- package/skills/translation-l10n/references/rtl-and-bidi.md +60 -0
- package/skills/typescript/SKILL.md +258 -0
- package/skills/typescript/evals/README.md +15 -0
- package/skills/typescript/evals/cases.yaml +46 -0
- package/skills/typescript/references/build-and-monorepo.md +141 -0
- package/skills/typescript/references/type-system.md +162 -0
- package/skills/typescript/scripts/verify.sh +52 -0
- package/skills/unit-economics/SKILL.md +180 -0
- package/skills/unit-economics/evals/README.md +5 -0
- package/skills/unit-economics/evals/cases.yaml +43 -0
- package/skills/unit-economics/references/formulas.md +144 -0
- package/skills/unit-economics/scripts/verify.sh +179 -0
- package/skills/vector-db/SKILL.md +189 -0
- package/skills/vector-db/evals/README.md +10 -0
- package/skills/vector-db/evals/cases.yaml +45 -0
- package/skills/vector-db/references/engines.md +175 -0
- package/skills/vector-db/references/tuning.md +62 -0
- package/skills/vector-db/scripts/verify.sh +110 -0
- package/skills/vercel/SKILL.md +242 -0
- package/skills/vercel/evals/README.md +23 -0
- package/skills/vercel/evals/cases.yaml +45 -0
- package/skills/vercel/references/cli-cookbook.md +98 -0
- package/skills/vercel/references/vercel-json.md +120 -0
- package/skills/vercel/scripts/verify.sh +168 -0
- package/skills/verify/SKILL.md +188 -0
- package/skills/verify/evals/README.md +78 -0
- package/skills/verify/evals/cases.yaml +74 -0
- package/skills/video-shorts/SKILL.md +163 -0
- package/skills/video-shorts/evals/README.md +15 -0
- package/skills/video-shorts/evals/cases.yaml +56 -0
- package/skills/video-shorts/references/hook-and-script-patterns.md +95 -0
- package/skills/video-shorts/references/specs-and-safe-zones.md +74 -0
- package/skills/video-shorts/scripts/verify.sh +172 -0
- package/skills/vue-nuxt/SKILL.md +384 -0
- package/skills/vue-nuxt/evals/README.md +11 -0
- package/skills/vue-nuxt/evals/cases.yaml +49 -0
- package/skills/vue-nuxt/references/data-and-state.md +127 -0
- package/skills/vue-nuxt/references/migration-nuxt4.md +79 -0
- package/skills/vue-nuxt/references/nitro-and-rendering.md +117 -0
- package/skills/vue-nuxt/references/reactivity.md +135 -0
- package/skills/vue-nuxt/scripts/verify.sh +148 -0
- package/skills/webhooks/SKILL.md +246 -0
- package/skills/webhooks/evals/README.md +15 -0
- package/skills/webhooks/evals/cases.yaml +46 -0
- package/skills/webhooks/references/framework-raw-body.md +97 -0
- package/skills/webhooks/references/signature-schemes.md +66 -0
- package/skills/webhooks/scripts/verify.sh +142 -0
- package/skills/webinar/SKILL.md +196 -0
- package/skills/webinar/evals/README.md +14 -0
- package/skills/webinar/evals/cases.yaml +44 -0
- package/skills/webinar/references/email-cadence.md +75 -0
- package/skills/webinar/references/run-of-show.md +83 -0
- package/skills/whatsapp-telegram/SKILL.md +235 -0
- package/skills/whatsapp-telegram/evals/README.md +11 -0
- package/skills/whatsapp-telegram/evals/cases.yaml +44 -0
- package/skills/whatsapp-telegram/references/telegram-bot-api.md +91 -0
- package/skills/whatsapp-telegram/references/whatsapp-cloud-api.md +103 -0
- package/skills/whatsapp-telegram/scripts/verify.sh +90 -0
- package/skills/wordpress/SKILL.md +224 -0
- package/skills/wordpress/evals/README.md +3 -0
- package/skills/wordpress/evals/cases.yaml +50 -0
- package/skills/wordpress/references/hardening.md +108 -0
- package/skills/wordpress/references/performance.md +80 -0
- package/skills/wordpress/references/woocommerce.md +65 -0
- package/skills/wordpress/scripts/verify.sh +96 -0
- package/skills/worktrees/SKILL.md +199 -0
- package/skills/worktrees/evals/README.md +78 -0
- package/skills/worktrees/evals/cases.yaml +47 -0
- package/skills/youtube-api/SKILL.md +286 -0
- package/skills/youtube-api/evals/README.md +3 -0
- package/skills/youtube-api/evals/cases.yaml +50 -0
- package/skills/youtube-api/references/analytics-queries.md +89 -0
- package/skills/youtube-api/references/oauth-setup.md +55 -0
- package/skills/youtube-api/references/wiki-schema.md +70 -0
- package/skills/youtube-api/scripts/verify.sh +84 -0
- package/skills/youtube-ideation/SKILL.md +234 -0
- package/skills/youtube-ideation/evals/README.md +14 -0
- package/skills/youtube-ideation/evals/cases.yaml +52 -0
- package/skills/youtube-ideation/references/idea-ledger-and-loop.md +89 -0
- package/skills/youtube-ideation/references/research-and-signals.md +92 -0
- package/skills/youtube-ideation/scripts/verify.sh +237 -0
- package/skills/youtube-packaging/SKILL.md +220 -0
- package/skills/youtube-packaging/evals/README.md +16 -0
- package/skills/youtube-packaging/evals/cases.yaml +48 -0
- package/skills/youtube-packaging/references/description-and-chapters.md +135 -0
- package/skills/youtube-packaging/scripts/verify.sh +250 -0
- package/skills/youtube-strategy/SKILL.md +157 -0
- package/skills/youtube-strategy/evals/README.md +5 -0
- package/skills/youtube-strategy/evals/cases.yaml +61 -0
- package/skills/youtube-strategy/references/channel-architecture.md +46 -0
- package/skills/youtube-strategy/references/wiki-records.md +86 -0
- package/skills/youtube-strategy/scripts/verify.sh +118 -0
- package/skills/youtube-thumbnails/SKILL.md +180 -0
- package/skills/youtube-thumbnails/evals/README.md +11 -0
- package/skills/youtube-thumbnails/evals/cases.yaml +48 -0
- package/skills/youtube-thumbnails/references/composition-and-specs.md +69 -0
- package/skills/youtube-thumbnails/references/experiment-log-format.md +65 -0
- package/skills/youtube-thumbnails/scripts/verify.sh +123 -0
- package/targets/claude.js +23 -0
- package/targets/codex.js +29 -0
- package/targets/cursor.js +20 -0
- package/targets/gemini.js +29 -0
- package/targets/index.js +55 -0
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
# Slide Design — Communication Design, Visual System, Data Viz & Motion
|
|
2
|
+
|
|
3
|
+
How a slide *communicates*, *looks*, and *moves*. The brand's visual system from `../design/SKILL.md`,
|
|
4
|
+
re-tuned for the worst viewing conditions a deck faces: a projector, a bright room, the back row, a glance.
|
|
5
|
+
Defer the token *system* (OKLCH palette, type pairing, spacing scale, motion personality) to `design`; this
|
|
6
|
+
file is the deck-specific application. Good/Bad contrasts throughout.
|
|
7
|
+
|
|
8
|
+
The first half is the **communication layer** — assertion-evidence structure, cognitive load, and what you
|
|
9
|
+
*show* vs *say*. The second half is the **visual layer** — grid, type, color, data viz, motion. Get the
|
|
10
|
+
communication right first; a beautiful slide that says nothing still fails.
|
|
11
|
+
|
|
12
|
+
## Design first: audience, message, evidence
|
|
13
|
+
|
|
14
|
+
Before a grid or a color, answer six planning questions. The deck serves the *audience's* understanding,
|
|
15
|
+
not the presenter's comfort — that is the one principle every other rule descends from.
|
|
16
|
+
|
|
17
|
+
1. **Who, specifically, is the audience?** Their existing knowledge sets the floor and ceiling for what you can assume.
|
|
18
|
+
2. **What is the ONE main message?** One sentence they should remember a week later. If you can't write it, the deck has no spine.
|
|
19
|
+
3. **What 3–5 supporting points** carry that message, and in what order do they build?
|
|
20
|
+
4. **What evidence** (a number, a chart, a demo, an example) proves each point?
|
|
21
|
+
5. **What action** should the audience take — the single call-to-action the deck climbs toward?
|
|
22
|
+
6. **What is essential vs. expandable** under time pressure? Mark each point so a 30-minute deck collapses to 10 without losing the spine.
|
|
23
|
+
|
|
24
|
+
This maps onto the deck arc and slide skeleton in `storytelling-and-decks.md`: the one message is the
|
|
25
|
+
thesis, the supporting points are the act beats, the CTA is the closing ask. Plan here, storyboard there.
|
|
26
|
+
|
|
27
|
+
## Assertion-evidence: the headline IS the slide
|
|
28
|
+
|
|
29
|
+
The single highest-leverage structural move in the whole skill. **Each slide is one assertion (a complete
|
|
30
|
+
sentence stating the point) plus the visual evidence that proves it** — never a topic label over a bullet list.
|
|
31
|
+
|
|
32
|
+
- **Assertion** = the slide title, written as a full claim: *"User engagement rose 43% after the redesign"*, not *"Engagement"* or *"Key findings"*.
|
|
33
|
+
- **Evidence** = the visual that backs it: the chart, the diagram, the screenshot, the one number. The body proves the headline; it does not repeat it.
|
|
34
|
+
- If a slide's content is a bullet list, ask whether it should be a slide at all, or whether each bullet is really its own assertion-evidence slide.
|
|
35
|
+
|
|
36
|
+
> **Good:**
|
|
37
|
+
> ```text
|
|
38
|
+
> Title: "User engagement rose 43% after the redesign"
|
|
39
|
+
> Body: [line chart, pre→post, the post point highlighted]
|
|
40
|
+
> ```
|
|
41
|
+
> **Bad:**
|
|
42
|
+
> ```text
|
|
43
|
+
> Title: "Key findings"
|
|
44
|
+
> Body: • Data shows an increase
|
|
45
|
+
> • Users engaged more
|
|
46
|
+
> • Revenue improved
|
|
47
|
+
> ```
|
|
48
|
+
|
|
49
|
+
## Cognitive load: one concept per slide
|
|
50
|
+
|
|
51
|
+
Working memory is tiny and the audience is also listening to you. Every slide must pass one test: *"What
|
|
52
|
+
is the ONE thing I want them to take from this?"* If there are two answers, it is two slides.
|
|
53
|
+
|
|
54
|
+
- **One concept per slide.** A slide that needs two breaths to explain is two slides.
|
|
55
|
+
- **Progressive disclosure** when a concept genuinely has sequential parts: show the initial state, then add element one with context, then element two building on it. Build order *is* the explanation — the audience looks where you are, not three bullets ahead. (This is the legitimate use of motion; see the Motion section.)
|
|
56
|
+
- **Text density is a ceiling, not a target** (see the limits table below). Less on the slide means more attention on you.
|
|
57
|
+
- **Code on technical slides:** always syntax-highlight; highlight the one critical line; build complex examples up; strip boilerplate that isn't the point.
|
|
58
|
+
|
|
59
|
+
## Spoken vs. shown
|
|
60
|
+
|
|
61
|
+
The slide and your mouth are two channels, not one. Redundancy wastes both. Reading the slide verbatim is
|
|
62
|
+
the fastest way to lose a room — they read faster than you talk, finish, and tune out.
|
|
63
|
+
|
|
64
|
+
| Put on the slide | Say out loud |
|
|
65
|
+
| --- | --- |
|
|
66
|
+
| The assertion (headline) | The elaboration and nuance |
|
|
67
|
+
| The visual evidence | The context and the how |
|
|
68
|
+
| The critical number | Its interpretation — why it matters |
|
|
69
|
+
| The next step / CTA | The story that earns it |
|
|
70
|
+
|
|
71
|
+
> **Good:** slide shows a chart and one claim; you narrate the backstory, the caveat, and the implication.
|
|
72
|
+
> **Bad:** slide holds your full script in bullets; you read it aloud; the audience read it 20 seconds ago.
|
|
73
|
+
|
|
74
|
+
## The core constraint: legible from the back of the room
|
|
75
|
+
|
|
76
|
+
A web page is read at 50cm. A deck is read at 3–10 metres, often off a washed-out projector, sometimes for 5
|
|
77
|
+
seconds before you click. Design for the *worst* case.
|
|
78
|
+
|
|
79
|
+
- **Body text ≥ 24pt; ≥ 28–32pt for a conference talk.** Title 40–60pt. Caption ≥ 18pt. Never shrink text to fit — split the slide.
|
|
80
|
+
- **~6 words per line, ~6 lines per slide** as a *ceiling*. Less is more. A keynote slide is often one line.
|
|
81
|
+
- **Contrast ≥ 4.5:1** for text (the WCAG AA floor), higher is better on a projector. Check both your dark and light themes.
|
|
82
|
+
- **One focal point per slide.** The eye should land in one place. If everything is bold, nothing is.
|
|
83
|
+
- **Negative space is not wasted space** — it's what makes the one thing readable. Crowded slides read as filler.
|
|
84
|
+
|
|
85
|
+
> **Good:** `OnboardingChurn-40%` in 54pt over a clean field, one supporting chart.
|
|
86
|
+
> **Bad:** a 14pt 9-bullet slide the presenter reads aloud while the back row squints.
|
|
87
|
+
|
|
88
|
+
## Layout grid for 16:9
|
|
89
|
+
|
|
90
|
+
- **12-column grid**, consistent gutters, generous outer margin (~7% / ~0.9"). Define a **safe area**; keep all important content inside it so nothing clips on a projector or in PPTX export.
|
|
91
|
+
- **One layout family**, reused: title, section divider, statement, content (headline + one visual), two-column (text|visual), full-bleed image, big-number, chart, quote, agenda/closing. Consistency reads as polish.
|
|
92
|
+
- **Align to the grid.** Ragged left edges and floating boxes read as amateur. Snap to columns.
|
|
93
|
+
- **Headline anchored top-left** (or centered for statements); visual occupies the focal zone; caption/source small and quiet at the bottom.
|
|
94
|
+
|
|
95
|
+
## Type for projection
|
|
96
|
+
|
|
97
|
+
- **Two type roles max:** a display face for headlines (personality) + a clean sans for body (legibility). Pull the exact pairing from the design tokens; don't introduce new fonts per deck.
|
|
98
|
+
- **A real type scale** (e.g. display 60 / h1 44 / h2 32 / body 26 / caption 18) — steps, not arbitrary sizes. One scale across the whole deck.
|
|
99
|
+
- **Weight for hierarchy**, not just size: bold the assertion, regular the support. Avoid all-caps for long strings (hard to read at distance); reserve it for short labels.
|
|
100
|
+
- **Numbers are the message** in data decks — set big numbers in display size; the label small beside them.
|
|
101
|
+
|
|
102
|
+
> **Good:** one display font for headlines, one sans for body, four sizes total.
|
|
103
|
+
> **Bad:** four fonts, random sizes, italic + underline + color all at once.
|
|
104
|
+
|
|
105
|
+
## Color: dark vs light decks, allocated for a room
|
|
106
|
+
|
|
107
|
+
- **Dark deck** (dark surface, light text): better for dark rooms, big LED/LCD screens, on-stage; reduces glare; feels premium. Default for keynotes/launches.
|
|
108
|
+
- **Light deck** (light surface, dark text): better for **printed handouts**, bright rooms, documents that double as leave-behinds, and projectors that wash out darks. Default for board/QBR leave-behinds.
|
|
109
|
+
- **Build both from the same tokens** (a `.dark` / `.handout` class in Marp/Slidev; two masters in PPTX). Keep contrast ≥ 4.5:1 in each.
|
|
110
|
+
- **60-30-10 allocation:** ~60% surface, ~30% ink/text, ~10% one accent for emphasis. The accent marks the *one* thing that matters per slide.
|
|
111
|
+
- **Never encode meaning by color alone** (color-blind audiences, washed-out projectors): pair color with label, position, or shape.
|
|
112
|
+
|
|
113
|
+
> **Good:** dark navy deck, off-white text, a single amber accent on the one number that matters.
|
|
114
|
+
> **Bad:** five competing brand colors per slide, a gradient behind every headline, low-contrast gray-on-gray.
|
|
115
|
+
|
|
116
|
+
## Data visualization: one chart, one point
|
|
117
|
+
|
|
118
|
+
The single biggest credibility lever in a data deck. **Every chart makes exactly one point, and that point is
|
|
119
|
+
the slide's headline.** If the chart needs a legend decoder ring, it's failing.
|
|
120
|
+
|
|
121
|
+
- **Name the takeaway in the headline** ("Revenue 3×'d in four quarters"), then let the chart prove it.
|
|
122
|
+
- **Pre-attentive emphasis:** gray out everything, highlight the **one** bar/line/point in the accent color. The eye goes there first.
|
|
123
|
+
- **Strip the clutter:** no gridlines (or one faint baseline), no chart border, no redundant legend for a single series, minimal axis ticks. Maximize data-ink.
|
|
124
|
+
- **Direct-label** lines/bars instead of forcing a legend lookup. Put the value at the end of the line.
|
|
125
|
+
- **Honest axes:** start bars at zero; don't truncate to exaggerate; one axis, not dual axes; consistent scales across comparable slides.
|
|
126
|
+
- **Pick the right chart:** trend over time → line; comparison across categories → bar; part-of-whole (≤ 4 parts) → a single bar or simple pie; correlation → scatter. **Never a 3-D chart, never a rainbow palette, never a pie with 8 slices.**
|
|
127
|
+
- **Big-number slide** for a single hero metric: the number in display size, one line of context, source in the caption. Often more powerful than any chart.
|
|
128
|
+
|
|
129
|
+
> **Good:** one line chart, four labeled points, the final point in accent, no gridlines, headline states the result.
|
|
130
|
+
> **Bad:** a 3-D stacked bar with 7 series, a rainbow legend, dual y-axes, and a title that just says "Metrics".
|
|
131
|
+
|
|
132
|
+
In Marp/Slidev, draw charts as SVG/chart-lib/images; in python-pptx use **native editable charts** (see
|
|
133
|
+
`pptx-python.md`) so the data lives in the file.
|
|
134
|
+
|
|
135
|
+
## Imagery
|
|
136
|
+
|
|
137
|
+
- **Full-bleed and intentional**, not decorative stock. One strong image > three small clip-art ones.
|
|
138
|
+
- **Always put a legibility scrim** (a dark/light gradient or solid overlay) behind text on a photo, or the text disappears against busy areas.
|
|
139
|
+
- **Resolution matters at 4K** — use images large enough not to pixelate on a big projector; prefer SVG for logos, icons, and diagrams (infinite scale, tiny file).
|
|
140
|
+
- **Consistent treatment** — one duotone/filter/crop style across the deck, from the brand imagery mood in the design tokens. Mixed photo styles read as a collage, not a brand.
|
|
141
|
+
- **Diagrams over screenshots** when explaining a system; a labeled, simplified diagram beats a dense UI capture nobody can read from row 10.
|
|
142
|
+
|
|
143
|
+
> **Good:** one full-bleed product shot, dark gradient scrim bottom-left, white headline over it.
|
|
144
|
+
> **Bad:** three pixelated stock photos of "teamwork", logos at random sizes, a screenshot too small to read.
|
|
145
|
+
|
|
146
|
+
## Motion & transitions — with restraint (a deck is not a video)
|
|
147
|
+
|
|
148
|
+
Motion clarifies sequence and state change; it does not fill time. Applies to HTML pipelines (Marp/Slidev
|
|
149
|
+
presenting) and to the build order you control in PPTX.
|
|
150
|
+
|
|
151
|
+
- **One transition family** for the whole deck (e.g. a quick `fade` or a subtle slide), ≤ 300ms. Mixing transition types per slide is noise.
|
|
152
|
+
- **Builds reveal one idea at a time.** Use `v-click` (Slidev) / fragment reveals to show bullets or chart series sequentially when sequence *is* the point — so the audience looks where you're talking, not ahead. Don't animate for the sake of it.
|
|
153
|
+
- **Animate to explain, not to decorate:** a value changing, a step being added, an old→new comparison. If the motion doesn't carry meaning, cut it.
|
|
154
|
+
- **Honor `prefers-reduced-motion`** in HTML decks — disable non-essential animation. (Irrelevant in the static PDF, which is why PDF is the safe leave-behind.)
|
|
155
|
+
- **Pacing:** statement slides reset attention after a heavy data slide; don't run ten dense slides in a row.
|
|
156
|
+
|
|
157
|
+
Borrowed-from-motion-tools ideas, applied to slides (NOT to turn this into a video):
|
|
158
|
+
- **Progressive reveal** of a diagram (show the current state, then the optimized state) — clarifies a transformation.
|
|
159
|
+
- **One highlighted element** entering/emphasizing — directs the eye, the slide equivalent of pre-attentive color.
|
|
160
|
+
- **Spring/ease on the single transition** for a premium feel — subtle, fast, consistent.
|
|
161
|
+
|
|
162
|
+
> **Good:** one fade transition deck-wide; a 3-step diagram builds one step per click; reduced-motion honored.
|
|
163
|
+
> **Bad:** spin/zoom/bounce transitions varying per slide, every bullet flying in from a different edge, 1.5s animations that make the audience wait.
|
|
164
|
+
|
|
165
|
+
## Content density limits (ceilings, not targets)
|
|
166
|
+
|
|
167
|
+
| Slide type | Limit |
|
|
168
|
+
| --- | --- |
|
|
169
|
+
| Title | 1 headline + 1 subtitle (+ optional tagline) |
|
|
170
|
+
| Statement | 1 line, big |
|
|
171
|
+
| Content | 1 assertion headline + ≤ 3 support points / 1 visual |
|
|
172
|
+
| Two-column | headline + text (≤ 4 points) \| one visual |
|
|
173
|
+
| Big number | 1 metric (display size) + 1 line context + source |
|
|
174
|
+
| Chart | 1 chart, 1 takeaway (named in headline), source caption |
|
|
175
|
+
| Quote | 1 quote + attribution |
|
|
176
|
+
| Image | 1 full-bleed image + scrim + ≤ 1 line of text |
|
|
177
|
+
|
|
178
|
+
## Diagnostic rubric (score 1–5, aim ≥ 4 each)
|
|
179
|
+
|
|
180
|
+
Use this to *evaluate* a deck — your own draft or one you're asked to review. Score each criterion 1
|
|
181
|
+
(failing) to 5 (exemplary); anything below 4 is a fix before shipping. The four axes match the QA gate
|
|
182
|
+
the `verify.sh` checklist points back to.
|
|
183
|
+
|
|
184
|
+
**1. Audience-centered design** — *does every choice serve the audience?*
|
|
185
|
+
|
|
186
|
+
| Criterion | 1–5 |
|
|
187
|
+
| --- | --- |
|
|
188
|
+
| Content matches the audience's knowledge level | |
|
|
189
|
+
| One clear main message + a value proposition for *them* | |
|
|
190
|
+
| Adaptable to time constraints (essential vs. expandable marked) | |
|
|
191
|
+
| Structure/order aids understanding rather than the presenter's notes | |
|
|
192
|
+
|
|
193
|
+
Red flags: presenter-focused not audience-focused; no read on existing knowledge.
|
|
194
|
+
|
|
195
|
+
**2. Visual clarity** — *does the eye land on the point?*
|
|
196
|
+
|
|
197
|
+
| Criterion | 1–5 |
|
|
198
|
+
| --- | --- |
|
|
199
|
+
| Assertion-evidence structure (claim + visual), not topic + bullets | |
|
|
200
|
+
| Visual elements balance text; one focal point per slide | |
|
|
201
|
+
| Visual hierarchy guides attention (weight, size, accent) | |
|
|
202
|
+
| Consistent layouts/treatment; deliberate whitespace | |
|
|
203
|
+
|
|
204
|
+
Red flags: bullet-point overuse; text-heavy slides; cluttered layouts.
|
|
205
|
+
|
|
206
|
+
**3. Cognitive load** — *can working memory keep up while listening?*
|
|
207
|
+
|
|
208
|
+
| Criterion | 1–5 |
|
|
209
|
+
| --- | --- |
|
|
210
|
+
| One key concept per slide | |
|
|
211
|
+
| Text density under the ceiling; slide ≠ script | |
|
|
212
|
+
| Animation judicious (disclosure/emphasis only) | |
|
|
213
|
+
| Code formatted; critical line highlighted (if applicable) | |
|
|
214
|
+
| Supporting detail accessible (appendix/notes), not crowding the slide | |
|
|
215
|
+
|
|
216
|
+
Red flags: multiple complex concepts per slide; text competing with speech; animation overuse.
|
|
217
|
+
|
|
218
|
+
**4. Accessibility** — *does it work for everyone, on any screen?*
|
|
219
|
+
|
|
220
|
+
| Criterion | 1–5 |
|
|
221
|
+
| --- | --- |
|
|
222
|
+
| Works across display sizes; reads from the back row | |
|
|
223
|
+
| Color contrast ≥ 4.5:1; meaning never color-only | |
|
|
224
|
+
| Inclusive imagery and language | |
|
|
225
|
+
| Font sizes appropriate (body ≥ 24pt; ≥ 28–32 for a talk) | |
|
|
226
|
+
|
|
227
|
+
Red flags: poor contrast; too-small fonts; non-inclusive content.
|
|
228
|
+
|
|
229
|
+
**Prioritize fixes:** (1) critical — blocks understanding, accessibility failure, message unclear;
|
|
230
|
+
(2) important — cognitive load, visual inconsistency, structure; (3) polish — animation, custom styling.
|
|
231
|
+
|
|
232
|
+
## Implementation checklist (build pass)
|
|
233
|
+
|
|
234
|
+
- **Structure:** main message clear in the first 2 minutes; supporting points in logical order; essential-vs-expandable marked; structure aids understanding.
|
|
235
|
+
- **Content:** assertion-evidence throughout; visual evidence backs each assertion; one concept per slide; code formatted and highlighted.
|
|
236
|
+
- **Visual:** consistent palette (3–5 colors); typography hierarchy (2–3 roles); deliberate whitespace; everything aligned to the grid.
|
|
237
|
+
- **Accessibility:** contrast verified; font sizes appropriate; alt text for key images; works across display sizes.
|
|
238
|
+
|
|
239
|
+
## Communication anti-patterns
|
|
240
|
+
|
|
241
|
+
These sit alongside the visual anti-patterns in `SKILL.md`; they fail at the *message* layer, before pixels.
|
|
242
|
+
|
|
243
|
+
| Anti-pattern | Why it fails | Fix |
|
|
244
|
+
| --- | --- | --- |
|
|
245
|
+
| **Data dump** — every slide raw data/charts, no interpretation | Audiences can't analyze in real time; without a stated conclusion they're doing your job; most is forgotten | One insight per slide; state the conclusion, show the proof; they grasp the point before the data |
|
|
246
|
+
| **Script reader** — slides hold the full spoken script as "bullets" | Audiences read faster than you talk, read ahead, then tune out | Slides show what you can't say; you say what you can't show |
|
|
247
|
+
| **Template trap** — content poured into a generic template | Design should serve comprehension, not just look professional; generic template → generic communication | Start from the communication need: what structure helps *this* audience understand *this* content? |
|
|
248
|
+
| **Animation circus** — transitions/builds/effects everywhere | Animation is attention; when everything animates, nothing stands out | Animate only for progressive disclosure or emphasis; default to none |
|
|
249
|
+
| **Bullet-point disease** — list after list as the default | Bullets are for documents; equal weight for unequal ideas; passive reading not active viewing | Assertion-evidence; if you truly need a list, question whether it earns a slide |
|
|
250
|
+
|
|
251
|
+
## Slide-design QA (the visual subset)
|
|
252
|
+
|
|
253
|
+
- [ ] Body ≥ 24pt (≥ 28–32 for a talk); reads at 3 metres; contrast ≥ 4.5:1.
|
|
254
|
+
- [ ] One focal point per slide; ≤ ~6 lines; generous negative space.
|
|
255
|
+
- [ ] Aligned to the grid; consistent safe-area; nothing clips on export.
|
|
256
|
+
- [ ] Two type roles, one scale, weight-for-hierarchy; no font soup.
|
|
257
|
+
- [ ] Colors from tokens, 60-30-10, one accent marks the one thing; meaning never color-only.
|
|
258
|
+
- [ ] Each chart makes one point named in the headline; decluttered; honest axes; no 3-D/rainbow.
|
|
259
|
+
- [ ] Imagery full-bleed + scrim, high-res, consistent treatment; SVG for logos/diagrams.
|
|
260
|
+
- [ ] One transition family ≤ 300ms; builds reveal meaning; reduced-motion honored (HTML).
|
|
261
|
+
- [ ] Dark/light variant chosen for the room (dark = stage, light = print/handout).
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
# Storytelling & Deck Structure — Arcs + Slide-by-Slide Skeletons
|
|
2
|
+
|
|
3
|
+
The deck is an argument, not a document. Every deck proves **one thesis**; every slide advances it by
|
|
4
|
+
exactly one step. This file holds the narrative frameworks, the proven arc per deck type, and concrete
|
|
5
|
+
slide-by-slide skeletons you can fill from the brand study. The visual layout of each slide → `slide-design.md`;
|
|
6
|
+
the words → `../marketing/SKILL.md`.
|
|
7
|
+
|
|
8
|
+
## First principles
|
|
9
|
+
|
|
10
|
+
- **One thesis.** Write the single sentence the whole deck must make the audience believe. If a slide doesn't serve it, cut the slide. Tape the thesis to the top of the skeleton.
|
|
11
|
+
- **One idea per slide.** A slide is a single assertion + its proof. Two ideas = two slides.
|
|
12
|
+
- **Assertion headlines.** Title every slide with the point ("Onboarding v2 cut churn 40%"), never the topic ("Churn"). A reader skimming only the headlines should get the full argument.
|
|
13
|
+
- **Tension → resolution.** Decks persuade by opening a gap (problem, stakes, "why now") and closing it (your solution, proof, ask). No tension = no attention.
|
|
14
|
+
- **The Rule of the Spine:** title slides → one-liners that, read in sequence, ARE the pitch. Build the spine first; decorate second.
|
|
15
|
+
- **Pacing.** Vary slide "weight": a heavy data slide earns a light statement slide. Big-number and full-bleed statement slides reset attention. Aim ~1–2 min/slide when presenting.
|
|
16
|
+
- **Cut to the ask.** Every deck ends by telling the audience exactly what to do next, with one primary CTA.
|
|
17
|
+
|
|
18
|
+
## Narrative frameworks (pick one as the spine)
|
|
19
|
+
|
|
20
|
+
| Framework | Shape | Best for |
|
|
21
|
+
| --- | --- | --- |
|
|
22
|
+
| **Problem → Solution → Proof → Ask** | Classic persuasion | Pitch, sales, investor |
|
|
23
|
+
| **SCR (Situation → Complication → Resolution)** | McKinsey "Pyramid" | Board, QBR, exec memos |
|
|
24
|
+
| **Hero's journey (audience = hero)** | Status quo → call → struggle → guide (you) → win | Keynote, brand/vision |
|
|
25
|
+
| **Before → After → Bridge** | Pain now → world with you → how to get there | Sales, product launch |
|
|
26
|
+
| **What / So What / Now What** | Fact → meaning → action | QBR, research readout, internal update |
|
|
27
|
+
| **PAS (Problem → Agitate → Solve)** | Sharpen the pain before relieving it | Cold sales, demand-gen decks |
|
|
28
|
+
| **STAR moment** | Build to one Something They'll Always Remember | Keynote, launch reveal |
|
|
29
|
+
|
|
30
|
+
Whichever you pick, the *micro*-structure of each content slide is the same: **assertion headline →
|
|
31
|
+
single supporting visual/point → (talk track in notes)**.
|
|
32
|
+
|
|
33
|
+
## Deck arc by type (slide-by-slide skeletons)
|
|
34
|
+
|
|
35
|
+
Each skeleton is a *starting* spine — reorder/merge for the specific audience, but keep the tension→resolution.
|
|
36
|
+
Numbers in brackets are typical slide counts.
|
|
37
|
+
|
|
38
|
+
### Pitch / Investor deck [10–15 core, + appendix]
|
|
39
|
+
|
|
40
|
+
The fundraising standard (problem-first, traction-forward). Mirrors what investors expect to see.
|
|
41
|
+
|
|
42
|
+
1. **Title / company one-liner** — name + the single sentence: "We help [who] [outcome] by [mechanism]."
|
|
43
|
+
2. **The problem** — a real, expensive, urgent pain, in the customer's words. Make it ache.
|
|
44
|
+
3. **Why now** — the shift (tech/regulatory/behavioral) that makes this possible/inevitable today.
|
|
45
|
+
4. **The solution** — your wedge, one sentence + one visual. What you do, simply.
|
|
46
|
+
5. **Product / demo** — show it working; a screenshot/flow, not a feature list.
|
|
47
|
+
6. **Market size** — TAM/SAM/SOM with *stated assumptions* (bottom-up beats a giant top-down circle).
|
|
48
|
+
7. **Business model** — how you make money; pricing; unit economics if strong.
|
|
49
|
+
8. **Traction** — the slide investors lean in for: growth chart, revenue, retention, logos. Real numbers.
|
|
50
|
+
9. **Competition / differentiation** — a 2×2 or feature matrix; the one thing only you can say.
|
|
51
|
+
10. **Go-to-market** — how you acquire customers repeatably and cheaply.
|
|
52
|
+
11. **Team** — why *this* team wins (relevant, earned secrets), not headshots-as-decoration.
|
|
53
|
+
12. **The ask** — raise size, instrument, and use of funds → milestones it buys.
|
|
54
|
+
13. **Vision / closing** — the big "if this works" world. End on ambition.
|
|
55
|
+
14. **Appendix** — financials, cohort detail, FAQs, the model. Defend, don't front-load.
|
|
56
|
+
|
|
57
|
+
**Golden rule (from investor materials): every number agrees across deck, one-pager, and model.** Build a
|
|
58
|
+
single source of truth (traction, pricing, raise, use of funds, team titles, milestones) and cross-check
|
|
59
|
+
every figure before delivery. A conflicting number is a hard stop. Mark anything aspirational `[[NEEDS PROOF]]`.
|
|
60
|
+
|
|
61
|
+
### Sales deck [8–12]
|
|
62
|
+
|
|
63
|
+
Customer is the hero; you are the guide. Lead with their world, not your company.
|
|
64
|
+
|
|
65
|
+
1. **Hook / their world today** — name the customer's status quo and its hidden cost.
|
|
66
|
+
2. **The problem & its stakes** — what it costs them to keep doing it this way (quantify).
|
|
67
|
+
3. **The shift / "why change now"** — what makes the old way untenable.
|
|
68
|
+
4. **The promised land** — the after-state; the outcome they actually want.
|
|
69
|
+
5. **Your solution as the bridge** — how you get them there (mechanism, one visual).
|
|
70
|
+
6. **Proof it works** — case study with a hard number, logos, a quote with a metric.
|
|
71
|
+
7. **How it works** — the 3-step "so it's easy to adopt" path; de-risk the switch.
|
|
72
|
+
8. **Pricing / packages** — clear, anchored; the recommended option highlighted.
|
|
73
|
+
9. **Objection handling** — the top 2–3 "yeah but…" answered head-on.
|
|
74
|
+
10. **The ask / next step** — one CTA: "book the pilot", "start the trial". Make it small and clear.
|
|
75
|
+
|
|
76
|
+
### Product launch / announcement [6–10]
|
|
77
|
+
|
|
78
|
+
1. **The change** — what's new, in one line. Lead with the headline benefit, not the feature name.
|
|
79
|
+
2. **Why it matters** — the problem it removes / the leverage it adds.
|
|
80
|
+
3. **The reveal** — show it (full-bleed product shot / short loop).
|
|
81
|
+
4. **How it works** — 3 beats, each one idea.
|
|
82
|
+
5. **Proof / early results** — beta numbers, design-partner quotes.
|
|
83
|
+
6. **Availability & pricing** — when, where, how much.
|
|
84
|
+
7. **Call to action** — "get access", "upgrade", "join the waitlist".
|
|
85
|
+
|
|
86
|
+
### Keynote / conference talk [variable, statement-heavy]
|
|
87
|
+
|
|
88
|
+
Maximize memorability, minimize on-slide text. Slides are punctuation for your voice.
|
|
89
|
+
|
|
90
|
+
1. **Cold open / provocation** — a question, a surprising stat, a story. Earn attention in 30s.
|
|
91
|
+
2. **The big idea (thesis)** — one sentence the talk will prove.
|
|
92
|
+
3–N. **Acts (3 is classic):** each act = setup → tension → turn, built from statement slides + one image/chart each. One STAR moment per talk (the line/visual they'll quote).
|
|
93
|
+
- **Recap** — the one thing to remember.
|
|
94
|
+
- **Close / call to think or act** — what changes Monday morning.
|
|
95
|
+
|
|
96
|
+
Keynote slides skew to *one statement or one image* per slide; the argument lives in your delivery, the
|
|
97
|
+
slide reinforces. Big type, lots of negative space, no bullet walls.
|
|
98
|
+
|
|
99
|
+
### Board / QBR / exec review [10–20, dense-but-scannable]
|
|
100
|
+
|
|
101
|
+
Executives skim; lead with the answer (SCR / Pyramid Principle: conclusion first, then support).
|
|
102
|
+
|
|
103
|
+
1. **Executive summary** — the 3 things the room must know, as headlines. (If they read one slide, this is it.)
|
|
104
|
+
2. **Scorecard** — KPIs vs target/last-period; green/amber/red, honest.
|
|
105
|
+
3. **What's working** — wins with numbers.
|
|
106
|
+
4. **What's not** — risks/misses, owned plainly, with the plan.
|
|
107
|
+
5. **Deep-dives** — one per priority topic; each is *What / So What / Now What*.
|
|
108
|
+
6. **Asks / decisions needed** — explicit decisions you want from the board, each with a recommendation.
|
|
109
|
+
7. **Appendix** — the supporting detail you'll pull up if asked.
|
|
110
|
+
|
|
111
|
+
Board decks tolerate more text than a keynote because they double as a read-ahead leave-behind. Even so:
|
|
112
|
+
assertion headlines, one idea per slide, every number sourced.
|
|
113
|
+
|
|
114
|
+
## Presenter vs leave-behind (two variants, one narrative)
|
|
115
|
+
|
|
116
|
+
The same deck serves two jobs badly unless you split them. Decide which you're shipping; build both when needed.
|
|
117
|
+
|
|
118
|
+
| | **Presenter deck** | **Leave-behind deck** |
|
|
119
|
+
| --- | --- | --- |
|
|
120
|
+
| When | You're in the room narrating | Sent as PDF; read alone, unnarrated |
|
|
121
|
+
| On-slide text | Minimal — headline + one visual + 0–3 points | Self-contained — enough to follow without you |
|
|
122
|
+
| Where the argument lives | In your mouth + the speaker notes | On the slides themselves + appendix |
|
|
123
|
+
| Risk if wrong | Wall-of-text presenter slide → you read aloud, audience tunes out | Sparse leave-behind → reader can't reconstruct the point |
|
|
124
|
+
| Build tactic | Write the full talk track into **speaker notes**; keep slides sparse | Promote key notes onto the slide; expand the appendix |
|
|
125
|
+
|
|
126
|
+
Practical move: build the **presenter** deck first (sparse + rich notes), then derive the **leave-behind** by
|
|
127
|
+
promoting notes onto slides and adding context. In Markdown pipelines, speaker notes (`<!-- notes -->` /
|
|
128
|
+
`notes:`) export to PDF presenter notes and to PPTX notes — write the talk track there, not on the slide.
|
|
129
|
+
|
|
130
|
+
## Storyboarding before you build
|
|
131
|
+
|
|
132
|
+
1. **Write the thesis** (one sentence).
|
|
133
|
+
2. **Pick the arc** (table above).
|
|
134
|
+
3. **Outline assertion headlines only** — one line per slide. Read them top-to-bottom: do they tell the story alone? If not, the structure is broken — fix it before any pixels.
|
|
135
|
+
4. **Attach the proof** to each headline (the chart, the quote, the screenshot, the number + its source).
|
|
136
|
+
5. **Mark slide weight** (heavy data / light statement) and check pacing.
|
|
137
|
+
6. **Get the skeleton approved** before designing. Re-laying-out a wrong structure is the most expensive mistake.
|
|
138
|
+
7. Only then: theme + layout (`slide-design.md`) and build (`markdown-decks.md` or `pptx-python.md`).
|
|
139
|
+
|
|
140
|
+
## Common storytelling failures (and the fix)
|
|
141
|
+
|
|
142
|
+
| Failure | Fix |
|
|
143
|
+
| --- | --- |
|
|
144
|
+
| Company-first ("About us" slide 1) | Audience-first; their problem opens the deck |
|
|
145
|
+
| Feature tour with no narrative | Pick an arc; features become proof of the thesis |
|
|
146
|
+
| Every slide same weight → monotone | Alternate heavy/light; add statement slides to breathe |
|
|
147
|
+
| No tension → no attention | Open a real gap (problem/stakes/why-now) before resolving it |
|
|
148
|
+
| Burying the ask | One explicit CTA near the end; in board decks, decisions stated up front |
|
|
149
|
+
| Numbers that don't agree across assets | One source of truth; cross-check every figure (investor golden rule) |
|
|
150
|
+
| Reading slides aloud | Slide = visual; talk track in notes; never duplicate |
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
#
|
|
3
|
+
# verify.sh — deck build/lint gate for the `presentations` skill.
|
|
4
|
+
#
|
|
5
|
+
# WHAT IT DOES (read-only; detect-or-skip every tool)
|
|
6
|
+
# 1. python-pptx: if a build script exists (build_deck.py / a *.py that imports pptx),
|
|
7
|
+
# check `python -c "import pptx"` works.
|
|
8
|
+
# 2. Marp: if marp-cli is reachable AND a Marp deck (`marp: true`) exists, print the
|
|
9
|
+
# version and do a DRY PDF export of one sample deck to a temp file.
|
|
10
|
+
# 3. Slidev: if a Slidev deck (slides.md with a slidev marker) exists, report whether the
|
|
11
|
+
# CLI is reachable.
|
|
12
|
+
# 4. markdownlint of deck sources, if markdownlint is available.
|
|
13
|
+
# 5. Static deck-hygiene greps (warn-only): tiny font sizes, 3-D charts, ban-list words.
|
|
14
|
+
#
|
|
15
|
+
# Everything is WARN-by-default; missing tools are SKIPPED with a yellow notice, never failed.
|
|
16
|
+
# Use --strict to turn warnings into failures (CI gate).
|
|
17
|
+
#
|
|
18
|
+
# HOW TO RUN (inside YOUR deck project, not the skills repo)
|
|
19
|
+
# ./verify.sh
|
|
20
|
+
# ./verify.sh --dir ./decks
|
|
21
|
+
# ./verify.sh --strict
|
|
22
|
+
#
|
|
23
|
+
# EXIT CODES
|
|
24
|
+
# 0 no real failures (warnings allowed unless --strict)
|
|
25
|
+
# 1 a real failure (e.g. import pptx fails, marp dry-export fails), or --strict with any warning
|
|
26
|
+
# 2 bad usage
|
|
27
|
+
|
|
28
|
+
set -euo pipefail
|
|
29
|
+
|
|
30
|
+
# --- portability: runs on stock macOS bash 3.2 -----------------------------
|
|
31
|
+
# Avoids bash 4+ features: no `mapfile`/`readarray`, no associative arrays, no
|
|
32
|
+
# unguarded `${arr[@]}` under set -u. Scalar counters + `read` loops only.
|
|
33
|
+
if [ -z "${BASH_VERSION:-}" ]; then
|
|
34
|
+
printf 'This script requires bash (any version >= 3.2). Run: bash %s\n' "$0" >&2
|
|
35
|
+
exit 2
|
|
36
|
+
fi
|
|
37
|
+
|
|
38
|
+
# --- color helpers (no escape codes when not a TTY) ------------------------
|
|
39
|
+
if [ -t 1 ]; then
|
|
40
|
+
RED=$'\033[31m'; GREEN=$'\033[32m'; YELLOW=$'\033[33m'; NC=$'\033[0m'
|
|
41
|
+
else
|
|
42
|
+
RED=''; GREEN=''; YELLOW=''; NC=''
|
|
43
|
+
fi
|
|
44
|
+
|
|
45
|
+
ok_count=0; skip_count=0; warn_count=0; fail_count=0
|
|
46
|
+
|
|
47
|
+
ok() { printf '%s[ ok ]%s %s\n' "$GREEN" "$NC" "$*"; ok_count=$((ok_count + 1)); }
|
|
48
|
+
skip() { printf '%s[skip]%s %s\n' "$YELLOW" "$NC" "$*"; skip_count=$((skip_count + 1)); }
|
|
49
|
+
warn() { printf '%s[warn]%s %s\n' "$YELLOW" "$NC" "$*"; warn_count=$((warn_count + 1)); }
|
|
50
|
+
fail() { printf '%s[fail]%s %s\n' "$RED" "$NC" "$*"; fail_count=$((fail_count + 1)); }
|
|
51
|
+
|
|
52
|
+
usage() {
|
|
53
|
+
sed -n '2,33p' "$0" | sed 's/^# \{0,1\}//'
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
# --- arg parse -------------------------------------------------------------
|
|
57
|
+
DIR="."
|
|
58
|
+
STRICT=0
|
|
59
|
+
while [ $# -gt 0 ]; do
|
|
60
|
+
case "$1" in
|
|
61
|
+
--dir) DIR="${2:?--dir needs a value}"; shift 2 ;;
|
|
62
|
+
--strict) STRICT=1; shift ;;
|
|
63
|
+
-h|--help) usage; exit 0 ;;
|
|
64
|
+
*) printf '%sUnknown argument: %s%s\n\n' "$RED" "$1" "$NC"; usage; exit 2 ;;
|
|
65
|
+
esac
|
|
66
|
+
done
|
|
67
|
+
|
|
68
|
+
if [ ! -d "$DIR" ]; then
|
|
69
|
+
printf '%sNo such directory: %s%s\n' "$RED" "$DIR" "$NC"; exit 2
|
|
70
|
+
fi
|
|
71
|
+
|
|
72
|
+
have() { command -v "$1" >/dev/null 2>&1; }
|
|
73
|
+
|
|
74
|
+
# Find first file matching a grep pattern, or empty. Prints one path.
|
|
75
|
+
first_with() {
|
|
76
|
+
# $1 = file glob (find -name), $2 = grep pattern
|
|
77
|
+
find "$DIR" -type f -name "$1" 2>/dev/null | while IFS= read -r f; do
|
|
78
|
+
if grep -lqE "$2" "$f" 2>/dev/null; then printf '%s\n' "$f"; break; fi
|
|
79
|
+
done | head -n 1
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
# ---------------------------------------------------------------------------
|
|
83
|
+
# 1. python-pptx — only if a build script that imports pptx exists
|
|
84
|
+
# ---------------------------------------------------------------------------
|
|
85
|
+
check_pptx() {
|
|
86
|
+
local script
|
|
87
|
+
script="$(first_with '*.py' 'import +pptx|from +pptx')"
|
|
88
|
+
if [ -z "$script" ]; then
|
|
89
|
+
skip "no python-pptx build script found (no *.py importing pptx) — skipping import check"
|
|
90
|
+
return
|
|
91
|
+
fi
|
|
92
|
+
local py=""
|
|
93
|
+
if have python3; then py=python3; elif have python; then py=python; fi
|
|
94
|
+
if [ -z "$py" ]; then
|
|
95
|
+
skip "python not found — cannot verify python-pptx for $script"
|
|
96
|
+
return
|
|
97
|
+
fi
|
|
98
|
+
if "$py" -c 'import pptx' >/dev/null 2>&1; then
|
|
99
|
+
local ver
|
|
100
|
+
ver="$("$py" -c 'import pptx;print(pptx.__version__)' 2>/dev/null || echo '?')"
|
|
101
|
+
ok "python-pptx importable (v$ver); build script: $script"
|
|
102
|
+
else
|
|
103
|
+
fail "python-pptx build script present ($script) but \`import pptx\` fails — pip install python-pptx"
|
|
104
|
+
fi
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
# ---------------------------------------------------------------------------
|
|
108
|
+
# 2. Marp — only if a Marp deck exists; print version + DRY pdf export
|
|
109
|
+
# ---------------------------------------------------------------------------
|
|
110
|
+
MARP_CMD=""
|
|
111
|
+
marp_cmd() {
|
|
112
|
+
if have marp; then MARP_CMD="marp"; return 0; fi
|
|
113
|
+
if have npx; then MARP_CMD="npx --no-install @marp-team/marp-cli"; return 0; fi
|
|
114
|
+
return 1
|
|
115
|
+
}
|
|
116
|
+
check_marp() {
|
|
117
|
+
local deck
|
|
118
|
+
deck="$(first_with '*.md' '^marp: *true')"
|
|
119
|
+
if [ -z "$deck" ]; then
|
|
120
|
+
skip "no Marp deck found (no markdown with 'marp: true') — skipping Marp checks"
|
|
121
|
+
return
|
|
122
|
+
fi
|
|
123
|
+
if ! marp_cmd; then
|
|
124
|
+
skip "marp-cli not found (install @marp-team/marp-cli or have npx) — found Marp deck: $deck"
|
|
125
|
+
return
|
|
126
|
+
fi
|
|
127
|
+
local ver
|
|
128
|
+
ver="$($MARP_CMD --version 2>/dev/null | head -n 1 || echo '?')"
|
|
129
|
+
ok "marp-cli available ($ver); Marp deck: $deck"
|
|
130
|
+
|
|
131
|
+
local tmp out
|
|
132
|
+
tmp="$(mktemp -d)"; out="$tmp/_verify.pdf"
|
|
133
|
+
printf 'Dry PDF export of %s ...\n' "$deck"
|
|
134
|
+
if $MARP_CMD "$deck" --pdf -o "$out" >/dev/null 2>&1 && [ -s "$out" ]; then
|
|
135
|
+
ok "marp --pdf dry export succeeded ($deck)"
|
|
136
|
+
else
|
|
137
|
+
warn "marp --pdf dry export did not produce a PDF for $deck (Chromium/Chrome installed? remote fonts reachable?)"
|
|
138
|
+
fi
|
|
139
|
+
rm -rf "$tmp"
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
# ---------------------------------------------------------------------------
|
|
143
|
+
# 3. Slidev — report presence + CLI reachability (no full export in CI)
|
|
144
|
+
# ---------------------------------------------------------------------------
|
|
145
|
+
check_slidev() {
|
|
146
|
+
local deck
|
|
147
|
+
deck="$(first_with 'slides.md' 'layout:|^---|theme:')"
|
|
148
|
+
[ -z "$deck" ] && deck="$(first_with '*.md' '@slidev|slidev')"
|
|
149
|
+
if [ -z "$deck" ]; then
|
|
150
|
+
skip "no Slidev deck found — skipping Slidev checks"
|
|
151
|
+
return
|
|
152
|
+
fi
|
|
153
|
+
if have slidev; then
|
|
154
|
+
ok "slidev CLI on PATH; Slidev deck: $deck"
|
|
155
|
+
elif have npx; then
|
|
156
|
+
ok "slidev runnable via npx; Slidev deck: $deck (export needs playwright-chromium installed)"
|
|
157
|
+
else
|
|
158
|
+
skip "slidev CLI not found (install @slidev/cli) — found Slidev deck: $deck"
|
|
159
|
+
fi
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
# ---------------------------------------------------------------------------
|
|
163
|
+
# 4. markdownlint of deck sources
|
|
164
|
+
# ---------------------------------------------------------------------------
|
|
165
|
+
check_markdownlint() {
|
|
166
|
+
local linter=""
|
|
167
|
+
if have markdownlint; then linter="markdownlint"
|
|
168
|
+
elif have markdownlint-cli2; then linter="markdownlint-cli2"
|
|
169
|
+
else
|
|
170
|
+
skip "markdownlint not found — skipping deck source lint"
|
|
171
|
+
return
|
|
172
|
+
fi
|
|
173
|
+
local any
|
|
174
|
+
any="$(find "$DIR" -type f -name '*.md' 2>/dev/null | head -n 1)"
|
|
175
|
+
if [ -z "$any" ]; then
|
|
176
|
+
skip "no markdown deck sources to lint"
|
|
177
|
+
return
|
|
178
|
+
fi
|
|
179
|
+
if find "$DIR" -type f -name '*.md' -print0 2>/dev/null | xargs -0 "$linter" >/dev/null 2>&1; then
|
|
180
|
+
ok "markdownlint clean on deck sources"
|
|
181
|
+
else
|
|
182
|
+
warn "markdownlint reported issues in deck sources (run '$linter \"$DIR\"/**/*.md' for detail)"
|
|
183
|
+
fi
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
# ---------------------------------------------------------------------------
|
|
187
|
+
# 5. Static deck-hygiene greps (warn-only)
|
|
188
|
+
# ---------------------------------------------------------------------------
|
|
189
|
+
search() {
|
|
190
|
+
if have rg; then rg -n --no-heading "$@" "$DIR" 2>/dev/null
|
|
191
|
+
else grep -rnE "${*: -1}" "$DIR" 2>/dev/null; fi
|
|
192
|
+
}
|
|
193
|
+
static_checks() {
|
|
194
|
+
local hits
|
|
195
|
+
|
|
196
|
+
# tiny font sizes in themes/build scripts (legibility floor ~24pt body)
|
|
197
|
+
hits="$(search 'font-size: *([1-9]|1[0-9]|2[0-3])px|Pt\(([1-9]|1[0-9]|2[0-3])\)' 2>/dev/null || true)"
|
|
198
|
+
if [ -n "$hits" ]; then
|
|
199
|
+
warn "possible sub-24 font sizes (legibility from the back of the room):"
|
|
200
|
+
printf '%s\n' "$hits" | head -n 5
|
|
201
|
+
fi
|
|
202
|
+
|
|
203
|
+
# 3-D / rainbow chart smells
|
|
204
|
+
hits="$(search '_3D|THREE_D|3-?D (pie|chart|bar)' 2>/dev/null || true)"
|
|
205
|
+
if [ -n "$hits" ]; then
|
|
206
|
+
warn "3-D chart usage found (banned — use flat charts, one highlighted series):"
|
|
207
|
+
printf '%s\n' "$hits" | head -n 5
|
|
208
|
+
fi
|
|
209
|
+
|
|
210
|
+
# ban-list marketing words in deck copy
|
|
211
|
+
hits="$(search 'revolutionary|game-?changer|cutting-edge|supercharge|seamless|unlock|world-class' 2>/dev/null \
|
|
212
|
+
| grep -iE '\.(md|mdx|py|html)' || true)"
|
|
213
|
+
if [ -n "$hits" ]; then
|
|
214
|
+
warn "ban-list marketing words in deck copy (replace with a number / mechanism):"
|
|
215
|
+
printf '%s\n' "$hits" | head -n 5
|
|
216
|
+
fi
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
# --- run -------------------------------------------------------------------
|
|
220
|
+
check_pptx
|
|
221
|
+
check_marp
|
|
222
|
+
check_slidev
|
|
223
|
+
check_markdownlint
|
|
224
|
+
static_checks
|
|
225
|
+
|
|
226
|
+
cat <<'EOF'
|
|
227
|
+
|
|
228
|
+
Manual deck QA (mechanical checks above don't cover these):
|
|
229
|
+
[ ] Brand study located, complete, and cited.
|
|
230
|
+
[ ] One idea per slide; assertion headlines, not topic labels.
|
|
231
|
+
[ ] Body >= 24pt (>= 28-32 for a talk); contrast >= 4.5:1; reads at 3 metres.
|
|
232
|
+
[ ] Colors / type / spacing from design tokens, not per-slide hex.
|
|
233
|
+
[ ] Deliberate arc + single thesis; opens with a hook, ends with one ask.
|
|
234
|
+
[ ] Every number sourced; gaps marked [[NEEDS PROOF]]; none invented.
|
|
235
|
+
[ ] Each chart makes one point named in the headline; no 3-D/rainbow/dual-axis.
|
|
236
|
+
[ ] Motion = one family <= 300ms; reduced-motion honored (HTML); builds reveal meaning.
|
|
237
|
+
[ ] 16:9; PDF vector with fonts embedded (pdffonts -> emb yes); PPTX opens clean.
|
|
238
|
+
[ ] PPTX editability matches the promise (python-pptx if "editable", not flattened images).
|
|
239
|
+
|
|
240
|
+
Score the deck on the 1-5 design rubric (>= 4 each before shipping) ->
|
|
241
|
+
references/slide-design.md "Diagnostic rubric":
|
|
242
|
+
[ ] Audience-centered design (one main message, right knowledge level, time-flexible).
|
|
243
|
+
[ ] Visual clarity (assertion-evidence; visuals balance text; one focal point).
|
|
244
|
+
[ ] Cognitive load (one concept/slide; spoken-vs-shown split; restrained motion).
|
|
245
|
+
[ ] Accessibility (contrast, font size, inclusive imagery/language, scales across displays).
|
|
246
|
+
EOF
|
|
247
|
+
|
|
248
|
+
printf '\nok=%d skip=%d warn=%d fail=%d\n' "$ok_count" "$skip_count" "$warn_count" "$fail_count"
|
|
249
|
+
|
|
250
|
+
if [ "$fail_count" -gt 0 ]; then exit 1; fi
|
|
251
|
+
if [ "$STRICT" -eq 1 ] && [ "$warn_count" -gt 0 ]; then exit 1; fi
|
|
252
|
+
exit 0
|