@1aboveio/skills 1.0.1 → 1.0.3

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 (91) hide show
  1. package/README.md +25 -8
  2. package/bin/select-core.mjs +182 -50
  3. package/extensions/hide-copies.ts +21 -0
  4. package/package.json +116 -3
  5. package/skills/app-dev/airflow/SKILL.md +1 -1
  6. package/skills/app-dev/android-foundation/SKILL.md +1 -1
  7. package/skills/app-dev/app-debug/SKILL.md +1 -1
  8. package/skills/app-dev/better-auth/SKILL.md +1 -1
  9. package/skills/app-dev/data-catalog/SKILL.md +2 -1
  10. package/skills/app-dev/data-catalog/references/data-catalog-conventions.md +2 -1
  11. package/skills/app-dev/data-catalog/references/field-definitions.md +2 -1
  12. package/skills/app-dev/data-catalog/references/format.md +6 -2
  13. package/skills/app-dev/data-catalog/scripts/data_catalog.py +15 -3
  14. package/skills/app-dev/data-catalog/scripts/persist-conventions-core.mjs +3 -2
  15. package/skills/app-dev/data-catalog/scripts/test_data_catalog.py +15 -0
  16. package/skills/app-dev/data-quality/LICENSE +3 -0
  17. package/skills/app-dev/data-quality/SKILL.md +96 -0
  18. package/skills/app-dev/data-quality/agents/openai.yaml +3 -0
  19. package/skills/app-dev/data-quality/references/checks.md +56 -0
  20. package/skills/app-dev/data-quality/release-check.mjs +93 -0
  21. package/skills/app-dev/data-quality/scripts/data-quality.test.mjs +12 -0
  22. package/skills/app-dev/data-quality/scripts/data_quality.py +405 -0
  23. package/skills/app-dev/data-quality/scripts/test_data_quality.py +277 -0
  24. package/skills/app-dev/ios-foundation/SKILL.md +1 -1
  25. package/skills/app-dev/monorepo/SKILL.md +1 -1
  26. package/skills/app-dev/nextjs-fullstack/SKILL.md +1 -1
  27. package/skills/app-dev/prisma-setup/SKILL.md +1 -1
  28. package/skills/app-dev/pyspark/SKILL.md +1 -1
  29. package/skills/app-dev/python-backend/SKILL.md +1 -1
  30. package/skills/app-dev/shadcn/SKILL.md +1 -1
  31. package/skills/app-dev/zod-v4/SKILL.md +1 -1
  32. package/skills/cicd/cloud-build/SKILL.md +1 -1
  33. package/skills/cicd/cloud-debug/SKILL.md +1 -1
  34. package/skills/cicd/cloud-deploy/SKILL.md +1 -1
  35. package/skills/cicd/docker/SKILL.md +1 -1
  36. package/skills/cicd/github-actions/SKILL.md +1 -1
  37. package/skills/cicd/github-flow/SKILL.md +1 -1
  38. package/skills/cicd/github-flow/scripts/persist-conventions-core.mjs +3 -2
  39. package/skills/cicd/google-cloud/SKILL.md +1 -1
  40. package/skills/cicd/mergify/SKILL.md +1 -1
  41. package/skills/cicd/podman/SKILL.md +1 -1
  42. package/skills/content/article-review/SKILL.md +1 -1
  43. package/skills/content/article-to-image/SKILL.md +1 -1
  44. package/skills/content/flowchart-svg/SKILL.md +1 -1
  45. package/skills/content/image-gen/SKILL.md +1 -1
  46. package/skills/content/mermaid/SKILL.md +1 -1
  47. package/skills/content/wechat-article-writer/SKILL.md +1 -1
  48. package/skills/content/wechat-publisher/SKILL.md +1 -1
  49. package/skills/content/wechat-search/SKILL.md +1 -1
  50. package/skills/content/xai-search/SKILL.md +1 -1
  51. package/skills/core/distill-writing/SKILL.md +1 -1
  52. package/skills/core/doc-to-md/SKILL.md +1 -1
  53. package/skills/core/editorial-review/SKILL.md +1 -1
  54. package/skills/core/house-style/SKILL.md +1 -1
  55. package/skills/core/plain-language/LICENSE +3 -0
  56. package/skills/core/plain-language/SKILL.md +57 -0
  57. package/skills/core/plain-language/release-check.mjs +93 -0
  58. package/skills/core/polish-cn/SKILL.md +1 -1
  59. package/skills/core/reg-parser/SKILL.md +1 -1
  60. package/skills/core/terminology/SKILL.md +1 -1
  61. package/skills/core/write-doc/SKILL.md +1 -1
  62. package/skills/engineering/better-review/SKILL.md +1 -1
  63. package/skills/engineering/contributing/LICENSE +3 -0
  64. package/skills/engineering/contributing/SKILL.md +70 -0
  65. package/skills/engineering/contributing/references/tracker-conventions.md +18 -0
  66. package/skills/engineering/contributing/release-check.mjs +93 -0
  67. package/skills/engineering/contributing/scripts/persist-conventions-core.mjs +118 -0
  68. package/skills/engineering/contributing/scripts/persist-conventions.mjs +84 -0
  69. package/skills/engineering/contributing/scripts/persist-conventions.test.mjs +118 -0
  70. package/skills/engineering/e2e-test/SKILL.md +1 -1
  71. package/skills/engineering/engineering-runtime/SKILL.md +1 -1
  72. package/skills/engineering/engineering-runtime/coherence/workflow.json +29 -14
  73. package/skills/engineering/engineering-runtime/scripts/workflow-policy.mjs +1 -0
  74. package/skills/engineering/ensure-coverage/SKILL.md +1 -1
  75. package/skills/engineering/golden-path/SKILL.md +1 -1
  76. package/skills/engineering/harness-runtime/SKILL.md +1 -1
  77. package/skills/engineering/resolve-issues/SKILL.md +1 -1
  78. package/skills/engineering/resolve-release/SKILL.md +1 -1
  79. package/skills/engineering/rush-issues/SKILL.md +1 -1
  80. package/skills/engineering/rush-release/SKILL.md +1 -1
  81. package/skills/engineering/test-quality/SKILL.md +1 -1
  82. package/skills/engineering/test-quality/scripts/persist-conventions-core.mjs +3 -2
  83. package/skills/risk-compliance/compliance-audit/SKILL.md +1 -1
  84. package/skills/risk-compliance/contract-compare/SKILL.md +1 -1
  85. package/skills/risk-compliance/contract-review/SKILL.md +1 -1
  86. package/skills/risk-compliance/doc-authenticity/SKILL.md +1 -1
  87. package/skills/risk-compliance/fraud-analysis/SKILL.md +1 -1
  88. package/skills/risk-compliance/payment-analysis/SKILL.md +1 -1
  89. package/skills/risk-compliance/report-writing/SKILL.md +1 -1
  90. package/skills/risk-compliance/similar-domain/SKILL.md +1 -1
  91. package/skills/risk-compliance/tld-detection/SKILL.md +1 -1
