@1aboveio/skills 0.0.0-stage → 1.0.0

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 (633) hide show
  1. package/README.md +30 -2
  2. package/bin/cli.mjs +14 -0
  3. package/bin/select-core.mjs +172 -0
  4. package/package.json +146 -4
  5. package/skills/app-dev/airflow/LICENSE +3 -0
  6. package/skills/app-dev/airflow/SKILL.md +199 -0
  7. package/skills/app-dev/airflow/release-check.mjs +93 -0
  8. package/skills/app-dev/android-foundation/LICENSE +3 -0
  9. package/skills/app-dev/android-foundation/SKILL.md +192 -0
  10. package/skills/app-dev/android-foundation/assets/android-ci-job.yml +217 -0
  11. package/skills/app-dev/android-foundation/references/ci.md +87 -0
  12. package/skills/app-dev/android-foundation/references/gotchas.md +221 -0
  13. package/skills/app-dev/android-foundation/references/setup.md +164 -0
  14. package/skills/app-dev/android-foundation/release-check.mjs +93 -0
  15. package/skills/app-dev/android-foundation/scripts/device-run.sh +176 -0
  16. package/skills/app-dev/android-foundation/scripts/device-run.test.mjs +172 -0
  17. package/skills/app-dev/app-debug/LICENSE +3 -0
  18. package/skills/app-dev/app-debug/SKILL.md +110 -0
  19. package/skills/app-dev/app-debug/references/common-errors.md +128 -0
  20. package/skills/app-dev/app-debug/release-check.mjs +93 -0
  21. package/skills/app-dev/better-auth/LICENSE +3 -0
  22. package/skills/app-dev/better-auth/SKILL.md +598 -0
  23. package/skills/app-dev/better-auth/references/feishu-api.md +270 -0
  24. package/skills/app-dev/better-auth/release-check.mjs +93 -0
  25. package/skills/app-dev/data-catalog/LICENSE +3 -0
  26. package/skills/app-dev/data-catalog/SKILL.md +204 -0
  27. package/skills/app-dev/data-catalog/agents/openai.yaml +3 -0
  28. package/skills/app-dev/data-catalog/references/data-catalog-conventions.md +75 -0
  29. package/skills/app-dev/data-catalog/references/field-definitions.md +116 -0
  30. package/skills/app-dev/data-catalog/references/format.md +121 -0
  31. package/skills/app-dev/data-catalog/release-check.mjs +93 -0
  32. package/skills/app-dev/data-catalog/scripts/data-catalog.test.mjs +36 -0
  33. package/skills/app-dev/data-catalog/scripts/data_catalog.py +1392 -0
  34. package/skills/app-dev/data-catalog/scripts/persist-conventions-core.mjs +117 -0
  35. package/skills/app-dev/data-catalog/scripts/persist-conventions.mjs +17 -0
  36. package/skills/app-dev/data-catalog/scripts/test_data_catalog.py +571 -0
  37. package/skills/app-dev/ios-foundation/LICENSE +3 -0
  38. package/skills/app-dev/ios-foundation/SKILL.md +184 -0
  39. package/skills/app-dev/ios-foundation/references/setup.md +243 -0
  40. package/skills/app-dev/ios-foundation/release-check.mjs +93 -0
  41. package/skills/app-dev/monorepo/LICENSE +3 -0
  42. package/skills/app-dev/monorepo/SKILL.md +462 -0
  43. package/skills/app-dev/monorepo/release-check.mjs +93 -0
  44. package/skills/app-dev/nextjs-fullstack/LICENSE +3 -0
  45. package/skills/app-dev/nextjs-fullstack/SKILL.md +211 -0
  46. package/skills/app-dev/nextjs-fullstack/conventions.md +318 -0
  47. package/skills/app-dev/nextjs-fullstack/frontend-conventions.md +61 -0
  48. package/skills/app-dev/nextjs-fullstack/nextjs16.md +287 -0
  49. package/skills/app-dev/nextjs-fullstack/release-check.mjs +93 -0
  50. package/skills/app-dev/nextjs-fullstack/server-actions.md +409 -0
  51. package/skills/app-dev/prisma-setup/LICENSE +3 -0
  52. package/skills/app-dev/prisma-setup/SKILL.md +181 -0
  53. package/skills/app-dev/prisma-setup/nextjs.md +258 -0
  54. package/skills/app-dev/prisma-setup/release-check.mjs +93 -0
  55. package/skills/app-dev/prisma-setup/turborepo.md +301 -0
  56. package/skills/app-dev/pyspark/LICENSE +3 -0
  57. package/skills/app-dev/pyspark/SKILL.md +127 -0
  58. package/skills/app-dev/pyspark/assets/templates/etl.py +748 -0
  59. package/skills/app-dev/pyspark/assets/templates/utils/__init__.py +1 -0
  60. package/skills/app-dev/pyspark/assets/templates/utils/hudi_metadata.py +14 -0
  61. package/skills/app-dev/pyspark/references/diagnosis-and-profiling.md +169 -0
  62. package/skills/app-dev/pyspark/references/etl-contract.md +129 -0
  63. package/skills/app-dev/pyspark/references/production-validation.md +131 -0
  64. package/skills/app-dev/pyspark/references/reconciliation.md +38 -0
  65. package/skills/app-dev/pyspark/references/transformation-design.md +190 -0
  66. package/skills/app-dev/pyspark/references/velocity-feature-calculation.md +193 -0
  67. package/skills/app-dev/pyspark/release-check.mjs +93 -0
  68. package/skills/app-dev/pyspark/scripts/spark_eventlog_summary.py +223 -0
  69. package/skills/app-dev/python-backend/LICENSE +3 -0
  70. package/skills/app-dev/python-backend/SKILL.md +325 -0
  71. package/skills/app-dev/python-backend/assets/uv-install.sh +48 -0
  72. package/skills/app-dev/python-backend/references/uv-installs.md +83 -0
  73. package/skills/app-dev/python-backend/release-check.mjs +93 -0
  74. package/skills/app-dev/shadcn/LICENSE +3 -0
  75. package/skills/app-dev/shadcn/SKILL.md +120 -0
  76. package/skills/app-dev/shadcn/assets/shadcn-small.png +0 -0
  77. package/skills/app-dev/shadcn/assets/shadcn.png +0 -0
  78. package/skills/app-dev/shadcn/cli.md +411 -0
  79. package/skills/app-dev/shadcn/customization.md +224 -0
  80. package/skills/app-dev/shadcn/mcp.md +101 -0
  81. package/skills/app-dev/shadcn/release-check.mjs +93 -0
  82. package/skills/app-dev/shadcn/rules/base-vs-radix.md +323 -0
  83. package/skills/app-dev/shadcn/rules/component-selection.md +67 -0
  84. package/skills/app-dev/shadcn/rules/composition.md +195 -0
  85. package/skills/app-dev/shadcn/rules/data-table.md +201 -0
  86. package/skills/app-dev/shadcn/rules/forms.md +255 -0
  87. package/skills/app-dev/shadcn/rules/icons.md +103 -0
  88. package/skills/app-dev/shadcn/rules/styling.md +167 -0
  89. package/skills/app-dev/zod-v4/LICENSE +3 -0
  90. package/skills/app-dev/zod-v4/SKILL.md +286 -0
  91. package/skills/app-dev/zod-v4/release-check.mjs +93 -0
  92. package/skills/cicd/cloud-build/LICENSE +3 -0
  93. package/skills/cicd/cloud-build/SKILL.md +707 -0
  94. package/skills/cicd/cloud-build/release-check.mjs +93 -0
  95. package/skills/cicd/cloud-debug/LICENSE +3 -0
  96. package/skills/cicd/cloud-debug/SKILL.md +315 -0
  97. package/skills/cicd/cloud-debug/references/build-failures.md +238 -0
  98. package/skills/cicd/cloud-debug/references/deploy-failures.md +376 -0
  99. package/skills/cicd/cloud-debug/references/pipeline-failures.md +378 -0
  100. package/skills/cicd/cloud-debug/release-check.mjs +93 -0
  101. package/skills/cicd/cloud-deploy/LICENSE +3 -0
  102. package/skills/cicd/cloud-deploy/SKILL.md +230 -0
  103. package/skills/cicd/cloud-deploy/references/config-templates.md +257 -0
  104. package/skills/cicd/cloud-deploy/release-check.mjs +93 -0
  105. package/skills/cicd/docker/LICENSE +3 -0
  106. package/skills/cicd/docker/SKILL.md +151 -0
  107. package/skills/cicd/docker/release-check.mjs +93 -0
  108. package/skills/cicd/github-actions/LICENSE +3 -0
  109. package/skills/cicd/github-actions/SKILL.md +111 -0
  110. package/skills/cicd/github-actions/references/audit-profile-optimize.md +150 -0
  111. package/skills/cicd/github-actions/references/ci-case-studies.md +141 -0
  112. package/skills/cicd/github-actions/references/conditional-ci.md +214 -0
  113. package/skills/cicd/github-actions/references/debugging.md +13 -0
  114. package/skills/cicd/github-actions/references/pipeline.md +87 -0
  115. package/skills/cicd/github-actions/references/post-deploy-and-publishing.md +33 -0
  116. package/skills/cicd/github-actions/references/runners.md +253 -0
  117. package/skills/cicd/github-actions/references/security.md +29 -0
  118. package/skills/cicd/github-actions/references/speed-and-audit.md +115 -0
  119. package/skills/cicd/github-actions/references/two-pass-reading.md +92 -0
  120. package/skills/cicd/github-actions/release-check.mjs +93 -0
  121. package/skills/cicd/github-actions/scripts/ci-run-audit-core.mjs +612 -0
  122. package/skills/cicd/github-actions/scripts/ci-run-audit.mjs +4 -0
  123. package/skills/cicd/github-actions/scripts/ci-run-audit.test.mjs +637 -0
  124. package/skills/cicd/github-flow/LICENSE +3 -0
  125. package/skills/cicd/github-flow/SKILL.md +123 -0
  126. package/skills/cicd/github-flow/references/ci-conventions.md +14 -0
  127. package/skills/cicd/github-flow/release-check.mjs +93 -0
  128. package/skills/cicd/github-flow/scripts/flow-core.mjs +105 -0
  129. package/skills/cicd/github-flow/scripts/flow.mjs +81 -0
  130. package/skills/cicd/github-flow/scripts/flow.test.mjs +114 -0
  131. package/skills/cicd/github-flow/scripts/persist-conventions-core.mjs +117 -0
  132. package/skills/cicd/github-flow/scripts/persist-conventions.mjs +49 -0
  133. package/skills/cicd/github-flow/scripts/persist-conventions.test.mjs +108 -0
  134. package/skills/cicd/google-cloud/LICENSE +3 -0
  135. package/skills/cicd/google-cloud/SKILL.md +119 -0
  136. package/skills/cicd/google-cloud/references/gcs.md +469 -0
  137. package/skills/cicd/google-cloud/references/iam.md +451 -0
  138. package/skills/cicd/google-cloud/references/project.md +349 -0
  139. package/skills/cicd/google-cloud/references/secrets.md +336 -0
  140. package/skills/cicd/google-cloud/references/vpc.md +312 -0
  141. package/skills/cicd/google-cloud/release-check.mjs +93 -0
  142. package/skills/cicd/google-cloud/scripts/create-sa.sh +36 -0
  143. package/skills/cicd/google-cloud/scripts/gcp-config.sh +31 -0
  144. package/skills/cicd/google-cloud/scripts/grant-iap.sh +41 -0
  145. package/skills/cicd/google-cloud/scripts/setup-secrets.sh +48 -0
  146. package/skills/cicd/mergify/LICENSE +3 -0
  147. package/skills/cicd/mergify/SKILL.md +102 -0
  148. package/skills/cicd/mergify/assets/templates/mergify.yml +215 -0
  149. package/skills/cicd/mergify/assets/templates/ruleset.json +46 -0
  150. package/skills/cicd/mergify/references/branch-protection.md +282 -0
  151. package/skills/cicd/mergify/references/configuration.md +274 -0
  152. package/skills/cicd/mergify/references/diagnosis.md +109 -0
  153. package/skills/cicd/mergify/references/stacks.md +84 -0
  154. package/skills/cicd/mergify/references/traps.md +119 -0
  155. package/skills/cicd/mergify/references/watch-contract.md +274 -0
  156. package/skills/cicd/mergify/release-check.mjs +93 -0
  157. package/skills/cicd/mergify/scripts/audit-core.mjs +208 -0
  158. package/skills/cicd/mergify/scripts/audit.mjs +4 -0
  159. package/skills/cicd/mergify/scripts/audit.test.mjs +201 -0
  160. package/skills/cicd/mergify/scripts/entrypoints.test.mjs +106 -0
  161. package/skills/cicd/mergify/scripts/pr-620-mergify-comments.fixture.json +30 -0
  162. package/skills/cicd/mergify/scripts/stack-push-core.mjs +258 -0
  163. package/skills/cicd/mergify/scripts/stack-push.mjs +4 -0
  164. package/skills/cicd/mergify/scripts/stack-push.test.mjs +233 -0
  165. package/skills/cicd/mergify/scripts/watch-pr-delivery-core.mjs +1065 -0
  166. package/skills/cicd/mergify/scripts/watch-pr-delivery.mjs +4 -0
  167. package/skills/cicd/mergify/scripts/watch-pr-delivery.test.mjs +1826 -0
  168. package/skills/cicd/podman/LICENSE +3 -0
  169. package/skills/cicd/podman/SKILL.md +71 -0
  170. package/skills/cicd/podman/agents/openai.yaml +4 -0
  171. package/skills/cicd/podman/assets/templates/podman-compose-socket-directory.yml +6 -0
  172. package/skills/cicd/podman/assets/templates/podman-service-override.conf +3 -0
  173. package/skills/cicd/podman/references/compose-compatibility.md +70 -0
  174. package/skills/cicd/podman/references/networking-and-ports.md +74 -0
  175. package/skills/cicd/podman/references/rootless-services-and-sockets.md +156 -0
  176. package/skills/cicd/podman/references/troubleshooting.md +98 -0
  177. package/skills/cicd/podman/release-check.mjs +93 -0
  178. package/skills/content/article-review/LICENSE +3 -0
  179. package/skills/content/article-review/SKILL.md +66 -0
  180. package/skills/content/article-review/references/report-format.md +68 -0
  181. package/skills/content/article-review/references/template-guide.md +79 -0
  182. package/skills/content/article-review/references/template-wechat-payments.md +125 -0
  183. package/skills/content/article-review/release-check.mjs +93 -0
  184. package/skills/content/article-to-image/LICENSE +3 -0
  185. package/skills/content/article-to-image/SKILL.md +91 -0
  186. package/skills/content/article-to-image/references/formats.md +53 -0
  187. package/skills/content/article-to-image/release-check.mjs +93 -0
  188. package/skills/content/flowchart-svg/LICENSE +3 -0
  189. package/skills/content/flowchart-svg/SKILL.md +43 -0
  190. package/skills/content/flowchart-svg/release-check.mjs +93 -0
  191. package/skills/content/flowchart-svg/scripts/export_png.sh +8 -0
  192. package/skills/content/image-gen/LICENSE +3 -0
  193. package/skills/content/image-gen/SKILL.md +192 -0
  194. package/skills/content/image-gen/release-check.mjs +93 -0
  195. package/skills/content/image-gen/scripts/credentials.mjs +217 -0
  196. package/skills/content/image-gen/scripts/credentials.test.mjs +212 -0
  197. package/skills/content/image-gen/scripts/generate.mjs +240 -0
  198. package/skills/content/image-gen/scripts/options.mjs +293 -0
  199. package/skills/content/image-gen/scripts/options.test.mjs +245 -0
  200. package/skills/content/mermaid/LICENSE +3 -0
  201. package/skills/content/mermaid/SKILL.md +635 -0
  202. package/skills/content/mermaid/release-check.mjs +93 -0
  203. package/skills/content/wechat-article-writer/LICENSE +3 -0
  204. package/skills/content/wechat-article-writer/SKILL.md +92 -0
  205. package/skills/content/wechat-article-writer/references/style-selector.md +133 -0
  206. package/skills/content/wechat-article-writer/references/writing-rules.md +152 -0
  207. package/skills/content/wechat-article-writer/release-check.mjs +93 -0
  208. package/skills/content/wechat-article-writer/templates/wechat-comparison.md +52 -0
  209. package/skills/content/wechat-article-writer/templates/wechat-howto.md +51 -0
  210. package/skills/content/wechat-article-writer/templates/wechat-insight.md +50 -0
  211. package/skills/content/wechat-article-writer/templates/wechat-pitfall.md +52 -0
  212. package/skills/content/wechat-publisher/LICENSE +3 -0
  213. package/skills/content/wechat-publisher/SKILL.md +171 -0
  214. package/skills/content/wechat-publisher/references/api.md +105 -0
  215. package/skills/content/wechat-publisher/references/layout-rules.md +57 -0
  216. package/skills/content/wechat-publisher/references/wechat-safe-template.html +86 -0
  217. package/skills/content/wechat-publisher/release-check.mjs +93 -0
  218. package/skills/content/wechat-publisher/scripts/md_to_wechat_html.py +194 -0
  219. package/skills/content/wechat-publisher/scripts/publish.py +239 -0
  220. package/skills/content/wechat-search/LICENSE +3 -0
  221. package/skills/content/wechat-search/SKILL.md +211 -0
  222. package/skills/content/wechat-search/release-check.mjs +93 -0
  223. package/skills/content/wechat-search/scripts/start-chrome.sh +83 -0
  224. package/skills/content/xai-search/LICENSE +3 -0
  225. package/skills/content/xai-search/SKILL.md +79 -0
  226. package/skills/content/xai-search/release-check.mjs +93 -0
  227. package/skills/content/xai-search/scripts/xai_search.sh +187 -0
  228. package/skills/content/xai-search/tests/smoke_test.sh +36 -0
  229. package/skills/core/distill-writing/LICENSE +3 -0
  230. package/skills/core/distill-writing/SKILL.md +74 -0
  231. package/skills/core/distill-writing/references/extraction.md +95 -0
  232. package/skills/core/distill-writing/references/updating.md +46 -0
  233. package/skills/core/distill-writing/release-check.mjs +93 -0
  234. package/skills/core/doc-to-md/LICENSE +3 -0
  235. package/skills/core/doc-to-md/SKILL.md +78 -0
  236. package/skills/core/doc-to-md/release-check.mjs +93 -0
  237. package/skills/core/doc-to-md/scripts/convert.py +157 -0
  238. package/skills/core/editorial-review/LICENSE +3 -0
  239. package/skills/core/editorial-review/SKILL.md +79 -0
  240. package/skills/core/editorial-review/references/checklist.md +94 -0
  241. package/skills/core/editorial-review/release-check.mjs +93 -0
  242. package/skills/core/house-style/LICENSE +3 -0
  243. package/skills/core/house-style/SKILL.md +33 -0
  244. package/skills/core/house-style/references/defaults.md +66 -0
  245. package/skills/core/house-style/references/rules.md +267 -0
  246. package/skills/core/house-style/references/sources.md +27 -0
  247. package/skills/core/house-style/references/style-en.md +131 -0
  248. package/skills/core/house-style/references/style-zh.md +141 -0
  249. package/skills/core/house-style/references/terminology-zh.md +223 -0
  250. package/skills/core/house-style/release-check.mjs +93 -0
  251. package/skills/core/house-style/templates/brd.md +103 -0
  252. package/skills/core/house-style/templates/commercial-proposal.md +93 -0
  253. package/skills/core/house-style/templates/compliance-policy.md +109 -0
  254. package/skills/core/house-style/templates/gap-analysis.md +105 -0
  255. package/skills/core/house-style/templates/general.md +63 -0
  256. package/skills/core/house-style/templates/integration-guide.md +98 -0
  257. package/skills/core/house-style/templates/prd.md +81 -0
  258. package/skills/core/house-style/templates/risk-operations-procedure.md +94 -0
  259. package/skills/core/house-style/templates/technical-spec.md +96 -0
  260. package/skills/core/polish-cn/LICENSE +3 -0
  261. package/skills/core/polish-cn/SKILL.md +102 -0
  262. package/skills/core/polish-cn/references/brief.md +93 -0
  263. package/skills/core/polish-cn/references/models.md +76 -0
  264. package/skills/core/polish-cn/release-check.mjs +93 -0
  265. package/skills/core/polish-cn/scripts/polish-cn.test.mjs +244 -0
  266. package/skills/core/polish-cn/scripts/polish_blocks.py +489 -0
  267. package/skills/core/reg-parser/LICENSE +3 -0
  268. package/skills/core/reg-parser/SKILL.md +212 -0
  269. package/skills/core/reg-parser/references/checklist-schema.md +223 -0
  270. package/skills/core/reg-parser/references/checklists/hk-amlo-checklist.json +1306 -0
  271. package/skills/core/reg-parser/references/checklists/hk-amlo-checklist.md +469 -0
  272. package/skills/core/reg-parser/references/checklists/hk-fi-corporate-onboarding-cdd-checklist.json +634 -0
  273. package/skills/core/reg-parser/references/checklists/hk-fi-corporate-onboarding-cdd-checklist.md +233 -0
  274. package/skills/core/reg-parser/references/checklists/hk-mso-guideline-checklist.json +2194 -0
  275. package/skills/core/reg-parser/references/checklists/hk-mso-guideline-checklist.md +771 -0
  276. package/skills/core/reg-parser/references/checklists/kyc-aml-checklist.md +258 -0
  277. package/skills/core/reg-parser/references/checklists/visa-vars-checklist.md +1058 -0
  278. package/skills/core/reg-parser/references/mandates/hk-amlo-cap615.md +389 -0
  279. package/skills/core/reg-parser/references/mandates/visa-vars.md +205 -0
  280. package/skills/core/reg-parser/release-check.mjs +93 -0
  281. package/skills/core/reg-parser/scripts/compare_checklist.py +230 -0
  282. package/skills/core/reg-parser/scripts/dump_checklist.py +361 -0
  283. package/skills/core/reg-parser/scripts/preprocess-mandate.sh +187 -0
  284. package/skills/core/reg-parser/scripts/reg-parser.test.mjs +165 -0
  285. package/skills/core/reg-parser/scripts/test_quarantine.sh +105 -0
  286. package/skills/core/reg-parser/scripts/validate_checklist.py +563 -0
  287. package/skills/core/reg-parser/scripts/validate_mandate.py +273 -0
  288. package/skills/core/terminology/LICENSE +3 -0
  289. package/skills/core/terminology/SKILL.md +62 -0
  290. package/skills/core/terminology/references/format.md +50 -0
  291. package/skills/core/terminology/references/init.md +32 -0
  292. package/skills/core/terminology/release-check.mjs +93 -0
  293. package/skills/core/write-doc/LICENSE +3 -0
  294. package/skills/core/write-doc/SKILL.md +141 -0
  295. package/skills/core/write-doc/references/bilingual.md +60 -0
  296. package/skills/core/write-doc/release-check.mjs +93 -0
  297. package/skills/engineering/better-review/LICENSE +3 -0
  298. package/skills/engineering/better-review/SKILL.md +249 -0
  299. package/skills/engineering/better-review/agents/openai.yaml +9 -0
  300. package/skills/engineering/better-review/references/domain-hazards.md +53 -0
  301. package/skills/engineering/better-review/references/passes.md +147 -0
  302. package/skills/engineering/better-review/references/result.md +151 -0
  303. package/skills/engineering/better-review/release-check.mjs +93 -0
  304. package/skills/engineering/better-review/scripts/pr-context.mjs +212 -0
  305. package/skills/engineering/better-review/scripts/pr-context.test.mjs +168 -0
  306. package/skills/engineering/better-review/scripts/rereview-scope.mjs +503 -0
  307. package/skills/engineering/better-review/scripts/rereview-scope.test.mjs +587 -0
  308. package/skills/engineering/better-review/scripts/scan-diff.mjs +365 -0
  309. package/skills/engineering/better-review/scripts/scan-diff.test.mjs +414 -0
  310. package/skills/engineering/better-review/scripts/vendor-sync.test.mjs +96 -0
  311. package/skills/engineering/e2e-test/LICENSE +3 -0
  312. package/skills/engineering/e2e-test/SKILL.md +98 -0
  313. package/skills/engineering/e2e-test/assets/ci-gates.cloudbuild.yaml +24 -0
  314. package/skills/engineering/e2e-test/references/authoring/auth-flows.md +159 -0
  315. package/skills/engineering/e2e-test/references/authoring/playwright-config.md +73 -0
  316. package/skills/engineering/e2e-test/references/authoring/playwright-patterns.md +144 -0
  317. package/skills/engineering/e2e-test/references/ci-integration.md +25 -0
  318. package/skills/engineering/e2e-test/references/ci-playwright-container.md +290 -0
  319. package/skills/engineering/e2e-test/references/presentation-sweep.md +104 -0
  320. package/skills/engineering/e2e-test/references/reviewing.md +41 -0
  321. package/skills/engineering/e2e-test/references/route-manifest.md +51 -0
  322. package/skills/engineering/e2e-test/release-check.mjs +93 -0
  323. package/skills/engineering/e2e-test/scripts/detect-routes-nextjs.mjs +200 -0
  324. package/skills/engineering/e2e-test/scripts/presentation-checks.mjs +171 -0
  325. package/skills/engineering/e2e-test/scripts/presentation-checks.test.mjs +106 -0
  326. package/skills/engineering/e2e-test/scripts/presentation-perceivability.mjs +179 -0
  327. package/skills/engineering/e2e-test/scripts/presentation-perceivability.test.mjs +117 -0
  328. package/skills/engineering/e2e-test/scripts/presentation-reachability.mjs +154 -0
  329. package/skills/engineering/e2e-test/scripts/presentation-reachability.test.mjs +69 -0
  330. package/skills/engineering/e2e-test/scripts/presentation-render-health.mjs +141 -0
  331. package/skills/engineering/e2e-test/scripts/presentation-render-health.test.mjs +98 -0
  332. package/skills/engineering/e2e-test/scripts/presentation-sweep.mjs +147 -0
  333. package/skills/engineering/e2e-test/scripts/presentation-sweep.test.mjs +71 -0
  334. package/skills/engineering/e2e-test/scripts/presentation-temporal.mjs +127 -0
  335. package/skills/engineering/e2e-test/scripts/presentation-temporal.test.mjs +59 -0
  336. package/skills/engineering/e2e-test/scripts/project-route-manifest.mjs +82 -0
  337. package/skills/engineering/e2e-test/scripts/project-route-manifest.test.mjs +76 -0
  338. package/skills/engineering/e2e-test/scripts/validate-manifest.mjs +106 -0
  339. package/skills/engineering/engineering-runtime/LICENSE +3 -0
  340. package/skills/engineering/engineering-runtime/SKILL.md +11 -0
  341. package/skills/engineering/engineering-runtime/agents/openai.yaml +6 -0
  342. package/skills/engineering/engineering-runtime/coherence/workflow.json +597 -0
  343. package/skills/engineering/engineering-runtime/engineering-runtime.test.mjs +68 -0
  344. package/skills/engineering/engineering-runtime/release-check.mjs +93 -0
  345. package/skills/engineering/engineering-runtime/scripts/exact-head-artifact.mjs +131 -0
  346. package/skills/engineering/engineering-runtime/scripts/head-check-set.mjs +398 -0
  347. package/skills/engineering/engineering-runtime/scripts/invocation-policy.mjs +187 -0
  348. package/skills/engineering/engineering-runtime/scripts/invocation-policy.test.mjs +95 -0
  349. package/skills/engineering/engineering-runtime/scripts/main-module.mjs +79 -0
  350. package/skills/engineering/engineering-runtime/scripts/main-module.test.mjs +288 -0
  351. package/skills/engineering/engineering-runtime/scripts/mergify-yaml.mjs +11 -0
  352. package/skills/engineering/engineering-runtime/scripts/package-lock.json +43 -0
  353. package/skills/engineering/engineering-runtime/scripts/package.json +10 -0
  354. package/skills/engineering/engineering-runtime/scripts/required-check-plan.mjs +223 -0
  355. package/skills/engineering/engineering-runtime/scripts/required-check-plan.test.mjs +96 -0
  356. package/skills/engineering/engineering-runtime/scripts/review-completion.mjs +56 -0
  357. package/skills/engineering/engineering-runtime/scripts/workflow-coherence.mjs +595 -0
  358. package/skills/engineering/engineering-runtime/scripts/workflow-policy.mjs +189 -0
  359. package/skills/engineering/engineering-runtime/scripts/yaml-mapping.mjs +18 -0
  360. package/skills/engineering/ensure-coverage/LICENSE +3 -0
  361. package/skills/engineering/ensure-coverage/SKILL.md +129 -0
  362. package/skills/engineering/ensure-coverage/references/breadth/coverage-ledger.md +92 -0
  363. package/skills/engineering/ensure-coverage/references/breadth/inventory-contract.md +85 -0
  364. package/skills/engineering/ensure-coverage/references/breadth/surface-baseline.md +44 -0
  365. package/skills/engineering/ensure-coverage/references/breadth/surface-discovery.md +16 -0
  366. package/skills/engineering/ensure-coverage/references/depth/characterization.md +68 -0
  367. package/skills/engineering/ensure-coverage/references/depth/coverage.config.example.json +19 -0
  368. package/skills/engineering/ensure-coverage/references/depth/grading.md +35 -0
  369. package/skills/engineering/ensure-coverage/references/depth/mock-policy.md +57 -0
  370. package/skills/engineering/ensure-coverage/references/depth/test-smells.md +39 -0
  371. package/skills/engineering/ensure-coverage/references/enforcement/ci-contract.md +44 -0
  372. package/skills/engineering/ensure-coverage/references/examples/coverage-ledger.md +110 -0
  373. package/skills/engineering/ensure-coverage/references/examples/refund-flow.md +35 -0
  374. package/skills/engineering/ensure-coverage/references/presentation/axis.md +64 -0
  375. package/skills/engineering/ensure-coverage/references/process/audit-mode.md +27 -0
  376. package/skills/engineering/ensure-coverage/references/process/output-template.md +139 -0
  377. package/skills/engineering/ensure-coverage/references/process/test-strategy.md +56 -0
  378. package/skills/engineering/ensure-coverage/release-check.mjs +93 -0
  379. package/skills/engineering/ensure-coverage/schemas/coverage-config.schema.json +67 -0
  380. package/skills/engineering/ensure-coverage/schemas/coverage-file.schema.json +140 -0
  381. package/skills/engineering/ensure-coverage/scripts/README.md +99 -0
  382. package/skills/engineering/ensure-coverage/scripts/adapters/nextjs-inventory.mjs +182 -0
  383. package/skills/engineering/ensure-coverage/scripts/adapters/nextjs-inventory.test.mjs +96 -0
  384. package/skills/engineering/ensure-coverage/scripts/check-quarantine-expiry.mjs +105 -0
  385. package/skills/engineering/ensure-coverage/scripts/check-quarantine-expiry.test.mjs +47 -0
  386. package/skills/engineering/ensure-coverage/scripts/ci-audit.mjs +137 -0
  387. package/skills/engineering/ensure-coverage/scripts/ci-audit.test.mjs +86 -0
  388. package/skills/engineering/ensure-coverage/scripts/coverage-ledger.mjs +674 -0
  389. package/skills/engineering/ensure-coverage/scripts/coverage-ledger.test.mjs +447 -0
  390. package/skills/engineering/ensure-coverage/scripts/design-parity.mjs +591 -0
  391. package/skills/engineering/ensure-coverage/scripts/design-parity.test.mjs +552 -0
  392. package/skills/engineering/ensure-coverage/scripts/lint-tests.mjs +282 -0
  393. package/skills/engineering/ensure-coverage/scripts/lint-tests.test.mjs +289 -0
  394. package/skills/engineering/ensure-coverage/scripts/mock-policy-config.mjs +176 -0
  395. package/skills/engineering/ensure-coverage/scripts/mock-policy-config.test.mjs +119 -0
  396. package/skills/engineering/ensure-coverage/scripts/package.json +19 -0
  397. package/skills/engineering/golden-path/LICENSE +3 -0
  398. package/skills/engineering/golden-path/SKILL.md +230 -0
  399. package/skills/engineering/golden-path/agents/openai.yaml +3 -0
  400. package/skills/engineering/golden-path/assets/golden-paths.example.json +57 -0
  401. package/skills/engineering/golden-path/references/contract.md +239 -0
  402. package/skills/engineering/golden-path/references/migration.md +111 -0
  403. package/skills/engineering/golden-path/release-check.mjs +93 -0
  404. package/skills/engineering/golden-path/scripts/golden-path-core.mjs +1779 -0
  405. package/skills/engineering/golden-path/scripts/golden-path.mjs +6 -0
  406. package/skills/engineering/golden-path/scripts/golden-path.test.mjs +1457 -0
  407. package/skills/engineering/harness-runtime/LICENSE +3 -0
  408. package/skills/engineering/harness-runtime/SKILL.md +19 -0
  409. package/skills/engineering/harness-runtime/agents/openai.yaml +6 -0
  410. package/skills/engineering/harness-runtime/bin/discover-models.mjs +4 -0
  411. package/skills/engineering/harness-runtime/bin/model-catalog.mjs +4 -0
  412. package/skills/engineering/harness-runtime/contracts.md +15 -0
  413. package/skills/engineering/harness-runtime/discover-models.mjs +392 -0
  414. package/skills/engineering/harness-runtime/discover-models.test.mjs +363 -0
  415. package/skills/engineering/harness-runtime/fixtures/native-question-schemas.json +33 -0
  416. package/skills/engineering/harness-runtime/fixtures/question-responses.json +54 -0
  417. package/skills/engineering/harness-runtime/harness-runtime.test.mjs +967 -0
  418. package/skills/engineering/harness-runtime/index.mjs +767 -0
  419. package/skills/engineering/harness-runtime/model-catalog-seed.test.mjs +829 -0
  420. package/skills/engineering/harness-runtime/model-catalog.mjs +787 -0
  421. package/skills/engineering/harness-runtime/model-catalog.test.mjs +366 -0
  422. package/skills/engineering/harness-runtime/native-question-contracts.md +37 -0
  423. package/skills/engineering/harness-runtime/references/model-catalog-seed.json +408 -0
  424. package/skills/engineering/harness-runtime/references/model-catalog.md +57 -0
  425. package/skills/engineering/harness-runtime/release-check.mjs +93 -0
  426. package/skills/engineering/resolve-issues/LICENSE +3 -0
  427. package/skills/engineering/resolve-issues/SKILL.md +250 -0
  428. package/skills/engineering/resolve-issues/agents/openai.yaml +9 -0
  429. package/skills/engineering/resolve-issues/plugin-hooks.json +17 -0
  430. package/skills/engineering/resolve-issues/references/canary.md +28 -0
  431. package/skills/engineering/resolve-issues/references/ci.md +105 -0
  432. package/skills/engineering/resolve-issues/references/done.md +25 -0
  433. package/skills/engineering/resolve-issues/references/dropbox.md +90 -0
  434. package/skills/engineering/resolve-issues/references/expire.md +318 -0
  435. package/skills/engineering/resolve-issues/references/exploration.md +202 -0
  436. package/skills/engineering/resolve-issues/references/implementation.md +303 -0
  437. package/skills/engineering/resolve-issues/references/preflight.md +445 -0
  438. package/skills/engineering/resolve-issues/references/review.md +228 -0
  439. package/skills/engineering/resolve-issues/references/shared-modules.md +44 -0
  440. package/skills/engineering/resolve-issues/references/task-plan.md +264 -0
  441. package/skills/engineering/resolve-issues/release-check.mjs +93 -0
  442. package/skills/engineering/resolve-issues/scripts/cleanup-runs.mjs +364 -0
  443. package/skills/engineering/resolve-issues/scripts/cleanup-runs.test.mjs +280 -0
  444. package/skills/engineering/resolve-issues/scripts/discover-models.mjs +9 -0
  445. package/skills/engineering/resolve-issues/scripts/dropbox.mjs +473 -0
  446. package/skills/engineering/resolve-issues/scripts/dropbox.test.mjs +346 -0
  447. package/skills/engineering/resolve-issues/scripts/findings-reuse.mjs +98 -0
  448. package/skills/engineering/resolve-issues/scripts/findings-reuse.test.mjs +88 -0
  449. package/skills/engineering/resolve-issues/scripts/github-reviews.mjs +384 -0
  450. package/skills/engineering/resolve-issues/scripts/github-reviews.test.mjs +264 -0
  451. package/skills/engineering/resolve-issues/scripts/install-hooks.mjs +135 -0
  452. package/skills/engineering/resolve-issues/scripts/install-hooks.test.mjs +79 -0
  453. package/skills/engineering/resolve-issues/scripts/issue-tree.mjs +162 -0
  454. package/skills/engineering/resolve-issues/scripts/issue-tree.test.mjs +107 -0
  455. package/skills/engineering/resolve-issues/scripts/manual-invocation.test.mjs +14 -0
  456. package/skills/engineering/resolve-issues/scripts/model-catalog.mjs +9 -0
  457. package/skills/engineering/resolve-issues/scripts/next-actions-capacity.test.mjs +149 -0
  458. package/skills/engineering/resolve-issues/scripts/next-actions.mjs +856 -0
  459. package/skills/engineering/resolve-issues/scripts/next-actions.test.mjs +915 -0
  460. package/skills/engineering/resolve-issues/scripts/plan-sync.mjs +269 -0
  461. package/skills/engineering/resolve-issues/scripts/plan-sync.test.mjs +156 -0
  462. package/skills/engineering/resolve-issues/scripts/preflight-models.mjs +736 -0
  463. package/skills/engineering/resolve-issues/scripts/preflight-models.test.mjs +448 -0
  464. package/skills/engineering/resolve-issues/scripts/ready-check.mjs +185 -0
  465. package/skills/engineering/resolve-issues/scripts/ready-check.test.mjs +217 -0
  466. package/skills/engineering/resolve-issues/scripts/rehydrate.mjs +98 -0
  467. package/skills/engineering/resolve-issues/scripts/rehydrate.test.mjs +91 -0
  468. package/skills/engineering/resolve-issues/scripts/review-verdict.mjs +509 -0
  469. package/skills/engineering/resolve-issues/scripts/review-verdict.test.mjs +1060 -0
  470. package/skills/engineering/resolve-issues/scripts/size-check.mjs +492 -0
  471. package/skills/engineering/resolve-issues/scripts/size-check.test.mjs +458 -0
  472. package/skills/engineering/resolve-release/LICENSE +3 -0
  473. package/skills/engineering/resolve-release/SKILL.md +215 -0
  474. package/skills/engineering/resolve-release/agents/openai.yaml +8 -0
  475. package/skills/engineering/resolve-release/flows/cloud-run-canary.md +13 -0
  476. package/skills/engineering/resolve-release/flows/cloud-run.md +7 -0
  477. package/skills/engineering/resolve-release/flows/root-tag-npm.md +13 -0
  478. package/skills/engineering/resolve-release/flows/workspace-npm.md +22 -0
  479. package/skills/engineering/resolve-release/references/canary.md +51 -0
  480. package/skills/engineering/resolve-release/references/candidate.md +41 -0
  481. package/skills/engineering/resolve-release/references/cut.md +131 -0
  482. package/skills/engineering/resolve-release/references/dark-launch.md +66 -0
  483. package/skills/engineering/resolve-release/references/flows.md +150 -0
  484. package/skills/engineering/resolve-release/references/preflight.md +154 -0
  485. package/skills/engineering/resolve-release/references/prepared-metadata.md +260 -0
  486. package/skills/engineering/resolve-release/references/promotion.md +82 -0
  487. package/skills/engineering/resolve-release/references/publish.md +232 -0
  488. package/skills/engineering/resolve-release/references/workspace-npm.md +103 -0
  489. package/skills/engineering/resolve-release/release-check.mjs +93 -0
  490. package/skills/engineering/resolve-release/scripts/apply.mjs +212 -0
  491. package/skills/engineering/resolve-release/scripts/apply.test.mjs +99 -0
  492. package/skills/engineering/resolve-release/scripts/dark-flags.mjs +134 -0
  493. package/skills/engineering/resolve-release/scripts/dark-flags.test.mjs +100 -0
  494. package/skills/engineering/resolve-release/scripts/flow.mjs +500 -0
  495. package/skills/engineering/resolve-release/scripts/flow.test.mjs +340 -0
  496. package/skills/engineering/resolve-release/scripts/green-head.mjs +231 -0
  497. package/skills/engineering/resolve-release/scripts/green-head.test.mjs +101 -0
  498. package/skills/engineering/resolve-release/scripts/npm-version-absence.mjs +138 -0
  499. package/skills/engineering/resolve-release/scripts/npm-version-absence.test.mjs +426 -0
  500. package/skills/engineering/resolve-release/scripts/plan-npm.test.mjs +659 -0
  501. package/skills/engineering/resolve-release/scripts/plan-toml-boundary.test.mjs +317 -0
  502. package/skills/engineering/resolve-release/scripts/plan-uv.test.mjs +291 -0
  503. package/skills/engineering/resolve-release/scripts/plan.mjs +806 -0
  504. package/skills/engineering/resolve-release/scripts/plan.test.mjs +428 -0
  505. package/skills/engineering/rush-issues/LICENSE +3 -0
  506. package/skills/engineering/rush-issues/SKILL.md +58 -0
  507. package/skills/engineering/rush-issues/agents/openai.yaml +8 -0
  508. package/skills/engineering/rush-issues/rehydrate.mjs +10 -0
  509. package/skills/engineering/rush-issues/release-check.mjs +93 -0
  510. package/skills/engineering/rush-release/LICENSE +3 -0
  511. package/skills/engineering/rush-release/SKILL.md +35 -0
  512. package/skills/engineering/rush-release/agents/openai.yaml +8 -0
  513. package/skills/engineering/rush-release/release-check.mjs +93 -0
  514. package/skills/engineering/test-quality/LICENSE +3 -0
  515. package/skills/engineering/test-quality/SKILL.md +79 -0
  516. package/skills/engineering/test-quality/references/audit.md +80 -0
  517. package/skills/engineering/test-quality/references/lint.md +24 -0
  518. package/skills/engineering/test-quality/references/principles.md +143 -0
  519. package/skills/engineering/test-quality/references/testing-conventions.md +9 -0
  520. package/skills/engineering/test-quality/release-check.mjs +93 -0
  521. package/skills/engineering/test-quality/scripts/lint-tests.mjs +574 -0
  522. package/skills/engineering/test-quality/scripts/lint-tests.test.mjs +591 -0
  523. package/skills/engineering/test-quality/scripts/mock-policy-config.mjs +176 -0
  524. package/skills/engineering/test-quality/scripts/mock-policy-config.test.mjs +119 -0
  525. package/skills/engineering/test-quality/scripts/persist-conventions-core.mjs +117 -0
  526. package/skills/engineering/test-quality/scripts/persist-conventions.mjs +17 -0
  527. package/skills/engineering/test-quality/scripts/persist-conventions.test.mjs +104 -0
  528. package/skills/risk-compliance/compliance-audit/LICENSE +3 -0
  529. package/skills/risk-compliance/compliance-audit/SKILL.md +439 -0
  530. package/skills/risk-compliance/compliance-audit/references/findings-schema.md +293 -0
  531. package/skills/risk-compliance/compliance-audit/references/normalization-rules.md +45 -0
  532. package/skills/risk-compliance/compliance-audit/references/vars-checklist.md +1068 -0
  533. package/skills/risk-compliance/compliance-audit/references/vars-findings-schema.md +398 -0
  534. package/skills/risk-compliance/compliance-audit/release-check.mjs +93 -0
  535. package/skills/risk-compliance/compliance-audit/scripts/compliance-audit.test.mjs +14 -0
  536. package/skills/risk-compliance/compliance-audit/scripts/export_tracker_xlsx.py +221 -0
  537. package/skills/risk-compliance/compliance-audit/scripts/reconcile_tracker.py +458 -0
  538. package/skills/risk-compliance/compliance-audit/scripts/test_export_tracker_xlsx.py +97 -0
  539. package/skills/risk-compliance/compliance-audit/scripts/test_validate_tracker.py +157 -0
  540. package/skills/risk-compliance/compliance-audit/scripts/validate_tracker.py +829 -0
  541. package/skills/risk-compliance/contract-compare/LICENSE +3 -0
  542. package/skills/risk-compliance/contract-compare/SKILL.md +199 -0
  543. package/skills/risk-compliance/contract-compare/references/comparison-dimensions.md +209 -0
  544. package/skills/risk-compliance/contract-compare/release-check.mjs +93 -0
  545. package/skills/risk-compliance/contract-review/LICENSE +3 -0
  546. package/skills/risk-compliance/contract-review/SKILL.md +240 -0
  547. package/skills/risk-compliance/contract-review/references/review-criteria.md +223 -0
  548. package/skills/risk-compliance/contract-review/release-check.mjs +93 -0
  549. package/skills/risk-compliance/doc-authenticity/LICENSE +3 -0
  550. package/skills/risk-compliance/doc-authenticity/SKILL.md +160 -0
  551. package/skills/risk-compliance/doc-authenticity/agents/openai.yaml +8 -0
  552. package/skills/risk-compliance/doc-authenticity/manual-invocation.test.mjs +12 -0
  553. package/skills/risk-compliance/doc-authenticity/references/agreement.md +66 -0
  554. package/skills/risk-compliance/doc-authenticity/references/bank-statement.md +150 -0
  555. package/skills/risk-compliance/doc-authenticity/references/forensic-signals.md +157 -0
  556. package/skills/risk-compliance/doc-authenticity/references/image-signals.md +114 -0
  557. package/skills/risk-compliance/doc-authenticity/references/invoice.md +66 -0
  558. package/skills/risk-compliance/doc-authenticity/references/issuer-profiles.md +86 -0
  559. package/skills/risk-compliance/doc-authenticity/references/verdict-and-report.md +95 -0
  560. package/skills/risk-compliance/doc-authenticity/references/verdict.schema.json +81 -0
  561. package/skills/risk-compliance/doc-authenticity/release-check.mjs +93 -0
  562. package/skills/risk-compliance/doc-authenticity/scripts/image_forensics.py +294 -0
  563. package/skills/risk-compliance/doc-authenticity/scripts/pdf_forensics.py +401 -0
  564. package/skills/risk-compliance/doc-authenticity/scripts/validate_codes.py +224 -0
  565. package/skills/risk-compliance/doc-authenticity/scripts/validate_verdict.py +308 -0
  566. package/skills/risk-compliance/doc-authenticity/scripts/validate_verdict.test.mjs +212 -0
  567. package/skills/risk-compliance/fraud-analysis/LICENSE +3 -0
  568. package/skills/risk-compliance/fraud-analysis/SKILL.md +114 -0
  569. package/skills/risk-compliance/fraud-analysis/references/archetypes/authorized-payment-scam.md +41 -0
  570. package/skills/risk-compliance/fraud-analysis/references/archetypes/first-party-fraud.md +44 -0
  571. package/skills/risk-compliance/fraud-analysis/references/archetypes/third-party-fraud.md +27 -0
  572. package/skills/risk-compliance/fraud-analysis/references/contexts/bank-transfer.md +24 -0
  573. package/skills/risk-compliance/fraud-analysis/references/contexts/card-payment.md +30 -0
  574. package/skills/risk-compliance/fraud-analysis/references/contexts/payment-collection.md +20 -0
  575. package/skills/risk-compliance/fraud-analysis/references/contexts/payout.md +20 -0
  576. package/skills/risk-compliance/fraud-analysis/references/feature-engineering.md +158 -0
  577. package/skills/risk-compliance/fraud-analysis/references/mechanisms/account-takeover.md +36 -0
  578. package/skills/risk-compliance/fraud-analysis/references/report-rationale.md +45 -0
  579. package/skills/risk-compliance/fraud-analysis/references/report-template.md +190 -0
  580. package/skills/risk-compliance/fraud-analysis/references/review-checklist.md +175 -0
  581. package/skills/risk-compliance/fraud-analysis/references/taxonomy.md +79 -0
  582. package/skills/risk-compliance/fraud-analysis/references/terminology.md +108 -0
  583. package/skills/risk-compliance/fraud-analysis/references/workflow.md +175 -0
  584. package/skills/risk-compliance/fraud-analysis/release-check.mjs +93 -0
  585. package/skills/risk-compliance/payment-analysis/LICENSE +3 -0
  586. package/skills/risk-compliance/payment-analysis/SKILL.md +180 -0
  587. package/skills/risk-compliance/payment-analysis/references/auth-rate-actions.md +30 -0
  588. package/skills/risk-compliance/payment-analysis/references/chargebacks.md +208 -0
  589. package/skills/risk-compliance/payment-analysis/references/chinese-polish.md +51 -0
  590. package/skills/risk-compliance/payment-analysis/references/event-layers.md +127 -0
  591. package/skills/risk-compliance/payment-analysis/references/fx.md +59 -0
  592. package/skills/risk-compliance/payment-analysis/references/journey.md +79 -0
  593. package/skills/risk-compliance/payment-analysis/references/metrics.md +67 -0
  594. package/skills/risk-compliance/payment-analysis/references/report-template.md +119 -0
  595. package/skills/risk-compliance/payment-analysis/references/terminology.md +95 -0
  596. package/skills/risk-compliance/payment-analysis/references/visualization.md +56 -0
  597. package/skills/risk-compliance/payment-analysis/release-check.mjs +93 -0
  598. package/skills/risk-compliance/report-writing/LICENSE +3 -0
  599. package/skills/risk-compliance/report-writing/SKILL.md +220 -0
  600. package/skills/risk-compliance/report-writing/references/audit-report-template.md +121 -0
  601. package/skills/risk-compliance/report-writing/references/external-assessment-template.md +167 -0
  602. package/skills/risk-compliance/report-writing/references/management-report-template.md +145 -0
  603. package/skills/risk-compliance/report-writing/references/vars-report-template.md +224 -0
  604. package/skills/risk-compliance/report-writing/release-check.mjs +93 -0
  605. package/skills/risk-compliance/similar-domain/LICENSE +3 -0
  606. package/skills/risk-compliance/similar-domain/SKILL.md +203 -0
  607. package/skills/risk-compliance/similar-domain/references/entities.md +67 -0
  608. package/skills/risk-compliance/similar-domain/references/fingerprints.md +134 -0
  609. package/skills/risk-compliance/similar-domain/references/pivots.md +82 -0
  610. package/skills/risk-compliance/similar-domain/references/report-template.md +93 -0
  611. package/skills/risk-compliance/similar-domain/references/scoring.md +130 -0
  612. package/skills/risk-compliance/similar-domain/references/terminology.md +41 -0
  613. package/skills/risk-compliance/similar-domain/references/workflow.md +85 -0
  614. package/skills/risk-compliance/similar-domain/release-check.mjs +93 -0
  615. package/skills/risk-compliance/tld-detection/LICENSE +3 -0
  616. package/skills/risk-compliance/tld-detection/SKILL.md +245 -0
  617. package/skills/risk-compliance/tld-detection/agents/openai.yaml +9 -0
  618. package/skills/risk-compliance/tld-detection/references/chinese-polish.md +55 -0
  619. package/skills/risk-compliance/tld-detection/references/clean.md +51 -0
  620. package/skills/risk-compliance/tld-detection/references/clustering.md +235 -0
  621. package/skills/risk-compliance/tld-detection/references/decision.md +189 -0
  622. package/skills/risk-compliance/tld-detection/references/fx-conversion.md +232 -0
  623. package/skills/risk-compliance/tld-detection/references/report-template.md +272 -0
  624. package/skills/risk-compliance/tld-detection/references/streams.md +141 -0
  625. package/skills/risk-compliance/tld-detection/references/terminology.md +95 -0
  626. package/skills/risk-compliance/tld-detection/references/workflow.md +95 -0
  627. package/skills/risk-compliance/tld-detection/release-check.mjs +93 -0
  628. package/skills/risk-compliance/tld-detection/scripts/detect_ladders.py +390 -0
  629. package/skills/risk-compliance/tld-detection/scripts/detect_ladders.test.mjs +14 -0
  630. package/skills/risk-compliance/tld-detection/scripts/detect_streams.py +650 -0
  631. package/skills/risk-compliance/tld-detection/scripts/detect_streams.test.mjs +14 -0
  632. package/skills/risk-compliance/tld-detection/tests/test_detect_ladders.py +134 -0
  633. package/skills/risk-compliance/tld-detection/tests/test_detect_streams.py +520 -0
