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,148 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
#
|
|
3
|
+
# verify.sh — structural lint for the `investor-materials` skill.
|
|
4
|
+
#
|
|
5
|
+
# WHAT IT DOES (read-only; never edits a file)
|
|
6
|
+
# Detects the artifact type from its section headers and asserts the required
|
|
7
|
+
# structure, then flags defects. Structural lint ONLY — it does not judge
|
|
8
|
+
# persuasion, metric selection, or framing (that is the capability eval's job).
|
|
9
|
+
#
|
|
10
|
+
# Data-room index (dataroom*/data-room*/*index*): all 8 numbered categories
|
|
11
|
+
# (01..08 Corporate..Tax) present.
|
|
12
|
+
# One-pager / teaser (one-pager*/onepager*/teaser*): the 7 blocks
|
|
13
|
+
# (problem, solution, traction, market, team, ask) + a numeric funding ask;
|
|
14
|
+
# and for a TEASER, FAILS if confidential P&L / cap-table detail leaked in.
|
|
15
|
+
# Investor update (*update*): the 6 sections (headline, highlights, a metrics
|
|
16
|
+
# table, challenges, asks, runway/cash).
|
|
17
|
+
# Global: flags placeholder tokens (TBD, XX, [amount], [company], [role]) and
|
|
18
|
+
# vague asks ("let me know if you can help", "any help appreciated").
|
|
19
|
+
#
|
|
20
|
+
# HOW TO RUN (against YOUR generated artifact, not the skills repo)
|
|
21
|
+
# ./verify.sh path/to/one-pager.md
|
|
22
|
+
# ./verify.sh path/to/dataroom-index.md
|
|
23
|
+
# ./verify.sh path/to/investor-update.md
|
|
24
|
+
# ./verify.sh # scans ./ for matching *.md files
|
|
25
|
+
#
|
|
26
|
+
# EXIT CODES
|
|
27
|
+
# 0 clean, OR nothing to check (empty/clean target — never a false failure)
|
|
28
|
+
# 1 a structural defect was found
|
|
29
|
+
# 2 bad usage
|
|
30
|
+
#
|
|
31
|
+
# Runs on stock macOS bash 3.2: no mapfile, no associative arrays.
|
|
32
|
+
|
|
33
|
+
set -euo pipefail
|
|
34
|
+
|
|
35
|
+
if [ -t 1 ]; then
|
|
36
|
+
RED=$'\033[31m'; GREEN=$'\033[32m'; YELLOW=$'\033[33m'; NC=$'\033[0m'
|
|
37
|
+
else
|
|
38
|
+
RED=''; GREEN=''; YELLOW=''; NC=''
|
|
39
|
+
fi
|
|
40
|
+
|
|
41
|
+
ok_count=0; warn_count=0; fail_count=0
|
|
42
|
+
ok() { printf '%s[ ok ]%s %s\n' "$GREEN" "$NC" "$*"; ok_count=$((ok_count + 1)); }
|
|
43
|
+
warn() { printf '%s[warn]%s %s\n' "$YELLOW" "$NC" "$*"; warn_count=$((warn_count + 1)); }
|
|
44
|
+
fail() { printf '%s[fail]%s %s\n' "$RED" "$NC" "$*"; fail_count=$((fail_count + 1)); }
|
|
45
|
+
info() { printf '%s..%s %s\n' "$YELLOW" "$NC" "$*"; }
|
|
46
|
+
|
|
47
|
+
usage() { sed -n '2,30p' "$0" | sed 's/^# \{0,1\}//'; exit 2; }
|
|
48
|
+
|
|
49
|
+
# case-insensitive fixed-ish grep helper (returns 0 if pattern found in file)
|
|
50
|
+
has() { grep -iq "$1" "$2" 2>/dev/null; }
|
|
51
|
+
|
|
52
|
+
# --- collect targets --------------------------------------------------------
|
|
53
|
+
TARGETS=""
|
|
54
|
+
if [ $# -eq 0 ]; then
|
|
55
|
+
# no arg: scan cwd for candidate markdown artifacts
|
|
56
|
+
for f in ./*.md; do
|
|
57
|
+
[ -e "$f" ] || continue
|
|
58
|
+
case "$(basename "$f" | tr 'A-Z' 'a-z')" in
|
|
59
|
+
*dataroom*|*data-room*|*one-pager*|*onepager*|*teaser*|*investor-update*|*update*|*index*)
|
|
60
|
+
TARGETS="$TARGETS $f" ;;
|
|
61
|
+
esac
|
|
62
|
+
done
|
|
63
|
+
else
|
|
64
|
+
case "$1" in -h|--help) usage;; esac
|
|
65
|
+
for f in "$@"; do
|
|
66
|
+
if [ ! -f "$f" ]; then fail "not a file: $f"; else TARGETS="$TARGETS $f"; fi
|
|
67
|
+
done
|
|
68
|
+
fi
|
|
69
|
+
|
|
70
|
+
if [ -z "${TARGETS// /}" ]; then
|
|
71
|
+
# Empty / clean target: nothing to lint is not a failure.
|
|
72
|
+
ok "no investor-materials artifact found to check — nothing to lint"
|
|
73
|
+
exit 0
|
|
74
|
+
fi
|
|
75
|
+
|
|
76
|
+
# --- global defect checks (applied to every target) -------------------------
|
|
77
|
+
check_global() {
|
|
78
|
+
local f="$1"
|
|
79
|
+
if grep -Eiq '\bTBD\b|\bXX+\b|\[amount\]|\[company\]|\[role\]|\[founder\]|FINAL_FINAL' "$f"; then
|
|
80
|
+
fail "$f: placeholder token left in (TBD / XX / [amount] / [company] / [role])"
|
|
81
|
+
fi
|
|
82
|
+
if grep -Eiq 'let me know if you can help|any (help|introductions?) appreciated|help us grow|feedback welcome|spread the word' "$f"; then
|
|
83
|
+
fail "$f: vague ask detected — name the intro/role/company instead"
|
|
84
|
+
fi
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
# --- per-type structural checks ---------------------------------------------
|
|
88
|
+
check_dataroom() {
|
|
89
|
+
local f="$1"; info "$f: data-room index"
|
|
90
|
+
local n
|
|
91
|
+
for n in 01 02 03 04 05 06 07 08; do
|
|
92
|
+
if grep -Eq "(^|[^0-9])${n}[_ -]" "$f" || has "${n}_" "$f"; then :; else
|
|
93
|
+
fail "$f: data-room category ${n} missing"
|
|
94
|
+
fi
|
|
95
|
+
done
|
|
96
|
+
grep -Eiq 'cap.?table' "$f" || warn "$f: no cap table referenced (most-scrutinized doc)"
|
|
97
|
+
[ "$fail_count" -eq 0 ] && ok "$f: 8 numbered categories present"
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
check_onepager() {
|
|
101
|
+
local f="$1"; info "$f: one-pager / teaser"
|
|
102
|
+
local b
|
|
103
|
+
local missing=0
|
|
104
|
+
for b in problem solution traction market team; do
|
|
105
|
+
has "$b" "$f" || { fail "$f: one-pager block '$b' missing"; missing=1; }
|
|
106
|
+
done
|
|
107
|
+
grep -Eiq 'ask|raising|use of funds' "$f" || { fail "$f: no 'ask' block"; missing=1; }
|
|
108
|
+
grep -Eq '\$[0-9]' "$f" || { fail "$f: ask has no numeric funding amount (e.g. \$1.5M)"; missing=1; }
|
|
109
|
+
[ "$missing" -eq 0 ] && ok "$f: 7 blocks present with a numeric ask"
|
|
110
|
+
# teaser must not leak confidential financials
|
|
111
|
+
case "$(basename "$f" | tr 'A-Z' 'a-z')" in
|
|
112
|
+
*teaser*)
|
|
113
|
+
if grep -Eiq 'p&l|profit (and|&) loss|balance sheet|fully.?diluted cap table|bank statement' "$f"; then
|
|
114
|
+
fail "$f: teaser leaks confidential financials (P&L / balance sheet / full cap table)"
|
|
115
|
+
else
|
|
116
|
+
ok "$f: teaser carries no confidential financials"
|
|
117
|
+
fi ;;
|
|
118
|
+
esac
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
check_update() {
|
|
122
|
+
local f="$1"; info "$f: investor update"
|
|
123
|
+
local missing=0
|
|
124
|
+
has "headline" "$f" || warn "$f: no explicit headline section"
|
|
125
|
+
has "highlight" "$f" || { fail "$f: highlights section missing"; missing=1; }
|
|
126
|
+
grep -Eq '\|.*\|.*\|' "$f" || { fail "$f: no metrics table (markdown | table |)"; missing=1; }
|
|
127
|
+
has "challenge" "$f" || { fail "$f: challenges section missing"; missing=1; }
|
|
128
|
+
has "ask" "$f" || { fail "$f: asks section missing"; missing=1; }
|
|
129
|
+
grep -Eiq 'runway|burn|cash:' "$f" || { fail "$f: no cash/runway line"; missing=1; }
|
|
130
|
+
[ "$missing" -eq 0 ] && ok "$f: 6 sections present incl. metrics table + runway"
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
# --- dispatch ---------------------------------------------------------------
|
|
134
|
+
for f in $TARGETS; do
|
|
135
|
+
check_global "$f"
|
|
136
|
+
case "$(basename "$f" | tr 'A-Z' 'a-z')" in
|
|
137
|
+
*dataroom*|*data-room*|*index*) check_dataroom "$f" ;;
|
|
138
|
+
*one-pager*|*onepager*|*teaser*) check_onepager "$f" ;;
|
|
139
|
+
*update*) check_update "$f" ;;
|
|
140
|
+
*) warn "$f: type not recognized from filename — ran global checks only" ;;
|
|
141
|
+
esac
|
|
142
|
+
done
|
|
143
|
+
|
|
144
|
+
printf '\n%s%d ok%s · %s%d warn%s · %s%d fail%s\n' \
|
|
145
|
+
"$GREEN" "$ok_count" "$NC" "$YELLOW" "$warn_count" "$NC" "$RED" "$fail_count" "$NC"
|
|
146
|
+
|
|
147
|
+
[ "$fail_count" -eq 0 ] || exit 1
|
|
148
|
+
exit 0
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: invoicing
|
|
3
|
+
description: "Use when someone needs to cut a legally-valid bill or quote, move it through its get-paid lifecycle, or chase money that hasn't arrived — billing completed work, drafting a quote before a job, an invoice weeks overdue, what must legally be on the page, or readiness for a structured e-invoicing mandate. Triggers: 'send an invoice to this client', 'create a quote / estimate for a prospect', 'this invoice is 3 weeks overdue, what do I send', 'what legally has to be on my invoice', 'our invoice numbers jump from 0042 to 0044 — is that a problem', 'issue a credit note for the one I sent', 'are we ready for the French e-invoicing mandate', 'emite una factura con el IVA desglosado', 'esta factura está vencida', 'crear un presupuesto', 'fes una factura per aquest client'. NOT recording a paid invoice in the books (that is bookkeeping), NOT wiring up the Stripe SDK as a software task (that is stripe), NOT setting the price (that is pricing)."
|
|
4
|
+
tags: [invoicing, billing, vat-invoice, dunning, accounts-receivable, e-invoicing, quotes, credit-note]
|
|
5
|
+
recommends: [bookkeeping, stripe, pricing, contracts, proposals, e-signature, webhooks, finance-ops]
|
|
6
|
+
origin: risco
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Invoicing — cut the document, run the lifecycle, get paid
|
|
10
|
+
|
|
11
|
+
You are the person in the business who **cuts the invoice, sends it, and gets it paid**. You own the billing document and its collection lifecycle: what must be on the page for a tax authority to accept it, how it moves from draft to paid, and how to chase money politely-then-firmly without breaking the law. You are not the accountant who later files it, and not the engineer who wires up the payment processor.
|
|
12
|
+
|
|
13
|
+
The whole job is three moves: **cut a valid document → run its lifecycle → get it paid.** Skip the validity step and the customer can't deduct the VAT. Skip the lifecycle and you lose track of who owes what. Skip the chase and you work for free.
|
|
14
|
+
|
|
15
|
+
## Route out before you start
|
|
16
|
+
|
|
17
|
+
This skill answers "make a valid bill and collect it." When the ask is something else, stop and route:
|
|
18
|
+
|
|
19
|
+
| The ask | Goes to |
|
|
20
|
+
| --- | --- |
|
|
21
|
+
| Record a paid invoice in the books, reconcile it to the bank line | `../bookkeeping/SKILL.md` |
|
|
22
|
+
| Wire up the Stripe SDK, keys, or `invoice.paid` webhook as code | `../stripe/SKILL.md` / `../webhooks/SKILL.md` |
|
|
23
|
+
| Decide what to charge — rate card, margin, price list | `../pricing/SKILL.md` |
|
|
24
|
+
| Draft the MSA / SOW / engagement terms the invoice bills against | `../contracts/SKILL.md` |
|
|
25
|
+
| Write the pre-sale pitch that persuades before money is owed | `../proposals/SKILL.md` |
|
|
26
|
+
| Get a signature on a document | `../e-signature/SKILL.md` |
|
|
27
|
+
| Runway / P&L / cash-flow cadence | `../finance-ops/SKILL.md` |
|
|
28
|
+
|
|
29
|
+
Sharpest near-miss: "reconcile this paid invoice / record it in the accounts" reads invoicing-shaped but is **bookkeeping**. The moment money is *recorded against the books*, it leaves your hands.
|
|
30
|
+
|
|
31
|
+
## Pick the right document first
|
|
32
|
+
|
|
33
|
+
Before anything, decide which document you are issuing — they use different number sequences and carry different obligations.
|
|
34
|
+
|
|
35
|
+
| Document | Use when | Number sequence | Creates a payment obligation? |
|
|
36
|
+
| --- | --- | --- | --- |
|
|
37
|
+
| Quote / estimate (presupuesto, pressupost) | Before work starts, to propose a price | Its own quote series (not the invoice series) | No — it is an offer, not a debt |
|
|
38
|
+
| Invoice (factura) | Work delivered or goods supplied, money is owed | The continuous invoice series | Yes |
|
|
39
|
+
| Proforma | A "please-pay-this" preview that is not yet a tax document | Not the invoice series | No — not a fiscal invoice |
|
|
40
|
+
| Credit note / corrective (factura rectificativa) | To cancel or reduce an invoice already sent | Its own corrective series, **referencing the original number** | Reduces an existing obligation |
|
|
41
|
+
|
|
42
|
+
Why it matters: you **never** delete or renumber a finalized invoice to fix it. You issue a corrective that points back at the original. A missing number in the invoice series is an audit flag.
|
|
43
|
+
|
|
44
|
+
## The legally-valid invoice checklist
|
|
45
|
+
|
|
46
|
+
An EU VAT invoice that won't let the customer deduct VAT is a broken invoice. Every one of these must be present (source: European Commission VAT Invoicing rules, accessed 2026-06-02):
|
|
47
|
+
|
|
48
|
+
- [ ] **Issue date** (and supply date if different from issue date).
|
|
49
|
+
- [ ] **Unique sequential invoice number** — continuous, gap-free, chronological.
|
|
50
|
+
- [ ] **Supplier** name + address + **VAT number**.
|
|
51
|
+
- [ ] **Customer** name + address (+ VAT number for B2B / reverse-charge).
|
|
52
|
+
- [ ] **Description** of goods or services supplied.
|
|
53
|
+
- [ ] **Net amount per VAT rate** (the taxable base).
|
|
54
|
+
- [ ] **The VAT rate(s)** applied and **the VAT amount** per rate.
|
|
55
|
+
- [ ] **Total** payable.
|
|
56
|
+
- [ ] **Any required legend** — "reverse charge", "VAT exempt", "self-billing" — where it applies.
|
|
57
|
+
- [ ] **Due date + payment terms** (see lifecycle below — no due date means no basis to chase).
|
|
58
|
+
|
|
59
|
+
Sequential numbering is **law, not style**. The number must be unique and the series continuous across all invoice types (B2B, B2C, OSS/IOSS, reverse charge). The why: a gap-free chronological sequence is the audit trail that proves no invoice was hidden or invented. Corrective invoices reference the original's number inside their own corrective series.
|
|
60
|
+
|
|
61
|
+
```text
|
|
62
|
+
Bad 2024-001, 2024-002, 2024-004 ← 003 is missing → auditor asks "what did you delete?"
|
|
63
|
+
Bad INV-5, EST-6, INV-7 ← quote EST-6 must not consume an invoice slot
|
|
64
|
+
Good 2024-001, 2024-002, 2024-003 ← continuous invoice series
|
|
65
|
+
Good REC-2024-001 → refs invoice 2024-002 ← corrective points back, own series
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Jurisdiction gate — a PDF is not always legal anymore
|
|
69
|
+
|
|
70
|
+
The EU is moving from "any readable invoice" to **structured e-invoices** (machine-readable XML, EN 16931 semantic model, Peppol BIS transport). A PDF — even a perfect one — is *not* a structured e-invoice. Gate every new invoice: **which country + B2B/B2G/B2C + by what date** (source: Fiskaly/Fonoa e-invoicing roadmaps; EC eInvoicing country pages; accessed 2026-06-02):
|
|
71
|
+
|
|
72
|
+
- **Belgium** — structured B2B mandatory **1 Jan 2026** (now in force).
|
|
73
|
+
- **France** — phased from **Sep 2026**; DGFiP is the national Peppol Authority.
|
|
74
|
+
- **Germany** — businesses > EUR 800k turnover by **1 Jan 2027**, all businesses 2028.
|
|
75
|
+
- **Spain** — two *separate* mandates: **Verifactu** (tamper-evident software, chained-hash records, mandatory QR on every invoice) in force **1 Jan 2027** for corporate-tax payers; **Crea y Crece** (structured B2B e-invoice in UBL/Facturae/CII/EDIFACT with acceptance + payment-date reporting) phased from ~Oct 2026, large firms ~Oct 2027.
|
|
76
|
+
- **Italy / Poland** — SdI and KSeF clearance models already live.
|
|
77
|
+
- **EU-wide hard deadline** for intra-EU B2B/B2G structured e-invoices under ViDA: **1 Jul 2030**.
|
|
78
|
+
|
|
79
|
+
If the customer is in a country past its mandate date, do **not** email a PDF — generate the structured format. Full per-country table with formats and endpoints: `references/e-invoicing-mandates.md`.
|
|
80
|
+
|
|
81
|
+
## The lifecycle and its states
|
|
82
|
+
|
|
83
|
+
Every invoice moves through a fixed set of states. Track which state each one is in — that is your accounts-receivable.
|
|
84
|
+
|
|
85
|
+
| State | Meaning | Action to move it forward |
|
|
86
|
+
| --- | --- | --- |
|
|
87
|
+
| `draft` | Not yet issued; editable | Finalize → assigns the sequential number |
|
|
88
|
+
| `open` / sent | Finalized and delivered; awaiting payment | Send, then watch the due date |
|
|
89
|
+
| overdue | Past due date, still open | Start the dunning ladder |
|
|
90
|
+
| `paid` | Settled in full | Hand off to `../bookkeeping/SKILL.md` to record |
|
|
91
|
+
| `void` | Cancelled **before** any payment | Void (keeps the number; never delete) |
|
|
92
|
+
| `uncollectible` | Written off after collection failed | Mark; consider a credit note |
|
|
93
|
+
|
|
94
|
+
The rule that catches people: **you never delete a finalized invoice.** To fix a sent invoice you `void` it (if unpaid) or issue a **credit note / corrective** (if it was wrong or partially paid). Deleting it leaves a gap in the number series — the same audit flag as fraud.
|
|
95
|
+
|
|
96
|
+
## The dunning ladder — chase politely, then firmly
|
|
97
|
+
|
|
98
|
+
Overdue invoices get a **day-based cadence with escalating tone**, not random nagging. The skeleton (full bilingual templates in `references/dunning-ladder.md`):
|
|
99
|
+
|
|
100
|
+
- **D-0** — at issue, a friendly confirmation: amount, due date, how to pay.
|
|
101
|
+
- **D+1** (after due date) — short, neutral reminder: "this may have slipped past."
|
|
102
|
+
- **D+7** — firmer, restate the amount and the original due date.
|
|
103
|
+
- **D+15** — invoke the statutory lever explicitly (see below).
|
|
104
|
+
- **D+30** — final notice before escalation to collections / legal.
|
|
105
|
+
|
|
106
|
+
Your legal lever (source: EU Directive 2011/7/EU on late payment; EC Late Payment page; accessed 2026-06-02): for B2B/B2G commercial invoices, default payment term is **30 days** (extendable to 60 for B2B). On default, **statutory interest accrues automatically at the ECB reference rate + at least 8 percentage points**, plus a **fixed EUR 40 recovery-cost compensation per invoice**, owed *without proof of cost*. From D+15 you may state this in writing — it is the difference between begging and invoking a right.
|
|
107
|
+
|
|
108
|
+
## Programmatic path via Stripe (only when automation is wanted)
|
|
109
|
+
|
|
110
|
+
When the user wants invoices sent by software rather than by hand, use Stripe. SDK is **stripe-node v19.1.0**; invoice status enum is `draft → open → paid | uncollectible | void` (source: Stripe API Reference; context7 /stripe/stripe-node v19.1.0; accessed 2026-06-02).
|
|
111
|
+
|
|
112
|
+
```javascript
|
|
113
|
+
// 1. add line items to the customer, then 2. create the invoice
|
|
114
|
+
await stripe.invoiceItems.create({
|
|
115
|
+
customer: customerId,
|
|
116
|
+
amount: 120000, // cents — 12h consulting @ EUR 100/h
|
|
117
|
+
currency: 'eur',
|
|
118
|
+
description: '12h consulting',
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
const invoice = await stripe.invoices.create({
|
|
122
|
+
customer: customerId,
|
|
123
|
+
collection_method: 'send_invoice', // email the customer (vs charge_automatically)
|
|
124
|
+
days_until_due: 30, // due-date / payment terms
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
// 3. finalize assigns the sequential number, 4. send emails it
|
|
128
|
+
await stripe.invoices.finalizeInvoice(invoice.id);
|
|
129
|
+
await stripe.invoices.sendInvoice(invoice.id);
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Quotes follow `draft → finalize (assigns number) → accept`, which auto-generates the invoice. Dunning/retry on `charge_automatically` invoices is handled by Stripe **Smart Retries** (ML-timed, retry window ~1 week to 2 months) — you do not hand-build the retry loop. For the integration plumbing itself — keys, idempotency, the `invoice.paid` webhook — hand to `../stripe/SKILL.md` and `../webhooks/SKILL.md`.
|
|
133
|
+
|
|
134
|
+
## Anti-patterns
|
|
135
|
+
|
|
136
|
+
| Anti-pattern | Why it's wrong | Do instead |
|
|
137
|
+
| --- | --- | --- |
|
|
138
|
+
| Reusing or skipping an invoice number | Gap/duplicate in the series is an audit flag | One continuous gap-free series; void, don't delete |
|
|
139
|
+
| Letting a quote consume an invoice number | Pollutes the fiscal series with non-debts | Separate quote series; only finalized invoices take invoice numbers |
|
|
140
|
+
| Deleting a finalized invoice to "fix" it | Creates a number gap = looks like concealment | Void if unpaid, else issue a credit note referencing it |
|
|
141
|
+
| Emailing a PDF where structured e-invoice is mandated | A PDF is not EN 16931 / Peppol — legally non-compliant | Check the jurisdiction gate; emit the structured format |
|
|
142
|
+
| No due date / no payment terms | No basis to claim overdue or interest | Always set due date + terms (default 30 days B2B/B2G) |
|
|
143
|
+
| Chasing payment with no statutory basis | Weak, easily ignored | From D+15 cite ECB+8pp interest + EUR 40 fixed cost |
|
|
144
|
+
| Omitting the per-rate VAT breakdown | Customer can't deduct VAT; invalid invoice | Net + rate + VAT amount per rate, plus total |
|
|
145
|
+
| Recording the payment in the books yourself | Wrong skill, double-entry not your job | Hand the paid invoice to `../bookkeeping/SKILL.md` |
|
|
146
|
+
|
|
147
|
+
## Hand-off
|
|
148
|
+
|
|
149
|
+
- Invoice paid → record + reconcile it: `../bookkeeping/SKILL.md`.
|
|
150
|
+
- Need the SDK / webhook plumbing: `../stripe/SKILL.md`, `../webhooks/SKILL.md`.
|
|
151
|
+
- Deciding the amount before you bill: `../pricing/SKILL.md`.
|
|
152
|
+
- The terms the invoice bills against: `../contracts/SKILL.md`.
|
|
153
|
+
- The pre-sale pitch, not the bill: `../proposals/SKILL.md`.
|
|
154
|
+
- Getting it signed: `../e-signature/SKILL.md`.
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Evals — invoicing
|
|
2
|
+
|
|
3
|
+
`cases.yaml` holds the routing and capability checks for this skill. There is no automated runner bundled here: load `cases.yaml` and judge each case with an LLM (or by hand). For `should_trigger`, confirm a router given the prompt would reach for `invoicing`; for `should_not_trigger`, confirm it routes to the named sibling instead (each `route_to` is a real catalog id). For the `capability` case, have the agent produce the artifact and score it against every line in `must_include` — all items must be present to pass.
|
|
4
|
+
|
|
5
|
+
To check the artifact-validation side, run `scripts/verify.sh` against an invoice JSON payload (it ships with a clean sample fixture and a deliberately broken one); see that file's header for usage. It lints the mandatory-field set and the number sequence and is read-only.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
skill: invoicing
|
|
2
|
+
|
|
3
|
+
should_trigger:
|
|
4
|
+
- prompt: "Send an invoice to Acme for the 12 hours of consulting we did this month."
|
|
5
|
+
why: Core case — cut and send a billing document for delivered work.
|
|
6
|
+
- prompt: "Emite una factura para este cliente con el IVA desglosado."
|
|
7
|
+
why: Spanish phrasing for issuing an invoice with a per-rate VAT breakdown.
|
|
8
|
+
- prompt: "This invoice is 3 weeks overdue — what should I send to chase it?"
|
|
9
|
+
why: Dunning — running the get-paid escalation on an overdue invoice.
|
|
10
|
+
- prompt: "Our invoice numbers jump from 0042 to 0044 — is that a problem?"
|
|
11
|
+
why: Non-obvious — the legality of gap-free sequential numbering, not an obvious 'invoice' phrasing.
|
|
12
|
+
- prompt: "Do we need to switch to structured e-invoices for our French B2B clients next year?"
|
|
13
|
+
why: Jurisdiction gate — e-invoicing mandate readiness (France phased from Sep 2026).
|
|
14
|
+
- prompt: "Crear un presupuesto for a prospect before we start the project."
|
|
15
|
+
why: Quote/estimate path in Spanish (presupuesto) — a pre-debt document this skill issues.
|
|
16
|
+
- prompt: "I need to issue a credit note for the invoice I already sent last week."
|
|
17
|
+
why: Corrective/credit-note flow against a finalized invoice.
|
|
18
|
+
|
|
19
|
+
should_not_trigger:
|
|
20
|
+
- prompt: "Record this paid invoice in our accounts and reconcile the bank line."
|
|
21
|
+
route_to: bookkeeping
|
|
22
|
+
why: Recording money against the books, not issuing or collecting it.
|
|
23
|
+
- prompt: "Wire up the Stripe webhook so invoice.paid updates our database."
|
|
24
|
+
route_to: webhooks
|
|
25
|
+
why: Integration plumbing / event handling, not the billing document.
|
|
26
|
+
- prompt: "What hourly rate should we charge this new client?"
|
|
27
|
+
route_to: pricing
|
|
28
|
+
why: Setting the price, not billing an amount already agreed.
|
|
29
|
+
- prompt: "Draft the statement of work and engagement terms for this project."
|
|
30
|
+
route_to: contracts
|
|
31
|
+
why: The agreement the invoice bills against, not the invoice.
|
|
32
|
+
- prompt: "Write the proposal that pitches this project to win the deal."
|
|
33
|
+
route_to: proposals
|
|
34
|
+
why: Pre-sale persuasion before money is owed, not the bill.
|
|
35
|
+
- prompt: "Get the client to e-sign the agreement before we begin."
|
|
36
|
+
route_to: e-signature
|
|
37
|
+
why: Capturing a signature, not issuing a billing document.
|
|
38
|
+
|
|
39
|
+
capability:
|
|
40
|
+
- scenario: "Issue a legally-valid VAT invoice for a Spain-based B2B sale and set up a dunning sequence."
|
|
41
|
+
must_include:
|
|
42
|
+
- A unique, gap-free sequential invoice number
|
|
43
|
+
- Supplier VAT id and customer VAT id (B2B)
|
|
44
|
+
- Per-rate VAT breakdown (net base + rate + VAT amount) and a total
|
|
45
|
+
- Issue date and a due date with payment terms (default 30 days B2B/B2G)
|
|
46
|
+
- Flags the Spain Verifactu QR / Crea y Crece structured-format obligation and its timeline
|
|
47
|
+
- A day-based dunning cadence (e.g. D+1 / D+7 / D+15 / D+30)
|
|
48
|
+
- Cites the statutory late-payment lever — ECB reference rate + 8 percentage points and the fixed EUR 40 recovery cost
|
|
49
|
+
- Does NOT attempt to record the invoice in the books — defers that to bookkeeping
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Dunning ladder — the full reminder cadence (EN + ES)
|
|
2
|
+
|
|
3
|
+
Chasing money is a **sequence with escalating tone**, not random nagging. Each step is timed off the due date and ends with a clear next action. The statutory lever appears only from D+15 — invoke it too early and you sound aggressive; never and you sound optional.
|
|
4
|
+
|
|
5
|
+
Statutory basis (EU Directive 2011/7/EU on late payment in commercial transactions; EC Late Payment page; accessed 2026-06-02): for B2B/B2G commercial invoices the default term is **30 days** (extendable to 60 for B2B). On default, **statutory interest accrues automatically at the ECB reference rate + at least 8 percentage points**, plus a **fixed EUR 40 recovery-cost compensation per invoice**, owed *without proof of cost*.
|
|
6
|
+
|
|
7
|
+
## Cadence at a glance
|
|
8
|
+
|
|
9
|
+
| Step | Timing | Tone | Goal |
|
|
10
|
+
| --- | --- | --- | --- |
|
|
11
|
+
| D-0 | At issue | Friendly | Confirm amount, due date, how to pay |
|
|
12
|
+
| D+1 | 1 day after due | Neutral | "May have slipped past you" |
|
|
13
|
+
| D+7 | 1 week overdue | Firm | Restate amount + original due date |
|
|
14
|
+
| D+15 | 2 weeks overdue | Formal | Invoke statutory interest + EUR 40 |
|
|
15
|
+
| D+30 | 1 month overdue | Final | Notice before collections / legal |
|
|
16
|
+
|
|
17
|
+
## Templates (EN)
|
|
18
|
+
|
|
19
|
+
**D-0 — confirmation**
|
|
20
|
+
> Hi {name}, thanks for the work this period. Invoice {number} for {amount} is attached, due {due_date}. Payment details are on the invoice — reply here if anything looks off.
|
|
21
|
+
|
|
22
|
+
**D+1 — gentle reminder**
|
|
23
|
+
> Hi {name}, a quick note that invoice {number} ({amount}) was due {due_date}. It may simply have slipped past — could you confirm it's in the payment run? Thank you.
|
|
24
|
+
|
|
25
|
+
**D+7 — firm**
|
|
26
|
+
> Hi {name}, invoice {number} for {amount} is now 7 days overdue (due {due_date}). Please let me know the expected payment date, or if there's a query holding it up I can resolve.
|
|
27
|
+
|
|
28
|
+
**D+15 — formal, statutory lever**
|
|
29
|
+
> Hi {name}, invoice {number} ({amount}) is now 15 days overdue. Under Directive 2011/7/EU, statutory late-payment interest (ECB reference rate + 8 percentage points) and a fixed EUR 40 recovery charge now apply. We'd prefer to settle this amicably — please arrange payment by {date} to avoid those charges being added.
|
|
30
|
+
|
|
31
|
+
**D+30 — final notice**
|
|
32
|
+
> Hi {name}, despite previous reminders, invoice {number} ({amount}) remains unpaid 30 days past due. This is a final notice: unless payment (plus accrued statutory interest and the EUR 40 recovery cost) reaches us by {date}, we will refer the matter to {collections/legal}. We'd much rather resolve it directly.
|
|
33
|
+
|
|
34
|
+
## Plantillas (ES)
|
|
35
|
+
|
|
36
|
+
**D-0 — confirmación**
|
|
37
|
+
> Hola {name}, gracias por el trabajo de este periodo. Adjunto la factura {number} por {amount}, con vencimiento el {due_date}. Los datos de pago están en la factura — responde aquí si ves algo raro.
|
|
38
|
+
|
|
39
|
+
**D+1 — recordatorio suave**
|
|
40
|
+
> Hola {name}, te escribo para recordarte que la factura {number} ({amount}) venció el {due_date}. Puede que se haya pasado por alto — ¿podrías confirmar que está en el próximo pago? Gracias.
|
|
41
|
+
|
|
42
|
+
**D+7 — firme**
|
|
43
|
+
> Hola {name}, la factura {number} por {amount} lleva 7 días vencida (vencimiento {due_date}). ¿Me confirmas la fecha prevista de pago? Si hay alguna incidencia que lo bloquee, dímelo y lo resuelvo.
|
|
44
|
+
|
|
45
|
+
**D+15 — formal, palanca legal**
|
|
46
|
+
> Hola {name}, la factura {number} ({amount}) lleva 15 días vencida. Conforme a la Directiva 2011/7/UE, se aplican intereses de demora (tipo de referencia del BCE + 8 puntos porcentuales) y una compensación fija de 40 EUR por costes de cobro. Preferimos resolverlo de forma amistosa — te pido que regularices el pago antes del {date} para evitar esos cargos.
|
|
47
|
+
|
|
48
|
+
**D+30 — aviso final**
|
|
49
|
+
> Hola {name}, pese a los recordatorios anteriores, la factura {number} ({amount}) sigue impagada 30 días después del vencimiento. Este es el aviso final: si el pago (más los intereses de demora y los 40 EUR de costes de cobro) no se recibe antes del {date}, trasladaremos el asunto a {gestión de cobro/vía legal}. Preferimos resolverlo directamente contigo.
|
|
50
|
+
|
|
51
|
+
## When to stop
|
|
52
|
+
|
|
53
|
+
Stop the email ladder after D+30 and escalate to a debt-collection agency, a formal demand letter, or small-claims/monitorio process. Keep every reminder — the documented cadence is evidence you gave the debtor fair chance, which strengthens any later claim. Recording the eventual write-off or partial recovery in the ledger is `../bookkeeping/SKILL.md`, not this skill.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# E-invoicing mandates — the jurisdiction table
|
|
2
|
+
|
|
3
|
+
The EU is moving from "any human-readable invoice" to **structured e-invoices**: machine-readable XML carrying the EN 16931 semantic data model, usually exchanged over the **Peppol BIS** network. A PDF — even a flawless one — is *not* a structured e-invoice; it is an image of one. This file is the per-country detail behind the jurisdiction gate in SKILL.md.
|
|
4
|
+
|
|
5
|
+
All dates and facts accessed 2026-06-02 (sources: Fiskaly E-invoicing Europe 2026 roadmap; Fonoa Peppol 2026; European Commission eInvoicing country pages; Marosa Verifactu guide; Vertex Crea y Crece guide).
|
|
6
|
+
|
|
7
|
+
## What "structured" means
|
|
8
|
+
|
|
9
|
+
| | PDF / paper | Structured e-invoice |
|
|
10
|
+
| --- | --- | --- |
|
|
11
|
+
| Format | Image / printable doc | XML (UBL, Facturae, CII, EDIFACT) |
|
|
12
|
+
| Data model | None enforced | EN 16931 semantic core |
|
|
13
|
+
| Transport | Email / post | Peppol BIS, national portal, or clearance platform |
|
|
14
|
+
| Machine-readable | No | Yes — tax authority can parse it |
|
|
15
|
+
| Compliant past a mandate date | **No** | Yes |
|
|
16
|
+
|
|
17
|
+
## Country mandate table
|
|
18
|
+
|
|
19
|
+
| Country | Scope | Live / deadline | Format(s) | Transport / model |
|
|
20
|
+
| --- | --- | --- | --- | --- |
|
|
21
|
+
| Belgium | B2B | **1 Jan 2026** (in force) | EN 16931 (Peppol BIS) | Peppol (decentralised) |
|
|
22
|
+
| France | B2B/B2G, phased | from **Sep 2026** | Factur-X / UBL / CII | DGFiP = national Peppol Authority (since Jul 2025) |
|
|
23
|
+
| Germany | B2B, turnover bands | > EUR 800k by **1 Jan 2027**; all businesses 2028 | XRechnung / ZUGFeRD | Peppol / EN 16931 |
|
|
24
|
+
| Spain — Verifactu | Invoicing *software* | **1 Jan 2027** (corporate-tax payers; delayed by RD-ley 15/2025) | tamper-evident records + **mandatory QR** | chained-hash log, signature + timestamp |
|
|
25
|
+
| Spain — Crea y Crece | B2B structured invoice | phased ~Oct 2026; large firms (>EUR 8M) ~Oct 2027 | Facturae / UBL / CII / EDIFACT | + acceptance & payment-date reporting |
|
|
26
|
+
| Italy | B2B/B2C | already live | FatturaPA (XML) | SdI clearance |
|
|
27
|
+
| Poland | B2B | KSeF rollout | FA(2) XML | KSeF clearance |
|
|
28
|
+
| **EU-wide (ViDA)** | intra-EU B2B/B2G | **1 Jul 2030** (hard) | EN 16931 | Digital Reporting Requirements |
|
|
29
|
+
|
|
30
|
+
## Spain: two mandates, do not confuse them
|
|
31
|
+
|
|
32
|
+
- **Verifactu** governs the *software* that issues invoices — chained-hash tamper-evident records, signature + timestamp, a full event log, and a **mandatory QR code on every invoice**. It is about *how the record is produced and protected*.
|
|
33
|
+
- **Crea y Crece** governs the *exchange format* — a structured B2B e-invoice (UBL, Facturae, CII or EDIFACT) with acceptance and payment-date reporting. It is about *what document moves between businesses*.
|
|
34
|
+
|
|
35
|
+
A Spanish business can be subject to both, on different timelines.
|
|
36
|
+
|
|
37
|
+
## Practical gate
|
|
38
|
+
|
|
39
|
+
1. Where is the **customer** established?
|
|
40
|
+
2. Is the transaction **B2B, B2G, or B2C**? (mandates hit B2B/B2G first)
|
|
41
|
+
3. Is today **past that country's deadline**?
|
|
42
|
+
|
|
43
|
+
If yes to all three: do not email a PDF — generate the country's structured format and send it over the mandated channel. For building the actual integration to a Peppol access point or national portal, that is an engineering task — hand to `../stripe/SKILL.md` or an API-connector skill, not this skill.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"number": "2024-006",
|
|
3
|
+
"issue_date": "2024-03-04",
|
|
4
|
+
"due_date": "",
|
|
5
|
+
"supplier": { "name": "Risco Studio SL" },
|
|
6
|
+
"customer": { "name": "Acme GmbH" },
|
|
7
|
+
"line_items": [],
|
|
8
|
+
"vat_breakdown": [
|
|
9
|
+
{ "rate": 21, "net": 50000 }
|
|
10
|
+
],
|
|
11
|
+
"total": 60500,
|
|
12
|
+
"sequence": ["2024-004", "2024-006"]
|
|
13
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"number": "2024-003",
|
|
3
|
+
"issue_date": "2024-03-01",
|
|
4
|
+
"due_date": "2024-03-31",
|
|
5
|
+
"supplier": { "name": "Risco Studio SL", "vat_id": "ESB12345678", "address": "Andorra la Vella" },
|
|
6
|
+
"customer": { "name": "Acme GmbH", "vat_id": "DE123456789", "address": "Berlin" },
|
|
7
|
+
"line_items": [
|
|
8
|
+
{ "description": "12h consulting", "amount": 120000 }
|
|
9
|
+
],
|
|
10
|
+
"vat_breakdown": [
|
|
11
|
+
{ "rate": 21, "net": 120000, "vat": 25200 }
|
|
12
|
+
],
|
|
13
|
+
"total": 145200,
|
|
14
|
+
"sequence": ["2024-001", "2024-002", "2024-003"]
|
|
15
|
+
}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
#
|
|
3
|
+
# verify.sh — lint an invoice JSON payload against the legally-valid-invoice
|
|
4
|
+
# rule set, and check an invoice-number array for gaps / duplicates.
|
|
5
|
+
#
|
|
6
|
+
# Read-only. Never writes, edits, or sends anything.
|
|
7
|
+
#
|
|
8
|
+
# Usage:
|
|
9
|
+
# scripts/verify.sh [PATH ...]
|
|
10
|
+
# PATH = an invoice JSON file, or a directory scanned for *.json.
|
|
11
|
+
# With no PATH, scans ./fixtures next to this script.
|
|
12
|
+
#
|
|
13
|
+
# Exit 0 = every checked payload is valid AND no target was found to check
|
|
14
|
+
# (an empty/clean target is a pass, never a false failure).
|
|
15
|
+
# Exit 1 = at least one payload is missing a required field or has a
|
|
16
|
+
# gap/duplicate in its invoice-number sequence.
|
|
17
|
+
# Exit 2 = a usage / environment problem (e.g. jq missing).
|
|
18
|
+
#
|
|
19
|
+
# Invoice JSON shape (all fields required unless noted):
|
|
20
|
+
# {
|
|
21
|
+
# "number": "2024-001",
|
|
22
|
+
# "issue_date": "2024-03-01",
|
|
23
|
+
# "due_date": "2024-03-31",
|
|
24
|
+
# "supplier": { "name": "...", "vat_id": "ESB12345678" },
|
|
25
|
+
# "customer": { "name": "..." },
|
|
26
|
+
# "line_items": [ { "description": "...", "amount": 120000 } ],
|
|
27
|
+
# "vat_breakdown": [ { "rate": 21, "net": 120000, "vat": 25200 } ],
|
|
28
|
+
# "total": 145200,
|
|
29
|
+
# "sequence": ["2024-001","2024-002","2024-003"] // optional series check
|
|
30
|
+
# }
|
|
31
|
+
|
|
32
|
+
set -euo pipefail
|
|
33
|
+
|
|
34
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
35
|
+
|
|
36
|
+
if ! command -v jq >/dev/null 2>&1; then
|
|
37
|
+
echo "verify.sh: jq is required but not installed" >&2
|
|
38
|
+
exit 2
|
|
39
|
+
fi
|
|
40
|
+
|
|
41
|
+
# Resolve targets -> list of .json files.
|
|
42
|
+
declare -a TARGETS=()
|
|
43
|
+
if [ "$#" -eq 0 ]; then
|
|
44
|
+
set -- "${SCRIPT_DIR}/fixtures"
|
|
45
|
+
fi
|
|
46
|
+
|
|
47
|
+
declare -a FILES=()
|
|
48
|
+
for t in "$@"; do
|
|
49
|
+
if [ -d "$t" ]; then
|
|
50
|
+
while IFS= read -r f; do FILES+=("$f"); done \
|
|
51
|
+
< <(find "$t" -type f -name '*.json' 2>/dev/null | sort)
|
|
52
|
+
elif [ -f "$t" ]; then
|
|
53
|
+
FILES+=("$t")
|
|
54
|
+
else
|
|
55
|
+
echo "verify.sh: no such path: $t" >&2
|
|
56
|
+
fi
|
|
57
|
+
done
|
|
58
|
+
|
|
59
|
+
# Empty / clean target is a pass, not a failure.
|
|
60
|
+
if [ "${#FILES[@]}" -eq 0 ]; then
|
|
61
|
+
echo "verify.sh: nothing to check (no invoice JSON found) — OK"
|
|
62
|
+
exit 0
|
|
63
|
+
fi
|
|
64
|
+
|
|
65
|
+
fail=0
|
|
66
|
+
|
|
67
|
+
check_file() {
|
|
68
|
+
local file="$1"
|
|
69
|
+
local -a problems=()
|
|
70
|
+
|
|
71
|
+
if ! jq empty "$file" >/dev/null 2>&1; then
|
|
72
|
+
echo "FAIL $file"
|
|
73
|
+
echo " - not valid JSON"
|
|
74
|
+
fail=1
|
|
75
|
+
return
|
|
76
|
+
fi
|
|
77
|
+
|
|
78
|
+
# Field-by-field presence check (handles nested + arrays).
|
|
79
|
+
for f in number issue_date due_date total; do
|
|
80
|
+
if [ "$(jq -r --arg k "$f" '(.[$k] // "") | tostring | length' "$file")" = "0" ]; then
|
|
81
|
+
problems+=("missing or empty field: $f")
|
|
82
|
+
fi
|
|
83
|
+
done
|
|
84
|
+
[ "$(jq -r '(.supplier.vat_id // "") | tostring | length' "$file")" = "0" ] \
|
|
85
|
+
&& problems+=("missing supplier.vat_id")
|
|
86
|
+
[ "$(jq -r '(.supplier.name // "") | tostring | length' "$file")" = "0" ] \
|
|
87
|
+
&& problems+=("missing supplier.name")
|
|
88
|
+
[ "$(jq -r '(.customer.name // "") | tostring | length' "$file")" = "0" ] \
|
|
89
|
+
&& problems+=("missing customer.name")
|
|
90
|
+
[ "$(jq -r '(.line_items // []) | length' "$file")" = "0" ] \
|
|
91
|
+
&& problems+=("no line_items")
|
|
92
|
+
[ "$(jq -r '(.vat_breakdown // []) | length' "$file")" = "0" ] \
|
|
93
|
+
&& problems+=("no vat_breakdown (need net+rate+vat per rate)")
|
|
94
|
+
|
|
95
|
+
# Each VAT row must carry rate, net, vat.
|
|
96
|
+
if [ "$(jq -r '
|
|
97
|
+
(.vat_breakdown // [])
|
|
98
|
+
| map(select((.rate==null) or (.net==null) or (.vat==null)))
|
|
99
|
+
| length' "$file")" != "0" ]; then
|
|
100
|
+
problems+=("a vat_breakdown row is missing rate/net/vat")
|
|
101
|
+
fi
|
|
102
|
+
|
|
103
|
+
# Optional invoice-number sequence: detect gaps + duplicates.
|
|
104
|
+
if [ "$(jq -r 'has("sequence")' "$file")" = "true" ]; then
|
|
105
|
+
# duplicates
|
|
106
|
+
if [ "$(jq -r '.sequence | (length) - (unique | length)' "$file")" != "0" ]; then
|
|
107
|
+
problems+=("invoice-number sequence has duplicates")
|
|
108
|
+
fi
|
|
109
|
+
# numeric-suffix gap detection (e.g. 2024-001 .. 2024-003)
|
|
110
|
+
gap="$(jq -r '
|
|
111
|
+
[ .sequence[] | (capture("(?<n>[0-9]+)$").n // empty) | tonumber ]
|
|
112
|
+
| if length < 2 then empty
|
|
113
|
+
else . as $a
|
|
114
|
+
| [range(0; length-1) | select(($a[.+1]) - ($a[.]) != 1)]
|
|
115
|
+
| if length > 0 then "gap" else empty end
|
|
116
|
+
end' "$file" 2>/dev/null || true)"
|
|
117
|
+
[ "$gap" = "gap" ] && problems+=("invoice-number sequence has a gap")
|
|
118
|
+
fi
|
|
119
|
+
|
|
120
|
+
if [ "${#problems[@]}" -eq 0 ]; then
|
|
121
|
+
echo "OK $file"
|
|
122
|
+
else
|
|
123
|
+
echo "FAIL $file"
|
|
124
|
+
for p in "${problems[@]}"; do echo " - $p"; done
|
|
125
|
+
fail=1
|
|
126
|
+
fi
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
for f in "${FILES[@]}"; do
|
|
130
|
+
check_file "$f"
|
|
131
|
+
done
|
|
132
|
+
|
|
133
|
+
exit "$fail"
|