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,222 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: review
|
|
3
|
+
description: "Use when giving OR receiving an adversarial code review in the rsc SDD chain — after implement/verify and before ship. Triggers: 'review this PR', 'review my diff', 'revisa este código', 'critique this change', 'be my reviewer', 'tear this apart', 'what's wrong with this code', plus the receiving side: 'the reviewer said X', 'address this review comment', 'they want me to change Y', 'do I have to do what the review says', 'PR feedback', 'someone left comments on my PR'. Covers the full loop: producing a rigorous, evidence-backed review keyed to the spec/plan/constitution under 02-DOCS/wiki/sdd/, AND processing incoming feedback with technical rigor — verify each finding against the code before agreeing, push back on the wrong ones, fix the real ones. NOT running lint/type/test gates (that's the verify phase) and NOT merging/closing the branch (that's ship). No performative agreement; points to ship when the diff survives review."
|
|
4
|
+
tags: [sdd, review, code-review]
|
|
5
|
+
recommends: [ship]
|
|
6
|
+
profiles: [core, full]
|
|
7
|
+
origin: risco
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Review — adversarial code review, both directions
|
|
11
|
+
|
|
12
|
+
Review is the **penultimate gate** of the rsc SDD chain: `constitution → specify → clarify → plan → tasks → analyze → implement → verify → **review** → ship`. By the time a diff reaches review, the `verify` phase has already proven that lint, types, tests and the stack `verify.sh` are green. Review answers a different question: **is the green diff actually correct, well-scoped, and faithful to the spec — or did it pass for the wrong reasons?**
|
|
13
|
+
|
|
14
|
+
This skill owns **two roles that share one discipline**:
|
|
15
|
+
|
|
16
|
+
- **Giving** a review — read a diff adversarially, find the real defects, rank them by impact, ship the verdict as evidence not opinion.
|
|
17
|
+
- **Receiving** a review — take incoming feedback (human or machine), verify each point against the code *before* acting, fix the real findings, and push back — with proof — on the wrong ones.
|
|
18
|
+
|
|
19
|
+
The discipline is the same in both directions: **claims are backed by evidence, never by deference.** A reviewer who waves through a bug to be agreeable, and an author who edits working code because a comment *sounded* authoritative, are making the same mistake. This skill exists to kill both.
|
|
20
|
+
|
|
21
|
+
## Read these first
|
|
22
|
+
|
|
23
|
+
1. `02-DOCS/wiki/harness/user-profile.md` — the **accompaniment dial** (L0..L3). It sets how much you narrate, not how rigorous you are. Rigor is fixed; verbosity is dialled. See "Accompaniment dial" below.
|
|
24
|
+
2. `02-DOCS/wiki/sdd/specs/<slug>.md` and `02-DOCS/wiki/sdd/plans/<slug>.md` — what the diff was *supposed* to do. A review with no spec is a review of vibes.
|
|
25
|
+
3. `02-DOCS/wiki/sdd/constitution.md` — the project's non-negotiables (stack canon, quality bars, conventions). Constitution violations are findings even when the code "works".
|
|
26
|
+
|
|
27
|
+
If there is no spec/plan (someone jumped straight to code), say so and review against the constitution + the diff's own stated intent. Don't pretend a spec exists.
|
|
28
|
+
|
|
29
|
+
## When to use / When NOT to use
|
|
30
|
+
|
|
31
|
+
Use when:
|
|
32
|
+
|
|
33
|
+
- A diff, branch, or PR is ready and you want it torn apart before it ships.
|
|
34
|
+
- You are the author and a review landed — comments from a teammate, a bot, or another agent — and you need to decide what to actually change.
|
|
35
|
+
- A "review comment" feels wrong, vague, or technically questionable and you're tempted to just comply.
|
|
36
|
+
|
|
37
|
+
Do NOT use when (route elsewhere):
|
|
38
|
+
|
|
39
|
+
- You need lint / type-check / test / audit to run and go green → that's the **verify** phase, run before review.
|
|
40
|
+
- The diff has survived review and you want to PR / merge / close the branch → that's the **ship** phase (and ship enforces Eric-only git authorship).
|
|
41
|
+
- It's specifically a *security* threat-model / OWASP pass → `../secure-coding/SKILL.md` (review folds in its findings, but the deep pass is owned there).
|
|
42
|
+
- The "review" is really framework-level "is this idiomatic React/FastAPI/Go" — pull the relevant stack skill (`../nextjs/SKILL.md`, `../fastapi/SKILL.md`, `../go/SKILL.md`, `../postgresdb/SKILL.md`, `../flutter/SKILL.md`) for the idiom, then judge against it here.
|
|
43
|
+
|
|
44
|
+
## The one rule
|
|
45
|
+
|
|
46
|
+
> **Every finding and every rebuttal carries evidence. No agreement without verification, no objection without a defect.**
|
|
47
|
+
|
|
48
|
+
Everything below is in service of that rule.
|
|
49
|
+
|
|
50
|
+
## Confidence filtering
|
|
51
|
+
|
|
52
|
+
A review's value is its signal-to-noise. Every finding you report costs the author triage time, so report only what you can stand behind:
|
|
53
|
+
|
|
54
|
+
- **>80% sure, or it doesn't ship.** If you're not >80% confident a finding is a real defect, either trace it until you are, or downgrade it to `[question]` and ask. Plausible-looking ≠ verified.
|
|
55
|
+
- **Zero findings is an acceptable verdict.** A clean diff gets `APPROVE`, not a manufactured nit. Padding a report to look thorough is the opposite of thorough.
|
|
56
|
+
- **Common false positives to skip:** patterns guarded two functions up; "unsafe" calls on values that are provably constant/internal; missing checks the framework already enforces; style the linter owns; defects behind a flag that's off everywhere (note as `nit`, not blocker); test-only or generated code held to prod standards.
|
|
57
|
+
- **No severity inflation.** A `should-fix` dressed as a `blocker` burns the same trust as a missed bug. Rank by actual blast radius and reachability — if everything is a blocker, nothing is.
|
|
58
|
+
|
|
59
|
+
## Executable review
|
|
60
|
+
|
|
61
|
+
This skill is the **discipline**; the **`rsc-review` bundle is its automated counterpart**. When you want the doctrine above run for you over a real diff:
|
|
62
|
+
|
|
63
|
+
- **`/code-review [pr]`** — fans the diff out to the per-language reviewer fleet (`code-reviewer`, `web-reviewer`, `python-reviewer`, `go-reviewer`, `sql-reviewer`, `flutter-reviewer`) in parallel and aggregates one ranked verdict.
|
|
64
|
+
- **`/security-scan`** — two-layer security pass: automated scanners plus the `security-reviewer` agent, merged into one exploitability-ranked report.
|
|
65
|
+
|
|
66
|
+
Those commands and agents enforce the same evidence bar and the same confidence filtering described here — they are this skill, executed.
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## GIVING a review
|
|
71
|
+
|
|
72
|
+
A good review is not a list of everything you'd have done differently. It is a ranked set of **defects that matter**, each one reproducible from the diff itself.
|
|
73
|
+
|
|
74
|
+
### The pass order
|
|
75
|
+
|
|
76
|
+
Run these passes in order; each is cheap and catches a different class of defect. Stop padding the report once a pass is clean — a clean pass is a finding too ("auth path: checked ownership scoping, correct").
|
|
77
|
+
|
|
78
|
+
| Pass | The question | Typical defects |
|
|
79
|
+
| --- | --- | --- |
|
|
80
|
+
| **1. Spec fidelity** | Does the diff do what the spec/plan said — no more, no less? | Missing acceptance criteria; scope creep; a TODO masquerading as done |
|
|
81
|
+
| **2. Correctness** | Is it right on the boundaries, not just the happy path? | Off-by-one, null/empty/zero, error paths swallowed, race, wrong operator |
|
|
82
|
+
| **3. Contracts & data** | Do the interfaces and data shapes hold? | Breaking API change, nullable mismatch, migration that loses data, N+1 |
|
|
83
|
+
| **4. Security boundary** | Any untrusted input reaching a sink? | Injection, authz gap (authenticated ≠ authorized), secret in diff, SSRF |
|
|
84
|
+
| **5. Tests as evidence** | Do the tests actually exercise the change, or just pass? | Asserts on mocks, no failing case, happy-path-only, deleted assertions |
|
|
85
|
+
| **6. Constitution & fit** | Does it honor the project's canon and read like the codebase? | Banned pattern, wrong layer, duplicated logic, dead code left behind |
|
|
86
|
+
|
|
87
|
+
Passes 1–5 are correctness/safety — those produce **blocking** findings. Pass 6 is fit — usually **non-blocking** unless it violates a stated constitution rule.
|
|
88
|
+
|
|
89
|
+
### Severity — rank or it's noise
|
|
90
|
+
|
|
91
|
+
Tag every finding. An unranked review forces the author to triage your opinions; a ranked one tells them exactly what blocks the merge.
|
|
92
|
+
|
|
93
|
+
- **`blocker`** — ships a bug, a vuln, data loss, or breaks the spec. Merge does not happen until resolved.
|
|
94
|
+
- **`should-fix`** — real defect, narrow blast radius; fix now or file a tracked follow-up the author agrees to.
|
|
95
|
+
- **`nit`** — style/preference with no correctness impact. Explicitly labelled, never blocking, the author may decline freely.
|
|
96
|
+
|
|
97
|
+
If everything is a blocker, nothing is. If everything is a nit, you didn't review.
|
|
98
|
+
|
|
99
|
+
### Finding format
|
|
100
|
+
|
|
101
|
+
Each finding is a quoted location, the defect, the evidence, and a concrete fix. No "consider maybe looking at error handling here."
|
|
102
|
+
|
|
103
|
+
```text
|
|
104
|
+
[blocker] auth: authenticated user can read any document
|
|
105
|
+
where: api/documents.py:42 return db.get(Document, doc_id)
|
|
106
|
+
why: doc_id comes from the path; no owner check. Any logged-in
|
|
107
|
+
user enumerates every document by id.
|
|
108
|
+
repro: GET /documents/<other_users_id> with a valid session → 200 + body.
|
|
109
|
+
fix: scope the query — WHERE id == doc_id AND owner_id == current_user.id;
|
|
110
|
+
return 404 (not 403) on miss to avoid leaking existence.
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
A finding without a `repro` or a mechanism is a *suspicion*. Label it `[question]` and ask, don't assert it as a defect.
|
|
114
|
+
|
|
115
|
+
### Verify before you flag
|
|
116
|
+
|
|
117
|
+
The reviewer is held to the same evidence bar as the author. Before writing a `blocker`:
|
|
118
|
+
|
|
119
|
+
- **Read the surrounding code**, not just the diff hunk. The check you think is missing may live two functions up.
|
|
120
|
+
- **Trace the value**, don't pattern-match. "This looks like SQL injection" is not a finding; "this f-string interpolates `request.args['q']` straight into `execute()`" is.
|
|
121
|
+
- **Confirm the path is reachable.** A defect behind a flag that's off in every environment is a `nit`, not a `blocker` — say so.
|
|
122
|
+
|
|
123
|
+
A reviewer who cries blocker on a non-bug burns the same trust as an author who ships one.
|
|
124
|
+
|
|
125
|
+
### The verdict
|
|
126
|
+
|
|
127
|
+
End every review you give with one of three, and nothing mushy in between:
|
|
128
|
+
|
|
129
|
+
- **`APPROVE`** — no blockers, no unresolved should-fix. Say it plainly and **point to ship**.
|
|
130
|
+
- **`APPROVE WITH NITS`** — mergeable; the nits are the author's call.
|
|
131
|
+
- **`CHANGES REQUESTED`** — one or more blockers/should-fix. List exactly what unblocks it.
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## RECEIVING a review
|
|
136
|
+
|
|
137
|
+
This is the half everyone skips. Feedback arrives and the reflex is to either comply with all of it (looks cooperative, ships bugs) or dismiss the annoying parts (looks confident, ships bugs). Both skip the only step that matters: **checking whether the finding is true.**
|
|
138
|
+
|
|
139
|
+
### Process every comment through this gate
|
|
140
|
+
|
|
141
|
+
For each incoming finding, before touching a line of code:
|
|
142
|
+
|
|
143
|
+
```text
|
|
144
|
+
1. RESTATE — what is the reviewer actually claiming is wrong? (in one sentence)
|
|
145
|
+
2. VERIFY — go to the code. Is the claim true? Trace it. Can you reproduce it?
|
|
146
|
+
3. CLASSIFY — true defect / partially-true / false / unclear
|
|
147
|
+
4. ACT —
|
|
148
|
+
true → fix it, and add the test that would have caught it
|
|
149
|
+
partial → fix the real part, reply on the rest with evidence
|
|
150
|
+
false → DON'T change the code. Reply with the proof it's already handled
|
|
151
|
+
unclear → ask one specific question; don't guess and don't pre-emptively edit
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
The expensive failure is step 2 skipped. Editing working code because a comment *sounded* right introduces bugs the original author (you) already prevented.
|
|
155
|
+
|
|
156
|
+
### Pushback is a feature, not rudeness
|
|
157
|
+
|
|
158
|
+
Disagreeing with a wrong finding — **with evidence** — is doing the job, not being difficult. The reply is not "you're wrong"; it's the trace:
|
|
159
|
+
|
|
160
|
+
```text
|
|
161
|
+
> Reviewer: this can NPE if `user` is null.
|
|
162
|
+
Verified: `user` is non-null here — it's the return of `require_auth()` on
|
|
163
|
+
line 12, which raises 401 before this line on a null session. Added a test
|
|
164
|
+
(test_get_doc_unauthenticated) that asserts the 401 so this stays true.
|
|
165
|
+
Leaving the code as-is.
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
That reply *strengthens* the diff (it added a regression test) while declining the change. That's the bar.
|
|
169
|
+
|
|
170
|
+
### Performative agreement is the failure mode
|
|
171
|
+
|
|
172
|
+
The tells, and what to do instead:
|
|
173
|
+
|
|
174
|
+
| Tell | Reality | Do instead |
|
|
175
|
+
| --- | --- | --- |
|
|
176
|
+
| "Good catch!" then editing without checking | You don't yet know if it's a catch | Verify first; *then* "good catch" or "checked — already handled" |
|
|
177
|
+
| Rewriting a whole function to satisfy a nit | Scope creep dressed as responsiveness | Make the minimal change the nit asks for, or decline it as a nit |
|
|
178
|
+
| Silently making the change the bot suggested | Bots flag plausible-looking non-bugs constantly | Trace it like any other finding; reply with the verdict |
|
|
179
|
+
| "You're probably right" with no trace | Probably-right is not verified | There is no probably. Reproduce it or refute it |
|
|
180
|
+
|
|
181
|
+
### Author's verdict
|
|
182
|
+
|
|
183
|
+
When you've processed the review, summarize for the reviewer (and the decisions log): findings accepted + fixed (with the commit/test), findings declined + why (with evidence), findings deferred + tracked. Then the diff is ready to re-review or, if clean, to ship.
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
## Accompaniment dial (L0..L3)
|
|
188
|
+
|
|
189
|
+
Read the level from `02-DOCS/wiki/harness/user-profile.md`. **It changes the narration, never the rigor** — every level runs the same passes and the same evidence bar.
|
|
190
|
+
|
|
191
|
+
- **L0** — verdict + the blocker list, terse. `CHANGES REQUESTED: 1 blocker (auth, documents.py:42), 1 nit. Fix the auth scope and re-run verify.`
|
|
192
|
+
- **L1** — each finding gets its one-line *why*.
|
|
193
|
+
- **L2** — full finding format (where/why/repro/fix); explain why each blocker blocks.
|
|
194
|
+
- **L3** — the above plus teaching: name the defect class (IDOR, N+1, TOCTOU), why the boundary matters, and how to not reintroduce it. For non-technical authors, translate the impact ("any logged-in person could read everyone else's documents").
|
|
195
|
+
|
|
196
|
+
When no profile exists, default to L2 and proceed — don't stall a review to ask for a dial setting.
|
|
197
|
+
|
|
198
|
+
## Anti-patterns → STOP
|
|
199
|
+
|
|
200
|
+
| Rationalization | Reality |
|
|
201
|
+
| --- | --- |
|
|
202
|
+
| "It passed verify, so it's correct" | Green gates prove it runs and tests pass, not that the logic is right. Review is the logic gate. |
|
|
203
|
+
| "I'll list everything I'd do differently" | A review is ranked defects, not your preferences. Tag nits as nits or drop them. |
|
|
204
|
+
| "This pattern usually means a bug" | Usually isn't a finding. Trace this instance or label it `[question]`. |
|
|
205
|
+
| "The reviewer is senior, they're probably right" | Seniority isn't evidence. Verify the claim against the code like any other. |
|
|
206
|
+
| "Just apply all the comments, it's faster" | Applying a false finding ships a regression. Each comment goes through the gate. |
|
|
207
|
+
| "Pushing back will look defensive" | Pushing back *with a trace* strengthens the diff. Silent compliance hides bugs. |
|
|
208
|
+
| "I'll approve it, the issues are minor" | If they're truly minor, label them nits and approve. If they block, don't approve. No mushy middle. |
|
|
209
|
+
| "No spec, so I'll just eyeball it" | Say there's no spec and review against the constitution + stated intent. Don't fake a baseline. |
|
|
210
|
+
|
|
211
|
+
## Where this writes
|
|
212
|
+
|
|
213
|
+
Review is mostly a conversation, but two artifacts persist into the harness wiki so the knowledge model grows:
|
|
214
|
+
|
|
215
|
+
- **Accepted/declined findings** of consequence → append to `02-DOCS/wiki/sdd/decisions.md` (e.g. "declined NPE finding on documents.py:42 — guarded by require_auth; added regression test"). This is the same append-only log `implement` writes to.
|
|
216
|
+
- If a finding reveals a **missing constitution rule** (a defect class the project keeps hitting), propose adding it to `02-DOCS/wiki/sdd/constitution.md` so the next review catches it earlier.
|
|
217
|
+
|
|
218
|
+
Index both under the root `CLAUDE.md` `## Knowledge map` (the `sdd/` topic) — the harness owns that map; this skill just keeps its rows honest.
|
|
219
|
+
|
|
220
|
+
## Next in the chain
|
|
221
|
+
|
|
222
|
+
When the diff carries an **APPROVE** / **APPROVE WITH NITS** verdict and every blocker is resolved, hand off to **ship** — close the branch via PR / merge / cleanup, with **git authorship as Eric, never Claude**. If the review came back **CHANGES REQUESTED**, the loop goes back to **implement** (fix), then **verify** (re-prove green), then back here for re-review. Don't ship a diff that hasn't earned its verdict.
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# Eval harness — review
|
|
2
|
+
|
|
3
|
+
These evals run through an **agent harness** (an agent that loads skills on
|
|
4
|
+
demand), not a plain shell script. `cases.yaml` is the fixture; this file is the
|
|
5
|
+
procedure. Two things are measured: **triggering** (does `review` fire when it
|
|
6
|
+
should and stay quiet when it shouldn't, vs its siblings) and **capability**
|
|
7
|
+
(does loading `review` make the answer materially better — sharper findings when
|
|
8
|
+
giving a review, correct verify-before-acting when receiving one).
|
|
9
|
+
|
|
10
|
+
## Setup
|
|
11
|
+
|
|
12
|
+
- Use the same agent/model for every trial; vary only which skills are loaded.
|
|
13
|
+
- Triggering trials: load the **full skill catalog** so the agent can route to a
|
|
14
|
+
sibling, then observe which skill it selects.
|
|
15
|
+
- Capability trials: compare **only `review` loaded** vs **no skill loaded**.
|
|
16
|
+
|
|
17
|
+
## 1. Triggering
|
|
18
|
+
|
|
19
|
+
For each item in `should_trigger` and `should_not_trigger`:
|
|
20
|
+
|
|
21
|
+
1. Start a fresh agent session with the full catalog available.
|
|
22
|
+
2. Feed the `prompt` verbatim as the user message.
|
|
23
|
+
3. Record which skill (if any) the agent invokes.
|
|
24
|
+
4. Run **3–5 trials** per prompt — selection is stochastic.
|
|
25
|
+
|
|
26
|
+
Pass conditions:
|
|
27
|
+
|
|
28
|
+
- `should_trigger`: **review** is invoked in the majority of trials. This set
|
|
29
|
+
deliberately mixes the two roles — *giving* a review ("review this PR", "tear
|
|
30
|
+
this apart", "critique against the spec") and *receiving* one ("do I have to
|
|
31
|
+
change it?", "which bot comments should I act on?"). Both must fire `review`.
|
|
32
|
+
- `should_not_trigger`: review is **not** invoked; ideally the agent routes to
|
|
33
|
+
the listed `route_to` sibling (or declines when appropriate).
|
|
34
|
+
|
|
35
|
+
**Pass bar: >= 90% trigger accuracy** across all trials. A prompt that flaps
|
|
36
|
+
below majority counts as a fail for that prompt; >= 90% of prompts must pass
|
|
37
|
+
clean.
|
|
38
|
+
|
|
39
|
+
## 2. Capability
|
|
40
|
+
|
|
41
|
+
For each `capability` scenario, run two arms:
|
|
42
|
+
|
|
43
|
+
- **WITH**: only `review` loaded.
|
|
44
|
+
- **WITHOUT**: no skill loaded (baseline model behavior).
|
|
45
|
+
|
|
46
|
+
Run each arm 3 times. Grade every response against the scenario's `must_include`
|
|
47
|
+
rubric — one point per item that is genuinely present (correct, traced to the
|
|
48
|
+
code, not hand-waved). The two scenarios test opposite halves of the skill: one
|
|
49
|
+
**receiving** a *false* finding (the win is declining the change with evidence
|
|
50
|
+
and adding a regression test, not editing working code), one **giving** a review
|
|
51
|
+
of a real IDOR (the win is a ranked, repro-backed blocker with a concrete fix and
|
|
52
|
+
an explicit verdict).
|
|
53
|
+
|
|
54
|
+
Pass conditions:
|
|
55
|
+
|
|
56
|
+
- **WITH** the skill covers **>= 80%** of `must_include` items on average.
|
|
57
|
+
- The skill **measurably improves** the output: WITH coverage must beat WITHOUT
|
|
58
|
+
by a clear margin (target **>= 25 percentage points**). The receiving scenario
|
|
59
|
+
is the discriminating one — baselines tend to performatively "fix" the false
|
|
60
|
+
NPE finding; the skill's verify-before-acting gate should flip that to a
|
|
61
|
+
correct, evidenced decline.
|
|
62
|
+
|
|
63
|
+
## Scoring summary
|
|
64
|
+
|
|
65
|
+
| Dimension | Metric | Pass bar |
|
|
66
|
+
|---|---|---|
|
|
67
|
+
| Triggering | trigger accuracy across all prompts/trials | >= 90% |
|
|
68
|
+
| Capability | rubric coverage WITH skill | >= 80% |
|
|
69
|
+
| Capability | WITH minus WITHOUT (lift) | >= 25 pts |
|
|
70
|
+
|
|
71
|
+
## Notes / honesty
|
|
72
|
+
|
|
73
|
+
- These are LLM-graded, stochastic evals — re-run on skill edits and treat small
|
|
74
|
+
score deltas as noise, not signal.
|
|
75
|
+
- `route_to` targets name the sibling skill the prompt should land on instead of
|
|
76
|
+
`review`. The adjacent SDD phases this skill hands off to — **verify** before it
|
|
77
|
+
and **ship** after it — are present as their own skills in this repo, so the two
|
|
78
|
+
phase-boundary near-misses route straight to them (`verify` for the run-the-gates
|
|
79
|
+
prompt, `ship` for the open-the-PR-and-merge prompt). Every `route_to` target
|
|
80
|
+
must resolve to a real sibling skill; a mis-route to the wrong sibling counts
|
|
81
|
+
against `review`'s triggering accuracy.
|
|
82
|
+
- The receiving-side capability scenario is intentionally a *false* finding. A
|
|
83
|
+
pass means the skill declined the edit with a trace; "fixed the NPE" is a
|
|
84
|
+
failure even though it looks responsive.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
skill: review
|
|
2
|
+
|
|
3
|
+
should_trigger:
|
|
4
|
+
- prompt: "Can you review this PR before I merge it? It refactors the order-total calculation and adds a discount field."
|
|
5
|
+
why: "Explicit 'review this PR before merge' — the flagship giving-a-review trigger, on a correctness-sensitive money path. Squarely the review phase."
|
|
6
|
+
- prompt: "Revisa este diff y dime qué está mal antes de hacer ship."
|
|
7
|
+
why: "Spanish 'review this diff, tell me what's wrong, before ship' — same trigger in the user's other language, and explicitly the gate that sits before ship."
|
|
8
|
+
- prompt: "The reviewer left a comment saying my function can NPE if the user is null. Do I actually have to change it?"
|
|
9
|
+
why: "Non-obvious RECEIVING-side trigger: the user is processing incoming feedback and is unsure whether to comply. The skill's verify-before-acting half owns exactly this."
|
|
10
|
+
- prompt: "A bot left like twelve comments on my PR. Most look like nitpicks. Which ones should I actually act on?"
|
|
11
|
+
why: "Receiving a machine review and needing to triage real findings from noise — the gate (restate/verify/classify/act) and the nit-vs-blocker ranking are the core capability."
|
|
12
|
+
- prompt: "Tear this change apart for me — I want the harshest review you can give before it goes out."
|
|
13
|
+
why: "Adversarial framing with no literal 'review the PR' phrasing ('tear this apart', 'harshest'). This is the giving-a-review role at full rigor."
|
|
14
|
+
- prompt: "My teammate said I should rewrite this whole module, but I think the current code already handles the case they're worried about. What do I do?"
|
|
15
|
+
why: "Receiving a review that may be a false finding; the user wants to push back with evidence rather than blindly comply. The skill's pushback-with-a-trace discipline applies."
|
|
16
|
+
- prompt: "Critique my implementation against the spec — did I actually build what we specified or did I drift?"
|
|
17
|
+
why: "Spec-fidelity pass (pass 1) explicitly invoked: checking the diff against 02-DOCS/wiki/sdd specs for scope drift. A giving-a-review trigger keyed to the SDD artifacts."
|
|
18
|
+
|
|
19
|
+
should_not_trigger:
|
|
20
|
+
- prompt: "Run lint, type-check and the test suite on my branch and tell me if it's green."
|
|
21
|
+
route_to: "verify"
|
|
22
|
+
why: "Running the gates to green is the verify phase, not review — the verify skill owns exactly 'lint/type/test before merge', 'run the checks', 'are we green'. Review judges an already-green diff; this routes out to verify."
|
|
23
|
+
- prompt: "The code's been reviewed and approved. Open the PR and merge it into main."
|
|
24
|
+
route_to: "ship"
|
|
25
|
+
why: "Closing the branch / opening the PR / merge with Eric-only authorship is the ship phase — the ship skill owns 'open the PR', 'merge into main', 'close the branch'. It is post-review, not review, so it routes out to ship."
|
|
26
|
+
- prompt: "Do a security threat-model of this endpoint that fetches a user-supplied URL — what's the SSRF risk?"
|
|
27
|
+
route_to: "secure-coding"
|
|
28
|
+
why: "A deep OWASP/SSRF threat-model is owned by secure-coding. Review folds its findings in but defers the dedicated security pass; this is explicitly routed out in 'When NOT to use'."
|
|
29
|
+
- prompt: "Is this the idiomatic way to write a Server Component data fetch in Next.js 15?"
|
|
30
|
+
route_to: "nextjs"
|
|
31
|
+
why: "A pure 'is this framework-idiomatic' question with no diff to judge belongs to the stack skill that owns the idiom, not the adversarial review gate."
|
|
32
|
+
- prompt: "Write me a Postgres query for the top 5 customers by monthly order value."
|
|
33
|
+
route_to: "postgresdb"
|
|
34
|
+
why: "Authoring new SQL from scratch — there is no existing change to review. Query design is owned by the postgresdb skill."
|
|
35
|
+
- prompt: "Rename this Go helper and split the formatting logic out — no behavior change, just tidy it up."
|
|
36
|
+
route_to: "go"
|
|
37
|
+
why: "A trivial mechanical refactor the author is performing themselves, not a review of someone's change. Routes to the Go skill for the idiom; nothing to review adversarially."
|
|
38
|
+
|
|
39
|
+
capability:
|
|
40
|
+
- scenario: "Receiving review: a reviewer commented 'this can throw NPE if `user` is null' on the line `return user.documents.filter(owner=user.id)`. Two lines up, `user = require_auth(request)`. require_auth raises 401 on a null/absent session. Decide what to do."
|
|
41
|
+
must_include:
|
|
42
|
+
- "Runs the receiving gate: restates the claim, then VERIFIES it against the code instead of immediately editing."
|
|
43
|
+
- "Traces that require_auth raises 401 before the flagged line, so `user` cannot be null there — classifies the finding as FALSE."
|
|
44
|
+
- "Declines to change the working code (no performative 'good catch' edit)."
|
|
45
|
+
- "Replies to the reviewer with the evidence/trace (require_auth raises 401), not just an assertion of disagreement."
|
|
46
|
+
- "Adds or proposes a regression test (e.g. unauthenticated request asserts 401) so the guarantee stays true, strengthening the diff while declining the change."
|
|
47
|
+
- "Logs the declined finding + reasoning to 02-DOCS/wiki/sdd/decisions.md."
|
|
48
|
+
- scenario: "Giving review: review this diff before ship — `@router.get('/invoices/{invoice_id}') def get(invoice_id: int, db=Depends(get_db)): return db.get(Invoice, invoice_id)`, behind login. Spec said 'a user can view their own invoices'."
|
|
49
|
+
must_include:
|
|
50
|
+
- "Flags a [blocker]: authenticated != authorized — any logged-in user reads any invoice by id (IDOR / broken access control), and ties it to the spec ('their OWN invoices') as a fidelity failure."
|
|
51
|
+
- "Provides evidence/repro (GET another user's invoice_id with a valid session returns 200 + body), not a vague 'consider authorizing'."
|
|
52
|
+
- "Gives a concrete fix: scope the query by owner (WHERE id == invoice_id AND owner_id == current_user.id) and return 404 (not 403) on miss to avoid leaking existence."
|
|
53
|
+
- "Ranks findings by severity (blocker vs nit) rather than an unranked list of opinions."
|
|
54
|
+
- "Ends with an explicit verdict — CHANGES REQUESTED — and states exactly what unblocks the merge."
|
|
55
|
+
- "Points to the next phase (ship) only once the blocker is resolved; routes the deep security angle to secure-coding if a fuller pass is wanted."
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: review-management
|
|
3
|
+
description: "Use when a public review just landed and needs an on-voice reply, or you need to earn more reviews legally, or your aggregate rating is slipping across Google Business Profile, Trustpilot, the App Store, or Google Play. Use when a 1-star feels unfair and you want it removed not just answered, when you must decide reply-vs-flag, or when wiring programmatic replies (GBP v4 updateReply, Trustpilot, App Store Connect, Play). Triggers: 'responder a esta reseña de Google', 'conseguir más reseñas sin saltarnos la ley', 'respon aquesta ressenya d''una estrella', 'aconseguir més ressenyes sense saltar-nos la llei', 'a 1-star landed and I want it removed not just answered', 'are we allowed to ask only happy customers for reviews', 'draft a reply to this 2-star', 'set up a review-request flow', 'build a reputation scorecard across Google and the App Store'. NOT a private 1:1 support ticket against an SLA (that is customer-support), NOT churn/NPS/save plays (that is retention)."
|
|
4
|
+
tags: [reviews, reputation, google-business-profile, trustpilot, ftc, responses, app-store]
|
|
5
|
+
recommends: [customer-support, retention, seo-geo, brand-voice, social-publisher]
|
|
6
|
+
origin: risco
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# review-management
|
|
10
|
+
|
|
11
|
+
You run public reputation as a program. A review is the one customer message every
|
|
12
|
+
future prospect also reads, so it rolls up into an aggregate that moves local rank and
|
|
13
|
+
the buy decision. Your job is three artifacts: a **review-request flow** (earn more,
|
|
14
|
+
the legal way), a **response playbook** (reply on-voice, within the SLA, to every
|
|
15
|
+
rating), and a **reputation scorecard** (the aggregate signal across surfaces).
|
|
16
|
+
|
|
17
|
+
You do not write the brand's voice — you consume it. You do not run the private inbox.
|
|
18
|
+
You do not make the page rank. You own what is public and what it averages to.
|
|
19
|
+
|
|
20
|
+
## What this owns vs route elsewhere
|
|
21
|
+
|
|
22
|
+
The dividing line is one question: **can a stranger read it?** If your reply is visible
|
|
23
|
+
to every future prospect, it's a review — yours. If it's a private channel, it's not.
|
|
24
|
+
|
|
25
|
+
| The ask | Route to | Why |
|
|
26
|
+
|---|---|---|
|
|
27
|
+
| Private email/chat/ticket against an SLA | `../customer-support/SKILL.md` | 1:1, non-public, macro library + queue — not a public reply |
|
|
28
|
+
| Churn risk, NPS, save plays, win-back | `../retention/SKILL.md` | A bad review may *signal* churn; the save play lives there |
|
|
29
|
+
| Make the profile rank (schema, GEO, local pack beyond reviews) | `../seo-geo/SKILL.md` | Reviews feed rank, but on-page/schema is a different lever |
|
|
30
|
+
| Repurpose a 5-star into a social post | `../social-publisher/SKILL.md` | Scheduling/cadence of the post, not the review reply |
|
|
31
|
+
|
|
32
|
+
The reply voice — traits, word bank, tone matrix — comes from `../brand-voice/SKILL.md`.
|
|
33
|
+
This skill applies that guide; it never authors it.
|
|
34
|
+
|
|
35
|
+
## The legal floor — read before you ask
|
|
36
|
+
|
|
37
|
+
The **FTC Consumer Review Rule** is in force (final rule effective **2024-10-21**) and
|
|
38
|
+
being enforced — the FTC sent warning letters to 10 companies on **2025-12-22**.
|
|
39
|
+
Penalties run up to **$53,088 per violation** (per the FTC 2025-12 warning letters /
|
|
40
|
+
press release, the inflation-adjusted figure in force from Jan 2025). Four moves are
|
|
41
|
+
banned. Internalize them before you draft a single request:
|
|
42
|
+
|
|
43
|
+
1. **No fake or insider reviews.** Don't write, buy, or solicit reviews from people who
|
|
44
|
+
didn't transact. *Why: they're deceptive on their face and the per-violation fine is
|
|
45
|
+
ruinous.*
|
|
46
|
+
2. **No review gating (suppression).** You may **not** screen for sentiment before the
|
|
47
|
+
ask — no "rate us 1–5, and only the happy ones get routed to Google." Routing unhappy
|
|
48
|
+
customers to a private form while sending happy ones to the public link is illegal
|
|
49
|
+
suppression. *Why: it manufactures a rating that doesn't reflect reality — the exact
|
|
50
|
+
harm the rule targets.*
|
|
51
|
+
3. **No incentivizing a particular sentiment.** You may offer an incentive to review
|
|
52
|
+
(if disclosed) — you may **not** condition it on the review being positive. *Why:
|
|
53
|
+
"$10 for a 5-star" buys sentiment, not feedback.*
|
|
54
|
+
4. **No misrepresenting that reviews are independent** when they're insider/company-controlled.
|
|
55
|
+
|
|
56
|
+
The one rule that resolves 90% of cases: **you may ask everyone; you may not condition
|
|
57
|
+
the ask, the routing, or the reward on how they feel.**
|
|
58
|
+
|
|
59
|
+
```text
|
|
60
|
+
Bad (gating — illegal): "Loved us? Leave a 5-star here →. Had a problem? Email us instead."
|
|
61
|
+
Good (neutral — clean): "Thanks for choosing us. Share your honest experience here → [link]."
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Earn reviews cleanly
|
|
65
|
+
|
|
66
|
+
Ask within **24–48h** of the transaction — peak emotional recency. Pick the channel by
|
|
67
|
+
context; a hybrid SMS-then-email (48–72h gap) lifts total collection **40–60%**.
|
|
68
|
+
|
|
69
|
+
| Channel | Use when | Open / reply | Note |
|
|
70
|
+
|---|---|---|---|
|
|
71
|
+
| SMS | You have a verified mobile + recent transaction | ~98% open, 15–25% reply | Highest yield; keep it one line + link |
|
|
72
|
+
| Email | No phone, or B2B with work addresses | ~20% open, 2–5% reply | Personalization merge tags lift response 20–30% |
|
|
73
|
+
| QR on receipt | On-site retail / hospitality | walk-up | Print it; ask at the moment of satisfaction |
|
|
74
|
+
| In-app prompt | Mobile app, after a success moment | varies | Triggers the OS review sheet (App Store / Play) |
|
|
75
|
+
|
|
76
|
+
**Message anatomy** (two sentences): name → one specific reference to what they bought →
|
|
77
|
+
direct link to the review surface. No sentiment screen, no "if you're happy."
|
|
78
|
+
|
|
79
|
+
```text
|
|
80
|
+
Hi Marta — thanks for the kitchen install last Tuesday. If you have 30 seconds,
|
|
81
|
+
your honest review helps other homeowners decide → [direct Google review link].
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
The link points **straight to the review form** (GBP "write a review" deep link,
|
|
85
|
+
Trustpilot service-review invite, the app's store page). Never to an internal star-picker
|
|
86
|
+
that branches on the rating — that's gating.
|
|
87
|
+
|
|
88
|
+
## Respond — the playbook
|
|
89
|
+
|
|
90
|
+
Reply to **every** review within **48h** (within 24h correlates with better local
|
|
91
|
+
ranking; 52% of customers expect a reply within 7 days). On Google Play a developer
|
|
92
|
+
response raises that review's rating by **~0.7 stars on average** — replies are not
|
|
93
|
+
optional hygiene, they move the number.
|
|
94
|
+
|
|
95
|
+
| Review type | The move | Reply shape | SLA |
|
|
96
|
+
|---|---|---|---|
|
|
97
|
+
| 5-star praise | Thank + reinforce one specific they mentioned | 1–2 sentences, named, warm, on-voice | 48h |
|
|
98
|
+
| Positive + a question/ask | Thank, then answer the question publicly | Answer first, gratitude second | 48h |
|
|
99
|
+
| Vague 1–2 star (no detail) | Acknowledge, invite the detail offline | "Sorry to hear this — we'd like to understand, reach us at…" | 48h |
|
|
100
|
+
| Specific complaint (fair) | Own it, move offline, state the fix | The sequence below | 24–48h |
|
|
101
|
+
| Suspected fake / off-topic | Flag for removal **and** post a calm holding reply | See "Flag vs reply" | 48h |
|
|
102
|
+
|
|
103
|
+
**The negative-review sequence** (write it fresh every time; never paste a template):
|
|
104
|
+
|
|
105
|
+
1. **Acknowledge** the person and the feeling, by name. No "we're sorry you feel that way."
|
|
106
|
+
2. **Own the specific** thing that went wrong — name it, don't deflect.
|
|
107
|
+
3. **Move it offline** — give a direct contact (name + email/phone), once.
|
|
108
|
+
4. **State the concrete fix** or what you've changed, briefly.
|
|
109
|
+
5. **Invite an update** — leave the door open for them to revise the review.
|
|
110
|
+
|
|
111
|
+
```text
|
|
112
|
+
Bad (defensive, public argument):
|
|
113
|
+
"That's not what happened. Our records show you were 40 minutes late, which is
|
|
114
|
+
why the install ran over. We followed our standard process."
|
|
115
|
+
|
|
116
|
+
Good (own → offline → fix → invite):
|
|
117
|
+
"Hi James — you're right that the install ran past the window we promised, and
|
|
118
|
+
that's on us. I'd like to make it right; please email me directly at
|
|
119
|
+
ops@acme.co. We've since added a buffer to every booking so this doesn't
|
|
120
|
+
repeat. — Lena, Ops Lead"
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## Flag vs reply
|
|
124
|
+
|
|
125
|
+
Replying is the default. Flagging is the exception — and mass-flagging legitimate
|
|
126
|
+
negatives is itself a reputation and policy risk. **Flag for removal only when the
|
|
127
|
+
review is:**
|
|
128
|
+
|
|
129
|
+
- **Fake** — from someone who never transacted.
|
|
130
|
+
- **Off-topic** — not about your business / a different location.
|
|
131
|
+
- **Conflict of interest** — competitor, ex-employee, personal feud.
|
|
132
|
+
- **Policy violation** — profanity, hate, doxxing, illegal content.
|
|
133
|
+
|
|
134
|
+
A review that is negative, harsh, or even partly inaccurate but reflects a real
|
|
135
|
+
experience is **not** flag-eligible. Answer it. Per-platform flag paths and dispute forms
|
|
136
|
+
are in `references/platform-apis.md`.
|
|
137
|
+
|
|
138
|
+
## The platforms (programmatic)
|
|
139
|
+
|
|
140
|
+
Most of this is offloaded to `references/platform-apis.md` (endpoints, scopes, roles,
|
|
141
|
+
limits, gotchas). The three facts you must not get wrong, inline:
|
|
142
|
+
|
|
143
|
+
- **GBP reply is live and still on v4** — not migrated to v1, no announced deprecation:
|
|
144
|
+
```text
|
|
145
|
+
PUT https://mybusiness.googleapis.com/v4/{name=accounts/*/locations/*/reviews/*}/reply
|
|
146
|
+
scope: https://www.googleapis.com/auth/business.manage # verified locations only
|
|
147
|
+
```
|
|
148
|
+
This single `PUT` both creates and updates the reply.
|
|
149
|
+
- **The Google Q&A API is dead** (shut down November 2025). Do **not** build against
|
|
150
|
+
Questions-and-Answers endpoints — review listing + reply survive, Q&A does not.
|
|
151
|
+
- **Apple allows exactly one editable response per review** via App Store Connect
|
|
152
|
+
(get/create/update/delete; requires Account Holder, Admin, or Customer Support role).
|
|
153
|
+
Apple also surfaces AI review summaries on iOS 18.4+, so themes in your reviews now
|
|
154
|
+
feed an auto-generated digest — fix recurring complaints, don't just reply to them.
|
|
155
|
+
|
|
156
|
+
## Reputation scorecard
|
|
157
|
+
|
|
158
|
+
Track six metrics per surface, reviewed **weekly**:
|
|
159
|
+
|
|
160
|
+
| Metric | What it is | Target signal |
|
|
161
|
+
|---|---|---|
|
|
162
|
+
| Rating | Aggregate stars | Trend, not snapshot |
|
|
163
|
+
| Volume | Total reviews | More = more trust + rank weight |
|
|
164
|
+
| Velocity | Reviews/month | Steady inflow beats a stale 5.0 |
|
|
165
|
+
| Recency | Days since last review | Fresh reviews are weighted heavier |
|
|
166
|
+
| Response rate % | Replies ÷ reviews | Aim ~100% — the +0.7-star Play effect compounds |
|
|
167
|
+
| Sentiment by theme | Complaints/praise clustered | Drives fixes, feeds Apple's AI summary |
|
|
168
|
+
|
|
169
|
+
Cluster the negatives by theme weekly. Three reviews about "slow checkout" is a product
|
|
170
|
+
ticket, not three replies — route the fix, then close the loop in your replies.
|
|
171
|
+
|
|
172
|
+
## Anti-patterns
|
|
173
|
+
|
|
174
|
+
| Anti-pattern | Why it fails | Do instead |
|
|
175
|
+
|---|---|---|
|
|
176
|
+
| Gating (route unhappy away from the public link) | Illegal FTC suppression, up to $53,088/violation | Ask everyone the same neutral way |
|
|
177
|
+
| Buying / incentivizing-by-sentiment | Banned; deceptive; fines | Disclose any incentive, never tie it to positivity |
|
|
178
|
+
| Copy-paste reply on every review | Reads robotic; kills the +0.7-star effect | Write fresh, name one specific each time |
|
|
179
|
+
| Arguing in public / "that's not what happened" | Every prospect reads you losing | Own it, move offline, state the fix |
|
|
180
|
+
| Ignoring positive reviews | Leaves trust + ranking weight on the table | Reply to 5-stars too, within SLA |
|
|
181
|
+
| Replying off the brand-voice guide | Inconsistent, off-brand surface | Pull traits from `../brand-voice/SKILL.md` |
|
|
182
|
+
| Building on the Google Q&A API | Shut down Nov 2025 — it's gone | Use v4 reviews + `updateReply` only |
|
|
183
|
+
| Mass-flagging legitimate negatives | Policy risk; doesn't remove real feedback | Flag only fake/off-topic/conflict/policy |
|
|
184
|
+
|
|
185
|
+
## Verify the copy
|
|
186
|
+
|
|
187
|
+
Before you ship any request template or reply, run the copy-banlist linter — it fails on
|
|
188
|
+
gating, sentiment-incentive, and dead-Q&A-API phrasing:
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
./scripts/verify.sh path/to/review-copy.md
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
It's read-only and exits 0 on clean or empty input. See `evals/README.md` for how the
|
|
195
|
+
capability eval is graded.
|
|
196
|
+
|
|
197
|
+
## Cross-references
|
|
198
|
+
|
|
199
|
+
- `../customer-support/SKILL.md` — the private 1:1 ticket against an SLA
|
|
200
|
+
- `../retention/SKILL.md` — churn, NPS, save plays a bad review may signal
|
|
201
|
+
- `../seo-geo/SKILL.md` — making the profile rank beyond review signals
|
|
202
|
+
- `../brand-voice/SKILL.md` — the voice your replies are written in
|
|
203
|
+
- `../social-publisher/SKILL.md` — repurposing a glowing review into a post
|
|
204
|
+
- `references/platform-apis.md` — per-surface endpoints, scopes, roles, limits, gotchas
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Evals — review-management
|
|
2
|
+
|
|
3
|
+
`cases.yaml` holds three groups. `should_trigger` lists prompts that must load this
|
|
4
|
+
skill (including a non-obvious compliance question and a Catalan phrasing);
|
|
5
|
+
`should_not_trigger` lists near-miss prompts that must route to a real sibling
|
|
6
|
+
(`customer-support`, `retention`, `seo-geo`, `brand-voice`, `social-publisher`) with the
|
|
7
|
+
reason; `capability` is a graded scenario with a `must_include` rubric. There is no
|
|
8
|
+
automated runner here — drive a model with each prompt, check routing for the trigger
|
|
9
|
+
sets, and score the capability answer against every rubric bullet (own-it reply,
|
|
10
|
+
do-NOT-flag-a-legit-negative, the 24-48h SLA, an FTC-clean no-gating request flow, and
|
|
11
|
+
the +0.7-star / $53,088 rationale). For the copy this skill emits, also run
|
|
12
|
+
`../scripts/verify.sh` against a request template or reply to confirm it has no gating,
|
|
13
|
+
sentiment-incentive, or dead-Q&A-API phrasing.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
skill: review-management
|
|
2
|
+
|
|
3
|
+
# review-management owns the PUBLIC review and the AGGREGATE reputation it rolls
|
|
4
|
+
# up to: earning reviews legally (FTC-clean request flow), replying on-voice within
|
|
5
|
+
# the 24-48h SLA, deciding reply-vs-flag, and the cross-surface scorecard (Google
|
|
6
|
+
# Business Profile, Trustpilot, App Store, Google Play). It does NOT handle private
|
|
7
|
+
# 1:1 tickets (customer-support), churn/save plays (retention), ranking beyond
|
|
8
|
+
# reviews (seo-geo), authoring the voice (brand-voice), or scheduling posts
|
|
9
|
+
# (social-publisher).
|
|
10
|
+
should_trigger:
|
|
11
|
+
- prompt: "A customer left us a 2-star Google review complaining about wait times — draft a reply."
|
|
12
|
+
why: "Core job: an on-voice public reply to a specific negative, within the 48h SLA, own-it-and-move-offline shape."
|
|
13
|
+
|
|
14
|
+
- prompt: "We want more Trustpilot reviews but only have 12 — set up a request flow."
|
|
15
|
+
why: "Earn-reviews flow: Trustpilot Invitation API, 24-48h timing, channel choice, FTC-clean no-gating ask."
|
|
16
|
+
|
|
17
|
+
- prompt: "Are we allowed to only ask our happy customers to leave reviews?"
|
|
18
|
+
why: "Non-obvious: the user doesn't name reviews-management, they ask a compliance question. The FTC gating rule lives here and the answer must be a clear NO."
|
|
19
|
+
|
|
20
|
+
- prompt: "Someone posted an obviously fake 1-star — can we get it removed or just reply?"
|
|
21
|
+
why: "The reply-vs-flag decision is owned here: flag only for fake/off-topic/conflict/policy, else reply."
|
|
22
|
+
|
|
23
|
+
- prompt: "Respon aquesta ressenya d'una estrella d'un client emprenyat."
|
|
24
|
+
why: "Catalan phrasing for a public 1-star reply — same skill regardless of language; the negative-review sequence applies."
|
|
25
|
+
|
|
26
|
+
- prompt: "Build me a dashboard of our rating and response rate across Google and the App Store."
|
|
27
|
+
why: "The reputation scorecard (rating, volume, velocity, recency, response-rate, sentiment-by-theme) across surfaces is owned here."
|
|
28
|
+
|
|
29
|
+
- prompt: "How do I post a developer reply to a Google review programmatically — what endpoint and scope?"
|
|
30
|
+
why: "Non-obvious wiring trigger: the GBP v4 updateReply PUT endpoint + business.manage scope + verified-location gate are the load-bearing facts this skill holds."
|
|
31
|
+
|
|
32
|
+
should_not_trigger:
|
|
33
|
+
- prompt: "A customer emailed support angry about a refund — write the reply."
|
|
34
|
+
route_to: customer-support
|
|
35
|
+
why: "Private 1:1 channel against an SLA; no future prospect reads it. The public-vs-private line routes this to support."
|
|
36
|
+
|
|
37
|
+
- prompt: "Our churn is up; build a save play for at-risk accounts."
|
|
38
|
+
route_to: retention
|
|
39
|
+
why: "A bad review may signal churn, but the save play / win-back sequence is retention's job."
|
|
40
|
+
|
|
41
|
+
- prompt: "Make our location page rank in the Google local pack."
|
|
42
|
+
route_to: seo-geo
|
|
43
|
+
why: "Ranking levers beyond reviews — schema, on-page, GEO, local-pack signals — are seo-geo."
|
|
44
|
+
|
|
45
|
+
- prompt: "Define our brand's tone of voice so replies sound consistent."
|
|
46
|
+
route_to: brand-voice
|
|
47
|
+
why: "This skill consumes the voice guide; brand-voice authors it (traits, word bank, tone matrix)."
|
|
48
|
+
|
|
49
|
+
- prompt: "Turn this 5-star review into an Instagram carousel and schedule it."
|
|
50
|
+
route_to: social-publisher
|
|
51
|
+
why: "Repurposing + scheduling the post is social-publisher; review-management only owns the reply to the review itself."
|
|
52
|
+
|
|
53
|
+
capability:
|
|
54
|
+
- scenario: "We got a specific, fair 1-star Google review about a botched install. Reply on-voice, tell me whether to flag it, and what to put in our review-request flow so this doesn't tank our rating."
|
|
55
|
+
must_include:
|
|
56
|
+
- "A reply that names the specific issue (the botched install), owns it, moves the customer to a private channel, states a concrete fix, and shows no defensiveness or public arguing."
|
|
57
|
+
- "An explicit 'do NOT flag this — it is a legitimate negative' with the flag-only-for-{fake / off-topic / conflict-of-interest / policy-violation} rule."
|
|
58
|
+
- "The 24-48h response SLA stated for the reply (within 24h helps ranking; reply to every review within 48h)."
|
|
59
|
+
- "An FTC-clean request flow: ask EVERY customer (no gating), within 24-48h of the transaction, via SMS and/or email with a direct link to the public review form."
|
|
60
|
+
- "Rationale citing the ~+0.7-star average lift from a developer/business response AND the FTC gating penalty of up to $53,088 per violation."
|