@@ -0,0 +1,118 @@
1
+ // Tests for persist-conventions: the real CLI against real files in a temp repo.
2
+ import { test } from 'node:test'
3
+ import assert from 'node:assert/strict'
4
+ import { spawnSync } from 'node:child_process'
5
+ import { lstatSync, mkdtempSync, readFileSync, readlinkSync, rmSync, writeFileSync } from 'node:fs'
6
+ import { tmpdir } from 'node:os'
7
+ import { join } from 'node:path'
8
+ import { fileURLToPath } from 'node:url'
9
+
10
+ import { markers } from './persist-conventions-core.mjs'
11
+
12
+ const CLI = fileURLToPath(new URL('./persist-conventions.mjs', import.meta.url))
13
+ const [START, END] = markers('tracker')
14
+
15
+ function withRepo(fn, remote) {
16
+ const dir = mkdtempSync(join(tmpdir(), 'contributing-'))
17
+ try {
18
+ if (remote) {
19
+ spawnSync('git', ['init', '-q', dir])
20
+ spawnSync('git', ['-C', dir, 'remote', 'add', 'origin', remote])
21
+ }
22
+ return fn(dir, (name) => readFileSync(join(dir, name), 'utf8'))
23
+ } finally {
24
+ rmSync(dir, { recursive: true, force: true })
25
+ }
26
+ }
27
+
28
+ function run(dir, ...args) {
29
+ const res = spawnSync(process.execPath, [CLI, '--repo-root', dir, ...args], { encoding: 'utf8' })
30
+ return { code: res.status, out: res.stdout }
31
+ }
32
+
33
+ test('--write creates CONTRIBUTING.md with the section, the repo from origin, and the Linear projects', () => {
34
+ withRepo((dir, read) => {
35
+ const { code } = run(dir, '--linear-project', 'Checkout Risk', '--write')
36
+ assert.equal(code, 0)
37
+ const text = read('CONTRIBUTING.md')
38
+ assert.ok(text.startsWith('# Contributing\n'))
39
+ assert.ok(text.includes(START) && text.includes(END))
40
+ assert.match(text, /GitHub issues on `acme\/widgets`/)
41
+ assert.match(text, /Linear \(projects: Checkout Risk\)/)
42
+ assert.match(text, /gh issue list --repo acme\/widgets/)
43
+ assert.doesNotMatch(text, /\{\{/)
44
+ }, 'git@github.com:acme/widgets.git')
45
+ })
46
+
47
+ test('an https remote and an explicit --github-repo both name the repo', () => {
48
+ withRepo((dir, read) => {
49
+ assert.equal(run(dir, '--write').code, 0)
50
+ assert.match(read('CONTRIBUTING.md'), /GitHub issues on `acme\/widgets`\. Product work is tracked in Linear\./)
51
+ }, 'https://github.com/acme/widgets')
52
+ withRepo((dir, read) => {
53
+ assert.equal(run(dir, '--github-repo', 'acme/other', '--write').code, 0)
54
+ assert.match(read('CONTRIBUTING.md'), /`acme\/other`/)
55
+ })
56
+ })
57
+
58
+ test('without a GitHub remote or --github-repo it refuses with exit 2 and writes nothing', () => {
59
+ withRepo((dir) => {
60
+ const { code, out } = run(dir, '--write')
61
+ assert.equal(code, 2)
62
+ assert.match(out, /--github-repo/)
63
+ assert.throws(() => readFileSync(join(dir, 'CONTRIBUTING.md')))
64
+ })
65
+ })
66
+
67
+ test('--if-missing appends to an existing CONTRIBUTING.md once, then leaves the section alone', () => {
68
+ withRepo((dir, read) => {
69
+ writeFileSync(join(dir, 'CONTRIBUTING.md'), '# Contributing\n\nRun the tests.\n')
70
+ assert.equal(run(dir, '--if-missing', '--write').code, 0)
71
+ const first = read('CONTRIBUTING.md')
72
+ assert.ok(first.startsWith('# Contributing\n\nRun the tests.\n'))
73
+ assert.ok(first.includes(START))
74
+
75
+ const edited = first.replace('acme/widgets`. Product', 'acme/widgets`. Hand-edited. Product')
76
+ writeFileSync(join(dir, 'CONTRIBUTING.md'), edited)
77
+ const { code, out } = run(dir, '--if-missing', '--linear-project', 'Other', '--write')
78
+ assert.equal(code, 0)
79
+ assert.match(out, /already present/)
80
+ assert.equal(read('CONTRIBUTING.md'), edited)
81
+ }, 'git@github.com:acme/widgets.git')
82
+ })
83
+
84
+ test('without --write it previews and writes nothing', () => {
85
+ withRepo((dir) => {
86
+ const { code, out } = run(dir)
87
+ assert.equal(code, 0)
88
+ assert.match(out, /CONTRIBUTING\.md: would create/)
89
+ assert.throws(() => readFileSync(join(dir, 'CONTRIBUTING.md')))
90
+ }, 'git@github.com:acme/widgets.git')
91
+ })
92
+
93
+ test('the first run indexes CONTRIBUTING.md from AGENTS.md and links CLAUDE.md, once', () => {
94
+ withRepo((dir, read) => {
95
+ assert.equal(run(dir, '--if-missing', '--write').code, 0)
96
+ assert.match(read('AGENTS.md'), /\[CONTRIBUTING\.md\]\(CONTRIBUTING\.md\).*issue tracking/)
97
+ assert.ok(lstatSync(join(dir, 'CLAUDE.md')).isSymbolicLink())
98
+ assert.equal(readlinkSync(join(dir, 'CLAUDE.md')), 'AGENTS.md')
99
+ }, 'git@github.com:acme/widgets.git')
100
+ withRepo((dir, read) => {
101
+ writeFileSync(join(dir, 'AGENTS.md'), '# Agents\n\nSee CONTRIBUTING.md for everything.\n')
102
+ assert.equal(run(dir, '--if-missing', '--write').code, 0)
103
+ assert.equal(read('AGENTS.md'), '# Agents\n\nSee CONTRIBUTING.md for everything.\n')
104
+ }, 'git@github.com:acme/widgets.git')
105
+ })
106
+
107
+ test('--if-missing restores a missing AGENTS.md index even when the section is already present', () => {
108
+ withRepo((dir, read) => {
109
+ assert.equal(run(dir, '--write').code, 0)
110
+ const section = read('CONTRIBUTING.md')
111
+ writeFileSync(join(dir, 'AGENTS.md'), '# Agents\n')
112
+ const { code, out } = run(dir, '--if-missing', '--write')
113
+ assert.equal(code, 0)
114
+ assert.match(out, /already present; 1 index file\(s\) written/)
115
+ assert.match(read('AGENTS.md'), /^# Agents\n\n## Contributing\n/)
116
+ assert.equal(read('CONTRIBUTING.md'), section)
117
+ }, 'git@github.com:acme/widgets.git')
118
+ })
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: e2e-test
3
3
  description: "Playwright end-to-end standard: the 3-tier suite (render-health / functional / journey), generated route manifest, and presentation sweep. Use when browser routes or user flows ship or change, or a Playwright test flakes. NOT for non-browser tests, defining what to test (ensure-coverage), the curated ALIVE/DEAD golden-path gate (golden-path), or CI workflow YAML (github-actions)."
4
- release-version: 0.38.0
4
+ release-version: 0.40.0
5
5
  ---
6
6
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
7
7
  # E2E Testing Standard
@@ -3,7 +3,7 @@ name: engineering-runtime
3
3
  description: Internal support package for shared Engineering Workflow executable behavior. Never select or invoke this package as a user capability.
4
4
  disable-model-invocation: true
5
5
  user-invocable: false
6
- release-version: 0.38.0
6
+ release-version: 0.40.0
7
7
  ---
8
8
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
9
9
  # Engineering Runtime
@@ -11,6 +11,7 @@
11
11
  "golden-path",
12
12
  "test-quality",
13
13
  "better-review",
14
+ "contributing",
14
15
  "engineering-runtime"
15
16
  ],
16
17
  "dependencies": [
@@ -368,7 +369,7 @@
368
369
  "repository": "1aboveio/ai",
369
370
  "revision": "main"
370
371
  },
371
- "contentDigest": "ede57e946935943c0a9738f61f98a681de40ac829f15b506b3d555af3c837d5e",
372
+ "contentDigest": "cce3cfb21f16ea64b5b008ef9970b1cdf4cf2b1410f32105e3b305821acf1c1f",
372
373
  "digestExcludes": []
373
374
  },
374
375
  {
@@ -381,7 +382,7 @@
381
382
  "repository": "1aboveio/ai",
382
383
  "revision": "main"
383
384
  },
384
- "contentDigest": "342e1e3d8622a8c0ea731ea547d81307f9668dc3b47cec48e2d656644429d59b",
385
+ "contentDigest": "c87e5250fe86e4e01f5bf8d4db59f77893de385bba4fc34742429147b22b5253",
385
386
  "digestExcludes": []
386
387
  },
