@damiangilgonzalez/harness 1.3.7
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 +647 -0
- package/manifest.json +6651 -0
- package/package.json +67 -0
- package/schema/ecc-originality.json +16 -0
- package/schema/ecc-originality.u64 +0 -0
- package/schema/frontmatter.schema.json +12 -0
- package/scripts/audit.js +224 -0
- package/scripts/build-manifest.js +152 -0
- package/scripts/consult.js +208 -0
- package/scripts/detect-repo.js +144 -0
- package/scripts/doctor.js +445 -0
- package/scripts/drift-check.js +354 -0
- package/scripts/eval-lint.sh +230 -0
- package/scripts/install-apply.js +558 -0
- package/scripts/install-plan.js +13 -0
- package/scripts/knowledge-doctor.js +131 -0
- package/scripts/lib/backups.js +165 -0
- package/scripts/lib/behavior-score.js +190 -0
- package/scripts/lib/capabilities.js +242 -0
- package/scripts/lib/default-skill-floor.js +11 -0
- package/scripts/lib/design-identity.js +117 -0
- package/scripts/lib/divergence.js +33 -0
- package/scripts/lib/domains.js +36 -0
- package/scripts/lib/eval-integrity.js +224 -0
- package/scripts/lib/frontmatter.js +47 -0
- package/scripts/lib/harden-policy.js +41 -0
- package/scripts/lib/knowledge-doctor.js +407 -0
- package/scripts/lib/manifest-file.js +57 -0
- package/scripts/lib/manifest.js +18 -0
- package/scripts/lib/onboarding-apply.js +361 -0
- package/scripts/lib/onboarding.js +329 -0
- package/scripts/lib/recommend.js +56 -0
- package/scripts/lib/registry.js +110 -0
- package/scripts/lib/repair.js +156 -0
- package/scripts/lib/repetition-report.js +47 -0
- package/scripts/lib/repetition.js +186 -0
- package/scripts/lib/result-envelope.js +35 -0
- package/scripts/lib/skill-lint.js +29 -0
- package/scripts/lib/starting-point.js +314 -0
- package/scripts/lib/state.js +12 -0
- package/scripts/lib/text-rank.js +112 -0
- package/scripts/lib/ui.js +266 -0
- package/scripts/lib/upgrade.js +18 -0
- package/scripts/originality-check.js +137 -0
- package/scripts/reviewer-guard.sh +67 -0
- package/scripts/routing-audit.js +163 -0
- package/scripts/rsc.js +1110 -0
- package/scripts/skill-behavior-eval.js +62 -0
- package/scripts/skill-behavior-eval.workflow.js +158 -0
- package/scripts/skill-behavior-rubric.md +63 -0
- package/scripts/skill-harden-rubric.md +102 -0
- package/scripts/skill-harden.workflow.js +265 -0
- package/scripts/skill-migration-brief.md +200 -0
- package/scripts/skill-rubric.md +40 -0
- package/scripts/skill-scoreboard.workflow.js +35 -0
- package/skills/ab-testing/SKILL.md +159 -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 +216 -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 +160 -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 +187 -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 +169 -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 +180 -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 +197 -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/angular/SKILL.md +275 -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/animar/RECIPES.md +324 -0
- package/skills/animar/SKILL.md +201 -0
- package/skills/animar/evals/cases.yaml +32 -0
- package/skills/api-connector-builder/SKILL.md +268 -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 +182 -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 +158 -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 +257 -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 +194 -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 +85 -0
- package/skills/author-skill/references/eval-authoring.md +108 -0
- package/skills/author-skill/references/rsc-conventions.md +95 -0
- package/skills/automation-flows/SKILL.md +122 -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/automation-strategy/SKILL.md +123 -0
- package/skills/automation-strategy/evals/README.md +16 -0
- package/skills/automation-strategy/evals/cases.yaml +48 -0
- package/skills/automation-strategy/references/automate-decision-and-roi.md +118 -0
- package/skills/automation-strategy/references/orchestration-and-antipatterns.md +107 -0
- package/skills/automation-strategy/references/platform-selection-matrix.md +86 -0
- package/skills/aws-essentials/SKILL.md +206 -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 +131 -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 +227 -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 +176 -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 +135 -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 +156 -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 +164 -0
- package/skills/brand-voice/references/word-bank.md +61 -0
- package/skills/brand-voice/scripts/verify.sh +190 -0
- package/skills/bro/SKILL.md +76 -0
- package/skills/bro/evals/README.md +22 -0
- package/skills/bro/evals/cases.yaml +62 -0
- package/skills/building-agents/SKILL.md +386 -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 +162 -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 +180 -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 +142 -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 +151 -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/claude-project-setup/SKILL.md +84 -0
- package/skills/claude-project-setup/evals/cases.yaml +32 -0
- package/skills/clickhouse-analytics/SKILL.md +159 -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 +252 -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 +186 -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 +91 -0
- package/skills/code-review/evals/cases.yaml +32 -0
- package/skills/codebase-onboarding/SKILL.md +128 -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 +185 -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 +198 -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 +183 -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 +98 -0
- package/skills/competitor-watch/scripts/verify.sh +253 -0
- package/skills/compliance/SKILL.md +157 -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/content-engine/SKILL.md +152 -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 +104 -0
- package/skills/content-engine/scripts/verify.sh +146 -0
- package/skills/context-budget/SKILL.md +114 -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 +106 -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 +113 -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 +194 -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 +175 -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 +158 -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 +92 -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 +137 -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 +203 -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 +302 -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 +272 -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 +170 -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 +185 -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 +259 -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 +150 -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 +130 -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 +64 -0
- package/skills/data-scraper/scripts/verify.sh +166 -0
- package/skills/db-migrations/SKILL.md +237 -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/deep-learning/SKILL.md +226 -0
- package/skills/deep-learning/evals/README.md +11 -0
- package/skills/deep-learning/evals/cases.yaml +48 -0
- package/skills/deep-learning/references/distributed.md +105 -0
- package/skills/deep-learning/references/training-recipes.md +135 -0
- package/skills/deployment/SKILL.md +374 -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/deprecation/SKILL.md +123 -0
- package/skills/deprecation/evals/README.md +3 -0
- package/skills/deprecation/evals/cases.yaml +42 -0
- package/skills/design/SKILL.md +360 -0
- package/skills/design/evals/README.md +53 -0
- package/skills/design/evals/cases.yaml +56 -0
- package/skills/design/references/ai-tells.md +75 -0
- package/skills/design/references/brand-grounding.md +197 -0
- package/skills/design/references/copywriting-frameworks.md +138 -0
- package/skills/design/references/design-systems.md +49 -0
- package/skills/design/references/inspiration-sources.md +96 -0
- package/skills/design/references/landing-anatomy-and-cro.md +202 -0
- package/skills/design/references/motion-and-interaction.md +228 -0
- package/skills/design/references/research-method.md +154 -0
- package/skills/design/references/signature-and-craft.md +148 -0
- package/skills/design/references/starting-point.md +75 -0
- package/skills/design/references/trends-2026.md +80 -0
- package/skills/design/references/visual-system.md +237 -0
- package/skills/design/scripts/verify.sh +357 -0
- package/skills/design-dna/PROMPT.md +211 -0
- package/skills/design-dna/SKILL.md +162 -0
- package/skills/design-dna/design-dna.schema.json +230 -0
- package/skills/design-dna/evals/README.md +64 -0
- package/skills/design-dna/evals/cases.yaml +68 -0
- package/skills/design-dna/references/method.md +436 -0
- package/skills/design-dna/scripts/emit.py +164 -0
- package/skills/design-dna/templates/PROMPT.md.tmpl +42 -0
- package/skills/design-dna/templates/SKILL.md.tmpl +42 -0
- package/skills/design-dna/templates/check.py.tmpl +143 -0
- package/skills/design-loop/SKILL.md +160 -0
- package/skills/design-loop/evals/README.md +56 -0
- package/skills/design-loop/evals/cases.yaml +60 -0
- package/skills/digitalocean/SKILL.md +227 -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/diseno-apple/SKILL.md +284 -0
- package/skills/diseno-apple/evals/cases.yaml +32 -0
- package/skills/diseno-landing/SKILL.md +388 -0
- package/skills/diseno-landing/evals/cases.yaml +32 -0
- package/skills/django/SKILL.md +263 -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 +251 -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 +206 -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/domain-modeling/ADR-FORMAT.md +47 -0
- package/skills/domain-modeling/CONTEXT-FORMAT.md +60 -0
- package/skills/domain-modeling/SKILL.md +76 -0
- package/skills/domain-modeling/evals/cases.yaml +32 -0
- package/skills/domains-dns/SKILL.md +131 -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 +231 -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 +202 -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 +204 -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 +233 -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 +209 -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/eli5/SKILL.md +63 -0
- package/skills/eli5/evals/README.md +22 -0
- package/skills/eli5/evals/cases.yaml +54 -0
- package/skills/elixir/SKILL.md +209 -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 +277 -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 +148 -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 +184 -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 +273 -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 +244 -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/fable-operator/SKILL.md +167 -0
- package/skills/fable-operator/evals/README.md +8 -0
- package/skills/fable-operator/evals/cases.yaml +52 -0
- package/skills/fal/SKILL.md +196 -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 +469 -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 +157 -0
- package/skills/finance-ops/SKILL.md +141 -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 +152 -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/finetuning/SKILL.md +232 -0
- package/skills/finetuning/evals/README.md +13 -0
- package/skills/finetuning/evals/cases.yaml +50 -0
- package/skills/finetuning/references/hyperparameters-and-eval.md +74 -0
- package/skills/finetuning/references/methods.md +189 -0
- package/skills/firebase/SKILL.md +237 -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 +400 -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 +197 -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 +153 -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/game-design/SKILL.md +146 -0
- package/skills/game-design/evals/README.md +13 -0
- package/skills/game-design/evals/cases.yaml +47 -0
- package/skills/game-design/references/mechanics-and-loops.md +78 -0
- package/skills/game-design/references/playtesting-and-scope.md +58 -0
- package/skills/game-design/references/progression-and-economy.md +70 -0
- package/skills/game-storytelling/SKILL.md +134 -0
- package/skills/game-storytelling/evals/README.md +28 -0
- package/skills/game-storytelling/evals/cases.yaml +51 -0
- package/skills/game-storytelling/references/branching-and-state.md +134 -0
- package/skills/game-storytelling/references/dialogue-tools.md +117 -0
- package/skills/game-storytelling/references/environmental-storytelling.md +71 -0
- package/skills/gamedev-multiplayer/SKILL.md +237 -0
- package/skills/gamedev-multiplayer/evals/README.md +12 -0
- package/skills/gamedev-multiplayer/evals/cases.yaml +44 -0
- package/skills/gamedev-multiplayer/references/godot-high-level-multiplayer.md +133 -0
- package/skills/gamedev-multiplayer/references/prediction-and-latency.md +104 -0
- package/skills/gamedev-multiplayer/references/unity-and-unreal-netcode.md +166 -0
- package/skills/gamedev-pathing/SKILL.md +233 -0
- package/skills/gamedev-pathing/evals/README.md +14 -0
- package/skills/gamedev-pathing/evals/cases.yaml +49 -0
- package/skills/gamedev-pathing/references/navmesh-workflow.md +110 -0
- package/skills/gamedev-pathing/references/search-algorithms.md +135 -0
- package/skills/gamedev-pathing/references/steering-and-avoidance.md +120 -0
- package/skills/gamedev-physics/SKILL.md +225 -0
- package/skills/gamedev-physics/evals/README.md +12 -0
- package/skills/gamedev-physics/evals/cases.yaml +54 -0
- package/skills/gamedev-physics/references/character-controllers.md +120 -0
- package/skills/gamedev-physics/references/determinism-and-queries.md +124 -0
- package/skills/gamedev-physics/references/layers-and-masks.md +115 -0
- package/skills/gamedev-shaders/SKILL.md +232 -0
- package/skills/gamedev-shaders/evals/README.md +14 -0
- package/skills/gamedev-shaders/evals/cases.yaml +45 -0
- package/skills/gamedev-shaders/references/effect-recipes.md +205 -0
- package/skills/gamedev-shaders/references/godot-shading-language.md +133 -0
- package/skills/gamedev-shaders/references/unity-and-unreal-shaders.md +169 -0
- package/skills/gamedev-shipping/SKILL.md +220 -0
- package/skills/gamedev-shipping/evals/README.md +9 -0
- package/skills/gamedev-shipping/evals/cases.yaml +55 -0
- package/skills/gamedev-shipping/references/mobile-and-desktop.md +127 -0
- package/skills/gamedev-shipping/references/stores-and-ci.md +162 -0
- package/skills/gamedev-shipping/references/web-export-headers.md +140 -0
- package/skills/gcp-essentials/SKILL.md +324 -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 +159 -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 +214 -0
- package/skills/git-workflow/evals/README.md +10 -0
- package/skills/git-workflow/evals/cases.yaml +52 -0
- package/skills/git-workflow/references/gitmoji.md +157 -0
- package/skills/git-workflow/references/interactive-rebase.md +89 -0
- package/skills/github-actions/SKILL.md +244 -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 +390 -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 +134 -0
- package/skills/godot/SKILL.md +300 -0
- package/skills/godot/evals/README.md +13 -0
- package/skills/godot/evals/cases.yaml +50 -0
- package/skills/godot/references/export-and-testing.md +102 -0
- package/skills/godot/references/gdscript-style.md +84 -0
- package/skills/godot/references/godot3-to-4-traps.md +89 -0
- package/skills/godot/references/nodes-scenes-resources.md +109 -0
- package/skills/google-workspace/SKILL.md +246 -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 +153 -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/grill-me/SKILL.md +9 -0
- package/skills/grill-me/evals/cases.yaml +32 -0
- package/skills/grill-with-docs/SKILL.md +9 -0
- package/skills/grill-with-docs/evals/cases.yaml +32 -0
- package/skills/grilling/SKILL.md +30 -0
- package/skills/grilling/evals/cases.yaml +32 -0
- package/skills/handoff/SKILL.md +18 -0
- package/skills/handoff/evals/cases.yaml +32 -0
- package/skills/harness/SKILL.md +301 -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/gitignore +10 -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 +85 -0
- package/skills/harness/references/daily-curation-automation.md +68 -0
- package/skills/harness/references/inbox-readme-template.md +51 -0
- package/skills/harness/references/ingest-formats.md +185 -0
- package/skills/harness/references/ingest-ignore-defaults.md +48 -0
- package/skills/harness/references/obsidian-scaffolding.md +103 -0
- package/skills/harness/references/providers.yaml +3546 -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 +60 -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 +22 -0
- package/skills/harness/references/wiki-index-template.md +32 -0
- package/skills/harness/references/wiki-protocol.md +921 -0
- package/skills/harness/references/wiki-raw-template.md +7 -0
- package/skills/harness/references/wiki-worklog-template.md +60 -0
- package/skills/hetzner/SKILL.md +203 -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 +236 -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 +191 -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 +18 -0
- package/skills/implement/evals/cases.yaml +32 -0
- package/skills/ingeniero-diseno-web/README.md +472 -0
- package/skills/ingeniero-diseno-web/SKILL.md +477 -0
- package/skills/ingeniero-diseno-web/agents/openai.yaml +7 -0
- package/skills/ingeniero-diseno-web/evals/cases.yaml +32 -0
- package/skills/ingeniero-diseno-web/manifest.json +15 -0
- package/skills/ingeniero-diseno-web/references/advanced-patterns.md +521 -0
- package/skills/ingeniero-diseno-web/references/block-library.md +38 -0
- package/skills/ingeniero-diseno-web/references/browser-acceptance.md +127 -0
- package/skills/ingeniero-diseno-web/references/critique-guide.md +226 -0
- package/skills/ingeniero-diseno-web/references/design-calibration.md +136 -0
- package/skills/ingeniero-diseno-web/references/design-directions.md +188 -0
- package/skills/ingeniero-diseno-web/references/failure-patterns.md +159 -0
- package/skills/ingeniero-diseno-web/references/redesign-protocol.md +123 -0
- package/skills/ingeniero-diseno-web/references/style-recipes/INDEX.md +145 -0
- package/skills/ingeniero-diseno-web/references/style-recipes/active-theory.md +49 -0
- package/skills/ingeniero-diseno-web/references/style-recipes/aesop.md +52 -0
- package/skills/ingeniero-diseno-web/references/style-recipes/apple-hig.md +52 -0
- package/skills/ingeniero-diseno-web/references/style-recipes/are-na.md +55 -0
- package/skills/ingeniero-diseno-web/references/style-recipes/balenciaga-post-2017.md +52 -0
- package/skills/ingeniero-diseno-web/references/style-recipes/bloomberg-businessweek-turley.md +52 -0
- package/skills/ingeniero-diseno-web/references/style-recipes/bloomberg-terminal.md +56 -0
- package/skills/ingeniero-diseno-web/references/style-recipes/dieter-rams-braun.md +50 -0
- package/skills/ingeniero-diseno-web/references/style-recipes/field-io.md +50 -0
- package/skills/ingeniero-diseno-web/references/style-recipes/headspace-meditation.md +52 -0
- package/skills/ingeniero-diseno-web/references/style-recipes/linear.md +61 -0
- package/skills/ingeniero-diseno-web/references/style-recipes/mailchimp-freddie.md +52 -0
- package/skills/ingeniero-diseno-web/references/style-recipes/mid-century-modern.md +52 -0
- package/skills/ingeniero-diseno-web/references/style-recipes/monocle-magazine.md +53 -0
- package/skills/ingeniero-diseno-web/references/style-recipes/muji-kenya-hara.md +52 -0
- package/skills/ingeniero-diseno-web/references/style-recipes/notion-pre-ai.md +53 -0
- package/skills/ingeniero-diseno-web/references/style-recipes/nyt-the-daily.md +54 -0
- package/skills/ingeniero-diseno-web/references/style-recipes/pentagram.md +52 -0
- package/skills/ingeniero-diseno-web/references/style-recipes/raycast.md +54 -0
- package/skills/ingeniero-diseno-web/references/style-recipes/resn-storytelling.md +49 -0
- package/skills/ingeniero-diseno-web/references/style-recipes/stripe-press.md +54 -0
- package/skills/ingeniero-diseno-web/references/style-recipes/tufte-dataink.md +52 -0
- package/skills/ingeniero-diseno-web/references/style-recipes/vercel-mesh.md +56 -0
- package/skills/ingeniero-diseno-web/references/style-recipes/vignelli-swiss-helvetica.md +50 -0
- package/skills/ingeniero-diseno-web/references/style-recipes/y2k-retrofuturism.md +54 -0
- package/skills/init/SKILL.md +218 -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 +238 -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 +95 -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 +145 -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 +122 -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 +126 -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 +151 -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/level-design/SKILL.md +143 -0
- package/skills/level-design/evals/README.md +35 -0
- package/skills/level-design/evals/cases.yaml +58 -0
- package/skills/level-design/references/blockout-to-art.md +118 -0
- package/skills/level-design/references/guidance-and-readability.md +152 -0
- package/skills/level-design/references/pacing-and-encounters.md +142 -0
- package/skills/leyes-de-percepcion/SKILL.md +145 -0
- package/skills/leyes-de-percepcion/evals/cases.yaml +32 -0
- package/skills/leyes-de-retencion/SKILL.md +148 -0
- package/skills/leyes-de-retencion/evals/cases.yaml +32 -0
- package/skills/linkedin-api/SKILL.md +220 -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 +228 -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 +154 -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 +179 -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 +88 -0
- package/skills/linkedin-strategy/scripts/verify.sh +120 -0
- package/skills/llm-pipeline/SKILL.md +150 -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/machine-learning/SKILL.md +228 -0
- package/skills/machine-learning/evals/README.md +15 -0
- package/skills/machine-learning/evals/cases.yaml +54 -0
- package/skills/machine-learning/references/gbdt-and-tuning.md +83 -0
- package/skills/machine-learning/references/metrics-and-imbalance.md +82 -0
- package/skills/machine-learning/references/pipelines-and-cv.md +135 -0
- package/skills/make/SKILL.md +255 -0
- package/skills/make/evals/README.md +14 -0
- package/skills/make/evals/cases.yaml +45 -0
- package/skills/make/references/api-v2-cheatsheet.md +114 -0
- package/skills/make/references/blueprint-round-trip.md +128 -0
- package/skills/make/references/make-mcp-and-auth.md +101 -0
- package/skills/market-research/SKILL.md +136 -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 +183 -0
- package/skills/marketing/evals/README.md +61 -0
- package/skills/marketing/evals/cases.yaml +84 -0
- package/skills/marketing/references/brand-grounding.md +217 -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 +144 -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 +173 -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 +98 -0
- package/skills/medium-strategy/scripts/verify.sh +118 -0
- package/skills/medium-writing/SKILL.md +159 -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 +153 -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/mejor-accesibilidad/SKILL.md +111 -0
- package/skills/mejor-accesibilidad/evals/cases.yaml +32 -0
- package/skills/mejor-accesibilidad/focus-and-keyboard.md +131 -0
- package/skills/mejor-accesibilidad/forms.md +84 -0
- package/skills/mejor-accesibilidad/hit-areas.md +94 -0
- package/skills/mejor-accesibilidad/motion-and-zoom.md +79 -0
- package/skills/mejor-accesibilidad/screen-readers.md +101 -0
- package/skills/mejor-accesibilidad/semantics-and-aria.md +84 -0
- package/skills/mejor-colores/SKILL.md +105 -0
- package/skills/mejor-colores/color-formats.md +90 -0
- package/skills/mejor-colores/color-usage.md +118 -0
- package/skills/mejor-colores/contrast.md +79 -0
- package/skills/mejor-colores/evals/cases.yaml +32 -0
- package/skills/mejor-colores/palette-generation.md +104 -0
- package/skills/mejor-colores/palette-structure.md +76 -0
- package/skills/mejor-colores/token-naming.md +97 -0
- package/skills/mejor-layout/SKILL.md +83 -0
- package/skills/mejor-layout/evals/cases.yaml +32 -0
- package/skills/mejor-layout/grouping-and-alignment.md +123 -0
- package/skills/mejor-layout/spacing-and-adaptivity.md +159 -0
- package/skills/mejor-redaccion/SKILL.md +114 -0
- package/skills/mejor-redaccion/evals/cases.yaml +32 -0
- package/skills/mejor-tipografia/SKILL.md +162 -0
- package/skills/mejor-tipografia/choosing-fonts.md +64 -0
- package/skills/mejor-tipografia/css-cheat-sheet.md +65 -0
- package/skills/mejor-tipografia/details-and-accessibility.md +119 -0
- package/skills/mejor-tipografia/evals/cases.yaml +32 -0
- package/skills/mejor-tipografia/spacing-and-sizing.md +121 -0
- package/skills/mejor-tipografia/variable-fonts-and-opentype.md +105 -0
- package/skills/mejor-tipografia/wrapping-and-punctuation.md +55 -0
- package/skills/mejor-ui/SKILL.md +112 -0
- package/skills/mejor-ui/animations.md +205 -0
- package/skills/mejor-ui/enter-exit.md +147 -0
- package/skills/mejor-ui/evals/cases.yaml +32 -0
- package/skills/mejor-ui/icon-transitions.md +102 -0
- package/skills/mejor-ui/icons.md +110 -0
- package/skills/mejor-ui/performance.md +88 -0
- package/skills/mejor-ui/surfaces.md +219 -0
- package/skills/modal/SKILL.md +290 -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/motion-craft/SKILL.md +125 -0
- package/skills/motion-craft/evals/cases.yaml +38 -0
- package/skills/motion-craft/scripts/verify.sh +75 -0
- package/skills/muscle-memory/README.md +118 -0
- package/skills/muscle-memory/SKILL.md +213 -0
- package/skills/muscle-memory/assets/app/index.html +1197 -0
- package/skills/muscle-memory/assets/library-seed/adapter/card.md +29 -0
- package/skills/muscle-memory/assets/library-seed/adapter/katas/l2-printer-adapter.json +9 -0
- package/skills/muscle-memory/assets/library-seed/adapter/katas/l3-analytics-adapter.json +9 -0
- package/skills/muscle-memory/assets/library-seed/async/card.md +25 -0
- package/skills/muscle-memory/assets/library-seed/async/katas/l2-service-health.json +9 -0
- package/skills/muscle-memory/assets/library-seed/async/katas/l3-fetch-all-statuses.json +9 -0
- package/skills/muscle-memory/assets/library-seed/classes/card.md +23 -0
- package/skills/muscle-memory/assets/library-seed/classes/katas/l1-init.json +9 -0
- package/skills/muscle-memory/assets/library-seed/classes/katas/l2-invoice.json +9 -0
- package/skills/muscle-memory/assets/library-seed/comprehensions/card.md +20 -0
- package/skills/muscle-memory/assets/library-seed/comprehensions/katas/l2-ticket-queue.json +9 -0
- package/skills/muscle-memory/assets/library-seed/comprehensions/katas/l4-heavy-pallets.json +9 -0
- package/skills/muscle-memory/assets/library-seed/context-managers/card.md +26 -0
- package/skills/muscle-memory/assets/library-seed/context-managers/katas/l2-managed-connection.json +9 -0
- package/skills/muscle-memory/assets/library-seed/context-managers/katas/l3-maintenance-mode.json +9 -0
- package/skills/muscle-memory/assets/library-seed/dataclasses/card.md +25 -0
- package/skills/muscle-memory/assets/library-seed/dataclasses/katas/l1-product.json +9 -0
- package/skills/muscle-memory/assets/library-seed/dataclasses/katas/l2-shopping-cart.json +9 -0
- package/skills/muscle-memory/assets/library-seed/decorators/card.md +26 -0
- package/skills/muscle-memory/assets/library-seed/decorators/katas/l2-count-calls.json +9 -0
- package/skills/muscle-memory/assets/library-seed/decorators/katas/l3-retry.json +9 -0
- package/skills/muscle-memory/assets/library-seed/dunder-methods/card.md +28 -0
- package/skills/muscle-memory/assets/library-seed/dunder-methods/katas/l1-coordinate.json +9 -0
- package/skills/muscle-memory/assets/library-seed/dunder-methods/katas/l2-inventory.json +9 -0
- package/skills/muscle-memory/assets/library-seed/enums/card.md +24 -0
- package/skills/muscle-memory/assets/library-seed/enums/katas/l1-order-status-enum.json +9 -0
- package/skills/muscle-memory/assets/library-seed/enums/katas/l2-access-level.json +9 -0
- package/skills/muscle-memory/assets/library-seed/exceptions/card.md +25 -0
- package/skills/muscle-memory/assets/library-seed/exceptions/katas/l1-out-of-stock.json +9 -0
- package/skills/muscle-memory/assets/library-seed/exceptions/katas/l2-parse-reading.json +9 -0
- package/skills/muscle-memory/assets/library-seed/factory/card.md +24 -0
- package/skills/muscle-memory/assets/library-seed/factory/katas/l2-exporter-factory.json +9 -0
- package/skills/muscle-memory/assets/library-seed/factory/katas/l3-payment-registry.json +9 -0
- package/skills/muscle-memory/assets/library-seed/generators/card.md +24 -0
- package/skills/muscle-memory/assets/library-seed/generators/katas/l2-error-lines.json +9 -0
- package/skills/muscle-memory/assets/library-seed/generators/katas/l3-job-pipeline.json +9 -0
- package/skills/muscle-memory/assets/library-seed/inheritance/card.md +26 -0
- package/skills/muscle-memory/assets/library-seed/inheritance/katas/l1-email-notification.json +9 -0
- package/skills/muscle-memory/assets/library-seed/inheritance/katas/l2-square.json +9 -0
- package/skills/muscle-memory/assets/library-seed/iterators/card.md +32 -0
- package/skills/muscle-memory/assets/library-seed/iterators/katas/l2-unread-messages.json +9 -0
- package/skills/muscle-memory/assets/library-seed/iterators/katas/l3-paginator.json +9 -0
- package/skills/muscle-memory/assets/library-seed/methods/card.md +32 -0
- package/skills/muscle-memory/assets/library-seed/methods/katas/l1-coupon.json +9 -0
- package/skills/muscle-memory/assets/library-seed/methods/katas/l2-duration.json +9 -0
- package/skills/muscle-memory/assets/library-seed/observer/card.md +28 -0
- package/skills/muscle-memory/assets/library-seed/observer/katas/l2-publisher.json +9 -0
- package/skills/muscle-memory/assets/library-seed/observer/katas/l3-stock-ticker.json +9 -0
- package/skills/muscle-memory/assets/library-seed/properties/card.md +25 -0
- package/skills/muscle-memory/assets/library-seed/properties/katas/l1-rectangle.json +9 -0
- package/skills/muscle-memory/assets/library-seed/properties/katas/l2-thermostat.json +9 -0
- package/skills/muscle-memory/assets/library-seed/singleton/card.md +25 -0
- package/skills/muscle-memory/assets/library-seed/singleton/katas/l2-config-manager.json +9 -0
- package/skills/muscle-memory/assets/library-seed/singleton/katas/l3-per-subclass-singleton.json +9 -0
- package/skills/muscle-memory/assets/library-seed/strategy/card.md +24 -0
- package/skills/muscle-memory/assets/library-seed/strategy/katas/l2-checkout-discount.json +9 -0
- package/skills/muscle-memory/assets/library-seed/strategy/katas/l3-router-swap.json +9 -0
- package/skills/muscle-memory/assets/library-seed/typing/card.md +23 -0
- package/skills/muscle-memory/assets/library-seed/typing/katas/l1-order-status.json +9 -0
- package/skills/muscle-memory/assets/library-seed/typing/katas/l2-typed-dict-product.json +9 -0
- package/skills/muscle-memory/assets/user-readme.md +45 -0
- package/skills/muscle-memory/docs/2026-07-16-muscle-memory-design.md +218 -0
- package/skills/muscle-memory/docs/plans/2026-07-16-muscle-memory.md +1101 -0
- package/skills/muscle-memory/evals/cases.yaml +32 -0
- package/skills/muscle-memory/references/kata-authoring.md +212 -0
- package/skills/muscle-memory/scripts/build_session.py +117 -0
- package/skills/muscle-memory/scripts/scan_repo.py +292 -0
- package/skills/muscle-memory/scripts/validate_library.py +184 -0
- package/skills/muscle-memory/tests/test_build_session.py +136 -0
- package/skills/muscle-memory/tests/test_scan_repo.py +97 -0
- package/skills/muscle-memory/tests/test_validate_library.py +146 -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/n8n/SKILL.md +177 -0
- package/skills/n8n/evals/README.md +14 -0
- package/skills/n8n/evals/cases.yaml +45 -0
- package/skills/n8n/references/auth-and-selfhost.md +62 -0
- package/skills/n8n/references/n8n-mcp-tools.md +84 -0
- package/skills/n8n/references/rest-api-cheatsheet.md +94 -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 +217 -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 +152 -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 +399 -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/nlp/SKILL.md +225 -0
- package/skills/nlp/evals/README.md +10 -0
- package/skills/nlp/evals/cases.yaml +45 -0
- package/skills/nlp/references/evaluation.md +107 -0
- package/skills/nlp/references/tokenization.md +95 -0
- package/skills/no-code-app/SKILL.md +145 -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 +229 -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 +221 -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 +235 -0
- package/skills/observability/evals/README.md +3 -0
- package/skills/observability/evals/cases.yaml +51 -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/open-weights/SKILL.md +239 -0
- package/skills/open-weights/evals/README.md +14 -0
- package/skills/open-weights/evals/cases.yaml +42 -0
- package/skills/open-weights/references/licenses.md +123 -0
- package/skills/open-weights/references/model-families.md +83 -0
- package/skills/open-weights/references/sizing-and-quant.md +89 -0
- package/skills/orient/SKILL.md +65 -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/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 +229 -0
- package/skills/performance/evals/README.md +3 -0
- package/skills/performance/evals/cases.yaml +49 -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/planetscale/SKILL.md +198 -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 +354 -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/power-automate/SKILL.md +160 -0
- package/skills/power-automate/evals/README.md +17 -0
- package/skills/power-automate/evals/cases.yaml +43 -0
- package/skills/power-automate/references/dataverse-web-api.md +187 -0
- package/skills/power-automate/references/entra-auth-setup.md +75 -0
- package/skills/power-automate/references/flowstudio-mcp-and-limits.md +62 -0
- package/skills/presentations/SKILL.md +258 -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 +313 -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 +174 -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 +127 -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/prototype/LOGIC.md +79 -0
- package/skills/prototype/SKILL.md +28 -0
- package/skills/prototype/UI.md +112 -0
- package/skills/prototype/agents/openai.yaml +3 -0
- package/skills/prototype/evals/cases.yaml +32 -0
- package/skills/python/SKILL.md +320 -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 +209 -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 +182 -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 +215 -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 +120 -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 +176 -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/SKILL.md +14 -0
- package/skills/research/evals/cases.yaml +32 -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-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/revision-de-cambios/SKILL.md +152 -0
- package/skills/revision-de-cambios/evals/cases.yaml +32 -0
- package/skills/revision-de-cambios/removed-signals.md +38 -0
- package/skills/revision-de-cambios/scope-resolution.md +88 -0
- package/skills/revision-interfaz/SKILL.md +144 -0
- package/skills/revision-interfaz/evals/cases.yaml +32 -0
- package/skills/roast-me/SKILL.md +122 -0
- package/skills/roast-me/evals/README.md +76 -0
- package/skills/roast-me/evals/cases.yaml +75 -0
- package/skills/roast-me/prompts/analyze.md +90 -0
- package/skills/roast-me/prompts/compute.md +100 -0
- package/skills/roast-me/prompts/roast.md +181 -0
- package/skills/roast-me/tools/adapters/__init__.py +1 -0
- package/skills/roast-me/tools/adapters/base.py +65 -0
- package/skills/roast-me/tools/adapters/claude.py +140 -0
- package/skills/roast-me/tools/adapters/codex.py +206 -0
- package/skills/roast-me/tools/adapters/gemini.py +142 -0
- package/skills/roast-me/tools/adapters/registry.py +68 -0
- package/skills/roast-me/tools/extract_prompts.py +519 -0
- package/skills/ruby/SKILL.md +295 -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 +320 -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/secure-coding/SKILL.md +336 -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 +219 -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 +97 -0
- package/skills/security-scan/references/triage.md +92 -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/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 +145 -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 +252 -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 +128 -0
- package/skills/shortform-packaging/scripts/verify.sh +210 -0
- package/skills/shortform-strategy/SKILL.md +161 -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 +57 -0
- package/skills/shortform-strategy/references/platform-signals-2026.md +46 -0
- package/skills/shortform-strategy/scripts/verify.sh +176 -0
- package/skills/show-me/SKILL.md +140 -0
- package/skills/show-me/evals/README.md +23 -0
- package/skills/show-me/evals/cases.yaml +61 -0
- package/skills/simplify-code/SKILL.md +101 -0
- package/skills/simplify-code/evals/README.md +3 -0
- package/skills/simplify-code/evals/cases.yaml +42 -0
- package/skills/sitios-calidad-premio/SKILL.md +66 -0
- package/skills/sitios-calidad-premio/evals/cases.yaml +32 -0
- package/skills/skill-scout/SKILL.md +169 -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/source-grounded-development/SKILL.md +108 -0
- package/skills/source-grounded-development/evals/README.md +3 -0
- package/skills/source-grounded-development/evals/cases.yaml +42 -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 +350 -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 +138 -0
- package/skills/suggest/evals/README.md +17 -0
- package/skills/suggest/evals/cases.yaml +78 -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 +224 -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/tastemaker/SECURITY.md +85 -0
- package/skills/tastemaker/SKILL.md +183 -0
- package/skills/tastemaker/assets/anime-starter.js +94 -0
- package/skills/tastemaker/assets/artifact-kit.css +154 -0
- package/skills/tastemaker/assets/artifact-kit.js +47 -0
- package/skills/tastemaker/assets/gsap-starter.js +89 -0
- package/skills/tastemaker/assets/reveal.css +46 -0
- package/skills/tastemaker/assets/reveal.js +56 -0
- package/skills/tastemaker/evals/cases.yaml +32 -0
- package/skills/tastemaker/ideagram/LICENSE +21 -0
- package/skills/tastemaker/ideagram/README.md +69 -0
- package/skills/tastemaker/ideagram/SKILL.md +88 -0
- package/skills/tastemaker/ideagram/assets/primitives/figure-pointing.svg +13 -0
- package/skills/tastemaker/ideagram/assets/primitives/figure-sitting-desk.svg +11 -0
- package/skills/tastemaker/ideagram/assets/primitives/figure-standing.svg +11 -0
- package/skills/tastemaker/ideagram/assets/primitives/prop-chart-bar.svg +8 -0
- package/skills/tastemaker/ideagram/assets/primitives/prop-document.svg +10 -0
- package/skills/tastemaker/ideagram/assets/primitives/prop-envelope.svg +7 -0
- package/skills/tastemaker/ideagram/assets/primitives/prop-lightbulb.svg +14 -0
- package/skills/tastemaker/ideagram/assets/primitives/prop-rocket.svg +8 -0
- package/skills/tastemaker/ideagram/assets/primitives/prop-shield.svg +5 -0
- package/skills/tastemaker/ideagram/assets/primitives/prop-speech-bubble.svg +7 -0
- package/skills/tastemaker/ideagram/references/composition-patterns.md +49 -0
- package/skills/tastemaker/ideagram/references/metaphor-library.md +34 -0
- package/skills/tastemaker/ideagram/references/prompt-template.md +50 -0
- package/skills/tastemaker/ideagram/references/qa-checklist.md +19 -0
- package/skills/tastemaker/ideagram/references/style-contract.md +29 -0
- package/skills/tastemaker/ideagram/references/style-dna.md +43 -0
- package/skills/tastemaker/ideagram/references/undraw-anatomy.md +49 -0
- package/skills/tastemaker/ideagram/scripts/build_library_index.py +119 -0
- package/skills/tastemaker/ideagram/scripts/export_png.py +110 -0
- package/skills/tastemaker/ideagram/scripts/extract_component.py +110 -0
- package/skills/tastemaker/ideagram/scripts/recolor_svg.py +107 -0
- package/skills/tastemaker/ideagram/scripts/recolor_undraw.py +111 -0
- package/skills/tastemaker/ideagram/scripts/validate_assets.py +84 -0
- package/skills/tastemaker/references/animation-guidelines.md +252 -0
- package/skills/tastemaker/references/anti-slop-checklist.md +118 -0
- package/skills/tastemaker/references/asset-curation.md +80 -0
- package/skills/tastemaker/references/component-catalog.md +97 -0
- package/skills/tastemaker/references/component-patterns.md +148 -0
- package/skills/tastemaker/references/component-sourcing.md +150 -0
- package/skills/tastemaker/references/diversification.md +68 -0
- package/skills/tastemaker/references/hero-guidelines.md +108 -0
- package/skills/tastemaker/references/illustration-sources.md +51 -0
- package/skills/tastemaker/references/interface-quality-rules.md +148 -0
- package/skills/tastemaker/references/library-selection.md +50 -0
- package/skills/tastemaker/references/logo-sourcing.md +43 -0
- package/skills/tastemaker/references/macrostructures.md +41 -0
- package/skills/tastemaker/references/narrative-arc.md +57 -0
- package/skills/tastemaker/references/prototype-variants.md +70 -0
- package/skills/tastemaker/references/reference-intelligence.md +121 -0
- package/skills/tastemaker/references/style-lock-format.md +130 -0
- package/skills/tastemaker/references/style-tokens.md +256 -0
- package/skills/tastemaker/references/taste-memory.md +105 -0
- package/skills/tastemaker/references/tech-stack-guides.md +45 -0
- package/skills/tastemaker/references/verbs/audit.md +41 -0
- package/skills/tastemaker/references/verbs/comps.md +62 -0
- package/skills/tastemaker/references/verbs/study.md +64 -0
- package/skills/tastemaker/scripts/_netguard.py +81 -0
- package/skills/tastemaker/scripts/anti_slop_scan.py +271 -0
- package/skills/tastemaker/scripts/audit_motion.py +233 -0
- package/skills/tastemaker/scripts/check_contrast.py +166 -0
- package/skills/tastemaker/scripts/check_domains.py +158 -0
- package/skills/tastemaker/scripts/export_favicons.py +129 -0
- package/skills/tastemaker/scripts/extract_palette.py +123 -0
- package/skills/tastemaker/scripts/fetch_icons.py +180 -0
- package/skills/tastemaker/scripts/fetch_photos.py +275 -0
- package/skills/tastemaker/scripts/generate_palette.py +238 -0
- package/skills/tastemaker/scripts/recolor_svg.py +107 -0
- package/skills/tastemaker/scripts/test_security.py +124 -0
- package/skills/tastemaker/scripts/validate_assets.py +84 -0
- package/skills/tauri/SKILL.md +219 -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/teach/GLOSSARY-FORMAT.md +35 -0
- package/skills/teach/LEARNING-RECORD-FORMAT.md +46 -0
- package/skills/teach/MISSION-FORMAT.md +31 -0
- package/skills/teach/RESOURCES-FORMAT.md +32 -0
- package/skills/teach/SKILL.md +132 -0
- package/skills/teach/evals/cases.yaml +32 -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 +263 -0
- package/skills/testing-go/evals/README.md +3 -0
- package/skills/testing-go/evals/cases.yaml +46 -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 +197 -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 +244 -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 +319 -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 +119 -0
- package/skills/tiktok-api/scripts/verify.sh +96 -0
- package/skills/to-questionnaire/SKILL.md +55 -0
- package/skills/to-questionnaire/evals/cases.yaml +32 -0
- package/skills/to-spec/SKILL.md +80 -0
- package/skills/to-spec/evals/cases.yaml +32 -0
- package/skills/to-tickets/SKILL.md +108 -0
- package/skills/to-tickets/evals/cases.yaml +32 -0
- package/skills/together-fireworks/SKILL.md +176 -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/training-data/SKILL.md +226 -0
- package/skills/training-data/evals/README.md +13 -0
- package/skills/training-data/evals/cases.yaml +41 -0
- package/skills/training-data/references/formats.md +118 -0
- package/skills/training-data/references/synthesis-dedup-quality.md +134 -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 +225 -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/ui-engineering/SKILL.md +114 -0
- package/skills/ui-engineering/evals/cases.yaml +38 -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/unity/SKILL.md +282 -0
- package/skills/unity/evals/README.md +8 -0
- package/skills/unity/evals/cases.yaml +43 -0
- package/skills/unity/references/build-and-platforms.md +65 -0
- package/skills/unity/references/input-system.md +102 -0
- package/skills/unity/references/lifecycle-deep-dive.md +75 -0
- package/skills/unreal/SKILL.md +270 -0
- package/skills/unreal/evals/README.md +12 -0
- package/skills/unreal/evals/cases.yaml +45 -0
- package/skills/unreal/references/blueprint-cpp-parity.md +109 -0
- package/skills/unreal/references/gameplay-framework.md +95 -0
- package/skills/unreal/references/packaging.md +83 -0
- package/skills/unslop/SKILL.md +114 -0
- package/skills/unslop/evals/README.md +25 -0
- package/skills/unslop/evals/cases.yaml +60 -0
- package/skills/unsloth/SKILL.md +254 -0
- package/skills/unsloth/evals/README.md +10 -0
- package/skills/unsloth/evals/cases.yaml +42 -0
- package/skills/unsloth/references/export.md +75 -0
- package/skills/unsloth/references/grpo.md +91 -0
- package/skills/unsloth/references/masking-and-templates.md +91 -0
- package/skills/variant-explorer/SKILL.md +93 -0
- package/skills/variant-explorer/evals/cases.yaml +38 -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/video-a-superprompt/SKILL.md +74 -0
- package/skills/video-a-superprompt/evals/cases.yaml +32 -0
- package/skills/video-a-superprompt/references/superprompt-template.md +87 -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/viral-score/SKILL.md +122 -0
- package/skills/viral-score/evals/README.md +16 -0
- package/skills/viral-score/evals/cases.yaml +50 -0
- package/skills/vllm/SKILL.md +235 -0
- package/skills/vllm/evals/README.md +9 -0
- package/skills/vllm/evals/cases.yaml +47 -0
- package/skills/vllm/references/flags-and-endpoints.md +105 -0
- package/skills/vllm/references/memory-and-throughput.md +78 -0
- package/skills/vocabulario-animacion/SKILL.md +173 -0
- package/skills/vocabulario-animacion/evals/cases.yaml +32 -0
- package/skills/vue-nuxt/SKILL.md +323 -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/wait-what/SKILL.md +9 -0
- package/skills/wait-what/evals/cases.yaml +32 -0
- package/skills/wayfinder/SKILL.md +146 -0
- package/skills/wayfinder/evals/cases.yaml +32 -0
- package/skills/webhooks/SKILL.md +229 -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/write-adr/ADR-TEMPLATE.md +34 -0
- package/skills/write-adr/README-TEMPLATE.md +32 -0
- package/skills/write-adr/SKILL.md +56 -0
- package/skills/write-adr/evals/cases.yaml +32 -0
- package/skills/writing-for-agents/SKILL-MECHANICS.md +22 -0
- package/skills/writing-for-agents/SKILL.md +83 -0
- package/skills/writing-for-agents/evals/cases.yaml +32 -0
- package/skills/youtube-api/SKILL.md +272 -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 +91 -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 +228 -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 +203 -0
- package/skills/youtube-packaging/scripts/verify.sh +250 -0
- package/skills/youtube-strategy/SKILL.md +164 -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 +119 -0
- package/skills/youtube-strategy/scripts/verify.sh +122 -0
- package/skills/youtube-thumbnails/SKILL.md +185 -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 +91 -0
- package/skills/youtube-thumbnails/scripts/verify.sh +123 -0
- package/skills/zapier/SKILL.md +145 -0
- package/skills/zapier/evals/README.md +5 -0
- package/skills/zapier/evals/cases.yaml +50 -0
- package/skills/zapier/references/programmatic-limits-and-partner-api.md +48 -0
- package/skills/zapier/references/when-to-use-vs-n8n-make.md +44 -0
- package/skills/zapier/references/zapier-mcp-tools.md +72 -0
- package/targets/_md-block.js +62 -0
- package/targets/agent-catalog.js +220 -0
- package/targets/agent-sources.json +48 -0
- package/targets/agents.js +238 -0
- package/targets/claude.js +216 -0
- package/targets/commands.js +211 -0
- package/targets/cursor.js +30 -0
- package/targets/danger-guard.mjs +138 -0
- package/targets/gitmoji-guard.mjs +251 -0
- package/targets/hook-once.mjs +123 -0
- package/targets/index.js +184 -0
- package/targets/memory.js +276 -0
- package/targets/opencode-memory-plugin.js +65 -0
- package/targets/sello.mjs +439 -0
- package/targets/session-memory-adapter.mjs +132 -0
- package/targets/session-memory-core.mjs +477 -0
- package/targets/session-memory.mjs +27 -0
- package/targets/session-start.mjs +279 -0
- package/targets/ship-guard.mjs +101 -0
- package/targets/userprompt-gate.mjs +31 -0
- package/targets/worklog-checkpoint.mjs +26 -0
- package/targets/worktree-reaper.mjs +466 -0
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
# Motion
|
|
2
|
+
|
|
3
|
+
Animation is one of the fastest ways to make a UI feel expensive or cheap. The rule that separates the two: **motion should clarify, not decorate.** Every animation should answer "what changed", "where did this come from", or "did the interface hear me?" If movement cannot answer one of those, delete it.
|
|
4
|
+
|
|
5
|
+
## Motion decision gate
|
|
6
|
+
|
|
7
|
+
Run this gate before writing animation code.
|
|
8
|
+
|
|
9
|
+
| Question | Ship motion when | Delete or reduce when |
|
|
10
|
+
|---|---|---|
|
|
11
|
+
| How often will users see it? | Occasional, rare, first-run, or explanatory moments | Keyboard actions, command palettes, core navigation, dense lists, and anything seen dozens of times per day |
|
|
12
|
+
| What purpose does it serve? | Feedback, spatial consistency, state indication, explanation, or preventing a jarring change | The only answer is "it looks cool" |
|
|
13
|
+
| Can it stay within budget? | UI motion stays under 300ms, with smaller pieces under 200ms | The effect needs slow showmanship to work |
|
|
14
|
+
| Does it help the task? | It makes state, hierarchy, or progress clearer | It moves data the user is trying to read or act on |
|
|
15
|
+
|
|
16
|
+
High-frequency UI should feel instant. Rare moments can carry more personality. A daily-use dashboard often needs less motion than a launch page.
|
|
17
|
+
|
|
18
|
+
## GSAP is the default motion engine
|
|
19
|
+
|
|
20
|
+
A static-looking site is one of the fastest ways a generated UI reads as a template rather than a real product. **GSAP + ScrollTrigger is the default for Tastemaker marketing pages** because it handles scroll-driven reveals, staggered entrances, and timeline-sequenced hero moments cleanly. For app shells, use GSAP without ScrollTrigger, CSS transitions, or a motion library that matches the stack.
|
|
21
|
+
|
|
22
|
+
Install it per `references/tech-stack-guides.md`, then wire up `assets/gsap-starter.js`:
|
|
23
|
+
|
|
24
|
+
```html
|
|
25
|
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.5/gsap.min.js"></script>
|
|
26
|
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.5/ScrollTrigger.min.js"></script>
|
|
27
|
+
<script src="gsap-starter.js"></script>
|
|
28
|
+
<script>
|
|
29
|
+
TastemakerMotion.init({
|
|
30
|
+
duration: 0.22,
|
|
31
|
+
distance: 16,
|
|
32
|
+
ease: "power3.out",
|
|
33
|
+
staggerStep: 0.06,
|
|
34
|
+
});
|
|
35
|
+
</script>
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
```html
|
|
39
|
+
<div data-reveal>Fades/rises in on scroll</div>
|
|
40
|
+
<div data-reveal data-reveal-group>
|
|
41
|
+
<div>Child 1</div>
|
|
42
|
+
<div>Child 2</div>
|
|
43
|
+
</div>
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
`gsap-starter.js` uses `gsap.matchMedia()` for reduced motion. The fallback pair, `assets/reveal.css` and `assets/reveal.js`, uses the same `data-reveal` markup and exists for constrained contexts that cannot load GSAP.
|
|
47
|
+
|
|
48
|
+
## Exact curves and durations
|
|
49
|
+
|
|
50
|
+
Use these as CSS tokens unless the project lock has stricter values:
|
|
51
|
+
|
|
52
|
+
```css
|
|
53
|
+
:root {
|
|
54
|
+
--ease-out: cubic-bezier(0.23, 1, 0.32, 1);
|
|
55
|
+
--ease-in-out: cubic-bezier(0.77, 0, 0.175, 1);
|
|
56
|
+
--ease-drawer: cubic-bezier(0.32, 0.72, 0, 1);
|
|
57
|
+
--duration-press: 120ms;
|
|
58
|
+
--duration-popover: 180ms;
|
|
59
|
+
--duration-panel: 240ms;
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
| Element | Duration | Easing |
|
|
64
|
+
|---|---:|---|
|
|
65
|
+
| Button press | 100-160ms | `var(--ease-out)` |
|
|
66
|
+
| Tooltip or small popover | 125-200ms | `var(--ease-out)` |
|
|
67
|
+
| Dropdown or select | 150-250ms | `var(--ease-out)` |
|
|
68
|
+
| Modal or drawer | 200-500ms | `var(--ease-drawer)` for sheets, `var(--ease-out)` for centered modals |
|
|
69
|
+
| On-screen movement or morph | 180-300ms | `var(--ease-in-out)` |
|
|
70
|
+
| Scroll storytelling | as needed | `power3.out` or a scrubbed timeline |
|
|
71
|
+
|
|
72
|
+
Avoid `ease-in` for UI. It starts slow at the exact moment the user expects a response.
|
|
73
|
+
|
|
74
|
+
## anime.js — a scoped alternative, not a GSAP replacement
|
|
75
|
+
|
|
76
|
+
GSAP stays the default for every project (above). anime.js was evaluated as a second option — a real side-by-side test (bundle weight measured directly, the reveal/reduced-motion pattern hand-built and run in a browser, not assumed from docs) found it's not a better general-purpose default, but it does have two genuine, narrow use cases where it's the better tool:
|
|
77
|
+
|
|
78
|
+
1. **A page that needs both scroll-reveals and SVG motion-path/shape-morphing for constructed logo marks or hand-built illustrations** (`references/logo-sourcing.md`). Measured directly via each library's current CDN "latest" tag, the same one this repo's own install snippets point at: anime.js v4's full bundle — animation engine, ScrollObserver, Draggable, spring physics, *and* the SVG toolset (`svg.morphTo`, `svg.createMotionPath`, `svg.createDrawable`), everything included — is **~118KB minified / ~41KB gzipped**. Matching that same feature set in GSAP means core + ScrollTrigger + Draggable + MorphSVGPlugin + DrawSVGPlugin, which comes to **~179KB minified / ~69KB gzipped** — genuinely, verifiably larger (~34% more over the wire, gzipped). For a page whose brief calls for both scroll storytelling *and* a morphing/drawing SVG mark, anime.js's single bundle is the lighter way to get both.
|
|
79
|
+
2. **SVG motion-path/shape-morphing alone, on a page that otherwise doesn't need scroll-triggered motion.** Same tools, same reasoning as above, just without the reveal engine attached — reach for anime.js's SVG toolset directly rather than adding two more GSAP plugin files for one moment on the page.
|
|
80
|
+
|
|
81
|
+
**Bundle size alone does not justify anime.js for simple reveals with no SVG need — this was checked and doesn't hold up.** The obvious-sounding case ("anime.js is lighter, use it for basic scroll-reveals") was tested and rejected: loaded via a plain `<script>` CDN tag (this project's default, no-build-step pattern), anime.js's bundle is **~118KB min / ~41KB gzip** against GSAP core + ScrollTrigger's **~117KB min / ~46KB gzip** — a wash on minified size, and only a modest ~11% gzip difference, because a plain script tag can't tree-shake away the Draggable/spring/SVG code a reveal-only page never uses. (A project actually using a bundler with anime.js's ESM submodule exports could tree-shake further, but that's a different build setup than the CDN-tag default this skill assumes — not a reason to switch the default.) Reach for anime.js on bundle-size grounds *only* when the SVG toolset is also genuinely needed, per the two cases above.
|
|
82
|
+
|
|
83
|
+
**Everything else stays on GSAP.** The reasoning that ruled out a full swap: this project has a real, working, tested investment in GSAP already (`assets/gsap-starter.js`, the `data-reveal` convention, the App-shell/marketing motion-track split, `gsap.matchMedia()` as the reduced-motion backbone) — porting all of that gets no payoff for the standard case, since what actually makes a page feel premium is choreography and restraint, not which engine executes the tween. anime.js's `createScope({ mediaQueries })` is a real, working equivalent to `gsap.matchMedia()` — verified, not assumed — so reduced-motion support isn't a blocker where anime.js *is* used. Spring-based draggable micro-interactions (a real gap in current App-shell motion guidance) were identified as a plausible third use case but not built into a starter yet — flagged as open follow-up work, not silently dropped.
|
|
84
|
+
|
|
85
|
+
If a project's brief calls for anime.js under either scoped case, use `assets/anime-starter.js` — it mirrors `gsap-starter.js`'s `[data-reveal]`/`[data-reveal-group]` convention so a project can use either engine without touching markup. Two real porting gotchas found by hands-on testing, not by reading docs:
|
|
86
|
+
|
|
87
|
+
- **Scroll-threshold syntax does not carry over from GSAP.** GSAP's `"top 85%"` string means nothing to anime.js's `ScrollObserver` — it silently matches nothing and the element never reveals. anime.js's own syntax (position keywords `top`/`bottom`/`start`/`end`, on both target and container) is different enough that copying a GSAP trigger string is a real, silent failure mode. Use the library's own defaults unless a specific threshold is actually needed.
|
|
88
|
+
- **No automatic on-creation visibility check.** GSAP's `ScrollTrigger` checks whether a target is already in view at creation and fires immediately if so. anime.js's `ScrollObserver` only fires `onEnter` on an actual scroll-crossing transition — left alone, anything already above the fold (a hero's own `[data-reveal]` group) sits invisible until the user's first scroll. `anime-starter.js` fixes this by calling each observer's own `handleScroll()` once right after wiring it; any bespoke anime.js scroll animation needs the same explicit initial check.
|
|
89
|
+
|
|
90
|
+
## Motion (motion.dev) — the React-component engine, and the one that also works build-free
|
|
91
|
+
|
|
92
|
+
GSAP stays the default for this skill's own page-level motion (above). Motion — formerly Framer Motion — is the right engine in two specific situations, and `references/library-selection.md` already names the first:
|
|
93
|
+
|
|
94
|
+
1. **React projects where components need springs, layout animation, exit animation (`AnimatePresence`), or gesture-driven values.** GSAP can do most of this, but Motion's component model fits React's lifecycle without the manual cleanup that ScrollTrigger instances demand in `useEffect`.
|
|
95
|
+
2. **A component pulled from a registry that already ships with Motion** (`references/component-sourcing.md`). Don't rip out its animation layer to redo it in GSAP — retune its durations/easings to the lock's Motion values instead, and note that the project now carries Motion.
|
|
96
|
+
|
|
97
|
+
Install: `npm install motion`. It also loads with **no build step**, which matters for this skill's plain-HTML default:
|
|
98
|
+
|
|
99
|
+
```html
|
|
100
|
+
<script type="module">
|
|
101
|
+
import { animate, scroll, inView, stagger } from "https://cdn.jsdelivr.net/npm/motion@12/+esm"
|
|
102
|
+
</script>
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Pin the major version rather than `@latest` in anything shipped — Motion's own docs say this explicitly.
|
|
106
|
+
|
|
107
|
+
Verified API shapes:
|
|
108
|
+
|
|
109
|
+
```js
|
|
110
|
+
animate(el, { scale: [0.4, 1] }, { ease: "circInOut", duration: 1.2 })
|
|
111
|
+
animate(el, { rotate: 90 }, { type: "spring", stiffness: 300 })
|
|
112
|
+
animate("li", { y: 0, opacity: 1 }, { delay: stagger(0.1) })
|
|
113
|
+
inView("section", () => animate("section", { opacity: [0, 1] }))
|
|
114
|
+
|
|
115
|
+
// scroll-linked: build the animation, then hand it to scroll()
|
|
116
|
+
const a = animate("div", { transform: ["none", "rotate(90deg)"] }, { ease: "linear" })
|
|
117
|
+
scroll(a, { target: document.getElementById("item"), offset: ["start end", "end start"] })
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
**One engine per project.** Never load GSAP and Motion together to get one effect from each — the only acceptable reason for both is a pulled component that brought its own, and that should be stated rather than left for the next person to discover. Motion's docs don't document a `prefers-reduced-motion` helper for `scroll()`, so gate it yourself with `matchMedia("(prefers-reduced-motion: reduce)")` and render the end state directly, the same contract `gsap.matchMedia()` gives on the default track.
|
|
121
|
+
|
|
122
|
+
## Scroll storytelling — for landing/marketing pages that should unfold as you scroll
|
|
123
|
+
|
|
124
|
+
`gsap-starter.js` covers the baseline (things fade/rise in on scroll). A *storytelling* page goes further: it uses scroll position as a timeline, so scrolling feels like advancing through a narrative rather than paging past static blocks. This is what makes a landing page feel crafted rather than assembled. Build these directly with ScrollTrigger (they're page-specific, so they live in the project, not in the shared starter):
|
|
125
|
+
|
|
126
|
+
- **Scrubbed reveals** (`scrub: true`) tie an animation's progress to scroll position, so an element draws/moves *as* the user scrolls rather than firing once. Great for a hero visual that assembles, a number that counts up, a path that draws.
|
|
127
|
+
- **Pinned sections** (`pin: true`) hold a section in place while its content advances through steps — the classic "one sticky panel, content changes as you scroll" storytelling beat. Use sparingly (one, maybe two per page); pinning everything is disorienting.
|
|
128
|
+
- **Sequenced hero timeline**: a `gsap.timeline()` on load with at most four coherent beats — context/navigation → headline → subhead + actions → the single proof visual. Animate the visual as one composition rather than staggering all its internal labels. This preserves the hierarchy established in `references/hero-guidelines.md` instead of making every element ask for attention.
|
|
129
|
+
- **Parallax depth**: move background/foreground layers at slightly different scroll rates (small `y` offsets tied to scroll) for a sense of depth — subtle is the whole game; large offsets read as a gimmick.
|
|
130
|
+
|
|
131
|
+
Keep it coherent with the locked motion feel (`.tastemaker/style-lock.md`): a "premium/confident" project storytells with restraint (slow, smooth, minimal), a "playful" one can be more energetic. And every one of these must degrade under `prefers-reduced-motion` — wrap them in the same `gsap.matchMedia()` pattern `gsap-starter.js` uses, showing the end state without the scroll-driven motion.
|
|
132
|
+
|
|
133
|
+
## App shell motion — for internal tools, dashboards, and anything that isn't a scroll narrative
|
|
134
|
+
|
|
135
|
+
The scroll-storytelling track above is the right model for a page the user scrolls through once, top to bottom. It is close to meaningless for a sidebar-plus-topbar internal tool: most of the screen loads once and stays in place while the user works, there is no scroll narrative to tell, and a scrubbed hero reveal or a pinned section has nothing to attach to. Motion is still not optional here (per this file's own "motion should clarify, not decorate" rule), it just answers different questions: what changed, what's about to happen, is this still loading.
|
|
136
|
+
|
|
137
|
+
- **Panel/tab switches**: a short cross-fade or directional slide (8-12px translate + opacity) tied to the navigation direction, so moving forward and back through the app reads consistently rather than a generic fade every time. Ties to the "page/state transitions" rule below.
|
|
138
|
+
- **List/table entrances**: when a view first populates, stagger rows/cards in with the same `data-reveal`/`data-reveal-group` convention `gsap-starter.js` already provides, just triggered on data-load instead of on scroll-into-view, rather than letting the whole table snap into existence at once.
|
|
139
|
+
- **State changes**: a KPI ticking to a new value, a status badge changing, a row being added or removed, a field validating. Animate the specific thing that changed, not the surrounding layout. This is what "what changed" from the top of this file actually looks like in an app shell.
|
|
140
|
+
- **Loading states, promoted to first-class**: skeleton screens that mirror the real layout, not a generic spinner. This used to be a single bullet under the marketing-oriented guidance below; it earns the promotion because it is the motion moment most internal tools actually need right, and it is a genuinely different problem from a scroll reveal.
|
|
141
|
+
- **Draggable, spring-based micro-interactions**: a draggable panel with snap points, a reorderable list row, a snap-to-position control — physics-based release motion reads as more tactile than an eased tween for anything the user directly manipulates with a pointer. See the dedicated section below for which engine and how.
|
|
142
|
+
|
|
143
|
+
None of this needs ScrollTrigger. `gsap.to()`/`gsap.from()` with the same duration and easing recorded in `.tastemaker/style-lock.md`'s Motion section is enough, wired reduced-motion-aware the same way as everything else in this file.
|
|
144
|
+
|
|
145
|
+
### Draggable interactions: use whichever engine the project is already on
|
|
146
|
+
|
|
147
|
+
Evaluated GSAP's `Draggable` + `InertiaPlugin` against anime.js's `createDraggable` + `createSpring` for this specific case — a draggable panel with snap points — the same rigor the original GSAP-vs-anime.js evaluation used (`references/animation-guidelines.md`'s anime.js section above). The finding here is the same shape as that one, for the same underlying reason: **bundle size is a wash between the two options on their own** (GSAP core + `Draggable` + `InertiaPlugin` measures ~116KB minified / ~44KB gzipped; anime.js's full bundle, which already includes its draggable and spring tools, measures ~118KB minified / ~41KB gzipped) — so it is never worth loading a *second* motion engine just to get draggable support. Extend whichever engine the project is already using:
|
|
148
|
+
|
|
149
|
+
- **GSAP-track projects (the default)**: `Draggable.create(target, { type: "x" | "y" | "x,y", bounds: containerSelector, inertia: true, snap: [...points], onDragEnd })`. `InertiaPlugin` is what makes the release feel like it has real momentum instead of stopping dead where the pointer let go — it's free (see the GSAP-is-the-default section above), so there's no reason to skip it once `Draggable` is in use.
|
|
150
|
+
- **anime.js-track projects** (per this file's anime.js section — a page already using anime.js for SVG motion-path/shape-morphing): `anime.createDraggable(target, { x: true, snap: [...points], releaseMass, releaseStiffness, releaseDamping, onSnap })`. `releaseMass`/`releaseStiffness`/`releaseDamping` are anime.js's spring-physics equivalent of `InertiaPlugin` — tune stiffness/damping together (higher damping relative to stiffness settles faster with less overshoot) rather than reaching for `InertiaPlugin`'s more velocity-based feel; they're different physical models, not drop-in equivalents of each other.
|
|
151
|
+
|
|
152
|
+
**The drag-follow itself is never gated by `prefers-reduced-motion`** — it's direct manipulation tracking the user's own pointer 1:1, not decorative or autoplaying motion, so reduced-motion doesn't apply to it any more than it applies to scrolling itself. What *does* need a reduced-motion branch is the **release/snap settle** — the bouncy, physics-driven motion after the user lets go. Branch it the same way every other animation in this file does (`gsap.matchMedia()` / anime.js's `createScope({ mediaQueries })`): a lower-damping, more visibly springy settle by default, and a critically-damped or near-instant snap (no overshoot) under `prefers-reduced-motion: reduce` — overshoot on release is exactly the kind of motion that reads as uncomfortable for vestibular sensitivity, even though the drag itself is user-initiated.
|
|
153
|
+
|
|
154
|
+
**Which track applies is a per-screen decision, not a per-project one.** A marketing/landing page uses scroll storytelling; a dashboard, settings screen, or any persistent app shell uses this track instead. A single project can need both (a public landing page plus an authenticated app behind it), in which case each screen gets the track that actually fits it rather than one default applied everywhere. See `SKILL.md` Step 4 for where this branch happens in the build.
|
|
155
|
+
|
|
156
|
+
## What to animate, and how much
|
|
157
|
+
|
|
158
|
+
- **Entrances** (page load, scroll-into-view): a small, consistent fade + upward translate (8-16px) is almost always right. Bouncy easing, large distances, or rotation on entrance reads as playful/consumer — only use it if the locked mood (`.tastemaker/style-lock.md`) actually calls for playful. A "premium/confident" project should use a quick, restrained fade (150-250ms, ease-out), not a bounce.
|
|
159
|
+
- **Hover/focus states**: fast (100-150ms), subtle (a slight scale, a border/background shift, a shadow lift) — the point is to confirm interactivity, not to perform. Anything longer than ~200ms on hover starts to feel laggy rather than smooth.
|
|
160
|
+
- **Loading states**: skeleton screens that mirror the actual layout beat a generic spinner — they set an expectation of what's coming, which is what makes a wait feel shorter. See the App shell motion section above for this promoted to a first-class pattern, not an afterthought.
|
|
161
|
+
- **Page/state transitions**: keep direction consistent (things that mean "forward" always animate the same way) — inconsistent transition direction is disorienting even when each individual transition looks fine in isolation.
|
|
162
|
+
|
|
163
|
+
## Performance rule, non-negotiable regardless of style
|
|
164
|
+
|
|
165
|
+
Animate only `transform` and `opacity`. Anything that animates `width`, `height`, `top`/`left`, or box-shadow spread triggers layout recalculation on every frame and will visibly stutter on anything but a high-end device — this is true no matter how good the animation curve is conceptually.
|
|
166
|
+
|
|
167
|
+
## Physicality rules
|
|
168
|
+
|
|
169
|
+
- Pressable elements respond on pointer down. Default: `transform: scale(0.97)` and `transition: transform 120ms var(--ease-out)`.
|
|
170
|
+
- Do not animate from `scale(0)`. Start from `scale(0.95)` plus `opacity: 0`.
|
|
171
|
+
- Trigger-anchored popovers, menus, and tooltips scale from their trigger. Use `transform-origin: var(--transform-origin)` when the primitive exposes it.
|
|
172
|
+
- Modals stay centered. `transform-origin: center` is correct for a modal.
|
|
173
|
+
- Enter and exit along the same path. A toast that enters from the top exits to the top.
|
|
174
|
+
- Use percentages for off-screen travel when size varies. `translateY(100%)` means the element's own height.
|
|
175
|
+
- Add a subtle `filter: blur(2px)` only when a crossfade visibly double-exposes two states. Keep blur under `20px`.
|
|
176
|
+
|
|
177
|
+
## Gesture and spring rules
|
|
178
|
+
|
|
179
|
+
Use springs for drag, swipe, interruptible layout changes, and any object the user can grab mid-motion. Start with a critically damped feel: no bounce for standard UI, slight bounce only when a gesture carries momentum.
|
|
180
|
+
|
|
181
|
+
Recommended Motion spring defaults:
|
|
182
|
+
|
|
183
|
+
```js
|
|
184
|
+
// Standard UI, no overshoot
|
|
185
|
+
{ type: "spring", duration: 0.4, bounce: 0 }
|
|
186
|
+
|
|
187
|
+
// Momentum-driven gesture release
|
|
188
|
+
{ type: "spring", duration: 0.4, bounce: 0.2 }
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
Gesture details:
|
|
192
|
+
|
|
193
|
+
- Respond on pointer down, commit on pointer up.
|
|
194
|
+
- Use Pointer Events and `setPointerCapture`.
|
|
195
|
+
- Respect where the user grabbed the object. Do not snap the object center to the pointer.
|
|
196
|
+
- Track release velocity and hand it to the spring.
|
|
197
|
+
- Use soft resistance at boundaries instead of hard stops.
|
|
198
|
+
|
|
199
|
+
## Performance rule
|
|
200
|
+
|
|
201
|
+
Animate only `transform` and `opacity`. Anything that animates `width`, `height`, `margin`, `padding`, `top`, `left`, or box-shadow spread risks layout and paint work every frame.
|
|
202
|
+
|
|
203
|
+
Also avoid `transition: all`. Name the properties. If a React app uses Motion for animations under load, prefer a full `transform` string over separate `x`, `y`, or `scale` shorthands when frame rate matters.
|
|
204
|
+
|
|
205
|
+
## Accessibility
|
|
206
|
+
|
|
207
|
+
Every animation must respect reduced motion. Reduced motion means gentler feedback, not a dead interface: keep opacity/color changes that aid comprehension and drop slides, springs, parallax, and large movement.
|
|
208
|
+
|
|
209
|
+
```css
|
|
210
|
+
@media (prefers-reduced-motion: reduce) {
|
|
211
|
+
.sheet {
|
|
212
|
+
transition: opacity 200ms ease;
|
|
213
|
+
transform: none !important;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
@media (hover: hover) and (pointer: fine) {
|
|
218
|
+
.button:hover {
|
|
219
|
+
transform: translateY(-1px);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
If a design uses translucent surfaces, also handle `prefers-reduced-transparency` and `prefers-contrast: more` by increasing opacity, dropping blur, and adding clearer borders.
|
|
225
|
+
|
|
226
|
+
## Locking motion per project
|
|
227
|
+
|
|
228
|
+
Once a project settles on a motion feel, record it in `.tastemaker/style-lock.md`:
|
|
229
|
+
|
|
230
|
+
- Feel: quick and restrained, soft and bouncy, crisp and operational, or another concrete phrase.
|
|
231
|
+
- Curves: exact cubic-bezier or library spring values.
|
|
232
|
+
- Durations: press, popover, panel, page/story.
|
|
233
|
+
- Distance: reveal and panel travel.
|
|
234
|
+
- Frequency rules: where to delete or reduce motion for this project.
|
|
235
|
+
|
|
236
|
+
Motion inconsistency is as visible as color inconsistency, just harder to name.
|
|
237
|
+
|
|
238
|
+
## Motion review before delivery
|
|
239
|
+
|
|
240
|
+
Run:
|
|
241
|
+
|
|
242
|
+
```bash
|
|
243
|
+
python3 scripts/audit_motion.py site assets references
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
Then do a human feel pass:
|
|
247
|
+
|
|
248
|
+
- Slow key animations to 25% speed in DevTools or by temporarily multiplying durations.
|
|
249
|
+
- Check origin: popovers grow from triggers, modals from center.
|
|
250
|
+
- Spam toggles, tabs, and toasts. Motion should retarget, not restart from zero.
|
|
251
|
+
- Toggle reduced motion. Movement drops, but state feedback remains.
|
|
252
|
+
- Test mobile hover behavior. Touch should not trigger pointer-only hover motion.
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# Anti-slop gates + pre-emit self-critique
|
|
2
|
+
|
|
3
|
+
Two checks stand between a build and handoff: a **pre-emit self-critique** (run *before* you finalize, to catch weakness while it's cheap to fix) and the **numbered gate list** (run *after* build, as a precise sweep). These are the specific, recognizable tells that make output read as AI-generated regardless of how good the underlying tokens were — catching them is often higher-leverage than getting the palette exactly right.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Pre-emit self-critique (run before you finalize)
|
|
8
|
+
|
|
9
|
+
Before handing anything back, score the planned output **1-5 on each of six axes**. Anything **< 3 on any axis triggers a revision pass** before the gate sweep — don't carry a known weakness into a 50-gate review. Two passes is normal; a third is usually a sign the *brief* is underspecified, not the design — re-read it.
|
|
10
|
+
|
|
11
|
+
| Axis | What you're scoring |
|
|
12
|
+
|---|---|
|
|
13
|
+
| **Show-don't-tell** | Is each section mostly something to *look at* (mockup, chart, comparison, illustration, real photo) with text as caption — or mostly prose with a decorative icon? This is tastemaker's top principle; score it first. |
|
|
14
|
+
| **Philosophy** | Is there a clear *why* — a position this design takes, a reason it looks like *this* — or is it just a competent layout? |
|
|
15
|
+
| **Hierarchy** | Can a viewer tell, in 2 seconds, what's primary, secondary, tertiary? Or is everything the same weight? |
|
|
16
|
+
| **Specificity** | Does this look like *this* product/brief — or like a generic page that could be anyone's, just in different colors? |
|
|
17
|
+
| **Restraint** | Has everything that isn't earning its place been removed — decoration, redundancy, padding-for-padding's-sake, motion that carries no information? |
|
|
18
|
+
| **Variety** | Does this share a structural fingerprint (macrostructure, nav/footer/hero archetype) with a previous build in this project? Score by *structural* distance — a palette swap doesn't count as variety. See `references/diversification.md`. |
|
|
19
|
+
|
|
20
|
+
Record the six scores in the build's CSS stamp so a later run can see them: `/* tastemaker · critique: ShowTell 5 · Phil 4 · Hier 5 · Spec 4 · Restr 5 · Var 5 */`.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## The gate list (run after build)
|
|
25
|
+
|
|
26
|
+
Run through these before handing back any generated UI. Every answer must land on the safe side. **Gates are universal unless a *Mood note* scopes them** — tastemaker's five moods are premium, warm, technical, playful, elegant (from `references/style-tokens.md`). A mood note loosens or tightens a gate for a specific mood; where there's no note, the gate binds every mood.
|
|
27
|
+
|
|
28
|
+
Run the static scanner before the manual sweep:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
python3 scripts/anti_slop_scan.py <changed-ui-paths>
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
The scanner catches high-confidence source tells: generic purple/cyan gradients, gradient text, `h-screen`, dead links, missing alt text, placeholder copy, AI-copy phrases, emoji icons, repeated eyebrow labels, and `transition-all`. Fix HIGH findings. For MEDIUM findings, either fix them or record why the brief earned the exception. The scanner is a floor, not the full review; the gates below still decide the work.
|
|
35
|
+
|
|
36
|
+
### Show, don't tell & structure
|
|
37
|
+
|
|
38
|
+
1. **Shows, doesn't tell — visuals carry meaning, not paragraphs.** Go section by section: is each one mostly something to *look at* (a UI mockup, a chart, a comparison, a diagram, a numbered visual flow, a stat callout, an illustration) with text as its caption — or is it mostly prose with a decorative icon? A page where most sections are heading-plus-two-sentences-of-explanation is the text-wall failure mode, and it reads as generic even with perfect tokens. Replace explanatory paragraphs with the thing they describe: "fast analytics" → an actual chart; "simple 3-step setup" → three visual panels; "powerful editor" → a mockup of the editor. Text stays only where a visual genuinely can't carry it (headline, short subhead, caption, CTA). This is the highest-leverage anti-slop check there is — a beautiful palette on a wall of text still reads as AI slop. **A section can pass this gate technically and still fail it in spirit** — a proof/evidence section built as small label + description + tiny-icon cards floating in mostly-empty background is a card, not a paragraph, but is still too sparse to carry a proof beat. See `references/component-patterns.md`'s show-don't-tell section for the proof-specific floor: real supporting visuals (an annotated capture, a real chart, a constructed diagram), not undersized cards padded out by empty space.
|
|
39
|
+
2. **Structure is a named macrostructure, not the generic template.** The page is one of `references/macrostructures.md`'s named shapes, not the reflexive hero → 3-feature-cards → testimonial → CTA → footer rhythm that reads as "an AI built this" even with a perfect palette. Within one page, no two sections use the same archetype from `references/component-catalog.md`.
|
|
40
|
+
3. **Structure differs from the last build.** The build carries the CSS stamp and a `.tastemaker/log.json` entry (`references/diversification.md`), and its macrostructure + nav + footer + hero archetypes each differ from the last build's per the rotation rule. Reaching for the mood's default nav/footer on every build is the specific failure this catches.
|
|
41
|
+
4. **The page follows a real narrative arc, not just a varied shape.** Per `references/narrative-arc.md`: reading the page top to bottom, can you name what each section is doing in the argument — hook, problem, solution, how it works, proof, close — or a deliberately stated variant? At least four distinct beats, five by default. This is a different failure from gates 2-3: a page can pass those (real macrostructure, differs from the last build) and still fail this one, because a well-varied *shape* with no throughline still reads as sections that don't add up to anything. Check specifically for a problem/stakes beat that's actually specific to the product, not a placeholder sentence, and a proof beat with real evidence, not an assertion.
|
|
42
|
+
5. **No generic-template chrome tells.** Nav isn't the reflexive wordmark-left + inline-links + button-right minimal bar unless the page genuinely has ≤2 destinations (reach for a real product bar instead); footer isn't the reflexive 4-column Product/Company/Resources/Legal + social-row unless it's a genuine docs root; no eyebrow-left/heading-right two-column section head (stack the eyebrow above the heading); no hand-drawn fake browser/phone/IDE chrome (use a real screenshot or omit — the environment already supplies real chrome). See `references/component-catalog.md`'s cross-cutting rules.
|
|
43
|
+
6. **One intentional rule-break exists.** The hardest gate, and the most important. A design where everything sits on the grid, evenly spaced and perfectly safe, reads as generated even when every token is right. Human-authored work usually has one deliberate break: an element that bleeds past its column, an oversized number, an asymmetric moment, a bit of tension or delight the system didn't require. Find the one intentional break that makes this feel made by a person. If there isn't one, the page is probably too safe.
|
|
44
|
+
|
|
45
|
+
### Hero & logo
|
|
46
|
+
|
|
47
|
+
7. **Hero passes the five-second and subtraction tests.** In five seconds, can a new visitor identify the product, its main value, and the primary action? Then remove every hero element that doesn't improve one of those answers. The default budget: one optional eyebrow, one headline, one short subhead, one primary CTA, at most one secondary CTA, one focused visual. Process rails, metric sidebars, floating proof badges, decorative stamps/orbits, file footers, and multiple competing mockups belong below the fold unless the product truly can't be understood without one.
|
|
48
|
+
8. **Hero fits the fold and sizes to its copy.** At 1280×800, the headline, lede, and primary CTA are all visible without scrolling; the headline is sized to its word count — including under 6 words, which still caps at the same ceiling the 6-8 word band uses, never above it — and its line-height clears descenders (see `references/hero-guidelines.md`). A short headline stacking one word per line is this failure, concretely. *Mood note: elegant/premium may run a taller art-directed statement fold, but even then the first screen must read as a complete, deliberate composition, never a headline sliced by the fold.*
|
|
49
|
+
9. **Hero motion preserves the hierarchy.** The entrance sequence reveals the message and focused visual in at most four coherent beats. It doesn't animate every internal label independently or use decorative motion that competes with the headline.
|
|
50
|
+
10. **Hero isn't centered-everything.** The eyebrow, headline, lede, and CTA are not all stacked on one centered vertical axis — pick at most two centered elements and break alignment for the rest (eyebrow or CTA sits off-axis). *Mood note: playful and elegant-narrow may center the hero when the canvas itself is the design, but even then the eyebrow or CTA sits off-axis.*
|
|
51
|
+
11. **No section headline outside the hero reaches hero scale.** Per `references/component-catalog.md`'s `S#` section-heads: a section headline caps at roughly 50-65% of the hero's full display size, and reads in 1-2 lines regardless of word count. This is a distinct failure from gate 8 — a page can pass the hero's own sizing discipline and still fail this one if a mid-page section headline independently reaches hero-scale type. The one exception is a Long-Scroll Narrative or Manifesto macrostructure's single deliberate large statement moment, stated as such — not the default treatment repeated at every section head.
|
|
52
|
+
12. **Logo is a real mark, not a letter in a box.** A single letter set inside a rounded/colored square or circle is the logo equivalent of the indigo gradient — the instant "AI generated this" tell. The mark is a simple, memorable geometric symbol (or a recolored library symbol per `references/logo-sourcing.md`), recognizable at 16px, paired with a wordmark in the locked heading font — not a monospace/system letterform dropped in a colored tile.
|
|
53
|
+
13. **Existing brand assets were preserved.** If the repository or brief already contained a logo/favicon/brand kit, the build reuses it unchanged unless the user explicitly requested a rebrand. Visual mismatch is a styling problem, not automatic permission to replace a distributed identity.
|
|
54
|
+
|
|
55
|
+
### Color & contrast
|
|
56
|
+
|
|
57
|
+
14. **Not the default gradient.** Indigo-to-purple (or blue-to-cyan) diagonal gradients on hero sections/buttons are the single most recognizable "AI made this" signal — including a `background-clip: text` gradient headline, which no mood allows. If the locked style didn't call for a gradient, don't add one out of habit.
|
|
58
|
+
15. **Contrast checked for every pairing used, not just body-on-background.** Body text vs. its background hits 4.5:1 (WCAG AA), verified against the real hex values. But that's not enough: check the palette *as used*. Run `scripts/check_contrast.py --matrix ...` to get the legal-pairings set, and confirm every pairing the build actually introduced (a badge fill with its label, a disabled state, a hover, a state-carrying border) is in the text-safe or UI-safe list for its purpose. A palette color used as a fill with white text is the classic miss: it can pass body-on-background and still be illegible as a button. See `references/style-lock-format.md`'s Color contract. Purely decorative hairline borders are exempt from the 3:1 floor; a border that's the only thing conveying state is not.
|
|
59
|
+
16. **The contrast failures that ship most often.** Fail on any: **button text ≈ button fill** (text color and fill within ~5% lightness in OKLCH — the black-on-black bug where the model forgot the on-fill color); **a dark section left with ink-on-ink** (any panel with OKLCH lightness < 50% must also swap its text to a light color in the same rule, and nested children must inherit it); **an accent used as a text-bearing fill with no verified on-accent color**. These are the real-world failures a single body-on-bg check misses.
|
|
60
|
+
17. **Neutrals are tinted toward the anchor hue, not flat grey.** Pure `oklch(... 0 ...)` neutrals read as flat and disconnected from the palette. *Mood note: technical (and any deliberately monochrome/minimal build) may use zero-chroma neutrals — the Stripe/Linear school; every other mood tints neutrals toward the anchor hue.*
|
|
61
|
+
18. **Accent stays an accent (~≤5% of any viewport).** If the accent covers more than ~5% of a screen by area (solid fills, large accent headings, full-bleed accent bands), retreat — accent is for emphasis, not filling. *Mood note: playful may run a higher accent footprint when the color energy is the point.*
|
|
62
|
+
19. **Nothing contradicts the "Do not" list** in `.tastemaker/style-lock.md`, if the project has accumulated specific rejections.
|
|
63
|
+
|
|
64
|
+
### Spacing & layout
|
|
65
|
+
|
|
66
|
+
20. **Spacing follows the scale, and internal padding never exceeds external gaps.** Per `references/style-tokens.md`'s Spacing scale: content cards (pricing tiers, feature cards, testimonials) have a real internal-padding floor (`space-6`/24px). Check the relationship, not just raw numbers: a card's internal padding ≤ the gap between it and its neighbors — if padding is *larger* than the space around it, the layout reads as cramped inside and empty outside at once. Every gap/margin/padding value is on the named scale; an arbitrary `padding: 17px` is a tell.
|
|
67
|
+
21. **Two-column sections have a deliberate column-balance treatment.** If one column (a headline block) is visibly taller than the other (a card stack, a short label list), it was vertically centered, filled with a real supporting element, or capped to match — not left to trail into empty space. A pricing section with three cards clustered at the top and dead space beneath them is this failure, concretely. See `references/component-patterns.md`'s Column balance section.
|
|
68
|
+
22. **Section-to-section separation is one consistent mechanism.** Every section boundary uses the same treatment (alternating tint, hairline divider, or fixed padding alone) recorded in the style lock — a page that mixes them boundary to boundary reads as unplanned.
|
|
69
|
+
23. **On a landing page, section padding is generous enough that each section reads as its own moment — not capped at a uniform, cramped value.** Check the actual numbers, not a vague impression: a pivotal section (hero, primary proof/demo) should be padded in the `space-32`–`space-48` (128–192px per side) range, and the combined gap between two adjacent sections should read as roughly 120–250px on desktop. See `references/style-tokens.md`'s Section-level padding section. This is a distinct failure from gate 22 (mechanism consistency) — a page can use one consistent separation mechanism and still fail this gate if that mechanism is applied at a cramped value everywhere. Does not apply to app-shell screens, which stay dense per the density guidance in `references/component-patterns.md`.
|
|
70
|
+
24. **Density matches the mood.** A premium/confident project shouldn't be cramped and cluttered; a dense/information-heavy dashboard shouldn't have so much whitespace that scanning takes longer than it should.
|
|
71
|
+
25. **No horizontal scroll at any width 320-1920px.** `overflow-x: clip` (not `hidden`, which breaks `position: sticky`) on both `html` and `body`; any `grid-template-columns` track holding an image uses `minmax(0, 1fr)`, never bare `1fr` (bare `1fr` takes the image's intrinsic width as its floor and blows past the viewport on phones); display headers set `overflow-wrap: anywhere; min-width: 0` so long compound words break instead of overflowing.
|
|
72
|
+
26. **No two-line clickable text.** No button label, primary nav link, footer link, tab label, breadcrumb, or CTA wraps to two lines at any width 320-1920px — it reads as a styling error, not intent. Fix by shortening the label, `white-space: nowrap` + parent reflow, or collapsing the nav into a menu. Hit targets ≥44×44px below 40rem.
|
|
73
|
+
|
|
74
|
+
### Motion & microinteractions
|
|
75
|
+
|
|
76
|
+
27. **Not static.** GSAP + ScrollTrigger (`assets/gsap-starter.js`) is wired for scroll-reveal, staggered entrances, and hover/press feedback — a finished page with zero motion is a skipped step, not a minimalist choice. Check for it explicitly. (App-shell screens get the App-shell motion track instead of a scroll timeline — see `references/animation-guidelines.md`.)
|
|
77
|
+
28. **No `transition: all`.** Name the specific properties that transition. `transition: all` animates layout and paint properties you didn't intend and is a reliable tell.
|
|
78
|
+
29. **Animate only `transform` and `opacity`.** Never animate `width`, `height`, `top`, `left`, `margin`, or `padding` (they trigger layout on every frame). Motion that needs to move something uses `transform`.
|
|
79
|
+
30. **No uniform hover-scale, no stacked hover effects, no bouncy easing on UI state.** No `hover:scale-105` applied across unrelated elements; no single element carrying translate + scale + shadow + color at once; no overshoot/bounce easing (`cubic-bezier(0.34, 1.56, …)`) on buttons/modals/tooltips — reserve overshoot for genuinely physical interactions. Use the named easings, not the browser default `ease`.
|
|
80
|
+
31. **Focus ring appears instantly and is visible.** Every interactive element has `:focus-visible` with a ring at ≥3:1 contrast, and the ring **never** fades/transitions into existence — keyboard users need it immediately.
|
|
81
|
+
32. **Every motion has a `prefers-reduced-motion: reduce` fallback.** Spatial motion collapses to a ≤150ms opacity crossfade, not nothing-and-not-full-motion. `gsap-starter.js` handles this via `matchMedia`; bespoke timelines branch the same way.
|
|
82
|
+
33. **Motion carries information, and there's not too much of it.** Prefer silent success over a celebratory toast for an effect the user can already see; prefer optimistic update + Undo over a confirmation dialog; hover-tooltips delay ~800ms, focus-tooltips 0ms. If removing an animation wouldn't lose the user any information, remove it — most pages have too much motion, not too little.
|
|
83
|
+
34. **Motion passes the executable audit.** Run `python3 scripts/audit_motion.py <paths>` and review the findings. No `transition: all`, `ease-in` on UI, `scale(0)`, layout-property animation, ungated hover motion, or missing reduced-motion handling. UI motion over 300ms has a reason: modal, drawer, marketing story, or deliberate confirmation.
|
|
84
|
+
|
|
85
|
+
### Typography
|
|
86
|
+
|
|
87
|
+
35. **No emoji as icons.** Emoji standing in for icons in a "real" product UI is an instant tell. Use the mood's fetched Iconify set, a built SVG, or lead with the visual.
|
|
88
|
+
36. **Body copy is not set in a monospace face.** Mono/semi-mono for paragraph text reads as "developer template." Reserve mono for code, data, timestamps, and short technical labels. Holds even for a technical mood — see the note in `references/style-tokens.md`.
|
|
89
|
+
37. **Headline line-height is tightened but never below its floor.** Tighten as size grows, but 1.0 is the floor for a bold, large-clamp display headline — below it (e.g. 0.87), descenders and punctuation touch the line below. Verify visually at the actual weight/size, not by reading the CSS number. (For non-Latin scripts, the floor is higher — see `references/style-tokens.md`'s Non-Latin section.)
|
|
90
|
+
38. **No italic headers.** Headings and display type are roman (`font-style: normal`). An italicized emphasis word inside an upright heading (`Built to <em>think</em>`) is one of the most reliable AI tells; so is an all-italic display face. Carry emphasis with weight, accent color, or a drawn underline. Italic survives only as body-copy emphasis inside running paragraphs.
|
|
91
|
+
39. **At most three font families on the page.** Display + body + at most one outlier (wordmark / hero stat / pull quote), and the outlier appears in at most two slots. Same family at different weights counts once. A fourth family — or an outlier used as a third body font — is slop.
|
|
92
|
+
|
|
93
|
+
### Assets, states & honesty
|
|
94
|
+
|
|
95
|
+
40. **Not asset-empty.** Every section that calls for real photography has a real photo, every concept-driven section (mission, values, feature explainers) has an illustration, and icons are real fetched icons — not flat color blocks, emoji, or placeholders. All present in this pass, not deferred.
|
|
96
|
+
41. **Core app states are real.** Loading, empty, error, disabled, focus, hover, pressed, and success states exist for app screens. A dashboard or form that only looks good in the happy populated state is unfinished.
|
|
97
|
+
42. **Assets share one visual DNA.** Multiple icons/illustrations in a batch visibly belong to the same family (consistent stroke width, consistent color treatment), not independently sourced. One icon library per page — never two mixed.
|
|
98
|
+
43. **SVG assets pass `scripts/validate_assets.py`.** A malformed SVG (classically a `--` inside a comment) reads as normal text but renders broken in strict browsers — check by parsing, not by reading the source.
|
|
99
|
+
44. **Every chart/graph card has a caption, and its geometry was actually looked at.** A chart with axis labels but no title is still unlabeled — state what it shows in one line, and connect it to any related stats nearby. `validate_assets.py` only confirms well-formed XML; before shipping, render the chart and visually confirm the marks are internally consistent — a trend line spans the plotted range, bar heights reflect their labeled values, segments sum to a sensible whole.
|
|
100
|
+
45. **Interactive states exist.** Hover / `:focus-visible` / `:active` / disabled / loading states are specified, not left to browser defaults. Inputs specifically: border-width stays constant across states (state goes to color/outline/shadow, never `border-width` — it shifts layout); disabled is signalled by three channels (opacity + `cursor: not-allowed` + the native attribute), not opacity alone; input height matches adjacent button height.
|
|
101
|
+
46. **Real content, not lorem-ipsum-adjacent placeholders**, wherever the PRD gives enough to write real copy. "Lorem ipsum," "Sample text," and placeholder names ("Jane Doe," "Acme," "Nexus") read as unfinished even in a first draft.
|
|
102
|
+
47. **No invented metrics or fabricated proof.** Any quantitative claim — "10× faster," "trusted by 50,000+ teams," "+47% conversion," "99.9% uptime" — that the user didn't supply and the model made up to fill a stat-led layout or proof bar is slop the moment it's invented. Replace with a real number, an honest `—` + "metric to confirm" placeholder, or a section that doesn't need the proof slot. Same rule for testimonials, logos, and case-study counts.
|
|
103
|
+
|
|
104
|
+
### Token & honesty discipline
|
|
105
|
+
|
|
106
|
+
48. **No mid-render token improvisation.** Every color and every `font-family` in the artifact references a named token (`var(--color-accent)`, `font-family: var(--font-display)`). An inline hex / `oklch()` / `rgb()` value, or a `font-family: "Some Font"` that bypasses the token block, means the model picked the palette then freestyled past it. Lift the value into the token block as a named variable, or replace it with an existing token.
|
|
107
|
+
49. **No attribution hindrance anywhere on the page.** No "Photo by …," no "Icons by …," no visible credit line. The default sources (Openverse CC0 photos, ideagram illustrations, Iconify icons) are attribution-free by license — a *visible* credit means an attribution-requiring source slipped in; swap it. Voluntary source credits belong in a code comment (the `CREDITS` block `fetch_photos.py` writes), never rendered as page text.
|
|
108
|
+
50. **Honest about fallbacks.** If asset generation fell back to curated icons + code-native visuals because no image-gen tool was available, that's stated plainly, not implied to be custom-generated.
|
|
109
|
+
51. **No caption that just narrates what the visual already shows.** Before writing a caption under a proof visual, check whether the visual already labels itself (tags, headers, on-image text). If it does, a caption restating the same fact in prose is redundant chrome, not clarification — cut it rather than trim it. This is a stricter case of the show-don't-tell rule (item set above), applied specifically to captions: the failure isn't just "worded defensively," it's that a caption exists at all where the visual already speaks for itself. When a caption genuinely adds information the visual can't carry, state it directly and stop — never as a defense of its own authenticity ("this is the real X, not a mockup," "genuinely Y, not staged"). Real, confirmed instance: a compare-slider hero visual already tagged "no skill" / "tastemaker" on the image itself did not need "Same prompt, both times" underneath it — the user flagged the caption twice, first for the defensive wording, then for existing at all, before the fix was to delete it, not further edit it.
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## Generic aesthetic tells (the "AI taste" cluster)
|
|
114
|
+
|
|
115
|
+
The gates above catch process failures: a missing asset, wrong contrast, a wall of text. This group catches something harder. A page can pass every gate and still read as generated, because its visual language is the safe, generic, modern default one-shot output keeps reaching for. Treat these as reflective prompts, not just boxes.
|
|
116
|
+
|
|
117
|
+
51. **Not the same pill eyebrow on every section.** The little rounded label above a heading — often with a leading dot or trailing hairline — is a template signature. Once is fine; the identical treatment on every section is a tell. Vary how section context is signalled, or drop the label where the heading already carries it.
|
|
118
|
+
52. **Semi-brutalist is a deliberate choice, not the reflex.** Hairline borders instead of shadows, flat fills, high-contrast mono, sharp/minimal radius — a legitimate style when it fits the product, a tell when it's the house default applied regardless of mood. Ask whether this aesthetic actually fits *this* product, or whether it's just the safe modern look reached for again.
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Asset Curation
|
|
2
|
+
|
|
3
|
+
Use this before Step 3 on landing pages, visual product sites, galleries, launch pages, and any request where the user expects a premium or artistic result.
|
|
4
|
+
|
|
5
|
+
Good pages do not use assets as decoration. They build a small visual cast, then reuse that cast with changing scale, crop, material, and motion.
|
|
6
|
+
|
|
7
|
+
## The Asset Cast
|
|
8
|
+
|
|
9
|
+
Pick 4-6 asset roles before writing markup:
|
|
10
|
+
|
|
11
|
+
- **Hero anchor:** the main object that proves the product exists. Use a real screenshot, generated hero artwork, product photo, or constructed scene.
|
|
12
|
+
- **Mode range:** 3-5 different visual registers that prove the system can change taste, not just recolor one layout.
|
|
13
|
+
- **Process artifacts:** files, commands, checklists, contrast matrices, logs, receipts, or annotations that explain how the product works.
|
|
14
|
+
- **Human or market proof:** real logos, avatars, demos, repo links, public artifacts, or deployment receipts. Do not invent these.
|
|
15
|
+
- **Texture object:** one tactile element such as paper, stone, fabric, poster, card, device, plant, or stamp to keep the page from feeling purely digital.
|
|
16
|
+
- **Micro assets:** icons, swatches, cursors, arrows, labels, pins, and small crops used to connect the larger pieces.
|
|
17
|
+
|
|
18
|
+
If a page repeats one screenshot family more than twice, add another asset role or crop family. Repetition needs a story reason.
|
|
19
|
+
|
|
20
|
+
## Curation Pass
|
|
21
|
+
|
|
22
|
+
Create a short asset board in `.tastemaker/reference-board.md` or the style lock:
|
|
23
|
+
|
|
24
|
+
```markdown
|
|
25
|
+
## Asset cast
|
|
26
|
+
- Hero anchor:
|
|
27
|
+
- Mode range:
|
|
28
|
+
- Process artifacts:
|
|
29
|
+
- Proof:
|
|
30
|
+
- Texture object:
|
|
31
|
+
- Micro assets:
|
|
32
|
+
- Rejected:
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
For each section, assign one primary asset role. A section with no assigned asset role must be intentionally text-led, such as a manifesto poster.
|
|
36
|
+
|
|
37
|
+
## Composition Patterns
|
|
38
|
+
|
|
39
|
+
Use the bundled artifact kit when the project has no mature design system:
|
|
40
|
+
|
|
41
|
+
- `assets/artifact-kit.css` for artifact boards, proof stacks, mode runways, command strips, swatch rails, and tactile cards.
|
|
42
|
+
- `assets/artifact-kit.js` for GSAP helpers that animate artifact boards, mode cards, pinned ledgers, and parallax proof images.
|
|
43
|
+
|
|
44
|
+
The kit is not a theme. Treat it like composition scaffolding, then map it to the project tokens.
|
|
45
|
+
|
|
46
|
+
Patterns:
|
|
47
|
+
|
|
48
|
+
- **Artifact board:** layered screenshots, notes, swatches, and command blocks around one anchor image.
|
|
49
|
+
- **Mode runway:** overlapping cards that each show a different aesthetic lane.
|
|
50
|
+
- **Process ledger:** dark or calm file cards that explain the system with real paths or commands.
|
|
51
|
+
- **Poster break:** one typographic section with 1-2 tiny image fragments.
|
|
52
|
+
- **Tactile close:** a physical-feeling object or still-life tied to the brand.
|
|
53
|
+
|
|
54
|
+
## Asset Quality Gates
|
|
55
|
+
|
|
56
|
+
- Every important image must have a distinct role. Do not reuse the same poster or screenshot as hero, demo, and proof unless the page is explicitly about that artifact.
|
|
57
|
+
- At least one section must show range: different product category, mode, layout density, or mood.
|
|
58
|
+
- At least one section must show process: files, commands, scans, or decisions.
|
|
59
|
+
- At least one section must show physicality: texture, paper, object, shadow, or material.
|
|
60
|
+
- Motion must belong to assets, not only text. Scroll should move, reveal, pin, scrub, or transform the visual cast.
|
|
61
|
+
- Captures must be local or deploy-safe. If a static site deploys only `site/`, copy needed assets into `site/assets/...`.
|
|
62
|
+
|
|
63
|
+
## When To Add A Component Library
|
|
64
|
+
|
|
65
|
+
For production React or Next apps, prefer a real primitive library for interaction and build the visual kit on top of it:
|
|
66
|
+
|
|
67
|
+
- Radix or shadcn/ui for dialogs, menus, popovers, tabs, selects, sheets, tooltips, and command palettes.
|
|
68
|
+
- Motion or GSAP for choreographed asset movement. Use GSAP for scroll-storytelling landing pages.
|
|
69
|
+
- React Aria for complex accessible components when design needs custom structure.
|
|
70
|
+
|
|
71
|
+
For static marketing pages, do not install a full UI library only for cards. Use `artifact-kit.css` plus GSAP. A heavy component library cannot fix weak asset taste.
|
|
72
|
+
|
|
73
|
+
## Anti-Patterns
|
|
74
|
+
|
|
75
|
+
- A whole page made from the same screenshot repeated in different card sizes.
|
|
76
|
+
- Decorative screenshots that do not teach anything.
|
|
77
|
+
- A mode claim with no visible mode gallery.
|
|
78
|
+
- Motion only on opacity while all assets sit still.
|
|
79
|
+
- Stock assets that could belong to any AI tool.
|
|
80
|
+
- Product claims without visual proof beside them.
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# Component catalog — named archetypes with stable IDs
|
|
2
|
+
|
|
3
|
+
A macrostructure (`references/macrostructures.md`) is the page shape; this file is the **parts inside it**. Each archetype has a stable ID (so builds and the project log can reference it precisely), a one-line shape, a "use when," a "don't confuse with," and a set of **variation knobs** so the *same* archetype built twice is not identical.
|
|
4
|
+
|
|
5
|
+
Two axes of variety, both mandatory:
|
|
6
|
+
|
|
7
|
+
1. **Across pages** — no two consecutive builds (per `.tastemaker/log.json`, see `references/diversification.md`) share the same nav archetype, footer archetype, or hero archetype. Reaching for the mood's *default* on every build is exactly the monoculture this catalog exists to break.
|
|
8
|
+
2. **Within a page** — no two sections use the same archetype (two identical feature blocks read as templated), and if you must reuse an archetype across builds, change at least one knob value.
|
|
9
|
+
|
|
10
|
+
**This catalog is asset-forward on purpose.** tastemaker sources real photos, illustrations, icons, and builds real mockups (Step 3) — so the feature and hero archetypes here *show* (a live-looking UI fragment, a real chart, an annotated capture, a sourced illustration) rather than settling for a heading + two sentences + a decorative icon. That is the show-don't-tell default from `SKILL.md` Step 4, expressed as concrete parts. An archetype that would collapse into a text-wall is marked as such.
|
|
11
|
+
|
|
12
|
+
**Loading discipline:** read this index, pick your archetype IDs, and carry only those forward — you don't need every archetype's detail in context to build one page. A typical page uses one each of Nav / Hero / Footer, one or two Feature, one Proof, one CTA, and a Section-head treatment.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Navigation — `N#`
|
|
17
|
+
|
|
18
|
+
- **N1 · Minimal wordmark** — Wordmark left, at most two text links + one action right. *Use when:* the page genuinely has ≤2 destinations. *Don't confuse with:* N2 (dense SaaS bar). ⚠️ **This is the most-recognized AI nav fingerprint when used reflexively** — reach for it only when the page really is that minimal.
|
|
19
|
+
- **N2 · Balanced product bar** — Wordmark left · a centered cluster of 3-6 links (some with hover panels) · sign-in + filled CTA right. Frosts/blurs on scroll. The dense, deliberate marketing nav. *Use when:* a real product with several destinations. *Default for* premium/technical/warm product sites (in place of the reflexive N1).
|
|
20
|
+
- **N3 · Floating pill** — A rounded, visibly-detached pill sitting a margin off the top, blur backdrop, soft shadow. *Use when:* the hero has a surface/imagery beneath for the blur to sit over; contemporary feel. *Don't confuse with:* N1 (full-width). ⚠️ A pill that's ~95% viewport-wide is just a rounded full-width bar — keep it content-sized.
|
|
21
|
+
- **N4 · Editorial masthead** — Full-width header, larger centered wordmark, a thin issue/date/section line, optional inline link row, a rule beneath. *Use when:* Editorial Index / Manifesto / publication feel. *Mood:* elegant, premium.
|
|
22
|
+
- **N5 · Side rail** — A thin vertical strip on one edge — rotated wordmark + a few section indicators. Collapses to a menu trigger on mobile. *Use when:* portfolio/editorial, or a docs-adjacent page. *Mood:* elegant, technical.
|
|
23
|
+
- **N6 · Command bar / ⌘K** — A visible search pill (or a hidden ⌘K) opening a spotlight of grouped, keyboard-navigable destinations. *Use when:* search/docs-heavy or keyboard-first audiences (dev tools). *Mood:* technical.
|
|
24
|
+
- **N7 · Announcement + retract** — A colored promo banner above one real nav; banner retracts on scroll-down, returns on scroll-up, dismissible. *Use when:* a launch/commerce moment with something genuinely worth announcing. *Mood:* playful, warm, commerce.
|
|
25
|
+
- **Knobs:** *Position* (static · sticky · frost-on-scroll) · *Link density* (2 · 4 · 5-6) · *Action* (filled CTA · outline · text+arrow · none).
|
|
26
|
+
- **Routing (default → also OK):** premium **N2** → N4, N3, N1 · warm **N2** → N7, N3 · technical **N2** → N6, N5, N1 · playful **N7** → N3, N2 · elegant **N4** → N5, N1, N3.
|
|
27
|
+
|
|
28
|
+
## Hero — `H#`
|
|
29
|
+
|
|
30
|
+
- **H1 · Statement fold** — A single bold headline (one promise) fills the fold; one primary action; no feature dump. Typography *is* the visual, or one restrained supporting mark. *Use when:* the brand/promise is the message (Manifesto, Poster Fold, single-voice products). *Don't confuse with:* a text-wall — it's one line done large, not paragraphs.
|
|
31
|
+
- **H2 · Split demo** — Headline + one-line lede + primary CTA on one side; a real product mockup / annotated capture on the other, often tilted 1-3° or clipped by the viewport edge to imply "there's more." *Use when:* a product whose value is obvious once seen (Product Demo, Feature Stack). *Mood:* technical, premium. **Asset-forward:** the mockup is a real capture or a built UI fragment, never a redrawn fake browser bar (see the no-fake-chrome rule below).
|
|
32
|
+
- **H3 · Photographic fold** — One full-bleed sourced photograph carries the fold; headline and caption sit in a corner or below. *Use when:* commerce, food, travel, physical product, brand launch (Gallery Grid, Poster Fold). **Asset-forward:** real Openverse/Pixabay photography from Step 3, never an invented stock look.
|
|
33
|
+
- **H4 · Stat hero** — A giant real number (with a short qualifier line that says what it means) anchors the fold. *Use when:* Stat-Led, and the figure is real. *Never* a bare number with no words, and *never* an invented metric.
|
|
34
|
+
- **H5 · Illustration centerpiece** — A single sourced-and-recolored `ideagram`/unDraw illustration (or a Tier-A CSS/Tier-B SVG build) sits as the hero's one illustrative element, recolored to the locked accent. *Use when:* an abstract/concept-led product (warm, wellness, community), or a bakery/studio/atelier brief. *Mood:* warm, playful, elegant.
|
|
35
|
+
- **H6 · Letter / first-person** — Opens like personal correspondence ("Dear reader,"), no buttons in the fold, reads as a piece of writing. *Use when:* Long-Scroll Narrative, founder-voice, community. *Mood:* warm, elegant.
|
|
36
|
+
- **Knobs:** *Display size* (xl · xxl) · *Alignment* (left-bias · centered · right-bias — never all four of eyebrow/headline/lede/CTA stacked on one centered axis) · *Support* (none/typographic · real mockup · photo · illustration · stat).
|
|
37
|
+
- **Governing rule:** every hero obeys `references/hero-guidelines.md` — one job, one visual focus, headline sized to word count, line-height above its clipping floor, fits the fold at 1280×800.
|
|
38
|
+
|
|
39
|
+
## Feature / showcase — `F#`
|
|
40
|
+
|
|
41
|
+
- **F1 · Alternating bands** — Each feature is a full-width band, text and a real visual alternating sides down the scroll. *Use when:* 3-6 features that each deserve a real mockup/chart/diagram. *Don't confuse with:* a 3-up card grid (the generic tell). **Asset-forward:** every band's visual is real, not a paragraph with an icon.
|
|
42
|
+
- **F2 · Bento tiles** — Asymmetric grid of mixed-span tiles, each a small live-looking UI fragment or a stat or a mini-visual. *Use when:* many small features better shown-at-a-glance than sequenced. *Knob:* tiles (4·6·9), spans (regular·irregular·mosaic), border (hairline·accent-corner·none).
|
|
43
|
+
- **F3 · Sticky scroll stack** — A pinned pane (the running visual) beside a scrolling column of steps that swaps the visual as you pass each step. *Use when:* a workflow or a multi-part product told in sequence. *Mood:* technical, premium.
|
|
44
|
+
- **F4 · Numbered step sequence** — Ordered stages (1 → 2 → 3) flow down the page, each with a heading, a short line, and a small real visual. *Use when:* onboarding, "how it works," a process. **Not** a bulleted list — each step shows a state.
|
|
45
|
+
- **F5 · Annotated capture** — One real product capture centre-stage with numbered pins / margin labels pointing at real UI detail. *Use when:* one screen carries most of the value and the detail is the story. **Asset-forward:** a real capture, real annotations.
|
|
46
|
+
- **F6 · Spec sheet** — Each row is a feature; hairline rules, tabular figures, editorial restraint. *Use when:* spec-heavy/technical products, comparisons, Catalogue. *Mood:* technical, elegant.
|
|
47
|
+
- **F7 · Product card grid** — Each card is a real product (image · name · price · one micro-action), reads like a shop floor. *Use when:* commerce (Gallery Grid, Catalogue). **Asset-forward:** real product photography.
|
|
48
|
+
- **Knobs (cross-cutting):** *Visual source* (mockup · chart · photo · illustration · diagram) · *Density* · *Rhythm* (even · irregular).
|
|
49
|
+
|
|
50
|
+
## Proof — `P#`
|
|
51
|
+
|
|
52
|
+
(All bind the honesty rule: real logos, real quotes, real numbers, or an honest placeholder — never invented.)
|
|
53
|
+
|
|
54
|
+
- **P1 · Logo wall (hairline)** — A monochrome row/grid of real customer logos separated by hairlines, no card boxes. *Use when:* credibility is a real conversion blocker and the logos are real.
|
|
55
|
+
- **P2 · Pull-quote with marginalia** — One real testimonial in the wide column; attribution + source in the narrow margin. *Use when:* one strong, real quote carries more than five weak ones.
|
|
56
|
+
- **P3 · Single huge quote** — One real quote set big, a small-caps attribution beneath, a whole section. *Mood:* elegant, warm.
|
|
57
|
+
- **P4 · Stat strip** — A horizontal row of 3-5 real metrics (figure + qualifier), tabular figures. *Use when:* the numbers are real and worth a dedicated band.
|
|
58
|
+
- **Knob:** treatment (row · grid · single) · figure weight · attribution position.
|
|
59
|
+
|
|
60
|
+
## CTA — `C#`
|
|
61
|
+
|
|
62
|
+
- **C1 · Inline form** — The CTA *is* the form (one email input + "Submit →"), no separate landing. *Use when:* newsletter/waitlist/signup is the one action. *Mood:* warm, technical, playful.
|
|
63
|
+
- **C2 · Statement + action** — One large closing line (not a sitemap) with a single primary action beneath. *Use when:* Long-Scroll/Manifesto closes. *Mood:* any.
|
|
64
|
+
- **C3 · Typographic link** — Just a word, an arrow, a 1px underline — no box. *Use when:* editorial/minimal pages where a heavy button would break the voice. *Mood:* elegant, premium.
|
|
65
|
+
- **C4 · Sticky bottom bar** — A pinned bar holding a CTA + a one-line reassurance. *Use when:* a long page where the action should stay reachable. *Knob:* reveal (always · scroll-up · after-fold).
|
|
66
|
+
|
|
67
|
+
## Footer — `Ft#`
|
|
68
|
+
|
|
69
|
+
- **Ft1 · Masthead** — Wordmark + tagline anchor one band; a few links, address/license beneath. *Default for* editorial/premium.
|
|
70
|
+
- **Ft2 · Inline single line** — One horizontal line of credits/address/copyright, hairline above, no columns. *Default for* modern-minimal/technical.
|
|
71
|
+
- **Ft3 · Index columns** — 3-4 short link columns under small-caps headings. ⚠️ **The 4-column Product/Company/Resources/Legal + social-row footer is an AI fingerprint when used reflexively** — reach for it only on a genuine docs root or hub.
|
|
72
|
+
- **Ft4 · Statement close** — One large display sentence dominates (a closing line, not a sitemap); wordmark + minimal links beneath in muted type. *Mood:* atmospheric/premium.
|
|
73
|
+
- **Ft5 · Newsletter-first** — The signup form is the primary footer element; everything else is small muted type beneath. *Use when:* audience-building is a real goal.
|
|
74
|
+
- **Ft6 · Marquee** — A horizontal infinite-scroll tagline line. *Mood:* playful, brand-forward.
|
|
75
|
+
- **Knobs:** wordmark size · separator style · link density.
|
|
76
|
+
- **Routing (default → also OK):** premium/elegant **Ft1** → Ft4, Ft2 · technical/minimal **Ft2** → Ft1, Ft5 · playful **Ft6** → Ft4, Ft5 · commerce **Ft5** → Ft3, Ft2.
|
|
77
|
+
|
|
78
|
+
## Section heads — `S#`
|
|
79
|
+
|
|
80
|
+
How a section announces itself (a quieter axis, but repeating the same treatment down a page is its own tell):
|
|
81
|
+
|
|
82
|
+
- **S1 · Hanging** — Heading floats in negative space above the section; no rule, no eyebrow.
|
|
83
|
+
- **S2 · Inline** — A small-caps phrase emerges inside the body flow; no spatial break.
|
|
84
|
+
- **S3 · Sticky pinned** — Heading stays in view while its content scrolls beneath (orientation aid for long sections).
|
|
85
|
+
- **S4 · Stacked eyebrow** — An eyebrow/label sits **directly above** the heading, same column, vertical stack only.
|
|
86
|
+
- ⚠️ **Banned: the eyebrow-left / heading-right two-column head** (`01 · THE TOUR` in a left column beside the heading). It is the single most reliable templated-editorial tell. When an eyebrow is used at all (default OFF — most sections don't need one), stack it above the heading in one column. Cap eyebrows at 1-2 per page.
|
|
87
|
+
- ⚠️ **A section headline is not the hero — cap its size well below it.** The hero sizing discipline in `references/hero-guidelines.md` only governs `.hero h1`; nothing else on the page stops a section headline from reaching that same scale, and real output has shown a mid-page headline (e.g. "One failed retry budget becomes a clear product decision.") rendering at room-filling size in a scroll-storytelling section. As a working ceiling: a section headline should render at roughly **50-65% of the hero's full display size** (the size the hero's own 6-8 word band uses at the top of its `clamp()` range) — enough to read as a clear signpost for that section's content, never enough to compete with the hero for dominance. It should also comfortably read in 1-2 lines regardless of word count; if it's stacking one word per line, the size is wrong for the container, same failure as an oversized hero headline. A Long-Scroll Narrative or Manifesto macrostructure that wants one deliberately large mid-page statement (per `references/macrostructures.md`) is the one exception — and it should be a single stated moment on the page, not the default treatment repeated at every section head.
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Cross-cutting build rules (bind every archetype)
|
|
92
|
+
|
|
93
|
+
- **No fake chrome.** Never hand-build a fake browser bar (URL pill + traffic-light dots), fake phone frame, fake code-window, or fake IDE chrome. Use a real screenshot in a `<figure>` (hairline border at most), or omit the chrome. Redrawn chrome is a strong AI tell — the model invented UI the environment already supplies.
|
|
94
|
+
- **One icon family per page.** Never mix two icon libraries on one page, and never use an emoji (✨🚀⚡🔥🎯✅) as a feature/step/value icon. Use the mood's fetched Iconify set (`scripts/fetch_icons.py`), a built SVG, or drop the icon and lead with the visual.
|
|
95
|
+
- **Asset-forward, not text-wall.** If an F-archetype ends up as heading + two sentences + a decorative icon, it failed — swap in the real mockup/chart/illustration/photo the archetype calls for (Step 3 sourced them). This is the show-don't-tell default made concrete.
|
|
96
|
+
- **State every archetype's picks out loud** before building, and stamp them (see `references/diversification.md`): *"Nav: N2. Hero: H2 (split demo, real mockup, left-bias). Features: F1 alternating bands. Proof: P1 logo wall. CTA: C2 statement. Footer: Ft1 masthead."*
|
|
97
|
+
- **Mobile:** every archetype collapses to a single column below ~60rem and steps display type down below ~40rem; hit targets ≥44px; no two-line clickable text; no horizontal scroll. See `references/component-patterns.md` and `references/hero-guidelines.md` for the per-type collapse behavior.
|