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,170 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
#
|
|
3
|
+
# verify.sh — structural guardrail for a drafted cold email / sequence.
|
|
4
|
+
#
|
|
5
|
+
# WHAT IT DOES (read-only; never edits or writes a file)
|
|
6
|
+
# Static, network-free checks over ONE draft file you point it at (a cold
|
|
7
|
+
# email or a multi-step sequence in plain text / markdown):
|
|
8
|
+
# 1. First-touch length: the first message block's body is over ~80 words
|
|
9
|
+
# -> warn (soft; brevity is a strong preference, not a law).
|
|
10
|
+
# 2. Single binary CTA: more than one question-mark line ("?") in the first
|
|
11
|
+
# touch -> warn (a cold first touch should ask exactly one binary thing).
|
|
12
|
+
# 3. Opt-out present: no unsubscribe / opt-out / "reply stop" line anywhere
|
|
13
|
+
# -> FAIL (CAN-SPAM/GDPR hard requirement).
|
|
14
|
+
# 4. Postal address present: no street-style postal-address placeholder
|
|
15
|
+
# (a line with a digit + a street/PO token, or an explicit
|
|
16
|
+
# {{address}} / [address] placeholder) -> FAIL (CAN-SPAM requirement).
|
|
17
|
+
# 5. Banlist: spam-trigger + AI-tell phrases ("I hope this email finds you
|
|
18
|
+
# well", "just circling back", "just following up", "act now",
|
|
19
|
+
# "100% free", "free guide", "guarantee(d)", "limited time",
|
|
20
|
+
# "to whom it may concern", "I came across your") -> warn each hit.
|
|
21
|
+
# 6. Unfilled template slots ({{...}}, [SLOT], ???) outside the address
|
|
22
|
+
# line -> warn (fill before sending).
|
|
23
|
+
#
|
|
24
|
+
# Only #3 and #4 are hard failures. Everything else is a warning. A clean OR
|
|
25
|
+
# empty/missing-content file exits 0 — never a false failure.
|
|
26
|
+
#
|
|
27
|
+
# HOW TO RUN (inside YOUR project, not the skills repo)
|
|
28
|
+
# ./verify.sh draft.md # warnings + hard checks
|
|
29
|
+
# ./verify.sh draft.md --ceiling 100 # raise the first-touch word ceiling
|
|
30
|
+
# ./verify.sh draft.md --strict # treat warnings as failures (CI gate)
|
|
31
|
+
#
|
|
32
|
+
# EXIT CODES
|
|
33
|
+
# 0 clean, warnings only (without --strict), or empty/missing-content file
|
|
34
|
+
# 1 a hard failure (no opt-out, or no postal address) — or any warning under --strict
|
|
35
|
+
# 2 bad usage (no file given, or file does not exist)
|
|
36
|
+
#
|
|
37
|
+
# Runs on stock macOS bash 3.2: no mapfile, no associative arrays, no bc.
|
|
38
|
+
|
|
39
|
+
set -euo pipefail
|
|
40
|
+
|
|
41
|
+
if [ -t 1 ]; then
|
|
42
|
+
RED=$'\033[31m'; GREEN=$'\033[32m'; YELLOW=$'\033[33m'; NC=$'\033[0m'
|
|
43
|
+
else
|
|
44
|
+
RED=''; GREEN=''; YELLOW=''; NC=''
|
|
45
|
+
fi
|
|
46
|
+
|
|
47
|
+
warn_count=0; fail_count=0
|
|
48
|
+
ok() { printf '%s[ ok ]%s %s\n' "$GREEN" "$NC" "$*"; }
|
|
49
|
+
warn() { printf '%s[warn]%s %s\n' "$YELLOW" "$NC" "$*"; warn_count=$((warn_count + 1)); }
|
|
50
|
+
fail() { printf '%s[fail]%s %s\n' "$RED" "$NC" "$*"; fail_count=$((fail_count + 1)); }
|
|
51
|
+
|
|
52
|
+
usage() { sed -n '2,42p' "$0" | sed 's/^# \{0,1\}//'; }
|
|
53
|
+
|
|
54
|
+
FILE=""
|
|
55
|
+
CEILING=80
|
|
56
|
+
STRICT=0
|
|
57
|
+
while [ $# -gt 0 ]; do
|
|
58
|
+
case "$1" in
|
|
59
|
+
-h|--help) usage; exit 0 ;;
|
|
60
|
+
--ceiling) CEILING="${2:-80}"; shift 2 ;;
|
|
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 draft 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 'cold-outreach verify — %s (ceiling=%s words)\n\n' "$FILE" "$CEILING"
|
|
81
|
+
|
|
82
|
+
# --- isolate the first-touch block --------------------------------------------
|
|
83
|
+
# Heuristic: the first touch ends at the first "STEP 2", "Day +", "Follow-up",
|
|
84
|
+
# or a markdown heading after content. We grab everything up to that marker,
|
|
85
|
+
# then strip subject/footer-ish lines for the word count.
|
|
86
|
+
FIRST_BLOCK="$(awk '
|
|
87
|
+
NR==1 {seen=0}
|
|
88
|
+
/^[[:space:]]*(STEP[[:space:]]*2|Follow[- ]?up[[:space:]]*2|Day[[:space:]]*\+|DM[[:space:]]*2|##[[:space:]])/ && seen {exit}
|
|
89
|
+
/[^[:space:]]/ {seen=1}
|
|
90
|
+
{print}
|
|
91
|
+
' "$FILE")"
|
|
92
|
+
|
|
93
|
+
# Body words: drop subject lines, unsubscribe/footer lines, and address lines.
|
|
94
|
+
FIRST_WORDS="$(printf '%s\n' "$FIRST_BLOCK" \
|
|
95
|
+
| grep -iv -e '^[[:space:]]*subject:' -e '^[[:space:]]*asunto:' \
|
|
96
|
+
-e 'unsubscribe' -e 'opt[- ]out' -e 'reply "stop"' -e 'reply stop' \
|
|
97
|
+
| tr -s '[:space:]' '\n' | grep -c '[^[:space:]]' || true)"
|
|
98
|
+
|
|
99
|
+
if [ "${FIRST_WORDS:-0}" -gt "$CEILING" ]; then
|
|
100
|
+
warn "first touch is ~${FIRST_WORDS} words (over the ${CEILING}-word ceiling) — tighten it"
|
|
101
|
+
else
|
|
102
|
+
ok "first-touch length ~${FIRST_WORDS} words (<= ${CEILING})"
|
|
103
|
+
fi
|
|
104
|
+
|
|
105
|
+
# --- single binary CTA in the first touch -------------------------------------
|
|
106
|
+
CTA_LINES="$(printf '%s\n' "$FIRST_BLOCK" | grep -c '?' || true)"
|
|
107
|
+
if [ "${CTA_LINES:-0}" -gt 1 ]; then
|
|
108
|
+
warn "first touch has ${CTA_LINES} question lines — a cold first touch should ask exactly one binary thing"
|
|
109
|
+
elif [ "${CTA_LINES:-0}" -eq 0 ]; then
|
|
110
|
+
warn "first touch has no question-mark CTA — add one binary yes/no ask"
|
|
111
|
+
else
|
|
112
|
+
ok "first touch has exactly one CTA line"
|
|
113
|
+
fi
|
|
114
|
+
|
|
115
|
+
# --- opt-out present (hard) ----------------------------------------------------
|
|
116
|
+
if grep -Eiq 'unsubscribe|opt[- ]out|reply[[:space:]]+["'\'']?stop|darse de baja|cancelar la suscripci' "$FILE"; then
|
|
117
|
+
ok "opt-out / unsubscribe line present"
|
|
118
|
+
else
|
|
119
|
+
fail "no opt-out / unsubscribe line found — CAN-SPAM/GDPR requires a working opt-out"
|
|
120
|
+
fi
|
|
121
|
+
|
|
122
|
+
# --- postal address present (hard) --------------------------------------------
|
|
123
|
+
# Accept either an explicit placeholder or a line that looks like a street addr.
|
|
124
|
+
if grep -Eiq '\{\{[[:space:]]*(postal[_ ]?)?address|\[[[:space:]]*(postal[_ ]?)?address' "$FILE" \
|
|
125
|
+
|| grep -Eiq '[0-9]+[[:space:]].*(street|st\.|ave|avenue|road|rd\.|blvd|suite|ste\.|p\.?o\.? box|calle|carrer|via)' "$FILE"; then
|
|
126
|
+
ok "postal address (or placeholder) present"
|
|
127
|
+
else
|
|
128
|
+
fail "no physical postal address found — CAN-SPAM requires one (a {{address}} placeholder counts)"
|
|
129
|
+
fi
|
|
130
|
+
|
|
131
|
+
# --- banlist: spam-trigger + AI-tell phrases ----------------------------------
|
|
132
|
+
BAN='i hope this email finds you well|just circling back|just following up|circling back|act now|100% free|free guide|guarantee|limited time|to whom it may concern|i came across your|dear sir or madam'
|
|
133
|
+
HITS="$(grep -Eio "$BAN" "$FILE" 2>/dev/null | sort -u || true)"
|
|
134
|
+
if [ -n "$HITS" ]; then
|
|
135
|
+
while IFS= read -r h; do
|
|
136
|
+
[ -n "$h" ] && warn "banned phrase present: \"$h\" (spam-trigger / AI-tell — rewrite)"
|
|
137
|
+
done <<EOF
|
|
138
|
+
$HITS
|
|
139
|
+
EOF
|
|
140
|
+
else
|
|
141
|
+
ok "no banned spam/AI-tell phrases"
|
|
142
|
+
fi
|
|
143
|
+
|
|
144
|
+
# --- unfilled template slots (ignore the address-placeholder convenience) -----
|
|
145
|
+
SLOTS="$(grep -Eo '\{\{[^}]*\}\}|\?\?\?|\[[A-Z_]{3,}\]' "$FILE" 2>/dev/null \
|
|
146
|
+
| grep -Eiv '\{\{[[:space:]]*(postal[_ ]?)?address|\[[[:space:]]*(POSTAL[_ ]?)?ADDRESS' \
|
|
147
|
+
| sort -u || true)"
|
|
148
|
+
if [ -n "$SLOTS" ]; then
|
|
149
|
+
SLOT_N="$(printf '%s\n' "$SLOTS" | grep -c '[^[:space:]]' || true)"
|
|
150
|
+
warn "${SLOT_N} unfilled template slot(s) remain (e.g. $(printf '%s' "$SLOTS" | head -1)) — fill before sending"
|
|
151
|
+
else
|
|
152
|
+
ok "no unfilled template slots"
|
|
153
|
+
fi
|
|
154
|
+
|
|
155
|
+
# --- summary ------------------------------------------------------------------
|
|
156
|
+
printf '\n'
|
|
157
|
+
if [ "$fail_count" -gt 0 ]; then
|
|
158
|
+
printf '%s%d hard failure(s), %d warning(s)%s\n' "$RED" "$fail_count" "$warn_count" "$NC"
|
|
159
|
+
exit 1
|
|
160
|
+
fi
|
|
161
|
+
if [ "$warn_count" -gt 0 ]; then
|
|
162
|
+
if [ "$STRICT" -eq 1 ]; then
|
|
163
|
+
printf '%s%d warning(s) — failing under --strict%s\n' "$YELLOW" "$warn_count" "$NC"
|
|
164
|
+
exit 1
|
|
165
|
+
fi
|
|
166
|
+
printf '%s%d warning(s), 0 hard failures%s\n' "$YELLOW" "$warn_count" "$NC"
|
|
167
|
+
exit 0
|
|
168
|
+
fi
|
|
169
|
+
printf '%sall checks passed%s\n' "$GREEN" "$NC"
|
|
170
|
+
exit 0
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: community
|
|
3
|
+
description: "Use when building or running a persistent two-way community space — Discord, Telegram, or Circle — and you need structure, onboarding, moderation, rituals, growth, or health metrics; covers picking the platform, standing up channels/roles/spaces, the rules/verification gate, the 3-layer moderation stack, an operating-rhythm of rituals, lurker-to-contributor growth loops, and the few metrics that prove it is alive. Triggers: 'set up our Discord server', 'our community is a graveyard / dead chat', 'we keep getting spam raids and scam DMs', 'Discord vs Telegram vs Circle', 'design community rituals / weekly cadence', 'how do I get lurkers to post', 'community onboarding flow', 'community health metrics', 'monta la comunitat de Discord', 'la comunidad está muerta, nadie escribe'. NOT customer churn-prevention for a paid product (that is retention), NOT one-to-many broadcast email (that is newsletter), and NOT running a single live event (that is webinar)."
|
|
4
|
+
tags: [community, discord, telegram, moderation, growth, rituals]
|
|
5
|
+
recommends: [retention, newsletter, social-publisher, brand-voice, whatsapp-telegram, webinar]
|
|
6
|
+
profiles: []
|
|
7
|
+
origin: risco
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# community
|
|
11
|
+
|
|
12
|
+
Run the community like a **product with a job**, not a vanity chat room. The space — a Discord server, a Telegram group+channel, a Circle — is the product. **Onboarding is activation, rituals are the feature, moderation is reliability, and one north-star metric tied to your purpose is the only number that matters.** A room with 5,000 silent members is a failed product, not a big one. Design the system around the conversation, not the conversation itself.
|
|
13
|
+
|
|
14
|
+
## When to use
|
|
15
|
+
|
|
16
|
+
- Standing up a new Discord / Telegram / Circle from zero: structure, roles, onboarding, rules.
|
|
17
|
+
- A community exists but is a graveyard — lurkers only, no rhythm, nobody posts — needs rituals + re-activation.
|
|
18
|
+
- Moderation is on fire: spam waves, raids, scam DMs, bans applied by mood, no incident process.
|
|
19
|
+
- Choosing between Discord vs Telegram vs Circle for a given audience, purpose, and monetization model.
|
|
20
|
+
- Designing a growth loop that compounds (referrals, intro rituals, partner cross-posts) instead of buying dead members.
|
|
21
|
+
- Defining community health metrics and targets and instrumenting the few that prove the thing is alive.
|
|
22
|
+
|
|
23
|
+
## When NOT to use — route instead
|
|
24
|
+
|
|
25
|
+
| The ask | Route to |
|
|
26
|
+
|---|---|
|
|
27
|
+
| Stop *paying customers of a product/SaaS* from churning (win-back, lifecycle, NPS) | `retention` |
|
|
28
|
+
| Write the one-to-many broadcast email that nurtures the list | `../newsletter/SKILL.md` |
|
|
29
|
+
| Schedule / cross-post public posts across X, LinkedIn, Instagram | `../social-publisher/SKILL.md` |
|
|
30
|
+
| Run a single timed live event end-to-end (registration, speakers, replay) | `webinar` |
|
|
31
|
+
| Build an automated support desk / ticket triage | `customer-support` |
|
|
32
|
+
| Actually code or host the Discord/Telegram bot (gateway, slash handlers) | `whatsapp-telegram`, `automation-flows` |
|
|
33
|
+
| Define the voice/name/tone the community speaks in | `../brand-voice/SKILL.md` |
|
|
34
|
+
|
|
35
|
+
You own the **persistent, two-way space and its ongoing operating rhythm.** The boundary that bites most: `retention` keeps *buyers of a product* from churning; you keep *members of a shared space* active and contributing. They rhyme (cohorts, re-activation) but the subject differs — a SaaS seat vs a Discord membership. When a near-miss is really "send a broadcast," it is `newsletter`/`social-publisher`; when it is "stop churn of buyers," it is `retention`; when it is "run an event," it is `webinar`.
|
|
36
|
+
|
|
37
|
+
## Step 0 — Purpose & north-star gate (hard rule)
|
|
38
|
+
|
|
39
|
+
**Do not design a single channel until you have (a) a one-line purpose and (b) one business metric tied to it.** Why: a community without a job becomes a dead chat — there is no signal to design toward, so you sprawl channels and beg for activity. This is the most common cause of graveyards.
|
|
40
|
+
|
|
41
|
+
If either is missing, **STOP and ask one focused batch**, then proceed:
|
|
42
|
+
|
|
43
|
+
> 1. In one sentence, what is this community *for* — and for whom?
|
|
44
|
+
> 2. What single business outcome does it move? (support deflection, retention uplift, expansion revenue, qualified referrals — pick ONE)
|
|
45
|
+
|
|
46
|
+
Bad → Good:
|
|
47
|
+
|
|
48
|
+
```text
|
|
49
|
+
Bad: "Set up a Discord for our users." → 14 channels, no purpose, silent in 3 weeks.
|
|
50
|
+
Good: Purpose = "where indie game-devs trade WIP feedback so free players become paying supporters."
|
|
51
|
+
North-star = monthly free→supporter conversions sourced from the server.
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Everything below is derived from those two lines. If a channel, ritual, or metric does not serve the purpose or move the north-star, cut it.
|
|
55
|
+
|
|
56
|
+
## Pick the platform — decision table
|
|
57
|
+
|
|
58
|
+
| Platform | Best for | Real-time chat | Broadcast | Monetization | Moderation maturity | Cost |
|
|
59
|
+
|---|---|---|---|---|---|---|
|
|
60
|
+
| **Discord** | Active, real-time builder/gamer/dev communities | Strong | Weak (announcement channels only) | Indirect (roles/Patreon links) | High — native AutoMod + bot ecosystem | Free |
|
|
61
|
+
| **Telegram** (group **+** channel hybrid) | Mobile-first, fast-growing, announce-heavy audiences | Good | Strong (channel = one-way broadcast) | Weak native | Medium — native ML anti-spam >200 members + bots | Free |
|
|
62
|
+
| **Circle** | Paid memberships bundling courses/events | Weak | Good | Strong (built-in payments + tiered Spaces) | Medium | Professional ~$89–129/mo → Business ~$199–219 → Circle Plus ~$419+ + 0.5–2% Circle fee on top of Stripe's 2.9%+$0.30 |
|
|
63
|
+
|
|
64
|
+
Decision rules (pick the *purpose*, not the logo):
|
|
65
|
+
- **Need persistent real-time conversation and free?** → Discord. It is the deepest moderation toolset and the strongest two-way default.
|
|
66
|
+
- **Audience lives on mobile and you broadcast a lot?** → Telegram, run the hybrid: a **channel** for announcements + a **linked group** for discussion. This is the 2026 standard; a bare group has no broadcast lane and a bare channel has no conversation.
|
|
67
|
+
- **You are charging for membership and bundling courses/events?** → Circle. But see the anti-pattern: do not monetize before activation works.
|
|
68
|
+
|
|
69
|
+
Per-platform setup depth (AutoMod filters, verification levels, anti-spam tiers, plan ladder) is in `references/platform-playbooks.md`.
|
|
70
|
+
|
|
71
|
+
## Structure & onboarding = activation
|
|
72
|
+
|
|
73
|
+
Keep the structure **minimal**. Why: empty channels signal a dead room; people pattern-match "nobody's here" and leave. Start with the fewest channels the purpose needs (often 4–6: welcome/rules, intros, one core topic, help, off-topic, announcements) and split a channel only when an existing one is *demonstrably overflowing*.
|
|
74
|
+
|
|
75
|
+
The onboarding path is an activation funnel. Drive every new member to a **first meaningful action** through a short, gated path:
|
|
76
|
+
|
|
77
|
+
1. **Role-on-join** — pick a role/interest, which personalizes which channels they see. Why: a tailored, smaller room feels alive; the firehose feels dead.
|
|
78
|
+
2. **Rules/membership gate** — on Discord, Rules Screening / Membership Screening blocks talking and DMs until rules are acknowledged. Why: it stops drive-by spam *and* forces a first deliberate click.
|
|
79
|
+
3. **Intro with a prompt** — not "introduce yourself" (blank-page freeze) but a 3-field prompt. Why: prompted intros get answered; open ones get skipped.
|
|
80
|
+
4. **Point to where-to-ask** — one obvious channel for "I need help." Why: time-to-first-response is a core health metric and it starts here.
|
|
81
|
+
|
|
82
|
+
Bad → Good intro channel:
|
|
83
|
+
|
|
84
|
+
```text
|
|
85
|
+
Bad: #introductions — "Say hi and introduce yourself!" → blank-page paralysis, 4% post.
|
|
86
|
+
Good: #introductions — pinned prompt: "(1) what you're building, (2) what you're stuck on,
|
|
87
|
+
(3) one thing you can help others with." → reply with the right role-ping. Activation jumps.
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Moderation — the 3-layer stack
|
|
91
|
+
|
|
92
|
+
Moderation is reliability. The canonical stack is **native → bot → human**, and you scale layers by size, never skip the native layer.
|
|
93
|
+
|
|
94
|
+
1. **Native** — Discord AutoMod (one Commonly-Flagged-Words preset rule + up to 6 custom keyword rules, each filter holding up to 1,000 terms, plus a mention-spam cap configurable up to 50 unique mentions/message) and an explicit **verification level** (Medium = verified email + 5-min-on-server before talking). Telegram: native ML anti-spam kicks in for groups **>200 members** (with an "Aggressive" auto-delete mode); for **≤30 messages/hour, slow-mode alone** is the right zero-setup control; add a CAPTCHA-on-join gate (button/math/question, e.g. Shieldy) as the raid wall.
|
|
95
|
+
2. **Bot** — a specialized moderation bot for raid detection, scam-link filtering, and audit logs.
|
|
96
|
+
3. **Human** — named mods, an escalation path, and a written ban policy.
|
|
97
|
+
|
|
98
|
+
Size-tiered config (Discord, per Discord's own size guidance):
|
|
99
|
+
|
|
100
|
+
| Server size | Native | Bot layer | Human |
|
|
101
|
+
|---|---|---|---|
|
|
102
|
+
| < 1,000 | AutoMod + Medium verification | optional | 1–2 mods |
|
|
103
|
+
| > 1,000 | AutoMod + custom keyword rules | add one specialized bot | rota of mods |
|
|
104
|
+
| > 10,000 | + Commonly-Flagged filter on | robust multi-tool bots | mod team + on-call |
|
|
105
|
+
| > 100,000 | full filters + raid mode | multiple specialized bots | tiered mod org |
|
|
106
|
+
|
|
107
|
+
Incident + ban policy (write these down before you need them):
|
|
108
|
+
- **Ban policy is a rubric, not a mood** — define warn → mute → kick → ban thresholds and what triggers each. Why: inconsistent bans destroy trust faster than the spam did.
|
|
109
|
+
- **Raid runbook** — who flips lockdown (slow-mode + raise verification + pause invites), who triages, where it is logged.
|
|
110
|
+
- **Scam-DM stance** — pin a "we will never DM you first" notice; AutoMod-flag known scam phrases.
|
|
111
|
+
|
|
112
|
+
Filter specifics, verification levels, and bot picks by tier live in `references/platform-playbooks.md`.
|
|
113
|
+
|
|
114
|
+
## Rituals — the operating rhythm
|
|
115
|
+
|
|
116
|
+
**Predictable cadence beats sporadic heroics.** Why: members learn when to show up only if there is something to show up *for*; rhythm is the feature that pulls lurkers back. Install a small set of recurring beats and run them on time, every time.
|
|
117
|
+
|
|
118
|
+
Sample weekly cadence:
|
|
119
|
+
|
|
120
|
+
| Day | Ritual | Friction |
|
|
121
|
+
|---|---|---|
|
|
122
|
+
| Mon | "What are you working on this week?" thread | Low — one reply |
|
|
123
|
+
| Wed | Office hours / AMA in a voice or thread slot | Medium — opt-in |
|
|
124
|
+
| Fri | "Wins of the week" — share + react | Low — a reaction counts |
|
|
125
|
+
|
|
126
|
+
Design for **low-friction participation**: polls, emoji reactions, and *opt-in* role pings. The over-pinging trap: blasting `@everyone` for non-urgent posts. Why it backfires — over-pinging trains members to mute the server, and a muted member is functionally gone. Use a dedicated opt-in "announcements" role and reserve `@everyone` for genuine all-hands moments.
|
|
127
|
+
|
|
128
|
+
A ritual template library and the full cadence rationale are in `references/metrics-and-rituals.md`.
|
|
129
|
+
|
|
130
|
+
## Growth — loops, not buys
|
|
131
|
+
|
|
132
|
+
Build loops that compound, not headcount that decays:
|
|
133
|
+
- **Referral loop** — make inviting a friend a one-tap, rewarded action tied to a role/perk.
|
|
134
|
+
- **Intro loop** — every prompted intro is a hook other members reply to, pulling the newcomer into a thread on day one.
|
|
135
|
+
- **Partner cross-post** — trade shout-outs with an adjacent community whose audience overlaps but does not compete.
|
|
136
|
+
|
|
137
|
+
**90-9-1 is a range, not a ceiling.** The old "1% rule" (90% lurk, 9% occasional, 1% drive activity) is a *starting observation*, not a law — healthier communities skew far more active (real profiles like 55-30-15 and 17-57-26). Design to **move lurkers up a tier** (prompts, easy reactions, direct asks), do not accept 90% lurkers as fixed.
|
|
138
|
+
|
|
139
|
+
```text
|
|
140
|
+
Bad: Buy 2,000 members from a growth service to "look big." → DAU/MAU craters,
|
|
141
|
+
signal drowns in silence, real members read the room as dead and leave.
|
|
142
|
+
Good: Run a referral ritual + prompted intros. 200 members who each reply
|
|
143
|
+
in week one beats 2,000 who never speak.
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
Bought or inactive members are **negative-value**: they dilute every signal, wreck DAU/MAU, and make the room *look* dead to the people you actually want.
|
|
147
|
+
|
|
148
|
+
## Metrics & health
|
|
149
|
+
|
|
150
|
+
Three clusters plus exactly one business metric. Steer on these, not on raw member count.
|
|
151
|
+
|
|
152
|
+
| Metric | What it tells you | Target |
|
|
153
|
+
|---|---|---|
|
|
154
|
+
| DAU/MAU stickiness | How often members come back | Floor ≥ 20%; social/messaging band ~50–80% |
|
|
155
|
+
| 30/60/90-day cohort retention | Whether onboarding actually activates | Track each cohort vs the last |
|
|
156
|
+
| Returning-member ratio | Rhythm is working | Trending up |
|
|
157
|
+
| Time-to-first-response (TTFR) | A newcomer's first experience | Minutes-to-low-hours, the lower the better |
|
|
158
|
+
| Answered rate | Questions don't die unanswered | → 100% |
|
|
159
|
+
| **One business metric** (purpose-tied) | The only number that justifies the work | Set in Step 0 |
|
|
160
|
+
|
|
161
|
+
The one business metric is a menu — **pick exactly one** that matches your purpose: support deflection, retention uplift, expansion revenue, or qualified referrals. Review the scorecard on a fixed cadence (weekly glance, monthly cohort read). Benchmark depth and metric definitions are in `references/metrics-and-rituals.md`.
|
|
162
|
+
|
|
163
|
+
## The artifact you emit
|
|
164
|
+
|
|
165
|
+
Produce two files the user can apply directly: a `community-plan.md` (prose: purpose, platform rationale, structure, growth, metrics) and a machine-checkable `moderation-config.yaml`:
|
|
166
|
+
|
|
167
|
+
```yaml
|
|
168
|
+
platform: discord # discord | telegram | circle
|
|
169
|
+
purpose: "where indie game-devs trade WIP feedback so free players become paying supporters"
|
|
170
|
+
north_star_metric: "monthly free→supporter conversions sourced from the server"
|
|
171
|
+
onboarding_path:
|
|
172
|
+
- role-on-join
|
|
173
|
+
- rules-gate
|
|
174
|
+
- prompted-intro
|
|
175
|
+
- where-to-ask
|
|
176
|
+
moderation:
|
|
177
|
+
layers:
|
|
178
|
+
native: "AutoMod preset + custom keyword rules, Medium verification"
|
|
179
|
+
bot: "specialized raid + scam-link bot"
|
|
180
|
+
human: "2 named mods, written ban rubric"
|
|
181
|
+
rituals:
|
|
182
|
+
- name: "WIP Mondays"
|
|
183
|
+
cadence: "weekly"
|
|
184
|
+
- name: "Wins Fridays"
|
|
185
|
+
cadence: "weekly"
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
Then validate it:
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
scripts/verify.sh path/to/moderation-config.yaml
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
`verify.sh` checks the required keys exist, that `north_star_metric` is non-empty, that all three moderation layers are declared, and that at least one ritual has a cadence — it catches the most common defect (a "plan" with no purpose, no mod layers, or no rhythm).
|
|
195
|
+
|
|
196
|
+
## Anti-patterns
|
|
197
|
+
|
|
198
|
+
| Anti-pattern | Why it fails | Do instead |
|
|
199
|
+
|---|---|---|
|
|
200
|
+
| Channel sprawl on day one | Empty channels read as "dead"; people leave | Start 4–6; split only on demonstrated overflow |
|
|
201
|
+
| No purpose / no north-star | Nothing to design toward → graveyard | Run Step 0 gate before any structure |
|
|
202
|
+
| `@everyone` for non-urgent posts | Trains members to mute → functionally gone | Opt-in announce role; reserve `@everyone` |
|
|
203
|
+
| Buying members to "look big" | Negative-value: dilutes signal, wrecks DAU/MAU | Referral + intro loops; activate the real ones |
|
|
204
|
+
| Ban-by-mood | Inconsistency destroys trust | Written warn→mute→kick→ban rubric |
|
|
205
|
+
| Treating 90% lurkers as permanent | Leaves activation on the table | 90-9-1 is a range; move lurkers up a tier |
|
|
206
|
+
| Monetizing on Circle before activation works | Charging for a dead room churns instantly | Prove rhythm + retention, then gate/monetize |
|
|
207
|
+
| Broadcasting in a two-way space | Wrong tool; kills conversation | One-to-many → `../newsletter/SKILL.md` / `../social-publisher/SKILL.md` |
|
|
208
|
+
|
|
209
|
+
## Launch-readiness checklist
|
|
210
|
+
|
|
211
|
+
Gate before "go live":
|
|
212
|
+
|
|
213
|
+
- [ ] Purpose written in one line **and** one north-star business metric chosen (Step 0).
|
|
214
|
+
- [ ] Platform chosen by decision rule, not vibes.
|
|
215
|
+
- [ ] ≤ ~6 channels/spaces, each justified by the purpose.
|
|
216
|
+
- [ ] Onboarding path wired: role-on-join → rules gate → prompted intro → where-to-ask.
|
|
217
|
+
- [ ] All 3 moderation layers configured (native + bot + human) sized to expected scale.
|
|
218
|
+
- [ ] ≥ 1 ritual scheduled with an explicit cadence.
|
|
219
|
+
- [ ] North-star + ≥ 1 health metric (TTFR or DAU/MAU) instrumented.
|
|
220
|
+
- [ ] `community-plan.md` + `moderation-config.yaml` emitted and `verify.sh` passes.
|
|
221
|
+
|
|
222
|
+
## References
|
|
223
|
+
|
|
224
|
+
- `references/platform-playbooks.md` — per-platform setup depth: Discord (AutoMod filters, verification levels, Rules/Membership Screening, Onboarding, bots by size), Telegram (group+channel hybrid, native anti-spam >200, slow-mode, CAPTCHA bots), Circle (Spaces, 2026 plan ladder + fees, monetization gating).
|
|
225
|
+
- `references/metrics-and-rituals.md` — metric definitions + benchmarks (DAU/WAU/MAU stickiness, cohort retention, TTFR, answered rate, returning-member ratio, the business-metric menu), the 90-9-1 reality, and a ritual template library + sample weekly calendar.
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
# Evals — community
|
|
2
|
+
|
|
3
|
+
`cases.yaml` is a judging harness, not an executable test suite. Run it with a human or an LLM judge. The `should_trigger` and `should_not_trigger` cases check routing discipline: each `should_trigger` prompt should pull in this skill (including the non-obvious "graveyard" and Catalan phrasings), and each `should_not_trigger` prompt should route to the named sibling (`retention`, `newsletter`, `social-publisher`, `webinar`) instead of here. The `capability` case is run end-to-end against a real session: give the agent the scenario and score the response against the `must_include` rubric — every bullet must be satisfied (purpose+north-star gate, platform rationale, onboarding path, 3-layer moderation, a ritual with cadence, the metrics, and the emitted artifact validated by `scripts/verify.sh`). Structural defects in the emitted `moderation-config` are caught mechanically by `scripts/verify.sh`; the rubric covers the process rigor that no script can check.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
skill: community
|
|
2
|
+
|
|
3
|
+
should_trigger:
|
|
4
|
+
- prompt: "Set up our Discord server for the SaaS user community — channels, roles, and rules."
|
|
5
|
+
why: Core stand-up job — structure + onboarding + moderation for a persistent two-way space.
|
|
6
|
+
- prompt: "Our Telegram group is a graveyard, nobody posts anymore. How do we revive it?"
|
|
7
|
+
why: Non-obvious — no setup words, but it is a dead two-way space needing rituals + re-activation, the heart of this skill.
|
|
8
|
+
- prompt: "We keep getting spam raids and scam-DM waves in our community — lock it down."
|
|
9
|
+
why: Moderation / incident response (native + bot + human stack, raid runbook) is owned here.
|
|
10
|
+
- prompt: "Should we run our paid membership on Circle or just use Discord?"
|
|
11
|
+
why: Platform decision including monetization — the decision table routes this.
|
|
12
|
+
- prompt: "La comunitat de Discord està morta, ningú escriu — com la reactivem?"
|
|
13
|
+
why: Catalan phrasing for a graveyard re-activation; rituals + growth loops.
|
|
14
|
+
- prompt: "How do I get the lurkers in our community to actually post something?"
|
|
15
|
+
why: Lurker-to-contributor growth (90-9-1 is a range, move members up a tier) is a core job.
|
|
16
|
+
|
|
17
|
+
should_not_trigger:
|
|
18
|
+
- prompt: "Our SaaS users keep cancelling in month 2 — build a win-back and churn-reduction flow."
|
|
19
|
+
route_to: retention
|
|
20
|
+
why: Paying-customer churn of a product, not activity in a shared member space.
|
|
21
|
+
- prompt: "Write this week's broadcast email to our subscriber list."
|
|
22
|
+
route_to: newsletter
|
|
23
|
+
why: One-to-many opted-in email, not a two-way persistent space.
|
|
24
|
+
- prompt: "Schedule and cross-post our launch announcement across X, LinkedIn, and Instagram."
|
|
25
|
+
route_to: social-publisher
|
|
26
|
+
why: Public-feed posting, not a community space.
|
|
27
|
+
- prompt: "Run our product-launch webinar end-to-end: registration page, speakers, and replay."
|
|
28
|
+
route_to: webinar
|
|
29
|
+
why: A single timed live event, not a persistent two-way space.
|
|
30
|
+
|
|
31
|
+
capability:
|
|
32
|
+
- scenario: "Stand up a Discord community for an indie game-dev audience whose business goal is converting free players into paying supporters."
|
|
33
|
+
must_include:
|
|
34
|
+
- States or extracts a one-line purpose AND one north-star business metric before designing anything (Step 0 gate).
|
|
35
|
+
- Justifies Discord over Telegram and Circle for this audience using the decision rules.
|
|
36
|
+
- Minimal channel set (no sprawl) + role-on-join + an onboarding "first meaningful action" path with the rules/membership gate.
|
|
37
|
+
- 3-layer moderation — native AutoMod + a verification level, a bot, and human mods — sized to expected scale.
|
|
38
|
+
- At least one weekly ritual with an explicit cadence.
|
|
39
|
+
- Names the one business metric plus at least one health metric (e.g. TTFR or DAU/MAU ≥20% floor).
|
|
40
|
+
- Emits a community-plan.md + moderation-config artifact and references scripts/verify.sh.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Metrics & rituals
|
|
2
|
+
|
|
3
|
+
The health scorecard and the operating-rhythm library. Use this with the Metrics and Rituals sections of `../SKILL.md`. Facts carry source + access date.
|
|
4
|
+
|
|
5
|
+
## The metric clusters
|
|
6
|
+
|
|
7
|
+
Metrics cluster into three groups plus exactly one business metric tied to your Step-0 purpose.
|
|
8
|
+
|
|
9
|
+
### Cluster 1 — activation / retention
|
|
10
|
+
- **DAU / WAU / MAU** and **stickiness = DAU/MAU**. Benchmark band for social/messaging products is **~50–80%**; treat **≥ 20% as a floor** for a healthy community. Below 20% the room is decaying.
|
|
11
|
+
- **30 / 60 / 90-day cohort retention** — track each join-cohort's survival; it is the truest read on whether onboarding actually activates.
|
|
12
|
+
- **Returning-member ratio** — share of members who came back this period; the direct signal that rituals are working.
|
|
13
|
+
|
|
14
|
+
### Cluster 2 — member value
|
|
15
|
+
- **Time-to-first-response (TTFR)** — how long until a newcomer's first post gets a reply. Lower is better; this is the newcomer's first lived experience of the room.
|
|
16
|
+
- **Answered rate** — share of questions that get any answer. Drive toward 100%; unanswered questions teach members not to ask.
|
|
17
|
+
|
|
18
|
+
### Cluster 3 — exactly ONE business metric
|
|
19
|
+
Pick **one** that matches the purpose, and only one:
|
|
20
|
+
- **Support deflection** — questions answered by members vs tickets filed.
|
|
21
|
+
- **Retention uplift** — product retention of members vs non-members.
|
|
22
|
+
- **Expansion revenue** — upgrades/supporter conversions sourced from the space.
|
|
23
|
+
- **Qualified referrals** — warm intros / leads the community generates.
|
|
24
|
+
|
|
25
|
+
Source: Bevy *Top 11 Community Engagement Metrics for 2025*, Discourse *20 Community Metrics Explained* (2025-04), Geckoboard *DAU/MAU*, accessed 2026-06-02.
|
|
26
|
+
|
|
27
|
+
## The 90-9-1 reality
|
|
28
|
+
|
|
29
|
+
- **Participation inequality / "1% rule":** ~**90% lurk, 9% contribute occasionally, 1% drive most activity** — but this is a **range, not a law**.
|
|
30
|
+
- Healthier communities skew far more active: observed profiles like **55-30-15** and **17-57-26**.
|
|
31
|
+
- Design implication: **do not accept 90% lurkers as fixed.** Move lurkers up a tier with prompts, one-tap reactions, and direct asks.
|
|
32
|
+
- Source: NN/g *Participation Inequality* (Nielsen) + Higher Logic *90-9-1 … Officially Outdated*, accessed 2026-06-02.
|
|
33
|
+
|
|
34
|
+
## Ritual template library
|
|
35
|
+
|
|
36
|
+
Predictable cadence beats sporadic effort. Run each on time, every time; consistency is the whole point.
|
|
37
|
+
|
|
38
|
+
| Ritual | Cadence | Friction | What it produces |
|
|
39
|
+
|---|---|---|---|
|
|
40
|
+
| "What are you working on?" thread | Weekly (Mon) | Low — one reply | Re-engagement hook, surfaces who's active |
|
|
41
|
+
| Office hours / AMA | Weekly (Wed) | Medium — opt-in | High-value 1:1-in-public, answered-rate boost |
|
|
42
|
+
| "Wins of the week" | Weekly (Fri) | Low — a reaction counts | Positive loop, social proof |
|
|
43
|
+
| Monthly show-and-tell / demo day | Monthly | Medium | Deepens the 1%/9%, content for announcements |
|
|
44
|
+
| Onboarding "intro Tuesday" round-up | Weekly | Low | Pulls new members into threads day one |
|
|
45
|
+
| Poll of the week | Weekly | Very low — one tap | Cheap participation for lurkers |
|
|
46
|
+
|
|
47
|
+
### Sample weekly calendar
|
|
48
|
+
```text
|
|
49
|
+
Mon WIP thread posted 09:00 local
|
|
50
|
+
Wed Office hours 17:00–18:00 (opt-in @office-hours role)
|
|
51
|
+
Fri Wins thread + react-to-celebrate
|
|
52
|
+
Sun (mod) scorecard glance: TTFR, answered rate, new-member activation
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Low-friction participation rules
|
|
56
|
+
- Prefer **reactions and polls** over "write a paragraph" — every tier can participate.
|
|
57
|
+
- Use **opt-in role pings** for ritual reminders; never `@everyone` for routine beats (over-pinging trains mutes, and a muted member is functionally gone).
|
|
58
|
+
- Reserve `@everyone` for genuine all-hands moments only.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Platform playbooks
|
|
2
|
+
|
|
3
|
+
Per-platform setup depth. Pick the platform with the decision table in `../SKILL.md`; this file is the build manual for each. Every load-bearing fact carries its source + access date.
|
|
4
|
+
|
|
5
|
+
## Discord — the real-time default
|
|
6
|
+
|
|
7
|
+
### AutoMod (native layer)
|
|
8
|
+
- **Keyword filters**: one **Commonly-Flagged-Words preset rule** (`KEYWORD_PRESET`: Insults & Slurs, Sexual Content, Severe Profanity), **1 per guild**, **plus up to 6 custom keyword rules** (`KEYWORD` trigger), each filter holding **up to 1,000 terms** (60 chars each). Use a custom rule for your scam-phrase blocklist and link patterns. Note: the "1,000" is the per-rule *filter* size; do not confuse it with the 100-entry cap on a `KEYWORD` rule's per-rule *allow_list* (exception terms).
|
|
9
|
+
- **Mention-spam cap** (`MENTION_SPAM`, 1 per guild): configurable up to **50 unique role/user mentions per message** before AutoMod acts. Set this low (e.g. 5) for raid resistance.
|
|
10
|
+
- Actions per rule: block message, alert a mod channel, timeout the author. Always route a copy to a private `#mod-log`.
|
|
11
|
+
- Source: Discord — *Auto Moderation* developer docs (docs.discord.com/developers/resources/auto-moderation) + *AutoMod FAQ* (support.discord.com), accessed 2026-06-02.
|
|
12
|
+
|
|
13
|
+
### Verification levels
|
|
14
|
+
- Set **Medium** as the baseline: verified email + member for >5 minutes before talking. **High** adds a 10-minute server-tenure requirement; **Highest** requires a verified phone. Raise the level temporarily during a raid (the "lockdown" lever).
|
|
15
|
+
|
|
16
|
+
### Rules Screening / Membership Screening
|
|
17
|
+
- Gates **talking and DMs** until a new member explicitly acknowledges the rules. This both stops drive-by spam and forces the first deliberate click of the onboarding funnel.
|
|
18
|
+
- Pair with **Onboarding** (role/interest selection on join) so the rules-ack flows straight into role-on-join → personalized channels.
|
|
19
|
+
- Source: Discord — *Rules Screening FAQ* + community-building playbooks, accessed 2026-06-02.
|
|
20
|
+
|
|
21
|
+
### Layered defense by size (Discord's own guidance)
|
|
22
|
+
| Size | Recommended stack |
|
|
23
|
+
|---|---|
|
|
24
|
+
| Small (< 1,000) | Native AutoMod + Medium verification |
|
|
25
|
+
| > 1,000 | Add a specialized moderation bot + custom keyword rules |
|
|
26
|
+
| > 10,000 | Robust multi-tool bots + Commonly-Flagged filters on |
|
|
27
|
+
| > 100,000 | Multiple specialized bots + tiered human mod org |
|
|
28
|
+
- Canonical 3-layer stack everywhere: **native tools → bot automod → human mods**.
|
|
29
|
+
- Source: Discord safety guidance summarized in friendify.net *Discord Moderation & AutoMod Complete Guide (2025)*, accessed 2026-06-02.
|
|
30
|
+
|
|
31
|
+
## Telegram — mobile-first, broadcast-heavy
|
|
32
|
+
|
|
33
|
+
### The hybrid pattern (2026 standard)
|
|
34
|
+
- **Groups = two-way conversation; channels = one-way broadcast.** A bare group has no clean announce lane; a bare channel has no conversation. Run a **channel for announcements + a linked discussion group** so each post can spawn a thread.
|
|
35
|
+
- Source: Metricgram — *Telegram Group vs Channel*, accessed 2026-06-02.
|
|
36
|
+
|
|
37
|
+
### Native anti-spam + slow-mode
|
|
38
|
+
- **Native ML anti-spam activates for groups > 200 members**, with an **"Aggressive" mode** that auto-deletes suspected spam. Below that threshold it is unavailable.
|
|
39
|
+
- For low-traffic groups (**≤ 30 messages/hour**), **slow-mode alone** is the recommended zero-setup control — no bot needed.
|
|
40
|
+
- Source: Metricgram — *Best Telegram Anti-Spam Bots* / *Supergroups Explained*, accessed 2026-06-02.
|
|
41
|
+
|
|
42
|
+
### Raid gate
|
|
43
|
+
- **CAPTCHA-on-join** is the standard raid wall: button / math / question challenge (e.g. **Shieldy**). New accounts must pass before they can post.
|
|
44
|
+
- Source: Metricgram — *Anti-Spam Bots*, accessed 2026-06-02.
|
|
45
|
+
|
|
46
|
+
## Circle — the paid / monetized end
|
|
47
|
+
|
|
48
|
+
### Spaces and structure
|
|
49
|
+
- Content is organized into **Spaces**, which structure **tiered membership** and bundle **courses and events**. This is the monetization primitive — gate Spaces by paid tier.
|
|
50
|
+
|
|
51
|
+
### 2026 plan ladder + fees
|
|
52
|
+
Circle **discontinued the old "Basic" tier** — **Professional is now the entry plan**.
|
|
53
|
+
|
|
54
|
+
| Plan | Approx monthly | Circle transaction fee |
|
|
55
|
+
|---|---|---|
|
|
56
|
+
| Professional (entry) | ~$89 annual / ~$129 monthly | 2% |
|
|
57
|
+
| Business | ~$199 annual / ~$219 monthly | 1% |
|
|
58
|
+
| Circle Plus (Enterprise, custom) | ~$419+ | 0.5% |
|
|
59
|
+
- The transaction fee is **tiered 0.5%–2%** (2% Professional, 1% Business, 0.5% Circle Plus) and is charged by Circle **on top of Stripe's standard 2.9% + $0.30** per transaction — budget both layers when modeling take rate.
|
|
60
|
+
- **Real-time chat is weaker than Discord** — choose Circle for monetized membership + content bundling, not for fast live conversation.
|
|
61
|
+
- Source: Circle.so *Pricing* (circle.so/pricing) summarized in SchoolMaker *Circle.so Pricing 2026*, accessed 2026-06-02.
|
|
62
|
+
|
|
63
|
+
### Monetization gating
|
|
64
|
+
- Do **not** monetize before activation works. Charging for a dead room produces instant churn. Prove rhythm + cohort retention on the free or trial tier first, then gate the high-value Spaces.
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# verify.sh — structural check for a community moderation-config artifact.
|
|
3
|
+
# Read-only. Validates required keys, a non-empty north-star, all 3 moderation
|
|
4
|
+
# layers, and at least one ritual with a cadence. Exits 0 on a clean/empty target.
|
|
5
|
+
#
|
|
6
|
+
# Usage: scripts/verify.sh [path/to/moderation-config.yaml|.json]
|
|
7
|
+
# If no path is given, scans the working tree for moderation-config.{yaml,yml,json}.
|
|
8
|
+
# No target found => nothing to check => exit 0 (no false failure).
|
|
9
|
+
|
|
10
|
+
set -euo pipefail
|
|
11
|
+
|
|
12
|
+
fail() { echo "FAIL: $1" >&2; exit 1; }
|
|
13
|
+
ok() { echo "OK: $1"; }
|
|
14
|
+
|
|
15
|
+
# --- resolve targets -------------------------------------------------------
|
|
16
|
+
targets=()
|
|
17
|
+
if [ "$#" -ge 1 ]; then
|
|
18
|
+
for arg in "$@"; do
|
|
19
|
+
[ -f "$arg" ] || fail "no such file: $arg"
|
|
20
|
+
targets+=("$arg")
|
|
21
|
+
done
|
|
22
|
+
else
|
|
23
|
+
while IFS= read -r f; do targets+=("$f"); done < <(
|
|
24
|
+
find . -type f \( -name 'moderation-config.yaml' -o -name 'moderation-config.yml' -o -name 'moderation-config.json' \) 2>/dev/null
|
|
25
|
+
)
|
|
26
|
+
fi
|
|
27
|
+
|
|
28
|
+
if [ "${#targets[@]}" -eq 0 ]; then
|
|
29
|
+
echo "OK: no moderation-config artifact found — nothing to verify."
|
|
30
|
+
exit 0
|
|
31
|
+
fi
|
|
32
|
+
|
|
33
|
+
# --- per-file checks -------------------------------------------------------
|
|
34
|
+
check_file() {
|
|
35
|
+
local file="$1"
|
|
36
|
+
local body
|
|
37
|
+
body="$(cat "$file")"
|
|
38
|
+
|
|
39
|
+
# Parse-only sanity for JSON; YAML is checked line-wise via grep below.
|
|
40
|
+
case "$file" in
|
|
41
|
+
*.json)
|
|
42
|
+
if command -v python3 >/dev/null 2>&1; then
|
|
43
|
+
python3 -c "import json,sys; json.load(open(sys.argv[1]))" "$file" \
|
|
44
|
+
|| fail "$file is not valid JSON"
|
|
45
|
+
fi
|
|
46
|
+
;;
|
|
47
|
+
esac
|
|
48
|
+
|
|
49
|
+
# required top-level / nested keys (token presence is enough for the structural gate)
|
|
50
|
+
local required=(platform purpose north_star_metric onboarding_path moderation rituals)
|
|
51
|
+
local k
|
|
52
|
+
for k in "${required[@]}"; do
|
|
53
|
+
grep -Eq "(\"$k\"[[:space:]]*:|^[[:space:]]*$k[[:space:]]*:)" <<<"$body" \
|
|
54
|
+
|| fail "$file is missing required key: $k"
|
|
55
|
+
done
|
|
56
|
+
|
|
57
|
+
# north_star_metric must be non-empty (the no-purpose defect)
|
|
58
|
+
local nsm
|
|
59
|
+
nsm="$(grep -E "(\"north_star_metric\"|north_star_metric)[[:space:]]*:" <<<"$body" \
|
|
60
|
+
| head -n1 | sed -E 's/.*north_star_metric"?[[:space:]]*:[[:space:]]*//' \
|
|
61
|
+
| tr -d '",' | sed -E 's/^[[:space:]]+//; s/[[:space:]]+$//')"
|
|
62
|
+
[ -n "$nsm" ] || fail "$file has an empty north_star_metric"
|
|
63
|
+
|
|
64
|
+
# moderation must declare all three layers
|
|
65
|
+
local layer
|
|
66
|
+
for layer in native bot human; do
|
|
67
|
+
grep -Eq "(\"$layer\"[[:space:]]*:|^[[:space:]]*$layer[[:space:]]*:)" <<<"$body" \
|
|
68
|
+
|| fail "$file moderation does not declare the '$layer' layer"
|
|
69
|
+
done
|
|
70
|
+
|
|
71
|
+
# at least one ritual with a non-empty cadence
|
|
72
|
+
grep -Eq "(\"cadence\"|cadence)[[:space:]]*:[[:space:]]*[\"']?[[:alnum:]]" <<<"$body" \
|
|
73
|
+
|| fail "$file has no ritual with a non-empty cadence"
|
|
74
|
+
|
|
75
|
+
ok "$file passed all structural checks."
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
for t in "${targets[@]}"; do
|
|
79
|
+
check_file "$t"
|
|
80
|
+
done
|
|
81
|
+
|
|
82
|
+
echo "OK: all ${#targets[@]} artifact(s) verified."
|
|
83
|
+
exit 0
|