@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.
Files changed (780) hide show
  1. package/package.json +23 -0
  2. package/skills/(architecture)/component-common-domain-detection/QUICK-REFERENCE.md +169 -0
  3. package/skills/(architecture)/component-common-domain-detection/README.md +656 -0
  4. package/skills/(architecture)/component-common-domain-detection/SKILL.md +606 -0
  5. package/skills/(architecture)/component-flattening-analysis/QUICK-REFERENCE.md +217 -0
  6. package/skills/(architecture)/component-flattening-analysis/README.md +661 -0
  7. package/skills/(architecture)/component-flattening-analysis/SKILL.md +693 -0
  8. package/skills/(architecture)/component-identification-sizing/QUICK-REFERENCE.md +82 -0
  9. package/skills/(architecture)/component-identification-sizing/README.md +589 -0
  10. package/skills/(architecture)/component-identification-sizing/SKILL.md +434 -0
  11. package/skills/(architecture)/coupling-analysis/SKILL.md +426 -0
  12. package/skills/(architecture)/decomposition-planning-roadmap/QUICK-REFERENCE.md +181 -0
  13. package/skills/(architecture)/decomposition-planning-roadmap/README.md +639 -0
  14. package/skills/(architecture)/decomposition-planning-roadmap/SKILL.md +640 -0
  15. package/skills/(architecture)/domain-analysis/EXAMPLES.md +430 -0
  16. package/skills/(architecture)/domain-analysis/QUICK-REFERENCE.md +423 -0
  17. package/skills/(architecture)/domain-analysis/README.md +311 -0
  18. package/skills/(architecture)/domain-analysis/SKILL.md +435 -0
  19. package/skills/(architecture)/domain-identification-grouping/QUICK-REFERENCE.md +181 -0
  20. package/skills/(architecture)/domain-identification-grouping/README.md +661 -0
  21. package/skills/(architecture)/domain-identification-grouping/SKILL.md +731 -0
  22. package/skills/(architecture)/evolutionary-modular-architecture/SKILL.md +188 -0
  23. package/skills/(architecture)/evolutionary-modular-architecture/assets/architecture-template.html +346 -0
  24. package/skills/(architecture)/evolutionary-modular-architecture/references/acl-and-communication.md +45 -0
  25. package/skills/(architecture)/evolutionary-modular-architecture/references/architecture-doc.md +93 -0
  26. package/skills/(architecture)/evolutionary-modular-architecture/references/ddd.md +74 -0
  27. package/skills/(architecture)/evolutionary-modular-architecture/references/flat-by-aggregate.md +115 -0
  28. package/skills/(architecture)/evolutionary-modular-architecture/references/principles.md +59 -0
  29. package/skills/(architecture)/evolutionary-modular-architecture/references/resilience.md +54 -0
  30. package/skills/(architecture)/evolutionary-modular-architecture/references/stack-2026.md +64 -0
  31. package/skills/(architecture)/evolutionary-modular-architecture/scripts/validate-boundaries.mjs +101 -0
  32. package/skills/(architecture)/evolutionary-modular-architecture/scripts/validate-structure.mjs +96 -0
  33. package/skills/(architecture)/frontend-blueprint/SKILL.md +466 -0
  34. package/skills/(architecture)/frontend-blueprint/references/collection-guide.md +237 -0
  35. package/skills/(architecture)/frontend-blueprint/references/design-principles.md +347 -0
  36. package/skills/(architecture)/frontend-blueprint/references/stitch-integration.md +722 -0
  37. package/skills/(architecture)/legacy-migration-planner/SKILL.md +107 -0
  38. package/skills/(architecture)/legacy-migration-planner/references/assessment-framework.md +200 -0
  39. package/skills/(architecture)/legacy-migration-planner/references/frontend-backend-strategies.md +236 -0
  40. package/skills/(architecture)/legacy-migration-planner/references/plan-phase.md +223 -0
  41. package/skills/(architecture)/legacy-migration-planner/references/research-phase.md +181 -0
  42. package/skills/(architecture)/legacy-migration-planner/references/strangler-fig-patterns.md +190 -0
  43. package/skills/(architecture)/legacy-migration-planner/references/testing-safety-nets.md +244 -0
  44. package/skills/(architecture)/modular-decomposition/SKILL.md +78 -0
  45. package/skills/(architecture)/modular-decomposition/references/domain-analysis-examples.md +430 -0
  46. package/skills/(architecture)/modular-decomposition/references/domain-analysis-quick-reference.md +423 -0
  47. package/skills/(architecture)/modular-decomposition/references/domain-analysis.md +432 -0
  48. package/skills/(architecture)/modular-decomposition/references/pattern-01-identify-and-size-quick-reference.md +82 -0
  49. package/skills/(architecture)/modular-decomposition/references/pattern-01-identify-and-size.md +429 -0
  50. package/skills/(architecture)/modular-decomposition/references/pattern-02-common-domain-quick-reference.md +169 -0
  51. package/skills/(architecture)/modular-decomposition/references/pattern-02-common-domain.md +601 -0
  52. package/skills/(architecture)/modular-decomposition/references/pattern-03-flattening-quick-reference.md +217 -0
  53. package/skills/(architecture)/modular-decomposition/references/pattern-03-flattening.md +688 -0
  54. package/skills/(architecture)/modular-decomposition/references/pattern-04-coupling.md +421 -0
  55. package/skills/(architecture)/modular-decomposition/references/pattern-05-domain-grouping-quick-reference.md +181 -0
  56. package/skills/(architecture)/modular-decomposition/references/pattern-05-domain-grouping.md +726 -0
  57. package/skills/(architecture)/modular-design-principles/SKILL.md +188 -0
  58. package/skills/(architecture)/modular-design-principles/references/principles.md +134 -0
  59. package/skills/(architecture)/react-composition-patterns/AGENTS.md +946 -0
  60. package/skills/(architecture)/react-composition-patterns/README.md +60 -0
  61. package/skills/(architecture)/react-composition-patterns/SKILL.md +84 -0
  62. package/skills/(architecture)/react-composition-patterns/rules/_sections.md +29 -0
  63. package/skills/(architecture)/react-composition-patterns/rules/_template.md +24 -0
  64. package/skills/(architecture)/react-composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
  65. package/skills/(architecture)/react-composition-patterns/rules/architecture-compound-components.md +112 -0
  66. package/skills/(architecture)/react-composition-patterns/rules/patterns-children-over-render-props.md +87 -0
  67. package/skills/(architecture)/react-composition-patterns/rules/patterns-explicit-variants.md +100 -0
  68. package/skills/(architecture)/react-composition-patterns/rules/react19-no-forwardref.md +42 -0
  69. package/skills/(architecture)/react-composition-patterns/rules/state-context-interface.md +191 -0
  70. package/skills/(architecture)/react-composition-patterns/rules/state-decouple-implementation.md +113 -0
  71. package/skills/(architecture)/react-composition-patterns/rules/state-lift-state.md +125 -0
  72. package/skills/(architecture)/tactical-ddd/SKILL.md +87 -0
  73. package/skills/(architecture)/tactical-ddd/detection.md +78 -0
  74. package/skills/(architecture)/tactical-ddd/refactoring.md +191 -0
  75. package/skills/(architecture)/tactical-ddd/reference.md +193 -0
  76. package/skills/(cloud)/aws-advisor/SKILL.md +211 -0
  77. package/skills/(cloud)/aws-advisor/references/checklists.md +267 -0
  78. package/skills/(cloud)/aws-advisor/references/decision-trees.md +217 -0
  79. package/skills/(cloud)/aws-advisor/references/mcp-guide.md +161 -0
  80. package/skills/(cloud)/aws-advisor/scripts/architecture_validator.py +312 -0
  81. package/skills/(cloud)/aws-advisor/scripts/cost_considerations.py +330 -0
  82. package/skills/(cloud)/aws-advisor/scripts/generate_diagram.py +368 -0
  83. package/skills/(cloud)/aws-advisor/scripts/security_review.py +244 -0
  84. package/skills/(cloud)/aws-advisor/scripts/well_architected_review.py +325 -0
  85. package/skills/(cloud)/cloudflare-deploy/LICENSE.txt +201 -0
  86. package/skills/(cloud)/cloudflare-deploy/SKILL.md +238 -0
  87. package/skills/(cloud)/cloudflare-deploy/references/agents-sdk/README.md +95 -0
  88. package/skills/(cloud)/cloudflare-deploy/references/agents-sdk/api.md +190 -0
  89. package/skills/(cloud)/cloudflare-deploy/references/agents-sdk/configuration.md +178 -0
  90. package/skills/(cloud)/cloudflare-deploy/references/agents-sdk/gotchas.md +173 -0
  91. package/skills/(cloud)/cloudflare-deploy/references/agents-sdk/patterns.md +200 -0
  92. package/skills/(cloud)/cloudflare-deploy/references/ai-gateway/README.md +176 -0
  93. package/skills/(cloud)/cloudflare-deploy/references/ai-gateway/configuration.md +117 -0
  94. package/skills/(cloud)/cloudflare-deploy/references/ai-gateway/dynamic-routing.md +88 -0
  95. package/skills/(cloud)/cloudflare-deploy/references/ai-gateway/features.md +96 -0
  96. package/skills/(cloud)/cloudflare-deploy/references/ai-gateway/sdk-integration.md +110 -0
  97. package/skills/(cloud)/cloudflare-deploy/references/ai-gateway/troubleshooting.md +90 -0
  98. package/skills/(cloud)/cloudflare-deploy/references/ai-search/README.md +145 -0
  99. package/skills/(cloud)/cloudflare-deploy/references/ai-search/api.md +87 -0
  100. package/skills/(cloud)/cloudflare-deploy/references/ai-search/configuration.md +91 -0
  101. package/skills/(cloud)/cloudflare-deploy/references/ai-search/gotchas.md +92 -0
  102. package/skills/(cloud)/cloudflare-deploy/references/ai-search/patterns.md +87 -0
  103. package/skills/(cloud)/cloudflare-deploy/references/analytics-engine/README.md +94 -0
  104. package/skills/(cloud)/cloudflare-deploy/references/analytics-engine/api.md +112 -0
  105. package/skills/(cloud)/cloudflare-deploy/references/analytics-engine/configuration.md +107 -0
  106. package/skills/(cloud)/cloudflare-deploy/references/analytics-engine/gotchas.md +87 -0
  107. package/skills/(cloud)/cloudflare-deploy/references/analytics-engine/patterns.md +83 -0
  108. package/skills/(cloud)/cloudflare-deploy/references/api/README.md +65 -0
  109. package/skills/(cloud)/cloudflare-deploy/references/api/api.md +205 -0
  110. package/skills/(cloud)/cloudflare-deploy/references/api/configuration.md +158 -0
  111. package/skills/(cloud)/cloudflare-deploy/references/api/gotchas.md +231 -0
  112. package/skills/(cloud)/cloudflare-deploy/references/api/patterns.md +208 -0
  113. package/skills/(cloud)/cloudflare-deploy/references/api-shield/README.md +44 -0
  114. package/skills/(cloud)/cloudflare-deploy/references/api-shield/api.md +150 -0
  115. package/skills/(cloud)/cloudflare-deploy/references/api-shield/configuration.md +210 -0
  116. package/skills/(cloud)/cloudflare-deploy/references/api-shield/gotchas.md +132 -0
  117. package/skills/(cloud)/cloudflare-deploy/references/api-shield/patterns.md +185 -0
  118. package/skills/(cloud)/cloudflare-deploy/references/argo-smart-routing/README.md +96 -0
  119. package/skills/(cloud)/cloudflare-deploy/references/argo-smart-routing/api.md +253 -0
  120. package/skills/(cloud)/cloudflare-deploy/references/argo-smart-routing/configuration.md +205 -0
  121. package/skills/(cloud)/cloudflare-deploy/references/argo-smart-routing/gotchas.md +115 -0
  122. package/skills/(cloud)/cloudflare-deploy/references/argo-smart-routing/patterns.md +107 -0
  123. package/skills/(cloud)/cloudflare-deploy/references/bindings/README.md +127 -0
  124. package/skills/(cloud)/cloudflare-deploy/references/bindings/api.md +214 -0
  125. package/skills/(cloud)/cloudflare-deploy/references/bindings/configuration.md +200 -0
  126. package/skills/(cloud)/cloudflare-deploy/references/bindings/gotchas.md +210 -0
  127. package/skills/(cloud)/cloudflare-deploy/references/bindings/patterns.md +205 -0
  128. package/skills/(cloud)/cloudflare-deploy/references/bot-management/README.md +95 -0
  129. package/skills/(cloud)/cloudflare-deploy/references/bot-management/api.md +175 -0
  130. package/skills/(cloud)/cloudflare-deploy/references/bot-management/configuration.md +175 -0
  131. package/skills/(cloud)/cloudflare-deploy/references/bot-management/gotchas.md +116 -0
  132. package/skills/(cloud)/cloudflare-deploy/references/bot-management/patterns.md +181 -0
  133. package/skills/(cloud)/cloudflare-deploy/references/browser-rendering/README.md +84 -0
  134. package/skills/(cloud)/cloudflare-deploy/references/browser-rendering/api.md +108 -0
  135. package/skills/(cloud)/cloudflare-deploy/references/browser-rendering/configuration.md +78 -0
  136. package/skills/(cloud)/cloudflare-deploy/references/browser-rendering/gotchas.md +91 -0
  137. package/skills/(cloud)/cloudflare-deploy/references/browser-rendering/patterns.md +93 -0
  138. package/skills/(cloud)/cloudflare-deploy/references/c3/README.md +111 -0
  139. package/skills/(cloud)/cloudflare-deploy/references/c3/api.md +71 -0
  140. package/skills/(cloud)/cloudflare-deploy/references/c3/configuration.md +85 -0
  141. package/skills/(cloud)/cloudflare-deploy/references/c3/gotchas.md +97 -0
  142. package/skills/(cloud)/cloudflare-deploy/references/c3/patterns.md +84 -0
  143. package/skills/(cloud)/cloudflare-deploy/references/cache-reserve/README.md +150 -0
  144. package/skills/(cloud)/cloudflare-deploy/references/cache-reserve/api.md +181 -0
  145. package/skills/(cloud)/cloudflare-deploy/references/cache-reserve/configuration.md +170 -0
  146. package/skills/(cloud)/cloudflare-deploy/references/cache-reserve/gotchas.md +136 -0
  147. package/skills/(cloud)/cloudflare-deploy/references/cache-reserve/patterns.md +192 -0
  148. package/skills/(cloud)/cloudflare-deploy/references/containers/README.md +87 -0
  149. package/skills/(cloud)/cloudflare-deploy/references/containers/api.md +197 -0
  150. package/skills/(cloud)/cloudflare-deploy/references/containers/configuration.md +191 -0
  151. package/skills/(cloud)/cloudflare-deploy/references/containers/gotchas.md +182 -0
  152. package/skills/(cloud)/cloudflare-deploy/references/containers/patterns.md +204 -0
  153. package/skills/(cloud)/cloudflare-deploy/references/cron-triggers/README.md +101 -0
  154. package/skills/(cloud)/cloudflare-deploy/references/cron-triggers/api.md +213 -0
  155. package/skills/(cloud)/cloudflare-deploy/references/cron-triggers/configuration.md +190 -0
  156. package/skills/(cloud)/cloudflare-deploy/references/cron-triggers/gotchas.md +207 -0
  157. package/skills/(cloud)/cloudflare-deploy/references/cron-triggers/patterns.md +245 -0
  158. package/skills/(cloud)/cloudflare-deploy/references/d1/README.md +135 -0
  159. package/skills/(cloud)/cloudflare-deploy/references/d1/api.md +202 -0
  160. package/skills/(cloud)/cloudflare-deploy/references/d1/configuration.md +198 -0
  161. package/skills/(cloud)/cloudflare-deploy/references/d1/gotchas.md +98 -0
  162. package/skills/(cloud)/cloudflare-deploy/references/d1/patterns.md +226 -0
  163. package/skills/(cloud)/cloudflare-deploy/references/ddos/README.md +42 -0
  164. package/skills/(cloud)/cloudflare-deploy/references/ddos/api.md +158 -0
  165. package/skills/(cloud)/cloudflare-deploy/references/ddos/configuration.md +94 -0
  166. package/skills/(cloud)/cloudflare-deploy/references/ddos/gotchas.md +111 -0
  167. package/skills/(cloud)/cloudflare-deploy/references/ddos/patterns.md +209 -0
  168. package/skills/(cloud)/cloudflare-deploy/references/do-storage/README.md +79 -0
  169. package/skills/(cloud)/cloudflare-deploy/references/do-storage/api.md +107 -0
  170. package/skills/(cloud)/cloudflare-deploy/references/do-storage/configuration.md +114 -0
  171. package/skills/(cloud)/cloudflare-deploy/references/do-storage/gotchas.md +153 -0
  172. package/skills/(cloud)/cloudflare-deploy/references/do-storage/patterns.md +189 -0
  173. package/skills/(cloud)/cloudflare-deploy/references/do-storage/testing.md +182 -0
  174. package/skills/(cloud)/cloudflare-deploy/references/durable-objects/README.md +194 -0
  175. package/skills/(cloud)/cloudflare-deploy/references/durable-objects/api.md +205 -0
  176. package/skills/(cloud)/cloudflare-deploy/references/durable-objects/configuration.md +160 -0
  177. package/skills/(cloud)/cloudflare-deploy/references/durable-objects/gotchas.md +200 -0
  178. package/skills/(cloud)/cloudflare-deploy/references/durable-objects/patterns.md +205 -0
  179. package/skills/(cloud)/cloudflare-deploy/references/email-routing/README.md +89 -0
  180. package/skills/(cloud)/cloudflare-deploy/references/email-routing/api.md +192 -0
  181. package/skills/(cloud)/cloudflare-deploy/references/email-routing/configuration.md +187 -0
  182. package/skills/(cloud)/cloudflare-deploy/references/email-routing/gotchas.md +203 -0
  183. package/skills/(cloud)/cloudflare-deploy/references/email-routing/patterns.md +241 -0
  184. package/skills/(cloud)/cloudflare-deploy/references/email-workers/README.md +153 -0
  185. package/skills/(cloud)/cloudflare-deploy/references/email-workers/api.md +227 -0
  186. package/skills/(cloud)/cloudflare-deploy/references/email-workers/configuration.md +115 -0
  187. package/skills/(cloud)/cloudflare-deploy/references/email-workers/gotchas.md +133 -0
  188. package/skills/(cloud)/cloudflare-deploy/references/email-workers/patterns.md +108 -0
  189. package/skills/(cloud)/cloudflare-deploy/references/hyperdrive/README.md +84 -0
  190. package/skills/(cloud)/cloudflare-deploy/references/hyperdrive/api.md +149 -0
  191. package/skills/(cloud)/cloudflare-deploy/references/hyperdrive/configuration.md +166 -0
  192. package/skills/(cloud)/cloudflare-deploy/references/hyperdrive/gotchas.md +77 -0
  193. package/skills/(cloud)/cloudflare-deploy/references/hyperdrive/patterns.md +201 -0
  194. package/skills/(cloud)/cloudflare-deploy/references/images/README.md +65 -0
  195. package/skills/(cloud)/cloudflare-deploy/references/images/api.md +98 -0
  196. package/skills/(cloud)/cloudflare-deploy/references/images/configuration.md +203 -0
  197. package/skills/(cloud)/cloudflare-deploy/references/images/gotchas.md +106 -0
  198. package/skills/(cloud)/cloudflare-deploy/references/images/patterns.md +120 -0
  199. package/skills/(cloud)/cloudflare-deploy/references/kv/README.md +90 -0
  200. package/skills/(cloud)/cloudflare-deploy/references/kv/api.md +163 -0
  201. package/skills/(cloud)/cloudflare-deploy/references/kv/configuration.md +148 -0
  202. package/skills/(cloud)/cloudflare-deploy/references/kv/gotchas.md +128 -0
  203. package/skills/(cloud)/cloudflare-deploy/references/kv/patterns.md +195 -0
  204. package/skills/(cloud)/cloudflare-deploy/references/miniflare/README.md +113 -0
  205. package/skills/(cloud)/cloudflare-deploy/references/miniflare/api.md +202 -0
  206. package/skills/(cloud)/cloudflare-deploy/references/miniflare/configuration.md +174 -0
  207. package/skills/(cloud)/cloudflare-deploy/references/miniflare/gotchas.md +179 -0
  208. package/skills/(cloud)/cloudflare-deploy/references/miniflare/patterns.md +182 -0
  209. package/skills/(cloud)/cloudflare-deploy/references/network-interconnect/README.md +104 -0
  210. package/skills/(cloud)/cloudflare-deploy/references/network-interconnect/api.md +210 -0
  211. package/skills/(cloud)/cloudflare-deploy/references/network-interconnect/configuration.md +123 -0
  212. package/skills/(cloud)/cloudflare-deploy/references/network-interconnect/gotchas.md +175 -0
  213. package/skills/(cloud)/cloudflare-deploy/references/network-interconnect/patterns.md +174 -0
  214. package/skills/(cloud)/cloudflare-deploy/references/observability/README.md +92 -0
  215. package/skills/(cloud)/cloudflare-deploy/references/observability/api.md +164 -0
  216. package/skills/(cloud)/cloudflare-deploy/references/observability/configuration.md +176 -0
  217. package/skills/(cloud)/cloudflare-deploy/references/observability/gotchas.md +125 -0
  218. package/skills/(cloud)/cloudflare-deploy/references/observability/patterns.md +105 -0
  219. package/skills/(cloud)/cloudflare-deploy/references/pages/README.md +92 -0
  220. package/skills/(cloud)/cloudflare-deploy/references/pages/api.md +205 -0
  221. package/skills/(cloud)/cloudflare-deploy/references/pages/configuration.md +212 -0
  222. package/skills/(cloud)/cloudflare-deploy/references/pages/gotchas.md +218 -0
  223. package/skills/(cloud)/cloudflare-deploy/references/pages/patterns.md +215 -0
  224. package/skills/(cloud)/cloudflare-deploy/references/pages-functions/README.md +104 -0
  225. package/skills/(cloud)/cloudflare-deploy/references/pages-functions/api.md +159 -0
  226. package/skills/(cloud)/cloudflare-deploy/references/pages-functions/configuration.md +128 -0
  227. package/skills/(cloud)/cloudflare-deploy/references/pages-functions/gotchas.md +102 -0
  228. package/skills/(cloud)/cloudflare-deploy/references/pages-functions/patterns.md +148 -0
  229. package/skills/(cloud)/cloudflare-deploy/references/pipelines/README.md +109 -0
  230. package/skills/(cloud)/cloudflare-deploy/references/pipelines/api.md +214 -0
  231. package/skills/(cloud)/cloudflare-deploy/references/pipelines/configuration.md +98 -0
  232. package/skills/(cloud)/cloudflare-deploy/references/pipelines/gotchas.md +84 -0
  233. package/skills/(cloud)/cloudflare-deploy/references/pipelines/patterns.md +87 -0
  234. package/skills/(cloud)/cloudflare-deploy/references/pulumi/README.md +111 -0
  235. package/skills/(cloud)/cloudflare-deploy/references/pulumi/api.md +227 -0
  236. package/skills/(cloud)/cloudflare-deploy/references/pulumi/configuration.md +213 -0
  237. package/skills/(cloud)/cloudflare-deploy/references/pulumi/gotchas.md +205 -0
  238. package/skills/(cloud)/cloudflare-deploy/references/pulumi/patterns.md +256 -0
  239. package/skills/(cloud)/cloudflare-deploy/references/queues/README.md +99 -0
  240. package/skills/(cloud)/cloudflare-deploy/references/queues/api.md +204 -0
  241. package/skills/(cloud)/cloudflare-deploy/references/queues/configuration.md +151 -0
  242. package/skills/(cloud)/cloudflare-deploy/references/queues/gotchas.md +210 -0
  243. package/skills/(cloud)/cloudflare-deploy/references/queues/patterns.md +220 -0
  244. package/skills/(cloud)/cloudflare-deploy/references/r2/README.md +97 -0
  245. package/skills/(cloud)/cloudflare-deploy/references/r2/api.md +230 -0
  246. package/skills/(cloud)/cloudflare-deploy/references/r2/configuration.md +176 -0
  247. package/skills/(cloud)/cloudflare-deploy/references/r2/gotchas.md +190 -0
  248. package/skills/(cloud)/cloudflare-deploy/references/r2/patterns.md +196 -0
  249. package/skills/(cloud)/cloudflare-deploy/references/r2-data-catalog/README.md +157 -0
  250. package/skills/(cloud)/cloudflare-deploy/references/r2-data-catalog/api.md +199 -0
  251. package/skills/(cloud)/cloudflare-deploy/references/r2-data-catalog/configuration.md +205 -0
  252. package/skills/(cloud)/cloudflare-deploy/references/r2-data-catalog/gotchas.md +170 -0
  253. package/skills/(cloud)/cloudflare-deploy/references/r2-data-catalog/patterns.md +191 -0
  254. package/skills/(cloud)/cloudflare-deploy/references/r2-sql/README.md +138 -0
  255. package/skills/(cloud)/cloudflare-deploy/references/r2-sql/api.md +159 -0
  256. package/skills/(cloud)/cloudflare-deploy/references/r2-sql/configuration.md +152 -0
  257. package/skills/(cloud)/cloudflare-deploy/references/r2-sql/gotchas.md +228 -0
  258. package/skills/(cloud)/cloudflare-deploy/references/r2-sql/patterns.md +230 -0
  259. package/skills/(cloud)/cloudflare-deploy/references/realtime-sfu/README.md +66 -0
  260. package/skills/(cloud)/cloudflare-deploy/references/realtime-sfu/api.md +164 -0
  261. package/skills/(cloud)/cloudflare-deploy/references/realtime-sfu/configuration.md +141 -0
  262. package/skills/(cloud)/cloudflare-deploy/references/realtime-sfu/gotchas.md +138 -0
  263. package/skills/(cloud)/cloudflare-deploy/references/realtime-sfu/patterns.md +187 -0
  264. package/skills/(cloud)/cloudflare-deploy/references/realtimekit/README.md +118 -0
  265. package/skills/(cloud)/cloudflare-deploy/references/realtimekit/api.md +233 -0
  266. package/skills/(cloud)/cloudflare-deploy/references/realtimekit/configuration.md +224 -0
  267. package/skills/(cloud)/cloudflare-deploy/references/realtimekit/gotchas.md +201 -0
  268. package/skills/(cloud)/cloudflare-deploy/references/realtimekit/patterns.md +237 -0
  269. package/skills/(cloud)/cloudflare-deploy/references/sandbox/README.md +104 -0
  270. package/skills/(cloud)/cloudflare-deploy/references/sandbox/api.md +200 -0
  271. package/skills/(cloud)/cloudflare-deploy/references/sandbox/configuration.md +154 -0
  272. package/skills/(cloud)/cloudflare-deploy/references/sandbox/gotchas.md +201 -0
  273. package/skills/(cloud)/cloudflare-deploy/references/sandbox/patterns.md +195 -0
  274. package/skills/(cloud)/cloudflare-deploy/references/secrets-store/README.md +77 -0
  275. package/skills/(cloud)/cloudflare-deploy/references/secrets-store/api.md +192 -0
  276. package/skills/(cloud)/cloudflare-deploy/references/secrets-store/configuration.md +183 -0
  277. package/skills/(cloud)/cloudflare-deploy/references/secrets-store/gotchas.md +97 -0
  278. package/skills/(cloud)/cloudflare-deploy/references/secrets-store/patterns.md +204 -0
  279. package/skills/(cloud)/cloudflare-deploy/references/smart-placement/README.md +143 -0
  280. package/skills/(cloud)/cloudflare-deploy/references/smart-placement/api.md +188 -0
  281. package/skills/(cloud)/cloudflare-deploy/references/smart-placement/configuration.md +202 -0
  282. package/skills/(cloud)/cloudflare-deploy/references/smart-placement/gotchas.md +180 -0
  283. package/skills/(cloud)/cloudflare-deploy/references/smart-placement/patterns.md +185 -0
  284. package/skills/(cloud)/cloudflare-deploy/references/snippets/README.md +74 -0
  285. package/skills/(cloud)/cloudflare-deploy/references/snippets/api.md +214 -0
  286. package/skills/(cloud)/cloudflare-deploy/references/snippets/configuration.md +239 -0
  287. package/skills/(cloud)/cloudflare-deploy/references/snippets/gotchas.md +104 -0
  288. package/skills/(cloud)/cloudflare-deploy/references/snippets/patterns.md +135 -0
  289. package/skills/(cloud)/cloudflare-deploy/references/spectrum/README.md +52 -0
  290. package/skills/(cloud)/cloudflare-deploy/references/spectrum/api.md +184 -0
  291. package/skills/(cloud)/cloudflare-deploy/references/spectrum/configuration.md +203 -0
  292. package/skills/(cloud)/cloudflare-deploy/references/spectrum/gotchas.md +155 -0
  293. package/skills/(cloud)/cloudflare-deploy/references/spectrum/patterns.md +206 -0
  294. package/skills/(cloud)/cloudflare-deploy/references/static-assets/README.md +65 -0
  295. package/skills/(cloud)/cloudflare-deploy/references/static-assets/api.md +201 -0
  296. package/skills/(cloud)/cloudflare-deploy/references/static-assets/configuration.md +186 -0
  297. package/skills/(cloud)/cloudflare-deploy/references/static-assets/gotchas.md +164 -0
  298. package/skills/(cloud)/cloudflare-deploy/references/static-assets/patterns.md +189 -0
  299. package/skills/(cloud)/cloudflare-deploy/references/stream/README.md +123 -0
  300. package/skills/(cloud)/cloudflare-deploy/references/stream/api-live.md +178 -0
  301. package/skills/(cloud)/cloudflare-deploy/references/stream/api.md +191 -0
  302. package/skills/(cloud)/cloudflare-deploy/references/stream/configuration.md +151 -0
  303. package/skills/(cloud)/cloudflare-deploy/references/stream/gotchas.md +139 -0
  304. package/skills/(cloud)/cloudflare-deploy/references/stream/patterns.md +213 -0
  305. package/skills/(cloud)/cloudflare-deploy/references/tail-workers/README.md +92 -0
  306. package/skills/(cloud)/cloudflare-deploy/references/tail-workers/api.md +203 -0
  307. package/skills/(cloud)/cloudflare-deploy/references/tail-workers/configuration.md +178 -0
  308. package/skills/(cloud)/cloudflare-deploy/references/tail-workers/gotchas.md +206 -0
  309. package/skills/(cloud)/cloudflare-deploy/references/tail-workers/patterns.md +190 -0
  310. package/skills/(cloud)/cloudflare-deploy/references/terraform/README.md +100 -0
  311. package/skills/(cloud)/cloudflare-deploy/references/terraform/api.md +178 -0
  312. package/skills/(cloud)/cloudflare-deploy/references/terraform/configuration.md +197 -0
  313. package/skills/(cloud)/cloudflare-deploy/references/terraform/gotchas.md +150 -0
  314. package/skills/(cloud)/cloudflare-deploy/references/terraform/patterns.md +174 -0
  315. package/skills/(cloud)/cloudflare-deploy/references/tunnel/README.md +137 -0
  316. package/skills/(cloud)/cloudflare-deploy/references/tunnel/api.md +202 -0
  317. package/skills/(cloud)/cloudflare-deploy/references/tunnel/configuration.md +163 -0
  318. package/skills/(cloud)/cloudflare-deploy/references/tunnel/gotchas.md +159 -0
  319. package/skills/(cloud)/cloudflare-deploy/references/tunnel/networking.md +174 -0
  320. package/skills/(cloud)/cloudflare-deploy/references/tunnel/patterns.md +196 -0
  321. package/skills/(cloud)/cloudflare-deploy/references/turn/README.md +86 -0
  322. package/skills/(cloud)/cloudflare-deploy/references/turn/api.md +233 -0
  323. package/skills/(cloud)/cloudflare-deploy/references/turn/configuration.md +181 -0
  324. package/skills/(cloud)/cloudflare-deploy/references/turn/gotchas.md +236 -0
  325. package/skills/(cloud)/cloudflare-deploy/references/turn/patterns.md +211 -0
  326. package/skills/(cloud)/cloudflare-deploy/references/turnstile/README.md +102 -0
  327. package/skills/(cloud)/cloudflare-deploy/references/turnstile/api.md +253 -0
  328. package/skills/(cloud)/cloudflare-deploy/references/turnstile/configuration.md +242 -0
  329. package/skills/(cloud)/cloudflare-deploy/references/turnstile/gotchas.md +250 -0
  330. package/skills/(cloud)/cloudflare-deploy/references/turnstile/patterns.md +192 -0
  331. package/skills/(cloud)/cloudflare-deploy/references/vectorize/README.md +131 -0
  332. package/skills/(cloud)/cloudflare-deploy/references/vectorize/api.md +89 -0
  333. package/skills/(cloud)/cloudflare-deploy/references/vectorize/configuration.md +91 -0
  334. package/skills/(cloud)/cloudflare-deploy/references/vectorize/gotchas.md +83 -0
  335. package/skills/(cloud)/cloudflare-deploy/references/vectorize/patterns.md +90 -0
  336. package/skills/(cloud)/cloudflare-deploy/references/waf/README.md +125 -0
  337. package/skills/(cloud)/cloudflare-deploy/references/waf/api.md +203 -0
  338. package/skills/(cloud)/cloudflare-deploy/references/waf/configuration.md +215 -0
  339. package/skills/(cloud)/cloudflare-deploy/references/waf/gotchas.md +208 -0
  340. package/skills/(cloud)/cloudflare-deploy/references/waf/patterns.md +227 -0
  341. package/skills/(cloud)/cloudflare-deploy/references/web-analytics/README.md +148 -0
  342. package/skills/(cloud)/cloudflare-deploy/references/web-analytics/configuration.md +81 -0
  343. package/skills/(cloud)/cloudflare-deploy/references/web-analytics/gotchas.md +86 -0
  344. package/skills/(cloud)/cloudflare-deploy/references/web-analytics/integration.md +63 -0
  345. package/skills/(cloud)/cloudflare-deploy/references/web-analytics/patterns.md +98 -0
  346. package/skills/(cloud)/cloudflare-deploy/references/workerd/README.md +85 -0
  347. package/skills/(cloud)/cloudflare-deploy/references/workerd/api.md +219 -0
  348. package/skills/(cloud)/cloudflare-deploy/references/workerd/configuration.md +200 -0
  349. package/skills/(cloud)/cloudflare-deploy/references/workerd/gotchas.md +151 -0
  350. package/skills/(cloud)/cloudflare-deploy/references/workerd/patterns.md +205 -0
  351. package/skills/(cloud)/cloudflare-deploy/references/workers/README.md +110 -0
  352. package/skills/(cloud)/cloudflare-deploy/references/workers/api.md +197 -0
  353. package/skills/(cloud)/cloudflare-deploy/references/workers/configuration.md +184 -0
  354. package/skills/(cloud)/cloudflare-deploy/references/workers/frameworks.md +197 -0
  355. package/skills/(cloud)/cloudflare-deploy/references/workers/gotchas.md +142 -0
  356. package/skills/(cloud)/cloudflare-deploy/references/workers/patterns.md +220 -0
  357. package/skills/(cloud)/cloudflare-deploy/references/workers-ai/README.md +206 -0
  358. package/skills/(cloud)/cloudflare-deploy/references/workers-ai/api.md +115 -0
  359. package/skills/(cloud)/cloudflare-deploy/references/workers-ai/configuration.md +98 -0
  360. package/skills/(cloud)/cloudflare-deploy/references/workers-ai/gotchas.md +130 -0
  361. package/skills/(cloud)/cloudflare-deploy/references/workers-ai/patterns.md +122 -0
  362. package/skills/(cloud)/cloudflare-deploy/references/workers-for-platforms/README.md +95 -0
  363. package/skills/(cloud)/cloudflare-deploy/references/workers-for-platforms/api.md +208 -0
  364. package/skills/(cloud)/cloudflare-deploy/references/workers-for-platforms/configuration.md +178 -0
  365. package/skills/(cloud)/cloudflare-deploy/references/workers-for-platforms/gotchas.md +134 -0
  366. package/skills/(cloud)/cloudflare-deploy/references/workers-for-platforms/patterns.md +210 -0
  367. package/skills/(cloud)/cloudflare-deploy/references/workers-playground/README.md +131 -0
  368. package/skills/(cloud)/cloudflare-deploy/references/workers-playground/api.md +101 -0
  369. package/skills/(cloud)/cloudflare-deploy/references/workers-playground/configuration.md +169 -0
  370. package/skills/(cloud)/cloudflare-deploy/references/workers-playground/gotchas.md +88 -0
  371. package/skills/(cloud)/cloudflare-deploy/references/workers-playground/patterns.md +134 -0
  372. package/skills/(cloud)/cloudflare-deploy/references/workers-vpc/README.md +127 -0
  373. package/skills/(cloud)/cloudflare-deploy/references/workers-vpc/api.md +196 -0
  374. package/skills/(cloud)/cloudflare-deploy/references/workers-vpc/configuration.md +151 -0
  375. package/skills/(cloud)/cloudflare-deploy/references/workers-vpc/gotchas.md +171 -0
  376. package/skills/(cloud)/cloudflare-deploy/references/workers-vpc/patterns.md +221 -0
  377. package/skills/(cloud)/cloudflare-deploy/references/workflows/README.md +70 -0
  378. package/skills/(cloud)/cloudflare-deploy/references/workflows/api.md +227 -0
  379. package/skills/(cloud)/cloudflare-deploy/references/workflows/configuration.md +158 -0
  380. package/skills/(cloud)/cloudflare-deploy/references/workflows/gotchas.md +97 -0
  381. package/skills/(cloud)/cloudflare-deploy/references/workflows/patterns.md +225 -0
  382. package/skills/(cloud)/cloudflare-deploy/references/wrangler/README.md +149 -0
  383. package/skills/(cloud)/cloudflare-deploy/references/wrangler/api.md +188 -0
  384. package/skills/(cloud)/cloudflare-deploy/references/wrangler/auth.md +74 -0
  385. package/skills/(cloud)/cloudflare-deploy/references/wrangler/configuration.md +198 -0
  386. package/skills/(cloud)/cloudflare-deploy/references/wrangler/gotchas.md +212 -0
  387. package/skills/(cloud)/cloudflare-deploy/references/wrangler/patterns.md +211 -0
  388. package/skills/(cloud)/cloudflare-deploy/references/zaraz/IMPLEMENTATION_SUMMARY.md +131 -0
  389. package/skills/(cloud)/cloudflare-deploy/references/zaraz/README.md +114 -0
  390. package/skills/(cloud)/cloudflare-deploy/references/zaraz/api.md +118 -0
  391. package/skills/(cloud)/cloudflare-deploy/references/zaraz/configuration.md +94 -0
  392. package/skills/(cloud)/cloudflare-deploy/references/zaraz/gotchas.md +88 -0
  393. package/skills/(cloud)/cloudflare-deploy/references/zaraz/patterns.md +77 -0
  394. package/skills/(cloud)/netlify-deploy/LICENSE.txt +201 -0
  395. package/skills/(cloud)/netlify-deploy/SKILL.md +259 -0
  396. package/skills/(cloud)/netlify-deploy/references/cli-commands.md +162 -0
  397. package/skills/(cloud)/netlify-deploy/references/deployment-patterns.md +319 -0
  398. package/skills/(cloud)/netlify-deploy/references/netlify-toml.md +259 -0
  399. package/skills/(cloud)/render-deploy/LICENSE.txt +201 -0
  400. package/skills/(cloud)/render-deploy/SKILL.md +530 -0
  401. package/skills/(cloud)/render-deploy/references/blueprint-spec.md +756 -0
  402. package/skills/(cloud)/render-deploy/references/codebase-analysis.md +55 -0
  403. package/skills/(cloud)/render-deploy/references/configuration-guide.md +659 -0
  404. package/skills/(cloud)/render-deploy/references/deployment-details.md +242 -0
  405. package/skills/(cloud)/render-deploy/references/direct-creation.md +121 -0
  406. package/skills/(cloud)/render-deploy/references/error-patterns.md +13 -0
  407. package/skills/(cloud)/render-deploy/references/post-deploy-checks.md +36 -0
  408. package/skills/(cloud)/render-deploy/references/runtimes.md +527 -0
  409. package/skills/(cloud)/render-deploy/references/service-types.md +462 -0
  410. package/skills/(cloud)/render-deploy/references/troubleshooting-basics.md +39 -0
  411. package/skills/(cloud)/vercel-deploy/LICENSE.txt +21 -0
  412. package/skills/(cloud)/vercel-deploy/SKILL.md +73 -0
  413. package/skills/(cloud)/vercel-deploy/scripts/deploy.sh +301 -0
  414. package/skills/(creation)/create-adr/README.md +264 -0
  415. package/skills/(creation)/create-adr/SKILL.md +429 -0
  416. package/skills/(creation)/create-rfc/README.md +346 -0
  417. package/skills/(creation)/create-rfc/SKILL.md +309 -0
  418. package/skills/(creation)/create-rfc/references/section-templates.md +284 -0
  419. package/skills/(creation)/create-technical-design-doc/README.md +411 -0
  420. package/skills/(creation)/create-technical-design-doc/SKILL.md +1484 -0
  421. package/skills/(creation)/cursor-subagent-creator/SKILL.md +725 -0
  422. package/skills/(creation)/skill-architect/SKILL.md +385 -0
  423. package/skills/(creation)/skill-architect/references/examples.md +256 -0
  424. package/skills/(creation)/skill-architect/references/patterns.md +317 -0
  425. package/skills/(creation)/skill-architect/references/quality-checklist.md +70 -0
  426. package/skills/(creation)/skill-architect/scripts/validate_skill.py +539 -0
  427. package/skills/(creation)/subagent-creator/SKILL.md +304 -0
  428. package/skills/(decision-making)/the-fool/SKILL.md +139 -0
  429. package/skills/(decision-making)/the-fool/references/cognitive-bias-inventory.md +103 -0
  430. package/skills/(decision-making)/the-fool/references/dialectic-synthesis.md +170 -0
  431. package/skills/(decision-making)/the-fool/references/evidence-audit.md +202 -0
  432. package/skills/(decision-making)/the-fool/references/mode-selection-guide.md +113 -0
  433. package/skills/(decision-making)/the-fool/references/pre-mortem-analysis.md +200 -0
  434. package/skills/(decision-making)/the-fool/references/red-team-adversarial.md +206 -0
  435. package/skills/(decision-making)/the-fool/references/socratic-questioning.md +153 -0
  436. package/skills/(decision-making)/the-jury/SKILL.md +237 -0
  437. package/skills/(decision-making)/the-jury/references/deliberation-craft.md +133 -0
  438. package/skills/(decision-making)/the-jury/references/juror-archetypes.md +96 -0
  439. package/skills/(decision-making)/the-jury/scripts/tally.py +259 -0
  440. package/skills/(design)/figma/LICENSE.txt +202 -0
  441. package/skills/(design)/figma/SKILL.md +51 -0
  442. package/skills/(design)/figma/references/figma-mcp-config.md +43 -0
  443. package/skills/(design)/figma/references/figma-tools-and-prompts.md +39 -0
  444. package/skills/(design)/figma-implement-design/LICENSE.txt +202 -0
  445. package/skills/(design)/figma-implement-design/SKILL.md +264 -0
  446. package/skills/(design)/frontend-design/SKILL.md +149 -0
  447. package/skills/(design)/frontend-design/references/color-and-contrast.md +132 -0
  448. package/skills/(design)/frontend-design/references/interaction-design.md +123 -0
  449. package/skills/(design)/frontend-design/references/motion-design.md +99 -0
  450. package/skills/(design)/frontend-design/references/responsive-design.md +114 -0
  451. package/skills/(design)/frontend-design/references/spatial-design.md +100 -0
  452. package/skills/(design)/frontend-design/references/typography.md +131 -0
  453. package/skills/(design)/frontend-design/references/ux-writing.md +107 -0
  454. package/skills/(design)/web-design-guidelines/SKILL.md +65 -0
  455. package/skills/(design)/web-design-guidelines/references/guideline.md +174 -0
  456. package/skills/(development)/codenavi/SKILL.md +306 -0
  457. package/skills/(development)/codenavi/references/coding-principles.md +143 -0
  458. package/skills/(development)/codenavi/references/notebook-spec.md +171 -0
  459. package/skills/(development)/coding-guidelines/SKILL.md +74 -0
  460. package/skills/(development)/confluence-assistant/SKILL.md +194 -0
  461. package/skills/(development)/docs-writer/SKILL.md +39 -0
  462. package/skills/(development)/docs-writer/references/style-guide.md +72 -0
  463. package/skills/(development)/gh-address-comments/LICENSE.txt +202 -0
  464. package/skills/(development)/gh-address-comments/SKILL.md +31 -0
  465. package/skills/(development)/gh-address-comments/scripts/fetch_comments.py +237 -0
  466. package/skills/(development)/harness-eval/SKILL.md +268 -0
  467. package/skills/(development)/harness-eval/references/GLOSSARY.md +57 -0
  468. package/skills/(development)/harness-eval/references/PROTOCOL.md +180 -0
  469. package/skills/(development)/harness-eval/references/claims.schema.json +20 -0
  470. package/skills/(development)/harness-eval/references/judge-prompts.md +177 -0
  471. package/skills/(development)/harness-eval/scripts/doc_scope.py +194 -0
  472. package/skills/(development)/harness-eval/scripts/inventory_extract.py +897 -0
  473. package/skills/(development)/harness-eval/scripts/merge_agreement.py +171 -0
  474. package/skills/(development)/harness-eval/scripts/merge_usefulness.py +439 -0
  475. package/skills/(development)/harness-eval/scripts/slim_fanin.py +199 -0
  476. package/skills/(development)/harness-eval/scripts/surfaces_extract.py +219 -0
  477. package/skills/(development)/harness-eval/scripts/track_a_correctness.py +711 -0
  478. package/skills/(development)/jira-assistant/README.md +143 -0
  479. package/skills/(development)/jira-assistant/SKILL.md +330 -0
  480. package/skills/(development)/nestjs-modular-monolith/SKILL.md +299 -0
  481. package/skills/(development)/nestjs-modular-monolith/references/architecture-patterns.md +498 -0
  482. package/skills/(development)/nestjs-modular-monolith/references/authentication.md +323 -0
  483. package/skills/(development)/nestjs-modular-monolith/references/module-communication.md +255 -0
  484. package/skills/(development)/nestjs-modular-monolith/references/stack-configuration.md +411 -0
  485. package/skills/(development)/nestjs-modular-monolith/references/state-isolation.md +295 -0
  486. package/skills/(development)/nestjs-modular-monolith/references/testing-patterns.md +345 -0
  487. package/skills/(development)/nestjs-modular-monolith/scripts/validate-isolation.sh +205 -0
  488. package/skills/(development)/not-your-babysitter/SKILL.md +176 -0
  489. package/skills/(development)/pbs-discover/SKILL.md +271 -0
  490. package/skills/(development)/pbs-discover/references/document-format.md +149 -0
  491. package/skills/(development)/pbs-implement/SKILL.md +174 -0
  492. package/skills/(development)/pbs-implement/references/checklist-format.md +116 -0
  493. package/skills/(development)/pbs-implement/references/screens.md +129 -0
  494. package/skills/(development)/pbs-implement/references/test-policy.md +152 -0
  495. package/skills/(development)/pbs-implement/references/verify.md +302 -0
  496. package/skills/(development)/pbs-plan/SKILL.md +195 -0
  497. package/skills/(development)/pbs-plan/references/document-format.md +222 -0
  498. package/skills/(development)/pbs-spec-driven/SKILL.md +184 -0
  499. package/skills/(development)/pbs-spec-driven/references/code-analysis.md +98 -0
  500. package/skills/(development)/pbs-spec-driven/references/coding-principles.md +72 -0
  501. package/skills/(development)/pbs-spec-driven/references/context-limits.md +31 -0
  502. package/skills/(development)/pbs-spec-driven/references/design.md +199 -0
  503. package/skills/(development)/pbs-spec-driven/references/discuss.md +159 -0
  504. package/skills/(development)/pbs-spec-driven/references/implement.md +436 -0
  505. package/skills/(development)/pbs-spec-driven/references/lessons.md +115 -0
  506. package/skills/(development)/pbs-spec-driven/references/memory.md +144 -0
  507. package/skills/(development)/pbs-spec-driven/references/specify.md +228 -0
  508. package/skills/(development)/pbs-spec-driven/references/sub-agents.md +147 -0
  509. package/skills/(development)/pbs-spec-driven/references/tasks.md +451 -0
  510. package/skills/(development)/pbs-spec-driven/references/validate.md +355 -0
  511. package/skills/(development)/pbs-spec-driven/scripts/check_commit.py +115 -0
  512. package/skills/(development)/pbs-spec-driven/scripts/lessons.py +412 -0
  513. package/skills/(development)/pbs-spec-driven/scripts/validate_spec.py +260 -0
  514. package/skills/(development)/pbs-spec-driven/scripts/validate_state.py +162 -0
  515. package/skills/(development)/pbs-spec-driven/scripts/validate_tasks.py +251 -0
  516. package/skills/(development)/pbs-spec-lean/SKILL.md +320 -0
  517. package/skills/(development)/pbs-spec-lean/references/build.md +168 -0
  518. package/skills/(development)/pbs-spec-lean/references/checks.md +253 -0
  519. package/skills/(development)/pbs-spec-lean/references/memory.md +156 -0
  520. package/skills/(development)/pbs-spec-lean/references/plan.md +514 -0
  521. package/skills/(development)/pbs-spec-lean/references/verify.md +334 -0
  522. package/skills/(development)/pbs-spec-lean/scripts/check_commit.py +121 -0
  523. package/skills/(development)/pbs-spec-lean/scripts/fixtures/checks.md +98 -0
  524. package/skills/(development)/pbs-spec-lean/scripts/fixtures/plan.md +119 -0
  525. package/skills/(development)/pbs-spec-lean/scripts/fixtures/verification.md +41 -0
  526. package/skills/(development)/pbs-spec-lean/scripts/lessons.py +412 -0
  527. package/skills/(development)/pbs-spec-lean/scripts/selftest.py +401 -0
  528. package/skills/(development)/pbs-spec-lean/scripts/validate_checks.py +417 -0
  529. package/skills/(development)/pbs-spec-lean/scripts/validate_plan.py +580 -0
  530. package/skills/(development)/pbs-spec-lean/scripts/validate_verification.py +357 -0
  531. package/skills/(development)/rails-dev/SKILL.md +207 -0
  532. package/skills/(development)/rails-dev/references/api.md +235 -0
  533. package/skills/(development)/rails-dev/references/async.md +46 -0
  534. package/skills/(development)/rails-dev/references/auth.md +249 -0
  535. package/skills/(development)/rails-dev/references/caching.md +144 -0
  536. package/skills/(development)/rails-dev/references/concerns.md +220 -0
  537. package/skills/(development)/rails-dev/references/crud.md +222 -0
  538. package/skills/(development)/rails-dev/references/error-handling.md +144 -0
  539. package/skills/(development)/rails-dev/references/events.md +112 -0
  540. package/skills/(development)/rails-dev/references/http-client.md +94 -0
  541. package/skills/(development)/rails-dev/references/jobs.md +221 -0
  542. package/skills/(development)/rails-dev/references/logging.md +216 -0
  543. package/skills/(development)/rails-dev/references/mailer.md +118 -0
  544. package/skills/(development)/rails-dev/references/migration.md +142 -0
  545. package/skills/(development)/rails-dev/references/model.md +490 -0
  546. package/skills/(development)/rails-dev/references/multi-tenant.md +93 -0
  547. package/skills/(development)/rails-dev/references/review.md +105 -0
  548. package/skills/(development)/rails-dev/references/routes.md +169 -0
  549. package/skills/(development)/rails-dev/references/state-records.md +251 -0
  550. package/skills/(development)/rails-dev/references/stimulus.md +125 -0
  551. package/skills/(development)/rails-dev/references/test.md +274 -0
  552. package/skills/(development)/rails-dev/references/turbo.md +131 -0
  553. package/skills/(development)/rails-dev/references/validator.md +74 -0
  554. package/skills/(development)/rails-dev/references/view.md +151 -0
  555. package/skills/(development)/rails-dev/references/webhooks.md +191 -0
  556. package/skills/(development)/react-native-expert/SKILL.md +262 -0
  557. package/skills/(development)/react-native-expert/references/expo-router.md +235 -0
  558. package/skills/(development)/react-native-expert/references/performance-rules.md +695 -0
  559. package/skills/(development)/react-native-expert/references/platform-handling.md +178 -0
  560. package/skills/(development)/react-native-expert/references/project-structure.md +172 -0
  561. package/skills/(development)/react-native-expert/references/storage-patterns.md +222 -0
  562. package/skills/(development)/shopify-developer/SKILL.md +132 -0
  563. package/skills/(development)/shopify-developer/references/api-admin.md +595 -0
  564. package/skills/(development)/shopify-developer/references/api-storefront.md +233 -0
  565. package/skills/(development)/shopify-developer/references/app-development.md +759 -0
  566. package/skills/(development)/shopify-developer/references/debugging.md +653 -0
  567. package/skills/(development)/shopify-developer/references/functions.md +303 -0
  568. package/skills/(development)/shopify-developer/references/hydrogen.md +377 -0
  569. package/skills/(development)/shopify-developer/references/liquid-filters.md +873 -0
  570. package/skills/(development)/shopify-developer/references/liquid-objects.md +695 -0
  571. package/skills/(development)/shopify-developer/references/liquid-syntax.md +603 -0
  572. package/skills/(development)/shopify-developer/references/performance.md +606 -0
  573. package/skills/(development)/shopify-developer/references/theme-development.md +1199 -0
  574. package/skills/(development)/spec-driven-eval/SKILL.md +341 -0
  575. package/skills/(development)/spec-driven-eval/references/quickstart.md +118 -0
  576. package/skills/(development)/spec-driven-eval/references/reference.md +295 -0
  577. package/skills/(gtm)/ai-cold-outreach/SKILL.md +472 -0
  578. package/skills/(gtm)/ai-cold-outreach/references/benchmarks-deliverability-tactics.md +243 -0
  579. package/skills/(gtm)/ai-cold-outreach/references/quick-reference.md +51 -0
  580. package/skills/(gtm)/ai-pricing/SKILL.md +253 -0
  581. package/skills/(gtm)/ai-pricing/references/implementation-guide.md +309 -0
  582. package/skills/(gtm)/ai-pricing/references/quick-reference.md +34 -0
  583. package/skills/(gtm)/ai-sdr/SKILL.md +399 -0
  584. package/skills/(gtm)/ai-sdr/references/implementation-guide.md +477 -0
  585. package/skills/(gtm)/ai-sdr/references/quick-reference.md +55 -0
  586. package/skills/(gtm)/ai-seo/SKILL.md +476 -0
  587. package/skills/(gtm)/ai-ugc-ads/SKILL.md +437 -0
  588. package/skills/(gtm)/content-to-pipeline/SKILL.md +421 -0
  589. package/skills/(gtm)/content-to-pipeline/references/podcast-community-cadence.md +91 -0
  590. package/skills/(gtm)/content-to-pipeline/references/quick-reference.md +46 -0
  591. package/skills/(gtm)/expansion-retention/SKILL.md +466 -0
  592. package/skills/(gtm)/gtm-engineering/SKILL.md +289 -0
  593. package/skills/(gtm)/gtm-engineering/references/implementation-guide.md +552 -0
  594. package/skills/(gtm)/gtm-engineering/references/quick-reference.md +47 -0
  595. package/skills/(gtm)/gtm-metrics/SKILL.md +427 -0
  596. package/skills/(gtm)/lead-enrichment/SKILL.md +464 -0
  597. package/skills/(gtm)/lead-enrichment/references/quick-reference.md +65 -0
  598. package/skills/(gtm)/multi-platform-launch/SKILL.md +361 -0
  599. package/skills/(gtm)/multi-platform-launch/references/directories-timing-mistakes.md +234 -0
  600. package/skills/(gtm)/multi-platform-launch/references/quick-reference.md +35 -0
  601. package/skills/(gtm)/paid-creative-ai/SKILL.md +472 -0
  602. package/skills/(gtm)/paid-creative-ai/references/quick-reference.md +54 -0
  603. package/skills/(gtm)/partner-affiliate/SKILL.md +260 -0
  604. package/skills/(gtm)/partner-affiliate/references/implementation-guide.md +330 -0
  605. package/skills/(gtm)/partner-affiliate/references/quick-reference.md +41 -0
  606. package/skills/(gtm)/positioning-icp/SKILL.md +483 -0
  607. package/skills/(gtm)/positioning-icp/references/quick-reference.md +40 -0
  608. package/skills/(gtm)/sales-motion-design/SKILL.md +472 -0
  609. package/skills/(gtm)/sales-motion-design/references/quick-reference.md +52 -0
  610. package/skills/(gtm)/social-selling/SKILL.md +423 -0
  611. package/skills/(gtm)/solo-founder-gtm/SKILL.md +453 -0
  612. package/skills/(gtm)/video-outreach/SKILL.md +468 -0
  613. package/skills/(learning)/learning-opportunities/SKILL.md +140 -0
  614. package/skills/(learning)/learning-opportunities/references/PRINCIPLES.md +42 -0
  615. package/skills/(monitoring)/sentry/LICENSE.txt +201 -0
  616. package/skills/(monitoring)/sentry/SKILL.md +127 -0
  617. package/skills/(monitoring)/sentry/scripts/sentry_api.py +238 -0
  618. package/skills/(performance)/core-web-vitals/SKILL.md +466 -0
  619. package/skills/(performance)/core-web-vitals/references/LCP.md +215 -0
  620. package/skills/(performance)/perf-astro/SKILL.md +149 -0
  621. package/skills/(performance)/perf-lighthouse/SKILL.md +239 -0
  622. package/skills/(performance)/perf-web-optimization/SKILL.md +163 -0
  623. package/skills/(performance)/perf-web-optimization/references/bundle-optimization.md +180 -0
  624. package/skills/(performance)/perf-web-optimization/references/core-web-vitals.md +154 -0
  625. package/skills/(performance)/perf-web-optimization/references/image-optimization.md +170 -0
  626. package/skills/(quality)/pbs-generative-engine-optimization/SKILL.md +141 -0
  627. package/skills/(quality)/pbs-generative-engine-optimization/references/measurement-and-tools.md +136 -0
  628. package/skills/(quality)/pbs-generative-engine-optimization/references/pillars-and-workflow.md +139 -0
  629. package/skills/(quality)/pbs-generative-engine-optimization/templates/faqpage.jsonld +22 -0
  630. package/skills/(quality)/pbs-generative-engine-optimization/templates/llms.txt +14 -0
  631. package/skills/(quality)/pbs-generative-engine-optimization/templates/page-metadata.html +33 -0
  632. package/skills/(quality)/pbs-generative-engine-optimization/templates/quotable-article-outline.md +59 -0
  633. package/skills/(quality)/pbs-generative-engine-optimization/templates/robots-ai-crawlers.txt +53 -0
  634. package/skills/(quality)/pbs-generative-engine-optimization/templates/techarticle.jsonld +29 -0
  635. package/skills/(quality)/react-best-practices/AGENTS.md +2934 -0
  636. package/skills/(quality)/react-best-practices/README.md +123 -0
  637. package/skills/(quality)/react-best-practices/SKILL.md +138 -0
  638. package/skills/(quality)/react-best-practices/rules/_sections.md +46 -0
  639. package/skills/(quality)/react-best-practices/rules/_template.md +28 -0
  640. package/skills/(quality)/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  641. package/skills/(quality)/react-best-practices/rules/advanced-init-once.md +42 -0
  642. package/skills/(quality)/react-best-practices/rules/advanced-use-latest.md +39 -0
  643. package/skills/(quality)/react-best-practices/rules/async-api-routes.md +38 -0
  644. package/skills/(quality)/react-best-practices/rules/async-defer-await.md +80 -0
  645. package/skills/(quality)/react-best-practices/rules/async-dependencies.md +51 -0
  646. package/skills/(quality)/react-best-practices/rules/async-parallel.md +28 -0
  647. package/skills/(quality)/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  648. package/skills/(quality)/react-best-practices/rules/bundle-barrel-imports.md +59 -0
  649. package/skills/(quality)/react-best-practices/rules/bundle-conditional.md +31 -0
  650. package/skills/(quality)/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  651. package/skills/(quality)/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  652. package/skills/(quality)/react-best-practices/rules/bundle-preload.md +50 -0
  653. package/skills/(quality)/react-best-practices/rules/client-event-listeners.md +74 -0
  654. package/skills/(quality)/react-best-practices/rules/client-localstorage-schema.md +71 -0
  655. package/skills/(quality)/react-best-practices/rules/client-passive-event-listeners.md +48 -0
  656. package/skills/(quality)/react-best-practices/rules/client-swr-dedup.md +56 -0
  657. package/skills/(quality)/react-best-practices/rules/js-batch-dom-css.md +107 -0
  658. package/skills/(quality)/react-best-practices/rules/js-cache-function-results.md +80 -0
  659. package/skills/(quality)/react-best-practices/rules/js-cache-property-access.md +28 -0
  660. package/skills/(quality)/react-best-practices/rules/js-cache-storage.md +70 -0
  661. package/skills/(quality)/react-best-practices/rules/js-combine-iterations.md +32 -0
  662. package/skills/(quality)/react-best-practices/rules/js-early-exit.md +50 -0
  663. package/skills/(quality)/react-best-practices/rules/js-hoist-regexp.md +45 -0
  664. package/skills/(quality)/react-best-practices/rules/js-index-maps.md +37 -0
  665. package/skills/(quality)/react-best-practices/rules/js-length-check-first.md +49 -0
  666. package/skills/(quality)/react-best-practices/rules/js-min-max-loop.md +82 -0
  667. package/skills/(quality)/react-best-practices/rules/js-set-map-lookups.md +24 -0
  668. package/skills/(quality)/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  669. package/skills/(quality)/react-best-practices/rules/rendering-activity.md +26 -0
  670. package/skills/(quality)/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  671. package/skills/(quality)/react-best-practices/rules/rendering-conditional-render.md +40 -0
  672. package/skills/(quality)/react-best-practices/rules/rendering-content-visibility.md +38 -0
  673. package/skills/(quality)/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  674. package/skills/(quality)/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  675. package/skills/(quality)/react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
  676. package/skills/(quality)/react-best-practices/rules/rendering-svg-precision.md +28 -0
  677. package/skills/(quality)/react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  678. package/skills/(quality)/react-best-practices/rules/rerender-defer-reads.md +39 -0
  679. package/skills/(quality)/react-best-practices/rules/rerender-dependencies.md +45 -0
  680. package/skills/(quality)/react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  681. package/skills/(quality)/react-best-practices/rules/rerender-derived-state.md +29 -0
  682. package/skills/(quality)/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  683. package/skills/(quality)/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  684. package/skills/(quality)/react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
  685. package/skills/(quality)/react-best-practices/rules/rerender-memo.md +44 -0
  686. package/skills/(quality)/react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  687. package/skills/(quality)/react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  688. package/skills/(quality)/react-best-practices/rules/rerender-transitions.md +40 -0
  689. package/skills/(quality)/react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  690. package/skills/(quality)/react-best-practices/rules/server-after-nonblocking.md +73 -0
  691. package/skills/(quality)/react-best-practices/rules/server-auth-actions.md +96 -0
  692. package/skills/(quality)/react-best-practices/rules/server-cache-lru.md +41 -0
  693. package/skills/(quality)/react-best-practices/rules/server-cache-react.md +76 -0
  694. package/skills/(quality)/react-best-practices/rules/server-dedup-props.md +65 -0
  695. package/skills/(quality)/react-best-practices/rules/server-parallel-fetching.md +83 -0
  696. package/skills/(quality)/react-best-practices/rules/server-serialization.md +38 -0
  697. package/skills/(quality)/seo/SKILL.md +532 -0
  698. package/skills/(quality)/the-judge/SKILL.md +240 -0
  699. package/skills/(quality)/the-judge/references/comment-voice.md +69 -0
  700. package/skills/(quality)/the-judge/references/review-standards.md +122 -0
  701. package/skills/(quality)/the-judge/scripts/post_review.py +89 -0
  702. package/skills/(quality)/the-judge/scripts/review_gate.py +216 -0
  703. package/skills/(quality)/the-judge/scripts/scan_bypasses.py +68 -0
  704. package/skills/(quality)/web-accessibility/SKILL.md +531 -0
  705. package/skills/(quality)/web-accessibility/references/WCAG.md +169 -0
  706. package/skills/(quality)/web-best-practices/SKILL.md +616 -0
  707. package/skills/(quality)/web-quality-audit/SKILL.md +191 -0
  708. package/skills/(quality)/web-quality-audit/scripts/analyze.sh +91 -0
  709. package/skills/(security)/security-best-practices/LICENSE.txt +201 -0
  710. package/skills/(security)/security-best-practices/SKILL.md +89 -0
  711. package/skills/(security)/security-best-practices/references/golang-general-backend-security.md +988 -0
  712. package/skills/(security)/security-best-practices/references/javascript-express-web-server-security.md +1151 -0
  713. package/skills/(security)/security-best-practices/references/javascript-general-web-frontend-security.md +725 -0
  714. package/skills/(security)/security-best-practices/references/javascript-jquery-web-frontend-security.md +672 -0
  715. package/skills/(security)/security-best-practices/references/javascript-typescript-nextjs-web-server-security.md +1138 -0
  716. package/skills/(security)/security-best-practices/references/javascript-typescript-react-web-frontend-security.md +975 -0
  717. package/skills/(security)/security-best-practices/references/javascript-typescript-vue-web-frontend-security.md +789 -0
  718. package/skills/(security)/security-best-practices/references/python-django-web-server-security.md +880 -0
  719. package/skills/(security)/security-best-practices/references/python-fastapi-web-server-security.md +1030 -0
  720. package/skills/(security)/security-best-practices/references/python-flask-web-server-security.md +835 -0
  721. package/skills/(security)/security-ownership-map/LICENSE.txt +201 -0
  722. package/skills/(security)/security-ownership-map/SKILL.md +210 -0
  723. package/skills/(security)/security-ownership-map/references/neo4j-import.md +60 -0
  724. package/skills/(security)/security-ownership-map/scripts/build_ownership_map.py +956 -0
  725. package/skills/(security)/security-ownership-map/scripts/community_maintainers.py +544 -0
  726. package/skills/(security)/security-ownership-map/scripts/query_ownership.py +483 -0
  727. package/skills/(security)/security-ownership-map/scripts/run_ownership_map.py +200 -0
  728. package/skills/(security)/security-threat-model/LICENSE.txt +201 -0
  729. package/skills/(security)/security-threat-model/SKILL.md +92 -0
  730. package/skills/(security)/security-threat-model/references/prompt-template.md +254 -0
  731. package/skills/(security)/security-threat-model/references/security-controls-and-assets.md +35 -0
  732. package/skills/(tooling)/chrome-devtools/SKILL.md +109 -0
  733. package/skills/(tooling)/excalidraw-studio/SKILL.md +276 -0
  734. package/skills/(tooling)/excalidraw-studio/assets/business-flow-swimlane-template.json +413 -0
  735. package/skills/(tooling)/excalidraw-studio/assets/class-diagram-template.json +473 -0
  736. package/skills/(tooling)/excalidraw-studio/assets/data-flow-diagram-template.json +389 -0
  737. package/skills/(tooling)/excalidraw-studio/assets/er-diagram-template.json +540 -0
  738. package/skills/(tooling)/excalidraw-studio/assets/flowchart-template.json +645 -0
  739. package/skills/(tooling)/excalidraw-studio/assets/mindmap-template.json +1235 -0
  740. package/skills/(tooling)/excalidraw-studio/assets/relationship-template.json +363 -0
  741. package/skills/(tooling)/excalidraw-studio/assets/sequence-diagram-template.json +586 -0
  742. package/skills/(tooling)/excalidraw-studio/references/element-types.md +504 -0
  743. package/skills/(tooling)/excalidraw-studio/references/excalidraw-schema.md +823 -0
  744. package/skills/(tooling)/excalidraw-studio/references/icon-libraries.md +161 -0
  745. package/skills/(tooling)/excalidraw-studio/scripts/README.md +200 -0
  746. package/skills/(tooling)/excalidraw-studio/scripts/add-arrow.py +312 -0
  747. package/skills/(tooling)/excalidraw-studio/scripts/add-icon-to-diagram.py +404 -0
  748. package/skills/(tooling)/excalidraw-studio/scripts/split-excalidraw-library.py +183 -0
  749. package/skills/(tooling)/gh-fix-ci/LICENSE.txt +201 -0
  750. package/skills/(tooling)/gh-fix-ci/SKILL.md +73 -0
  751. package/skills/(tooling)/gh-fix-ci/scripts/inspect_pr_checks.py +509 -0
  752. package/skills/(tooling)/mermaid-studio/SKILL.md +382 -0
  753. package/skills/(tooling)/mermaid-studio/assets/puppeteer-config.json +10 -0
  754. package/skills/(tooling)/mermaid-studio/references/aws-architecture.md +395 -0
  755. package/skills/(tooling)/mermaid-studio/references/c4-architecture.md +473 -0
  756. package/skills/(tooling)/mermaid-studio/references/code-to-diagram.md +281 -0
  757. package/skills/(tooling)/mermaid-studio/references/diagram-types.md +758 -0
  758. package/skills/(tooling)/mermaid-studio/references/themes.md +426 -0
  759. package/skills/(tooling)/mermaid-studio/references/troubleshooting.md +479 -0
  760. package/skills/(tooling)/mermaid-studio/scripts/batch.mjs +227 -0
  761. package/skills/(tooling)/mermaid-studio/scripts/render-ascii.mjs +195 -0
  762. package/skills/(tooling)/mermaid-studio/scripts/render.mjs +600 -0
  763. package/skills/(tooling)/mermaid-studio/scripts/setup.sh +96 -0
  764. package/skills/(tooling)/mermaid-studio/scripts/validate.mjs +345 -0
  765. package/skills/(tooling)/nx-ci-monitor/SKILL.md +449 -0
  766. package/skills/(tooling)/nx-generate/SKILL.md +228 -0
  767. package/skills/(tooling)/nx-run-tasks/SKILL.md +58 -0
  768. package/skills/(tooling)/nx-workspace/SKILL.md +140 -0
  769. package/skills/(tooling)/nx-workspace/reference/best-practices.md +451 -0
  770. package/skills/(tooling)/nx-workspace/reference/ci-cd.md +387 -0
  771. package/skills/(tooling)/nx-workspace/reference/commands.md +378 -0
  772. package/skills/(tooling)/nx-workspace/reference/configuration.md +314 -0
  773. package/skills/(web-automation)/playwright-skill/API_REFERENCE.md +653 -0
  774. package/skills/(web-automation)/playwright-skill/SKILL.md +455 -0
  775. package/skills/(web-automation)/playwright-skill/lib/helpers.js +441 -0
  776. package/skills/(web-automation)/playwright-skill/package.json +26 -0
  777. package/skills/(web-automation)/playwright-skill/run.js +228 -0
  778. package/skills/_category.json +58 -0
  779. package/skills/deprecated.yaml +46 -0
  780. 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())