387
388
  {
@@ -394,7 +395,7 @@
394
395
  "repository": "1aboveio/ai",
395
396
  "revision": "main"
396
397
  },
397
- "contentDigest": "22baa247d353404a8f5d62118fd5413a0dcab8b31ea8d4a149a366119935728a",
398
+ "contentDigest": "5e449cef39b924bddd4b24cf64ea63b5b93e745194100d797ddd830bd00a97b7",
398
399
  "digestExcludes": []
399
400
  },
400
401
  {
@@ -407,7 +408,7 @@
407
408
  "repository": "1aboveio/ai",
408
409
  "revision": "main"
409
410
  },
410
- "contentDigest": "d6c36b7fe99028bb50ce426179582fbf5f26acc10eabf64ea7b539c3d7bb4e94",
411
+ "contentDigest": "35b0a26911041468eda83f0b3829f343806d39292a381984de39fef2f813ec4b",
411
412
  "digestExcludes": []
412
413
  },
413
414
  {
@@ -420,7 +421,7 @@
420
421
  "repository": "1aboveio/ai",
421
422
  "revision": "main"
422
423
  },
423
- "contentDigest": "f9d590fea8293be09e612bf3a7a2710838be170dc467633ee51e78964fc0a604",
424
+ "contentDigest": "b9e265715330e802d711d0a47012bc32c91d882656e227530f51b08976672d20",
424
425
  "digestExcludes": []
