@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,131 @@
1
+ # English style
2
+
3
+ Sentence-level rules for English text. Apply them to every template in English or in the English
4
+ version of a bilingual document. WRITING.md and the template override them
5
+ ([precedence](rules.md#resolve-conflicting-instructions)); language-neutral layout rules are in
6
+ [defaults](defaults.md).
7
+
8
+ Write so a busy expert understands on the first read.
9
+
10
+ ## Contents
11
+
12
+ - [Three rules above the rest](#three-rules-above-the-rest)
13
+ - [Voice](#voice)
14
+ - [Sentences](#sentences)
15
+ - [Instructions and procedures](#instructions-and-procedures)
16
+ - [One reading only](#one-reading-only)
17
+ - [Words](#words)
18
+ - [Rhythm](#rhythm)
19
+ - [Before and after](#before-and-after)
20
+
21
+ ## Three rules above the rest
22
+
23
+ **Cut every word that does no work.** "In order to" is "to". "It should be noted that" is nothing.
24
+
25
+ **Use the short everyday word.** "use" not "utilize", "help" not "facilitate", "start" not
26
+ "commence", "about" not "approximately" in prose. A long word must buy its length with precision.
27
+
28
+ **When a rule makes a sentence worse, fix the sentence another way.** A sentence that obeys every
29
+ rule and reads like a machine wrote it has failed.
30
+
31
+ ## Voice
32
+
33
+ **Lead with the point.** Open the document and each section with the conclusion, then the support.
34
+ Example: "We recommend renewing with Vendor B. It meets all five requirements at the lowest cost."
35
+ Not: "This section reviews the three vendors we considered."
36
+
37
+ **Name who does what.** "Operations reviews each alert within one business day", not "Alerts are
38
+ reviewed". Use passive only when the actor is unknown or irrelevant.
39
+
40
+ **Address the reader as "you" and your organization as "we"**, unless WRITING.md names the parties
41
+ otherwise ("the Client").
42
+
43
+ **State findings plainly; hedge only real uncertainty, and say what it depends on.** "Losses will
44
+ likely halve if the new rule's hit rate holds in production." Not: "This could potentially help
45
+ reduce losses."
46
+
47
+ **Have a view where the document allows one.** An analysis or recommendation says what the
48
+ trade-offs add up to. A reference section or a policy statement stays neutral.
49
+
50
+ ## Sentences
51
+
52
+ - One thought per sentence. Split a sentence that carries two; keep a long sentence that carries
53
+ one fact with its condition.
54
+ - Most sentences under 25 words; instructions under 20.
55
+ - Present tense for how things are. "Will" only for what happens later.
56
+ - Put the common case first and exceptions after.
57
+ - Write full sentences, not telegraphic notes. Keep the words that carry the logic: if,
58
+ when, because, but. Without them a rule becomes a label the reader has to decode.
59
+ Example: "It is 0 if there were no collections," not "0 when none."
60
+ - Introduce a list with a complete sentence; keep list items parallel.
61
+ - Use periods, not semicolons. Replace a dash aside with a new sentence.
62
+
63
+ ## Instructions and procedures
64
+
65
+ - Write each step as a command with one action: "Open the alert." Not "The analyst should open the
66
+ alert", not "The alert is opened".
67
+ - Put the condition or warning before the action it guards: "If the payee is on the list, stop the
68
+ payment." "To delete the case, select Delete."
69
+ - Say what the reader should see after a step when it confirms success.
70
+ - Never "simply", "just", "easy" or "quickly" in a procedure. If it were easy, the reader would not
71
+ be reading.
72
+ - Never "please" in instructions.
73
+
74
+ ## One reading only
75
+
76
+ - Keep "only" and "not" next to the word they limit: "fails only on retries" and "only fails on
77
+ retries" differ.
78
+ - Break up noun stacks: "the merchant risk score threshold review process" → "the process that
79
+ reviews the threshold for merchant risk scores".
80
+ - Make every "it", "this" and "they" point to one obvious noun. Repeat the noun when in doubt. Never
81
+ point "this" or "which" at a whole clause.
82
+ - Keep "the", "a" and "that": "Remove the backup file", "Ensure that the switch is off".
83
+ - Do not drop verbs: "Phase 1 moves the data and Phase 2 the reports" → "and Phase 2 moves the
84
+ reports".
85
+ - No slashes: "a, b, or both", not "a/b" or "and/or". No "(s)" plurals. No "etc."; say up front
86
+ that a list is partial.
87
+ - No idioms, metaphors or Latin abbreviations (e.g., i.e., viz.); write "for example", "that is".
88
+ - Give every range its endpoints and say which are included: "from 00:00 up to, not including,
89
+ 06:00", not "between midnight and 6".
90
+ - When "and" and "or" meet in one condition, group them: "verified, and either a person or a
91
+ merchant", not "a person or a merchant and verified". Give each condition its own subject.
92
+ - Define a term by when it applies, not by a synonym: "'undetermined' when the name matches no
93
+ rule", not "'undetermined' means it cannot be determined".
94
+
95
+ ## Words
96
+
97
+ - **The system is the word list.** Write the real field, endpoint, report, product or form name in
98
+ its exact form, in code font when it is code. Not a synonym, not a description of it.
99
+ - **One word, one meaning, one thing.** Pick "merchant" or "seller" and keep it. Do not use
100
+ "check" for both "inspect" and "restrain".
101
+ - **Do not coin jargon.** Use the words a practitioner says aloud. Define a necessary term at first
102
+ use.
103
+ - **Spell out an abbreviation at first use** unless the reader uses it daily (API, KYC, AML).
104
+ - **Banned as filler**: leverage, robust, seamless, holistic, synergy, delve, streamline,
105
+ cutting-edge, best-in-class, world-class, "plays a pivotal role", "a testament to".
106
+
107
+ ## Rhythm
108
+
109
+ Mix sentence lengths on purpose. Short sentences land a point; longer ones carry a fact with its
110
+ condition or consequence. Be specific over sterile: not "schema changes can cause issues" but "a
111
+ renamed column breaks the nightly export".
112
+
113
+ ## Before and after
114
+
115
+ Before:
116
+
117
+ > Configuration of the alert threshold parameters is performed via the rules console. It is
118
+ > important to note that changes, which take effect immediately, should only be made after
119
+ > approval. If not followed, audit findings may result.
120
+
121
+ After:
122
+
123
+ > Change alert thresholds in the rules console. A change takes effect immediately, so make it only
124
+ > after the MLRO approves it. An unapproved change is an audit finding.
125
+
126
+ ## Sources
127
+
128
+ Original text. Informed by the Google developer documentation style guide (CC BY 4.0), the
129
+ ASD-STE100 Simplified Technical English principles, Global English guidance, and the layered
130
+ approach in Cursor's `technical-writing` skill (github.com/cursor/plugins, no license stated;
131
+ ideas only, no text copied). See [sources](sources.md).
@@ -0,0 +1,141 @@
1
+ # 中文风格
2
+
3
+ 中文正文的句子与排版规则。用于任何模板的中文文档,或双语文档的中文版本。WRITING.md 和模板优先于本文件
4
+ ([优先级](rules.md#resolve-conflicting-instructions));与语言无关的结构与版式规则见
5
+ [defaults](defaults.md)。
6
+
7
+ 本文件以 [Fenng/tech-doc-style-chinese](https://github.com/Fenng/tech-doc-style-chinese)(MIT)为基础改编,版权与许可声明见文末。
8
+
9
+ ## 目录
10
+
11
+ - [规则优先级](#规则优先级)
12
+ - [事实保真](#事实保真)
13
+ - [语义与语气](#语义与语气)
14
+ - [结构与句子](#结构与句子)
15
+ - [操作步骤与故障排查](#操作步骤与故障排查)
16
+ - [术语与黑话](#术语与黑话)
17
+ - [标点与留白](#标点与留白)
18
+ - [简体与繁体](#简体与繁体)
19
+ - [改写前后](#改写前后)
20
+
21
+ ## 规则优先级
22
+
23
+ 冲突时按以下顺序处理:
24
+
25
+ 1. 保留事实、逻辑、限制、安全信息和法律含义。
26
+ 2. 服从用户明确要求和项目约定(先后顺序见 [规则](rules.md#resolve-conflicting-instructions))。
27
+ 3. 保持术语和机器可读内容准确。
28
+ 4. 改善结构、语义、语气和可扫读性。
29
+ 5. 最后处理标点、留白、大小写。
30
+
31
+ 不要为了句子更短、语气更确定或格式更统一而牺牲上一级的信息。
32
+
33
+ ## 事实保真
34
+
35
+ - 不新增来源没有的日期、数字、时限、SLA、能力、条件、因果或结论。
36
+ - 不删除前置条件、适用范围、例外、风险、安全警告和失败处理。
37
+ - 不把「可能」「计划」「建议」「通常」改写成确定事实。
38
+ - 信息不足时标记缺口(格式见 [缺口标记](rules.md#gap-markers)),不要自行补全。示例:`尽快处理` → `在约定时限内处理【待确认:处理时限,负责人:<文档负责人>】`;不要补成 `30 分钟内处理`。
39
+ - 法规、合同、错误原文和用户提供的固定文案保持原样,建议另行列出。
40
+
41
+ ## 语义与语气
42
+
43
+ - 准确先于修辞,清晰先于热闹。使用克制、直接、可执行的中文。
44
+ - 先回答「是什么、适用于什么、需要做什么、接着看哪里」。
45
+ - 不写问候式开场、宣传口号和空泛形容。
46
+ - 技术文档默认不直接称呼读者,使用无主句或明确角色(开发者、实施人员、业务负责人)。WRITING.md 可改为「您」或「你」。
47
+ - 一个段落承载一个主要信息点;段落源文件保持一段一行,不硬换行。
48
+
49
+ ## 结构与句子
50
+
51
+ - 一个句子保持一个清晰主干,不连续堆叠条件、动作和例外。
52
+ - 写完整的句子,不写电报体:保留表达逻辑的词,包括条件(若……则、当……时)、因果(因为、所以)和转折(但)。省掉这些词,规则就成了要读者自己解码的标签。示例:`若窗口内无收款,则为 0`,而不是 `无收款为 0`;`付款人名称为空的收款不计入`,而不是 `空值不计`。
53
+ - 标题说明用途或结论,不只写抽象名词。示例:`退单量在调价后翻倍`,而不是 `分析`。
54
+ - 列表项保持相同层级、句式和信息密度;完整句式的列表项统一加句号。
55
+ - 指代可能不清时,用具体名称替代「该」「其」「此」「上述」「相关」。
56
+ - 区间和阈值写明端点,并写明端点是否包含。示例:`北京时间 0:00(含)至 6:00(不含)`,而不是 `凌晨 0 点到 6 点之前`;`不低于 4,900 美元且低于 5,000 美元`,而不是 `比 5,000 美元低不到 2%`。
57
+ - 名词前的修饰语超过两层时拆开:先写主干,再把限定条件前置为状语或另起一句。示例:`非平台收款笔数,只计币种为美元、欧元或英镑且不经合作银行的收款`,而不是 `累计以美元、欧元或英镑收到、且不经合作银行渠道的非平台收款笔数`。
58
+ - 并列的条件逐个写全对象,不让后一个条件借用前一个条件的主语。「或」和「且」出现在同一个条件里时,用分句或列表写清每个连词管到哪里。示例:`客户已认证,且客户是个人或商户`,而不是 `客户是个人或商户且已认证`。
59
+ - 解释一个词时,写出什么情况下得到它,不用同义词绕回去。示例:`若名称不匹配任何规则,则为「无法判定」`,而不是 `「无法判定」表示无法判断`。
60
+ - 否定范围必须明确,读者能判断禁止的是哪个动作。
61
+ - 区分系统自动行为和人工操作。示例:`选择「保存」。系统随后写入配置并重新加载服务。`
62
+
63
+ ## 操作步骤与故障排查
64
+
65
+ 用于操作手册、风险操作流程、故障排查和多步骤 API 调用,不用于叙述性文字和固定引用。
66
+
67
+ - 一个步骤一个主要动作,以明确动作开头,写清动作对象;不只写「处理」「操作」「执行」。
68
+ - 条件和风险放在动作之前。条件多时单独列出前置条件。不把关键限制放在步骤末尾的括号里。
69
+ - 需要时写明每一步的预期结果,以及失败时的停止条件和恢复方式;来源没有的不补造。
70
+ - 故障排查先给低风险、可逆、证据价值高的检查;写明判断条件;只有证据支持时才给出原因,不把「可能原因」写成「确定原因」。
71
+
72
+ ## 术语与黑话
73
+
74
+ - 同一概念使用同一首选术语,不轮换同义词。先查项目的 TERMINOLOGY.md,再查[常用术语](terminology-zh.md)。
75
+ - 缩写首次出现给出全称;产品名、机构名、代码、字段、命令保持官方写法。
76
+ - 以下词语容易掩盖具体动作;除非有明确定义或引用原文,否则改写为实际含义:
77
+ 赋能 → 提供;抓手 → 关键措施;闭环 → 完整流程,或写出开始、处理和完成条件;沉淀 → 形成、积累、保存;
78
+ 对齐 → 统一、确认一致;拉通 / 打通 → 连接;洞察 → 分析结论;兜底 → 写出失败后的具体保障;
79
+ 落盘 → 写入文件;透传 → 原样传给下游。
80
+ - 以下词语依赖语境,不机械替换:场景、生态、体系、路径、触点、颗粒度、复盘、梳理、输出。
81
+ - 不用装饰性连接词:值得注意的是、不难看出、综上所述、首先……其次……最后(非真实顺序时)。表达条件、因果、转折的连接词要保留(见[结构与句子](#结构与句子))。
82
+
83
+ ## 标点与留白
84
+
85
+ - 中文正文使用全角标点。引号默认用直角引号「」,嵌套用『』;WRITING.md 可改用 “”。
86
+ - 按钮、菜单、字段展示名用「」;文档和作品名用《》;机器可读字段名用行内代码。
87
+ - 中文说明用全角括号(),括号内侧不留空格;英文、代码中的括号保持原样。
88
+ - 省略号用 `……`,破折号用 `——`。并列词语用顿号。
89
+ - 中文与英文、数字、版本号之间加一个半角空格:`使用 API 获取数据`、`等待 3 秒`、`增长 50%`。数字与 `%`、单位符号之间不加空格。
90
+ - 中文与行内代码之间加一个半角空格;紧邻中文标点时不加:``运行 `npm install`。``
91
+ - 全角标点前后不加空格。不修改代码、链接目标、官方名称和用户指定的字面量。
92
+
93
+ ## 简体与繁体
94
+
95
+ - 字形按简报指定,否则按 WRITING.md,否则与简报所用字形一致。全文统一,缺口标记和义务用语也一样:
96
+ - 简体:必须 / 不得 / 应当 / 可以;`【待确认:…,负责人:…】`
97
+ - 繁体:必須 / 不得 / 應當 / 可以;`【待確認:…,負責人:…】`
98
+ - 地区用词跟随项目(如繁体港澳用语:「帳戶」「網站」「資料」),以 TERMINOLOGY.md 为准。
99
+
100
+ ## 改写前后
101
+
102
+ 改写前:
103
+
104
+ `在开通商户之前需要确认商户已经完成了相关的尽职调查,然后由合规进行审批,审批通过后系统会自动开通。`
105
+
106
+ 改写后:
107
+
108
+ 1. `确认商户已完成客户尽职调查(CDD)。`
109
+ 2. `提交合规审批。`
110
+
111
+ `审批通过后,系统自动开通商户。`
112
+
113
+ 检查点:条件在动作之前;区分人工动作和系统行为;「相关的」删除;术语使用 TERMINOLOGY.md 的首选词。
114
+
115
+ ## 版权与许可
116
+
117
+ Portions adapted from tech-doc-style-chinese by Fenng (https://github.com/Fenng/tech-doc-style-chinese).
118
+
119
+ ```text
120
+ MIT License
121
+
122
+ Copyright (c) 2026 Fenng
123
+
124
+ Permission is hereby granted, free of charge, to any person obtaining a copy
125
+ of this software and associated documentation files (the "Software"), to deal
126
+ in the Software without restriction, including without limitation the rights
127
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
128
+ copies of the Software, and to permit persons to whom the Software is
129
+ furnished to do so, subject to the following conditions:
130
+
131
+ The above copyright notice and this permission notice shall be included in all
132
+ copies or substantial portions of the Software.
133
+
134
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
135
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
136
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
137
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
138
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
139
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
140
+ SOFTWARE.
141
+ ```
@@ -0,0 +1,223 @@
1
+ # 常用中文术语
2
+
3
+ Use this as the default word list for Chinese business, technical and payment writing. A project's own `TERMINOLOGY.md` wins wherever the two differ.
4
+ Read the 繁體 column as Hong Kong usage, not Taiwan usage. `—` means no Hong Kong source was found.
5
+ Look up each Source id in the [Sources](#sources) table at the end. These terms are guidance only: no script protects them.
6
+
7
+ ## Contents
8
+
9
+ - [Translation-ese → natural Chinese](#translation-ese--natural-chinese)
10
+ - [Technical and product terms](#technical-and-product-terms)
11
+ - [Payment and risk](#payment-and-risk)
12
+ - [Words to avoid in reports](#words-to-avoid-in-reports)
13
+ - [Sources](#sources)
14
+
15
+ ## Translation-ese → natural Chinese
16
+
17
+ Rewrite these patterns when they come from English sentence structure. The examples are illustrations, not fixed strings.
18
+
19
+ | 避免 | 改为 | 说明 | Source |
20
+ | --- | --- | --- | --- |
21
+ | 对数据进行分析 | 分析数据 | Put the verb back instead of 进行/作出 + noun. | YU, SSPAI-1, SSPAI-2 |
22
+ | 报告已被团队提交 | 团队已提交报告 | Use active voice and name the actor. 被 also sounds negative. | MS-TW, RUANYF, ZHSG, YU |
23
+ | 当交易失败的时候,系统会重试 | 交易失败时,系统会重试 | Drop 当……的时候, or let time order carry it. | YU, SSPAI-1, GMRB |
24
+ | 作为一名分析师,他负责周报 | 他是分析师,负责周报 | Keep subject and verb together. | SSPAI-1 |
25
+ | 请检查你的账户的设置 | 请检查账户设置 | Drop possessives the context already gives. | MS-CN |
26
+ | 团队的上月的报告的结论 | 团队上月报告的结论 | More than three 的 in a sentence: cut or split. | MS-CN, SIGUO, GMRB |
27
+ | 过去三个月由商户提交但尚未处理的退款申请已全部关闭 | 商户过去三个月提交的退款申请,凡未处理的都已关闭 | Split a long modifier into its own clause, main point first. | MS-CN, ZHSG, RUANYF |
28
+ | 所有商户们都已完成审查 | 所有商户都已完成审查 | Drop 们 when a number, 都 or 所有 already marks the plural. | YU, SSPAI-1, RUANYF |
29
+ | 关于费率的调整已经生效 | 费率调整已经生效 | Most 关于/有关 can just go. | YU |
30
+ | 这份报告的可读性很差 | 这份报告很难读 | Use the plain verb or adjective instead of a noun with 性. | YU |
31
+ | 这是一个有用的功能 | 这个功能很有用 | Translate an English article only when it prevents confusion. | MS-CN |
32
+ | 5 个交易 | 5 笔交易 | Use the specific measure word, not 个. | MS-CN, MS-TW |
33
+ | 欺诈是主要风险之一 | 主要风险是欺诈和套现 | Name the members or the count instead of ……之一. | SSPAI-1 |
34
+ | 拒绝率上升,部分原因在于规则过严 | 拒绝率上升,有一个原因是规则过严 | Avoid the stock 部分原因在于. | SSPAI-1 |
35
+ | 比如 Visa、万事达卡 | Visa、万事达卡等 | Close an example list with 等. | SSPAI-1 |
36
+ | 针对小商户的费率 | 适用于小商户的费率 | Use 适用于 when *for* means who it applies to. | MS-CN |
37
+ | 将文件上传至服务器 | 将文件上传到服务器 | Plain register prefers 到 over 至. | MS-CN, MS-TW |
38
+ | 倘若交易失败 | 如果交易失败 | Use 如果 in reports. 倘若 and 假使 read stiff. | MS-CN |
39
+ | 若要导出报告,请打开菜单 | 要导出报告,请打开菜单 | Use 要 instead of 若要. | MS-CN |
40
+ | 上传中…… | 正在上传…… | Use 正在 for an action in progress. Headings stay as they are. | MS-CN |
41
+ | 列名称、文件名称 | 列名、文件名 | In Simplified, drop 称 from compound names. | MS-CN, WP-IT |
42
+ | 全部 5 条规则都已成功启用 | 5 条规则都已启用 | 都 already means all. Drop the extra 全部 and 成功. | MS-CN |
43
+ | 没有导出权限的用户无法导出报告 | 用户需要导出权限才能导出报告 | State the rule positively instead of as a double negative. | RUANYF |
44
+
45
+ ## Technical and product terms
46
+
47
+ Use the Hong Kong form in the 繁體 column even where Microsoft's Traditional list gives the Taiwan form.
48
+ A `(港)` note in Avoid marks a Taiwan form that Hong Kong text should not use.
49
+
50
+ | Concept | English | 简体 | 繁體 | Avoid | Meaning | Source |
51
+ | --- | --- | --- | --- | --- | --- | --- |
52
+ | Sign-in identity | account | 账号 | 帳戶 | 帳號(港) | The identity a person signs in with; not a money account. | WP-IT, MS-HK |
53
+ | Data | data | 数据 | 數據 | 資料(港,指 data 时) | Recorded values or records; in Hong Kong 資料 means information instead. | MS-TERM, WP-IT, HKMA-AML |
54
+ | Information | information | 信息 | 資料 | | Facts given or received, as in customer information; not raw data. | MS-TERM, HKMA-AML |
55
+ | Database | database | 数据库 | 資料庫 | | A structured store of data managed by software; 數據庫 is also seen in Hong Kong. | MS-TERM, WP-IT, MS-HK |
56
+ | Default | default | 默认 | 預設 | 缺省 | The value used when nobody sets one. | MS-TERM, WP-IT |
57
+ | Computer file | file | 文件 | 檔案 | | A file on disk; in Traditional Chinese 文件 means a document instead. | MS-TERM, WP-IT |
58
+ | Document | document | 文档 | 文件 | 文件(简体,指 document 时) | A written document; Simplified keeps 文档 so that 文件 can mean a computer file. | MS-TERM, HKMA-AML |
59
+ | Folder | folder | 文件夹 | 資料夾 | | A container for files. | MS-TERM, WP-IT |
60
+ | Network | network | 网络 | 網絡 | 網路(港) | Connected systems or devices; 網路 is the Taiwan form. | MS-TERM, WP-IT, HKMA-AML |
61
+ | Internet | Internet | 互联网 | 互聯網 | 網際網路(港) | The public Internet. | WP-IT |
62
+ | User | user | 用户 | 用戶 | 使用者(港) | A person who uses a product; 使用者 is the Taiwan form. | MS-TERM, WP-IT |
63
+ | Username | username | 用户名 | 用戶名 | 用户名称 | The sign-in name of a user. | WP-IT, MS-CN |
64
+ | Customer | customer | 客户 | 客戶 | | A person or business that buys from or holds an account with the firm. | MS-TERM, PBOC-CDD |
65
+ | Configuration | configuration | 配置 | 設定 | | How a system is set up, usually in files or code. | MS-TERM, WP-IT |
66
+ | Settings | settings | 设置 | 設置 | | The options a user changes in a product's interface. | MS-TERM, WP-IT |
67
+ | Technical threshold | threshold | 阈值 | 閾值 | | A cut-off value in a rule or model; a regulatory amount is 规定金额 instead. | MS-TERM |
68
+ | Dashboard | dashboard | 仪表板 | 儀表板 | | A screen of key metrics. | MS-TERM |
69
+ | Workflow | workflow | 工作流 | 工作流程 | | A defined sequence of steps. | MS-TERM |
70
+ | Rule | rule | 规则 | 規則 | | A condition that triggers an action, such as a risk rule. | MS-TERM |
71
+ | Software policy | policy | 策略 | 原則 | | A product setting that enforces behavior; a business policy is 政策. | MS-TERM |
72
+ | Review of a document or code | review | 评审 | 檢閱 | | Reading a document or change to judge it; a periodic control review is 审查. | MS-TERM |
73
+ | Decline | decline | 拒绝 | 拒絕 | | Refusing a request; a refused card authorization is 授权拒绝, not a chargeback. | MS-TERM |
74
+ | Report | report | 报告、报表(表格) | 報告、報表(表格) | | A written account of findings; 报表 only for a tabular report. | MS-TERM |
75
+ | Event log | log | 日志 | 紀錄檔 | | A system's running record of events. | MS-TERM, WP-IT |
76
+ | Record | record | 记录 | 記錄 | | One entry in a table or log. | MS-TERM |
77
+ | Query | query | 查询 | 查詢 | | A request for data. | MS-TERM |
78
+ | Sign in | sign in | 登录 | 登入 | 登陆 | Entering credentials to start a session; 登陆 means landing ashore. | MS-TERM, WP-IT, ZHSG |
79
+ | Password | password | 密码 | 密碼 | | A secret used to sign in. | MS-TERM |
80
+ | Authentication | authentication | 身份验证 | 身份驗證 | 鉴权(指用户或持卡人身份验证时) | Proving who a user or cardholder is (3DS is cardholder authentication); 鉴权 is engineering jargon for API authorization. | MS-TERM |
81
+ | Verification | verification | 验证 | 驗證 | | Checking that something is correct or genuine. | MS-TERM |
82
+ | Permission | permission | 权限 | 權限 | | What a user is allowed to do. | MS-TERM |
83
+ | Administrator | administrator | 管理员 | 管理員 | | A user who manages a system and its users. | MS-TERM |
84
+ | Alert | alert | 警报 | 警示 | | A signal that needs attention, such as a risk alert. | MS-TERM |
85
+ | Filter | filter | 筛选 | 篩選 | | Narrowing a list by conditions. | MS-TERM |
86
+ | Data field | field | 字段 | 欄位 | | One named column or attribute in a record. | MS-TERM, WP-IT |
87
+ | Batch | batch | 批量 | 批次 | | Many items processed together. | MS-TERM, WP-IT |
88
+ | Real-time | real-time | 实时 | 即時 | | Happening as events occur, without a batch delay. | MS-TERM, WP-IT |
89
+ | Metric | metric | 指标 | 指標 | 衡量標準(指 metric 时) | A measured quantity that tracks performance; 衡量標準 means a criterion. | MS-TERM |
90
+ | Insight | insight | 见解 | 見解 | 洞察 | A finding that explains something; state the finding itself where possible. | MS-TERM |
91
+ | Transaction | transaction | 交易 | 交易 | 事务(非数据库语境) | A business or payment transaction; 事务 only for a database transaction. | MS-TERM |
92
+ | Payment | payment | 付款 | 付款 | | Money paid for goods or services. | MS-TERM |
93
+ | Server | server | 服务器 | 伺服器 | | A computer that provides a service to others. | MS-TERM, WP-IT |
94
+ | Software | software | 软件 | 軟件 | 軟體(港) | Programs; 軟體 is the Taiwan form. | MS-TERM, WP-IT |
95
+ | Hardware | hardware | 硬件 | 硬件 | 硬體(港) | Physical equipment; 硬體 is the Taiwan form. | MS-TERM, WP-IT |
96
+ | Template | template | 模板 | 模板 | | A reusable starting layout. | MS-TERM, WP-IT |
97
+ | Upload | upload | 上传 | 上載 | 上傳(港) | Sending a file to a server; 上傳 is the Taiwan form. | WP-IT, MS-TERM |
98
+ | Download | download | 下载 | 下載 | | Fetching a file from a server. | WP-IT, MS-TERM |
99
+ | Message | message | 消息 | 訊息 | | A piece of communication shown or sent to a user. | MS-TERM, WP-IT |
100
+ | Link | link | 链接 | 連結 | | A reference that opens another page or item. | MS-TERM, WP-IT |
101
+ | Support | support | 支持 | 支援 | | Being able to handle something, or help given to users. | MS-TERM, WP-IT |
102
+ | Save | save | 保存 | 儲存 | | Writing changes so they persist. | MS-TERM, WP-IT |
103
+ | Search | search | 搜索 | 搜尋 | | Looking for items by keyword. | MS-TERM, WP-IT |
104
+ | Cache | cache | 缓存 | 快取 | | A temporary copy kept for speed. | MS-TERM, WP-IT |
105
+ | Cloud | cloud | 云 | 雲端 | | Computing services run by a provider over the Internet. | MS-TERM |
106
+ | Enable | enable | 启用 | 啟用 | | Turning a feature on. | MS-TERM |
107
+ | Disable | disable | 禁用 | 停用 | | Turning a feature off. | MS-TERM |
108
+ | Release | release | 版本、发布(指动作时) | 版本、發行(指動作時) | | A shipped version, or the act of shipping it. | MS-TERM |
109
+ | Privacy | privacy | 隐私 | 私隱 | | Control over personal information. | MS-TERM |
110
+ | Text message | SMS | 短信 | 短訊 | | A mobile text message. | WP-IT |
111
+ | Mobile app | mobile app | 移动应用 | 流動應用程式 | | An application for phones and tablets. | WP-IT, HK-1823 |
112
+
113
+ ## Payment and risk
114
+
115
+ Keep scheme codes and brand names in their official form: `TC40`, `SAFE`, `3DS`, `MCC`.
116
+ Write out a Chinese gloss once, on first use, when readers may not know the code.
117
+
118
+ | Concept | English | 简体 | 繁體 | Avoid | Meaning | Source |
119
+ | --- | --- | --- | --- | --- | --- | --- |
120
+ | Acquirer | acquirer | 收单机构 | 收單機構 | | The bank or licensed payment institution that accepts card payments for merchants. | PBOC-ACQ, HSB-CB, VISA-HK |
121
+ | Issuer | issuer | 发卡机构 | 發卡機構 | | The bank or institution that issued the card. | PBOC-ACQ, PBOC-CLR, VISA-HK, HSB-CB |
122
+ | Merchant | merchant | 商户 | 商戶 | 商家 | A business that accepts card payments; regulations call it 特约商户. | PBOC-ACQ, VISA-HK, MS-TERM |
123
+ | Card scheme | card scheme | 卡组织、银行卡清算机构(法规) | 卡組織 | | The network that runs card clearing, such as Visa or UnionPay. | PBOC-CLR, HSB-CB |
124
+ | Cardholder | cardholder | 持卡人 | 持卡人 | | The person the card was issued to. | PBOC-ACQ, VISA-HK |
125
+ | Debit card | debit card | 借记卡 | 扣賬卡 | 支票卡、借記卡(港)、轉帳卡(港) | A card that draws on the holder's bank account. | HSB-CB, MS-TERM |
126
+ | Approval | approve | 批准、授权成功(卡交易) | 批核 | | Saying yes to a request; for a card transaction, the issuer's authorization approval. | MS-TERM, VISA-HK |
127
+ | Clearing | clearing | 清算 | 結算 | | The inter-institution step the scheme runs to process and reconcile transactions; Hong Kong calls it 結算. | PBOC-CLR, HKMA-GL |
128
+ | Settlement | settlement | 结算 | 交收 | 清算(指付款给商户时) | Moving the funds, including paying the merchant; not the clearing step. Hong Kong calls it 交收. | PBOC-ACQ, PBOC-CLR, UP-AGR, MS-TERM, HKMA-GL |
129
+ | Settlement account | settlement account | 结算账户 | — | 清算账户(指商户账户时) | The merchant's bank account that receives settled funds. | PBOC-ACQ, UP-AGR |
130
+ | Money account | account | 账户 | 帳戶 | 帐户(简体) | An account holding money at a bank or payment institution; Hong Kong speech also says 戶口. | PBOC-ACQ, PBOC-CDD, HKMA-AML, MS-TERM |
131
+ | Refund | refund | 退款、退货(银联交易类型) | 退款 | | The merchant returning money to the cardholder; not a chargeback. | PBOC-ACQ, UP-AGR, HSB-CB |
132
+ | Chargeback | chargeback | 拒付 | 退款要求 | 退款(指拒付时) | A cardholder dispute, raised through the issuer, that reverses a settled sale; UnionPay contexts say 退单. | UP-AGR, PP-CB, HSB-CB, MS-TERM |
133
+ | Dispute | dispute | 争议 | 爭議 | | A cardholder's challenge to a transaction; PBOC rules call the process 差错和争议处理. | PBOC-ACQ, HSB-CB |
134
+ | Retrieval request | retrieval request | 调单 | — | | The issuer asking the acquirer for the transaction record. | PBOC-ACQ, PP-CB |
135
+ | Representment | representment | 再请款 | — | | The merchant contesting a chargeback with evidence. | UP-AGR, PP-CB |
136
+ | Pre-arbitration | pre-arbitration | 预仲裁 | — | | The last exchange between issuer and acquirer before the scheme rules. | PP-CB |
137
+ | Arbitration | arbitration | 仲裁 | 仲裁 | | The scheme deciding a dispute the two sides could not settle. | PP-CB, HSB-CB |
138
+ | Merchant category code | MCC | MCC | MCC | | The four-digit code for a merchant's line of business, 商户类别码 on first use. | SAFE-MCC, PBOC-ACQ |
139
+ | 3-D Secure | 3DS | 3DS | 3DS | | The cardholder authentication step for online card payments; Visa's version is Visa Secure. | VISA-HK |
140
+ | Card-not-present | card-not-present | 无卡交易 | — | | A card payment made without the physical card, such as online. | PBOC-ACQ, VISA-HK |
141
+ | Fraud | fraud | 欺诈 | 欺詐 | 诈骗(指卡欺诈时) | Unauthorized or deceptive use of a payment; 诈骗 is the word for criminal scams. | PBOC-ACQ, VISA-HK, SPC-2CARD |
142
+ | Suspected fraud | suspected fraud | 疑似欺诈 | — | | A transaction flagged as possibly fraudulent, not yet confirmed. | PBOC-ACQ |
143
+ | Card cash-out | cash-out | 套现 | — | | Turning a credit line into cash through fake or inflated sales. | PBOC-ACQ |
144
+ | Terminal relocation | terminal relocation | 移机 | — | | Moving a POS terminal away from its registered merchant site. | PBOC-ACQ |
145
+ | Visa fraud report | TC40 | TC40 | TC40 | | The issuer's fraud report to Visa, counted in VAMP with TC15 disputes. | VISA-VAMP |
146
+ | Mastercard fraud report | SAFE | SAFE | SAFE | | Mastercard's issuer fraud report, now the Fraud and Loss Database. | MC-FLD |
147
+ | Mule account | mule account | 涉诈账户 | 傀儡戶口 | 钱骡 | An account used to receive and move criminal proceeds for someone else. | SPC-2CARD, HKU-GL |
148
+ | Account seller | card seller | 卡农 | — | | A person who sells or rents out their bank or payment account. | SPC-2CARD |
149
+ | Rented-account laundering | — | 跑分 | — | | Moving illicit funds through rented accounts for a fee. | SPC-2CARD |
150
+ | Know your customer | KYC | 了解你的客户 | 認識你的客戶 | | The principle of knowing who a customer is and what they do. | PBOC-CDD, HKMA-AML |
151
+ | Customer due diligence | CDD | 客户尽职调查 | 客戶盡職審查 | 客户尽职审查(简体) | Identifying and verifying a customer and understanding their business. | PBOC-CDD, HKMA-AML |
152
+ | Enhanced due diligence | EDD | 强化尽职调查 | 強化客戶盡職審查 | | Extra checks for higher-risk customers. | PBOC-CDD, HKMA-AML |
153
+ | Simplified due diligence | SDD | 简化尽职调查 | 簡化客戶盡職審查 | | Lighter checks allowed for lower-risk customers. | PBOC-CDD, HKMA-AML |
154
+ | Ongoing monitoring | ongoing monitoring | 持续的尽职调查 | 持續監察 | | Keeping customer information and activity under review after onboarding. | PBOC-CDD, HKMA-AML |
155
+ | Beneficial owner | beneficial owner | 受益所有人 | 實益擁有人 | | The person who ultimately owns or controls a customer. | PBOC-CDD, AML-LAW, HKMA-AML |
156
+ | Politically exposed person | PEP | 外国政要 | 政治人物 | | A person with a prominent public role; mainland rules cover foreign officials. | PBOC-CDD, HKMA-AML |
157
+ | Anti-money laundering | AML | 反洗钱 | 打擊洗錢 | | Controls that stop criminal proceeds entering the financial system. | PBOC-ACQ, PBOC-CDD, HKMA-AML |
158
+ | Counter-terrorist financing | CFT | 反恐怖融资 | 打擊恐怖分子資金籌集 | | Controls that stop funds reaching terrorists. | PBOC-CDD, HKMA-AML |
159
+ | Suspicious transaction report | STR | 可疑交易报告 | 可疑交易報告 | | A report filed with the authority about a transaction that may involve crime. | PBOC-CDD, HKMA-AML |
160
+ | Sanctions screening | sanctions screening | 名单核查 | 制裁篩查 | | Checking customers against sanctions and terrorist lists. | AML-LAW, HKMA-AML |
161
+ | Risk-based approach | risk-based approach | 基于风险的尽职调查措施 | 風險為本的方法 | | Scaling checks to each customer's risk. | PBOC-CDD, HKMA-AML |
162
+ | Correspondent banking | correspondent banking | 代理行 | 代理銀行 | | One bank providing accounts and services to another bank. | PBOC-CDD, HKMA-AML |
163
+ | Regulatory threshold | threshold | 规定金额 | 門檻 | 阈值(法规语境) | The amount at which a rule applies; a model or rule cut-off is 阈值. | PBOC-CDD, HKMA-AML |
164
+ | Periodic review | review | 审查 | 覆核 | | A scheduled control check of a customer or process; not a document review. | PBOC-CDD, HKMA-AML |
165
+
166
+ ## Words to avoid in reports
167
+
168
+ An empty 简体 or 繁體 cell means: delete the word, or replace it with the specific fact, number or comparison.
169
+
170
+ | Concept | English | 简体 | 繁體 | Avoid | Meaning | Source |
171
+ | --- | --- | --- | --- | --- | --- | --- |
172
+ | Superlative praise | best, most advanced | | | 最佳、最好、最先进、最高水平 | Name what is compared and give the number instead. | XINHUA, ZHSG, MS-CN |
173
+ | Unsupported "only" | only, unique | | | 唯一(无依据时)、唯二 | Claim uniqueness only with evidence, and do not coin forms like 唯二. | MS-CN, RUANYF, ZHSG |
174
+ | Vague degree | much better, basically | | | 很好地、较多、较好、完全地、基本地、事实上 | Replace the degree word with the number or an example. | ZHSG |
175
+ | Vague quantity | some, many, nearly | | | 有些、大量、一些、少许、几乎、数倍 | Give the count, range or multiple. | ZHSG |
176
+ | N-fold decrease | N times less | 降低了 N% | 降低了 N% | 降低 N 倍、减少 N 倍 | A decrease is a percentage; note 增加了两倍 means three times the original. | ZHSG |
177
+ | Slang and internet abbreviations | slang | | | NB、TMD、哇噻 | Use the standard written word. | XINHUA, ZHSG |
178
+ | Rhetorical question | rhetorical question | | | 难道……吗 | State the point as a plain sentence. | ZHSG, SSPAI-1 |
179
+ | Exclamation | exclamation | | | !(非警示) | Use an exclamation mark only to warn about an irreversible action. | ZHSG |
180
+ | Over-casual address | casual tone | | | 亲爱的 | Write in a neutral, objective register. | RUANYF, ZHSG |
181
+
182
+ ## Sources
183
+
184
+ | id | Source | URL | License |
185
+ | --- | --- | --- | --- |
186
+ | MS-CN | Microsoft Chinese (Simplified) Localization Style Guide | https://download.microsoft.com/download/1/5/9/159cb91c-b61b-4385-97ca-80ccc7ff1fa0/zho-chn-StyleGuide.pdf | © Microsoft; ideas and short term pairs only |
187
+ | MS-TW | Microsoft Chinese (Traditional) Localization Style Guide | https://download.microsoft.com/download/2/9/3/293e6d41-ba40-451b-a41e-94bdb6242ae3/zho-twn-StyleGuide.pdf | © Microsoft; ideas and short term pairs only |
188
+ | MS-TERM | Microsoft Terminology collection | https://learn.microsoft.com/en-us/globalization/reference/microsoft-terminology | Microsoft terms of use; terms only |
189
+ | WP-IT | Chinese Wikipedia conversion group Module:CGroup/IT | https://zh.wikipedia.org/wiki/Module:CGroup/IT | CC BY-SA 4.0; term pairs only |
190
+ | RUANYF | 阮一峰《中文技术文档的写作规范》 | https://github.com/ruanyf/document-style-guide/blob/master/docs/text.md | Public domain |
191
+ | ZHSG | yikeke《中文技术文档写作风格指南》 | https://github.com/yikeke/zh-style-guide/tree/master/source | MIT |
192
+ | SSPAI-1 | 葛仲君《地道中文怎么写?英中翻译要避免哪些坑?》少数派 | https://sspai.com/post/59943 | © 少数派; ideas only |
193
+ | SSPAI-2 | PlatyHsu《不要逃避解释:论「相关」和「有关」在日常写作中的滥用》少数派 | https://sspai.com/post/98169 | © 少数派; ideas only |
194
+ | YU | 余光中《怎样改进英式中文?》, via a chapter digest | https://vocus.cc/article/660f6ceafd89780001edf5e0 | © estate; ideas only |
195
+ | SIGUO | 思果《翻译研究》, via reader excerpts | https://book.douban.com/subject/30155966/ | © publisher; ideas only |
196
+ | GMRB | 于德英, 光明日报 2021 | https://www.chinawriter.com.cn/n1/2021/1027/c431803-32265433.html | © 光明日报; ideas only |
197
+ | XINHUA | 《新华社新闻信息报道中的禁用词和慎用词》 | https://wdxy.jsu.edu.cn/upload/9E9D04CE60720572651241DEBB5_17BC5311_4AFCF.pdf | Newsroom rule; ideas only |
198
+ | PBOC-ACQ | 《银行卡收单业务管理办法》 | https://www.gov.cn/gongbao/content/2013/content_2489981.htm | Regulation; not protected |
199
+ | PBOC-CLR | 《银行卡清算机构管理办法》 | https://www.gov.cn/gongbao/2025/issue_12086/202506/content_7026998.html | Regulation; not protected |
200
+ | PBOC-CDD | 《金融机构客户尽职调查和客户身份资料及交易记录保存管理办法》 | https://www.pbc.gov.cn/tiaofasi/144941/144957/4460304/index.html | Regulation; not protected |
201
+ | AML-LAW | 《中华人民共和国反洗钱法》 | http://www.npc.gov.cn/npc/c2/c30834/202411/t20241108_440887.html | Statute; not protected |
202
+ | SPC-2CARD | 两高一部《关于办理帮助信息网络犯罪活动等刑事案件有关问题的意见》 | https://www.court.gov.cn/zixun/xiangqing/472121.html | Judicial document; not protected |
203
+ | SAFE-MCC | 国家外汇管理局《关于更新境内银行卡在境外使用的商户类别码分类的通知》 | http://m.safe.gov.cn/safe/2024/0322/24135.html | Official document; not protected |
204
+ | UP-AGR | 中国银联《银联全渠道商户入网协议》 | https://open.unionpay.com/upload/download/%E9%93%B6%E8%81%94%E5%85%A8%E6%B8%A0%E9%81%93%E5%95%86%E6%88%B7%E5%85%A5%E7%BD%91%E5%8D%8F%E8%AE%AE-pdf%E7%89%88V1.2.pdf | © 中国银联; terms only |
205
+ | HKMA-AML | 香港金融管理局《打擊洗錢及恐怖分子資金籌集指引(認可機構適用)》 | https://www.hkma.gov.hk/media/chi/doc/key-information/guidelines-and-circular/guideline/g33marked.pdf | © HKMA; terms only |
206
+ | VISA-HK | Visa 香港 Visa Secure 商戶頁 | https://hk.review.visa.com/zh_HK/run-your-business/small-business-tools/payment-technology/visa-secure.html | © Visa; terms only |
207
+ | HSB-CB | 恒生銀行 信用卡/扣賬卡退款保障機制資料 | https://www.hangseng.com/content/dam/hase/config/personal/cards/pdfs/zh_HK/chargeback_info.pdf | © Hang Seng Bank; terms only |
208
+ | VISA-VAMP | Visa Acquirer Monitoring Program Fact Sheet | https://corporate.visa.com/content/dam/VCOM/corporate/visa-perspectives/security-and-trust/documents/visa-acquirer-monitoring-program-fact-sheet-2025.pdf | © Visa; facts only |
209
+ | MC-FLD | Mastercard Developers, Fraud and Loss Database | https://developer.mastercard.com/fld-fraud-submission/documentation/use-cases/ | © Mastercard; facts only |
210
+ | PP-CB | PingPong 收单 API 文档「拒付」术语页 | https://acquirer-api-docs-v4.pingpongx.com/notes/zh/technicalterm/chargebacks/ | © PingPong; terms only, industry usage |
211
+ | HKU-GL | 香港大學 interpreting glossary | https://www.interpreting.hku.hk/glossary/?p=80026 | No licence stated; terms only |
212
+ | HKMA-GL | 香港金融管理局《貨幣及銀行用語》結算與交收詞條 | https://www.hkma.gov.hk/media/chi/publications-and-research/reference-materials/monetary-and-banking-terms/12_index_eng.pdf | © HKMA; terms only |
213
+ | MS-HK | Microsoft 香港中文支援與學習頁面 | https://support.microsoft.com/zh-hk/windows/security/identity-signin/manage-user-accounts-in-windows | © Microsoft; terms only |
214
+ | HK-1823 | 香港政府 1823 流動應用程式頁面 | https://www.1823.gov.hk/tc/page/detail/1234 | © HKSAR Government; terms only |
215
+
216
+ License limits:
217
+
218
+ - WP-IT (CC BY-SA 4.0): this file uses single term pairs only. Do not import the conversion table, which would need attribution and share-alike.
219
+ - ZHSG (MIT): nothing here is copied from it. Anything copied later must carry its MIT notice.
220
+ - RUANYF is public domain. Nothing here is copied from it.
221
+ - Regulator and court texts (PBOC-ACQ, PBOC-CLR, PBOC-CDD, AML-LAW, SPC-2CARD, SAFE-MCC) are not protected by copyright under PRC Copyright Law art. 5.
222
+ - Microsoft, Visa, Mastercard, UnionPay, HKMA, Hang Seng, PingPong and HKU sources supply term pairs and facts only. Do not copy their sentences.
223
+ - YU, SIGUO, SSPAI-1, SSPAI-2, GMRB and XINHUA supply ideas only. Every example in this file is newly written.
@@ -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. */ }