@peterson-benhame/skills-catalog 0.17.8
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/package.json +23 -0
- package/skills/(architecture)/component-common-domain-detection/QUICK-REFERENCE.md +169 -0
- package/skills/(architecture)/component-common-domain-detection/README.md +656 -0
- package/skills/(architecture)/component-common-domain-detection/SKILL.md +606 -0
- package/skills/(architecture)/component-flattening-analysis/QUICK-REFERENCE.md +217 -0
- package/skills/(architecture)/component-flattening-analysis/README.md +661 -0
- package/skills/(architecture)/component-flattening-analysis/SKILL.md +693 -0
- package/skills/(architecture)/component-identification-sizing/QUICK-REFERENCE.md +82 -0
- package/skills/(architecture)/component-identification-sizing/README.md +589 -0
- package/skills/(architecture)/component-identification-sizing/SKILL.md +434 -0
- package/skills/(architecture)/coupling-analysis/SKILL.md +426 -0
- package/skills/(architecture)/decomposition-planning-roadmap/QUICK-REFERENCE.md +181 -0
- package/skills/(architecture)/decomposition-planning-roadmap/README.md +639 -0
- package/skills/(architecture)/decomposition-planning-roadmap/SKILL.md +640 -0
- package/skills/(architecture)/domain-analysis/EXAMPLES.md +430 -0
- package/skills/(architecture)/domain-analysis/QUICK-REFERENCE.md +423 -0
- package/skills/(architecture)/domain-analysis/README.md +311 -0
- package/skills/(architecture)/domain-analysis/SKILL.md +435 -0
- package/skills/(architecture)/domain-identification-grouping/QUICK-REFERENCE.md +181 -0
- package/skills/(architecture)/domain-identification-grouping/README.md +661 -0
- package/skills/(architecture)/domain-identification-grouping/SKILL.md +731 -0
- package/skills/(architecture)/evolutionary-modular-architecture/SKILL.md +188 -0
- package/skills/(architecture)/evolutionary-modular-architecture/assets/architecture-template.html +346 -0
- package/skills/(architecture)/evolutionary-modular-architecture/references/acl-and-communication.md +45 -0
- package/skills/(architecture)/evolutionary-modular-architecture/references/architecture-doc.md +93 -0
- package/skills/(architecture)/evolutionary-modular-architecture/references/ddd.md +74 -0
- package/skills/(architecture)/evolutionary-modular-architecture/references/flat-by-aggregate.md +115 -0
- package/skills/(architecture)/evolutionary-modular-architecture/references/principles.md +59 -0
- package/skills/(architecture)/evolutionary-modular-architecture/references/resilience.md +54 -0
- package/skills/(architecture)/evolutionary-modular-architecture/references/stack-2026.md +64 -0
- package/skills/(architecture)/evolutionary-modular-architecture/scripts/validate-boundaries.mjs +101 -0
- package/skills/(architecture)/evolutionary-modular-architecture/scripts/validate-structure.mjs +96 -0
- package/skills/(architecture)/frontend-blueprint/SKILL.md +466 -0
- package/skills/(architecture)/frontend-blueprint/references/collection-guide.md +237 -0
- package/skills/(architecture)/frontend-blueprint/references/design-principles.md +347 -0
- package/skills/(architecture)/frontend-blueprint/references/stitch-integration.md +722 -0
- package/skills/(architecture)/legacy-migration-planner/SKILL.md +107 -0
- package/skills/(architecture)/legacy-migration-planner/references/assessment-framework.md +200 -0
- package/skills/(architecture)/legacy-migration-planner/references/frontend-backend-strategies.md +236 -0
- package/skills/(architecture)/legacy-migration-planner/references/plan-phase.md +223 -0
- package/skills/(architecture)/legacy-migration-planner/references/research-phase.md +181 -0
- package/skills/(architecture)/legacy-migration-planner/references/strangler-fig-patterns.md +190 -0
- package/skills/(architecture)/legacy-migration-planner/references/testing-safety-nets.md +244 -0
- package/skills/(architecture)/modular-decomposition/SKILL.md +78 -0
- package/skills/(architecture)/modular-decomposition/references/domain-analysis-examples.md +430 -0
- package/skills/(architecture)/modular-decomposition/references/domain-analysis-quick-reference.md +423 -0
- package/skills/(architecture)/modular-decomposition/references/domain-analysis.md +432 -0
- package/skills/(architecture)/modular-decomposition/references/pattern-01-identify-and-size-quick-reference.md +82 -0
- package/skills/(architecture)/modular-decomposition/references/pattern-01-identify-and-size.md +429 -0
- package/skills/(architecture)/modular-decomposition/references/pattern-02-common-domain-quick-reference.md +169 -0
- package/skills/(architecture)/modular-decomposition/references/pattern-02-common-domain.md +601 -0
- package/skills/(architecture)/modular-decomposition/references/pattern-03-flattening-quick-reference.md +217 -0
- package/skills/(architecture)/modular-decomposition/references/pattern-03-flattening.md +688 -0
- package/skills/(architecture)/modular-decomposition/references/pattern-04-coupling.md +421 -0
- package/skills/(architecture)/modular-decomposition/references/pattern-05-domain-grouping-quick-reference.md +181 -0
- package/skills/(architecture)/modular-decomposition/references/pattern-05-domain-grouping.md +726 -0
- package/skills/(architecture)/modular-design-principles/SKILL.md +188 -0
- package/skills/(architecture)/modular-design-principles/references/principles.md +134 -0
- package/skills/(architecture)/react-composition-patterns/AGENTS.md +946 -0
- package/skills/(architecture)/react-composition-patterns/README.md +60 -0
- package/skills/(architecture)/react-composition-patterns/SKILL.md +84 -0
- package/skills/(architecture)/react-composition-patterns/rules/_sections.md +29 -0
- package/skills/(architecture)/react-composition-patterns/rules/_template.md +24 -0
- package/skills/(architecture)/react-composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
- package/skills/(architecture)/react-composition-patterns/rules/architecture-compound-components.md +112 -0
- package/skills/(architecture)/react-composition-patterns/rules/patterns-children-over-render-props.md +87 -0
- package/skills/(architecture)/react-composition-patterns/rules/patterns-explicit-variants.md +100 -0
- package/skills/(architecture)/react-composition-patterns/rules/react19-no-forwardref.md +42 -0
- package/skills/(architecture)/react-composition-patterns/rules/state-context-interface.md +191 -0
- package/skills/(architecture)/react-composition-patterns/rules/state-decouple-implementation.md +113 -0
- package/skills/(architecture)/react-composition-patterns/rules/state-lift-state.md +125 -0
- package/skills/(architecture)/tactical-ddd/SKILL.md +87 -0
- package/skills/(architecture)/tactical-ddd/detection.md +78 -0
- package/skills/(architecture)/tactical-ddd/refactoring.md +191 -0
- package/skills/(architecture)/tactical-ddd/reference.md +193 -0
- package/skills/(cloud)/aws-advisor/SKILL.md +211 -0
- package/skills/(cloud)/aws-advisor/references/checklists.md +267 -0
- package/skills/(cloud)/aws-advisor/references/decision-trees.md +217 -0
- package/skills/(cloud)/aws-advisor/references/mcp-guide.md +161 -0
- package/skills/(cloud)/aws-advisor/scripts/architecture_validator.py +312 -0
- package/skills/(cloud)/aws-advisor/scripts/cost_considerations.py +330 -0
- package/skills/(cloud)/aws-advisor/scripts/generate_diagram.py +368 -0
- package/skills/(cloud)/aws-advisor/scripts/security_review.py +244 -0
- package/skills/(cloud)/aws-advisor/scripts/well_architected_review.py +325 -0
- package/skills/(cloud)/cloudflare-deploy/LICENSE.txt +201 -0
- package/skills/(cloud)/cloudflare-deploy/SKILL.md +238 -0
- package/skills/(cloud)/cloudflare-deploy/references/agents-sdk/README.md +95 -0
- package/skills/(cloud)/cloudflare-deploy/references/agents-sdk/api.md +190 -0
- package/skills/(cloud)/cloudflare-deploy/references/agents-sdk/configuration.md +178 -0
- package/skills/(cloud)/cloudflare-deploy/references/agents-sdk/gotchas.md +173 -0
- package/skills/(cloud)/cloudflare-deploy/references/agents-sdk/patterns.md +200 -0
- package/skills/(cloud)/cloudflare-deploy/references/ai-gateway/README.md +176 -0
- package/skills/(cloud)/cloudflare-deploy/references/ai-gateway/configuration.md +117 -0
- package/skills/(cloud)/cloudflare-deploy/references/ai-gateway/dynamic-routing.md +88 -0
- package/skills/(cloud)/cloudflare-deploy/references/ai-gateway/features.md +96 -0
- package/skills/(cloud)/cloudflare-deploy/references/ai-gateway/sdk-integration.md +110 -0
- package/skills/(cloud)/cloudflare-deploy/references/ai-gateway/troubleshooting.md +90 -0
- package/skills/(cloud)/cloudflare-deploy/references/ai-search/README.md +145 -0
- package/skills/(cloud)/cloudflare-deploy/references/ai-search/api.md +87 -0
- package/skills/(cloud)/cloudflare-deploy/references/ai-search/configuration.md +91 -0
- package/skills/(cloud)/cloudflare-deploy/references/ai-search/gotchas.md +92 -0
- package/skills/(cloud)/cloudflare-deploy/references/ai-search/patterns.md +87 -0
- package/skills/(cloud)/cloudflare-deploy/references/analytics-engine/README.md +94 -0
- package/skills/(cloud)/cloudflare-deploy/references/analytics-engine/api.md +112 -0
- package/skills/(cloud)/cloudflare-deploy/references/analytics-engine/configuration.md +107 -0
- package/skills/(cloud)/cloudflare-deploy/references/analytics-engine/gotchas.md +87 -0
- package/skills/(cloud)/cloudflare-deploy/references/analytics-engine/patterns.md +83 -0
- package/skills/(cloud)/cloudflare-deploy/references/api/README.md +65 -0
- package/skills/(cloud)/cloudflare-deploy/references/api/api.md +205 -0
- package/skills/(cloud)/cloudflare-deploy/references/api/configuration.md +158 -0
- package/skills/(cloud)/cloudflare-deploy/references/api/gotchas.md +231 -0
- package/skills/(cloud)/cloudflare-deploy/references/api/patterns.md +208 -0
- package/skills/(cloud)/cloudflare-deploy/references/api-shield/README.md +44 -0
- package/skills/(cloud)/cloudflare-deploy/references/api-shield/api.md +150 -0
- package/skills/(cloud)/cloudflare-deploy/references/api-shield/configuration.md +210 -0
- package/skills/(cloud)/cloudflare-deploy/references/api-shield/gotchas.md +132 -0
- package/skills/(cloud)/cloudflare-deploy/references/api-shield/patterns.md +185 -0
- package/skills/(cloud)/cloudflare-deploy/references/argo-smart-routing/README.md +96 -0
- package/skills/(cloud)/cloudflare-deploy/references/argo-smart-routing/api.md +253 -0
- package/skills/(cloud)/cloudflare-deploy/references/argo-smart-routing/configuration.md +205 -0
- package/skills/(cloud)/cloudflare-deploy/references/argo-smart-routing/gotchas.md +115 -0
- package/skills/(cloud)/cloudflare-deploy/references/argo-smart-routing/patterns.md +107 -0
- package/skills/(cloud)/cloudflare-deploy/references/bindings/README.md +127 -0
- package/skills/(cloud)/cloudflare-deploy/references/bindings/api.md +214 -0
- package/skills/(cloud)/cloudflare-deploy/references/bindings/configuration.md +200 -0
- package/skills/(cloud)/cloudflare-deploy/references/bindings/gotchas.md +210 -0
- package/skills/(cloud)/cloudflare-deploy/references/bindings/patterns.md +205 -0
- package/skills/(cloud)/cloudflare-deploy/references/bot-management/README.md +95 -0
- package/skills/(cloud)/cloudflare-deploy/references/bot-management/api.md +175 -0
- package/skills/(cloud)/cloudflare-deploy/references/bot-management/configuration.md +175 -0
- package/skills/(cloud)/cloudflare-deploy/references/bot-management/gotchas.md +116 -0
- package/skills/(cloud)/cloudflare-deploy/references/bot-management/patterns.md +181 -0
- package/skills/(cloud)/cloudflare-deploy/references/browser-rendering/README.md +84 -0
- package/skills/(cloud)/cloudflare-deploy/references/browser-rendering/api.md +108 -0
- package/skills/(cloud)/cloudflare-deploy/references/browser-rendering/configuration.md +78 -0
- package/skills/(cloud)/cloudflare-deploy/references/browser-rendering/gotchas.md +91 -0
- package/skills/(cloud)/cloudflare-deploy/references/browser-rendering/patterns.md +93 -0
- package/skills/(cloud)/cloudflare-deploy/references/c3/README.md +111 -0
- package/skills/(cloud)/cloudflare-deploy/references/c3/api.md +71 -0
- package/skills/(cloud)/cloudflare-deploy/references/c3/configuration.md +85 -0
- package/skills/(cloud)/cloudflare-deploy/references/c3/gotchas.md +97 -0
- package/skills/(cloud)/cloudflare-deploy/references/c3/patterns.md +84 -0
- package/skills/(cloud)/cloudflare-deploy/references/cache-reserve/README.md +150 -0
- package/skills/(cloud)/cloudflare-deploy/references/cache-reserve/api.md +181 -0
- package/skills/(cloud)/cloudflare-deploy/references/cache-reserve/configuration.md +170 -0
- package/skills/(cloud)/cloudflare-deploy/references/cache-reserve/gotchas.md +136 -0
- package/skills/(cloud)/cloudflare-deploy/references/cache-reserve/patterns.md +192 -0
- package/skills/(cloud)/cloudflare-deploy/references/containers/README.md +87 -0
- package/skills/(cloud)/cloudflare-deploy/references/containers/api.md +197 -0
- package/skills/(cloud)/cloudflare-deploy/references/containers/configuration.md +191 -0
- package/skills/(cloud)/cloudflare-deploy/references/containers/gotchas.md +182 -0
- package/skills/(cloud)/cloudflare-deploy/references/containers/patterns.md +204 -0
- package/skills/(cloud)/cloudflare-deploy/references/cron-triggers/README.md +101 -0
- package/skills/(cloud)/cloudflare-deploy/references/cron-triggers/api.md +213 -0
- package/skills/(cloud)/cloudflare-deploy/references/cron-triggers/configuration.md +190 -0
- package/skills/(cloud)/cloudflare-deploy/references/cron-triggers/gotchas.md +207 -0
- package/skills/(cloud)/cloudflare-deploy/references/cron-triggers/patterns.md +245 -0
- package/skills/(cloud)/cloudflare-deploy/references/d1/README.md +135 -0
- package/skills/(cloud)/cloudflare-deploy/references/d1/api.md +202 -0
- package/skills/(cloud)/cloudflare-deploy/references/d1/configuration.md +198 -0
- package/skills/(cloud)/cloudflare-deploy/references/d1/gotchas.md +98 -0
- package/skills/(cloud)/cloudflare-deploy/references/d1/patterns.md +226 -0
- package/skills/(cloud)/cloudflare-deploy/references/ddos/README.md +42 -0
- package/skills/(cloud)/cloudflare-deploy/references/ddos/api.md +158 -0
- package/skills/(cloud)/cloudflare-deploy/references/ddos/configuration.md +94 -0
- package/skills/(cloud)/cloudflare-deploy/references/ddos/gotchas.md +111 -0
- package/skills/(cloud)/cloudflare-deploy/references/ddos/patterns.md +209 -0
- package/skills/(cloud)/cloudflare-deploy/references/do-storage/README.md +79 -0
- package/skills/(cloud)/cloudflare-deploy/references/do-storage/api.md +107 -0
- package/skills/(cloud)/cloudflare-deploy/references/do-storage/configuration.md +114 -0
- package/skills/(cloud)/cloudflare-deploy/references/do-storage/gotchas.md +153 -0
- package/skills/(cloud)/cloudflare-deploy/references/do-storage/patterns.md +189 -0
- package/skills/(cloud)/cloudflare-deploy/references/do-storage/testing.md +182 -0
- package/skills/(cloud)/cloudflare-deploy/references/durable-objects/README.md +194 -0
- package/skills/(cloud)/cloudflare-deploy/references/durable-objects/api.md +205 -0
- package/skills/(cloud)/cloudflare-deploy/references/durable-objects/configuration.md +160 -0
- package/skills/(cloud)/cloudflare-deploy/references/durable-objects/gotchas.md +200 -0
- package/skills/(cloud)/cloudflare-deploy/references/durable-objects/patterns.md +205 -0
- package/skills/(cloud)/cloudflare-deploy/references/email-routing/README.md +89 -0
- package/skills/(cloud)/cloudflare-deploy/references/email-routing/api.md +192 -0
- package/skills/(cloud)/cloudflare-deploy/references/email-routing/configuration.md +187 -0
- package/skills/(cloud)/cloudflare-deploy/references/email-routing/gotchas.md +203 -0
- package/skills/(cloud)/cloudflare-deploy/references/email-routing/patterns.md +241 -0
- package/skills/(cloud)/cloudflare-deploy/references/email-workers/README.md +153 -0
- package/skills/(cloud)/cloudflare-deploy/references/email-workers/api.md +227 -0
- package/skills/(cloud)/cloudflare-deploy/references/email-workers/configuration.md +115 -0
- package/skills/(cloud)/cloudflare-deploy/references/email-workers/gotchas.md +133 -0
- package/skills/(cloud)/cloudflare-deploy/references/email-workers/patterns.md +108 -0
- package/skills/(cloud)/cloudflare-deploy/references/hyperdrive/README.md +84 -0
- package/skills/(cloud)/cloudflare-deploy/references/hyperdrive/api.md +149 -0
- package/skills/(cloud)/cloudflare-deploy/references/hyperdrive/configuration.md +166 -0
- package/skills/(cloud)/cloudflare-deploy/references/hyperdrive/gotchas.md +77 -0
- package/skills/(cloud)/cloudflare-deploy/references/hyperdrive/patterns.md +201 -0
- package/skills/(cloud)/cloudflare-deploy/references/images/README.md +65 -0
- package/skills/(cloud)/cloudflare-deploy/references/images/api.md +98 -0
- package/skills/(cloud)/cloudflare-deploy/references/images/configuration.md +203 -0
- package/skills/(cloud)/cloudflare-deploy/references/images/gotchas.md +106 -0
- package/skills/(cloud)/cloudflare-deploy/references/images/patterns.md +120 -0
- package/skills/(cloud)/cloudflare-deploy/references/kv/README.md +90 -0
- package/skills/(cloud)/cloudflare-deploy/references/kv/api.md +163 -0
- package/skills/(cloud)/cloudflare-deploy/references/kv/configuration.md +148 -0
- package/skills/(cloud)/cloudflare-deploy/references/kv/gotchas.md +128 -0
- package/skills/(cloud)/cloudflare-deploy/references/kv/patterns.md +195 -0
- package/skills/(cloud)/cloudflare-deploy/references/miniflare/README.md +113 -0
- package/skills/(cloud)/cloudflare-deploy/references/miniflare/api.md +202 -0
- package/skills/(cloud)/cloudflare-deploy/references/miniflare/configuration.md +174 -0
- package/skills/(cloud)/cloudflare-deploy/references/miniflare/gotchas.md +179 -0
- package/skills/(cloud)/cloudflare-deploy/references/miniflare/patterns.md +182 -0
- package/skills/(cloud)/cloudflare-deploy/references/network-interconnect/README.md +104 -0
- package/skills/(cloud)/cloudflare-deploy/references/network-interconnect/api.md +210 -0
- package/skills/(cloud)/cloudflare-deploy/references/network-interconnect/configuration.md +123 -0
- package/skills/(cloud)/cloudflare-deploy/references/network-interconnect/gotchas.md +175 -0
- package/skills/(cloud)/cloudflare-deploy/references/network-interconnect/patterns.md +174 -0
- package/skills/(cloud)/cloudflare-deploy/references/observability/README.md +92 -0
- package/skills/(cloud)/cloudflare-deploy/references/observability/api.md +164 -0
- package/skills/(cloud)/cloudflare-deploy/references/observability/configuration.md +176 -0
- package/skills/(cloud)/cloudflare-deploy/references/observability/gotchas.md +125 -0
- package/skills/(cloud)/cloudflare-deploy/references/observability/patterns.md +105 -0
- package/skills/(cloud)/cloudflare-deploy/references/pages/README.md +92 -0
- package/skills/(cloud)/cloudflare-deploy/references/pages/api.md +205 -0
- package/skills/(cloud)/cloudflare-deploy/references/pages/configuration.md +212 -0
- package/skills/(cloud)/cloudflare-deploy/references/pages/gotchas.md +218 -0
- package/skills/(cloud)/cloudflare-deploy/references/pages/patterns.md +215 -0
- package/skills/(cloud)/cloudflare-deploy/references/pages-functions/README.md +104 -0
- package/skills/(cloud)/cloudflare-deploy/references/pages-functions/api.md +159 -0
- package/skills/(cloud)/cloudflare-deploy/references/pages-functions/configuration.md +128 -0
- package/skills/(cloud)/cloudflare-deploy/references/pages-functions/gotchas.md +102 -0
- package/skills/(cloud)/cloudflare-deploy/references/pages-functions/patterns.md +148 -0
- package/skills/(cloud)/cloudflare-deploy/references/pipelines/README.md +109 -0
- package/skills/(cloud)/cloudflare-deploy/references/pipelines/api.md +214 -0
- package/skills/(cloud)/cloudflare-deploy/references/pipelines/configuration.md +98 -0
- package/skills/(cloud)/cloudflare-deploy/references/pipelines/gotchas.md +84 -0
- package/skills/(cloud)/cloudflare-deploy/references/pipelines/patterns.md +87 -0
- package/skills/(cloud)/cloudflare-deploy/references/pulumi/README.md +111 -0
- package/skills/(cloud)/cloudflare-deploy/references/pulumi/api.md +227 -0
- package/skills/(cloud)/cloudflare-deploy/references/pulumi/configuration.md +213 -0
- package/skills/(cloud)/cloudflare-deploy/references/pulumi/gotchas.md +205 -0
- package/skills/(cloud)/cloudflare-deploy/references/pulumi/patterns.md +256 -0
- package/skills/(cloud)/cloudflare-deploy/references/queues/README.md +99 -0
- package/skills/(cloud)/cloudflare-deploy/references/queues/api.md +204 -0
- package/skills/(cloud)/cloudflare-deploy/references/queues/configuration.md +151 -0
- package/skills/(cloud)/cloudflare-deploy/references/queues/gotchas.md +210 -0
- package/skills/(cloud)/cloudflare-deploy/references/queues/patterns.md +220 -0
- package/skills/(cloud)/cloudflare-deploy/references/r2/README.md +97 -0
- package/skills/(cloud)/cloudflare-deploy/references/r2/api.md +230 -0
- package/skills/(cloud)/cloudflare-deploy/references/r2/configuration.md +176 -0
- package/skills/(cloud)/cloudflare-deploy/references/r2/gotchas.md +190 -0
- package/skills/(cloud)/cloudflare-deploy/references/r2/patterns.md +196 -0
- package/skills/(cloud)/cloudflare-deploy/references/r2-data-catalog/README.md +157 -0
- package/skills/(cloud)/cloudflare-deploy/references/r2-data-catalog/api.md +199 -0
- package/skills/(cloud)/cloudflare-deploy/references/r2-data-catalog/configuration.md +205 -0
- package/skills/(cloud)/cloudflare-deploy/references/r2-data-catalog/gotchas.md +170 -0
- package/skills/(cloud)/cloudflare-deploy/references/r2-data-catalog/patterns.md +191 -0
- package/skills/(cloud)/cloudflare-deploy/references/r2-sql/README.md +138 -0
- package/skills/(cloud)/cloudflare-deploy/references/r2-sql/api.md +159 -0
- package/skills/(cloud)/cloudflare-deploy/references/r2-sql/configuration.md +152 -0
- package/skills/(cloud)/cloudflare-deploy/references/r2-sql/gotchas.md +228 -0
- package/skills/(cloud)/cloudflare-deploy/references/r2-sql/patterns.md +230 -0
- package/skills/(cloud)/cloudflare-deploy/references/realtime-sfu/README.md +66 -0
- package/skills/(cloud)/cloudflare-deploy/references/realtime-sfu/api.md +164 -0
- package/skills/(cloud)/cloudflare-deploy/references/realtime-sfu/configuration.md +141 -0
- package/skills/(cloud)/cloudflare-deploy/references/realtime-sfu/gotchas.md +138 -0
- package/skills/(cloud)/cloudflare-deploy/references/realtime-sfu/patterns.md +187 -0
- package/skills/(cloud)/cloudflare-deploy/references/realtimekit/README.md +118 -0
- package/skills/(cloud)/cloudflare-deploy/references/realtimekit/api.md +233 -0
- package/skills/(cloud)/cloudflare-deploy/references/realtimekit/configuration.md +224 -0
- package/skills/(cloud)/cloudflare-deploy/references/realtimekit/gotchas.md +201 -0
- package/skills/(cloud)/cloudflare-deploy/references/realtimekit/patterns.md +237 -0
- package/skills/(cloud)/cloudflare-deploy/references/sandbox/README.md +104 -0
- package/skills/(cloud)/cloudflare-deploy/references/sandbox/api.md +200 -0
- package/skills/(cloud)/cloudflare-deploy/references/sandbox/configuration.md +154 -0
- package/skills/(cloud)/cloudflare-deploy/references/sandbox/gotchas.md +201 -0
- package/skills/(cloud)/cloudflare-deploy/references/sandbox/patterns.md +195 -0
- package/skills/(cloud)/cloudflare-deploy/references/secrets-store/README.md +77 -0
- package/skills/(cloud)/cloudflare-deploy/references/secrets-store/api.md +192 -0
- package/skills/(cloud)/cloudflare-deploy/references/secrets-store/configuration.md +183 -0
- package/skills/(cloud)/cloudflare-deploy/references/secrets-store/gotchas.md +97 -0
- package/skills/(cloud)/cloudflare-deploy/references/secrets-store/patterns.md +204 -0
- package/skills/(cloud)/cloudflare-deploy/references/smart-placement/README.md +143 -0
- package/skills/(cloud)/cloudflare-deploy/references/smart-placement/api.md +188 -0
- package/skills/(cloud)/cloudflare-deploy/references/smart-placement/configuration.md +202 -0
- package/skills/(cloud)/cloudflare-deploy/references/smart-placement/gotchas.md +180 -0
- package/skills/(cloud)/cloudflare-deploy/references/smart-placement/patterns.md +185 -0
- package/skills/(cloud)/cloudflare-deploy/references/snippets/README.md +74 -0
- package/skills/(cloud)/cloudflare-deploy/references/snippets/api.md +214 -0
- package/skills/(cloud)/cloudflare-deploy/references/snippets/configuration.md +239 -0
- package/skills/(cloud)/cloudflare-deploy/references/snippets/gotchas.md +104 -0
- package/skills/(cloud)/cloudflare-deploy/references/snippets/patterns.md +135 -0
- package/skills/(cloud)/cloudflare-deploy/references/spectrum/README.md +52 -0
- package/skills/(cloud)/cloudflare-deploy/references/spectrum/api.md +184 -0
- package/skills/(cloud)/cloudflare-deploy/references/spectrum/configuration.md +203 -0
- package/skills/(cloud)/cloudflare-deploy/references/spectrum/gotchas.md +155 -0
- package/skills/(cloud)/cloudflare-deploy/references/spectrum/patterns.md +206 -0
- package/skills/(cloud)/cloudflare-deploy/references/static-assets/README.md +65 -0
- package/skills/(cloud)/cloudflare-deploy/references/static-assets/api.md +201 -0
- package/skills/(cloud)/cloudflare-deploy/references/static-assets/configuration.md +186 -0
- package/skills/(cloud)/cloudflare-deploy/references/static-assets/gotchas.md +164 -0
- package/skills/(cloud)/cloudflare-deploy/references/static-assets/patterns.md +189 -0
- package/skills/(cloud)/cloudflare-deploy/references/stream/README.md +123 -0
- package/skills/(cloud)/cloudflare-deploy/references/stream/api-live.md +178 -0
- package/skills/(cloud)/cloudflare-deploy/references/stream/api.md +191 -0
- package/skills/(cloud)/cloudflare-deploy/references/stream/configuration.md +151 -0
- package/skills/(cloud)/cloudflare-deploy/references/stream/gotchas.md +139 -0
- package/skills/(cloud)/cloudflare-deploy/references/stream/patterns.md +213 -0
- package/skills/(cloud)/cloudflare-deploy/references/tail-workers/README.md +92 -0
- package/skills/(cloud)/cloudflare-deploy/references/tail-workers/api.md +203 -0
- package/skills/(cloud)/cloudflare-deploy/references/tail-workers/configuration.md +178 -0
- package/skills/(cloud)/cloudflare-deploy/references/tail-workers/gotchas.md +206 -0
- package/skills/(cloud)/cloudflare-deploy/references/tail-workers/patterns.md +190 -0
- package/skills/(cloud)/cloudflare-deploy/references/terraform/README.md +100 -0
- package/skills/(cloud)/cloudflare-deploy/references/terraform/api.md +178 -0
- package/skills/(cloud)/cloudflare-deploy/references/terraform/configuration.md +197 -0
- package/skills/(cloud)/cloudflare-deploy/references/terraform/gotchas.md +150 -0
- package/skills/(cloud)/cloudflare-deploy/references/terraform/patterns.md +174 -0
- package/skills/(cloud)/cloudflare-deploy/references/tunnel/README.md +137 -0
- package/skills/(cloud)/cloudflare-deploy/references/tunnel/api.md +202 -0
- package/skills/(cloud)/cloudflare-deploy/references/tunnel/configuration.md +163 -0
- package/skills/(cloud)/cloudflare-deploy/references/tunnel/gotchas.md +159 -0
- package/skills/(cloud)/cloudflare-deploy/references/tunnel/networking.md +174 -0
- package/skills/(cloud)/cloudflare-deploy/references/tunnel/patterns.md +196 -0
- package/skills/(cloud)/cloudflare-deploy/references/turn/README.md +86 -0
- package/skills/(cloud)/cloudflare-deploy/references/turn/api.md +233 -0
- package/skills/(cloud)/cloudflare-deploy/references/turn/configuration.md +181 -0
- package/skills/(cloud)/cloudflare-deploy/references/turn/gotchas.md +236 -0
- package/skills/(cloud)/cloudflare-deploy/references/turn/patterns.md +211 -0
- package/skills/(cloud)/cloudflare-deploy/references/turnstile/README.md +102 -0
- package/skills/(cloud)/cloudflare-deploy/references/turnstile/api.md +253 -0
- package/skills/(cloud)/cloudflare-deploy/references/turnstile/configuration.md +242 -0
- package/skills/(cloud)/cloudflare-deploy/references/turnstile/gotchas.md +250 -0
- package/skills/(cloud)/cloudflare-deploy/references/turnstile/patterns.md +192 -0
- package/skills/(cloud)/cloudflare-deploy/references/vectorize/README.md +131 -0
- package/skills/(cloud)/cloudflare-deploy/references/vectorize/api.md +89 -0
- package/skills/(cloud)/cloudflare-deploy/references/vectorize/configuration.md +91 -0
- package/skills/(cloud)/cloudflare-deploy/references/vectorize/gotchas.md +83 -0
- package/skills/(cloud)/cloudflare-deploy/references/vectorize/patterns.md +90 -0
- package/skills/(cloud)/cloudflare-deploy/references/waf/README.md +125 -0
- package/skills/(cloud)/cloudflare-deploy/references/waf/api.md +203 -0
- package/skills/(cloud)/cloudflare-deploy/references/waf/configuration.md +215 -0
- package/skills/(cloud)/cloudflare-deploy/references/waf/gotchas.md +208 -0
- package/skills/(cloud)/cloudflare-deploy/references/waf/patterns.md +227 -0
- package/skills/(cloud)/cloudflare-deploy/references/web-analytics/README.md +148 -0
- package/skills/(cloud)/cloudflare-deploy/references/web-analytics/configuration.md +81 -0
- package/skills/(cloud)/cloudflare-deploy/references/web-analytics/gotchas.md +86 -0
- package/skills/(cloud)/cloudflare-deploy/references/web-analytics/integration.md +63 -0
- package/skills/(cloud)/cloudflare-deploy/references/web-analytics/patterns.md +98 -0
- package/skills/(cloud)/cloudflare-deploy/references/workerd/README.md +85 -0
- package/skills/(cloud)/cloudflare-deploy/references/workerd/api.md +219 -0
- package/skills/(cloud)/cloudflare-deploy/references/workerd/configuration.md +200 -0
- package/skills/(cloud)/cloudflare-deploy/references/workerd/gotchas.md +151 -0
- package/skills/(cloud)/cloudflare-deploy/references/workerd/patterns.md +205 -0
- package/skills/(cloud)/cloudflare-deploy/references/workers/README.md +110 -0
- package/skills/(cloud)/cloudflare-deploy/references/workers/api.md +197 -0
- package/skills/(cloud)/cloudflare-deploy/references/workers/configuration.md +184 -0
- package/skills/(cloud)/cloudflare-deploy/references/workers/frameworks.md +197 -0
- package/skills/(cloud)/cloudflare-deploy/references/workers/gotchas.md +142 -0
- package/skills/(cloud)/cloudflare-deploy/references/workers/patterns.md +220 -0
- package/skills/(cloud)/cloudflare-deploy/references/workers-ai/README.md +206 -0
- package/skills/(cloud)/cloudflare-deploy/references/workers-ai/api.md +115 -0
- package/skills/(cloud)/cloudflare-deploy/references/workers-ai/configuration.md +98 -0
- package/skills/(cloud)/cloudflare-deploy/references/workers-ai/gotchas.md +130 -0
- package/skills/(cloud)/cloudflare-deploy/references/workers-ai/patterns.md +122 -0
- package/skills/(cloud)/cloudflare-deploy/references/workers-for-platforms/README.md +95 -0
- package/skills/(cloud)/cloudflare-deploy/references/workers-for-platforms/api.md +208 -0
- package/skills/(cloud)/cloudflare-deploy/references/workers-for-platforms/configuration.md +178 -0
- package/skills/(cloud)/cloudflare-deploy/references/workers-for-platforms/gotchas.md +134 -0
- package/skills/(cloud)/cloudflare-deploy/references/workers-for-platforms/patterns.md +210 -0
- package/skills/(cloud)/cloudflare-deploy/references/workers-playground/README.md +131 -0
- package/skills/(cloud)/cloudflare-deploy/references/workers-playground/api.md +101 -0
- package/skills/(cloud)/cloudflare-deploy/references/workers-playground/configuration.md +169 -0
- package/skills/(cloud)/cloudflare-deploy/references/workers-playground/gotchas.md +88 -0
- package/skills/(cloud)/cloudflare-deploy/references/workers-playground/patterns.md +134 -0
- package/skills/(cloud)/cloudflare-deploy/references/workers-vpc/README.md +127 -0
- package/skills/(cloud)/cloudflare-deploy/references/workers-vpc/api.md +196 -0
- package/skills/(cloud)/cloudflare-deploy/references/workers-vpc/configuration.md +151 -0
- package/skills/(cloud)/cloudflare-deploy/references/workers-vpc/gotchas.md +171 -0
- package/skills/(cloud)/cloudflare-deploy/references/workers-vpc/patterns.md +221 -0
- package/skills/(cloud)/cloudflare-deploy/references/workflows/README.md +70 -0
- package/skills/(cloud)/cloudflare-deploy/references/workflows/api.md +227 -0
- package/skills/(cloud)/cloudflare-deploy/references/workflows/configuration.md +158 -0
- package/skills/(cloud)/cloudflare-deploy/references/workflows/gotchas.md +97 -0
- package/skills/(cloud)/cloudflare-deploy/references/workflows/patterns.md +225 -0
- package/skills/(cloud)/cloudflare-deploy/references/wrangler/README.md +149 -0
- package/skills/(cloud)/cloudflare-deploy/references/wrangler/api.md +188 -0
- package/skills/(cloud)/cloudflare-deploy/references/wrangler/auth.md +74 -0
- package/skills/(cloud)/cloudflare-deploy/references/wrangler/configuration.md +198 -0
- package/skills/(cloud)/cloudflare-deploy/references/wrangler/gotchas.md +212 -0
- package/skills/(cloud)/cloudflare-deploy/references/wrangler/patterns.md +211 -0
- package/skills/(cloud)/cloudflare-deploy/references/zaraz/IMPLEMENTATION_SUMMARY.md +131 -0
- package/skills/(cloud)/cloudflare-deploy/references/zaraz/README.md +114 -0
- package/skills/(cloud)/cloudflare-deploy/references/zaraz/api.md +118 -0
- package/skills/(cloud)/cloudflare-deploy/references/zaraz/configuration.md +94 -0
- package/skills/(cloud)/cloudflare-deploy/references/zaraz/gotchas.md +88 -0
- package/skills/(cloud)/cloudflare-deploy/references/zaraz/patterns.md +77 -0
- package/skills/(cloud)/netlify-deploy/LICENSE.txt +201 -0
- package/skills/(cloud)/netlify-deploy/SKILL.md +259 -0
- package/skills/(cloud)/netlify-deploy/references/cli-commands.md +162 -0
- package/skills/(cloud)/netlify-deploy/references/deployment-patterns.md +319 -0
- package/skills/(cloud)/netlify-deploy/references/netlify-toml.md +259 -0
- package/skills/(cloud)/render-deploy/LICENSE.txt +201 -0
- package/skills/(cloud)/render-deploy/SKILL.md +530 -0
- package/skills/(cloud)/render-deploy/references/blueprint-spec.md +756 -0
- package/skills/(cloud)/render-deploy/references/codebase-analysis.md +55 -0
- package/skills/(cloud)/render-deploy/references/configuration-guide.md +659 -0
- package/skills/(cloud)/render-deploy/references/deployment-details.md +242 -0
- package/skills/(cloud)/render-deploy/references/direct-creation.md +121 -0
- package/skills/(cloud)/render-deploy/references/error-patterns.md +13 -0
- package/skills/(cloud)/render-deploy/references/post-deploy-checks.md +36 -0
- package/skills/(cloud)/render-deploy/references/runtimes.md +527 -0
- package/skills/(cloud)/render-deploy/references/service-types.md +462 -0
- package/skills/(cloud)/render-deploy/references/troubleshooting-basics.md +39 -0
- package/skills/(cloud)/vercel-deploy/LICENSE.txt +21 -0
- package/skills/(cloud)/vercel-deploy/SKILL.md +73 -0
- package/skills/(cloud)/vercel-deploy/scripts/deploy.sh +301 -0
- package/skills/(creation)/create-adr/README.md +264 -0
- package/skills/(creation)/create-adr/SKILL.md +429 -0
- package/skills/(creation)/create-rfc/README.md +346 -0
- package/skills/(creation)/create-rfc/SKILL.md +309 -0
- package/skills/(creation)/create-rfc/references/section-templates.md +284 -0
- package/skills/(creation)/create-technical-design-doc/README.md +411 -0
- package/skills/(creation)/create-technical-design-doc/SKILL.md +1484 -0
- package/skills/(creation)/cursor-subagent-creator/SKILL.md +725 -0
- package/skills/(creation)/skill-architect/SKILL.md +385 -0
- package/skills/(creation)/skill-architect/references/examples.md +256 -0
- package/skills/(creation)/skill-architect/references/patterns.md +317 -0
- package/skills/(creation)/skill-architect/references/quality-checklist.md +70 -0
- package/skills/(creation)/skill-architect/scripts/validate_skill.py +539 -0
- package/skills/(creation)/subagent-creator/SKILL.md +304 -0
- package/skills/(decision-making)/the-fool/SKILL.md +139 -0
- package/skills/(decision-making)/the-fool/references/cognitive-bias-inventory.md +103 -0
- package/skills/(decision-making)/the-fool/references/dialectic-synthesis.md +170 -0
- package/skills/(decision-making)/the-fool/references/evidence-audit.md +202 -0
- package/skills/(decision-making)/the-fool/references/mode-selection-guide.md +113 -0
- package/skills/(decision-making)/the-fool/references/pre-mortem-analysis.md +200 -0
- package/skills/(decision-making)/the-fool/references/red-team-adversarial.md +206 -0
- package/skills/(decision-making)/the-fool/references/socratic-questioning.md +153 -0
- package/skills/(decision-making)/the-jury/SKILL.md +237 -0
- package/skills/(decision-making)/the-jury/references/deliberation-craft.md +133 -0
- package/skills/(decision-making)/the-jury/references/juror-archetypes.md +96 -0
- package/skills/(decision-making)/the-jury/scripts/tally.py +259 -0
- package/skills/(design)/figma/LICENSE.txt +202 -0
- package/skills/(design)/figma/SKILL.md +51 -0
- package/skills/(design)/figma/references/figma-mcp-config.md +43 -0
- package/skills/(design)/figma/references/figma-tools-and-prompts.md +39 -0
- package/skills/(design)/figma-implement-design/LICENSE.txt +202 -0
- package/skills/(design)/figma-implement-design/SKILL.md +264 -0
- package/skills/(design)/frontend-design/SKILL.md +149 -0
- package/skills/(design)/frontend-design/references/color-and-contrast.md +132 -0
- package/skills/(design)/frontend-design/references/interaction-design.md +123 -0
- package/skills/(design)/frontend-design/references/motion-design.md +99 -0
- package/skills/(design)/frontend-design/references/responsive-design.md +114 -0
- package/skills/(design)/frontend-design/references/spatial-design.md +100 -0
- package/skills/(design)/frontend-design/references/typography.md +131 -0
- package/skills/(design)/frontend-design/references/ux-writing.md +107 -0
- package/skills/(design)/web-design-guidelines/SKILL.md +65 -0
- package/skills/(design)/web-design-guidelines/references/guideline.md +174 -0
- package/skills/(development)/codenavi/SKILL.md +306 -0
- package/skills/(development)/codenavi/references/coding-principles.md +143 -0
- package/skills/(development)/codenavi/references/notebook-spec.md +171 -0
- package/skills/(development)/coding-guidelines/SKILL.md +74 -0
- package/skills/(development)/confluence-assistant/SKILL.md +194 -0
- package/skills/(development)/docs-writer/SKILL.md +39 -0
- package/skills/(development)/docs-writer/references/style-guide.md +72 -0
- package/skills/(development)/gh-address-comments/LICENSE.txt +202 -0
- package/skills/(development)/gh-address-comments/SKILL.md +31 -0
- package/skills/(development)/gh-address-comments/scripts/fetch_comments.py +237 -0
- package/skills/(development)/harness-eval/SKILL.md +268 -0
- package/skills/(development)/harness-eval/references/GLOSSARY.md +57 -0
- package/skills/(development)/harness-eval/references/PROTOCOL.md +180 -0
- package/skills/(development)/harness-eval/references/claims.schema.json +20 -0
- package/skills/(development)/harness-eval/references/judge-prompts.md +177 -0
- package/skills/(development)/harness-eval/scripts/doc_scope.py +194 -0
- package/skills/(development)/harness-eval/scripts/inventory_extract.py +897 -0
- package/skills/(development)/harness-eval/scripts/merge_agreement.py +171 -0
- package/skills/(development)/harness-eval/scripts/merge_usefulness.py +439 -0
- package/skills/(development)/harness-eval/scripts/slim_fanin.py +199 -0
- package/skills/(development)/harness-eval/scripts/surfaces_extract.py +219 -0
- package/skills/(development)/harness-eval/scripts/track_a_correctness.py +711 -0
- package/skills/(development)/jira-assistant/README.md +143 -0
- package/skills/(development)/jira-assistant/SKILL.md +330 -0
- package/skills/(development)/nestjs-modular-monolith/SKILL.md +299 -0
- package/skills/(development)/nestjs-modular-monolith/references/architecture-patterns.md +498 -0
- package/skills/(development)/nestjs-modular-monolith/references/authentication.md +323 -0
- package/skills/(development)/nestjs-modular-monolith/references/module-communication.md +255 -0
- package/skills/(development)/nestjs-modular-monolith/references/stack-configuration.md +411 -0
- package/skills/(development)/nestjs-modular-monolith/references/state-isolation.md +295 -0
- package/skills/(development)/nestjs-modular-monolith/references/testing-patterns.md +345 -0
- package/skills/(development)/nestjs-modular-monolith/scripts/validate-isolation.sh +205 -0
- package/skills/(development)/not-your-babysitter/SKILL.md +176 -0
- package/skills/(development)/pbs-discover/SKILL.md +271 -0
- package/skills/(development)/pbs-discover/references/document-format.md +149 -0
- package/skills/(development)/pbs-implement/SKILL.md +174 -0
- package/skills/(development)/pbs-implement/references/checklist-format.md +116 -0
- package/skills/(development)/pbs-implement/references/screens.md +129 -0
- package/skills/(development)/pbs-implement/references/test-policy.md +152 -0
- package/skills/(development)/pbs-implement/references/verify.md +302 -0
- package/skills/(development)/pbs-plan/SKILL.md +195 -0
- package/skills/(development)/pbs-plan/references/document-format.md +222 -0
- package/skills/(development)/pbs-spec-driven/SKILL.md +184 -0
- package/skills/(development)/pbs-spec-driven/references/code-analysis.md +98 -0
- package/skills/(development)/pbs-spec-driven/references/coding-principles.md +72 -0
- package/skills/(development)/pbs-spec-driven/references/context-limits.md +31 -0
- package/skills/(development)/pbs-spec-driven/references/design.md +199 -0
- package/skills/(development)/pbs-spec-driven/references/discuss.md +159 -0
- package/skills/(development)/pbs-spec-driven/references/implement.md +436 -0
- package/skills/(development)/pbs-spec-driven/references/lessons.md +115 -0
- package/skills/(development)/pbs-spec-driven/references/memory.md +144 -0
- package/skills/(development)/pbs-spec-driven/references/specify.md +228 -0
- package/skills/(development)/pbs-spec-driven/references/sub-agents.md +147 -0
- package/skills/(development)/pbs-spec-driven/references/tasks.md +451 -0
- package/skills/(development)/pbs-spec-driven/references/validate.md +355 -0
- package/skills/(development)/pbs-spec-driven/scripts/check_commit.py +115 -0
- package/skills/(development)/pbs-spec-driven/scripts/lessons.py +412 -0
- package/skills/(development)/pbs-spec-driven/scripts/validate_spec.py +260 -0
- package/skills/(development)/pbs-spec-driven/scripts/validate_state.py +162 -0
- package/skills/(development)/pbs-spec-driven/scripts/validate_tasks.py +251 -0
- package/skills/(development)/pbs-spec-lean/SKILL.md +320 -0
- package/skills/(development)/pbs-spec-lean/references/build.md +168 -0
- package/skills/(development)/pbs-spec-lean/references/checks.md +253 -0
- package/skills/(development)/pbs-spec-lean/references/memory.md +156 -0
- package/skills/(development)/pbs-spec-lean/references/plan.md +514 -0
- package/skills/(development)/pbs-spec-lean/references/verify.md +334 -0
- package/skills/(development)/pbs-spec-lean/scripts/check_commit.py +121 -0
- package/skills/(development)/pbs-spec-lean/scripts/fixtures/checks.md +98 -0
- package/skills/(development)/pbs-spec-lean/scripts/fixtures/plan.md +119 -0
- package/skills/(development)/pbs-spec-lean/scripts/fixtures/verification.md +41 -0
- package/skills/(development)/pbs-spec-lean/scripts/lessons.py +412 -0
- package/skills/(development)/pbs-spec-lean/scripts/selftest.py +401 -0
- package/skills/(development)/pbs-spec-lean/scripts/validate_checks.py +417 -0
- package/skills/(development)/pbs-spec-lean/scripts/validate_plan.py +580 -0
- package/skills/(development)/pbs-spec-lean/scripts/validate_verification.py +357 -0
- package/skills/(development)/rails-dev/SKILL.md +207 -0
- package/skills/(development)/rails-dev/references/api.md +235 -0
- package/skills/(development)/rails-dev/references/async.md +46 -0
- package/skills/(development)/rails-dev/references/auth.md +249 -0
- package/skills/(development)/rails-dev/references/caching.md +144 -0
- package/skills/(development)/rails-dev/references/concerns.md +220 -0
- package/skills/(development)/rails-dev/references/crud.md +222 -0
- package/skills/(development)/rails-dev/references/error-handling.md +144 -0
- package/skills/(development)/rails-dev/references/events.md +112 -0
- package/skills/(development)/rails-dev/references/http-client.md +94 -0
- package/skills/(development)/rails-dev/references/jobs.md +221 -0
- package/skills/(development)/rails-dev/references/logging.md +216 -0
- package/skills/(development)/rails-dev/references/mailer.md +118 -0
- package/skills/(development)/rails-dev/references/migration.md +142 -0
- package/skills/(development)/rails-dev/references/model.md +490 -0
- package/skills/(development)/rails-dev/references/multi-tenant.md +93 -0
- package/skills/(development)/rails-dev/references/review.md +105 -0
- package/skills/(development)/rails-dev/references/routes.md +169 -0
- package/skills/(development)/rails-dev/references/state-records.md +251 -0
- package/skills/(development)/rails-dev/references/stimulus.md +125 -0
- package/skills/(development)/rails-dev/references/test.md +274 -0
- package/skills/(development)/rails-dev/references/turbo.md +131 -0
- package/skills/(development)/rails-dev/references/validator.md +74 -0
- package/skills/(development)/rails-dev/references/view.md +151 -0
- package/skills/(development)/rails-dev/references/webhooks.md +191 -0
- package/skills/(development)/react-native-expert/SKILL.md +262 -0
- package/skills/(development)/react-native-expert/references/expo-router.md +235 -0
- package/skills/(development)/react-native-expert/references/performance-rules.md +695 -0
- package/skills/(development)/react-native-expert/references/platform-handling.md +178 -0
- package/skills/(development)/react-native-expert/references/project-structure.md +172 -0
- package/skills/(development)/react-native-expert/references/storage-patterns.md +222 -0
- package/skills/(development)/shopify-developer/SKILL.md +132 -0
- package/skills/(development)/shopify-developer/references/api-admin.md +595 -0
- package/skills/(development)/shopify-developer/references/api-storefront.md +233 -0
- package/skills/(development)/shopify-developer/references/app-development.md +759 -0
- package/skills/(development)/shopify-developer/references/debugging.md +653 -0
- package/skills/(development)/shopify-developer/references/functions.md +303 -0
- package/skills/(development)/shopify-developer/references/hydrogen.md +377 -0
- package/skills/(development)/shopify-developer/references/liquid-filters.md +873 -0
- package/skills/(development)/shopify-developer/references/liquid-objects.md +695 -0
- package/skills/(development)/shopify-developer/references/liquid-syntax.md +603 -0
- package/skills/(development)/shopify-developer/references/performance.md +606 -0
- package/skills/(development)/shopify-developer/references/theme-development.md +1199 -0
- package/skills/(development)/spec-driven-eval/SKILL.md +341 -0
- package/skills/(development)/spec-driven-eval/references/quickstart.md +118 -0
- package/skills/(development)/spec-driven-eval/references/reference.md +295 -0
- package/skills/(gtm)/ai-cold-outreach/SKILL.md +472 -0
- package/skills/(gtm)/ai-cold-outreach/references/benchmarks-deliverability-tactics.md +243 -0
- package/skills/(gtm)/ai-cold-outreach/references/quick-reference.md +51 -0
- package/skills/(gtm)/ai-pricing/SKILL.md +253 -0
- package/skills/(gtm)/ai-pricing/references/implementation-guide.md +309 -0
- package/skills/(gtm)/ai-pricing/references/quick-reference.md +34 -0
- package/skills/(gtm)/ai-sdr/SKILL.md +399 -0
- package/skills/(gtm)/ai-sdr/references/implementation-guide.md +477 -0
- package/skills/(gtm)/ai-sdr/references/quick-reference.md +55 -0
- package/skills/(gtm)/ai-seo/SKILL.md +476 -0
- package/skills/(gtm)/ai-ugc-ads/SKILL.md +437 -0
- package/skills/(gtm)/content-to-pipeline/SKILL.md +421 -0
- package/skills/(gtm)/content-to-pipeline/references/podcast-community-cadence.md +91 -0
- package/skills/(gtm)/content-to-pipeline/references/quick-reference.md +46 -0
- package/skills/(gtm)/expansion-retention/SKILL.md +466 -0
- package/skills/(gtm)/gtm-engineering/SKILL.md +289 -0
- package/skills/(gtm)/gtm-engineering/references/implementation-guide.md +552 -0
- package/skills/(gtm)/gtm-engineering/references/quick-reference.md +47 -0
- package/skills/(gtm)/gtm-metrics/SKILL.md +427 -0
- package/skills/(gtm)/lead-enrichment/SKILL.md +464 -0
- package/skills/(gtm)/lead-enrichment/references/quick-reference.md +65 -0
- package/skills/(gtm)/multi-platform-launch/SKILL.md +361 -0
- package/skills/(gtm)/multi-platform-launch/references/directories-timing-mistakes.md +234 -0
- package/skills/(gtm)/multi-platform-launch/references/quick-reference.md +35 -0
- package/skills/(gtm)/paid-creative-ai/SKILL.md +472 -0
- package/skills/(gtm)/paid-creative-ai/references/quick-reference.md +54 -0
- package/skills/(gtm)/partner-affiliate/SKILL.md +260 -0
- package/skills/(gtm)/partner-affiliate/references/implementation-guide.md +330 -0
- package/skills/(gtm)/partner-affiliate/references/quick-reference.md +41 -0
- package/skills/(gtm)/positioning-icp/SKILL.md +483 -0
- package/skills/(gtm)/positioning-icp/references/quick-reference.md +40 -0
- package/skills/(gtm)/sales-motion-design/SKILL.md +472 -0
- package/skills/(gtm)/sales-motion-design/references/quick-reference.md +52 -0
- package/skills/(gtm)/social-selling/SKILL.md +423 -0
- package/skills/(gtm)/solo-founder-gtm/SKILL.md +453 -0
- package/skills/(gtm)/video-outreach/SKILL.md +468 -0
- package/skills/(learning)/learning-opportunities/SKILL.md +140 -0
- package/skills/(learning)/learning-opportunities/references/PRINCIPLES.md +42 -0
- package/skills/(monitoring)/sentry/LICENSE.txt +201 -0
- package/skills/(monitoring)/sentry/SKILL.md +127 -0
- package/skills/(monitoring)/sentry/scripts/sentry_api.py +238 -0
- package/skills/(performance)/core-web-vitals/SKILL.md +466 -0
- package/skills/(performance)/core-web-vitals/references/LCP.md +215 -0
- package/skills/(performance)/perf-astro/SKILL.md +149 -0
- package/skills/(performance)/perf-lighthouse/SKILL.md +239 -0
- package/skills/(performance)/perf-web-optimization/SKILL.md +163 -0
- package/skills/(performance)/perf-web-optimization/references/bundle-optimization.md +180 -0
- package/skills/(performance)/perf-web-optimization/references/core-web-vitals.md +154 -0
- package/skills/(performance)/perf-web-optimization/references/image-optimization.md +170 -0
- package/skills/(quality)/pbs-generative-engine-optimization/SKILL.md +141 -0
- package/skills/(quality)/pbs-generative-engine-optimization/references/measurement-and-tools.md +136 -0
- package/skills/(quality)/pbs-generative-engine-optimization/references/pillars-and-workflow.md +139 -0
- package/skills/(quality)/pbs-generative-engine-optimization/templates/faqpage.jsonld +22 -0
- package/skills/(quality)/pbs-generative-engine-optimization/templates/llms.txt +14 -0
- package/skills/(quality)/pbs-generative-engine-optimization/templates/page-metadata.html +33 -0
- package/skills/(quality)/pbs-generative-engine-optimization/templates/quotable-article-outline.md +59 -0
- package/skills/(quality)/pbs-generative-engine-optimization/templates/robots-ai-crawlers.txt +53 -0
- package/skills/(quality)/pbs-generative-engine-optimization/templates/techarticle.jsonld +29 -0
- package/skills/(quality)/react-best-practices/AGENTS.md +2934 -0
- package/skills/(quality)/react-best-practices/README.md +123 -0
- package/skills/(quality)/react-best-practices/SKILL.md +138 -0
- package/skills/(quality)/react-best-practices/rules/_sections.md +46 -0
- package/skills/(quality)/react-best-practices/rules/_template.md +28 -0
- package/skills/(quality)/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/skills/(quality)/react-best-practices/rules/advanced-init-once.md +42 -0
- package/skills/(quality)/react-best-practices/rules/advanced-use-latest.md +39 -0
- package/skills/(quality)/react-best-practices/rules/async-api-routes.md +38 -0
- package/skills/(quality)/react-best-practices/rules/async-defer-await.md +80 -0
- package/skills/(quality)/react-best-practices/rules/async-dependencies.md +51 -0
- package/skills/(quality)/react-best-practices/rules/async-parallel.md +28 -0
- package/skills/(quality)/react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/skills/(quality)/react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/skills/(quality)/react-best-practices/rules/bundle-conditional.md +31 -0
- package/skills/(quality)/react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/skills/(quality)/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/skills/(quality)/react-best-practices/rules/bundle-preload.md +50 -0
- package/skills/(quality)/react-best-practices/rules/client-event-listeners.md +74 -0
- package/skills/(quality)/react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/skills/(quality)/react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/skills/(quality)/react-best-practices/rules/client-swr-dedup.md +56 -0
- package/skills/(quality)/react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/skills/(quality)/react-best-practices/rules/js-cache-function-results.md +80 -0
- package/skills/(quality)/react-best-practices/rules/js-cache-property-access.md +28 -0
- package/skills/(quality)/react-best-practices/rules/js-cache-storage.md +70 -0
- package/skills/(quality)/react-best-practices/rules/js-combine-iterations.md +32 -0
- package/skills/(quality)/react-best-practices/rules/js-early-exit.md +50 -0
- package/skills/(quality)/react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/skills/(quality)/react-best-practices/rules/js-index-maps.md +37 -0
- package/skills/(quality)/react-best-practices/rules/js-length-check-first.md +49 -0
- package/skills/(quality)/react-best-practices/rules/js-min-max-loop.md +82 -0
- package/skills/(quality)/react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/skills/(quality)/react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/skills/(quality)/react-best-practices/rules/rendering-activity.md +26 -0
- package/skills/(quality)/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/skills/(quality)/react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/skills/(quality)/react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/skills/(quality)/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/skills/(quality)/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/skills/(quality)/react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/skills/(quality)/react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/skills/(quality)/react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/skills/(quality)/react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/skills/(quality)/react-best-practices/rules/rerender-dependencies.md +45 -0
- package/skills/(quality)/react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/skills/(quality)/react-best-practices/rules/rerender-derived-state.md +29 -0
- package/skills/(quality)/react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/skills/(quality)/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/skills/(quality)/react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/skills/(quality)/react-best-practices/rules/rerender-memo.md +44 -0
- package/skills/(quality)/react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/skills/(quality)/react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/skills/(quality)/react-best-practices/rules/rerender-transitions.md +40 -0
- package/skills/(quality)/react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/skills/(quality)/react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/skills/(quality)/react-best-practices/rules/server-auth-actions.md +96 -0
- package/skills/(quality)/react-best-practices/rules/server-cache-lru.md +41 -0
- package/skills/(quality)/react-best-practices/rules/server-cache-react.md +76 -0
- package/skills/(quality)/react-best-practices/rules/server-dedup-props.md +65 -0
- package/skills/(quality)/react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/skills/(quality)/react-best-practices/rules/server-serialization.md +38 -0
- package/skills/(quality)/seo/SKILL.md +532 -0
- package/skills/(quality)/the-judge/SKILL.md +240 -0
- package/skills/(quality)/the-judge/references/comment-voice.md +69 -0
- package/skills/(quality)/the-judge/references/review-standards.md +122 -0
- package/skills/(quality)/the-judge/scripts/post_review.py +89 -0
- package/skills/(quality)/the-judge/scripts/review_gate.py +216 -0
- package/skills/(quality)/the-judge/scripts/scan_bypasses.py +68 -0
- package/skills/(quality)/web-accessibility/SKILL.md +531 -0
- package/skills/(quality)/web-accessibility/references/WCAG.md +169 -0
- package/skills/(quality)/web-best-practices/SKILL.md +616 -0
- package/skills/(quality)/web-quality-audit/SKILL.md +191 -0
- package/skills/(quality)/web-quality-audit/scripts/analyze.sh +91 -0
- package/skills/(security)/security-best-practices/LICENSE.txt +201 -0
- package/skills/(security)/security-best-practices/SKILL.md +89 -0
- package/skills/(security)/security-best-practices/references/golang-general-backend-security.md +988 -0
- package/skills/(security)/security-best-practices/references/javascript-express-web-server-security.md +1151 -0
- package/skills/(security)/security-best-practices/references/javascript-general-web-frontend-security.md +725 -0
- package/skills/(security)/security-best-practices/references/javascript-jquery-web-frontend-security.md +672 -0
- package/skills/(security)/security-best-practices/references/javascript-typescript-nextjs-web-server-security.md +1138 -0
- package/skills/(security)/security-best-practices/references/javascript-typescript-react-web-frontend-security.md +975 -0
- package/skills/(security)/security-best-practices/references/javascript-typescript-vue-web-frontend-security.md +789 -0
- package/skills/(security)/security-best-practices/references/python-django-web-server-security.md +880 -0
- package/skills/(security)/security-best-practices/references/python-fastapi-web-server-security.md +1030 -0
- package/skills/(security)/security-best-practices/references/python-flask-web-server-security.md +835 -0
- package/skills/(security)/security-ownership-map/LICENSE.txt +201 -0
- package/skills/(security)/security-ownership-map/SKILL.md +210 -0
- package/skills/(security)/security-ownership-map/references/neo4j-import.md +60 -0
- package/skills/(security)/security-ownership-map/scripts/build_ownership_map.py +956 -0
- package/skills/(security)/security-ownership-map/scripts/community_maintainers.py +544 -0
- package/skills/(security)/security-ownership-map/scripts/query_ownership.py +483 -0
- package/skills/(security)/security-ownership-map/scripts/run_ownership_map.py +200 -0
- package/skills/(security)/security-threat-model/LICENSE.txt +201 -0
- package/skills/(security)/security-threat-model/SKILL.md +92 -0
- package/skills/(security)/security-threat-model/references/prompt-template.md +254 -0
- package/skills/(security)/security-threat-model/references/security-controls-and-assets.md +35 -0
- package/skills/(tooling)/chrome-devtools/SKILL.md +109 -0
- package/skills/(tooling)/excalidraw-studio/SKILL.md +276 -0
- package/skills/(tooling)/excalidraw-studio/assets/business-flow-swimlane-template.json +413 -0
- package/skills/(tooling)/excalidraw-studio/assets/class-diagram-template.json +473 -0
- package/skills/(tooling)/excalidraw-studio/assets/data-flow-diagram-template.json +389 -0
- package/skills/(tooling)/excalidraw-studio/assets/er-diagram-template.json +540 -0
- package/skills/(tooling)/excalidraw-studio/assets/flowchart-template.json +645 -0
- package/skills/(tooling)/excalidraw-studio/assets/mindmap-template.json +1235 -0
- package/skills/(tooling)/excalidraw-studio/assets/relationship-template.json +363 -0
- package/skills/(tooling)/excalidraw-studio/assets/sequence-diagram-template.json +586 -0
- package/skills/(tooling)/excalidraw-studio/references/element-types.md +504 -0
- package/skills/(tooling)/excalidraw-studio/references/excalidraw-schema.md +823 -0
- package/skills/(tooling)/excalidraw-studio/references/icon-libraries.md +161 -0
- package/skills/(tooling)/excalidraw-studio/scripts/README.md +200 -0
- package/skills/(tooling)/excalidraw-studio/scripts/add-arrow.py +312 -0
- package/skills/(tooling)/excalidraw-studio/scripts/add-icon-to-diagram.py +404 -0
- package/skills/(tooling)/excalidraw-studio/scripts/split-excalidraw-library.py +183 -0
- package/skills/(tooling)/gh-fix-ci/LICENSE.txt +201 -0
- package/skills/(tooling)/gh-fix-ci/SKILL.md +73 -0
- package/skills/(tooling)/gh-fix-ci/scripts/inspect_pr_checks.py +509 -0
- package/skills/(tooling)/mermaid-studio/SKILL.md +382 -0
- package/skills/(tooling)/mermaid-studio/assets/puppeteer-config.json +10 -0
- package/skills/(tooling)/mermaid-studio/references/aws-architecture.md +395 -0
- package/skills/(tooling)/mermaid-studio/references/c4-architecture.md +473 -0
- package/skills/(tooling)/mermaid-studio/references/code-to-diagram.md +281 -0
- package/skills/(tooling)/mermaid-studio/references/diagram-types.md +758 -0
- package/skills/(tooling)/mermaid-studio/references/themes.md +426 -0
- package/skills/(tooling)/mermaid-studio/references/troubleshooting.md +479 -0
- package/skills/(tooling)/mermaid-studio/scripts/batch.mjs +227 -0
- package/skills/(tooling)/mermaid-studio/scripts/render-ascii.mjs +195 -0
- package/skills/(tooling)/mermaid-studio/scripts/render.mjs +600 -0
- package/skills/(tooling)/mermaid-studio/scripts/setup.sh +96 -0
- package/skills/(tooling)/mermaid-studio/scripts/validate.mjs +345 -0
- package/skills/(tooling)/nx-ci-monitor/SKILL.md +449 -0
- package/skills/(tooling)/nx-generate/SKILL.md +228 -0
- package/skills/(tooling)/nx-run-tasks/SKILL.md +58 -0
- package/skills/(tooling)/nx-workspace/SKILL.md +140 -0
- package/skills/(tooling)/nx-workspace/reference/best-practices.md +451 -0
- package/skills/(tooling)/nx-workspace/reference/ci-cd.md +387 -0
- package/skills/(tooling)/nx-workspace/reference/commands.md +378 -0
- package/skills/(tooling)/nx-workspace/reference/configuration.md +314 -0
- package/skills/(web-automation)/playwright-skill/API_REFERENCE.md +653 -0
- package/skills/(web-automation)/playwright-skill/SKILL.md +455 -0
- package/skills/(web-automation)/playwright-skill/lib/helpers.js +441 -0
- package/skills/(web-automation)/playwright-skill/package.json +26 -0
- package/skills/(web-automation)/playwright-skill/run.js +228 -0
- package/skills/_category.json +58 -0
- package/skills/deprecated.yaml +46 -0
- package/skills-registry.json +1856 -0
|
@@ -0,0 +1,401 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
selftest.py - fault injection against this skill's own gates, plus a smoke run of its tooling.
|
|
4
|
+
|
|
5
|
+
The gates in validate_plan.py, validate_checks.py and validate_verification.py are only
|
|
6
|
+
worth their invocation if they FAIL when the artifact is wrong. A validator that exits 0
|
|
7
|
+
on everything is decoration, and nothing about running it would reveal that. So the same
|
|
8
|
+
discipline the skill demands of a feature applies to the skill: mutate the artifact, run
|
|
9
|
+
the gate, and require the mutant to be killed.
|
|
10
|
+
|
|
11
|
+
Run this after editing any validator, and after editing the templates in references/ -
|
|
12
|
+
a template change that drifts from what a validator parses shows up here as a broken
|
|
13
|
+
baseline rather than as a silent pass in six months.
|
|
14
|
+
|
|
15
|
+
Fixtures live in scripts/fixtures/ as a complete, filled-in worked example (a real feature
|
|
16
|
+
shape, not placeholders). They double as the reference for what a passing artifact looks like.
|
|
17
|
+
|
|
18
|
+
Usage:
|
|
19
|
+
python3 <skill-dir>/scripts/selftest.py [-v]
|
|
20
|
+
|
|
21
|
+
Exit codes: 0 all mutants killed and the baseline is clean, 1 otherwise.
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
import os
|
|
25
|
+
import re
|
|
26
|
+
import shutil
|
|
27
|
+
import subprocess
|
|
28
|
+
import sys
|
|
29
|
+
import tempfile
|
|
30
|
+
|
|
31
|
+
HERE = os.path.dirname(os.path.abspath(__file__))
|
|
32
|
+
FIXTURES = os.path.join(HERE, "fixtures")
|
|
33
|
+
FEATURE = "billing"
|
|
34
|
+
|
|
35
|
+
# (validator, artifact, description, mutation, expected exit, expected message fragment)
|
|
36
|
+
CASES = [
|
|
37
|
+
("validate_checks", "checks.md", "drop one member from a size-5 set",
|
|
38
|
+
lambda s: s.replace(" · `trial_will_end` C10 | - |", " | - |", 1),
|
|
39
|
+
1, "declares 5 members but only 4"),
|
|
40
|
+
("validate_checks", "checks.md", "remove a check's Proof line",
|
|
41
|
+
lambda s: re.sub(r"\nProof: `bin/rails test test/billing/access_test\.rb[^\n]*\n", "\n", s),
|
|
42
|
+
1, "C4 has no `Proof:` line"),
|
|
43
|
+
("validate_checks", "checks.md", "delete the concurrency sweep line",
|
|
44
|
+
lambda s: s.replace("- concurrency: C7\n", ""),
|
|
45
|
+
1, "dimension 'concurrency' has no line"),
|
|
46
|
+
("validate_checks", "checks.md", "bare n/a with no reason",
|
|
47
|
+
lambda s: re.sub(r"- data lifecycle: n/a[^\n]*", "- data lifecycle: n/a", s),
|
|
48
|
+
1, "`n/a` with no reason"),
|
|
49
|
+
("validate_checks", "checks.md", "remove the Profile line",
|
|
50
|
+
lambda s: s.replace("Profile: standard\n", ""),
|
|
51
|
+
1, "no `Profile:` line"),
|
|
52
|
+
("validate_checks", "checks.md", "reference an undefined check",
|
|
53
|
+
lambda s: s.replace("into it C1 ·", "into it C99 ·"),
|
|
54
|
+
1, "C99 is referenced in Coverage"),
|
|
55
|
+
("validate_checks", "checks.md", "duplicate check id",
|
|
56
|
+
lambda s: s.replace("**C6** - A `Suspended` subscription returns", "**C5** - A `Suspended` subscription returns"),
|
|
57
|
+
1, "duplicate check id C5"),
|
|
58
|
+
("validate_checks", "checks.md", "non-empty Unproven cell",
|
|
59
|
+
lambda s: s.replace("| C2, table-driven over all 9 | - |", "| C2, table-driven over all 9 | `paused` |"),
|
|
60
|
+
1, "Unproven is '`paused`'"),
|
|
61
|
+
("validate_checks", "checks.md", "proof with no test selector (warn)",
|
|
62
|
+
lambda s: s.replace('Proof: `bin/rails test test/billing/access_test.rb -n "/suspended_denies_paid_groups/"`',
|
|
63
|
+
"Proof: `bin/rails test`"),
|
|
64
|
+
0, "names no test selector"),
|
|
65
|
+
("validate_checks", "checks.md", "vague claim (warn)",
|
|
66
|
+
lambda s: s.replace("denies access to paid access groups", "handles access gracefully"),
|
|
67
|
+
0, "instead of a concrete value"),
|
|
68
|
+
|
|
69
|
+
("validate_plan", "plan.md", "missing Observable section",
|
|
70
|
+
lambda s: s.replace("## Observable", "## User-facing notes"),
|
|
71
|
+
1, "missing required section: ## Observable"),
|
|
72
|
+
("validate_plan", "plan.md", "empty Observable section",
|
|
73
|
+
lambda s: re.sub(r"## Observable\n.*?\n## Flow", "## Observable\n\n## Flow", s, flags=re.S),
|
|
74
|
+
1, "Observable section is empty"),
|
|
75
|
+
("validate_plan", "plan.md", "an Observable row with a blank landing",
|
|
76
|
+
lambda s: s.replace("| error shape and codes | AC 6 |", "| error shape and codes | |"),
|
|
77
|
+
1, "landing is blank"),
|
|
78
|
+
("validate_plan", "plan.md", "an Observable n/a with no reason",
|
|
79
|
+
lambda s: s.replace("| versioning | n/a - the provider pins the payload version in the envelope |",
|
|
80
|
+
"| versioning | n/a |"),
|
|
81
|
+
1, "`n/a` with no reason"),
|
|
82
|
+
|
|
83
|
+
("validate_plan", "plan.md", "missing Flow section",
|
|
84
|
+
lambda s: s.replace("## Flow", "## How it hangs together"),
|
|
85
|
+
1, "missing required section: ## Flow"),
|
|
86
|
+
("validate_plan", "plan.md", "empty Flow section",
|
|
87
|
+
lambda s: re.sub(r"## Flow\n.*?\n## Relations", "## Flow\n\n## Relations", s, flags=re.S),
|
|
88
|
+
1, "Flow section is empty"),
|
|
89
|
+
("validate_plan", "plan.md", "missing Relations section",
|
|
90
|
+
lambda s: s.replace("## Relations", "## Data model"),
|
|
91
|
+
1, "missing required section: ## Relations"),
|
|
92
|
+
("validate_plan", "plan.md", "empty Surface section",
|
|
93
|
+
lambda s: re.sub(r"## Surface\n.*?\n## Landing", "## Surface\n\n## Landing", s, flags=re.S),
|
|
94
|
+
1, "Surface section is empty"),
|
|
95
|
+
("validate_plan", "plan.md", "empty Landing section",
|
|
96
|
+
lambda s: re.sub(r"## Landing\n.*?\n## Impact", "## Landing\n\n## Impact", s, flags=re.S),
|
|
97
|
+
1, "Landing section is empty"),
|
|
98
|
+
("validate_plan", "plan.md", "Landing door with no rejected alternative",
|
|
99
|
+
lambda s: s.replace("| a boolean `is_suspended` - cannot express the next state |", "| |"),
|
|
100
|
+
1, "no rejected alternative"),
|
|
101
|
+
("validate_plan", "plan.md", "Landing door with no literal shape",
|
|
102
|
+
lambda s: s.replace("| enum value, not null, existing rows backfilled to `active` |", "| |"),
|
|
103
|
+
1, "no literal shape"),
|
|
104
|
+
("validate_plan", "plan.md", "columns and types creep into Relations",
|
|
105
|
+
lambda s: s.replace(
|
|
106
|
+
" Subscription ||--o{ WebhookDelivery : \"reported by\"",
|
|
107
|
+
" Subscription {\n string status\n datetime suspended_at\n }\n"
|
|
108
|
+
" Subscription ||--o{ WebhookDelivery : \"reported by\""),
|
|
109
|
+
1, "carries an attribute block"),
|
|
110
|
+
("validate_plan", "plan.md", "a Surface route with no statuses",
|
|
111
|
+
lambda s: s.replace("| `200`, `409`, `422` |", "| |"),
|
|
112
|
+
1, "names no status code"),
|
|
113
|
+
("validate_plan", "plan.md", "check ids written into Surface before checks exist",
|
|
114
|
+
lambda s: s.replace("| `200`, `409`, `422` |", "| `200`, `409`, `422` | C7, C8, C9 |"),
|
|
115
|
+
1, "does not exist yet"),
|
|
116
|
+
("validate_plan", "plan.md", "empty Impact section",
|
|
117
|
+
lambda s: re.sub(r"## Impact\n.*", "## Impact\n", s, flags=re.S),
|
|
118
|
+
1, "Impact section is empty"),
|
|
119
|
+
("validate_plan", "plan.md", "a Flow hop naming a module that neither exists nor is a door (warn)",
|
|
120
|
+
lambda s: s.replace(
|
|
121
|
+
"3. `Billing::StatusMap` (new, no door - placement per conventions) - provider status -> local status",
|
|
122
|
+
"3. `Billing::StatusMapFactory` - provider status -> local status"),
|
|
123
|
+
0, "without marking it as existing or as a"),
|
|
124
|
+
("validate_plan", "plan.md", "a source marked binding under profile standard (warn)",
|
|
125
|
+
lambda s: s.replace("- provider webhook reference - the 9 statuses",
|
|
126
|
+
"- design `03` - **binding for the interface** - the 9 statuses"),
|
|
127
|
+
0, "declares profile standard, so nobody"),
|
|
128
|
+
|
|
129
|
+
("validate_checks", "plan.md", "a route reviewed in the plan that no check mentions (warn)",
|
|
130
|
+
lambda s: s.replace("`POST /webhooks/provider`", "`POST /webhooks/provider/v2`"),
|
|
131
|
+
0, "owe a Coverage row, or the route is dead"),
|
|
132
|
+
|
|
133
|
+
("validate_plan", "plan.md", "acceptance criterion with no SHALL",
|
|
134
|
+
lambda s: s.replace("THEN the system SHALL set the subscription status", "THEN we set the subscription status"),
|
|
135
|
+
1, "has no SHALL"),
|
|
136
|
+
("validate_plan", "plan.md", "assumption with no rationale",
|
|
137
|
+
lambda s: s.replace("| the provider already retried 3 times before it reports a failure |", "| |"),
|
|
138
|
+
1, "empty 'Rationale'"),
|
|
139
|
+
("validate_plan", "plan.md", "missing required section",
|
|
140
|
+
lambda s: s.replace("## Traceability", "## Requirements Map"),
|
|
141
|
+
1, "missing required section: ## Traceability"),
|
|
142
|
+
("validate_plan", "plan.md", "out hop naming a slug in backticks is not an unresolved module",
|
|
143
|
+
lambda s: s.replace(
|
|
144
|
+
"5. out: `200` `{}`, and `AccessPolicy` (exists) reads `status` on the next request - no call from here",
|
|
145
|
+
"5. out: `200` `{}`; `completo` stays"),
|
|
146
|
+
0, "0 warning"),
|
|
147
|
+
("validate_plan", "plan.md", "flowchart node neither existing nor a door (warn)",
|
|
148
|
+
lambda s: s.replace(
|
|
149
|
+
"3. `Billing::StatusMap` (new, no door - placement per conventions) - provider status -> local status",
|
|
150
|
+
"```mermaid\nflowchart TD\n A[\"Billing::StatusMap\"] --> B[\"Billing::Ledger\"]\n```"),
|
|
151
|
+
0, "belongs in the diff"),
|
|
152
|
+
("validate_plan", "plan.md", "open question left unresolved (warn)",
|
|
153
|
+
lambda s: s.replace("**Open questions:** none - all resolved or logged above.",
|
|
154
|
+
"**Open questions:** what happens on a chargeback?"),
|
|
155
|
+
0, "do not read as resolved"),
|
|
156
|
+
|
|
157
|
+
("validate_verification", "verification.md", "surviving mutant next to PASS",
|
|
158
|
+
lambda s: s.replace("| `app/webhooks/ingest.rb:31` | yes |", "| `app/webhooks/ingest.rb:31` | no |"),
|
|
159
|
+
1, "a mutant survived"),
|
|
160
|
+
("validate_verification", "verification.md", "PASS with an unproven coverage member",
|
|
161
|
+
lambda s: s.replace("`trial_will_end` C10 | - |", "`trial_will_end` C10 | `paused` |"),
|
|
162
|
+
1, "unproven"),
|
|
163
|
+
("validate_verification", "verification.md", "profile standard with no fault rows",
|
|
164
|
+
lambda s: re.sub(r"## Faults injected\n.*?\n## Gate", "## Gate", s, flags=re.S),
|
|
165
|
+
1, "no fault rows"),
|
|
166
|
+
("validate_verification", "verification.md", "PASS with no file:line evidence",
|
|
167
|
+
lambda s: re.sub(r"`[\w./-]+\.rb:\d+`", "`the test file`", s),
|
|
168
|
+
1, "cites no file:line evidence"),
|
|
169
|
+
("validate_verification", "verification.md", "FAIL verdict",
|
|
170
|
+
lambda s: s.replace("**Verdict**: PASS", "**Verdict**: FAIL"),
|
|
171
|
+
1, "verdict is FAIL"),
|
|
172
|
+
("validate_verification", "verification.md", "unfilled template verdict",
|
|
173
|
+
lambda s: s.replace("**Verdict**: PASS", "**Verdict**: [PASS | FAIL]"),
|
|
174
|
+
1, "template placeholder"),
|
|
175
|
+
("validate_verification", "verification.md", "a check row that is not PASS",
|
|
176
|
+
lambda s: s.replace("`assert_equal 1, WebhookDelivery.count` | PASS |",
|
|
177
|
+
"`assert_equal 1, WebhookDelivery.count` | not run |"),
|
|
178
|
+
1, "reports 'not run'"),
|
|
179
|
+
("validate_verification", "verification.md", "self-verified report (warn)",
|
|
180
|
+
lambda s: s.replace("independent sub-agent (author != verifier)", "self-verified (degraded - no sub-agent)"),
|
|
181
|
+
0, "self-verified"),
|
|
182
|
+
("validate_verification", "verification.md", "report downgrades the approved profile",
|
|
183
|
+
lambda s: s.replace("**Profile**: standard", "**Profile**: light"),
|
|
184
|
+
1, "checks.md was approved under 'standard'"),
|
|
185
|
+
|
|
186
|
+
# Profile-scoped steps: raising the profile in checks.md must make the report owe a section.
|
|
187
|
+
("validate_verification", "checks.md", "profile ui but no binding-sources section in the report",
|
|
188
|
+
lambda s: s.replace("Profile: standard", "Profile: ui"),
|
|
189
|
+
1, "no `## Binding sources` section"),
|
|
190
|
+
("validate_verification", "verification.md", "profile standard with no recomputed Coverage",
|
|
191
|
+
lambda s: re.sub(r"## Coverage\n.*?\n## Test policy rows", "## Test policy rows", s, flags=re.S),
|
|
192
|
+
1, "no `## Coverage` section"),
|
|
193
|
+
("validate_verification", "verification.md", "an unmet Test policy row next to PASS",
|
|
194
|
+
lambda s: s.replace("| own layer C2 | yes |", "| own layer C2 | no |"),
|
|
195
|
+
1, "Test policy row is unmet"),
|
|
196
|
+
]
|
|
197
|
+
|
|
198
|
+
# Negative controls: under `light` the profile-scoped steps must NOT be demanded. A gate that
|
|
199
|
+
# fires at every profile is the same bug as one that never fires - it just fails loudly instead
|
|
200
|
+
# of silently, and it would make `light` unusable.
|
|
201
|
+
NEGATIVE_CONTROLS = [
|
|
202
|
+
("validate_verification", "a light report with no faults and no coverage is accepted",
|
|
203
|
+
{"checks.md": lambda s: s.replace("Profile: standard", "Profile: light"),
|
|
204
|
+
"verification.md": lambda s: re.sub(
|
|
205
|
+
r"## Coverage\n.*?\n## Faults injected\n.*?\n## Gate", "## Gate",
|
|
206
|
+
s.replace("**Profile**: standard", "**Profile**: light"), flags=re.S)}),
|
|
207
|
+
]
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
def scaffold():
|
|
211
|
+
root = tempfile.mkdtemp(prefix="pbs-spec-lean-selftest-")
|
|
212
|
+
fdir = os.path.join(root, ".specs", "features", FEATURE)
|
|
213
|
+
os.makedirs(fdir)
|
|
214
|
+
for name in ("plan.md", "checks.md", "verification.md"):
|
|
215
|
+
shutil.copyfile(os.path.join(FIXTURES, name), os.path.join(fdir, name))
|
|
216
|
+
return root
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
def run(validator, root):
|
|
220
|
+
p = subprocess.run(
|
|
221
|
+
[sys.executable, os.path.join(HERE, f"{validator}.py"), FEATURE, "--root", root],
|
|
222
|
+
capture_output=True, text=True,
|
|
223
|
+
)
|
|
224
|
+
return p.returncode, p.stdout + p.stderr
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
def run_script(name, *args, cwd=None):
|
|
228
|
+
"""Run a shipped script directly and return (exit code, combined output)."""
|
|
229
|
+
proc = subprocess.run(
|
|
230
|
+
[sys.executable, os.path.join(HERE, name), *args],
|
|
231
|
+
capture_output=True, text=True, cwd=cwd,
|
|
232
|
+
)
|
|
233
|
+
return proc.returncode, proc.stdout + proc.stderr
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
# (script, description, argv, expected exit, expected output fragment)
|
|
237
|
+
TOOLING = [
|
|
238
|
+
("check_commit.py", "a conventional message passes",
|
|
239
|
+
["feat: suspend the subscription on a failed charge"], 0, "OK"),
|
|
240
|
+
("check_commit.py", "a non-conventional message fails",
|
|
241
|
+
["Updated stuff."], 1, "does not match"),
|
|
242
|
+
("check_commit.py", "a capitalized description fails",
|
|
243
|
+
["feat: Suspend the subscription"], 1, "start lowercase"),
|
|
244
|
+
("check_commit.py", "an unknown type fails",
|
|
245
|
+
["wip: suspend the subscription"], 1, "is not one of"),
|
|
246
|
+
("lessons.py", "normalization regressions pass", ["selftest"], 0, "ok"),
|
|
247
|
+
("lessons.py", "--root before the subcommand is the documented form",
|
|
248
|
+
["--root", tempfile.gettempdir(), "list", "--status", "confirmed"], 0, ""),
|
|
249
|
+
]
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
def run_tooling():
|
|
253
|
+
"""Exercise the scripts the skill ships beyond the validators.
|
|
254
|
+
|
|
255
|
+
A shipped script nothing ever calls is where a crash hides: check_commit.py once raised a
|
|
256
|
+
traceback on the message form of its own argument, and no gate noticed because no gate ran it.
|
|
257
|
+
"""
|
|
258
|
+
print("\ntooling - every shipped script must run, not just parse")
|
|
259
|
+
ok = True
|
|
260
|
+
for script, desc, argv, want_code, want_frag in TOOLING:
|
|
261
|
+
code, out = run_script(script, *argv)
|
|
262
|
+
if code == want_code and want_frag.lower() in out.lower():
|
|
263
|
+
print(f" ok {script}: {desc}")
|
|
264
|
+
continue
|
|
265
|
+
ok = False
|
|
266
|
+
print(f" BROKEN {script}: {desc} - expected exit={want_code} and {want_frag!r}, "
|
|
267
|
+
f"got exit={code}")
|
|
268
|
+
print(" " + out.strip().replace("\n", "\n "))
|
|
269
|
+
|
|
270
|
+
# The completion gate must not go green on an empty run. This is a control, not a mutant:
|
|
271
|
+
# "no report found" once exited 0, which reads as a pass to anything checking exit codes.
|
|
272
|
+
empty = tempfile.mkdtemp(prefix="empty-root-")
|
|
273
|
+
try:
|
|
274
|
+
for argv, want, desc in [
|
|
275
|
+
(["--root", empty], 2, "gating nothing exits 2, not 0"),
|
|
276
|
+
(["--root", empty, "--allow-empty"], 0, "an explicit empty sweep is allowed"),
|
|
277
|
+
(["missing-feature", "--root", empty], 2, "an unresolvable feature exits 2"),
|
|
278
|
+
]:
|
|
279
|
+
code, out = run_script("validate_verification.py", *argv)
|
|
280
|
+
if code == want:
|
|
281
|
+
print(f" ok validate_verification.py: {desc}")
|
|
282
|
+
else:
|
|
283
|
+
ok = False
|
|
284
|
+
print(f" BROKEN validate_verification.py: {desc} - expected exit={want}, "
|
|
285
|
+
f"got {code}: {out.strip()}")
|
|
286
|
+
finally:
|
|
287
|
+
shutil.rmtree(empty, ignore_errors=True)
|
|
288
|
+
|
|
289
|
+
# the lessons store has to survive a real round-trip on disk, not only its unit checks
|
|
290
|
+
root = tempfile.mkdtemp(prefix="lessons-")
|
|
291
|
+
try:
|
|
292
|
+
steps = [
|
|
293
|
+
(["--root", root, "init"], "Initialized"),
|
|
294
|
+
(["--root", root, "add", "--feature", FEATURE, "--signal", "surviving_mutant",
|
|
295
|
+
"--source", "app/billing/x.rb:31", "--text", "assert the dedup path returns the row"],
|
|
296
|
+
"ADDED"),
|
|
297
|
+
(["--root", root, "status"], "1 total"),
|
|
298
|
+
]
|
|
299
|
+
for argv, frag in steps:
|
|
300
|
+
code, out = run_script("lessons.py", *argv)
|
|
301
|
+
if code != 0 or frag.lower() not in out.lower():
|
|
302
|
+
ok = False
|
|
303
|
+
print(f" BROKEN lessons.py: round-trip step {argv[2]!r} - expected {frag!r}, "
|
|
304
|
+
f"got exit={code}: {out.strip()}")
|
|
305
|
+
break
|
|
306
|
+
else:
|
|
307
|
+
for artifact in ("lessons.json", "LESSONS.md"):
|
|
308
|
+
if not os.path.isfile(os.path.join(root, ".specs", artifact)):
|
|
309
|
+
ok = False
|
|
310
|
+
print(f" BROKEN lessons.py: round-trip wrote no .specs/{artifact}")
|
|
311
|
+
break
|
|
312
|
+
else:
|
|
313
|
+
print(" ok lessons.py: init - add - status round-trip writes both artifacts")
|
|
314
|
+
finally:
|
|
315
|
+
shutil.rmtree(root, ignore_errors=True)
|
|
316
|
+
return ok
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
def main(argv=None):
|
|
320
|
+
verbose = "-v" in (argv or sys.argv[1:])
|
|
321
|
+
if not os.path.isdir(FIXTURES):
|
|
322
|
+
print(f"selftest: fixtures directory missing: {FIXTURES}", file=sys.stderr)
|
|
323
|
+
return 1
|
|
324
|
+
|
|
325
|
+
base = scaffold()
|
|
326
|
+
print("baseline - a clean artifact set must pass every gate")
|
|
327
|
+
baseline_ok = True
|
|
328
|
+
for validator in ("validate_plan", "validate_checks", "validate_verification"):
|
|
329
|
+
code, out = run(validator, base)
|
|
330
|
+
if code != 0:
|
|
331
|
+
baseline_ok = False
|
|
332
|
+
print(f" BROKEN {validator} exit={code}")
|
|
333
|
+
print(" " + out.strip().replace("\n", "\n "))
|
|
334
|
+
else:
|
|
335
|
+
print(f" ok {validator}")
|
|
336
|
+
shutil.rmtree(base)
|
|
337
|
+
|
|
338
|
+
print("\nfault injection - every mutant must be killed")
|
|
339
|
+
killed = survived = 0
|
|
340
|
+
for validator, artifact, desc, mutate, want_code, want_msg in CASES:
|
|
341
|
+
root = scaffold()
|
|
342
|
+
path = os.path.join(root, ".specs", "features", FEATURE, artifact)
|
|
343
|
+
with open(path, encoding="utf-8") as f:
|
|
344
|
+
original = f.read()
|
|
345
|
+
mutated = mutate(original)
|
|
346
|
+
if mutated == original:
|
|
347
|
+
survived += 1
|
|
348
|
+
print(f" VACUOUS {validator}: {desc} - the mutation did not apply, so the case proves nothing")
|
|
349
|
+
shutil.rmtree(root)
|
|
350
|
+
continue
|
|
351
|
+
with open(path, "w", encoding="utf-8") as f:
|
|
352
|
+
f.write(mutated)
|
|
353
|
+
code, out = run(validator, root)
|
|
354
|
+
if code == want_code and want_msg in out:
|
|
355
|
+
killed += 1
|
|
356
|
+
if verbose:
|
|
357
|
+
print(f" killed {validator}: {desc}")
|
|
358
|
+
else:
|
|
359
|
+
survived += 1
|
|
360
|
+
print(f" SURVIVED {validator}: {desc}")
|
|
361
|
+
print(f" expected exit={want_code} and {want_msg!r}, got exit={code}")
|
|
362
|
+
print(" " + out.strip().replace("\n", "\n "))
|
|
363
|
+
shutil.rmtree(root)
|
|
364
|
+
|
|
365
|
+
if not verbose and survived == 0:
|
|
366
|
+
print(f" all {killed} killed (-v to list them)")
|
|
367
|
+
|
|
368
|
+
print("\nnegative controls - a profile-scoped gate must not fire below its profile")
|
|
369
|
+
controls_ok = True
|
|
370
|
+
for validator, desc, edits in NEGATIVE_CONTROLS:
|
|
371
|
+
root = scaffold()
|
|
372
|
+
for artifact, edit in edits.items():
|
|
373
|
+
path = os.path.join(root, ".specs", "features", FEATURE, artifact)
|
|
374
|
+
with open(path, encoding="utf-8") as f:
|
|
375
|
+
original = f.read()
|
|
376
|
+
mutated = edit(original)
|
|
377
|
+
if mutated == original:
|
|
378
|
+
controls_ok = False
|
|
379
|
+
print(f" VACUOUS {validator}: {desc} - the edit to {artifact} did not apply")
|
|
380
|
+
with open(path, "w", encoding="utf-8") as f:
|
|
381
|
+
f.write(mutated)
|
|
382
|
+
code, out = run(validator, root)
|
|
383
|
+
if code == 0:
|
|
384
|
+
print(f" ok {validator}: {desc}")
|
|
385
|
+
else:
|
|
386
|
+
controls_ok = False
|
|
387
|
+
print(f" FIRED {validator}: {desc} - expected exit=0, got {code}")
|
|
388
|
+
print(" " + out.strip().replace("\n", "\n "))
|
|
389
|
+
shutil.rmtree(root)
|
|
390
|
+
|
|
391
|
+
tooling_ok = run_tooling()
|
|
392
|
+
|
|
393
|
+
print(f"\nselftest: {killed} killed, {survived} survived, "
|
|
394
|
+
f"controls {'ok' if controls_ok else 'BROKEN'}, "
|
|
395
|
+
f"tooling {'ok' if tooling_ok else 'BROKEN'}, "
|
|
396
|
+
f"baseline {'clean' if baseline_ok else 'BROKEN'}")
|
|
397
|
+
return 0 if (survived == 0 and baseline_ok and controls_ok and tooling_ok) else 1
|
|
398
|
+
|
|
399
|
+
|
|
400
|
+
if __name__ == "__main__":
|
|
401
|
+
raise SystemExit(main())
|