rsc-universal 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +279 -0
- package/manifest.json +4761 -0
- package/package.json +59 -0
- package/schema/frontmatter.schema.json +12 -0
- package/scripts/build-manifest.js +72 -0
- package/scripts/consult.js +106 -0
- package/scripts/detect-repo.js +118 -0
- package/scripts/doctor.js +21 -0
- package/scripts/eval-lint.sh +179 -0
- package/scripts/install-apply.js +52 -0
- package/scripts/install-plan.js +13 -0
- package/scripts/lib/behavior-score.js +103 -0
- package/scripts/lib/frontmatter.js +47 -0
- package/scripts/lib/harden-policy.js +41 -0
- package/scripts/lib/manifest.js +18 -0
- package/scripts/lib/recommend.js +36 -0
- package/scripts/lib/registry.js +110 -0
- package/scripts/lib/result-envelope.js +35 -0
- package/scripts/lib/state.js +12 -0
- package/scripts/lib/ui.js +17 -0
- package/scripts/reviewer-guard.sh +67 -0
- package/scripts/rsc.js +108 -0
- package/scripts/skill-behavior-eval.js +33 -0
- package/scripts/skill-behavior-eval.workflow.js +136 -0
- package/scripts/skill-behavior-rubric.md +63 -0
- package/scripts/skill-harden-rubric.md +40 -0
- package/scripts/skill-harden.workflow.js +161 -0
- package/scripts/skill-rubric.md +39 -0
- package/scripts/skill-scoreboard.workflow.js +35 -0
- package/skills/ab-testing/SKILL.md +191 -0
- package/skills/ab-testing/evals/README.md +8 -0
- package/skills/ab-testing/evals/cases.yaml +49 -0
- package/skills/ab-testing/references/pitfalls.md +74 -0
- package/skills/ab-testing/references/sample-size-and-cuped.md +128 -0
- package/skills/ab-testing/scripts/verify.sh +89 -0
- package/skills/accessibility/SKILL.md +218 -0
- package/skills/accessibility/evals/README.md +3 -0
- package/skills/accessibility/evals/cases.yaml +47 -0
- package/skills/accessibility/references/aria-patterns.md +113 -0
- package/skills/accessibility/references/wcag22-checklist.md +83 -0
- package/skills/accessibility/scripts/verify.sh +103 -0
- package/skills/ads/SKILL.md +175 -0
- package/skills/ads/evals/README.md +15 -0
- package/skills/ads/evals/cases.yaml +58 -0
- package/skills/ads/references/platform-specs.md +73 -0
- package/skills/ads/references/roas-model.md +77 -0
- package/skills/ads/scripts/verify.sh +210 -0
- package/skills/agent-eval/SKILL.md +213 -0
- package/skills/agent-eval/evals/README.md +12 -0
- package/skills/agent-eval/evals/cases.yaml +45 -0
- package/skills/agent-eval/references/judge-design.md +118 -0
- package/skills/agent-eval/references/runner-and-gate.md +183 -0
- package/skills/agent-eval/scripts/verify.sh +161 -0
- package/skills/agent-safety/SKILL.md +176 -0
- package/skills/agent-safety/evals/README.md +12 -0
- package/skills/agent-safety/evals/cases.yaml +46 -0
- package/skills/agent-safety/references/threat-model.md +51 -0
- package/skills/ai-media/SKILL.md +196 -0
- package/skills/ai-media/evals/README.md +3 -0
- package/skills/ai-media/evals/cases.yaml +45 -0
- package/skills/ai-media/references/ffmpeg-assembly.md +117 -0
- package/skills/ai-media/references/models-and-params.md +78 -0
- package/skills/ai-media/scripts/verify.sh +103 -0
- package/skills/analytics/SKILL.md +219 -0
- package/skills/analytics/evals/README.md +9 -0
- package/skills/analytics/evals/cases.yaml +53 -0
- package/skills/analytics/references/event-taxonomy.md +75 -0
- package/skills/analytics/references/ga4-setup.md +122 -0
- package/skills/analytics/references/posthog-setup.md +100 -0
- package/skills/analytics/scripts/verify.sh +95 -0
- package/skills/analyze/SKILL.md +136 -0
- package/skills/analyze/evals/README.md +72 -0
- package/skills/analyze/evals/cases.yaml +74 -0
- package/skills/angular/SKILL.md +288 -0
- package/skills/angular/evals/README.md +3 -0
- package/skills/angular/evals/cases.yaml +38 -0
- package/skills/angular/references/migration.md +81 -0
- package/skills/angular/references/signals-rxjs.md +92 -0
- package/skills/angular/scripts/verify.sh +122 -0
- package/skills/api-connector-builder/SKILL.md +285 -0
- package/skills/api-connector-builder/evals/README.md +11 -0
- package/skills/api-connector-builder/evals/cases.yaml +47 -0
- package/skills/api-connector-builder/references/auth-flows.md +132 -0
- package/skills/api-connector-builder/references/pagination.md +144 -0
- package/skills/api-connector-builder/scripts/verify.sh +172 -0
- package/skills/api-design/SKILL.md +189 -0
- package/skills/api-design/evals/README.md +3 -0
- package/skills/api-design/evals/cases.yaml +45 -0
- package/skills/api-design/references/graphql-design.md +70 -0
- package/skills/api-design/references/openapi-contract.md +86 -0
- package/skills/api-design/references/rest-conventions.md +63 -0
- package/skills/api-design/references/versioning-and-evolution.md +49 -0
- package/skills/api-design/scripts/verify.sh +138 -0
- package/skills/article-writing/SKILL.md +175 -0
- package/skills/article-writing/evals/README.md +3 -0
- package/skills/article-writing/evals/cases.yaml +47 -0
- package/skills/article-writing/references/ai-tell-banlist.md +114 -0
- package/skills/article-writing/references/on-page-seo.md +133 -0
- package/skills/article-writing/scripts/verify.sh +165 -0
- package/skills/astro/SKILL.md +275 -0
- package/skills/astro/evals/README.md +3 -0
- package/skills/astro/evals/cases.yaml +41 -0
- package/skills/astro/references/content-layer.md +118 -0
- package/skills/astro/references/deploy-and-integrations.md +163 -0
- package/skills/astro/scripts/verify.sh +137 -0
- package/skills/author-skill/SKILL.md +206 -0
- package/skills/author-skill/evals/README.md +66 -0
- package/skills/author-skill/evals/cases.yaml +75 -0
- package/skills/author-skill/references/description-recipe.md +84 -0
- package/skills/author-skill/references/eval-authoring.md +74 -0
- package/skills/author-skill/references/rsc-conventions.md +91 -0
- package/skills/automation-flows/SKILL.md +132 -0
- package/skills/automation-flows/evals/README.md +5 -0
- package/skills/automation-flows/evals/cases.yaml +44 -0
- package/skills/automation-flows/references/error-handling.md +58 -0
- package/skills/automation-flows/references/n8n-workflow-json.md +63 -0
- package/skills/automation-flows/scripts/verify.sh +78 -0
- package/skills/aws-essentials/SKILL.md +223 -0
- package/skills/aws-essentials/evals/README.md +10 -0
- package/skills/aws-essentials/evals/cases.yaml +44 -0
- package/skills/aws-essentials/references/iam-least-privilege.md +134 -0
- package/skills/aws-essentials/references/rds-cloudfront-recipes.md +127 -0
- package/skills/aws-essentials/scripts/verify.sh +99 -0
- package/skills/backups/SKILL.md +137 -0
- package/skills/backups/evals/README.md +3 -0
- package/skills/backups/evals/cases.yaml +42 -0
- package/skills/backups/references/engine-recipes.md +121 -0
- package/skills/backups/references/restore-runbook.md +65 -0
- package/skills/backups/scripts/verify.sh +80 -0
- package/skills/bash-scripting/SKILL.md +231 -0
- package/skills/bash-scripting/evals/README.md +3 -0
- package/skills/bash-scripting/evals/cases.yaml +45 -0
- package/skills/bash-scripting/references/portability.md +97 -0
- package/skills/bash-scripting/scripts/verify.sh +140 -0
- package/skills/bookkeeping/SKILL.md +184 -0
- package/skills/bookkeeping/evals/README.md +5 -0
- package/skills/bookkeeping/evals/cases.yaml +52 -0
- package/skills/bookkeeping/references/chart-of-accounts.md +87 -0
- package/skills/bookkeeping/references/reconciliation-playbook.md +54 -0
- package/skills/bookkeeping/references/tricky-transactions.md +192 -0
- package/skills/brand-identity/SKILL.md +161 -0
- package/skills/brand-identity/evals/README.md +14 -0
- package/skills/brand-identity/evals/cases.yaml +43 -0
- package/skills/brand-identity/references/color-and-tokens.md +129 -0
- package/skills/brand-identity/references/logo-and-assets.md +117 -0
- package/skills/brand-identity/scripts/verify.sh +224 -0
- package/skills/brand-voice/SKILL.md +183 -0
- package/skills/brand-voice/evals/README.md +3 -0
- package/skills/brand-voice/evals/cases.yaml +57 -0
- package/skills/brand-voice/references/voice-guide-template.md +150 -0
- package/skills/brand-voice/references/word-bank.md +61 -0
- package/skills/brand-voice/scripts/verify.sh +190 -0
- package/skills/building-agents/SKILL.md +469 -0
- package/skills/building-agents/evals/README.md +68 -0
- package/skills/building-agents/evals/cases.yaml +60 -0
- package/skills/building-agents/references/agent-loops-and-harness.md +371 -0
- package/skills/building-agents/references/evals-and-observability.md +420 -0
- package/skills/building-agents/references/mcp-servers.md +294 -0
- package/skills/building-agents/references/provider-abstraction.md +489 -0
- package/skills/building-agents/references/tools-and-rag.md +417 -0
- package/skills/building-agents/scripts/verify.sh +121 -0
- package/skills/business-intelligence/SKILL.md +176 -0
- package/skills/business-intelligence/evals/README.md +3 -0
- package/skills/business-intelligence/evals/cases.yaml +43 -0
- package/skills/business-intelligence/references/authoring-semantic-models.md +120 -0
- package/skills/business-intelligence/references/wiring-agents-and-apis.md +79 -0
- package/skills/business-intelligence/scripts/verify.sh +143 -0
- package/skills/calendar-scheduling/SKILL.md +196 -0
- package/skills/calendar-scheduling/evals/README.md +14 -0
- package/skills/calendar-scheduling/evals/cases.yaml +45 -0
- package/skills/calendar-scheduling/references/google-calendar-sync.md +78 -0
- package/skills/calendar-scheduling/references/provider-matrix.md +71 -0
- package/skills/calendar-scheduling/scripts/verify.sh +117 -0
- package/skills/case-studies/SKILL.md +147 -0
- package/skills/case-studies/evals/README.md +3 -0
- package/skills/case-studies/evals/cases.yaml +63 -0
- package/skills/case-studies/references/case-study-skeleton.md +90 -0
- package/skills/case-studies/references/consent-and-substantiation.md +80 -0
- package/skills/case-studies/scripts/verify.sh +161 -0
- package/skills/chatbot/SKILL.md +168 -0
- package/skills/chatbot/evals/README.md +13 -0
- package/skills/chatbot/evals/cases.yaml +43 -0
- package/skills/chatbot/references/handoff-and-sales.md +71 -0
- package/skills/chatbot/references/system-prompt-and-guardrails.md +78 -0
- package/skills/chatbot/scripts/verify.sh +162 -0
- package/skills/chrome-extension/SKILL.md +169 -0
- package/skills/chrome-extension/evals/README.md +12 -0
- package/skills/chrome-extension/evals/cases.yaml +40 -0
- package/skills/chrome-extension/references/store-and-migration.md +84 -0
- package/skills/chrome-extension/scripts/verify.sh +62 -0
- package/skills/clarify/SKILL.md +159 -0
- package/skills/clarify/evals/README.md +70 -0
- package/skills/clarify/evals/cases.yaml +71 -0
- package/skills/clickhouse-analytics/SKILL.md +165 -0
- package/skills/clickhouse-analytics/evals/README.md +3 -0
- package/skills/clickhouse-analytics/evals/cases.yaml +45 -0
- package/skills/clickhouse-analytics/references/ingestion-and-mvs.md +109 -0
- package/skills/clickhouse-analytics/references/query-optimization.md +76 -0
- package/skills/clickhouse-analytics/references/schema-and-engines.md +63 -0
- package/skills/clickhouse-analytics/scripts/verify.sh +109 -0
- package/skills/client-onboarding/SKILL.md +254 -0
- package/skills/client-onboarding/evals/README.md +14 -0
- package/skills/client-onboarding/evals/cases.yaml +40 -0
- package/skills/client-onboarding/references/onboarding-playbook.md +126 -0
- package/skills/cloudflare/SKILL.md +191 -0
- package/skills/cloudflare/evals/README.md +15 -0
- package/skills/cloudflare/evals/cases.yaml +46 -0
- package/skills/cloudflare/references/storage-primitives.md +104 -0
- package/skills/cloudflare/references/wrangler-config.md +91 -0
- package/skills/cloudflare/scripts/verify.sh +133 -0
- package/skills/code-review/SKILL.md +143 -0
- package/skills/code-review/evals/README.md +3 -0
- package/skills/code-review/evals/cases.yaml +55 -0
- package/skills/code-review/references/pr-workflow.md +67 -0
- package/skills/codebase-onboarding/SKILL.md +133 -0
- package/skills/codebase-onboarding/evals/README.md +3 -0
- package/skills/codebase-onboarding/evals/cases.yaml +69 -0
- package/skills/codebase-onboarding/references/recon-playbook.md +57 -0
- package/skills/codebase-onboarding/scripts/verify.sh +54 -0
- package/skills/cold-outreach/SKILL.md +206 -0
- package/skills/cold-outreach/evals/README.md +3 -0
- package/skills/cold-outreach/evals/cases.yaml +60 -0
- package/skills/cold-outreach/references/compliance-footer.md +50 -0
- package/skills/cold-outreach/references/hook-derivation.md +73 -0
- package/skills/cold-outreach/references/templates.md +88 -0
- package/skills/cold-outreach/scripts/verify.sh +170 -0
- package/skills/community/SKILL.md +225 -0
- package/skills/community/evals/README.md +3 -0
- package/skills/community/evals/cases.yaml +40 -0
- package/skills/community/references/metrics-and-rituals.md +58 -0
- package/skills/community/references/platform-playbooks.md +64 -0
- package/skills/community/scripts/verify.sh +83 -0
- package/skills/competitor-watch/SKILL.md +193 -0
- package/skills/competitor-watch/evals/README.md +19 -0
- package/skills/competitor-watch/evals/cases.yaml +54 -0
- package/skills/competitor-watch/references/monitoring-config.md +124 -0
- package/skills/competitor-watch/references/tracker-schema.md +79 -0
- package/skills/competitor-watch/scripts/verify.sh +253 -0
- package/skills/compliance/SKILL.md +184 -0
- package/skills/compliance/evals/README.md +14 -0
- package/skills/compliance/evals/cases.yaml +46 -0
- package/skills/compliance/references/frameworks.md +108 -0
- package/skills/compliance/references/operating-rhythm.md +79 -0
- package/skills/compliance/scripts/verify.sh +168 -0
- package/skills/compose-multiplatform/SKILL.md +198 -0
- package/skills/compose-multiplatform/evals/README.md +3 -0
- package/skills/compose-multiplatform/evals/cases.yaml +40 -0
- package/skills/compose-multiplatform/references/ios-interop.md +91 -0
- package/skills/compose-multiplatform/references/project-setup.md +96 -0
- package/skills/compose-multiplatform/scripts/verify.sh +123 -0
- package/skills/constitution/SKILL.md +160 -0
- package/skills/constitution/evals/README.md +68 -0
- package/skills/constitution/evals/cases.yaml +72 -0
- package/skills/constitution/references/constitution-template.md +90 -0
- package/skills/content-engine/SKILL.md +164 -0
- package/skills/content-engine/evals/README.md +17 -0
- package/skills/content-engine/evals/cases.yaml +62 -0
- package/skills/content-engine/references/atomization.md +81 -0
- package/skills/content-engine/references/brief-and-pipeline.md +90 -0
- package/skills/content-engine/scripts/verify.sh +146 -0
- package/skills/context-budget/SKILL.md +132 -0
- package/skills/context-budget/evals/README.md +11 -0
- package/skills/context-budget/evals/cases.yaml +40 -0
- package/skills/context-budget/references/handoff-and-compaction.md +96 -0
- package/skills/continuous-learning/SKILL.md +136 -0
- package/skills/continuous-learning/evals/README.md +16 -0
- package/skills/continuous-learning/evals/cases.yaml +39 -0
- package/skills/continuous-learning/references/lesson-routing.md +106 -0
- package/skills/contracts/SKILL.md +124 -0
- package/skills/contracts/evals/README.md +3 -0
- package/skills/contracts/evals/cases.yaml +42 -0
- package/skills/contracts/references/clause-library.md +129 -0
- package/skills/contracts/references/review-playbook.md +49 -0
- package/skills/contracts/scripts/verify.sh +53 -0
- package/skills/coolify/SKILL.md +201 -0
- package/skills/coolify/evals/README.md +21 -0
- package/skills/coolify/evals/cases.yaml +46 -0
- package/skills/coolify/references/databases-and-backups.md +99 -0
- package/skills/coolify/references/deploy-recipes.md +105 -0
- package/skills/coolify/references/install-and-proxy.md +80 -0
- package/skills/coolify/scripts/verify.sh +123 -0
- package/skills/cost-tracking/SKILL.md +183 -0
- package/skills/cost-tracking/evals/README.md +3 -0
- package/skills/cost-tracking/evals/cases.yaml +45 -0
- package/skills/cost-tracking/references/cloud-caps.md +52 -0
- package/skills/cost-tracking/references/pricing-tables.md +51 -0
- package/skills/cost-tracking/scripts/verify.sh +135 -0
- package/skills/course-builder/SKILL.md +186 -0
- package/skills/course-builder/evals/README.md +16 -0
- package/skills/course-builder/evals/cases.yaml +49 -0
- package/skills/course-builder/references/assessment-design.md +74 -0
- package/skills/course-builder/references/grounding-and-scoping.md +69 -0
- package/skills/course-builder/references/outcomes-and-blooms.md +82 -0
- package/skills/course-builder/scripts/verify.sh +247 -0
- package/skills/course-storytelling/SKILL.md +205 -0
- package/skills/course-storytelling/evals/README.md +54 -0
- package/skills/course-storytelling/evals/cases.yaml +50 -0
- package/skills/course-storytelling/references/brunson-frameworks.md +190 -0
- package/skills/course-storytelling/references/concept-landing-recipe.md +136 -0
- package/skills/course-storytelling/references/course-analysis.md +124 -0
- package/skills/course-storytelling/references/learner-grounding.md +183 -0
- package/skills/course-storytelling/references/mental-models.md +115 -0
- package/skills/course-storytelling/scripts/verify.sh +223 -0
- package/skills/cpp/SKILL.md +349 -0
- package/skills/cpp/evals/README.md +14 -0
- package/skills/cpp/evals/cases.yaml +44 -0
- package/skills/cpp/references/cmake.md +167 -0
- package/skills/cpp/references/move-and-templates.md +130 -0
- package/skills/cpp/references/undefined-behavior.md +86 -0
- package/skills/cpp/scripts/verify.sh +165 -0
- package/skills/csharp-dotnet/SKILL.md +291 -0
- package/skills/csharp-dotnet/evals/README.md +3 -0
- package/skills/csharp-dotnet/evals/cases.yaml +48 -0
- package/skills/csharp-dotnet/references/aspnetcore.md +99 -0
- package/skills/csharp-dotnet/references/async.md +82 -0
- package/skills/csharp-dotnet/references/efcore.md +96 -0
- package/skills/csharp-dotnet/scripts/verify.sh +90 -0
- package/skills/customer-support/SKILL.md +193 -0
- package/skills/customer-support/evals/README.md +13 -0
- package/skills/customer-support/evals/cases.yaml +61 -0
- package/skills/customer-support/references/macros-and-sla.md +142 -0
- package/skills/dashboard/SKILL.md +205 -0
- package/skills/dashboard/evals/README.md +3 -0
- package/skills/dashboard/evals/cases.yaml +50 -0
- package/skills/dashboard/references/chart-selection.md +34 -0
- package/skills/dashboard/references/tile-schema.md +164 -0
- package/skills/dashboard/scripts/verify.sh +130 -0
- package/skills/data-cleaning/SKILL.md +285 -0
- package/skills/data-cleaning/evals/README.md +16 -0
- package/skills/data-cleaning/evals/cases.yaml +57 -0
- package/skills/data-cleaning/references/normalization-recipes.md +136 -0
- package/skills/data-cleaning/references/validation-patterns.md +134 -0
- package/skills/data-cleaning/scripts/verify.sh +115 -0
- package/skills/data-policy/SKILL.md +163 -0
- package/skills/data-policy/evals/README.md +15 -0
- package/skills/data-policy/evals/cases.yaml +44 -0
- package/skills/data-policy/references/consent-and-ropa.md +97 -0
- package/skills/data-policy/references/retention-schedule.md +83 -0
- package/skills/data-policy/scripts/verify.sh +143 -0
- package/skills/data-scraper/SKILL.md +134 -0
- package/skills/data-scraper/evals/README.md +3 -0
- package/skills/data-scraper/evals/cases.yaml +46 -0
- package/skills/data-scraper/references/anti-bot.md +85 -0
- package/skills/data-scraper/references/frameworks.md +116 -0
- package/skills/data-scraper/references/legal-compliance.md +59 -0
- package/skills/data-scraper/scripts/verify.sh +166 -0
- package/skills/db-migrations/SKILL.md +254 -0
- package/skills/db-migrations/evals/README.md +10 -0
- package/skills/db-migrations/evals/cases.yaml +46 -0
- package/skills/db-migrations/references/backfill-and-batching.md +105 -0
- package/skills/db-migrations/references/expand-contract-playbook.md +152 -0
- package/skills/db-migrations/references/tools-and-runners.md +88 -0
- package/skills/db-migrations/scripts/verify.sh +112 -0
- package/skills/debug/SKILL.md +227 -0
- package/skills/debug/evals/README.md +88 -0
- package/skills/debug/evals/cases.yaml +74 -0
- package/skills/decision-records/SKILL.md +189 -0
- package/skills/decision-records/evals/README.md +3 -0
- package/skills/decision-records/evals/cases.yaml +43 -0
- package/skills/decision-records/references/templates.md +232 -0
- package/skills/decision-records/scripts/verify.sh +105 -0
- package/skills/deployment/SKILL.md +439 -0
- package/skills/deployment/evals/README.md +50 -0
- package/skills/deployment/evals/cases.yaml +53 -0
- package/skills/deployment/references/coolify.md +216 -0
- package/skills/deployment/references/dockerfiles-by-stack.md +319 -0
- package/skills/deployment/references/github-actions.md +295 -0
- package/skills/deployment/references/hosting-targets.md +272 -0
- package/skills/deployment/scripts/verify.sh +134 -0
- package/skills/design/SKILL.md +399 -0
- package/skills/design/evals/README.md +53 -0
- package/skills/design/evals/cases.yaml +56 -0
- package/skills/design/references/brand-grounding.md +187 -0
- package/skills/design/references/copywriting-frameworks.md +138 -0
- package/skills/design/references/landing-anatomy-and-cro.md +202 -0
- package/skills/design/references/motion-and-interaction.md +182 -0
- package/skills/design/references/research-method.md +147 -0
- package/skills/design/references/signature-and-craft.md +148 -0
- package/skills/design/references/trends-2026.md +80 -0
- package/skills/design/references/visual-system.md +236 -0
- package/skills/design/scripts/verify.sh +248 -0
- package/skills/digitalocean/SKILL.md +251 -0
- package/skills/digitalocean/evals/README.md +10 -0
- package/skills/digitalocean/evals/cases.yaml +37 -0
- package/skills/digitalocean/references/app-spec.md +126 -0
- package/skills/digitalocean/references/droplet-ops.md +95 -0
- package/skills/digitalocean/scripts/verify.sh +102 -0
- package/skills/django/SKILL.md +268 -0
- package/skills/django/evals/README.md +11 -0
- package/skills/django/evals/cases.yaml +47 -0
- package/skills/django/references/drf.md +109 -0
- package/skills/django/references/orm-performance.md +91 -0
- package/skills/django/references/security.md +81 -0
- package/skills/django/references/testing.md +86 -0
- package/skills/django/scripts/verify.sh +115 -0
- package/skills/docker/SKILL.md +283 -0
- package/skills/docker/evals/README.md +10 -0
- package/skills/docker/evals/cases.yaml +44 -0
- package/skills/docker/references/base-images-and-stages.md +104 -0
- package/skills/docker/references/compose-recipes.md +109 -0
- package/skills/docker/scripts/verify.sh +149 -0
- package/skills/document-processing/SKILL.md +214 -0
- package/skills/document-processing/evals/README.md +3 -0
- package/skills/document-processing/evals/cases.yaml +65 -0
- package/skills/document-processing/references/engines.md +67 -0
- package/skills/document-processing/scripts/verify.sh +172 -0
- package/skills/domains-dns/SKILL.md +146 -0
- package/skills/domains-dns/evals/README.md +16 -0
- package/skills/domains-dns/evals/cases.yaml +47 -0
- package/skills/domains-dns/references/record-cookbook.md +94 -0
- package/skills/domains-dns/references/tls-and-acme.md +90 -0
- package/skills/domains-dns/references/verify-and-debug.md +64 -0
- package/skills/domains-dns/scripts/verify.sh +163 -0
- package/skills/drizzle-orm/SKILL.md +234 -0
- package/skills/drizzle-orm/evals/README.md +12 -0
- package/skills/drizzle-orm/evals/cases.yaml +47 -0
- package/skills/drizzle-orm/references/relations-and-drivers.md +118 -0
- package/skills/drizzle-orm/scripts/verify.sh +155 -0
- package/skills/duckdb/SKILL.md +207 -0
- package/skills/duckdb/evals/README.md +31 -0
- package/skills/duckdb/evals/cases.yaml +41 -0
- package/skills/duckdb/references/python-and-interop.md +105 -0
- package/skills/duckdb/references/remote-and-lakehouse.md +101 -0
- package/skills/duckdb/scripts/verify.sh +71 -0
- package/skills/dynamodb/SKILL.md +217 -0
- package/skills/dynamodb/evals/README.md +8 -0
- package/skills/dynamodb/evals/cases.yaml +46 -0
- package/skills/dynamodb/references/access-patterns.md +127 -0
- package/skills/dynamodb/references/capacity-and-limits.md +78 -0
- package/skills/dynamodb/scripts/verify.sh +108 -0
- package/skills/e-signature/SKILL.md +185 -0
- package/skills/e-signature/evals/README.md +3 -0
- package/skills/e-signature/evals/cases.yaml +44 -0
- package/skills/e-signature/references/docusign.md +83 -0
- package/skills/e-signature/references/dropbox-sign.md +73 -0
- package/skills/e-signature/references/legal-tiers.md +37 -0
- package/skills/e-signature/scripts/verify.sh +81 -0
- package/skills/e2e-testing/SKILL.md +243 -0
- package/skills/e2e-testing/evals/README.md +10 -0
- package/skills/e2e-testing/evals/cases.yaml +64 -0
- package/skills/e2e-testing/references/config-and-ci.md +156 -0
- package/skills/e2e-testing/references/flakiness-playbook.md +124 -0
- package/skills/e2e-testing/scripts/verify.sh +117 -0
- package/skills/electron/SKILL.md +221 -0
- package/skills/electron/evals/README.md +13 -0
- package/skills/electron/evals/cases.yaml +38 -0
- package/skills/electron/references/packaging-and-updates.md +122 -0
- package/skills/electron/references/security-and-ipc.md +158 -0
- package/skills/electron/scripts/verify.sh +143 -0
- package/skills/elixir/SKILL.md +217 -0
- package/skills/elixir/evals/README.md +3 -0
- package/skills/elixir/evals/cases.yaml +41 -0
- package/skills/elixir/references/mix-and-releases.md +91 -0
- package/skills/elixir/references/otp-patterns.md +96 -0
- package/skills/elixir/scripts/verify.sh +76 -0
- package/skills/email-connector/SKILL.md +294 -0
- package/skills/email-connector/evals/README.md +19 -0
- package/skills/email-connector/evals/cases.yaml +39 -0
- package/skills/email-connector/references/providers.md +107 -0
- package/skills/email-connector/scripts/verify.sh +72 -0
- package/skills/email-deliverability/SKILL.md +168 -0
- package/skills/email-deliverability/evals/README.md +21 -0
- package/skills/email-deliverability/evals/cases.yaml +45 -0
- package/skills/email-deliverability/scripts/verify.sh +98 -0
- package/skills/embeddings-search/SKILL.md +193 -0
- package/skills/embeddings-search/evals/README.md +10 -0
- package/skills/embeddings-search/evals/cases.yaml +44 -0
- package/skills/embeddings-search/references/evaluation.md +86 -0
- package/skills/embeddings-search/references/models.md +73 -0
- package/skills/embeddings-search/scripts/verify.sh +103 -0
- package/skills/error-handling/SKILL.md +307 -0
- package/skills/error-handling/evals/README.md +12 -0
- package/skills/error-handling/evals/cases.yaml +46 -0
- package/skills/error-handling/references/boundaries-and-messaging.md +120 -0
- package/skills/error-handling/references/retry-and-resilience.md +154 -0
- package/skills/error-handling/scripts/verify.sh +110 -0
- package/skills/expo/SKILL.md +253 -0
- package/skills/expo/evals/README.md +13 -0
- package/skills/expo/evals/cases.yaml +44 -0
- package/skills/expo/references/config-plugins.md +117 -0
- package/skills/expo/references/eas-update.md +118 -0
- package/skills/expo/scripts/verify.sh +132 -0
- package/skills/fal/SKILL.md +210 -0
- package/skills/fal/evals/README.md +3 -0
- package/skills/fal/evals/cases.yaml +42 -0
- package/skills/fal/references/models-and-cost.md +53 -0
- package/skills/fal/references/queue-and-webhooks.md +153 -0
- package/skills/fal/scripts/verify.sh +72 -0
- package/skills/fastapi/SKILL.md +499 -0
- package/skills/fastapi/evals/README.md +50 -0
- package/skills/fastapi/evals/cases.yaml +55 -0
- package/skills/fastapi/references/database.md +347 -0
- package/skills/fastapi/references/production.md +338 -0
- package/skills/fastapi/references/security.md +330 -0
- package/skills/fastapi/references/testing.md +349 -0
- package/skills/fastapi/scripts/verify.sh +116 -0
- package/skills/finance-ops/SKILL.md +149 -0
- package/skills/finance-ops/evals/README.md +3 -0
- package/skills/finance-ops/evals/cases.yaml +39 -0
- package/skills/finance-ops/references/cash-flow-forecast.md +57 -0
- package/skills/finance-ops/references/month-close.md +59 -0
- package/skills/finance-ops/references/reconciliation.md +65 -0
- package/skills/finance-ops/scripts/verify.sh +166 -0
- package/skills/financial-model/SKILL.md +170 -0
- package/skills/financial-model/evals/README.md +3 -0
- package/skills/financial-model/evals/cases.yaml +53 -0
- package/skills/financial-model/references/benchmarks-and-scenarios.md +55 -0
- package/skills/financial-model/references/model-structure.md +67 -0
- package/skills/financial-model/references/revenue-build.md +68 -0
- package/skills/financial-model/scripts/verify.sh +232 -0
- package/skills/firebase/SKILL.md +251 -0
- package/skills/firebase/evals/README.md +12 -0
- package/skills/firebase/evals/cases.yaml +45 -0
- package/skills/firebase/references/cloud-functions.md +102 -0
- package/skills/firebase/references/data-modeling.md +108 -0
- package/skills/firebase/references/security-rules.md +137 -0
- package/skills/firebase/scripts/verify.sh +98 -0
- package/skills/flutter/SKILL.md +448 -0
- package/skills/flutter/evals/README.md +54 -0
- package/skills/flutter/evals/cases.yaml +69 -0
- package/skills/flutter/references/architecture-and-state.md +499 -0
- package/skills/flutter/references/i18n-and-dependencies.md +197 -0
- package/skills/flutter/references/performance.md +299 -0
- package/skills/flutter/references/testing.md +385 -0
- package/skills/flutter/references/ui-and-navigation.md +378 -0
- package/skills/flutter/scripts/verify.sh +104 -0
- package/skills/fly-io/SKILL.md +206 -0
- package/skills/fly-io/evals/README.md +3 -0
- package/skills/fly-io/evals/cases.yaml +42 -0
- package/skills/fly-io/references/fly-toml.md +155 -0
- package/skills/fly-io/references/multi-region.md +66 -0
- package/skills/fly-io/scripts/verify.sh +90 -0
- package/skills/forecasting/SKILL.md +139 -0
- package/skills/forecasting/evals/README.md +13 -0
- package/skills/forecasting/evals/cases.yaml +47 -0
- package/skills/forecasting/references/accuracy-and-backtesting.md +104 -0
- package/skills/forecasting/references/methods-cheatsheet.md +94 -0
- package/skills/forecasting/scripts/verify.sh +99 -0
- package/skills/fundraising/SKILL.md +162 -0
- package/skills/fundraising/evals/README.md +18 -0
- package/skills/fundraising/evals/cases.yaml +76 -0
- package/skills/fundraising/references/funnel-math.md +90 -0
- package/skills/fundraising/references/process-playbook.md +97 -0
- package/skills/gcp-essentials/SKILL.md +327 -0
- package/skills/gcp-essentials/evals/README.md +12 -0
- package/skills/gcp-essentials/evals/cases.yaml +38 -0
- package/skills/gcp-essentials/references/deploy-recipes.md +81 -0
- package/skills/gcp-essentials/references/iam-and-auth.md +94 -0
- package/skills/gcp-essentials/references/networking-and-sql.md +74 -0
- package/skills/gcp-essentials/scripts/verify.sh +158 -0
- package/skills/gdpr-privacy/SKILL.md +167 -0
- package/skills/gdpr-privacy/evals/README.md +3 -0
- package/skills/gdpr-privacy/evals/cases.yaml +47 -0
- package/skills/gdpr-privacy/references/dpa-and-transfers.md +63 -0
- package/skills/gdpr-privacy/references/dsar-and-consent.md +83 -0
- package/skills/gdpr-privacy/references/privacy-policy-blueprint.md +99 -0
- package/skills/gdpr-privacy/scripts/verify.sh +84 -0
- package/skills/git-workflow/SKILL.md +190 -0
- package/skills/git-workflow/evals/README.md +10 -0
- package/skills/git-workflow/evals/cases.yaml +47 -0
- package/skills/git-workflow/references/interactive-rebase.md +89 -0
- package/skills/github-actions/SKILL.md +256 -0
- package/skills/github-actions/evals/README.md +3 -0
- package/skills/github-actions/evals/cases.yaml +45 -0
- package/skills/github-actions/references/caching-and-matrix.md +92 -0
- package/skills/github-actions/references/oidc-deploys.md +130 -0
- package/skills/github-actions/scripts/verify.sh +105 -0
- package/skills/go/SKILL.md +438 -0
- package/skills/go/evals/README.md +56 -0
- package/skills/go/evals/cases.yaml +55 -0
- package/skills/go/references/concurrency.md +557 -0
- package/skills/go/references/http-services.md +529 -0
- package/skills/go/references/testing.md +338 -0
- package/skills/go/scripts/verify.sh +109 -0
- package/skills/google-workspace/SKILL.md +287 -0
- package/skills/google-workspace/evals/README.md +16 -0
- package/skills/google-workspace/evals/cases.yaml +44 -0
- package/skills/google-workspace/references/api-recipes.md +148 -0
- package/skills/google-workspace/references/auth-setup.md +100 -0
- package/skills/google-workspace/scripts/verify.sh +128 -0
- package/skills/grants/SKILL.md +171 -0
- package/skills/grants/evals/README.md +3 -0
- package/skills/grants/evals/cases.yaml +69 -0
- package/skills/grants/references/budget-justification.md +71 -0
- package/skills/grants/references/jurisdictions.md +35 -0
- package/skills/grants/references/logic-model.md +66 -0
- package/skills/grants/scripts/verify.sh +193 -0
- package/skills/harness/SKILL.md +329 -0
- package/skills/harness/assets/_TEMPLATE/.env.example +8 -0
- package/skills/harness/assets/_TEMPLATE/CREDENTIALS.md +25 -0
- package/skills/harness/assets/_TEMPLATE/README.md +25 -0
- package/skills/harness/assets/_TEMPLATE/test_connection.sh +30 -0
- package/skills/harness/evals/README.md +54 -0
- package/skills/harness/evals/cases.yaml +72 -0
- package/skills/harness/examples/audit-example.md +120 -0
- package/skills/harness/references/agents-md-template.md +41 -0
- package/skills/harness/references/audit-report-template.html +140 -0
- package/skills/harness/references/audit-report-template.md +116 -0
- package/skills/harness/references/claude-md-template.md +98 -0
- package/skills/harness/references/inbox-readme-template.md +51 -0
- package/skills/harness/references/ingest-formats.md +185 -0
- package/skills/harness/references/providers.yaml +3410 -0
- package/skills/harness/references/tools-readme-template.md +88 -0
- package/skills/harness/references/wiki-archive-template.html +81 -0
- package/skills/harness/references/wiki-article-template.md +20 -0
- package/skills/harness/references/wiki-dashboard-template.html +136 -0
- package/skills/harness/references/wiki-deep-improve-report-template.html +126 -0
- package/skills/harness/references/wiki-gaps-template.md +18 -0
- package/skills/harness/references/wiki-index-template.md +23 -0
- package/skills/harness/references/wiki-protocol.md +699 -0
- package/skills/harness/references/wiki-raw-template.md +7 -0
- package/skills/hetzner/SKILL.md +221 -0
- package/skills/hetzner/evals/README.md +35 -0
- package/skills/hetzner/evals/cases.yaml +46 -0
- package/skills/hetzner/references/cloud-init.md +120 -0
- package/skills/hetzner/references/plans-and-locations.md +56 -0
- package/skills/hetzner/scripts/verify.sh +122 -0
- package/skills/hiring/SKILL.md +248 -0
- package/skills/hiring/evals/README.md +13 -0
- package/skills/hiring/evals/cases.yaml +41 -0
- package/skills/hiring/references/templates.md +118 -0
- package/skills/htmx/SKILL.md +261 -0
- package/skills/htmx/evals/README.md +3 -0
- package/skills/htmx/evals/cases.yaml +38 -0
- package/skills/htmx/references/patterns.md +113 -0
- package/skills/htmx/references/server-contract.md +91 -0
- package/skills/htmx/scripts/verify.sh +93 -0
- package/skills/huggingface/SKILL.md +190 -0
- package/skills/huggingface/evals/README.md +11 -0
- package/skills/huggingface/evals/cases.yaml +41 -0
- package/skills/huggingface/references/endpoints-and-spaces.md +99 -0
- package/skills/huggingface/references/hub-and-cli.md +85 -0
- package/skills/huggingface/references/inference-providers.md +115 -0
- package/skills/huggingface/scripts/verify.sh +123 -0
- package/skills/implement/SKILL.md +283 -0
- package/skills/implement/evals/README.md +56 -0
- package/skills/implement/evals/cases.yaml +43 -0
- package/skills/init/SKILL.md +184 -0
- package/skills/init/evals/README.md +49 -0
- package/skills/init/evals/cases.yaml +74 -0
- package/skills/init/references/accompaniment-and-profile.md +140 -0
- package/skills/init/references/discovery.md +90 -0
- package/skills/init/references/recommend-skills.md +115 -0
- package/skills/init/scripts/verify.sh +122 -0
- package/skills/instagram-api/SKILL.md +241 -0
- package/skills/instagram-api/evals/README.md +3 -0
- package/skills/instagram-api/evals/cases.yaml +43 -0
- package/skills/instagram-api/references/insights-metrics.md +88 -0
- package/skills/instagram-api/references/publish-reel.md +98 -0
- package/skills/instagram-api/scripts/verify.sh +137 -0
- package/skills/inventory/SKILL.md +131 -0
- package/skills/inventory/evals/README.md +3 -0
- package/skills/inventory/evals/cases.yaml +43 -0
- package/skills/inventory/references/abc-xyz.md +52 -0
- package/skills/inventory/references/ddmrp.md +32 -0
- package/skills/inventory/references/reorder-policies.md +85 -0
- package/skills/inventory/references/safety-stock.md +63 -0
- package/skills/inventory/scripts/verify.sh +155 -0
- package/skills/investor-materials/SKILL.md +175 -0
- package/skills/investor-materials/evals/README.md +15 -0
- package/skills/investor-materials/evals/cases.yaml +60 -0
- package/skills/investor-materials/references/dataroom-checklist.md +134 -0
- package/skills/investor-materials/references/update-and-onepager-templates.md +152 -0
- package/skills/investor-materials/scripts/verify.sh +148 -0
- package/skills/invoicing/SKILL.md +154 -0
- package/skills/invoicing/evals/README.md +5 -0
- package/skills/invoicing/evals/cases.yaml +49 -0
- package/skills/invoicing/references/dunning-ladder.md +53 -0
- package/skills/invoicing/references/e-invoicing-mandates.md +43 -0
- package/skills/invoicing/scripts/fixtures/broken-invoice.json +13 -0
- package/skills/invoicing/scripts/fixtures/valid-invoice.json +15 -0
- package/skills/invoicing/scripts/verify.sh +133 -0
- package/skills/ip-trademark/SKILL.md +186 -0
- package/skills/ip-trademark/evals/README.md +10 -0
- package/skills/ip-trademark/evals/cases.yaml +47 -0
- package/skills/ip-trademark/references/jurisdictions.md +63 -0
- package/skills/ip-trademark/references/ownership-and-licensing.md +90 -0
- package/skills/java/SKILL.md +341 -0
- package/skills/java/evals/README.md +23 -0
- package/skills/java/evals/cases.yaml +43 -0
- package/skills/java/references/builds.md +133 -0
- package/skills/java/references/concurrency.md +108 -0
- package/skills/java/references/streams.md +102 -0
- package/skills/java/scripts/verify.sh +107 -0
- package/skills/knowledge-ops/SKILL.md +125 -0
- package/skills/knowledge-ops/evals/README.md +16 -0
- package/skills/knowledge-ops/evals/cases.yaml +50 -0
- package/skills/knowledge-ops/references/gardening-playbook.md +116 -0
- package/skills/kotlin-android/SKILL.md +245 -0
- package/skills/kotlin-android/evals/README.md +13 -0
- package/skills/kotlin-android/evals/cases.yaml +56 -0
- package/skills/kotlin-android/references/architecture.md +200 -0
- package/skills/kotlin-android/references/gradle-setup.md +125 -0
- package/skills/kotlin-android/scripts/verify.sh +109 -0
- package/skills/kpi-framework/SKILL.md +199 -0
- package/skills/kpi-framework/evals/README.md +11 -0
- package/skills/kpi-framework/evals/cases.yaml +42 -0
- package/skills/kpi-framework/references/definition-and-targets.md +64 -0
- package/skills/kpi-framework/references/metric-catalog.md +84 -0
- package/skills/landing-copy/SKILL.md +153 -0
- package/skills/landing-copy/evals/README.md +18 -0
- package/skills/landing-copy/evals/cases.yaml +63 -0
- package/skills/landing-copy/references/frameworks.md +61 -0
- package/skills/landing-copy/references/page-skeleton.md +92 -0
- package/skills/landing-copy/scripts/verify.sh +164 -0
- package/skills/laravel/SKILL.md +301 -0
- package/skills/laravel/evals/README.md +10 -0
- package/skills/laravel/evals/cases.yaml +45 -0
- package/skills/laravel/references/eloquent-patterns.md +126 -0
- package/skills/laravel/references/queues-and-scheduling.md +153 -0
- package/skills/laravel/scripts/verify.sh +128 -0
- package/skills/lead-gen/SKILL.md +155 -0
- package/skills/lead-gen/evals/README.md +3 -0
- package/skills/lead-gen/evals/cases.yaml +43 -0
- package/skills/lead-gen/references/data-sources.md +87 -0
- package/skills/lead-gen/references/scoring-model.md +93 -0
- package/skills/lead-gen/scripts/verify.sh +179 -0
- package/skills/linkedin-api/SKILL.md +211 -0
- package/skills/linkedin-api/evals/README.md +3 -0
- package/skills/linkedin-api/evals/cases.yaml +41 -0
- package/skills/linkedin-api/references/api-reference.md +168 -0
- package/skills/linkedin-api/scripts/verify.sh +98 -0
- package/skills/linkedin-carousels/SKILL.md +239 -0
- package/skills/linkedin-carousels/evals/README.md +13 -0
- package/skills/linkedin-carousels/evals/cases.yaml +62 -0
- package/skills/linkedin-carousels/references/carousel-patterns.md +200 -0
- package/skills/linkedin-carousels/scripts/verify.sh +160 -0
- package/skills/linkedin-content/SKILL.md +162 -0
- package/skills/linkedin-content/evals/README.md +13 -0
- package/skills/linkedin-content/evals/cases.yaml +62 -0
- package/skills/linkedin-content/references/hooks-and-formats.md +114 -0
- package/skills/linkedin-content/scripts/verify.sh +154 -0
- package/skills/linkedin-outreach/SKILL.md +174 -0
- package/skills/linkedin-outreach/evals/README.md +3 -0
- package/skills/linkedin-outreach/evals/cases.yaml +43 -0
- package/skills/linkedin-outreach/references/ledger-schema.md +48 -0
- package/skills/linkedin-outreach/references/sales-navigator-playbook.md +61 -0
- package/skills/linkedin-outreach/scripts/verify.sh +120 -0
- package/skills/linkedin-strategy/SKILL.md +167 -0
- package/skills/linkedin-strategy/evals/README.md +3 -0
- package/skills/linkedin-strategy/evals/cases.yaml +49 -0
- package/skills/linkedin-strategy/references/ssi-and-pillars.md +59 -0
- package/skills/linkedin-strategy/references/wiki-records.md +62 -0
- package/skills/linkedin-strategy/scripts/verify.sh +120 -0
- package/skills/llm-pipeline/SKILL.md +155 -0
- package/skills/llm-pipeline/evals/README.md +3 -0
- package/skills/llm-pipeline/evals/cases.yaml +44 -0
- package/skills/llm-pipeline/references/caching-layers.md +60 -0
- package/skills/llm-pipeline/references/litellm-router.md +101 -0
- package/skills/llm-pipeline/scripts/verify.sh +169 -0
- package/skills/logistics-ops/SKILL.md +219 -0
- package/skills/logistics-ops/evals/README.md +20 -0
- package/skills/logistics-ops/evals/cases.yaml +48 -0
- package/skills/logistics-ops/references/carriers-and-claims.md +105 -0
- package/skills/market-research/SKILL.md +145 -0
- package/skills/market-research/evals/README.md +3 -0
- package/skills/market-research/evals/cases.yaml +48 -0
- package/skills/market-research/references/demand-signals.md +63 -0
- package/skills/market-research/references/sizing-playbook.md +121 -0
- package/skills/market-research/scripts/verify.sh +215 -0
- package/skills/marketing/SKILL.md +233 -0
- package/skills/marketing/evals/README.md +61 -0
- package/skills/marketing/evals/cases.yaml +84 -0
- package/skills/marketing/references/brand-grounding.md +197 -0
- package/skills/marketing/references/campaigns-and-channels.md +151 -0
- package/skills/marketing/references/copy-frameworks.md +166 -0
- package/skills/marketing/references/landing-copy.md +191 -0
- package/skills/marketing/references/seo-geo.md +391 -0
- package/skills/marketing/scripts/seo_audit.py +166 -0
- package/skills/marketing/scripts/verify.sh +233 -0
- package/skills/medium-publishing/SKILL.md +152 -0
- package/skills/medium-publishing/evals/README.md +3 -0
- package/skills/medium-publishing/evals/cases.yaml +42 -0
- package/skills/medium-publishing/references/cross-post-and-canonical.md +65 -0
- package/skills/medium-publishing/references/legacy-api.md +100 -0
- package/skills/medium-strategy/SKILL.md +161 -0
- package/skills/medium-strategy/evals/README.md +3 -0
- package/skills/medium-strategy/evals/cases.yaml +50 -0
- package/skills/medium-strategy/references/distribution-and-boost.md +65 -0
- package/skills/medium-strategy/references/wiki-records.md +60 -0
- package/skills/medium-strategy/scripts/verify.sh +118 -0
- package/skills/medium-writing/SKILL.md +140 -0
- package/skills/medium-writing/evals/README.md +5 -0
- package/skills/medium-writing/evals/cases.yaml +39 -0
- package/skills/medium-writing/references/title-patterns.md +79 -0
- package/skills/meeting-notes/SKILL.md +168 -0
- package/skills/meeting-notes/evals/README.md +14 -0
- package/skills/meeting-notes/evals/cases.yaml +46 -0
- package/skills/meeting-notes/references/templates.md +140 -0
- package/skills/modal/SKILL.md +307 -0
- package/skills/modal/evals/README.md +29 -0
- package/skills/modal/evals/cases.yaml +50 -0
- package/skills/modal/references/images-gpu-cookbook.md +160 -0
- package/skills/modal/references/web-and-scaling.md +138 -0
- package/skills/modal/scripts/verify.sh +127 -0
- package/skills/mongodb/SKILL.md +342 -0
- package/skills/mongodb/evals/README.md +29 -0
- package/skills/mongodb/evals/cases.yaml +41 -0
- package/skills/mongodb/references/aggregation.md +115 -0
- package/skills/mongodb/references/data-modeling.md +135 -0
- package/skills/mongodb/references/transactions-and-ops.md +128 -0
- package/skills/mongodb/scripts/verify.sh +151 -0
- package/skills/monitoring/SKILL.md +155 -0
- package/skills/monitoring/evals/README.md +3 -0
- package/skills/monitoring/evals/cases.yaml +47 -0
- package/skills/monitoring/references/burn-rate-and-oncall.md +128 -0
- package/skills/monitoring/references/tool-setup.md +154 -0
- package/skills/monitoring/scripts/verify.sh +145 -0
- package/skills/mysql/SKILL.md +249 -0
- package/skills/mysql/evals/README.md +12 -0
- package/skills/mysql/evals/cases.yaml +49 -0
- package/skills/mysql/references/indexing-and-explain.md +161 -0
- package/skills/mysql/references/mysql-vs-mariadb.md +78 -0
- package/skills/mysql/references/online-ddl-and-migrations.md +120 -0
- package/skills/mysql/references/replication-and-ha.md +115 -0
- package/skills/mysql/scripts/verify.sh +141 -0
- package/skills/neon/SKILL.md +218 -0
- package/skills/neon/evals/README.md +11 -0
- package/skills/neon/evals/cases.yaml +45 -0
- package/skills/neon/references/branching-ci.md +86 -0
- package/skills/neon/scripts/verify.sh +78 -0
- package/skills/nestjs/SKILL.md +225 -0
- package/skills/nestjs/evals/README.md +3 -0
- package/skills/nestjs/evals/cases.yaml +38 -0
- package/skills/nestjs/references/cross-cutting.md +135 -0
- package/skills/nestjs/references/testing-recipes.md +105 -0
- package/skills/nestjs/scripts/verify.sh +98 -0
- package/skills/netlify/SKILL.md +208 -0
- package/skills/netlify/evals/README.md +13 -0
- package/skills/netlify/evals/cases.yaml +43 -0
- package/skills/netlify/references/functions.md +97 -0
- package/skills/netlify/references/netlify-toml.md +115 -0
- package/skills/netlify/scripts/verify.sh +95 -0
- package/skills/newsletter/SKILL.md +162 -0
- package/skills/newsletter/evals/README.md +12 -0
- package/skills/newsletter/evals/cases.yaml +42 -0
- package/skills/newsletter/references/growth-loops.md +73 -0
- package/skills/newsletter/references/welcome-sequence.md +62 -0
- package/skills/newsletter/scripts/verify.sh +173 -0
- package/skills/nextjs/SKILL.md +472 -0
- package/skills/nextjs/evals/README.md +59 -0
- package/skills/nextjs/evals/cases.yaml +56 -0
- package/skills/nextjs/references/data-and-caching.md +309 -0
- package/skills/nextjs/references/metadata.md +208 -0
- package/skills/nextjs/references/performance.md +325 -0
- package/skills/nextjs/references/react.md +383 -0
- package/skills/nextjs/references/security.md +239 -0
- package/skills/nextjs/references/testing.md +290 -0
- package/skills/nextjs/scripts/verify.sh +141 -0
- package/skills/no-code-app/SKILL.md +153 -0
- package/skills/no-code-app/evals/README.md +3 -0
- package/skills/no-code-app/evals/cases.yaml +43 -0
- package/skills/no-code-app/references/platform-limits.md +100 -0
- package/skills/nodejs/SKILL.md +242 -0
- package/skills/nodejs/evals/README.md +3 -0
- package/skills/nodejs/evals/cases.yaml +39 -0
- package/skills/nodejs/references/express5-migration.md +53 -0
- package/skills/nodejs/references/graceful-shutdown.md +73 -0
- package/skills/nodejs/scripts/verify.sh +122 -0
- package/skills/notion-connector/SKILL.md +234 -0
- package/skills/notion-connector/evals/README.md +15 -0
- package/skills/notion-connector/evals/cases.yaml +45 -0
- package/skills/notion-connector/references/api-versions.md +63 -0
- package/skills/notion-connector/references/property-shapes.md +110 -0
- package/skills/notion-connector/references/sync-patterns.md +95 -0
- package/skills/notion-connector/scripts/verify.sh +162 -0
- package/skills/observability/SKILL.md +231 -0
- package/skills/observability/evals/README.md +3 -0
- package/skills/observability/evals/cases.yaml +49 -0
- package/skills/observability/references/collector-config.md +98 -0
- package/skills/observability/references/instrumentation-recipes.md +115 -0
- package/skills/observability/scripts/verify.sh +156 -0
- package/skills/ollama/SKILL.md +213 -0
- package/skills/ollama/evals/README.md +9 -0
- package/skills/ollama/evals/cases.yaml +43 -0
- package/skills/ollama/references/api.md +148 -0
- package/skills/ollama/references/hardware-sizing.md +87 -0
- package/skills/ollama/scripts/verify.sh +116 -0
- package/skills/orient/SKILL.md +54 -0
- package/skills/orient/evals/README.md +16 -0
- package/skills/orient/evals/cases.yaml +57 -0
- package/skills/orient/references/orientation-contract.md +34 -0
- package/skills/parallel/SKILL.md +198 -0
- package/skills/parallel/evals/README.md +62 -0
- package/skills/parallel/evals/cases.yaml +44 -0
- package/skills/people-ops/SKILL.md +122 -0
- package/skills/people-ops/evals/README.md +14 -0
- package/skills/people-ops/evals/cases.yaml +43 -0
- package/skills/people-ops/references/templates.md +129 -0
- package/skills/performance/SKILL.md +221 -0
- package/skills/performance/evals/README.md +3 -0
- package/skills/performance/evals/cases.yaml +47 -0
- package/skills/performance/references/profiling-playbook.md +54 -0
- package/skills/performance/scripts/verify.sh +94 -0
- package/skills/phoenix/SKILL.md +169 -0
- package/skills/phoenix/evals/README.md +3 -0
- package/skills/phoenix/evals/cases.yaml +40 -0
- package/skills/phoenix/references/auth-and-scopes.md +82 -0
- package/skills/phoenix/references/ecto-patterns.md +93 -0
- package/skills/phoenix/references/liveview.md +134 -0
- package/skills/phoenix/scripts/verify.sh +73 -0
- package/skills/php/SKILL.md +397 -0
- package/skills/php/evals/README.md +12 -0
- package/skills/php/evals/cases.yaml +45 -0
- package/skills/php/references/tooling.md +170 -0
- package/skills/php/references/type-system.md +220 -0
- package/skills/php/scripts/verify.sh +155 -0
- package/skills/pitch-deck/SKILL.md +209 -0
- package/skills/pitch-deck/evals/README.md +15 -0
- package/skills/pitch-deck/evals/cases.yaml +55 -0
- package/skills/pitch-deck/references/numbers-that-matter.md +78 -0
- package/skills/pitch-deck/references/slide-spine.md +149 -0
- package/skills/pitch-deck/scripts/verify.sh +186 -0
- package/skills/plan/SKILL.md +204 -0
- package/skills/plan/evals/README.md +62 -0
- package/skills/plan/evals/cases.yaml +49 -0
- package/skills/plan/references/plan-template.md +124 -0
- package/skills/planetscale/SKILL.md +223 -0
- package/skills/planetscale/evals/README.md +11 -0
- package/skills/planetscale/evals/cases.yaml +46 -0
- package/skills/planetscale/references/deploy-requests.md +75 -0
- package/skills/planetscale/references/no-foreign-keys.md +88 -0
- package/skills/planetscale/scripts/verify.sh +115 -0
- package/skills/podcast/SKILL.md +166 -0
- package/skills/podcast/evals/README.md +17 -0
- package/skills/podcast/evals/cases.yaml +61 -0
- package/skills/podcast/references/rss-and-namespace.md +136 -0
- package/skills/podcast/scripts/verify.sh +246 -0
- package/skills/postgresdb/SKILL.md +372 -0
- package/skills/postgresdb/evals/README.md +55 -0
- package/skills/postgresdb/evals/cases.yaml +57 -0
- package/skills/postgresdb/references/migrations.md +279 -0
- package/skills/postgresdb/references/operations-and-security.md +267 -0
- package/skills/postgresdb/references/query-optimization.md +374 -0
- package/skills/postgresdb/references/schema-and-indexing.md +379 -0
- package/skills/postgresdb/scripts/verify.sh +191 -0
- package/skills/presentations/SKILL.md +296 -0
- package/skills/presentations/evals/README.md +61 -0
- package/skills/presentations/evals/cases.yaml +56 -0
- package/skills/presentations/references/brand-grounding.md +160 -0
- package/skills/presentations/references/markdown-decks.md +290 -0
- package/skills/presentations/references/pptx-python.md +242 -0
- package/skills/presentations/references/slide-design.md +261 -0
- package/skills/presentations/references/storytelling-and-decks.md +150 -0
- package/skills/presentations/scripts/verify.sh +252 -0
- package/skills/press-kit/SKILL.md +243 -0
- package/skills/press-kit/evals/README.md +15 -0
- package/skills/press-kit/evals/cases.yaml +55 -0
- package/skills/press-kit/references/release-types.md +102 -0
- package/skills/press-kit/references/templates.md +132 -0
- package/skills/press-kit/scripts/verify.sh +161 -0
- package/skills/pricing/SKILL.md +160 -0
- package/skills/pricing/evals/README.md +5 -0
- package/skills/pricing/evals/cases.yaml +44 -0
- package/skills/pricing/references/localization.md +56 -0
- package/skills/pricing/references/pricing-models.md +55 -0
- package/skills/pricing/scripts/verify.sh +91 -0
- package/skills/prisma-orm/SKILL.md +320 -0
- package/skills/prisma-orm/evals/README.md +12 -0
- package/skills/prisma-orm/evals/cases.yaml +56 -0
- package/skills/prisma-orm/references/migrations-and-v7-upgrade.md +197 -0
- package/skills/prisma-orm/references/queries-and-performance.md +169 -0
- package/skills/prisma-orm/scripts/verify.sh +137 -0
- package/skills/procurement/SKILL.md +179 -0
- package/skills/procurement/evals/README.md +20 -0
- package/skills/procurement/evals/cases.yaml +49 -0
- package/skills/procurement/references/scorecard-and-tco.md +100 -0
- package/skills/procurement/references/sourcing-requests.md +116 -0
- package/skills/procurement/scripts/verify.sh +280 -0
- package/skills/project-ops/SKILL.md +130 -0
- package/skills/project-ops/evals/README.md +3 -0
- package/skills/project-ops/evals/cases.yaml +71 -0
- package/skills/project-ops/references/raid-and-rag.md +58 -0
- package/skills/project-ops/references/status-report-template.md +68 -0
- package/skills/project-ops/scripts/verify.sh +257 -0
- package/skills/prompt-engineering/SKILL.md +138 -0
- package/skills/prompt-engineering/evals/README.md +11 -0
- package/skills/prompt-engineering/evals/cases.yaml +46 -0
- package/skills/prompt-engineering/references/eval-templates.md +94 -0
- package/skills/prompt-engineering/references/output-contracts.md +120 -0
- package/skills/prompt-engineering/scripts/verify.sh +84 -0
- package/skills/proposals/SKILL.md +159 -0
- package/skills/proposals/evals/README.md +3 -0
- package/skills/proposals/evals/cases.yaml +53 -0
- package/skills/proposals/references/proposal-skeleton.md +110 -0
- package/skills/proposals/references/sow-skeleton.md +79 -0
- package/skills/proposals/scripts/verify.sh +201 -0
- package/skills/python/SKILL.md +369 -0
- package/skills/python/evals/README.md +19 -0
- package/skills/python/evals/cases.yaml +46 -0
- package/skills/python/references/async.md +136 -0
- package/skills/python/references/stdlib.md +162 -0
- package/skills/python/references/typing.md +160 -0
- package/skills/python/scripts/verify.sh +125 -0
- package/skills/rag/SKILL.md +226 -0
- package/skills/rag/evals/README.md +13 -0
- package/skills/rag/evals/cases.yaml +45 -0
- package/skills/rag/references/evaluation.md +99 -0
- package/skills/rag/references/pipeline.md +151 -0
- package/skills/rag/scripts/verify.sh +99 -0
- package/skills/rails/SKILL.md +264 -0
- package/skills/rails/evals/README.md +12 -0
- package/skills/rails/evals/cases.yaml +47 -0
- package/skills/rails/references/activerecord.md +148 -0
- package/skills/rails/references/hotwire.md +139 -0
- package/skills/rails/references/testing.md +110 -0
- package/skills/rails/scripts/verify.sh +128 -0
- package/skills/railway/SKILL.md +245 -0
- package/skills/railway/evals/README.md +14 -0
- package/skills/railway/evals/cases.yaml +44 -0
- package/skills/railway/references/cli-cookbook.md +137 -0
- package/skills/railway/references/config-as-code.md +120 -0
- package/skills/railway/scripts/verify.sh +162 -0
- package/skills/react/SKILL.md +222 -0
- package/skills/react/evals/README.md +3 -0
- package/skills/react/evals/cases.yaml +43 -0
- package/skills/react/references/data-and-state.md +152 -0
- package/skills/react/references/performance.md +75 -0
- package/skills/react/references/routing.md +99 -0
- package/skills/react/scripts/verify.sh +123 -0
- package/skills/react-native/SKILL.md +220 -0
- package/skills/react-native/evals/README.md +3 -0
- package/skills/react-native/evals/cases.yaml +42 -0
- package/skills/react-native/references/native-modules.md +123 -0
- package/skills/react-native/references/performance-debugging.md +46 -0
- package/skills/react-native/scripts/verify.sh +117 -0
- package/skills/redis/SKILL.md +298 -0
- package/skills/redis/evals/README.md +10 -0
- package/skills/redis/evals/cases.yaml +43 -0
- package/skills/redis/references/caching.md +116 -0
- package/skills/redis/references/locks-and-rate-limiting.md +140 -0
- package/skills/redis/references/queues.md +102 -0
- package/skills/redis/scripts/verify.sh +164 -0
- package/skills/remotion-video/SKILL.md +218 -0
- package/skills/remotion-video/evals/README.md +23 -0
- package/skills/remotion-video/evals/cases.yaml +64 -0
- package/skills/remotion-video/references/captions-pipeline.md +163 -0
- package/skills/remotion-video/references/render-and-pipeline.md +131 -0
- package/skills/remotion-video/scripts/verify.sh +169 -0
- package/skills/render/SKILL.md +256 -0
- package/skills/render/evals/README.md +12 -0
- package/skills/render/evals/cases.yaml +45 -0
- package/skills/render/references/blueprint-reference.md +203 -0
- package/skills/render/scripts/verify.sh +167 -0
- package/skills/replicate/SKILL.md +210 -0
- package/skills/replicate/evals/README.md +9 -0
- package/skills/replicate/evals/cases.yaml +45 -0
- package/skills/replicate/references/cog-packaging.md +89 -0
- package/skills/replicate/references/deployments-api.md +87 -0
- package/skills/replicate/references/webhooks-and-async.md +110 -0
- package/skills/replicate/scripts/verify.sh +162 -0
- package/skills/replicate-images/SKILL.md +241 -0
- package/skills/replicate-images/evals/README.md +13 -0
- package/skills/replicate-images/evals/cases.yaml +41 -0
- package/skills/replicate-images/references/editing-recipes.md +129 -0
- package/skills/replicate-images/references/models.md +131 -0
- package/skills/replicate-images/scripts/verify.sh +178 -0
- package/skills/reporting/SKILL.md +178 -0
- package/skills/reporting/evals/README.md +12 -0
- package/skills/reporting/evals/cases.yaml +46 -0
- package/skills/reporting/references/pipeline.md +213 -0
- package/skills/reporting/scripts/verify.sh +149 -0
- package/skills/research-ops/SKILL.md +200 -0
- package/skills/research-ops/evals/README.md +13 -0
- package/skills/research-ops/evals/cases.yaml +38 -0
- package/skills/research-ops/references/credibility-rubric.md +78 -0
- package/skills/research-ops/references/memo-template.md +63 -0
- package/skills/research-ops/scripts/verify.sh +181 -0
- package/skills/retention/SKILL.md +206 -0
- package/skills/retention/evals/README.md +13 -0
- package/skills/retention/evals/cases.yaml +42 -0
- package/skills/retention/references/health-score-and-metrics.md +97 -0
- package/skills/retention/references/save-and-winback-plays.md +65 -0
- package/skills/review/SKILL.md +222 -0
- package/skills/review/evals/README.md +84 -0
- package/skills/review/evals/cases.yaml +55 -0
- package/skills/review-management/SKILL.md +204 -0
- package/skills/review-management/evals/README.md +13 -0
- package/skills/review-management/evals/cases.yaml +60 -0
- package/skills/review-management/references/platform-apis.md +86 -0
- package/skills/review-management/scripts/verify.sh +128 -0
- package/skills/ruby/SKILL.md +316 -0
- package/skills/ruby/evals/README.md +12 -0
- package/skills/ruby/evals/cases.yaml +41 -0
- package/skills/ruby/references/gems-and-testing.md +208 -0
- package/skills/ruby/references/metaprogramming.md +161 -0
- package/skills/ruby/scripts/verify.sh +83 -0
- package/skills/runpod/SKILL.md +238 -0
- package/skills/runpod/evals/README.md +11 -0
- package/skills/runpod/evals/cases.yaml +47 -0
- package/skills/runpod/references/cost-and-scaling.md +85 -0
- package/skills/runpod/references/serverless-workers.md +101 -0
- package/skills/runpod/scripts/verify.sh +126 -0
- package/skills/rust/SKILL.md +395 -0
- package/skills/rust/evals/README.md +12 -0
- package/skills/rust/evals/cases.yaml +42 -0
- package/skills/rust/references/async-tokio.md +141 -0
- package/skills/rust/references/axum-service.md +132 -0
- package/skills/rust/references/ownership.md +86 -0
- package/skills/rust/references/testing.md +108 -0
- package/skills/rust/scripts/verify.sh +91 -0
- package/skills/sales-pipeline/SKILL.md +162 -0
- package/skills/sales-pipeline/evals/README.md +13 -0
- package/skills/sales-pipeline/evals/cases.yaml +60 -0
- package/skills/sales-pipeline/references/forecasting-math.md +82 -0
- package/skills/sales-pipeline/references/stage-playbook.md +84 -0
- package/skills/sales-pipeline/scripts/verify.sh +210 -0
- package/skills/scaling/SKILL.md +137 -0
- package/skills/scaling/evals/README.md +3 -0
- package/skills/scaling/evals/cases.yaml +42 -0
- package/skills/scaling/references/load-testing-k6.md +127 -0
- package/skills/scaling/scripts/example.load.js +24 -0
- package/skills/scaling/scripts/verify.sh +70 -0
- package/skills/sdd/SKILL.md +203 -0
- package/skills/sdd/evals/README.md +60 -0
- package/skills/sdd/evals/cases.yaml +78 -0
- package/skills/sdd-init/SKILL.md +148 -0
- package/skills/sdd-init/evals/README.md +3 -0
- package/skills/sdd-init/evals/cases.yaml +43 -0
- package/skills/secure-coding/SKILL.md +365 -0
- package/skills/secure-coding/evals/README.md +68 -0
- package/skills/secure-coding/evals/cases.yaml +55 -0
- package/skills/secure-coding/references/authn-authz.md +249 -0
- package/skills/secure-coding/references/owasp-by-stack.md +574 -0
- package/skills/secure-coding/references/secrets-and-supply-chain.md +205 -0
- package/skills/secure-coding/references/threat-modeling.md +213 -0
- package/skills/secure-coding/scripts/verify.sh +208 -0
- package/skills/security-scan/SKILL.md +239 -0
- package/skills/security-scan/evals/README.md +14 -0
- package/skills/security-scan/evals/cases.yaml +50 -0
- package/skills/security-scan/references/tools.md +98 -0
- package/skills/security-scan/references/triage.md +93 -0
- package/skills/security-scan/scripts/verify.sh +108 -0
- package/skills/seo-geo/SKILL.md +192 -0
- package/skills/seo-geo/evals/README.md +14 -0
- package/skills/seo-geo/evals/cases.yaml +45 -0
- package/skills/seo-geo/references/ai-crawler-control.md +104 -0
- package/skills/seo-geo/references/schema-recipes.md +130 -0
- package/skills/seo-geo/scripts/verify.sh +236 -0
- package/skills/ship/SKILL.md +258 -0
- package/skills/ship/evals/README.md +89 -0
- package/skills/ship/evals/cases.yaml +44 -0
- package/skills/shopify/SKILL.md +229 -0
- package/skills/shopify/evals/README.md +14 -0
- package/skills/shopify/evals/cases.yaml +41 -0
- package/skills/shopify/references/apps-graphql.md +103 -0
- package/skills/shopify/references/checkout-extensibility.md +71 -0
- package/skills/shopify/references/liquid-themes.md +89 -0
- package/skills/shopify/scripts/verify.sh +120 -0
- package/skills/shortform-editing/SKILL.md +161 -0
- package/skills/shortform-editing/evals/README.md +16 -0
- package/skills/shortform-editing/evals/cases.yaml +61 -0
- package/skills/shortform-editing/references/captions.md +85 -0
- package/skills/shortform-editing/references/ffmpeg-pipeline.md +126 -0
- package/skills/shortform-editing/scripts/verify.sh +148 -0
- package/skills/shortform-ideation/SKILL.md +153 -0
- package/skills/shortform-ideation/evals/README.md +20 -0
- package/skills/shortform-ideation/evals/cases.yaml +58 -0
- package/skills/shortform-ideation/references/experiment-ledger.md +85 -0
- package/skills/shortform-ideation/references/trend-sources.md +69 -0
- package/skills/shortform-ideation/scripts/verify.sh +172 -0
- package/skills/shortform-packaging/SKILL.md +247 -0
- package/skills/shortform-packaging/evals/README.md +10 -0
- package/skills/shortform-packaging/evals/cases.yaml +48 -0
- package/skills/shortform-packaging/references/package-templates.md +117 -0
- package/skills/shortform-packaging/scripts/verify.sh +210 -0
- package/skills/shortform-strategy/SKILL.md +149 -0
- package/skills/shortform-strategy/evals/README.md +3 -0
- package/skills/shortform-strategy/evals/cases.yaml +52 -0
- package/skills/shortform-strategy/references/learning-loop-template.md +49 -0
- package/skills/shortform-strategy/references/platform-signals-2026.md +46 -0
- package/skills/shortform-strategy/scripts/verify.sh +176 -0
- package/skills/skill-scout/SKILL.md +133 -0
- package/skills/skill-scout/evals/README.md +12 -0
- package/skills/skill-scout/evals/cases.yaml +56 -0
- package/skills/skill-scout/references/install-commands.md +76 -0
- package/skills/skill-scout/scripts/verify.sh +154 -0
- package/skills/social-publisher/SKILL.md +179 -0
- package/skills/social-publisher/evals/README.md +14 -0
- package/skills/social-publisher/evals/cases.yaml +55 -0
- package/skills/social-publisher/references/calendar-schema.md +97 -0
- package/skills/social-publisher/references/platform-limits.md +56 -0
- package/skills/social-publisher/scripts/verify.sh +232 -0
- package/skills/solid-js/SKILL.md +260 -0
- package/skills/solid-js/evals/README.md +3 -0
- package/skills/solid-js/evals/cases.yaml +38 -0
- package/skills/solid-js/references/reactivity-deep-dive.md +89 -0
- package/skills/solid-js/references/router-and-start.md +93 -0
- package/skills/solid-js/scripts/verify.sh +130 -0
- package/skills/sop-builder/SKILL.md +233 -0
- package/skills/sop-builder/evals/README.md +14 -0
- package/skills/sop-builder/evals/cases.yaml +48 -0
- package/skills/sop-builder/references/sop-skeleton.md +170 -0
- package/skills/specify/SKILL.md +214 -0
- package/skills/specify/evals/README.md +73 -0
- package/skills/specify/evals/cases.yaml +80 -0
- package/skills/specify/references/eliciting-requirements.md +77 -0
- package/skills/specify/references/spec-template.md +60 -0
- package/skills/spreadsheet-ops/SKILL.md +180 -0
- package/skills/spreadsheet-ops/evals/README.md +33 -0
- package/skills/spreadsheet-ops/evals/cases.yaml +42 -0
- package/skills/spreadsheet-ops/references/formula-cookbook.md +70 -0
- package/skills/spreadsheet-ops/references/python-excel.md +87 -0
- package/skills/spreadsheet-ops/references/sheets-api-appsscript.md +118 -0
- package/skills/spreadsheet-ops/scripts/verify.sh +152 -0
- package/skills/spring-boot/SKILL.md +375 -0
- package/skills/spring-boot/evals/README.md +11 -0
- package/skills/spring-boot/evals/cases.yaml +49 -0
- package/skills/spring-boot/references/jpa.md +94 -0
- package/skills/spring-boot/references/security.md +92 -0
- package/skills/spring-boot/references/testing.md +95 -0
- package/skills/spring-boot/scripts/verify.sh +115 -0
- package/skills/sql/SKILL.md +286 -0
- package/skills/sql/evals/README.md +9 -0
- package/skills/sql/evals/cases.yaml +49 -0
- package/skills/sql/references/ctes-and-recursion.md +63 -0
- package/skills/sql/references/joins-and-sets.md +71 -0
- package/skills/sql/references/portability.md +38 -0
- package/skills/sql/references/window-functions.md +72 -0
- package/skills/sql/scripts/verify.sh +139 -0
- package/skills/sqlite-turso/SKILL.md +214 -0
- package/skills/sqlite-turso/evals/README.md +24 -0
- package/skills/sqlite-turso/evals/cases.yaml +45 -0
- package/skills/sqlite-turso/references/embedded-replicas.md +96 -0
- package/skills/sqlite-turso/scripts/verify.sh +95 -0
- package/skills/stripe/SKILL.md +269 -0
- package/skills/stripe/evals/README.md +11 -0
- package/skills/stripe/evals/cases.yaml +45 -0
- package/skills/stripe/references/going-live.md +64 -0
- package/skills/stripe/references/webhook-events.md +79 -0
- package/skills/stripe/scripts/verify.sh +130 -0
- package/skills/structured-extraction/SKILL.md +230 -0
- package/skills/structured-extraction/evals/README.md +13 -0
- package/skills/structured-extraction/evals/cases.yaml +70 -0
- package/skills/structured-extraction/references/providers.md +152 -0
- package/skills/structured-extraction/scripts/verify.sh +160 -0
- package/skills/suggest/SKILL.md +30 -0
- package/skills/suggest/evals/README.md +14 -0
- package/skills/suggest/evals/cases.yaml +51 -0
- package/skills/supabase/SKILL.md +268 -0
- package/skills/supabase/evals/README.md +12 -0
- package/skills/supabase/evals/cases.yaml +42 -0
- package/skills/supabase/references/auth-ssr.md +173 -0
- package/skills/supabase/references/rls-cookbook.md +122 -0
- package/skills/supabase/scripts/verify.sh +149 -0
- package/skills/svelte/SKILL.md +238 -0
- package/skills/svelte/evals/README.md +3 -0
- package/skills/svelte/evals/cases.yaml +41 -0
- package/skills/svelte/references/runes.md +97 -0
- package/skills/svelte/references/sveltekit-data.md +156 -0
- package/skills/svelte/scripts/verify.sh +128 -0
- package/skills/swift-ios/SKILL.md +217 -0
- package/skills/swift-ios/evals/README.md +3 -0
- package/skills/swift-ios/evals/cases.yaml +46 -0
- package/skills/swift-ios/references/concurrency.md +132 -0
- package/skills/swift-ios/references/testing.md +112 -0
- package/skills/swift-ios/scripts/verify.sh +98 -0
- package/skills/tasks/SKILL.md +260 -0
- package/skills/tasks/evals/README.md +70 -0
- package/skills/tasks/evals/cases.yaml +75 -0
- package/skills/tauri/SKILL.md +224 -0
- package/skills/tauri/evals/README.md +12 -0
- package/skills/tauri/evals/cases.yaml +46 -0
- package/skills/tauri/references/bundling-distribution.md +129 -0
- package/skills/tauri/references/security.md +143 -0
- package/skills/tauri/scripts/verify.sh +178 -0
- package/skills/technical-writing/SKILL.md +230 -0
- package/skills/technical-writing/evals/README.md +12 -0
- package/skills/technical-writing/evals/cases.yaml +53 -0
- package/skills/technical-writing/references/diataxis-modes.md +131 -0
- package/skills/technical-writing/references/vale-starter.md +90 -0
- package/skills/technical-writing/scripts/verify.sh +83 -0
- package/skills/terms-conditions/SKILL.md +147 -0
- package/skills/terms-conditions/evals/README.md +14 -0
- package/skills/terms-conditions/evals/cases.yaml +48 -0
- package/skills/terms-conditions/references/clause-library.md +158 -0
- package/skills/terms-conditions/references/notices-and-aup.md +125 -0
- package/skills/terms-conditions/scripts/verify.sh +92 -0
- package/skills/testing-go/SKILL.md +246 -0
- package/skills/testing-go/evals/README.md +3 -0
- package/skills/testing-go/evals/cases.yaml +44 -0
- package/skills/testing-go/references/coverage-and-benchmarks.md +85 -0
- package/skills/testing-go/references/mocks-and-fakes.md +140 -0
- package/skills/testing-go/references/synctest-and-concurrency.md +82 -0
- package/skills/testing-go/scripts/verify.sh +72 -0
- package/skills/testing-py/SKILL.md +179 -0
- package/skills/testing-py/evals/README.md +5 -0
- package/skills/testing-py/evals/cases.yaml +44 -0
- package/skills/testing-py/references/mocking.md +141 -0
- package/skills/testing-py/references/property-testing.md +99 -0
- package/skills/testing-py/scripts/verify.sh +117 -0
- package/skills/testing-web/SKILL.md +224 -0
- package/skills/testing-web/evals/README.md +11 -0
- package/skills/testing-web/evals/cases.yaml +52 -0
- package/skills/testing-web/references/jest-setup.md +88 -0
- package/skills/testing-web/references/recipes.md +116 -0
- package/skills/testing-web/scripts/verify.sh +111 -0
- package/skills/tiktok-api/SKILL.md +315 -0
- package/skills/tiktok-api/evals/README.md +17 -0
- package/skills/tiktok-api/evals/cases.yaml +51 -0
- package/skills/tiktok-api/references/metrics-and-publish.md +127 -0
- package/skills/tiktok-api/references/oauth-setup.md +105 -0
- package/skills/tiktok-api/references/wiki-schema.md +85 -0
- package/skills/tiktok-api/scripts/verify.sh +96 -0
- package/skills/together-fireworks/SKILL.md +181 -0
- package/skills/together-fireworks/evals/README.md +3 -0
- package/skills/together-fireworks/evals/cases.yaml +50 -0
- package/skills/together-fireworks/references/batch-and-tuning.md +59 -0
- package/skills/together-fireworks/references/models-and-pricing.md +79 -0
- package/skills/together-fireworks/scripts/verify.sh +165 -0
- package/skills/translation-l10n/SKILL.md +229 -0
- package/skills/translation-l10n/evals/README.md +3 -0
- package/skills/translation-l10n/evals/cases.yaml +39 -0
- package/skills/translation-l10n/references/icu-cookbook.md +82 -0
- package/skills/translation-l10n/references/rtl-and-bidi.md +60 -0
- package/skills/typescript/SKILL.md +258 -0
- package/skills/typescript/evals/README.md +15 -0
- package/skills/typescript/evals/cases.yaml +46 -0
- package/skills/typescript/references/build-and-monorepo.md +141 -0
- package/skills/typescript/references/type-system.md +162 -0
- package/skills/typescript/scripts/verify.sh +52 -0
- package/skills/unit-economics/SKILL.md +180 -0
- package/skills/unit-economics/evals/README.md +5 -0
- package/skills/unit-economics/evals/cases.yaml +43 -0
- package/skills/unit-economics/references/formulas.md +144 -0
- package/skills/unit-economics/scripts/verify.sh +179 -0
- package/skills/vector-db/SKILL.md +189 -0
- package/skills/vector-db/evals/README.md +10 -0
- package/skills/vector-db/evals/cases.yaml +45 -0
- package/skills/vector-db/references/engines.md +175 -0
- package/skills/vector-db/references/tuning.md +62 -0
- package/skills/vector-db/scripts/verify.sh +110 -0
- package/skills/vercel/SKILL.md +242 -0
- package/skills/vercel/evals/README.md +23 -0
- package/skills/vercel/evals/cases.yaml +45 -0
- package/skills/vercel/references/cli-cookbook.md +98 -0
- package/skills/vercel/references/vercel-json.md +120 -0
- package/skills/vercel/scripts/verify.sh +168 -0
- package/skills/verify/SKILL.md +188 -0
- package/skills/verify/evals/README.md +78 -0
- package/skills/verify/evals/cases.yaml +74 -0
- package/skills/video-shorts/SKILL.md +163 -0
- package/skills/video-shorts/evals/README.md +15 -0
- package/skills/video-shorts/evals/cases.yaml +56 -0
- package/skills/video-shorts/references/hook-and-script-patterns.md +95 -0
- package/skills/video-shorts/references/specs-and-safe-zones.md +74 -0
- package/skills/video-shorts/scripts/verify.sh +172 -0
- package/skills/vue-nuxt/SKILL.md +384 -0
- package/skills/vue-nuxt/evals/README.md +11 -0
- package/skills/vue-nuxt/evals/cases.yaml +49 -0
- package/skills/vue-nuxt/references/data-and-state.md +127 -0
- package/skills/vue-nuxt/references/migration-nuxt4.md +79 -0
- package/skills/vue-nuxt/references/nitro-and-rendering.md +117 -0
- package/skills/vue-nuxt/references/reactivity.md +135 -0
- package/skills/vue-nuxt/scripts/verify.sh +148 -0
- package/skills/webhooks/SKILL.md +246 -0
- package/skills/webhooks/evals/README.md +15 -0
- package/skills/webhooks/evals/cases.yaml +46 -0
- package/skills/webhooks/references/framework-raw-body.md +97 -0
- package/skills/webhooks/references/signature-schemes.md +66 -0
- package/skills/webhooks/scripts/verify.sh +142 -0
- package/skills/webinar/SKILL.md +196 -0
- package/skills/webinar/evals/README.md +14 -0
- package/skills/webinar/evals/cases.yaml +44 -0
- package/skills/webinar/references/email-cadence.md +75 -0
- package/skills/webinar/references/run-of-show.md +83 -0
- package/skills/whatsapp-telegram/SKILL.md +235 -0
- package/skills/whatsapp-telegram/evals/README.md +11 -0
- package/skills/whatsapp-telegram/evals/cases.yaml +44 -0
- package/skills/whatsapp-telegram/references/telegram-bot-api.md +91 -0
- package/skills/whatsapp-telegram/references/whatsapp-cloud-api.md +103 -0
- package/skills/whatsapp-telegram/scripts/verify.sh +90 -0
- package/skills/wordpress/SKILL.md +224 -0
- package/skills/wordpress/evals/README.md +3 -0
- package/skills/wordpress/evals/cases.yaml +50 -0
- package/skills/wordpress/references/hardening.md +108 -0
- package/skills/wordpress/references/performance.md +80 -0
- package/skills/wordpress/references/woocommerce.md +65 -0
- package/skills/wordpress/scripts/verify.sh +96 -0
- package/skills/worktrees/SKILL.md +199 -0
- package/skills/worktrees/evals/README.md +78 -0
- package/skills/worktrees/evals/cases.yaml +47 -0
- package/skills/youtube-api/SKILL.md +286 -0
- package/skills/youtube-api/evals/README.md +3 -0
- package/skills/youtube-api/evals/cases.yaml +50 -0
- package/skills/youtube-api/references/analytics-queries.md +89 -0
- package/skills/youtube-api/references/oauth-setup.md +55 -0
- package/skills/youtube-api/references/wiki-schema.md +70 -0
- package/skills/youtube-api/scripts/verify.sh +84 -0
- package/skills/youtube-ideation/SKILL.md +234 -0
- package/skills/youtube-ideation/evals/README.md +14 -0
- package/skills/youtube-ideation/evals/cases.yaml +52 -0
- package/skills/youtube-ideation/references/idea-ledger-and-loop.md +89 -0
- package/skills/youtube-ideation/references/research-and-signals.md +92 -0
- package/skills/youtube-ideation/scripts/verify.sh +237 -0
- package/skills/youtube-packaging/SKILL.md +220 -0
- package/skills/youtube-packaging/evals/README.md +16 -0
- package/skills/youtube-packaging/evals/cases.yaml +48 -0
- package/skills/youtube-packaging/references/description-and-chapters.md +135 -0
- package/skills/youtube-packaging/scripts/verify.sh +250 -0
- package/skills/youtube-strategy/SKILL.md +157 -0
- package/skills/youtube-strategy/evals/README.md +5 -0
- package/skills/youtube-strategy/evals/cases.yaml +61 -0
- package/skills/youtube-strategy/references/channel-architecture.md +46 -0
- package/skills/youtube-strategy/references/wiki-records.md +86 -0
- package/skills/youtube-strategy/scripts/verify.sh +118 -0
- package/skills/youtube-thumbnails/SKILL.md +180 -0
- package/skills/youtube-thumbnails/evals/README.md +11 -0
- package/skills/youtube-thumbnails/evals/cases.yaml +48 -0
- package/skills/youtube-thumbnails/references/composition-and-specs.md +69 -0
- package/skills/youtube-thumbnails/references/experiment-log-format.md +65 -0
- package/skills/youtube-thumbnails/scripts/verify.sh +123 -0
- package/targets/claude.js +23 -0
- package/targets/codex.js +29 -0
- package/targets/cursor.js +20 -0
- package/targets/gemini.js +29 -0
- package/targets/index.js +55 -0
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
#
|
|
3
|
+
# verify.sh — structural guardrail for an emitted YouTube package file.
|
|
4
|
+
#
|
|
5
|
+
# WHAT IT DOES (read-only; never edits or writes a file)
|
|
6
|
+
# Static, network-free checks over ONE package draft you point it at. The draft
|
|
7
|
+
# is plain text / markdown with labeled sections. Recognized labels (any case,
|
|
8
|
+
# English or ES/CA), one per line, the content following on the same or next
|
|
9
|
+
# lines until the next label:
|
|
10
|
+
# Titles: title / titulo / títol / titulos / títols (one title per line)
|
|
11
|
+
# Description: description / descripcion / descripció
|
|
12
|
+
# Tags: tags / etiquetas / etiquetes
|
|
13
|
+
# Hashtags: hashtags
|
|
14
|
+
# Chapters: chapters / capitulos / capítols (one "MM:SS Name" per line)
|
|
15
|
+
#
|
|
16
|
+
# Checks:
|
|
17
|
+
# 1. ≥ 2 titles present (the A/B set rule) -> FAIL if < 2.
|
|
18
|
+
# 2. Every title ≤ 100 chars -> FAIL per over-long title.
|
|
19
|
+
# Warn if a title opens with filler ("In this video"/"Welcome").
|
|
20
|
+
# 3. Description above-fold first line present and
|
|
21
|
+
# ≤ 150 chars -> FAIL if missing/over.
|
|
22
|
+
# 4. Chapters: ≥ 3 timestamps, first is 0:00/00:00,
|
|
23
|
+
# ascending, each gap ≥ 10s -> FAIL with the broken rule.
|
|
24
|
+
# 5. Hashtags: count ≥ 1 and ≤ 15 (>15 = all stripped) -> FAIL if > 15; warn if 0.
|
|
25
|
+
# 6. Tags: ≥ 1 and the joined field ≤ 500 chars -> FAIL if over budget.
|
|
26
|
+
#
|
|
27
|
+
# A clean OR empty/whitespace-only file exits 0 — never a false failure.
|
|
28
|
+
# Missing OPTIONAL sections warn; only present-but-broken sections fail.
|
|
29
|
+
#
|
|
30
|
+
# HOW TO RUN (inside YOUR project, not the skills repo)
|
|
31
|
+
# ./verify.sh package.md # run all checks
|
|
32
|
+
# ./verify.sh package.md --strict # treat warnings as failures (CI gate)
|
|
33
|
+
#
|
|
34
|
+
# EXIT CODES
|
|
35
|
+
# 0 clean, warnings only (without --strict), or empty/missing-content file
|
|
36
|
+
# 1 a hard failure — or any warning under --strict
|
|
37
|
+
# 2 bad usage (no file given, or file does not exist)
|
|
38
|
+
#
|
|
39
|
+
# Runs on stock macOS bash 3.2: no mapfile, no associative arrays, no bc.
|
|
40
|
+
|
|
41
|
+
set -euo pipefail
|
|
42
|
+
|
|
43
|
+
if [ -t 1 ]; then
|
|
44
|
+
RED=$'\033[31m'; GREEN=$'\033[32m'; YELLOW=$'\033[33m'; NC=$'\033[0m'
|
|
45
|
+
else
|
|
46
|
+
RED=''; GREEN=''; YELLOW=''; NC=''
|
|
47
|
+
fi
|
|
48
|
+
|
|
49
|
+
warn_count=0; fail_count=0
|
|
50
|
+
ok() { printf '%s[ ok ]%s %s\n' "$GREEN" "$NC" "$*"; }
|
|
51
|
+
warn() { printf '%s[warn]%s %s\n' "$YELLOW" "$NC" "$*"; warn_count=$((warn_count + 1)); }
|
|
52
|
+
fail() { printf '%s[fail]%s %s\n' "$RED" "$NC" "$*"; fail_count=$((fail_count + 1)); }
|
|
53
|
+
|
|
54
|
+
usage() { sed -n '2,44p' "$0" | sed 's/^# \{0,1\}//'; }
|
|
55
|
+
|
|
56
|
+
FILE=""
|
|
57
|
+
STRICT=0
|
|
58
|
+
while [ $# -gt 0 ]; do
|
|
59
|
+
case "$1" in
|
|
60
|
+
-h|--help) usage; exit 0 ;;
|
|
61
|
+
--strict) STRICT=1; shift ;;
|
|
62
|
+
-*) printf '%sunknown option: %s%s\n' "$RED" "$1" "$NC" >&2; usage; exit 2 ;;
|
|
63
|
+
*) if [ -z "$FILE" ]; then FILE="$1"; fi; shift ;;
|
|
64
|
+
esac
|
|
65
|
+
done
|
|
66
|
+
|
|
67
|
+
if [ -z "$FILE" ]; then
|
|
68
|
+
printf '%sno package file given%s\n' "$RED" "$NC" >&2; usage; exit 2
|
|
69
|
+
fi
|
|
70
|
+
if [ ! -f "$FILE" ]; then
|
|
71
|
+
printf '%sfile not found: %s%s\n' "$RED" "$FILE" "$NC" >&2; exit 2
|
|
72
|
+
fi
|
|
73
|
+
|
|
74
|
+
# Empty / whitespace-only file: nothing to check, do not false-fail.
|
|
75
|
+
if [ ! -s "$FILE" ] || ! grep -q '[^[:space:]]' "$FILE" 2>/dev/null; then
|
|
76
|
+
ok "empty file — nothing to check"
|
|
77
|
+
exit 0
|
|
78
|
+
fi
|
|
79
|
+
|
|
80
|
+
printf 'youtube-packaging verify — %s\n\n' "$FILE"
|
|
81
|
+
|
|
82
|
+
# --- section splitter ---------------------------------------------------------
|
|
83
|
+
# Emit the content lines that belong to a given section label. Reads the file,
|
|
84
|
+
# turns "on" at a matching label line, "off" at the next recognized label.
|
|
85
|
+
LABELS_RE='^[[:space:]]*(titles?|titulos?|títols?|titulo|títol|description|descripcion|descripció|tags|etiquetas|etiquetes|hashtags|chapters|capitulos|capítols)[[:space:]]*:'
|
|
86
|
+
|
|
87
|
+
section() {
|
|
88
|
+
# $1 = alternation of label tokens for the section to capture (no anchors)
|
|
89
|
+
awk -v want="$1" -v anylabel="$LABELS_RE" '
|
|
90
|
+
BEGIN { wantre = "^[[:space:]]*(" want ")[[:space:]]*:" }
|
|
91
|
+
{
|
|
92
|
+
line = $0
|
|
93
|
+
low = tolower(line)
|
|
94
|
+
if (low ~ anylabel) {
|
|
95
|
+
# is this the label we want? (anchored: the whole token before the colon)
|
|
96
|
+
active = (low ~ wantre) ? 1 : 0
|
|
97
|
+
# if the label line carries inline content after the colon, keep it
|
|
98
|
+
rest = line
|
|
99
|
+
sub(/^[^:]*:[[:space:]]*/, "", rest)
|
|
100
|
+
if (active && rest ~ /[^[:space:]]/) print rest
|
|
101
|
+
next
|
|
102
|
+
}
|
|
103
|
+
if (active && line ~ /[^[:space:]]/) print line
|
|
104
|
+
}
|
|
105
|
+
' "$FILE"
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
trim() { sed -E 's/^[[:space:]]+//; s/[[:space:]]+$//'; }
|
|
109
|
+
|
|
110
|
+
# --- 1 + 2. titles ------------------------------------------------------------
|
|
111
|
+
TITLES="$(section 'titulos?|títols?|titles?|titulo|títol' | trim | grep -E '[^[:space:]]' || true)"
|
|
112
|
+
TITLE_COUNT=0
|
|
113
|
+
if [ -n "$TITLES" ]; then
|
|
114
|
+
TITLE_COUNT="$(printf '%s\n' "$TITLES" | grep -c '[^[:space:]]' || true)"
|
|
115
|
+
fi
|
|
116
|
+
|
|
117
|
+
if [ "${TITLE_COUNT:-0}" -lt 2 ]; then
|
|
118
|
+
fail "found ${TITLE_COUNT} title(s) — ship a SET of 2-3 titles for the A/B test, never one"
|
|
119
|
+
else
|
|
120
|
+
ok "title set has ${TITLE_COUNT} titles (>= 2)"
|
|
121
|
+
fi
|
|
122
|
+
|
|
123
|
+
if [ -n "$TITLES" ]; then
|
|
124
|
+
while IFS= read -r t; do
|
|
125
|
+
[ -n "$t" ] || continue
|
|
126
|
+
tlen="$(printf '%s' "$t" | wc -m | tr -d '[:space:]')"
|
|
127
|
+
if [ "${tlen:-0}" -gt 100 ]; then
|
|
128
|
+
fail "title is ${tlen} chars (> 100 hard limit): ${t}"
|
|
129
|
+
fi
|
|
130
|
+
if printf '%s' "$t" | grep -Eiq '^[[:space:]]*(in this video|welcome to)'; then
|
|
131
|
+
warn "title opens with filler — front-load the keyword + hook: ${t}"
|
|
132
|
+
fi
|
|
133
|
+
done <<EOF
|
|
134
|
+
$TITLES
|
|
135
|
+
EOF
|
|
136
|
+
fi
|
|
137
|
+
|
|
138
|
+
# --- 3. description above-fold ------------------------------------------------
|
|
139
|
+
DESC_FIRST="$(section 'description|descripcion|descripció' | grep -E '[^[:space:]]' | head -1 | trim || true)"
|
|
140
|
+
if [ -z "$DESC_FIRST" ]; then
|
|
141
|
+
warn "no description section found — the above-fold line is the only part most viewers see"
|
|
142
|
+
else
|
|
143
|
+
dlen="$(printf '%s' "$DESC_FIRST" | wc -m | tr -d '[:space:]')"
|
|
144
|
+
if [ "${dlen:-0}" -gt 150 ]; then
|
|
145
|
+
fail "description above-fold line is ${dlen} chars (> ~150) — only ~125 show before 'Show more'"
|
|
146
|
+
else
|
|
147
|
+
ok "description above-fold line present (${dlen} chars)"
|
|
148
|
+
fi
|
|
149
|
+
fi
|
|
150
|
+
|
|
151
|
+
# --- 4. chapters --------------------------------------------------------------
|
|
152
|
+
CHAPTERS="$(section 'chapters|capitulos|capítols')"
|
|
153
|
+
# collect timestamps as total seconds, in order
|
|
154
|
+
STAMP_SECONDS=""
|
|
155
|
+
STAMP_COUNT=0
|
|
156
|
+
FIRST_STAMP=""
|
|
157
|
+
if [ -n "$CHAPTERS" ]; then
|
|
158
|
+
while IFS= read -r line; do
|
|
159
|
+
ts="$(printf '%s' "$line" | grep -oE '([0-9]+:)?[0-9]{1,2}:[0-9]{2}' | head -1 || true)"
|
|
160
|
+
[ -n "$ts" ] || continue
|
|
161
|
+
[ -z "$FIRST_STAMP" ] && FIRST_STAMP="$ts"
|
|
162
|
+
# parse H:MM:SS or M:SS / MM:SS into seconds
|
|
163
|
+
h=0; m=0; s=0
|
|
164
|
+
case "$ts" in
|
|
165
|
+
*:*:*) h="${ts%%:*}"; rest="${ts#*:}"; m="${rest%%:*}"; s="${rest#*:}" ;;
|
|
166
|
+
*:*) m="${ts%%:*}"; s="${ts#*:}" ;;
|
|
167
|
+
esac
|
|
168
|
+
total=$(( 10#$h * 3600 + 10#$m * 60 + 10#$s ))
|
|
169
|
+
STAMP_SECONDS="${STAMP_SECONDS}${total} "
|
|
170
|
+
STAMP_COUNT=$((STAMP_COUNT + 1))
|
|
171
|
+
done <<EOF
|
|
172
|
+
$CHAPTERS
|
|
173
|
+
EOF
|
|
174
|
+
fi
|
|
175
|
+
|
|
176
|
+
if [ "$STAMP_COUNT" -eq 0 ]; then
|
|
177
|
+
warn "no chapters section found — chapters lift watch time and add search jump-to targets"
|
|
178
|
+
else
|
|
179
|
+
chap_fail=0
|
|
180
|
+
if [ "$STAMP_COUNT" -lt 3 ]; then
|
|
181
|
+
fail "chapters: only ${STAMP_COUNT} timestamp(s) — YouTube needs >= 3 or it ignores ALL chapters"
|
|
182
|
+
chap_fail=1
|
|
183
|
+
fi
|
|
184
|
+
case "$FIRST_STAMP" in
|
|
185
|
+
0:00|00:00|0:0|00:0|0:00:00) : ;;
|
|
186
|
+
*) fail "chapters: first timestamp is '${FIRST_STAMP}', not 00:00 — without 0:00 YouTube ignores ALL chapters"; chap_fail=1 ;;
|
|
187
|
+
esac
|
|
188
|
+
# ascending + >=10s gaps
|
|
189
|
+
prev=""
|
|
190
|
+
for sec in $STAMP_SECONDS; do
|
|
191
|
+
if [ -n "$prev" ]; then
|
|
192
|
+
if [ "$sec" -le "$prev" ]; then
|
|
193
|
+
fail "chapters: timestamps not strictly ascending (${prev}s then ${sec}s)"
|
|
194
|
+
chap_fail=1
|
|
195
|
+
elif [ $(( sec - prev )) -lt 10 ]; then
|
|
196
|
+
fail "chapters: a chapter is shorter than 10s (${prev}s -> ${sec}s)"
|
|
197
|
+
chap_fail=1
|
|
198
|
+
fi
|
|
199
|
+
fi
|
|
200
|
+
prev="$sec"
|
|
201
|
+
done
|
|
202
|
+
[ "$chap_fail" -eq 0 ] && ok "chapters: ${STAMP_COUNT} timestamps, first 00:00, ascending, gaps >= 10s"
|
|
203
|
+
fi
|
|
204
|
+
|
|
205
|
+
# --- 5. hashtags --------------------------------------------------------------
|
|
206
|
+
HASHTAG_BLOCK="$(section 'hashtags' || true)"
|
|
207
|
+
# count '#word' tokens across the hashtag section (fallback: whole file's # tokens)
|
|
208
|
+
if [ -z "$(printf '%s' "$HASHTAG_BLOCK" | grep -E '[^[:space:]]' || true)" ]; then
|
|
209
|
+
HASHTAG_BLOCK="$(grep -oE '#[A-Za-z0-9_]+' "$FILE" || true)"
|
|
210
|
+
fi
|
|
211
|
+
HASHTAG_COUNT="$(printf '%s\n' "$HASHTAG_BLOCK" | grep -oE '#[A-Za-z0-9_]+' | grep -c '#' || true)"
|
|
212
|
+
if [ "${HASHTAG_COUNT:-0}" -eq 0 ]; then
|
|
213
|
+
warn "no hashtags found — 3-5 relevant hashtags help discovery; the first 3 show above the title"
|
|
214
|
+
elif [ "${HASHTAG_COUNT:-0}" -gt 15 ]; then
|
|
215
|
+
fail "found ${HASHTAG_COUNT} hashtags (> 15) — YouTube strips ALL hashtags over 15"
|
|
216
|
+
else
|
|
217
|
+
ok "hashtags within limit (${HASHTAG_COUNT}, 1-15)"
|
|
218
|
+
fi
|
|
219
|
+
|
|
220
|
+
# --- 6. tags ------------------------------------------------------------------
|
|
221
|
+
TAGS="$(section 'tags|etiquetas|etiquetes' | grep -E '[^[:space:]]' | trim || true)"
|
|
222
|
+
if [ -z "$TAGS" ]; then
|
|
223
|
+
warn "no tags section found — add 5-8 tags, first = exact target phrase"
|
|
224
|
+
else
|
|
225
|
+
# join into one field (comma or newline separated) and measure char budget
|
|
226
|
+
TAGS_JOINED="$(printf '%s' "$TAGS" | tr '\n' ',')"
|
|
227
|
+
TAGLEN="$(printf '%s' "$TAGS_JOINED" | wc -m | tr -d '[:space:]')"
|
|
228
|
+
if [ "${TAGLEN:-0}" -gt 500 ]; then
|
|
229
|
+
fail "tags field is ${TAGLEN} chars (> ~500 budget) — trim the tag list"
|
|
230
|
+
else
|
|
231
|
+
ok "tags present, field ${TAGLEN} chars (<= ~500)"
|
|
232
|
+
fi
|
|
233
|
+
fi
|
|
234
|
+
|
|
235
|
+
# --- summary ------------------------------------------------------------------
|
|
236
|
+
printf '\n'
|
|
237
|
+
if [ "$fail_count" -gt 0 ]; then
|
|
238
|
+
printf '%s%d hard failure(s), %d warning(s)%s\n' "$RED" "$fail_count" "$warn_count" "$NC"
|
|
239
|
+
exit 1
|
|
240
|
+
fi
|
|
241
|
+
if [ "$warn_count" -gt 0 ]; then
|
|
242
|
+
if [ "$STRICT" -eq 1 ]; then
|
|
243
|
+
printf '%s%d warning(s) — failing under --strict%s\n' "$YELLOW" "$warn_count" "$NC"
|
|
244
|
+
exit 1
|
|
245
|
+
fi
|
|
246
|
+
printf '%s%d warning(s), 0 hard failures%s\n' "$YELLOW" "$warn_count" "$NC"
|
|
247
|
+
exit 0
|
|
248
|
+
fi
|
|
249
|
+
printf '%sall checks passed%s\n' "$GREEN" "$NC"
|
|
250
|
+
exit 0
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: youtube-strategy
|
|
3
|
+
description: "Use when a YouTube channel needs a SYSTEM-level decision — positioning/niche, upload cadence, how videos chain into playlists and series, end-screen routing, or a 'what's working, what to do more of' review — read from and written back to the channel's own learning wiki, not one video's choices. Triggers: 'what should my channel be about', 'who is my channel for', 'how often should I post', 'should I niche down or stay broad', 'organize my videos so people binge several in a row', 'my end screens aren't keeping people watching', 'quarterly channel review what's working', 'qué temática para mi canal de YouTube', 'cada cuánto subo vídeos'. NOT generating next-video topics/hooks (that is youtube-ideation), NOT per-video titles/thumbnail-text (that is youtube-packaging), NOT designing the thumbnail image (that is youtube-thumbnails), NOT fetching metrics from the Data API (that is youtube-api)."
|
|
4
|
+
tags: [youtube, channel-strategy, positioning, cadence, playlists, retention]
|
|
5
|
+
recommends: [youtube-ideation, youtube-packaging, youtube-api, content-engine, decision-records]
|
|
6
|
+
origin: risco
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# YouTube Strategy — The Channel as a System, Not the Next Video
|
|
10
|
+
|
|
11
|
+
*You operate at channel/portfolio altitude.* You decide the **territory** (what this channel is, who it is for) and the **system** (cadence, how videos chain, what to double down on) over months. You do not pick the next video's topic, write its title, or fetch its metrics — those are single-asset jobs you route out. Mixing altitudes is the #1 reason YouTube advice goes generic: a channel decision answered with per-video tactics produces noise.
|
|
12
|
+
|
|
13
|
+
Your spine is a read/write loop with the channel's own history. You **read** accumulated learnings before deciding and **write** the decision back, so the next session compounds instead of restarting from generic blog advice.
|
|
14
|
+
|
|
15
|
+
## Altitude boundary — route single-asset work out
|
|
16
|
+
|
|
17
|
+
| The ask | Skill | Why it is not you |
|
|
18
|
+
|---|---|---|
|
|
19
|
+
| Topics/hooks for the next upload | `../youtube-ideation/SKILL.md` | You set the territory; ideation fills it. |
|
|
20
|
+
| Title + thumbnail text + description for one video | `youtube-packaging` | You set the positioning packaging must express; it executes per upload. |
|
|
21
|
+
| The thumbnail image itself | `../youtube-thumbnails/SKILL.md` | Image design is a craft asset, not a channel decision. |
|
|
22
|
+
| Pull metrics / OAuth / quotas / report endpoints | `youtube-api` | You consume numbers; you do not fetch them. |
|
|
23
|
+
| Render or edit the video | `remotion-video` | Production, not strategy. |
|
|
24
|
+
| Cross-platform calendar / scheduling | `../content-engine/SKILL.md`, `../social-publisher/SKILL.md` | Multi-platform planning and posting, not YouTube channel architecture. |
|
|
25
|
+
|
|
26
|
+
You are the only YouTube skill that works at channel/portfolio altitude and persists decisions to the wiki. Every sibling works on a single asset.
|
|
27
|
+
|
|
28
|
+
## The wiki loop comes FIRST (this is the spine)
|
|
29
|
+
|
|
30
|
+
Before any strategy decision, **READ** `02-DOCS/wiki/youtube/`. *Why: a strategy decision made without the channel's own retention/CTR history regresses to generic advice that ignores what this specific audience rewards.*
|
|
31
|
+
|
|
32
|
+
Extract, in order:
|
|
33
|
+
1. **Prior positioning** — what the channel claimed to be, and whether it held.
|
|
34
|
+
2. **Current cadence + whether it held** — the stated rate and whether quality dropped at it.
|
|
35
|
+
3. **Top retention/CTR performers** — which videos/playlists earned the watch time, and what they share.
|
|
36
|
+
4. **Killed experiments** — series or formats already sunset, so you do not re-propose a dead bet.
|
|
37
|
+
|
|
38
|
+
If `02-DOCS/wiki/youtube/` is empty or absent → **bootstrap it**: create the directory and a positioning stub, then proceed. Do not skip the loop because the dir is missing — create it and start the record now. Layout and templates are in `references/wiki-records.md`.
|
|
39
|
+
|
|
40
|
+
Cite what you grounded in (e.g. "cadence held at 2/wk per `02-DOCS/wiki/youtube/decisions/2026-03-cadence.md`"). If you grounded in nothing because the wiki was empty, say so and say you are bootstrapping.
|
|
41
|
+
|
|
42
|
+
## Positioning & niche
|
|
43
|
+
|
|
44
|
+
Positioning sits at a **three-factor intersection**. Pick the niche where all three overlap:
|
|
45
|
+
|
|
46
|
+
- **Sustained interest** — you can make 100+ videos here without burning out. *Why: cadence dies the moment the topic bores the creator.*
|
|
47
|
+
- **Measurable audience demand** — searches/views exist for it. *Why: passion without demand is a diary.*
|
|
48
|
+
- **Monetization potential** — CPM and competition leave room. *Why: a niche with no advertiser value caps the channel's ceiling regardless of views.*
|
|
49
|
+
|
|
50
|
+
(TubeBuddy; OutlierKit CPM-ranked niches, 2026.)
|
|
51
|
+
|
|
52
|
+
**Niche down 2–3 levels.** "Gaming / cooking / tech" are *industries*, not niches. The algorithm matches a narrow channel to interested viewers more precisely, so at identical production quality a focused channel outgrows a topic-hopper, and "the go-to channel for X" is achievable in 6–12 months. Walk the ladder:
|
|
53
|
+
|
|
54
|
+
```text
|
|
55
|
+
industry → category → angle → who-it's-for
|
|
56
|
+
tech → keyboards → budget mechanical boards → programmers who type all day
|
|
57
|
+
gaming → roguelikes → honest sub-$20 reviews → players who buy on a budget
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
- Bad: "a tech channel." (an industry — competes with everyone, recommended to no one specifically)
|
|
61
|
+
- Good: "honest reviews of budget mechanical keyboards for programmers." (a defensible go-to position)
|
|
62
|
+
|
|
63
|
+
**Broad vs narrow — decide by stage and goal:**
|
|
64
|
+
|
|
65
|
+
| Channel stage / goal | Lean | Why |
|
|
66
|
+
|---|---|---|
|
|
67
|
+
| New, <1k subs, finding fit | Narrow hard | Precision recommendation beats reach; you need a foothold, not a category. |
|
|
68
|
+
| Validated niche, want to grow share | Stay narrow, deepen | Become *the* answer in the niche before widening. |
|
|
69
|
+
| Established authority expanding | Adjacent widen only | Move to a neighboring angle, never jump industries — the audience graph breaks. |
|
|
70
|
+
| Topic-hopping with flat subs | Narrow now | Breadth is the diagnosis, not the cure. |
|
|
71
|
+
|
|
72
|
+
## Cadence
|
|
73
|
+
|
|
74
|
+
**Rule: pick the highest rate you can hold for 8 weeks without a quality drop.** *Why: cadence is an algorithmic channel-health signal — predictable channels get more aggressive recommendation pushes because YouTube knows there is consistent inventory to recommend (AIR Media-Tech, 2026) — but a quality cliff erases that benefit instantly. Consistency of strong videos beats raw frequency.*
|
|
75
|
+
|
|
76
|
+
Baselines, used as a starting frame, **then corrected by the wiki's own retention data, not by a blog number**:
|
|
77
|
+
|
|
78
|
+
- New channels: **1–2/week.**
|
|
79
|
+
- Many mid-size channels validate at **2–4/week.**
|
|
80
|
+
|
|
81
|
+
Run the gate before committing to a rate. If any answer is "no," step the cadence down a notch:
|
|
82
|
+
|
|
83
|
+
- [ ] Can the team sustain this rate for 8 weeks with no degradation in idea, script, or thumbnail quality?
|
|
84
|
+
- [ ] Is the idea backlog deep enough to feed it (no scraping-the-barrel uploads)?
|
|
85
|
+
- [ ] Is there thumbnail/packaging bandwidth for every slot at this rate?
|
|
86
|
+
|
|
87
|
+
If wiki retention shows watch time falling while cadence held steady, the problem is not "post more" — it is idea/packaging/structure (see the review loop). Raising cadence on a quality problem accelerates the decline.
|
|
88
|
+
|
|
89
|
+
## Channel architecture — playlists, series, end screens
|
|
90
|
+
|
|
91
|
+
The algorithm scores **session** watch time — whether your video extends the viewer's stay on the platform — and pushes channels that reliably start or extend sessions (SolveigMM, 2025). So you do not design videos in isolation; you design **chains**.
|
|
92
|
+
|
|
93
|
+
- **Playlists are binge paths, not folders.** A playlist titled to promise a journey ("Build a SaaS from zero") outperforms a dumping ground ("My videos 2026"). Strategic playlists + end screens can lift session time ~10–30% (Boss Wallah; Gyre, 2026).
|
|
94
|
+
- **Series Playlists** signal intended watch order and raise autoplay continuation. Use them when sequence matters.
|
|
95
|
+
- **End screens route to the next logical video**, not your most popular one — relevance keeps the session alive.
|
|
96
|
+
|
|
97
|
+
The reliable shape is a deliberate sequence:
|
|
98
|
+
|
|
99
|
+
```text
|
|
100
|
+
Part 1 (hook + promise) → Part 2 (payoff) → Case Study (proof) → Q&A (depth)
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Each step end-screens to the next; the playlist holds them in order. Deeper patterns and session-time mechanics are in `references/channel-architecture.md`.
|
|
104
|
+
|
|
105
|
+
## Review & double-down loop
|
|
106
|
+
|
|
107
|
+
A review is not "are views up." It is reading the wiki to find the rising signal and acting on it:
|
|
108
|
+
|
|
109
|
+
```text
|
|
110
|
+
Read what-worked + retention notes
|
|
111
|
+
│
|
|
112
|
+
Is watch time rising while cadence held steady?
|
|
113
|
+
│
|
|
114
|
+
┌────┴──────────────┬─────────────────────┐
|
|
115
|
+
RISING PLATEAUED DECLINING
|
|
116
|
+
│ │ │
|
|
117
|
+
idea/packaging/ diagnose: is it the sunset the series —
|
|
118
|
+
structure is idea (CTR low) or reallocate the slot;
|
|
119
|
+
working → DOUBLE the structure log it killed so it
|
|
120
|
+
DOWN: more of (AVD low)? route is never re-proposed
|
|
121
|
+
that format/angle the weak half out
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Read CTR (>~6% is healthy for new channels) and AVD/retention from the wiki to choose the next bet (EntreResource; AIR Media-Tech, 2026). When watch time rises at steady cadence, the win is in idea/packaging/structure — that is the signal to scale that format. Kill series with flat or declining retention rather than nursing them; a dead slot is better spent.
|
|
125
|
+
|
|
126
|
+
## Write the decision back (on exit, always)
|
|
127
|
+
|
|
128
|
+
A strategy session that does not write back does not compound — the next session starts from zero. On exit, append a **dated decision record** under `02-DOCS/wiki/youtube/` and, when reviewing, a **what-worked** entry tied to specific videos/playlists. Minimal record inline; full templates in `references/wiki-records.md`:
|
|
129
|
+
|
|
130
|
+
```markdown
|
|
131
|
+
# 2026-06-02 — Niche down to budget mechanical keyboards for programmers
|
|
132
|
+
- Context read: flat subs at 40 videos; top 3 by AVD all keyboard reviews (wiki/youtube/what-worked.md)
|
|
133
|
+
- Decision: reposition from "tech reviews" to "budget mechanical keyboards for programmers"; cadence 2/wk held
|
|
134
|
+
- Bets on metric: AVD on keyboard videos (currently ~48%) holding while non-keyboard topics are dropped
|
|
135
|
+
- Review date: 2026-09-02
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Every record names **the metric it is betting on** and a **review date**. A decision with no metric is an opinion, not a bet you can later check. Run `scripts/verify.sh 02-DOCS/wiki/youtube/` after writing to confirm the records are structurally complete.
|
|
139
|
+
|
|
140
|
+
## Anti-patterns
|
|
141
|
+
|
|
142
|
+
| Anti-pattern | Why it fails | Do instead |
|
|
143
|
+
|---|---|---|
|
|
144
|
+
| Chasing daily uploads | Hits the quality cliff; weak inventory drags the whole channel's recommendation health | Pick the rate you can hold 8 weeks at quality |
|
|
145
|
+
| Copying another channel's cadence | Their data is not yours; their audience rewards different things | Set cadence from your own wiki retention |
|
|
146
|
+
| Treating playlists as storage folders | No binge promise, no session lift | Build titled binge paths and series in watch order |
|
|
147
|
+
| Positioning as an industry ("a tech channel") | Competes with everyone, recommended to no one | Niche down 2–3 levels to a defensible angle |
|
|
148
|
+
| Deciding without reading the wiki | Regresses to generic blog advice that ignores this audience | READ `02-DOCS/wiki/youtube/` before any decision |
|
|
149
|
+
| Never writing the decision back | No compounding; every session restarts from zero | Append a dated record + the metric it bets on |
|
|
150
|
+
| "Post more" to fix falling retention | Accelerates the decline; the problem is idea/structure | Diagnose CTR vs AVD; fix the weak half |
|
|
151
|
+
| Jumping industries to grow | Breaks the audience graph; old subs churn | Widen only into adjacent angles |
|
|
152
|
+
|
|
153
|
+
## References & routing
|
|
154
|
+
|
|
155
|
+
- `references/wiki-records.md` — file layout under `02-DOCS/wiki/youtube/`, the decision-record and what-worked templates, and what `verify.sh` checks.
|
|
156
|
+
- `references/channel-architecture.md` — deeper playlist/Series-Playlist/end-screen patterns, session-time mechanics, and binge-sequence examples.
|
|
157
|
+
- Route out: next-video ideas → `../youtube-ideation/SKILL.md`; per-video packaging → `youtube-packaging`; raw metrics → `youtube-api`; decision-record discipline → `decision-records`.
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Evals — youtube-strategy
|
|
2
|
+
|
|
3
|
+
`cases.yaml` holds three groups. `should_trigger` lists channel-level prompts (positioning, cadence, playlist/series/end-screen architecture, "what's working" reviews, plus a Spanish and a no-keyword phrasing) that must load this skill. `should_not_trigger` lists single-asset prompts that must route to a real sibling instead (`youtube-ideation`, `youtube-packaging`, `youtube-thumbnails`, `youtube-api`, `social-publisher`). `capability` is one end-to-end scenario with a `must_include` rubric covering the read-wiki-first loop, three-factor positioning, data-driven cadence, a session-time architecture move, and writing a dated decision record back to the wiki.
|
|
4
|
+
|
|
5
|
+
There is no automated runner in this repo. Run it by hand or with the catalog harness: feed each `should_trigger`/`should_not_trigger` prompt to the router and confirm the routing matches; for `capability`, run the scenario against the skill and score the output against every `must_include` line (each is pass/fail). The artifact discipline is separately checked by `../scripts/verify.sh` against a real `02-DOCS/wiki/youtube/` tree.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
skill: youtube-strategy
|
|
2
|
+
|
|
3
|
+
# Prompts that MUST load `youtube-strategy`. This skill works at CHANNEL/portfolio
|
|
4
|
+
# altitude: positioning/niche, upload cadence, how videos chain into playlists/series,
|
|
5
|
+
# end-screen routing for session time, and "what's working" reviews — read from and
|
|
6
|
+
# written back to 02-DOCS/wiki/youtube/. It does NOT generate per-video topics/hooks
|
|
7
|
+
# (youtube-ideation), per-video titles/thumbnail-text (youtube-packaging), thumbnail
|
|
8
|
+
# images (youtube-thumbnails), or fetch metrics from the Data API (youtube-api).
|
|
9
|
+
should_trigger:
|
|
10
|
+
- prompt: "Should I niche down or keep my channel broad?"
|
|
11
|
+
why: "Core positioning decision — broad-vs-narrow at channel altitude is exactly what this skill owns."
|
|
12
|
+
|
|
13
|
+
- prompt: "How often should I be uploading given my retention is dropping?"
|
|
14
|
+
why: "Cadence decision tied to the channel's own retention data, not a generic number — the skill's data-driven cadence call."
|
|
15
|
+
|
|
16
|
+
- prompt: "Organize my videos so new viewers binge several in a row."
|
|
17
|
+
why: "Non-obvious: no 'strategy' word, but it is playlist/series/end-screen session-time architecture, owned here."
|
|
18
|
+
|
|
19
|
+
- prompt: "Quarterly channel review — what's working and what should I do more of?"
|
|
20
|
+
why: "The read-wiki + double-down loop; reading what-worked and choosing the next bet is the skill's spine."
|
|
21
|
+
|
|
22
|
+
- prompt: "Qué temática debería tener mi canal de YouTube y cada cuánto subo vídeos?"
|
|
23
|
+
why: "Spanish for 'what topic should my YouTube channel have and how often do I upload' — positioning + cadence, both channel-level."
|
|
24
|
+
|
|
25
|
+
- prompt: "My end screens aren't keeping people watching — how should I route them?"
|
|
26
|
+
why: "Session-time architecture (end-screen routing to the next logical video) is a channel-system decision, not a per-video edit."
|
|
27
|
+
|
|
28
|
+
should_not_trigger:
|
|
29
|
+
- prompt: "Give me 10 video ideas and hooks for next week's uploads."
|
|
30
|
+
route_to: youtube-ideation
|
|
31
|
+
why: "Generating specific topics/hooks fills the territory; strategy decides the territory but does not generate the ideas."
|
|
32
|
+
|
|
33
|
+
- prompt: "Write the title and thumbnail text for this upload."
|
|
34
|
+
route_to: youtube-packaging
|
|
35
|
+
why: "Per-video click optimization (title + thumbnail text + description) is packaging; strategy sets positioning, packaging expresses it per upload."
|
|
36
|
+
|
|
37
|
+
- prompt: "Design the thumbnail image for my new video."
|
|
38
|
+
route_to: youtube-thumbnails
|
|
39
|
+
why: "Designing the image is a craft asset job, not a channel-system decision."
|
|
40
|
+
|
|
41
|
+
- prompt: "Pull my last 28 days of watch-time data from the YouTube API."
|
|
42
|
+
route_to: youtube-api
|
|
43
|
+
why: "Fetching metrics, OAuth, quotas, report endpoints is the data plumbing; strategy consumes the numbers, it does not fetch them."
|
|
44
|
+
|
|
45
|
+
- prompt: "Schedule and cross-post this video to TikTok and Instagram too."
|
|
46
|
+
route_to: social-publisher
|
|
47
|
+
why: "Cross-platform scheduling/posting is social-publisher; strategy is YouTube channel architecture, not multi-platform distribution."
|
|
48
|
+
|
|
49
|
+
capability:
|
|
50
|
+
- scenario: >
|
|
51
|
+
A channel has 40 videos and flat subscriber growth. 02-DOCS/wiki/youtube/
|
|
52
|
+
already contains retention and CTR notes (the top 3 videos by AVD are all
|
|
53
|
+
keyboard reviews) and current cadence of 2/week that held. Produce a strategy
|
|
54
|
+
decision for where this channel should go next.
|
|
55
|
+
must_include:
|
|
56
|
+
- "Reads 02-DOCS/wiki/youtube/ first (prior positioning, whether cadence held, top retention/CTR performers, killed experiments) — or bootstraps the dir if it were empty"
|
|
57
|
+
- "Gives a positioning/niche-down recommendation grounded in the three factors (interest x demand x monetization), narrowing 2-3 levels from an industry to a defensible angle"
|
|
58
|
+
- "Gives a cadence recommendation justified by the channel's own retention data (e.g. hold 2/wk since it held at quality), not a generic blog number, and applies the 8-week sustainability gate"
|
|
59
|
+
- "Proposes at least one playlist/Series-Playlist/end-screen move for session time (e.g. a binge chain built around the keyboard format that already earns the best AVD)"
|
|
60
|
+
- "Writes a dated decision record back to 02-DOCS/wiki/youtube/ that names the single metric it bets on and a review date"
|
|
61
|
+
- "Routes single-asset work out: next-video ideas to youtube-ideation, per-video packaging to youtube-packaging, raw metrics to youtube-api"
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Channel architecture — chains that extend the session
|
|
2
|
+
|
|
3
|
+
The algorithm scores **session watch time**: whether a viewer who lands on your video stays on the platform longer because of it. A 12-minute video with great per-video retention that dumps the viewer back to the home feed is worth less than a good-enough video that hands them to the next one. Design chains, not isolated assets. (SolveigMM, "How the YouTube algorithm works in 2025"; Boss Wallah playlist strategy, 2026; Gyre end-screen guide, 2026.)
|
|
4
|
+
|
|
5
|
+
## Playlists as binge paths
|
|
6
|
+
|
|
7
|
+
A playlist is a promise of a journey, not a storage bin.
|
|
8
|
+
|
|
9
|
+
- **Title the promise, not the contents.** "Build a SaaS from zero to first customer" beats "SaaS videos." The title sells the binge.
|
|
10
|
+
- **Order for momentum.** First video is the strongest hook; each subsequent one pays off the prior. Front-load the win.
|
|
11
|
+
- **One playlist = one outcome.** If a viewer cannot say what they will be able to do after finishing it, the playlist is a folder.
|
|
12
|
+
|
|
13
|
+
## Series Playlists
|
|
14
|
+
|
|
15
|
+
Series Playlists explicitly mark intended watch order. YouTube then signals "next in series," which raises autoplay continuation. Use them when sequence genuinely matters (a build-along, a course, a multi-part teardown). Do not mark an unordered topic collection as a series — the broken sequence promise hurts more than it helps.
|
|
16
|
+
|
|
17
|
+
## End-screen routing
|
|
18
|
+
|
|
19
|
+
End screens are routing, not decoration. The default mistake is routing every video to your single most popular upload.
|
|
20
|
+
|
|
21
|
+
- **Route to the next logical video**, the one this viewer most likely wants next given what they just watched. Relevance sustains the session; a popular-but-unrelated link breaks it.
|
|
22
|
+
- **Two elements max** in the last ~20 seconds: the next video + (optionally) the playlist that contains it. More choices lower the click.
|
|
23
|
+
- **Match the end screen to the chain position.** Part 1 ends to Part 2, not to the channel trailer.
|
|
24
|
+
|
|
25
|
+
Strategic playlists plus relevant end screens can lift session time roughly **10–30%** (Boss Wallah; Gyre, 2026). That lift is a channel-health signal, not a per-video one — it compounds across the catalog.
|
|
26
|
+
|
|
27
|
+
## The reliable binge sequence
|
|
28
|
+
|
|
29
|
+
```text
|
|
30
|
+
Part 1 Part 2 Case Study Q&A
|
|
31
|
+
hook + promise → the payoff → proof it works → depth / objections
|
|
32
|
+
│ end-screen │ end-screen │ end-screen │ end-screen
|
|
33
|
+
▼ ▼ ▼ ▼
|
|
34
|
+
Part 2 Case Study Q&A related playlist
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Each node end-screens to the next; a Series Playlist holds all four in order. The sequence works because it mirrors how interest deepens: curiosity → resolution → evidence → mastery.
|
|
38
|
+
|
|
39
|
+
## Concrete examples
|
|
40
|
+
|
|
41
|
+
| Niche | Binge sequence | Why it chains |
|
|
42
|
+
|---|---|---|
|
|
43
|
+
| Budget keyboards for programmers | "5 sub-$20 boards tested" → "The one I kept after 3 months" → "Building my programmer setup around it" → "Your keyboard questions answered" | Comparison hooks, then long-term proof, then application, then objections |
|
|
44
|
+
| SaaS build-along | "Idea to landing page" → "First paid feature" → "How I got 10 customers" → "What I'd do differently" | Each step is the next thing the same viewer needs |
|
|
45
|
+
|
|
46
|
+
When picking which chain to invest in, read `what-worked.md`: build the sequence around the format that already earns the channel's best AVD, not around what you wish performed.
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Wiki records — the read/write loop on disk
|
|
2
|
+
|
|
3
|
+
This is where the channel's strategy memory lives. The skill READs it on entry and WRITEs to it on exit so sessions compound. Keep it append-only.
|
|
4
|
+
|
|
5
|
+
## File layout under `02-DOCS/wiki/youtube/`
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
02-DOCS/wiki/youtube/
|
|
9
|
+
├── positioning.md # current claim: niche, who-it's-for, the three-factor rationale
|
|
10
|
+
├── what-worked.md # running log of wins/losses tied to specific videos/playlists
|
|
11
|
+
└── decisions/ # one dated file per strategy decision (append-only)
|
|
12
|
+
├── 2026-03-cadence.md
|
|
13
|
+
└── 2026-06-niche-down.md
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
- `positioning.md` is the single living statement of what the channel is. Overwrite it when positioning changes, but record the change as a decision file.
|
|
17
|
+
- `decisions/` is never edited after the fact — supersede an old decision with a new dated file, do not rewrite history. *Why: the value is the audit trail of what was tried and what it bet on.*
|
|
18
|
+
- A single running `decisions.md` log is acceptable for small channels instead of per-file; `verify.sh` accepts either.
|
|
19
|
+
|
|
20
|
+
## Bootstrap (empty or absent dir)
|
|
21
|
+
|
|
22
|
+
When `02-DOCS/wiki/youtube/` does not exist, create it and a positioning stub before deciding anything:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
mkdir -p 02-DOCS/wiki/youtube/decisions
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
`positioning.md` stub:
|
|
29
|
+
|
|
30
|
+
```markdown
|
|
31
|
+
# Channel positioning
|
|
32
|
+
- Niche: <to define — narrow 2-3 levels, not an industry>
|
|
33
|
+
- Who it's for: <specific viewer>
|
|
34
|
+
- Three-factor check: interest=<>, demand=<>, monetization=<>
|
|
35
|
+
- Last reviewed: <date>
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Decision-record template
|
|
39
|
+
|
|
40
|
+
Every decision file carries these fields. The metric line is mandatory — a decision with no metric is an opinion, not a checkable bet.
|
|
41
|
+
|
|
42
|
+
```markdown
|
|
43
|
+
# <YYYY-MM-DD> — <one-line decision title>
|
|
44
|
+
- Context read: <what the wiki/data said that drove this; cite files>
|
|
45
|
+
- Decision: <positioning / cadence / series choice, stated concretely>
|
|
46
|
+
- Bets on metric: <the single metric this decision expects to move, with current value>
|
|
47
|
+
- Review date: <YYYY-MM-DD — when to check whether the bet paid off>
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Worked example:
|
|
51
|
+
|
|
52
|
+
```markdown
|
|
53
|
+
# 2026-06-02 — Niche down to budget mechanical keyboards for programmers
|
|
54
|
+
- Context read: flat subs at 40 videos; top 3 by AVD all keyboard reviews (what-worked.md)
|
|
55
|
+
- Decision: reposition from "tech reviews" to "budget mechanical keyboards for programmers"; hold cadence 2/wk
|
|
56
|
+
- Bets on metric: AVD on keyboard videos (~48%) holds while non-keyboard topics are dropped
|
|
57
|
+
- Review date: 2026-09-02
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## What-worked template
|
|
61
|
+
|
|
62
|
+
Append one entry per observed win or loss, tied to a real asset so future sessions can pattern-match.
|
|
63
|
+
|
|
64
|
+
```markdown
|
|
65
|
+
## <YYYY-MM-DD> — <video or playlist id/title>
|
|
66
|
+
- Metric: <CTR / AVD / session lift, with the number>
|
|
67
|
+
- Lesson: <the transferable insight — what to do more or less of>
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Example:
|
|
71
|
+
|
|
72
|
+
```markdown
|
|
73
|
+
## 2026-05-20 — "I Tested 5 Sub-$20 Keyboards" (vid abc123)
|
|
74
|
+
- Metric: CTR 9.1%, AVD 52% (channel best)
|
|
75
|
+
- Lesson: comparison + price ceiling in the title; double down on multi-product budget comparisons
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## What `verify.sh` checks
|
|
79
|
+
|
|
80
|
+
`scripts/verify.sh 02-DOCS/wiki/youtube/` is a read-only structural lint, no network:
|
|
81
|
+
|
|
82
|
+
1. The target `02-DOCS/wiki/youtube/` directory exists.
|
|
83
|
+
2. At least one decision record is present (a `decisions/*.md` file or a `decisions.md` log).
|
|
84
|
+
3. Each decision record contains the three required signals: a date, a `Decision:` line, and a named metric/bet (a `Bets on metric:` line or equivalent `metric`/`bet` field).
|
|
85
|
+
|
|
86
|
+
A record missing the metric field is a hard failure with a clear message. An empty or missing target reports cleanly and exits 0 — no false failure on a fresh channel.
|