425
426
  },
426
427
  {
@@ -433,7 +434,7 @@
433
434
  "repository": "1aboveio/ai",
434
435
  "revision": "main"
435
436
  },
436
- "contentDigest": "12cc3a98706ee99d2d7196a03b75488c57617e7fcac51f5c1cc7ff4e8b458cd3",
437
+ "contentDigest": "6b4736a329dcf2d35eeb74ea019aaa39b82fb129fbd735e55d68c3bab063d046",
437
438
  "digestExcludes": []
438
439
  },
439
440
  {
@@ -446,7 +447,7 @@
446
447
  "repository": "1aboveio/ai",
447
448
  "revision": "main"
448
449
  },
449
- "contentDigest": "4295daaf41ab71b8553eda46aed7d715243839c58876e7d59d6edf4a2488c5e8",
450
+ "contentDigest": "d2645ec3b2b28cc08cd4026d6ffb7e56d43e31031c024004b79a07a5fc59bb25",
450
451
  "digestExcludes": []
451
452
  },
452
453
  {
@@ -459,7 +460,7 @@
459
460
  "repository": "1aboveio/ai",
460
461
  "revision": "main"
461
462
  },
462
- "contentDigest": "0f4f8ba5b8c072a056eaf9fdadcb23b0d2cbd15da35bd9c61eb133f544f7a48e",
463
+ "contentDigest": "61708f1a0dd9024f7cc1c99661c074cee6299587220f22ce197d2ec312a79370",
463
464
  "digestExcludes": []
