@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,94 @@
1
+ # Checklist
2
+
3
+ The core checks for every document. Run them alongside the reader test and the template's
4
+ `Done when`, against the same version. Write every finding down before fixing any.
5
+
6
+ ## Contents
7
+
8
+ - [Facts](#facts)
9
+ - [Argument](#argument)
10
+ - [Cut](#cut)
11
+ - [House style](#house-style)
12
+ - [Language](#language)
13
+
14
+ ## Facts
15
+
16
+ - Every name, number, date, obligation and claim traces to the brief, a source or a computed result.
17
+ - Nothing came from a template example, WRITING.md example or an earlier document.
18
+ - Each number keeps its period, denominator and unit where it is stated. Example: "approval rate
19
+ 62.40%" → of which attempts, in which window.
20
+ - Each gap uses the [gap markers](../../house-style/references/rules.md#gap-markers) and is listed
21
+ in the delivery note. No other placeholder remains: search for `{{`, `[Name]`, `XX`, `____`,
22
+ `lorem`, and bare `TBD` outside a table cell under a sentence naming who will agree it.
23
+ - Uncertainty that changes a decision is stated where the claim is made, with what it depends on.
24
+ - A period that runs past the data's cut-off or today's date is marked as partial. Example: an
25
+ "October" report written on 20 October → "1–19 October".
26
+ - Every link and image target exists. Example: `[方法说明](methodology.zh.md)` with no such file →
27
+ a finding.
28
+ - A hypothesis stays a hypothesis. Example: "payment-pattern names are inferred" → never "the
29
+ merchant runs a top-up business".
30
+
31
+ ## Argument
32
+
33
+ - The first paragraph gives the answer or the purpose, not the background.
34
+ - A reader who was not in the analysis can follow the conclusion. Example: "C1 is high priority
35
+ because of a 2x ladder at 100% single-country concentration" → name what a 2x ladder is, or say
36
+ what it means for the reader.
37
+ - Each section relies only on what the reader knows or an earlier section established.
38
+ - Each policy, rule or definition appears once; other places refer to it.
39
+ - Facts, assumptions, analysis and recommendations are distinguishable.
40
+ - The template's `Done when` questions all answer yes (or n/a for a section the brief's scope
41
+ removed).
42
+
43
+ ## Cut
44
+
45
+ Delete these; keep only what changes the reader's understanding or action.
46
+
47
+ - **The obvious.** A zero, an empty set or a default that the reader would assume. Example:
48
+ "0 sales failed to match an authorization" → delete; keep "267 October sales matched
49
+ authorizations from earlier months".
50
+ - **Method narration.** How a number was computed, when the method is standard or shown in a table.
51
+ Keep a method note only where a reader would otherwise misread the number.
52
+ - **One word doing every job.** A generic label repeated across headings, tables and prose.
53
+ Example: "证据" for data, fields, tables and records → say which: "历史明细表", "汇率来源及折算记录",
54
+ "缺少首次报送日期".
55
+ - **Repeats.** The same caveat in every section, a closing summary or verdict that restates the
56
+ opening, a table that repeats the prose.
57
+ - **Exhaustive detail in the body.** Diagnostic tables, full reconciliations and every tested
58
+ variant belong in an appendix, a collapsed view or the evidence file. Keep in the body what the
59
+ conclusion rests on.
60
+ - **Internal names.** Script, field or pipeline terms the reader never sees. Example: "合格授权",
61
+ "关联支持记录", `source_hash` → the business meaning from the sources; meaning unknown and the
62
+ reader needs the number → a gap; otherwise cut it.
63
+
64
+ ## House style
65
+
66
+ - Terms match TERMINOLOGY.md, else the bundled
67
+ [common terms](../../house-style/references/terminology-zh.md); no Avoid term appears in the sense
68
+ its row avoids.
69
+ - Every **Required** rule in WRITING.md and the template holds, unless the brief overrode it.
70
+ - `locked` text is verbatim.
71
+
72
+ ## Language
73
+
74
+ Remove these patterns; replace them with the specific claim or nothing:
75
+
76
+ - **Inflated significance**: "plays a pivotal role", "a testament to", "marks a significant
77
+ milestone".
78
+ - **Vague attribution**: "experts agree", "industry reports suggest" with no named source.
79
+ - **Filler openers and closers**: "It is important to note that", "In conclusion", a final
80
+ paragraph that repeats the summary.
81
+ - **Rhythm devices**: lists of exactly three adjectives, "not only … but also", "it's not X, it's Y".
82
+ - **Negative-first sentences** that make the reader invert them. Example: "未能匹配的销售为 0 笔"
83
+ → delete (obvious), or state the positive fact.
84
+ - **Stock words and jargon**: the banned lists in the house-style guides
85
+ ([English](../../house-style/references/style-en.md#words),
86
+ [中文](../../house-style/references/style-zh.md)).
87
+ - **Formatting tics**: bold on every other phrase, inline-header bullet lists for prose reasoning,
88
+ em dashes in place of every comma.
89
+ - **Chinese**: decorative 首先……其次……最后, a 总结 paragraph that restates the opening,
90
+ translation artifacts. Sentence-level Chinese wording is `polish-cn`'s job; record a wording
91
+ finding here only when it changes meaning or blocks understanding.
92
+
93
+ Do not swap in a generic personality either. The voice is the one in WRITING.md, else the language
94
+ guide.
@@ -0,0 +1,93 @@
1
+ #!/usr/bin/env node
2
+ import { spawnSync } from 'node:child_process';
3
+ import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
4
+ import { homedir } from 'node:os';
5
+ import { dirname, join } from 'node:path';
6
+ import { fileURLToPath } from 'node:url';
7
+
8
+ const DAY_MS = 24 * 60 * 60 * 1000;
9
+ const WEEK_MS = 7 * DAY_MS;
10
+ const here = dirname(fileURLToPath(import.meta.url));
11
+
12
+ function readJson(path, fallback = {}) {
13
+ try { return JSON.parse(readFileSync(path, 'utf8')); } catch { return fallback; }
14
+ }
15
+
16
+ function frontmatterValue(text, key) {
17
+ const frontmatter = /^---\n([\s\S]*?)\n---/.exec(text)?.[1] ?? '';
18
+ const match = new RegExp('^' + key + ':\\s*([^\\n]+)$', 'm').exec(frontmatter);
19
+ return match?.[1].trim().replace(/^['"]|['"]$/g, '') ?? null;
20
+ }
21
+
22
+ function repositoryOf(source) {
23
+ const value = String(source ?? '').trim();
24
+ const match = /^(?:git@github\.com:|https:\/\/github\.com\/)?([A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+?)(?:\.git)?$/.exec(value);
25
+ return match?.[1] ?? null;
26
+ }
27
+
28
+ function stableVersion(value) {
29
+ const match = /^v?(\d+)\.(\d+)\.(\d+)$/.exec(String(value ?? '').trim());
30
+ return match ? match.slice(1).map(Number) : null;
31
+ }
32
+
33
+ function newer(left, right) {
34
+ for (let index = 0; index < 3; index += 1) {
35
+ if (left[index] !== right[index]) return left[index] > right[index];
36
+ }
37
+ return false;
38
+ }
39
+
40
+ function writeCache(path, value) {
41
+ try {
42
+ mkdirSync(dirname(path), { recursive: true });
43
+ writeFileSync(path, JSON.stringify(value));
44
+ } catch { /* A read-only cache must not block skill use. */ }
45
+ }
46
+
47
+ function main(now = Date.now()) {
48
+ if (process.env.ONEABOVEIO_NO_UPDATE_CHECK) return;
49
+ const skill = readFileSync(join(here, 'SKILL.md'), 'utf8');
50
+ const name = frontmatterValue(skill, 'name');
51
+ const localVersion = stableVersion(frontmatterValue(skill, 'release-version'));
52
+ if (!name || !localVersion) return;
53
+
54
+ const lock = readJson(join(process.env.HOME || homedir(), '.agents', '.skill-lock.json'));
55
+ const entry = lock.skills?.[name];
56
+ const repository = repositoryOf(entry?.sourceUrl || entry?.source);
57
+ if (!repository) return;
58
+
59
+ const cacheRoot = process.env.XDG_CACHE_HOME || join(process.env.HOME || homedir(), '.cache');
60
+ const cachePath = join(cacheRoot, '1aboveio-skills', 'release-check.json');
61
+ const all = readJson(cachePath);
62
+ const cache = all[repository] && typeof all[repository] === 'object' ? all[repository] : {};
63
+
64
+ if (!cache.lastCheck || now - cache.lastCheck >= DAY_MS) {
65
+ const result = spawnSync('gh', ['api', 'repos/' + repository + '/releases/latest', '--jq', '.tag_name'], {
66
+ encoding: 'utf8',
67
+ stdio: ['ignore', 'pipe', 'ignore'],
68
+ timeout: 1500,
69
+ });
70
+ cache.lastCheck = now;
71
+ if (result.status === 0 && stableVersion(result.stdout)) cache.latestTag = result.stdout.trim();
72
+ else delete cache.latestTag;
73
+ all[repository] = cache;
74
+ writeCache(cachePath, all);
75
+ }
76
+
77
+ const latestVersion = stableVersion(cache.latestTag);
78
+ if (!latestVersion || !newer(latestVersion, localVersion)) return;
79
+ if (cache.notifiedTag === cache.latestTag && cache.notifiedAt && now - cache.notifiedAt < WEEK_MS) return;
80
+
81
+ cache.notifiedTag = cache.latestTag;
82
+ cache.notifiedAt = now;
83
+ all[repository] = cache;
84
+ writeCache(cachePath, all);
85
+ const command = `npx skills@1.5.23 add '${repository}#${cache.latestTag}' --global --agent universal claude-code --skill ${name} --yes`;
86
+ process.stdout.write(
87
+ `UPDATE_AVAILABLE: A newer 1AboveIO skills release (${cache.latestTag}) is available; this skill is `
88
+ + `v${localVersion.join('.')}. Ask once whether to refresh ${name}. On approval run \`${command}\`. `
89
+ + 'The refreshed instructions apply next session. Either way, continue the current task and do not ask again this session.\n',
90
+ );
91
+ }
92
+
93
+ try { main(); } catch { /* Update checks are advisory and always fail silent. */ }
@@ -0,0 +1,3 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 1AboveIO
@@ -0,0 +1,33 @@
1
+ ---
2
+ name: house-style
3
+ description: "Shared reference the writing skills read by path: WRITING.md lookup and precedence, template choice, gap markers, template shape, the bundled templates, and the default English and Chinese style guides. Never select or invoke it as a task."
4
+ disable-model-invocation: true
5
+ user-invocable: false
6
+ release-version: 0.36.0
7
+ ---
8
+ **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
9
+ # House style
10
+
11
+ Reference files the writing skills share. Read the one the calling skill names; do not run this
12
+ skill on its own. Writing a document → `write-doc`. Learning a style from approved documents →
13
+ `distill-writing`.
14
+
15
+ | Need | Read |
16
+ | --- | --- |
17
+ | Where WRITING.md is, which template, which rule wins, gap markers, template shape, who edits what | [rules](references/rules.md) |
18
+ | No WRITING.md, or a rule it does not cover | [defaults](references/defaults.md) |
19
+ | Sentences in English / in Chinese | [style-en](references/style-en.md) / [style-zh](references/style-zh.md) |
20
+ | Common Chinese terms (简体 and Hong Kong 繁體), translation-ese fixes, words to avoid | [terminology-zh](references/terminology-zh.md) |
21
+ | Bundled templates and where they came from | [templates/](templates/), [sources](references/sources.md) |
22
+
23
+ Bundled templates: [brd](templates/brd.md) · [prd](templates/prd.md) ·
24
+ [gap-analysis](templates/gap-analysis.md) · [technical-spec](templates/technical-spec.md) ·
25
+ [integration-guide](templates/integration-guide.md) ·
26
+ [commercial-proposal](templates/commercial-proposal.md) ·
27
+ [compliance-policy](templates/compliance-policy.md) ·
28
+ [risk-operations-procedure](templates/risk-operations-procedure.md) ·
29
+ [general](templates/general.md).
30
+
31
+ **Never edit these files for one project.** A project's rules go in its WRITING.md and
32
+ `writing/templates/` ([who edits what](references/rules.md#who-edits-what)). Example: a client
33
+ wants "merchant", not "seller" → their TERMINOLOGY.md, not `style-en.md`.
@@ -0,0 +1,66 @@
1
+ # Bundled defaults
2
+
3
+ Apply these when WRITING.md is missing or silent on a point. Every item is a **Default**: the
4
+ assignment, WRITING.md and the chosen template all override it
5
+ ([precedence](rules.md#resolve-conflicting-instructions)).
6
+
7
+ This file holds what applies in any language. Sentence-level rules live in the language guides:
8
+ read [English style](style-en.md) for English and [中文风格](style-zh.md) for Chinese; read both in
9
+ bilingual mode.
10
+
11
+ ## Contents
12
+
13
+ - [Scope](#scope)
14
+ - [Numbers, dates and names](#numbers-dates-and-names)
15
+ - [Structure](#structure)
16
+ - [Presentation](#presentation)
17
+
18
+ ## Scope
19
+
20
+ **Write what the brief asks for, at the length it asks for.** A template lists what a full document
21
+ of its type covers; a narrower brief gets a narrower document. Example: "a short policy, one page"
22
+ stays within one page, with no content the sources never mention.
23
+
24
+ **Mark only the gaps the reader needs** ([gap markers](rules.md#gap-markers)). In a table, write
25
+ `TBD` (Chinese: `待确认`, Traditional `待確認`) in each unknown cell and put one sentence above
26
+ the table: "Owners and dates are to be agreed by `<who>`." Never write `[TBD: owner, owner: X]`.
27
+
28
+ ## Numbers, dates and names
29
+
30
+ - Use numerals for 10 and above, and for all measurements, money and percentages.
31
+ - Money: currency code and amount, `USD 1,250,000`; state the period for rates (`per month`).
32
+ - Dates: `17 October 2026` in English prose, `2026-10-17` in tables, `2026 年 10 月 17 日` in
33
+ Chinese. Never "next week" without a date.
34
+ - Keep every figure exactly as the source gives it. Round only in a summary, and keep the precise
35
+ figure in the body.
36
+
37
+ ## Structure
38
+
39
+ - Open the document and each section with its point.
40
+ - Order sections so each relies only on what the reader knows or an earlier section established.
41
+ - Keep each policy, rule or definition in one place; refer to it elsewhere. A worked example may
42
+ repeat a number the policy states.
43
+ - Put background after the point, and only as much as the reader needs.
44
+ - End with what happens next: decision, actions with owners and dates, or open questions.
45
+
46
+ ## Presentation
47
+
48
+ - **Headings**: sentence case, informative ("Disputes double after the price change", not
49
+ "Analysis"). `#` once for the title; do not skip levels, unless WRITING.md or the template
50
+ records a house pattern that does (house evidence beats this default).
51
+ - **Paragraphs**: two to five sentences. One line per paragraph in the source file; no hard wraps
52
+ inside a paragraph unless the project's files already wrap.
53
+ - **Lists**: only for parallel items or steps. Numbered for sequences, bullets otherwise. Not for
54
+ reasoning that needs "because" and "so".
55
+ - **Tables**: when three or more items share the same attributes. Every column has a header; no
56
+ empty cells (write `n/a` or `TBD`).
57
+ - **Emphasis**: bold for the few words a skimming reader must see; no bold sentences in a row, no
58
+ italics for emphasis, no ALL CAPS.
59
+ - **Code**: field names, endpoints, commands, file names and config keys in code font, exactly as
60
+ the system spells them.
61
+ - **Links and citations**: link the descriptive words, not "here". Cite a source after the claim it
62
+ supports: `(Ops report, Q2 2026)`, or a numbered reference list for long documents.
63
+ - **Diagrams**: Mermaid for flows, sequences and state, when the reader would otherwise hold more
64
+ than four steps or actors in mind. Every diagram has a sentence saying what it shows.
65
+ - **Callouts**: a blockquote starting `**Note:**` or `**Warning:**` (`**注意:**`, `**警告:**`),
66
+ only for an aside that would derail the paragraph.
@@ -0,0 +1,267 @@
1
+ # House-style rules
2
+
3
+ The one definition of the local writing files, the lookup and precedence rules, the gap markers,
4
+ and the shape every document template follows. `write-doc` and the other writing skills read these
5
+ files; `distill-writing` creates and updates them. They link here; none restates it.
6
+
7
+ ## Contents
8
+
9
+ - [Local files](#local-files)
10
+ - [Find WRITING.md](#find-writingmd)
11
+ - [Choose the template](#choose-the-template)
12
+ - [Resolve conflicting instructions](#resolve-conflicting-instructions)
13
+ - [Rule strength and evidence](#rule-strength-and-evidence)
14
+ - [Gap markers](#gap-markers)
15
+ - [WRITING.md shape](#writingmd-shape)
16
+ - [Template shape](#template-shape)
17
+ - [Who edits what](#who-edits-what)
18
+
19
+ ## Local files
20
+
21
+ ```text
22
+ project/
23
+ WRITING.md shared voice, presentation, template index
24
+ TERMINOLOGY.md preferred term per concept and language, terms to avoid (`terminology`)
25
+ writing/
26
+ templates/<type>.md project templates (same shape as bundled ones)
27
+ examples/<type>-<n>.md optional approved or sanitized excerpts
28
+ ```
29
+
30
+ Create files lazily: no empty `writing/` folder, no template without evidence for it.
31
+
32
+ **WRITING.md holds what every document shares; a template holds what one document type needs.**
33
+ Example: "Write amounts as `USD 1,250,000`" goes in WRITING.md. "Put the price table before the
34
+ terms" goes in `writing/templates/commercial-proposal.md`.
35
+
36
+ ## Find WRITING.md
37
+
38
+ 1. Start in the directory of the document being written or edited. With no output path yet, start
39
+ in the current working directory. A report written from an input file (a contract, a findings
40
+ file) starts in the input file's directory instead: the client's house style sits with the
41
+ client's files. Pasted input: start in the output directory, else the working directory.
42
+ 2. Walk up one directory at a time. The first `WRITING.md` found applies. Do not merge it with a
43
+ `WRITING.md` further up.
44
+ 3. Stop at the project root: the nearest ancestor containing `.git`. With no `.git` above the start,
45
+ keep walking up, but never use a `WRITING.md` in the user's home directory or any directory
46
+ above it.
47
+ 4. No `WRITING.md` found: write from the brief and the bundled
48
+ [defaults](defaults.md). Say so in the delivery note. Do not create one.
49
+
50
+ `TERMINOLOGY.md` sits beside the `WRITING.md` that applies, else at the project root; find it
51
+ the same way. An older WRITING.md that still holds a Terms table: use its rows too, TERMINOLOGY.md
52
+ winning, and suggest `terminology` to move them.
53
+
54
+ Resolve every relative link from the file that contains it. Project templates live in
55
+ `writing/templates/` beside the `WRITING.md` that applies, unless its template index links
56
+ elsewhere.
57
+
58
+ Example: writing `clients/acme/proposal.md` in a repo with `clients/acme/WRITING.md` and a root
59
+ `WRITING.md` applies `clients/acme/WRITING.md` only, and its templates come from
60
+ `clients/acme/writing/templates/`.
61
+
62
+ ## Choose the template
63
+
64
+ Take the first that applies:
65
+
66
+ 1. **Explicit choice**: the user, or the skill that produced the document, names a template or a
67
+ path. Use it even if another matches better. Example: `payment-analysis` names its
68
+ `references/report-template.md` → review its reports against that file.
69
+ 2. **Project template**: a file in the project's `writing/templates/` whose `Use when` matches the
70
+ assignment.
71
+ 3. **Bundled template**: one of the bundled [templates](../templates/).
72
+ 4. **General**: [general.md](../templates/general.md), adapted into an outline for this assignment.
73
+
74
+ A project template with the same file name as a bundled one replaces it completely. Never merge the
75
+ two.
76
+
77
+ Example: the project has `writing/templates/prd.md`; the user asks for a PRD → use the project
78
+ file, not the bundled `prd.md`. The user says "use the bundled PRD template" → use the bundled one.
79
+
80
+ Language is not a template choice. English, Chinese and bilingual output work with every template
81
+ (`write-doc` [bilingual mode](../../write-doc/references/bilingual.md)).
82
+
83
+ ## Resolve conflicting instructions
84
+
85
+ **Facts control factual claims, always.** No style rule, template or brief makes an unsupported
86
+ claim acceptable.
87
+
88
+ For everything else, the higher item wins:
89
+
90
+ 1. The assignment: what the user asked for in this request.
91
+ 2. Local **Required** rules: the chosen project template, then WRITING.md.
92
+ 3. Local **Default** rules: the chosen project template, then WRITING.md.
93
+ 4. Bundled rules: the chosen bundled template, then the language guide
94
+ ([English](style-en.md), [中文](style-zh.md)), then [defaults](defaults.md).
95
+ 5. Writer judgment.
96
+
97
+ At the same strength the template wins over WRITING.md.
98
+
99
+ **Words follow TERMINOLOGY.md.** For which term to use, the order is: the assignment, then
100
+ TERMINOLOGY.md, then the template and WRITING.md, then the common
101
+ [terminology](terminology-zh.md). Example: a template example says "seller" and TERMINOLOGY.md
102
+ says "merchant" → write "merchant".
103
+
104
+ Example: WRITING.md says "Default: no tables in executive summaries"; the brief says "put the
105
+ three options in a table at the top" → use the table. WRITING.md says "Default: open with the
106
+ overall rating"; the board-briefing template says "Default: open with the decision asked" → open
107
+ with the decision. WRITING.md says "Required: amounts in USD with ISO code"; the source quotes
108
+ "$1.2m" → write `USD 1,200,000` and keep the source figure exact.
109
+
110
+ ## Rule strength and evidence
111
+
112
+ Every rule in WRITING.md or a project template carries a strength:
113
+
114
+ - **Required**: apply unless this request explicitly overrides it; name the override in the
115
+ delivery note.
116
+ - **Default**: apply unless the assignment says otherwise.
117
+ - **Optional**: a known good pattern; use when it helps the reader.
118
+
119
+ An inferred rule carries its evidence and confidence in one short trailer. A rule the user stated
120
+ carries `(user)` instead.
121
+
122
+ ```markdown
123
+ - Default: open each section with its conclusion in one sentence.
124
+ _(ref: q3-risk-review.md §2, "Overall exposure is moderate"; acme-assessment.md §1; high)_
125
+ - Required: call the client "the Client", never by name, in templates and examples. _(user)_
126
+ ```
127
+
128
+ Confidence: **high** = three or more agreeing references, or an explicit guide; **medium** = one or
129
+ two references; **low** = one reference with counter-evidence, or an inference from layout alone.
130
+ No numeric scores.
131
+
132
+ Evidence quotes show the pattern, not the old assignment: replace names and figures with `…`.
133
+ Example: `"Overall, the Client's … is rated Amber"`, not the client's name or its alert count.
134
+ A rule's own example uses neutral values, never a reference's: "counts in digits (`12 次`)", not
135
+ the `11 次` the reference reported.
136
+
137
+ A project template line identical to the bundled template its `Sources` names is bundled text:
138
+ it needs no trailer and is not a hand edit.
139
+
140
+ ## Gap markers
141
+
142
+ Mark a fact the reader needs and no source gives as `[TBD: <what>, owner: <who>]` (Chinese:
143
+ `【待确认:<内容>,负责人:<谁>】`, Traditional Chinese: `【待確認:<內容>,負責人:<誰>】`). In a
144
+ table, write `TBD` (`待确认`, `待確認`) in each unknown cell and put one sentence above the table
145
+ naming who will agree them. The owner is the role a source names for that item, else the role
146
+ responsible for the document, else `owner: unknown` (`负责人:未知`, `負責人:未知`). A table of
147
+ unknown owners gets one sentence above it naming who should assign them, only when a source names
148
+ that person or role.
149
+
150
+ ## WRITING.md shape
151
+
152
+ Use this skeleton. Omit any section with no evidence; do not invent content to fill it.
153
+
154
+ ```markdown
155
+ <!-- writing-md: 1 -->
156
+ # Writing guide: <project or organization>
157
+
158
+ ## Readers and documents
159
+ Who reads our documents, what they decide or do with them, and the recurring document types.
160
+
161
+ ## Voice
162
+ Constant across documents. A short "We are / We are not" table, each row with evidence. The brand
163
+ name and the closing call to action, when documents end with one.
164
+
165
+ ## Language
166
+ Languages used, bilingual presentation (paired paragraphs or separate versions), source language.
167
+
168
+ ## Terms
169
+ One line: `Terms: see [TERMINOLOGY.md](TERMINOLOGY.md).` The terms themselves live in
170
+ TERMINOLOGY.md, in the `terminology` skill's format; never a table here.
171
+
172
+ ## Sentences and paragraphs
173
+ Length, person, tense, numbers, dates, currency, abbreviations.
174
+
175
+ ## Structure and reasoning
176
+ How a conclusion, its evidence, trade-offs and the recommendation connect.
177
+
178
+ ## Presentation
179
+ Headings, paragraph density, lists, tables, emphasis, links and citations, diagrams.
180
+
181
+ ## Templates
182
+ | Template | Use when | Notes |
183
+ | --- | --- | --- |
184
+ | risk-assessment (`writing/templates/risk-assessment.md`) | ... | ... |
185
+
186
+ ## Examples
187
+ Two or three short annotated excerpts (approved or sanitized), or links to writing/examples/.
188
+
189
+ ## Sources and open choices
190
+ References read (file, date, standing: approved guide / approved document / draft), conflicts not
191
+ yet decided with the recommended answer, and intentional exceptions.
192
+ ```
193
+
194
+ Tone that varies by document type (formality, technical depth) goes in the template's `Tone` line,
195
+ not in Voice.
196
+
197
+ ## Template shape
198
+
199
+ A template is a strategy for one document type. Every template, bundled or project, has these
200
+ sections in this order:
201
+
202
+ 1. **Use when**: the reader, the decision or action the document serves, and when to pick this
203
+ template over a neighbor.
204
+ 2. **Tone**: one line: formality, technical depth, and any type-specific voice shift.
205
+ 3. **Inputs**: the evidence the writer can use. Mark an input the reader cannot do without
206
+ `Material:` with its action: `ask once`, `mark [TBD]` ([gap markers](#gap-markers)), or `narrow the scope`, or two of them in
207
+ order (`ask once, else narrow the scope`). An unmarked input follows its own line's instruction
208
+ when it has one; otherwise leave it out.
209
+ 4. **Reasoning**: how to turn the inputs into the argument, analysis or specification.
210
+ 5. **Sections**: the outline. For each section: what it must achieve, its strength, and how to
211
+ adapt it. Strength is `Required`, `Optional`, or `Required when <condition>`. Keep the order
212
+ unless the reader's decision needs another.
213
+ 6. **Done when**: the type-specific checks that make the result useful. Each is a yes/no question.
214
+ A question about a section the brief's scope removed answers n/a.
215
+ 7. **Sources**: where the bundled default was adapted from, or, for a project template, the
216
+ references it was distilled from.
217
+
218
+ Use this skeleton for every template, bundled or distilled:
219
+
220
+ ```markdown
221
+ # <Type>: <short qualifier>
222
+
223
+ ## Use when
224
+ <Reader, the decision or action, when to pick it.> Then one bullet per neighbor:
225
+ - Pick **<other-template>** instead when …
226
+
227
+ ## Tone
228
+ <One line.>
229
+
230
+ ## Inputs
231
+ - <Input>. Material: <ask once | mark [TBD] | narrow the scope>.
232
+
233
+ ## Reasoning
234
+ 1. <Step from inputs toward the conclusion.>
235
+
236
+ ## Sections
237
+ Omit Optional sections that add nothing. Do not pad with empty headings.
238
+
239
+ 1. **<Section>** (Required | Optional): <what it must achieve; how to adapt it>.
240
+
241
+ ## Done when
242
+ - <Yes/no question>?
243
+
244
+ ## Sources
245
+ <Bundled: what informed it. Project: the references it was distilled from, and the bundled
246
+ template it started from with the write-doc release-version, e.g. "bundled gap-analysis, 0.36.0".>
247
+ ```
248
+
249
+ **Locked text** is wording an outside authority mandates (a regulator, a scheme, a signed
250
+ contract). It sits in a fenced block marked `locked`, with its source on the line above, and is
251
+ copied unchanged and never translated into the document's voice. House boilerplate is not locked:
252
+ it is a Default, adapted when the facts differ. Example: a rating scale saying "exposes the Client
253
+ to regulatory action" is house text; for an internal-standard review, adapt it.
254
+
255
+ ## Who edits what
256
+
257
+ - `write-doc` never edits WRITING.md or a project template unless the user asks in that request.
258
+ A correction applies to the current document only.
259
+ - `distill-writing` updates them deliberately: it keeps `(user)` rules and manual edits, and lists
260
+ every material change and conflict before or as it writes.
261
+ - Any writing skill adds a row to TERMINOLOGY.md the moment the user settles a term, and creates
262
+ the file for the first one (`terminology` format). `write-doc` also seeds the file with
263
+ `proposed` rows when it writes a new document in a project without one. It never writes a term the user did not state
264
+ or approve, except as `proposed`.
265
+ - A user may edit any of these files by hand at any time; hand edits win over distilled rules.
266
+ - Skill updates replace the bundled templates and defaults only. Project files are never touched by
267
+ an update.
@@ -0,0 +1,27 @@
1
+ # Sources and attribution
2
+
3
+ The bundled templates, defaults and English style guide are original text written for this skill;
4
+ the sources below informed their structure and ideas. The Chinese style guide is adapted from an
5
+ MIT-licensed source, as marked. Checked 2026-10-17.
6
+
7
+ | Area | Source | License | How it is used |
8
+ | --- | --- | --- | --- |
9
+ | Editorial baseline | [Google developer documentation style guide](https://developers.google.com/style/highlights) | CC BY 4.0 (text) | Ideas for [style-en](style-en.md) (lead with the point, active voice, everyday words) and [defaults](defaults.md) (informative headings, link text). |
10
+ | Technology voice | [Microsoft Writing Style Guide](https://learn.microsoft.com/en-us/style-guide/welcome/) | All rights reserved | Linked for reference only. |
11
+ | English technical style | [Cursor `technical-writing` skill](https://github.com/cursor/plugins/blob/main/pstack/skills/technical-writing/SKILL.md) | No license stated | Ideas only for [style-en](style-en.md): layered rules, rhythm, the system as the word list. No text copied. |
12
+ | Chinese technical style | [Fenng/tech-doc-style-chinese](https://github.com/Fenng/tech-doc-style-chinese) | MIT | Adapted into [style-zh](style-zh.md); the copyright and permission notice is reproduced at its end. |
13
+ | PRD | [Atlassian product requirements template](https://www.atlassian.com/software/confluence/templates/product-requirements) | All rights reserved | Linked; [prd](../templates/prd.md) is adapted from the retired `prd` skill in this repository. |
14
+ | BRD | Retired `brd` skill in this repository | MIT (1aboveio/ai) | Folded into [brd](../templates/brd.md). |
15
+ | Technical spec | [GitLab design document template](https://handbook.gitlab.com/handbook/engineering/architecture/design-documents/_template/), [arc42](https://arc42.org/overview/) | All rights reserved; CC BY-SA 4.0 | Ideas only for [technical-spec](../templates/technical-spec.md). No arc42 text is adapted, so share-alike does not apply. |
16
+ | Decision records | [MADR](https://adr.github.io/madr/) | MIT or CC0-1.0 | Ideas for recording options and decisions in technical-spec. |
17
+ | Integration guide | [Diátaxis](https://diataxis.fr/start-here/) | CC BY-SA 4.0 | The tutorial / how-to / reference / explanation distinction shapes [integration-guide](../templates/integration-guide.md). No Diátaxis text is adapted. |
18
+ | Project updates | [Atlassian project status template](https://www.atlassian.com/software/confluence/templates/project-status) | All rights reserved | Linked; covered by [general](../templates/general.md). |
19
+ | Local context files | [Impeccable](https://impeccable.style/docs/context/) | Apache-2.0 (code repository) | The idea of keeping editable project context apart from the skill. No text used. |
20
+
21
+ Gap analysis, compliance policy, risk operations procedure and commercial proposal are authored
22
+ for this skill. Improve them for a project by distilling approved examples with `distill-writing`.
23
+
24
+ When adding to a bundled file: write original text. Do not paste wording from an all-rights-reserved
25
+ source. Adapting text from a CC BY-SA source puts the adapted file under CC BY-SA 4.0; adapting
26
+ CC BY text requires the credit line "Portions adapted from <title>, <link>, CC BY 4.0, changes
27
+ made".