@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,128 @@
|
|
|
1
|
+
# Burn-rate alerting and on-call
|
|
2
|
+
|
|
3
|
+
The full math behind the SLO table in SKILL.md, plus copy-paste alert rules, escalation, and a runbook template.
|
|
4
|
+
|
|
5
|
+
## What "burn rate" means
|
|
6
|
+
|
|
7
|
+
Pick an SLO, e.g. **99.9% availability over 30 days**. The **error budget** is the allowed bad fraction: `1 - 0.999 = 0.1%` of requests over the month.
|
|
8
|
+
|
|
9
|
+
**Burn rate = how many times faster than "even" you are spending that budget.**
|
|
10
|
+
|
|
11
|
+
- Burn rate `1` = you'd exactly exhaust the 30-day budget in 30 days. Fine.
|
|
12
|
+
- Burn rate `14.4` = you'd exhaust the *entire month's* budget in `30d / 14.4 ≈ 2h`. Page now.
|
|
13
|
+
|
|
14
|
+
Why 14.4: it is the rate that burns **2% of the monthly budget in 1 hour** — the Google SRE workbook's recommended fast-burn page threshold. The other rows: **6×** burns ~5% in 6h (ticket), **1×** burns ~10% in 3d (slow review).
|
|
15
|
+
|
|
16
|
+
## Why two windows
|
|
17
|
+
|
|
18
|
+
A single window either pages on a momentary spike (short window alone) or reacts too slowly (long window alone). **Require a long AND a short window to both exceed the burn threshold:**
|
|
19
|
+
|
|
20
|
+
- The **long window** confirms the burn is sustained ("this is real").
|
|
21
|
+
- The **short window** confirms it's still happening right now ("don't page me for an outage that already ended"). It also gives fast reset once you recover.
|
|
22
|
+
|
|
23
|
+
This combination is what kills false positives.
|
|
24
|
+
|
|
25
|
+
## Prometheus-style alert rule
|
|
26
|
+
|
|
27
|
+
Symptom-based, two windows, with a `runbook_url` annotation. Adjust `job`/`code` to your metric names.
|
|
28
|
+
|
|
29
|
+
```yaml
|
|
30
|
+
groups:
|
|
31
|
+
- name: slo-burn-rate
|
|
32
|
+
rules:
|
|
33
|
+
# CRITICAL — page. Fast burn: 14.4x over 1h, confirmed by a 5m short window.
|
|
34
|
+
- alert: CheckoutErrorBudgetFastBurn
|
|
35
|
+
expr: |
|
|
36
|
+
(
|
|
37
|
+
sum(rate(http_requests_total{job="checkout",code=~"5.."}[1h]))
|
|
38
|
+
/ sum(rate(http_requests_total{job="checkout"}[1h]))
|
|
39
|
+
) > (14.4 * 0.001)
|
|
40
|
+
and
|
|
41
|
+
(
|
|
42
|
+
sum(rate(http_requests_total{job="checkout",code=~"5.."}[5m]))
|
|
43
|
+
/ sum(rate(http_requests_total{job="checkout"}[5m]))
|
|
44
|
+
) > (14.4 * 0.001)
|
|
45
|
+
labels:
|
|
46
|
+
severity: critical # routes to page
|
|
47
|
+
annotations:
|
|
48
|
+
summary: "Checkout burning error budget 14.4x (1h+5m)"
|
|
49
|
+
runbook_url: "https://wiki.example.com/runbooks/checkout-5xx"
|
|
50
|
+
|
|
51
|
+
# WARNING — ticket. Slower burn: 6x over 6h, confirmed by a 30m short window.
|
|
52
|
+
- alert: CheckoutErrorBudgetSlowBurn
|
|
53
|
+
expr: |
|
|
54
|
+
(
|
|
55
|
+
sum(rate(http_requests_total{job="checkout",code=~"5.."}[6h]))
|
|
56
|
+
/ sum(rate(http_requests_total{job="checkout"}[6h]))
|
|
57
|
+
) > (6 * 0.001)
|
|
58
|
+
and
|
|
59
|
+
(
|
|
60
|
+
sum(rate(http_requests_total{job="checkout",code=~"5.."}[30m]))
|
|
61
|
+
/ sum(rate(http_requests_total{job="checkout"}[30m]))
|
|
62
|
+
) > (6 * 0.001)
|
|
63
|
+
labels:
|
|
64
|
+
severity: warning # routes to ticket
|
|
65
|
+
annotations:
|
|
66
|
+
summary: "Checkout slow error-budget burn (6h+30m)"
|
|
67
|
+
runbook_url: "https://wiki.example.com/runbooks/checkout-5xx"
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Note: every alert carries `runbook_url`, and the rule is a *ratio* (symptom), never a bare `cpu`/`memory` threshold.
|
|
71
|
+
|
|
72
|
+
## Severity → routing
|
|
73
|
+
|
|
74
|
+
| Label | Where it goes | Who acts | When |
|
|
75
|
+
|---|---|---|---|
|
|
76
|
+
| `critical` | PagerDuty/Better Stack page → escalation policy | on-call, now | immediately, any hour |
|
|
77
|
+
| `warning` | ticket queue / Slack channel | team | next business hours |
|
|
78
|
+
| `info` | dashboard / weekly review | nobody paged | retro |
|
|
79
|
+
|
|
80
|
+
## Escalation policy (sample)
|
|
81
|
+
|
|
82
|
+
```yaml
|
|
83
|
+
# Vendor-agnostic shape — maps to PagerDuty / incident.io / Better Stack.
|
|
84
|
+
escalation_policy:
|
|
85
|
+
name: checkout-oncall
|
|
86
|
+
on_call:
|
|
87
|
+
primary: "@oncall-primary" # weekly rotation
|
|
88
|
+
secondary: "@oncall-secondary" # weekly rotation, offset
|
|
89
|
+
steps:
|
|
90
|
+
- notify: primary
|
|
91
|
+
ack_timeout_minutes: 10 # no ack -> escalate
|
|
92
|
+
- notify: secondary
|
|
93
|
+
ack_timeout_minutes: 10
|
|
94
|
+
- notify: "@eng-manager"
|
|
95
|
+
repeat_until_acked: true
|
|
96
|
+
resolve_notifies: true # send the all-clear too
|
|
97
|
+
# Do NOT build this on Opsgenie (EOL 2027-04-05) or Grafana OnCall OSS (deprecated).
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Runbook template
|
|
101
|
+
|
|
102
|
+
Every alert's `runbook_url` points to one of these. Fill it in before the alert ships, not at 3am.
|
|
103
|
+
|
|
104
|
+
```markdown
|
|
105
|
+
# Runbook: <alert name>
|
|
106
|
+
|
|
107
|
+
## Symptom
|
|
108
|
+
What the alert literally measures (e.g. "checkout 5xx ratio > 14.4x SLO burn, 1h+5m").
|
|
109
|
+
|
|
110
|
+
## Impact
|
|
111
|
+
What the user experiences (e.g. "checkout failing → lost revenue, ~X orders/min").
|
|
112
|
+
|
|
113
|
+
## First 3 checks
|
|
114
|
+
1. Dashboard link: <url> — is it errors or latency?
|
|
115
|
+
2. Recent deploys: <link> — did we ship in the last 30 min? Consider rollback (see ../deployment/SKILL.md).
|
|
116
|
+
3. Dependency status: DB / cache / payment provider status pages.
|
|
117
|
+
|
|
118
|
+
## Mitigation
|
|
119
|
+
- Fastest safe action (rollback / feature-flag off / scale out — see ../scaling/SKILL.md).
|
|
120
|
+
- Holding action if root cause unknown (drain region, enable degraded mode).
|
|
121
|
+
|
|
122
|
+
## Escalation
|
|
123
|
+
- If not mitigated in 15 min, page secondary and open an incident.
|
|
124
|
+
- Post to the public status page; notify #incidents.
|
|
125
|
+
|
|
126
|
+
## Dashboards
|
|
127
|
+
- <links to the relevant observability dashboards — see ../observability/SKILL.md>
|
|
128
|
+
```
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
# Tool setup
|
|
2
|
+
|
|
3
|
+
Concrete, copy-pasteable configs. Pricing/versions as of 2026-06.
|
|
4
|
+
|
|
5
|
+
## Uptime Kuma (self-hosted, free)
|
|
6
|
+
|
|
7
|
+
`docker-compose.yml` — rootless image, persistent volume, single port.
|
|
8
|
+
|
|
9
|
+
```yaml
|
|
10
|
+
services:
|
|
11
|
+
uptime-kuma:
|
|
12
|
+
image: louislam/uptime-kuma:2.1.3-rootless
|
|
13
|
+
container_name: uptime-kuma
|
|
14
|
+
restart: unless-stopped
|
|
15
|
+
volumes:
|
|
16
|
+
- kuma-data:/app/data
|
|
17
|
+
ports:
|
|
18
|
+
- "3001:3001"
|
|
19
|
+
volumes:
|
|
20
|
+
kuma-data:
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
docker compose up -d
|
|
25
|
+
# open http://your-vps:3001, create the admin user on first load,
|
|
26
|
+
# then put it behind your reverse proxy with TLS (do not expose 3001 raw).
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Monitors to add (Kuma calls them "Monitor type"):
|
|
30
|
+
|
|
31
|
+
- **HTTP(s)** on your critical endpoint — set "Accepted status codes" to `200-299`, interval 60s, retries 3, and enable **Globalping** (Kuma 2.1) to probe from multiple regions instead of just the box.
|
|
32
|
+
- **HTTP(s) – Keyword** to assert a string in the body (e.g. a logged-in marker), so a 200 that renders an error page still alerts.
|
|
33
|
+
- **Push** (heartbeat) for a cron/worker: the job `curl`s a Kuma push URL each run; if the beat is missed, Kuma pages. This catches *silent* batch failures.
|
|
34
|
+
- **TLS expiry**: enable "Certificate Expiry Notification" on the HTTP monitor; notify at 14 days.
|
|
35
|
+
- **Domain expiry**: Kuma 2.1 has a domain-expiry monitor type; notify at 30 days.
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
# Push-heartbeat from a cron job — alert fires if this stops arriving.
|
|
39
|
+
*/5 * * * * /usr/bin/curl -fsS "https://kuma.example.com/api/push/AbC123?status=up&msg=ok" >/dev/null
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Notification wiring
|
|
43
|
+
|
|
44
|
+
Kuma has 90+ channels; here are the three you actually use.
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
# ntfy — dead-simple push to your phone, self-hostable, free.
|
|
48
|
+
# In Kuma: Settings → Notifications → ntfy. Server https://ntfy.sh, topic = a long random string.
|
|
49
|
+
curl -d "checkout 5xx > 2%" ntfy.sh/your-long-random-topic # test it lands
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
```json
|
|
53
|
+
// Slack incoming webhook — paste the webhook URL into Kuma's Slack notification.
|
|
54
|
+
{ "text": "🔴 [PAGE] checkout error rate 4.1% (>2% for 5m) — runbook: https://wiki/runbooks/checkout-5xx" }
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
```text
|
|
58
|
+
# PagerDuty — use Events API v2. In PagerDuty create a service → integration
|
|
59
|
+
# "Events API v2" → copy the Integration Key (routing key) into Kuma's PagerDuty
|
|
60
|
+
# notification. Critical severity routes to the on-call escalation policy.
|
|
61
|
+
Integration Key: R0UT1NGK3Yxxxxxxxxxxxxxxxxxxxxxxx
|
|
62
|
+
Severity: critical # so it pages, not just logs
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Managed alternative — monitor config shape
|
|
66
|
+
|
|
67
|
+
UptimeRobot / Better Stack store this server-side; the shape you reason about:
|
|
68
|
+
|
|
69
|
+
```json
|
|
70
|
+
{
|
|
71
|
+
"type": "http",
|
|
72
|
+
"url": "https://api.example.com/readyz",
|
|
73
|
+
"method": "GET",
|
|
74
|
+
"expected_status": 200,
|
|
75
|
+
"interval_seconds": 60,
|
|
76
|
+
"regions": ["eu", "us-east", "ap"],
|
|
77
|
+
"assertions": [
|
|
78
|
+
{ "type": "status_code", "comparison": "equals", "target": 200 },
|
|
79
|
+
{ "type": "response_time", "comparison": "less_than", "target_ms": 800 },
|
|
80
|
+
{ "type": "body", "comparison": "contains", "target": "\"status\":\"ready\"" }
|
|
81
|
+
],
|
|
82
|
+
"ssl_expiry_alert_days": 14,
|
|
83
|
+
"domain_expiry_alert_days": 30,
|
|
84
|
+
"on_failure": { "after_failures": 2, "notify": ["pagerduty-critical"] }
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Synthetic critical-journey check
|
|
89
|
+
|
|
90
|
+
Not just `GET /` — exercise the path that earns money. Shape of a multi-step synthetic:
|
|
91
|
+
|
|
92
|
+
```yaml
|
|
93
|
+
# synthetic: login -> add to cart -> checkout. Run every 5 min from 2+ regions.
|
|
94
|
+
name: checkout-journey
|
|
95
|
+
steps:
|
|
96
|
+
- POST /api/login { body: { user: "$SYNTH_USER", pass: "$SYNTH_PASS" }, expect: 200 }
|
|
97
|
+
- POST /api/cart { body: { sku: "TEST-SKU", qty: 1 }, expect: 200, save: cart_id }
|
|
98
|
+
- POST /api/checkout { body: { cart: "$cart_id", token: "tok_test" }, expect: 200 }
|
|
99
|
+
assert:
|
|
100
|
+
- total_duration_ms < 4000
|
|
101
|
+
on_fail: page # this is real user impact
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## Health-endpoint handlers
|
|
105
|
+
|
|
106
|
+
### FastAPI (Python)
|
|
107
|
+
|
|
108
|
+
```python
|
|
109
|
+
from fastapi import FastAPI
|
|
110
|
+
from fastapi.responses import JSONResponse
|
|
111
|
+
|
|
112
|
+
app = FastAPI()
|
|
113
|
+
|
|
114
|
+
@app.get("/livez") # liveness: process only. Orchestrator restarts on fail.
|
|
115
|
+
def livez():
|
|
116
|
+
return {"status": "alive"}
|
|
117
|
+
|
|
118
|
+
@app.get("/readyz") # readiness: deps with short timeouts. LB pulls instance on fail.
|
|
119
|
+
async def readyz():
|
|
120
|
+
checks = {
|
|
121
|
+
"db": await ping_db(timeout=0.2),
|
|
122
|
+
"cache": await ping_cache(timeout=0.1),
|
|
123
|
+
}
|
|
124
|
+
ready = all(checks.values())
|
|
125
|
+
return JSONResponse(
|
|
126
|
+
{"status": "ready" if ready else "degraded", "checks": checks},
|
|
127
|
+
status_code=200 if ready else 503,
|
|
128
|
+
)
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### Go
|
|
132
|
+
|
|
133
|
+
```go
|
|
134
|
+
// Liveness: process only, ~instant. Never touch the DB here.
|
|
135
|
+
http.HandleFunc("/livez", func(w http.ResponseWriter, r *http.Request) {
|
|
136
|
+
w.Header().Set("Content-Type", "application/json")
|
|
137
|
+
w.WriteHeader(http.StatusOK)
|
|
138
|
+
_, _ = w.Write([]byte(`{"status":"alive"}`))
|
|
139
|
+
})
|
|
140
|
+
|
|
141
|
+
// Readiness: deps with a tight deadline so the probe stays cheap (<100ms).
|
|
142
|
+
http.HandleFunc("/readyz", func(w http.ResponseWriter, r *http.Request) {
|
|
143
|
+
ctx, cancel := context.WithTimeout(r.Context(), 200*time.Millisecond)
|
|
144
|
+
defer cancel()
|
|
145
|
+
w.Header().Set("Content-Type", "application/json")
|
|
146
|
+
if err := db.PingContext(ctx); err != nil {
|
|
147
|
+
w.WriteHeader(http.StatusServiceUnavailable) // 503 -> LB pulls this instance
|
|
148
|
+
_, _ = w.Write([]byte(`{"status":"degraded","checks":{"db":false}}`))
|
|
149
|
+
return
|
|
150
|
+
}
|
|
151
|
+
w.WriteHeader(http.StatusOK)
|
|
152
|
+
_, _ = w.Write([]byte(`{"status":"ready","checks":{"db":true}}`))
|
|
153
|
+
})
|
|
154
|
+
```
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# verify.sh — monitoring config sanity gate. Read-only. Run inside YOUR project or
|
|
3
|
+
# point it at a monitoring config/spec dir or file. CI runs the same file (parity).
|
|
4
|
+
#
|
|
5
|
+
# Usage:
|
|
6
|
+
# bash scripts/verify.sh [PATH] # PATH defaults to "."
|
|
7
|
+
#
|
|
8
|
+
# What it checks, against the load-bearing rules of the monitoring skill:
|
|
9
|
+
# 1. Discover candidate monitoring files (alert rules, health specs, monitor configs).
|
|
10
|
+
# No candidates -> nothing to gate -> exit 0 (clean target is never a failure).
|
|
11
|
+
# 2. Health endpoints separate liveness from readiness (livez/liveness AND readyz/readiness).
|
|
12
|
+
# 3. At least one alert is symptom/SLO/burn-rate based with TWO windows — FAIL only if
|
|
13
|
+
# alert rules exist and the ONLY thresholds are bare cpu/memory.
|
|
14
|
+
# 4. Every alert block carries a runbook reference (runbook / runbook_url).
|
|
15
|
+
# 5. Banlist: Opsgenie introduced as a NEW setup; a monitor whose only target is "/".
|
|
16
|
+
#
|
|
17
|
+
# Dependency-light: bash + grep + find only. Portable to macOS bash 3.2 and CI bash 5.
|
|
18
|
+
# Read-only: never writes, never mutates. Exits nonzero only on a real FAIL.
|
|
19
|
+
#
|
|
20
|
+
# Env: NO_COLOR=1 to disable color.
|
|
21
|
+
set -euo pipefail
|
|
22
|
+
|
|
23
|
+
TARGET="${1:-.}"
|
|
24
|
+
|
|
25
|
+
if [[ -n "${NO_COLOR:-}" ]]; then YEL=""; GRN=""; RED=""; RST=""
|
|
26
|
+
else YEL=$'\033[33m'; GRN=$'\033[32m'; RED=$'\033[31m'; RST=$'\033[0m'; fi
|
|
27
|
+
ok() { printf '%sPASS:%s %s\n' "$GRN" "$RST" "$*"; }
|
|
28
|
+
fail() { printf '%sFAIL:%s %s\n' "$RED" "$RST" "$*"; }
|
|
29
|
+
skip() { printf '%sSKIP:%s %s\n' "$YEL" "$RST" "$*"; }
|
|
30
|
+
|
|
31
|
+
FAILED=0
|
|
32
|
+
|
|
33
|
+
# 1. discover candidate files. bash-3.2-safe (no mapfile); NUL-delimited for spaces.
|
|
34
|
+
FILES=()
|
|
35
|
+
if [[ -f "$TARGET" ]]; then
|
|
36
|
+
FILES+=("$TARGET")
|
|
37
|
+
elif [[ -d "$TARGET" ]]; then
|
|
38
|
+
while IFS= read -r -d '' f; do
|
|
39
|
+
FILES+=("$f")
|
|
40
|
+
done < <(find "$TARGET" \
|
|
41
|
+
\( -path '*/node_modules/*' -o -path '*/.git/*' -o -path '*/vendor/*' \) -prune \
|
|
42
|
+
-o -type f \( -name '*.yml' -o -name '*.yaml' -o -name '*.json' \
|
|
43
|
+
-o -name '*.rules' -o -name '*.conf' -o -name '*.md' \) -print0 2>/dev/null)
|
|
44
|
+
else
|
|
45
|
+
skip "target not found: $TARGET — nothing to gate"; exit 0
|
|
46
|
+
fi
|
|
47
|
+
|
|
48
|
+
# Keep only files that look like monitoring artifacts (alerts/health/monitors).
|
|
49
|
+
CAND=()
|
|
50
|
+
for f in ${FILES[@]+"${FILES[@]}"}; do
|
|
51
|
+
if grep -liE 'alert|burn[_-]?rate|livez|readyz|liveness|readiness|monitor|uptime|escalation|runbook' "$f" >/dev/null 2>&1; then
|
|
52
|
+
CAND+=("$f")
|
|
53
|
+
fi
|
|
54
|
+
done
|
|
55
|
+
|
|
56
|
+
if [[ ${#CAND[@]} -eq 0 ]]; then
|
|
57
|
+
printf 'No monitoring config/spec files found under %s — nothing to gate.\n' "$TARGET"
|
|
58
|
+
exit 0
|
|
59
|
+
fi
|
|
60
|
+
|
|
61
|
+
# Build a single haystack of the candidate contents for cross-file checks.
|
|
62
|
+
HAY="$(cat ${CAND[@]+"${CAND[@]}"} 2>/dev/null || true)"
|
|
63
|
+
|
|
64
|
+
# Helpers (case-insensitive grep against the haystack).
|
|
65
|
+
has() { printf '%s' "$HAY" | grep -qiE "$1"; }
|
|
66
|
+
|
|
67
|
+
# 2. liveness vs readiness — only meaningful if a health spec is present at all.
|
|
68
|
+
if printf '%s' "$HAY" | grep -qiE 'livez|liveness|readyz|readiness|health'; then
|
|
69
|
+
if has 'livez|liveness' && has 'readyz|readiness'; then
|
|
70
|
+
ok "health spec separates liveness from readiness"
|
|
71
|
+
else
|
|
72
|
+
fail "health spec does not separate liveness (/livez) from readiness (/readyz)"
|
|
73
|
+
FAILED=1
|
|
74
|
+
fi
|
|
75
|
+
else
|
|
76
|
+
skip "no health-endpoint spec present — liveness/readiness check not applicable"
|
|
77
|
+
fi
|
|
78
|
+
|
|
79
|
+
# 3. symptom/SLO/burn-rate alert with two windows.
|
|
80
|
+
if has 'alert|expr|burn|rate\(|error[_ ]?rate|severity'; then
|
|
81
|
+
TWO_WINDOW=0
|
|
82
|
+
# burn-rate keyword, or an explicit long+short pairing of distinct time windows.
|
|
83
|
+
if has 'burn[_-]?rate|multi[_-]?window'; then TWO_WINDOW=1; fi
|
|
84
|
+
if printf '%s' "$HAY" | grep -qE '\[(1h|6h|3d|24h)\]' \
|
|
85
|
+
&& printf '%s' "$HAY" | grep -qE '\[(5m|30m|6h)\]'; then TWO_WINDOW=1; fi
|
|
86
|
+
if has '(long|short)[ _-]?window'; then TWO_WINDOW=1; fi
|
|
87
|
+
|
|
88
|
+
# Are the ONLY thresholds bare cpu/memory? (cause-based, no symptom alert).
|
|
89
|
+
ONLY_CAUSE=0
|
|
90
|
+
if has 'cpu|memory|mem_usage|load average' \
|
|
91
|
+
&& ! has 'error[_ ]?rate|5\.\.|5xx|latency|p9[59]|burn|availability|uptime'; then
|
|
92
|
+
ONLY_CAUSE=1
|
|
93
|
+
fi
|
|
94
|
+
|
|
95
|
+
if [[ $ONLY_CAUSE -eq 1 ]]; then
|
|
96
|
+
fail "only cause-based thresholds found (cpu/memory) — add a symptom/SLO alert"
|
|
97
|
+
FAILED=1
|
|
98
|
+
elif [[ $TWO_WINDOW -eq 1 ]]; then
|
|
99
|
+
ok "symptom/SLO alert with two windows (burn-rate or long+short) present"
|
|
100
|
+
else
|
|
101
|
+
fail "alert present but no two-window/burn-rate symptom alert — single-window 'by vibes'"
|
|
102
|
+
FAILED=1
|
|
103
|
+
fi
|
|
104
|
+
|
|
105
|
+
# 4. runbook reference on alerts.
|
|
106
|
+
if has 'runbook'; then
|
|
107
|
+
ok "alerts reference a runbook"
|
|
108
|
+
else
|
|
109
|
+
fail "alert rules carry no runbook/runbook_url reference"
|
|
110
|
+
FAILED=1
|
|
111
|
+
fi
|
|
112
|
+
else
|
|
113
|
+
skip "no alert rules present — alert/runbook checks not applicable"
|
|
114
|
+
fi
|
|
115
|
+
|
|
116
|
+
# 5a. banlist — Opsgenie as a NEW setup (EOL 2027-04-05).
|
|
117
|
+
# Allow mentions that are clearly a do-NOT note; flag a bare adoption.
|
|
118
|
+
if has 'opsgenie'; then
|
|
119
|
+
if printf '%s' "$HAY" | grep -iE 'opsgenie' | grep -qiE "do not|don't|deprecat|eol|retir|avoid|instead of|not start|no usar|migrat"; then
|
|
120
|
+
ok "opsgenie referenced only as a do-not/deprecation note"
|
|
121
|
+
else
|
|
122
|
+
fail "opsgenie configured as a new setup — it is EOL 2027-04-05; use PagerDuty/incident.io/Better Stack/Grafana Cloud IRM"
|
|
123
|
+
FAILED=1
|
|
124
|
+
fi
|
|
125
|
+
fi
|
|
126
|
+
|
|
127
|
+
# 5b. banlist — a monitor whose only target is the homepage "/".
|
|
128
|
+
# Flag url:"/" or path "/" used as a probe target with no critical-journey/readyz target.
|
|
129
|
+
if printf '%s' "$HAY" | grep -qE '(url|path|target|target_url)["'"'"' :]+["'"'"']?/["'"'"']?\s*$' \
|
|
130
|
+
|| printf '%s' "$HAY" | grep -qE '(url|path|target)["'"'"' :]+["'"'"']/["'"'"']'; then
|
|
131
|
+
if has 'readyz|/api/|journey|checkout|login|critical'; then
|
|
132
|
+
ok "homepage probe present but a deeper/critical-journey target also configured"
|
|
133
|
+
else
|
|
134
|
+
fail "monitor target appears to be homepage '/' only — probe the critical user journey, not just /"
|
|
135
|
+
FAILED=1
|
|
136
|
+
fi
|
|
137
|
+
fi
|
|
138
|
+
|
|
139
|
+
# summary
|
|
140
|
+
if [[ $FAILED -eq 0 ]]; then
|
|
141
|
+
ok "all monitoring checks passed (skips are not failures)"
|
|
142
|
+
else
|
|
143
|
+
fail "one or more monitoring checks failed"
|
|
144
|
+
fi
|
|
145
|
+
exit "$FAILED"
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: motion-craft
|
|
3
|
+
description: "Use when an interface moves and the movement has to feel right — durations and easing, what must never animate, fixing motion that reads sluggish, cheap or janky, and reduced-motion. Web and native. NOT the visual system (that is `design`), NOT the graded critique (that is `design-loop`)."
|
|
4
|
+
tags: [motion, animation, interface, craft, frontend]
|
|
5
|
+
recommends: [design]
|
|
6
|
+
profiles: [full]
|
|
7
|
+
origin: risco
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Motion craft — movement that reads as intent
|
|
11
|
+
|
|
12
|
+
Motion is not decoration laid over an interface. It is the interface **explaining what just
|
|
13
|
+
happened**: what appeared, what it came from, what is still loading, what the user just did. When
|
|
14
|
+
motion feels wrong the complaint is almost never "the curve is off" — it is "this feels cheap", or
|
|
15
|
+
"slow", or "I don't know what happened". Those are the symptoms this skill exists to convert into
|
|
16
|
+
decisions.
|
|
17
|
+
|
|
18
|
+
## The one rule
|
|
19
|
+
|
|
20
|
+
**Every animation answers a question the user is already asking.** If you cannot name the question,
|
|
21
|
+
delete the animation — it is costing time and attention and returning nothing.
|
|
22
|
+
|
|
23
|
+
| The user is asking | The motion that answers it |
|
|
24
|
+
| --- | --- |
|
|
25
|
+
| "Where did this come from?" | It enters from its origin, not from nowhere |
|
|
26
|
+
| "Is it working?" | Immediate feedback, under 100ms, even before the result |
|
|
27
|
+
| "What did I just do?" | The changed thing moves; nothing else does |
|
|
28
|
+
| "Where did it go?" | It exits toward where it can be found again |
|
|
29
|
+
| nothing | **no animation** |
|
|
30
|
+
|
|
31
|
+
That table is the whole method. Everything below is how to honour it without shipping something
|
|
32
|
+
that janks.
|
|
33
|
+
|
|
34
|
+
## Duration: the only numbers worth memorising
|
|
35
|
+
|
|
36
|
+
Movement is read as *slow* long before it is read as *long*. The usable range is narrower than most
|
|
37
|
+
people expect, and the mistake is almost always **too slow**, not too fast.
|
|
38
|
+
|
|
39
|
+
| What moves | Range | Why |
|
|
40
|
+
| --- | --- | --- |
|
|
41
|
+
| State on an element already on screen (hover, toggle, press) | 100–150ms | It must feel like a response, not an event |
|
|
42
|
+
| Something entering or leaving in place (menu, tooltip, toast) | 150–250ms | Long enough to be seen, short enough not to be waited for |
|
|
43
|
+
| A region rearranging (list reflow, panel) | 250–350ms | Bigger travel needs more time to stay legible |
|
|
44
|
+
| A full view transition | 300–400ms | The ceiling. Past 400ms it is a wait, not a transition |
|
|
45
|
+
|
|
46
|
+
Two rules that come from those numbers, not from taste:
|
|
47
|
+
|
|
48
|
+
- **Exits are faster than entrances**, usually by about a third. The user has already decided; making
|
|
49
|
+
them watch the decision leave is the single most common way an interface feels sluggish.
|
|
50
|
+
- **Distance and duration scale together, sub-linearly.** Doubling the travel does not double the
|
|
51
|
+
time. If a value grows past 400ms because the element crosses the screen, the layout is the
|
|
52
|
+
problem, not the timing.
|
|
53
|
+
|
|
54
|
+
## Easing: three curves cover almost everything
|
|
55
|
+
|
|
56
|
+
- **Entering, or responding to input** — start fast, settle slow (`ease-out` family). The user's
|
|
57
|
+
attention is already there; arriving quickly and settling reads as responsive.
|
|
58
|
+
- **Leaving** — start slow, accelerate away (`ease-in` family). It matches how the eye lets go.
|
|
59
|
+
- **Moving between two on-screen positions** — accelerate and decelerate (`ease-in-out` family).
|
|
60
|
+
|
|
61
|
+
**Linear is for one thing only: continuous, non-positional change** — a progress bar filling, a
|
|
62
|
+
spinner rotating, a colour crossfade. Linear on anything that moves in space reads as mechanical,
|
|
63
|
+
because nothing physical starts at full speed.
|
|
64
|
+
|
|
65
|
+
Springs are worth reaching for when the motion should feel *physical* — dragging, dismissing,
|
|
66
|
+
anything the user's finger or pointer is still in contact with. They are the wrong tool for
|
|
67
|
+
appearing and disappearing, where a bounce reads as indecision.
|
|
68
|
+
|
|
69
|
+
## What must never animate
|
|
70
|
+
|
|
71
|
+
This is where most jank comes from, and it is not a matter of degree.
|
|
72
|
+
|
|
73
|
+
- **Never animate layout.** Width, height, top, left, margin, padding — each frame forces the engine
|
|
74
|
+
to recompute geometry. Animate transform and opacity, which do not.
|
|
75
|
+
- **Never `transition: all`.** It is the shortest path to animating layout by accident. List the
|
|
76
|
+
properties.
|
|
77
|
+
- **Never animate what the user is reading.** Text that moves while being read is illegible.
|
|
78
|
+
- **Never block input on an animation.** The interface accepts the next action immediately, even
|
|
79
|
+
mid-motion. An animation that must finish before the user may act has become a modal dialog.
|
|
80
|
+
- **Never animate more than one thing per event.** If three things move when one changed, the user
|
|
81
|
+
cannot tell which one mattered.
|
|
82
|
+
|
|
83
|
+
## Reduced motion is not an edge case
|
|
84
|
+
|
|
85
|
+
A real share of people have vestibular conditions for which large movement is nauseating, and they
|
|
86
|
+
have told their operating system so. Honouring it is not optional and it is not a fallback to
|
|
87
|
+
nothing:
|
|
88
|
+
|
|
89
|
+
- **Keep** the feedback: opacity changes, colour, instant state.
|
|
90
|
+
- **Remove** the travel: no sliding across the screen, no scaling, no parallax, no auto-playing loops.
|
|
91
|
+
- The interface must still say what happened — it just says it without moving.
|
|
92
|
+
|
|
93
|
+
An implementation with no reduced-motion branch is unfinished, the same way an interface with no
|
|
94
|
+
error state is unfinished.
|
|
95
|
+
|
|
96
|
+
## Diagnosing motion that feels wrong
|
|
97
|
+
|
|
98
|
+
The complaint names the symptom; this maps it to a cause.
|
|
99
|
+
|
|
100
|
+
| Complaint | Usually | Fix |
|
|
101
|
+
| --- | --- | --- |
|
|
102
|
+
| "Sluggish" | Duration too long, or the exit matches the entrance | Cut to the range above; make exits faster |
|
|
103
|
+
| "Cheap" / "amateur" | Linear easing on positional movement, or bounce on entrances | Match curve to direction |
|
|
104
|
+
| "Janky" / "stutters" | Animating layout properties | Move to transform and opacity |
|
|
105
|
+
| "Distracting" | More than one thing moving per event | Animate only what changed |
|
|
106
|
+
| "I don't know what happened" | Motion with no origin or destination | Move it from where it came from |
|
|
107
|
+
| "Nice, but I'd turn it off" | No reduced-motion branch, or motion that repeats | Honour the setting; never loop what is not loading |
|
|
108
|
+
|
|
109
|
+
## Anti-patterns → STOP
|
|
110
|
+
|
|
111
|
+
| If you're about to… | Reality / Fix |
|
|
112
|
+
| --- | --- |
|
|
113
|
+
| Add motion because the screen feels static | Static is not a defect. Motion with no question to answer is noise with a frame cost. |
|
|
114
|
+
| Copy a duration from a design you liked | You copied the number without its distance and its context. Take the range, verify against the feel. |
|
|
115
|
+
| Animate a list so every item cascades in | Stagger past ~4 items becomes a queue the user waits through. Cap it, or drop it. |
|
|
116
|
+
| Use a spring for a menu appearing | A bounce on an entrance reads as indecision. Springs are for what the pointer is still touching. |
|
|
117
|
+
| Ship motion without checking reduced-motion | It is not an edge case. Unchecked means unfinished. |
|
|
118
|
+
| Reach here for the visual system | Type, colour, spacing and composition are `../design/SKILL.md`. This skill only moves what that one placed. |
|
|
119
|
+
|
|
120
|
+
## See Also
|
|
121
|
+
|
|
122
|
+
- `../design/SKILL.md` — the visual system this motion serves.
|
|
123
|
+
- `../design-loop/SKILL.md` — the graded critique that judges a finished screen, motion included.
|
|
124
|
+
- `../design-dna/SKILL.md` — turning a look, motion rules included, into a reusable identity.
|
|
125
|
+
- `../accessibility/SKILL.md` — the wider ground reduced-motion sits in.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
skill: motion-craft
|
|
2
|
+
|
|
3
|
+
should_trigger:
|
|
4
|
+
- prompt: "The menu animation feels sluggish, can you make it feel snappier?"
|
|
5
|
+
why: "The canonical case: a complaint about feel, which this skill converts into a duration and an easing decision."
|
|
6
|
+
- prompt: "What duration and easing should this dropdown use?"
|
|
7
|
+
why: "Directly the numbers this skill owns, for an element entering in place."
|
|
8
|
+
- prompt: "My list animation stutters when it reflows."
|
|
9
|
+
why: "Jank is the symptom of animating layout properties, which is the one hard rule here."
|
|
10
|
+
- prompt: "Añade una animación al abrir el panel, pero que no quede cutre."
|
|
11
|
+
why: "Same ask in Spanish; the trigger is the intent, not the language."
|
|
12
|
+
- prompt: "Does this respect prefers-reduced-motion? I don't think we handled it."
|
|
13
|
+
why: "Reduced-motion is treated here as part of finishing the work, not as an edge case."
|
|
14
|
+
- prompt: "Everything on the page moves at once when I click one button."
|
|
15
|
+
why: "More than one thing moving per event is a named diagnosis in this skill."
|
|
16
|
+
|
|
17
|
+
should_not_trigger:
|
|
18
|
+
- prompt: "Design a landing page for my analytics SaaS — hero, pricing, the works."
|
|
19
|
+
route_to: "design"
|
|
20
|
+
why: "Type, colour, spacing and composition are the visual system, which this skill only moves once it exists."
|
|
21
|
+
- prompt: "Review this checkout screen and tell me how good it actually is, with a grade."
|
|
22
|
+
route_to: "design-loop"
|
|
23
|
+
why: "Graded critique of a finished screen is the loop's job; this skill builds motion, it does not judge screens."
|
|
24
|
+
- prompt: "This design came out great — turn it into a style I can reuse everywhere."
|
|
25
|
+
route_to: "design-dna"
|
|
26
|
+
why: "Codifying a look into a permanent identity is capture, not motion craft."
|
|
27
|
+
- prompt: "Make the site keyboard navigable and fix the contrast failures."
|
|
28
|
+
route_to: "accessibility"
|
|
29
|
+
why: "Accessibility beyond reduced-motion is its own ground; only the motion half lives here."
|
|
30
|
+
- prompt: "Our React app re-renders too much and the profiler shows wasted renders."
|
|
31
|
+
route_to: "react"
|
|
32
|
+
why: "A rendering performance problem is framework work, even when the symptom looks like stutter."
|
|
33
|
+
|
|
34
|
+
capability:
|
|
35
|
+
- prompt: "This modal slides in over 600ms with a linear curve and it feels cheap. Fix it and say why."
|
|
36
|
+
why: "Exercises the two most common defects at once — too slow, and linear on positional movement — and demands the reasoning, not just new numbers."
|
|
37
|
+
- prompt: "We animate width and height on the sidebar and it janks on mobile. What do we do instead?"
|
|
38
|
+
why: "The layout-vs-compositor rule is the load-bearing piece of technical content here."
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
#
|
|
3
|
+
# verify.sh — the never-animate list of `motion-craft`, made mechanical.
|
|
4
|
+
#
|
|
5
|
+
# The SKILL.md declares rules as binding ("never animate layout", "never
|
|
6
|
+
# `transition: all`"). A rule declared binding without a mechanism that checks it
|
|
7
|
+
# is a decorative gate: it buys the feeling of safety without the safety. So each
|
|
8
|
+
# hard rule in the skill body has a row here, and each row has a fixture in
|
|
9
|
+
# tests/motion-craft-rules.test.js that watches it FAIL and then PASS.
|
|
10
|
+
#
|
|
11
|
+
# Static and network-free. Everything WARNS by default; --strict makes findings
|
|
12
|
+
# fatal, which is what CI should use.
|
|
13
|
+
set -u
|
|
14
|
+
TARGET="${1:-.}"
|
|
15
|
+
STRICT=0
|
|
16
|
+
[ "${2:-}" = "--strict" ] && STRICT=1
|
|
17
|
+
[ "${1:-}" = "--strict" ] && { STRICT=1; TARGET="."; }
|
|
18
|
+
|
|
19
|
+
warn_count=0
|
|
20
|
+
warn() { printf ' ⚠ %s\n' "$1"; warn_count=$((warn_count + 1)); }
|
|
21
|
+
ok() { printf ' ✓ %s\n' "$1"; }
|
|
22
|
+
|
|
23
|
+
# id <TAB> grep -E pattern <TAB> message
|
|
24
|
+
# One row per hard rule in SKILL.md §"What must never animate". Adding a rule to
|
|
25
|
+
# the prose without adding it here is what the test suite refuses to allow.
|
|
26
|
+
#
|
|
27
|
+
# Fields are TAB-separated on purpose: the patterns are extended regexes and are
|
|
28
|
+
# full of `|`, so a pipe delimiter silently truncated every pattern at its first
|
|
29
|
+
# alternation and only the one rule without alternation ever fired.
|
|
30
|
+
rules() {
|
|
31
|
+
printf '%b\n' \
|
|
32
|
+
"transition-all\ttransition:[[:space:]]*all\t\`transition: all\` animates layout by accident — list the exact properties" \
|
|
33
|
+
"layout-anim\ttransition:[^;]*(width|height|top:|left:|right:|bottom:|margin|padding)\tanimating layout properties forces reflow every frame — use transform and opacity" \
|
|
34
|
+
"linear-move\t(transition|animation):[^;]*(transform|translate|scale)[^;]*linear\tlinear easing on positional movement reads as mechanical — nothing physical starts at full speed" \
|
|
35
|
+
"long-duration\t(transition|animation):[^;]*[^0-9]([5-9][0-9][0-9]|[0-9][0-9][0-9][0-9])ms\tover 400ms stops being a transition and becomes a wait"
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
files=$(find "$TARGET" \( -name node_modules -o -name .git -o -name dist -o -name build -o -name .next \) -prune -o \
|
|
39
|
+
\( -name '*.css' -o -name '*.scss' -o -name '*.tsx' -o -name '*.jsx' -o -name '*.ts' -o -name '*.js' -o -name '*.vue' -o -name '*.svelte' \) -print 2>/dev/null)
|
|
40
|
+
|
|
41
|
+
echo "motion-craft — never-animate checks"
|
|
42
|
+
if [ -z "$files" ]; then
|
|
43
|
+
echo " (no style or component files found under $TARGET)"
|
|
44
|
+
exit 0
|
|
45
|
+
fi
|
|
46
|
+
|
|
47
|
+
while IFS=$'\t' read -r id pattern message; do
|
|
48
|
+
[ -z "$id" ] && continue
|
|
49
|
+
hits=$(printf '%s\n' "$files" | xargs grep -lEi -- "$pattern" 2>/dev/null | head -5)
|
|
50
|
+
if [ -n "$hits" ]; then
|
|
51
|
+
warn "$id: $message"
|
|
52
|
+
printf ' %s\n' $hits
|
|
53
|
+
else
|
|
54
|
+
ok "$id"
|
|
55
|
+
fi
|
|
56
|
+
done <<< "$(rules)"
|
|
57
|
+
|
|
58
|
+
# reduced-motion is a finishing condition, not an edge case: if anything animates
|
|
59
|
+
# at all, the project must say what it does for people who asked for less motion.
|
|
60
|
+
if printf '%s\n' "$files" | xargs grep -lEi -- '(transition|animation|@keyframes)' >/dev/null 2>&1; then
|
|
61
|
+
if printf '%s\n' "$files" | xargs grep -lEi -- 'prefers-reduced-motion' >/dev/null 2>&1; then
|
|
62
|
+
ok "reduced-motion: honoured somewhere"
|
|
63
|
+
else
|
|
64
|
+
warn "reduced-motion: this project animates and never mentions prefers-reduced-motion — unchecked means unfinished"
|
|
65
|
+
fi
|
|
66
|
+
fi
|
|
67
|
+
|
|
68
|
+
echo
|
|
69
|
+
if [ "$warn_count" -gt 0 ]; then
|
|
70
|
+
echo "$warn_count finding(s)."
|
|
71
|
+
[ "$STRICT" -eq 1 ] && exit 1
|
|
72
|
+
else
|
|
73
|
+
echo "No findings."
|
|
74
|
+
fi
|
|
75
|
+
exit 0
|