464
465
  },
465
466
  {
@@ -472,7 +473,7 @@
472
473
  "repository": "1aboveio/ai",
473
474
  "revision": "main"
474
475
  },
475
- "contentDigest": "4fb9681275ad9d4505939a987f9c6c48ad7edd5e1620f3bfcb8b64b33c1c307a",
476
+ "contentDigest": "ece6ce482174817c58344af70149085a594df54b8e70e8535ec267e26f5e00ab",
476
477
  "digestExcludes": []
477
478
  },
478
479
  {
@@ -485,7 +486,20 @@
485
486
  "repository": "1aboveio/ai",
486
487
  "revision": "main"
487
488
  },
488
- "contentDigest": "6fd11ca849b3cd62e2d723b0857ce83cd47bef74f6c563bc790e0d5fa19a94ea",
489
+ "contentDigest": "ddaf8300548bcf2628fa6b6f6933885e05dc0451f5ca0e9bb6629fcca2c673bb",
490
+ "digestExcludes": []
491
+ },
492
+ {
493
+ "installName": "contributing",
494
+ "ownership": "owned",
495
+ "sourcePath": "skills/engineering/contributing",
496
+ "expectedSource": {
497
+ "id": "first-party",
498
+ "type": "first-party",
499
+ "repository": "1aboveio/ai",
500
+ "revision": "main"
501
+ },
502
+ "contentDigest": "00c5971a8363fc1382afa6914707e764c9d3d0cb76a8e3a3ffcfd1d9d5fd5da5",
489
503
  "digestExcludes": []
490
504
  },
491
505
  {
@@ -498,13 +512,13 @@
498
512
  "repository": "1aboveio/ai",
499
513
  "revision": "main"
500
514
  },
501
- "contentDigest": "c112b4366f5db260f0d9256c471d7ca76b9a97346a257645665b58f0c0feb17a",
515
+ "contentDigest": "1599a61cc8f82eec8dd1b426604ec55ba65c503e4c793c5e57670e737e765462",
502
516
  "digestExcludes": [
503
517
  "coherence/workflow.json"
504
518
  ]