@@ -0,0 +1,215 @@
1
+ ---
2
+ name: resolve-release
3
+ description: "Slash/explicit-only (/resolve-release). Full GitHub Flow release from main: freeze the latest CI-green trunk SHA, write the changelog, choose SemVer, merge the metadata cut through a verified PR, publish npm artifacts, or validate a Cloud Run candidate at 0% and expose it fully or as a canary. Asks its choices once at preflight (exposure full|canary, dark launch on|off, project-flow questions), follows a release flow (a predefined flow shipped with the skill, or the project's .release/flow.md extending one), then runs unattended. /rush-release is its no-questions shortcut. Do not auto-select. Use only on explicit user/orchestrator invoke. NOT for GitFlow/release-branch promotion and NOT for implementing a spec (resolve-issues)."
4
+ disable-model-invocation: true
5
+ metadata:
6
+ workflow-role: coordinator
7
+ release-version: 0.36.0
8
+ ---
9
+ **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
10
+ # Resolve release
11
+
12
+ Cut a **GitHub Flow** release from **main**. Freeze one already-green trunk
13
+ SHA, write a metadata-only version cut on that parent, merge it through a
14
+ verified PR, and publish. When the human explicitly approved keeping an unused
15
+ final version after a failed RC, the cut stage can instead verify already-merged
16
+ prepared metadata without writing another cut. A tag-driven repository tags the
17
+ verified release source; a package-scoped dispatcher owns its own tags. For Cloud Run, validate one
18
+ candidate at 0% and expose it **fully** (0% -> 100%) or as a **canary**
19
+ (0% -> declared steps -> 100%). With **dark launch** on, features that ship
20
+ behind a default-off flag are listed in the plan and must still read off after
21
+ the release.
22
+
23
+ The skeleton below is fixed. What varies is chosen once at preflight or read
24
+ from the project's stored flow; after preflight the run asks nothing.
25
+
26
+ ```text
27
+ preflight (main + publisher + release flow)
28
+ -> choices: exposure, dark launch, flow questions (full mode asks; shortcut never does)
29
+ -> latest CI-green HEAD on main
30
+ -> changelog + SemVer plan (show as a record, write the receipt)
31
+ -> create + deliver metadata cut OR verify human-approved prepared metadata
32
+ -> root-tag npm: final tag -> watch publish
33
+ -> workspace npm: dispatch each package -> verify registry, provenance, tag
34
+ -> Cloud Run: rc tag -> candidate at 0% -> validate -> full or canary exposure
35
+ -> verify live (+ dark flags off) -> final tag
36
+ ```
37
+
38
+ This file is the workflow and index. Read the linked procedure immediately
39
+ before its stage; do not invent an unlinked substitute.
40
+
41
+ | Stage / concern | Procedure |
42
+ |---|---|
43
+ | Trunk, publisher, version files, choices | [references/preflight.md](references/preflight.md) |
44
+ | Release flows: predefined (`flows/`), project (`.release/flow.md`), `extends` | [references/flows.md](references/flows.md) |
45
+ | Independently versioned npm workspaces with a package-scoped dispatch publisher | [references/workspace-npm.md](references/workspace-npm.md) |
46
+ | Latest CI-green HEAD | [references/candidate.md](references/candidate.md) |
47
+ | Changelog, SemVer, file bump, commit | [references/cut.md](references/cut.md) |
48
+ | Human-approved reuse after a failed RC (no new metadata cut) | [references/prepared-metadata.md](references/prepared-metadata.md) |
49
+ | Tag, push, watch publisher | [references/publish.md](references/publish.md) |
50
+ | Cloud Run 0% -> 100%, verification, rollback | [references/promotion.md](references/promotion.md) |
51
+ | Canary exposure (0% -> steps -> 100%) | [references/canary.md](references/canary.md) |
52
+ | Dark launch (flags ship off, stay off) | [references/dark-launch.md](references/dark-launch.md) |
53
+
54
+ Run every script as
55
+ `node <skillsRoot>/resolve-release/scripts/<name>.mjs …` with the absolute skill
56
+ root this file was loaded from. A CWD-relative `scripts/…` path resolves in the
57
+ target repo and will not find these files.
58
+
59
+ ## Modes
60
+
61
+ | | Full mode (`/resolve-release`) | Shortcut mode (`/rush-release`) |
62
+ |---|---|---|
63
+ | Exposure | `full` or `canary` | always `full` |
64
+ | Dark launch | `on` or `off` | always `off` |
65
+ | Release flow | project flow, else `--flow <name>`, else none | same, with exposure full and dark off |
66
+ | Questions | once, at preflight, only for unresolved choices | none, ever |
67
+
68
+ Precedence for every choice: **invocation option > release flow > preflight
69
+ answer**. Full-mode options: `--exposure full|canary`, `--canary-steps 10,50`,
70
+ `--hold-minutes N`, `--dark on|off`, `--save-flow`; both modes accept
71
+ `--flow <predefined>` when the project has no flow of its own. Shortcut mode accepts none of
72
+ these; it refuses and points to `/resolve-release` when one is passed, when the
73
+ flow's `required` lists canary or dark, or when a flow question has no default.
74
+
75
+ ## Run invariants
76
+
77
+ - Trunk is `main`. Another default branch is a different workflow.
78
+ - The candidate is the newest SHA on `main` with green CI evidence for its
79
+ exact tree — not "the tip looks fine" and not a commit that is still pending.
80
+ - For an approved `metadata.mode: reuse-prepared` plan, the new frozen CI-green
81
+ main SHA is the RC/final source. Historical metadata cut/merge SHAs remain
82
+ separate provenance. Follow [prepared-metadata.md](references/prepared-metadata.md)
83
+ for mandatory provider/review/notes verification, a fresh distinct receipt and
84
+ no metadata-write permissions; never reuse the failed attempt's authority.
85
+ - For a newly created cut, its parent is that frozen SHA. Do not rebase, merge, or cherry-pick
86
+ later `main` onto the cut branch; the provider merge is a separate identity.
87
+ - Never publish an off-main cut. Use the configured queue when one exists;
88
+ otherwise require the repository's PR checks and permitted merge method.
89
+ Verify its exact merged SHA is reachable from `origin/main` and its Git tree
90
+ equals the approved cut tree (for reused metadata, require historical cut/merge
91
+ equality and the new source gates in `prepared-metadata.md`). Any post-freeze trunk content requires a new
92
+ plan; an unconfigured queue is not release evidence.
93
+ - Tags are immutable release identities: `vMAJOR.MINOR.PATCH` for root-tag
94
+ releases, or package-scoped names when the publisher owns tagging. Do not
95
+ move, delete, or force-push a remote tag.
96
+ - A Cloud Run release uses one immutable `vMAJOR.MINOR.PATCH-rc.N` tag to build
97
+ the candidate at 0%. The final tag is created only after that exact candidate
98
+ serves 100% and passes live verification; it must not trigger another deploy.
99
+ - Questions happen only in full mode's preflight choice step, and only for
100
+ choices (exposure, canary steps and hold, dark launch, flow `ask:` items) —
101
+ never for detected facts, never for authorization. The invocation plus those
102
+ answers authorizes the listed branch/commit, metadata PR delivery, candidate
103
+ build, conditional traffic shifts, rollback, final tag, optional GitHub
104
+ Release, and publisher watch as one operation. Show the complete plan before
105
+ the first mutation so the user can interrupt, then proceed. Do not ask cut,
106
+ merge, RC, exposure-step, tag, finalization, or publish questions, and do not
107
+ ask "shall I proceed".
108
+ - Before the first mutation, write `.git/<invoked-skill>-authorization.json`
109
+ (`rush-release-authorization.json` or `resolve-release-authorization.json`;
110
+ prepared-metadata reuse instead exclusively creates a fresh receipt at the
111
+ distinct path in [prepared-metadata.md](references/prepared-metadata.md)).
112
+ Bind the repository, SHA, version, tags, mode, separate mutations, gate
113
+ coordinates, freshness, the invocation time as the authorization time, expiry,
114
+ and permission status; record `authorizedBy: invocation`. Full mode also
115
+ records `choices` (with their sources), and any run with a release flow
116
+ records `flowSha256`; a normal-cut shortcut run without a flow writes exactly the
117
+ original receipt. Resume and callbacks act only on the receipt's exact plan.
118
+ Never store secrets or reconstruct the plan from chat.
119
+ - Preflight facts are detected, not confirmed by the user. Every non-choice has
120
+ a deterministic default (SemVer from conventional commits, the derived
121
+ changelog, every changed package); a value the user stated at invocation wins.
122
+ If the plan's frozen SHA, version/tag, metadata diff, publisher, choices, or
123
+ outward actions later change, record one replacement plan, show it, and
124
+ continue under the same invocation. Hand back only when no valid plan exists,
125
+ never to ask permission.
126
+ - On callback or resume, re-read the receipt, provider evidence, live
127
+ coordinates, and the release flow's hash. Exact matches become `executable`,
128
+ then `consumed` immediately before mutation. Otherwise record `invalidated` or
129
+ `failed` and do nothing. Never infer one permission from another or replay a
130
+ consumed permission.
131
+ - A pre-exposure failure is a hand-back with production untouched. A known
132
+ post-exposure failure (including a dark flag found on) automatically restores
133
+ and verifies the recorded incumbent. Ambiguous production state is a stop for
134
+ operator recovery.
135
+ - The cut is metadata only (changelog + version identity files). Refuse a
136
+ cut that changes product code.
137
+ - Turning a flag on is never part of a release. A release flow can fill slots
138
+ and add steps; it cannot change this skeleton, these invariants, or the
139
+ manual-only invocation of either mode.
140
+
141
+ ## Workflow
142
+
143
+ ### 1. Preflight and choices
144
+
145
+ Load and validate the release flow, verify `main` is the trunk, detect npm
146
+ and/or the staged Cloud Run contract, and identify whether version/publish
147
+ authority is at the root or per workspace. Then resolve the choices with
148
+ `flow.mjs resolve`: full mode asks the returned questions once, shortcut mode
149
+ takes the preset and refuses what it cannot answer. Details:
150
+ [preflight.md](references/preflight.md), [flows.md](references/flows.md).
151
+
152
+ For a package-scoped dispatch publisher, follow [workspace-npm.md](references/workspace-npm.md)
153
+ from candidate selection through final verification. Do not run the root-tag
154
+ candidate/plan/apply scripts on a private monorepo root or synthesize a `v*`
155
+ tag for a workflow that publishes only by package dispatch.
156
+
157
+ ### 2. Candidate (root-tag / Cloud Run)
158
+
159
+ Fetch `origin/main` and pick the newest green SHA. Freeze it. Details:
160
+ [candidate.md](references/candidate.md).
161
+
162
+ ### 3. Plan and record (root-tag / Cloud Run)
163
+
164
+ Derive the changelog and SemVer bump from `baselineTag..frozenSHA`, unless the
165
+ human explicitly approved the prepared-metadata route. That route passes
166
+ `--prepared-metadata <file>`, preserves the unused version with `bump: none`, and
167
+ reads notes from the reviewed new target, not from the old attempt. For Cloud
168
+ Run, pass `--cloud-run` so the plan also identifies the next unused RC tag. With
169
+ dark launch on for a new cut, pass the listed flags with `--dark-flags`; reuse
170
+ instead verifies the notes already reviewed in the target
171
+ ([dark-launch.md](references/dark-launch.md)). Show SHA, bump, version, tags,
172
+ files, publisher, choices, notes, and every outward action, write the receipt,
173
+ and proceed. Details: [cut.md](references/cut.md).
174
+
175
+ ### 4. Cut (root-tag / Cloud Run)
176
+
177
+ Choose one route. For a normal cut, run the flow's `before-cut` steps, then
178
+ branch from the frozen SHA, apply the changelog and version files, and commit;
179
+ keep the diff metadata-only. For `reuse-prepared`, perform all mandatory
180
+ [prepared-metadata.md](references/prepared-metadata.md) checks and output its
181
+ verified source and evidence bindings without `apply`, metadata writes, cut
182
+ hooks or a new PR.
183
+
184
+ ### 5. Merge and publish (root-tag / Cloud Run)
185
+
186
+ Push the cut ref, merge its PR using the repository's delivery policy, and
187
+ verify the exact merged SHA on `main`. The verified-prepared route skips that
188
+ new PR delivery and converges here using its new frozen target as the release
189
+ source, not its historical metadata merge. A root-tag artifact release pushes the
190
+ final tag and watches npm. A v2 `pre-tag` npm reuse attempt has no RC and must
191
+ first pass the fresh read-only registry-absence and final-ref gates described in
192
+ [publish.md](references/publish.md#node-pre-tag-registry-gate). This does not
193
+ recover an artifact attempt whose immutable final tag already exists.
194
+ A staged Cloud Run release pushes its RC tag, executes
195
+ [promotion.md](references/promotion.md) (with [canary.md](references/canary.md)
196
+ for canary exposure), and creates the final tag only after live verification.
197
+ Details: [publish.md](references/publish.md).
198
+
199
+ ## Done
200
+
201
+ Success is the planned version tagged at the verified release source on `main`
202
+ (the newly frozen target for reuse) and
203
+ visible on the remote. npm must report the version when selected. Cloud Run
204
+ must report the exact candidate serving 100%, the incumbent at 0%, an ALIVE
205
+ `prod-active` verdict, and — with dark launch on — every dark flag reading off.
206
+ Hand back the cut SHA, merged SHA, RC/final tags, changelog excerpt, choices,
207
+ publisher and traffic evidence, and the merged metadata PR. For reuse also
208
+ hand back the new release source, both notes digests, historical metadata
209
+ identities, fresh receipt path and mandatory verification outputs. With `--save-flow`,
210
+ open the flow PR after the release ([flows.md](references/flows.md)).
211
+ On final handoff, close the run in the harness: mark the goal complete
212
+ (`update_goal` with `complete`), which also releases the workflow, whether the
213
+ release is done or hands back a blocker; never pause it for a reply. A blocker's
214
+ handoff names what failed, its evidence, and what a rerun needs; a later
215
+ invocation picks it up.
@@ -0,0 +1,8 @@
1
+ interface:
2
+ display_name: "Resolve Release"
3
+ short_description: "Slash/explicit-only GitHub Flow release: full or canary exposure, dark launch, project flow"
4
+
5
+ policy:
6
+ # Codex counterpart to SKILL.md disable-model-invocation: true.
7
+ # Keeps $resolve-release / explicit invoke while blocking description-based selection.
8
+ allow_implicit_invocation: false
@@ -0,0 +1,13 @@
1
+ ---
2
+ description: Cloud Run service built from an RC tag at 0% traffic, validated, then exposed through canary steps before 100%
3
+ route: cloud-run
4
+ exposure: canary
5
+ canary:
6
+ steps: [10, 50]
7
+ holdMinutes: 15
8
+ ---
9
+
10
+ # Cloud Run release (canary exposure)
11
+
12
+ A project extending this flow sets `canary.healthCheck` to its read-only
13
+ command that judges each hold; without it the canary is refused.
@@ -0,0 +1,7 @@
1
+ ---
2
+ description: Cloud Run service built from an RC tag at 0% traffic, validated, then shifted to 100% in one step
3
+ route: cloud-run
4
+ exposure: full
5
+ ---
6
+
7
+ # Cloud Run release (full exposure)
@@ -0,0 +1,13 @@
1
+ ---
2
+ description: One version for the repository, published by pushing a vX.Y.Z tag (for example a single npm package)
3
+ route: root-tag
4
+ exposure: n/a
5
+ ---
6
+
7
+ # Root-tag npm release
8
+
9
+ ## before-cut
10
+ - run the repository's documented verify command on the frozen SHA
11
+
12
+ ## after-publish
13
+ - `npm view <package>@<version> version` prints the planned version
@@ -0,0 +1,22 @@
1
+ ---
2
+ description: Independently versioned npm workspaces, published one package at a time by a package-scoped dispatch workflow that owns its tags
3
+ route: workspace-npm
4
+ changelog: package-scoped
5
+ registry: https://registry.npmjs.org/
6
+ exposure: n/a
7
+ ---
8
+
9
+ # Workspace npm release
10
+
11
+ A project extending this flow names its `publisher` (workflow and package input)
12
+ and any `packages` to exclude or publish last.
13
+
14
+ ## before-cut
15
+ - run the repository's documented verify command on the frozen SHA
16
+ - `npm publish --dry-run -w <workspace> --registry=<registry>` for each selected package
17
+
18
+ ## after-publish
19
+ - `npm view <package> version --registry=<registry>` prints the planned version
20
+
21
+ ## hand-back-if
22
+ - a selected package has never been published on npm (a trusted-publishing first publish needs a human npm login)
@@ -0,0 +1,51 @@
1
+ # Canary exposure
2
+
3
+ > Read when: exposure is `canary` and the Cloud Run candidate has passed its 0% validation in [promotion.md](promotion.md).
4
+
5
+ A canary moves a slice of real traffic to the candidate, holds, judges it, and
6
+ widens, before the final 100% shift. It replaces only the single shift in
7
+ [promotion.md](promotion.md) section 3; binding, 0% validation, live
8
+ verification, and failure routing are unchanged. Full mode only — the shortcut
9
+ never runs this.
10
+
11
+ ## Preconditions
12
+
13
+ Preflight recorded, from the repository and never improvised:
14
+
15
+ - `steps`: strictly increasing percentages below 100 (for example `10, 50`);
16
+ - `holdMinutes`: how long each step holds before it is judged;
17
+ - `healthCheck`: a read-only repository command that judges a hold, run against
18
+ the live service with the candidate serving that step's share;
19
+ - the exact command that splits traffic between the candidate revision and the
20
+ recorded incumbent by percentage, per service, in dependency order.
21
+
22
+ A missing item is a refusal at preflight, before anything is tagged.
23
+
24
+ ## Sequence
25
+
26
+ For each step `p` in order:
27
+
28
+ 1. Re-read candidate identity and traffic. Require the candidate at the
29
+ previous step's share (0% for the first) and the incumbent holding the rest;
30
+ anything else is ambiguous state.
31
+ 2. Consume that step's traffic-shift permission, then split every affected
32
+ service to candidate `p%` / incumbent `(100-p)%` in dependency order. Read
33
+ traffic back after each command.
34
+ 3. Hold `holdMinutes` with one background wait — no foreground polling.
35
+ 4. Run `healthCheck`. Require a passing, read-only result stamped for this
36
+ step. Record step, share, start/end, and the verdict.
37
+
38
+ After the last step passes, perform the full 100% shift exactly as
39
+ [promotion.md](promotion.md) section 3 describes, then section 4's live
40
+ verification. Only that state permits the final tag.
41
+
42
+ ## Failure
43
+
44
+ - A failed split or health check at any step is a known post-exposure failure:
45
+ restore every service to its recorded incumbent at 100% in reverse dependency
46
+ order, restore durable processing, and verify incumbent 100%, candidate 0%,
47
+ and `prod-active` ALIVE before hand-back.
48
+ - A traffic reading that matches neither the planned step nor the incumbent is
49
+ ambiguous: stop all writes and hand back the last known-good evidence.
50
+ - Never skip a step, lengthen or shorten a hold, retry a failed step, or widen
51
+ past a failed judgment. A new attempt is a new plan with a new RC tag.
@@ -0,0 +1,41 @@
1
+ # Candidate
2
+
3
+ > Read when: picking the SHA to freeze; how CI evidence is checked per exact tree and why a pending tip is never a candidate.
4
+
5
+ This picker is for root-tag and staged Cloud Run releases. For independently
6
+ versioned npm workspaces with a package-scoped dispatcher, use the exact-tree
7
+ PR-CI candidate gate in [workspace-npm.md](workspace-npm.md); a PR-only CI
8
+ repository need not have checks on the merge commit itself.
9
+
10
+ The release candidate is the newest commit that is on `main` and already green.
11
+ The current tip is eligible only when that exact SHA is green.
12
+
13
+ ## Procedure
14
+
15
+ 1. Fetch `origin/main`.
16
+ 2. Walk first-parent history of `origin/main`, newest first.
17
+ 3. Run the picker:
18
+
19
+ ```bash
20
+ node <skillsRoot>/resolve-release/scripts/green-head.mjs --trunk main --json
21
+ ```
22
+
23
+ 4. Freeze `candidateSha` from the JSON. Do not keep walking after a green SHA
24
+ in the hope of a "nicer" commit.
25
+ 5. If the script exits 1 (`no-green-head`), stop. Repair CI or wait; do not
26
+ release a pending or failed SHA, and do not treat "no checks configured" as
27
+ green.
28
+
29
+ ## Why freeze
30
+
31
+ `main` keeps moving. The changelog, the bump, and the tag all describe one
32
+ commit. If a later commit lands while you write notes, including it would ship
33
+ code that never passed this candidate check.
34
+
35
+ The frozen SHA is normally the **parent of the cut**, not yet the tag. Version
36
+ files still need a metadata commit on top; that child is what gets tagged
37
+ ([cut.md](cut.md)). For explicitly approved prepared-metadata reuse, this newly
38
+ frozen SHA is instead the release source itself: the metadata is already in
39
+ its reviewed tree. All exact-tree CI/main gates still apply; old cut/merge/RC
40
+ identities are provenance, never substitutes for this target's green evidence
41
+ ([prepared-metadata.md](prepared-metadata.md)).
@@ -0,0 +1,131 @@
1
+ # Cut
2
+
3
+ > Read when: turning the frozen SHA into the plan record and the metadata-only version commit (root-tag and Cloud Run routes).
4
+
5
+ This root-tag cut does not bump independently versioned npm workspaces. For
6
+ package-scoped dispatch publishing, use [workspace-npm.md](workspace-npm.md).
7
+
8
+ Turn the frozen SHA into a versioned commit without taking later trunk commits
9
+ along for the ride. The cut stage has two routes: the normal create-and-deliver
10
+ procedure below, or, only with explicit human keep-version/reuse approval,
11
+ [verify already-prepared metadata](prepared-metadata.md). A `metadata.mode:
12
+ reuse-prepared` plan follows that reference's mandatory checks and fresh receipt
13
+ rules instead of section 3: no `apply`, new metadata commit, empty PR or cut
14
+ write permissions. Both routes converge on the existing publish stage.
15
+
16
+ ## 1. Plan
17
+
18
+ ```bash
19
+ node <skillsRoot>/resolve-release/scripts/plan.mjs --sha <candidateSha> --json \
20
+ > /tmp/release-plan.json
21
+ # Add --cloud-run when preflight selected cloud-run-staged.
22
+ # Add --dark-flags <list.json> when dark launch is on (dark-launch.md).
23
+ ```
24
+
25
+ The plan names `baselineTag`, `currentVersion`, `bump`, `reason`,
26
+ `nextVersion`, final `tag`, optional `candidateTag`, `changelogMarkdown`, and
27
+ `versionFiles`; with dark launch on, also `darkFlags` and a `### Shipped dark`
28
+ changelog section. Without `--dark-flags` the plan is byte-for-byte what the
29
+ shortcut has always produced.
30
+
31
+ For approved reuse, add `--prepared-metadata <file>` with the versioned schema
32
+ in [prepared-metadata.md](prepared-metadata.md). Its `--sha` is the newly frozen
33
+ CI-green main target; its `bump` is `none`. The notes are read and digested from
34
+ that target's reviewed version section, never rendered as a new cut. Its
35
+ historical notes digest and cut/merge/previous-attempt identities remain
36
+ separate. Local planner success does not establish provider CI or PR status.
37
+
38
+ Before showing the plan, use `git ls-remote --tags origin` to prove the proposed
39
+ candidate and final tags are both unused remotely. Local tag discovery chooses
40
+ the next RC ordinal; remote absence is the collision authority.
41
+
42
+ SemVer (0.x treats breaking as minor unless the invocation asks for strict):
43
+
44
+ | Content since baseline | Bump |
45
+ |---|---|
46
+ | breaking (`feat!:`, `BREAKING CHANGE:`) | major (minor under 0.x) |
47
+ | `feat:` | minor |
48
+ | otherwise | patch |
49
+
50
+ Changelog entries come from conventional-commit subjects in
51
+ `baselineTag..candidateSha` (or the recent first-parent log when there is no
52
+ tag). Keep an existing `## [Unreleased]` body — derived entries merge with it,
53
+ they do not replace it.
54
+
55
+ ## 2. Record the plan
56
+
57
+ Show the frozen SHA, proposed version/tag(s), bump reason, changelog, version
58
+ files, publisher/deployment mode, and the complete outward-action sequence: create the cut
59
+ branch/commit, push it, deliver its metadata PR through the queue, push the
60
+ immutable tag(s), validate and conditionally promote Cloud Run when applicable,
61
+ create a GitHub Release when required, and watch the publisher. Full mode also
62
+ shows the resolved choices (exposure, canary steps and hold, dark launch and its
63
+ flags, flow answers), and any run with a release flow shows its steps per stage.
64
+ This is a record, not a question: the invocation (plus full mode's preflight
65
+ answers) already authorized the entire sequence. Do not ask whether to proceed.
66
+ Every non-choice has a deterministic default: the bump from the table above,
67
+ the derived changelog merged with `## [Unreleased]`, the next unused tags. A
68
+ bump or notes the user stated at invocation win, as long as the bump is still
69
+ SemVer.
70
+
71
+ Do not create a branch, edit files, or tag before the plan is shown and the
72
+ receipt below is written; after that, proceed through publication without
73
+ asking cut, merge, RC, exposure, tag, finalization, or publish questions.
74
+ Repository/provider checks are gates the orchestrator evaluates, not reasons to
75
+ ask the human to confirm facts. When the frozen SHA, version/tag, metadata
76
+ diff, publisher, or outward actions change, replace the whole plan, show the
77
+ replacement, and continue under the same invocation. A retry or resume of the
78
+ unchanged plan inherits the original receipt.
79
+
80
+ For reuse, show only the applicable action sequence: verify prepared metadata
81
+ and the new source, publish, and promote if applicable. Show both notes digests,
82
+ new source, historical provenance and previous receipt digest; do not list cut
83
+ writes or PR delivery as permissions. Follow the distinct exclusive receipt
84
+ path and required stage outputs in [prepared-metadata.md](prepared-metadata.md),
85
+ not the normal fixed-path receipt below. Never read or reset the old receipt.
86
+
87
+ Before the first mutation, write `.git/<invoked-skill>-authorization.json` with
88
+ `authorizedBy: invocation` and the invocation time as the authorization time.
89
+ Record the plan coordinates, predicates, expiry, and separate candidate,
90
+ traffic-shift, rollback, final-tag, and GitHub Release permissions. A canary
91
+ records one traffic-shift permission per step. Full mode adds `choices` and
92
+ their `sources`; a run with a release flow adds `flowSha256`.
93
+ Start each permission as `pending-conditions`. Add later coordinates only from
94
+ the named provider evidence; once added, they are immutable. Plan drift
95
+ invalidates the receipt. Store no secrets, callback URLs, or protected data.
96
+
97
+ ## 3. Apply and commit
98
+
99
+ Branch from the frozen SHA only:
100
+
101
+ ```bash
102
+ git switch -c release/<tag> <candidateSha>
103
+ jq -r '.changelogMarkdown' /tmp/release-plan.json | \
104
+ node <skillsRoot>/resolve-release/scripts/apply.mjs \
105
+ --version <nextVersion> --date <YYYY-MM-DD> \
106
+ --changelog-section - --json
107
+ git add -- <paths from apply>
108
+ git commit -m "chore(release): <nextVersion>"
109
+ ```
110
+
111
+ `apply.mjs` requires the recorded plan's `changelogMarkdown` on stdin, writes
112
+ that section, and bumps the discovered identity files. It refuses a missing or
113
+ empty changelog section rather than silently replacing the plan with a bare
114
+ version heading. When the plan names `skills/distribution/manifest.json`, it
115
+ delegates to `distribution.mjs version-cut`; that operation updates the repository
116
+ release identity, stamps it and the generated release checker into every active
117
+ first-party skill, and regenerates deterministic artifacts. If any step fails it
118
+ restores every touched file.
119
+ If the invocation supplied notes, write that markdown to stdin instead of the
120
+ raw plan field.
121
+
122
+ Then:
123
+
124
+ - Diff must be metadata only. If product code changed, reset and stop.
125
+ - `git rev-parse HEAD^` must equal the frozen SHA.
126
+ - Do not rebase onto a newer `main`, merge `main` in, or squash onto a moved
127
+ tip. Any of those would tag commits this candidate check never saw.
128
+
129
+ The cut SHA is `HEAD` after the commit. It is the immutable PR-head identity;
130
+ the release identity is the provider's verified merged SHA on `main`.
131
+ Proceed to [publish.md](publish.md).
@@ -0,0 +1,66 @@
1
+ # Dark launch
2
+
3
+ > Read when: dark launch is `on` — listing the flags that ship off in this release, adding them to the plan and changelog, and proving they are still off after it.
4
+
5
+ Dark launch separates **shipping code** from **exposing behavior**: a new
6
+ feature merges behind a feature flag whose default is off, the release puts
7
+ the code live, and turning the flag on is a later, separate decision. A release
8
+ never turns a flag on. Full mode only — the shortcut runs with dark launch off.
9
+
10
+ ## Flag registry
11
+
12
+ The repository declares one registry file (JSON or YAML), named by the flow's
13
+ `flagRegistry` or `--flag-registry`:
14
+
15
+ ```json
16
+ { "flags": { "bulk-refunds": { "default": false, "description": "Bulk refunds" } } }
17
+ ```
18
+
19
+ Every flag has a `default`. Off means `false`, `0`, `"off"`, `"false"`, or
20
+ `"disabled"`. The repository also documents a read-only command that reports
21
+ each flag's **live** value in production (Cloud Run); without it, the live check
22
+ cannot run and dark launch is refused at preflight for Cloud Run.
23
+
24
+ ## 1. List the flags shipping dark
25
+
26
+ ```bash
27
+ node <skillsRoot>/resolve-release/scripts/dark-flags.mjs list \
28
+ --registry <path> --base <baselineTag> --sha <candidateSha> --json > /tmp/dark-flags.json
29
+ ```
30
+
31
+ A flag ships dark when it is in the registry at the candidate but not at the
32
+ baseline, or when a commit in the range carries a `Dark-Launch: <flag>`
33
+ trailer. Exit 1 — a trailer naming an unregistered flag, or a dark flag whose
34
+ default is not off — is a pre-cut hand-back: the release would expose
35
+ behavior it claims to hide.
36
+
37
+ ## 2. Plan and changelog
38
+
39
+ Pass the list to the plan:
40
+
41
+ ```bash
42
+ node <skillsRoot>/resolve-release/scripts/plan.mjs --sha <candidateSha> --json \
43
+ --dark-flags /tmp/dark-flags.json [--cloud-run] > /tmp/release-plan.json
44
+ ```
45
+
46
+ The plan gains `darkFlags` and a `### Shipped dark` changelog section, one line
47
+ per flag. The SemVer bump is unchanged: the code did ship. Show the flags in the
48
+ plan record and record them in the receipt.
49
+
50
+ ## 3. Verify they stayed off
51
+
52
+ After the release is live (Cloud Run: in [promotion.md](promotion.md)'s live
53
+ verification, before the final tag), read each flag's live value with the
54
+ repository command into `{ "<flag>": <value> }`, then:
55
+
56
+ ```bash
57
+ node <skillsRoot>/resolve-release/scripts/dark-flags.mjs check \
58
+ --flags /tmp/dark-flags.json --observed /tmp/dark-flags-live.json
59
+ ```
60
+
61
+ A flag that is on, or has no reading, is a failed live check: roll back per
62
+ [promotion.md](promotion.md) section 5 and hand back. Do not turn the flag off
63
+ yourself — that is an operator decision outside the release.
64
+
65
+ For npm routes there is no live service; step 1's default-off check is the
66
+ proof, and the published package carries the registry as shipped.