505
519
  }
506
520
  ],
507
- "releaseIdentity": "54e0cb4f3d607e8babde1a5cb3dee9e1c659fb55696a3a431d69d541363da645",
521
+ "releaseIdentity": "5d71cce8b6dec3bb1fe3ad66fa046bdc870d197d110685d2d8981410c56f5686",
508
522
  "lifecycleAuthority": "native-skills-cli",
509
523
  "repairRecipe": {
510
524
  "id": "engineering-workflow-dependency-first",
@@ -575,16 +589,17 @@
575
589
  "golden-path",
576
590
  "test-quality",
577
591
  "better-review",
592
+ "contributing",
578
593
  "engineering-runtime"
579
594
  ],
580
595
  "commands": [
581
596
  {
582
597
  "transport": "https",
583
- "command": "npx skills@1.5.22 add 1aboveio/ai --global --agent universal claude-code --skill harness-runtime e2e-test ensure-coverage rush-issues resolve-issues rush-release resolve-release golden-path test-quality better-review engineering-runtime && npm --prefix \"$(realpath \"$HOME/.agents/skills/engineering-runtime/scripts\")\" ci --ignore-scripts"
598
+ "command": "npx skills@1.5.22 add 1aboveio/ai --global --agent universal claude-code --skill harness-runtime e2e-test ensure-coverage rush-issues resolve-issues rush-release resolve-release golden-path test-quality better-review contributing engineering-runtime && npm --prefix \"$(realpath \"$HOME/.agents/skills/engineering-runtime/scripts\")\" ci --ignore-scripts"
584
599
  },
585
600
  {
586
601
  "transport": "ssh",
587
- "command": "npx skills@1.5.22 add git@github.com:1aboveio/ai.git --global --agent universal claude-code --skill harness-runtime e2e-test ensure-coverage rush-issues resolve-issues rush-release resolve-release golden-path test-quality better-review engineering-runtime && npm --prefix \"$(realpath \"$HOME/.agents/skills/engineering-runtime/scripts\")\" ci --ignore-scripts"
602
+ "command": "npx skills@1.5.22 add git@github.com:1aboveio/ai.git --global --agent universal claude-code --skill harness-runtime e2e-test ensure-coverage rush-issues resolve-issues rush-release resolve-release golden-path test-quality better-review contributing engineering-runtime && npm --prefix \"$(realpath \"$HOME/.agents/skills/engineering-runtime/scripts\")\" ci --ignore-scripts"
588
603
  }
589
604
  ],
590
605
  "onFailure": {
@@ -16,6 +16,7 @@ export const WORKFLOW_OWNED_MEMBERS = deepFreeze([
16
16
  'golden-path',
17
17
  'test-quality',
18
18
  'better-review',
19
+ 'contributing',
19
20
  'engineering-runtime',
20
21
  ]);
21
22
 
@@ -2,7 +2,7 @@
2
2
  name: ensure-coverage
3
3
  description: "Define or audit behavior-first test criteria — ACs, required test levels, mock/integration/E2E policy — across three axes: breadth (Coverage Ledger), depth (over-mocking), presentation (perceivability of browser surfaces). NOT judging whether a single test is any good (test-quality), authoring browser tests (e2e-test), reviewing a PR (better-review), or delivering issues (resolve-issues)."
4
4
  disable-model-invocation: true
5
- release-version: 0.38.0
5
+ release-version: 0.40.0
6
6
  ---
7
7
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
8
8
  # Ensure Coverage
@@ -3,7 +3,7 @@ name: golden-path
3
3
  description: "Golden-path E2E: the short list of user journeys whose failure blocks a release, kept in a repo as one contract (golden-paths.json) with a generated GOLDEN_PATHS.md and a generated GitHub Actions workflow, and run against a local build or a deployed URL for an ALIVE/DEAD verdict. Use to set golden paths up in a repo ('init golden paths', 'add golden-path CI'), to migrate an older smoke.manifest.json or a hand-built smoke setup ('audit', 'migrate smoke'), to add, change, or remove a golden path, to ask 'is the build alive?' or run them before a PR or release, or when a change touches a flow listed in GOLDEN_PATHS.md. NOT for writing the Playwright specs themselves (e2e-test), deciding what a change must prove (ensure-coverage), or general workflow YAML (github-actions)."
4
4
  dependencies:
5
5
  - e2e-test
6
- release-version: 0.38.0
6
+ release-version: 0.40.0
7
7
  ---
8
8
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
9
9
  # Golden path
@@ -3,7 +3,7 @@ name: harness-runtime
3
3
  description: Internal import-only library shared by first-party engineering packages. Not a workflow skill; never select or invoke it as a user capability.
4
4
  disable-model-invocation: true
5
5
  user-invocable: false
6
- release-version: 0.38.0
6
+ release-version: 0.40.0
7
7
  ---
8
8
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
9
9
  # Harness Runtime
@@ -8,7 +8,7 @@ dependencies:
8
8
  - better-review
9
9
  - golden-path
10
10
  - harness-runtime
11
- release-version: 0.38.0
11
+ release-version: 0.40.0
12
12
  ---
13
13
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
14
14
  # Resolve issues
@@ -4,7 +4,7 @@ description: "Slash/explicit-only (/resolve-release). Full GitHub Flow release f
4
4
  disable-model-invocation: true
5
5
  metadata:
6
6
  workflow-role: coordinator
7
- release-version: 0.38.0
7
+ release-version: 0.40.0
8
8
  ---
9
9
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
10
10
  # Resolve release
@@ -6,7 +6,7 @@ metadata:
6
6
  workflow-role: coordinator
7
7
  dependencies:
8
8
  - resolve-issues
9
- release-version: 0.38.0
9
+ release-version: 0.40.0
10
10
  ---
11
11
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
12
12
  # Rush issues (shortcut of resolve-issues)
@@ -6,7 +6,7 @@ metadata:
6
6
  workflow-role: coordinator
7
7
  dependencies:
8
8
  - resolve-release
9
- release-version: 0.38.0
9
+ release-version: 0.40.0
10
10
  ---
11
11
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
12
12
  # Rush release (shortcut of resolve-release)
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: test-quality
3
3
  description: "Seven principles for tests that catch real bugs, and an audit that reports weak, redundant, and not-coverage tests without fixing them. Use when writing, changing, or reviewing tests, or when asked whether tests are useful, redundant, over-mocked, flaky, only assert static text, or test config files, or asked to make a slow test suite faster without losing coverage, or when the user asks to write the testing conventions into a repo's CONTRIBUTING.md. NOT defining what a spec must prove (ensure-coverage) or authoring browser tests (e2e-test)."
4
- release-version: 0.38.0
4
+ release-version: 0.40.0
5
5
  ---
6
6
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
7
7
  # Test Quality
@@ -5,7 +5,8 @@
5
5
  // section, so no main-module guard here.
6
6
  //
7
7
  // Byte-identical copies live in test-quality (Testing conventions), github-flow
8
- // (CI conventions, Delivery) and data-catalog (Data catalog conventions);
8
+ // (CI conventions, Delivery), data-catalog (Data catalog conventions) and
9
+ // contributing (Issue tracking);
9
10
  // skills/conventions-sections.test.mjs keeps them identical and proves the sections
10
11
  // coexist in one file.
11
12
  //
@@ -22,7 +23,7 @@ const MENTIONS_CONTRIBUTING = /(?:^|[^\w-])CONTRIBUTING\.md/
22
23
  export const AGENTS_SECTION = [
23
24
  '## Contributing',
24
25
  '',
25
- `Follow [${CONTRIBUTING_FILE}](${CONTRIBUTING_FILE}) when writing, reviewing, or delivering code: tests, CI, data definitions, and what to do after each commit.`,
26
+ `Follow [${CONTRIBUTING_FILE}](${CONTRIBUTING_FILE}) when writing, reviewing, or delivering code, or creating issues: tests, CI, data definitions, issue tracking, and what to do after each commit.`,
26
27
  '',
27
28
  ].join('\n')
28
29
 
@@ -2,7 +2,7 @@
2
2
  name: compliance-audit
3
3
  version: 2.9.0
4
4
  description: "Audit operations against financial-compliance checklists (AML/KYC, VARS, PCI-DSS, TPA oversight, onboarding, transaction monitoring). Produces tracker.md (with a tracker.xlsx export) and phase-trail.md with layered validation; cites evidence by original filename. Input: reg-parser or the built-in VARS checklist."
5
- release-version: 0.38.0
5
+ release-version: 0.40.0
6
6
  ---
7
7
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
8
8
  # Compliance Audit
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: contract-compare
3
3
  description: "Compare two or more contracts side-by-side for structured diff, gap analysis, and benchmarking. Use when: comparing contracts or agreements, contract diff, compare terms, vendor-vs-vendor, compare our template vs theirs, compliance gap between contracts. NOT for single-contract risk review — use contract-review for that."
4
- release-version: 0.38.0
4
+ release-version: 0.40.0
5
5
  ---
6
6
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
7
7
  # Contract Compare
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: contract-review
3
3
  description: "Review contracts for legal, commercial, and compliance risks via convert → chunk review → merge → validate (+ optional mandate preprocessing). Use for reviewing, auditing, or checking any contract, agreement, NDA, MSA, or SLA; input a file path (PDF/DOCX/TXT) or pasted text."
4
- release-version: 0.38.0
4
+ release-version: 0.40.0
5
5
  ---
6
6
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
7
7
  # Contract Review
@@ -3,7 +3,7 @@ name: doc-authenticity
3
3
  version: 0.4.1
4
4
  description: "Screen PDF documents and raster images for fabrication, tampering, Photoshop or other image-editor use, and content validity. Detects file type, runs format-specific authenticity forensics, classifies bank statements, conversation logs, invoices, agreements, and other documents, then applies type-specific validity checks. Produces separate authenticity (NO_EVIDENCE_OF_MODIFICATION / SUSPICIOUS / LIKELY_MODIFIED / INCONCLUSIVE) and validity (VALID / INVALID / INCONCLUSIVE) verdicts. Use whenever a user asks whether a document, screenshot, scan, statement, invoice, contract, chat log, receipt, or payment evidence is genuine, original, edited, Photoshopped, manipulated, fake, or valid."
5
5
  disable-model-invocation: true
6
- release-version: 0.38.0
6
+ release-version: 0.40.0
7
7
  ---
8
8
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
9
9
  # Document and Image Authenticity
@@ -10,7 +10,7 @@ description: >
10
10
  impact, and a business report. Use for fraud, scam, mule, account-takeover,
11
11
  chargeback, dispute, transfer, collection, or payout risk analysis even when the
12
12
  user does not name this skill.
13
- release-version: 0.38.0
13
+ release-version: 0.40.0
14
14
  ---
15
15
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
16
16
  # Fraud Analysis
@@ -14,7 +14,7 @@ description: >
14
14
  transactions" — even if they do not say payment-analysis. Do NOT use for
15
15
  supervised fraud-rule mining (fraud-analysis) or TLD / MCC-miscoding
16
16
  clusters (tld-detection).
17
- release-version: 0.38.0
17
+ release-version: 0.40.0
18
18
  ---
19
19
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
20
20
  # Payment Analysis
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: report-writing
3
3
  description: "Convert compliance audit findings into audience-formatted reports. Four styles: VARS Review Report (Visa's official 2025 template, required verbatim for VARS engagements), Audit Report (compliance team), External Assessment (regulators/external auditors), Management Report (board/C-suite). Use whenever audit output needs to become a deliverable, even just 'write up the findings'."
4
- release-version: 0.38.0
4
+ release-version: 0.40.0
5
5
  ---
6
6
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
7
7
  # Report Writing
@@ -8,7 +8,7 @@ description: >
8
8
  links, an entity chain, and a watchlist for the operator's next domains.
9
9
  Not transaction data (tld-detection) or fraud rules (fraud-analysis).
10
10
  disable-model-invocation: true
11
- release-version: 0.38.0
11
+ release-version: 0.40.0
12
12
  ---
13
13
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
14
14
  # Similar Domain
@@ -11,7 +11,7 @@ description: >
11
11
  with a ≤3-sentence summary.
12
12
  Not payment-analysis, fraud-analysis, or website research (similar-domain).
13
13
  disable-model-invocation: true
14
- release-version: 0.38.0
14
+ release-version: 0.40.0
15
15
  ---
16
16
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
17
17
  # TLD Detection