@1aboveio/skills 1.0.20 → 1.0.22

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 (92) hide show
  1. package/.codex-plugin/plugin.json +1 -1
  2. package/.codex-plugin/resources.json +154 -151
  3. package/package.json +4 -4
  4. package/skills/app-dev/airflow/SKILL.md +1 -1
  5. package/skills/app-dev/android-development/SKILL.md +1 -1
  6. package/skills/app-dev/app-debug/SKILL.md +1 -1
  7. package/skills/app-dev/better-auth/SKILL.md +1 -1
  8. package/skills/app-dev/data-catalog/SKILL.md +1 -1
  9. package/skills/app-dev/data-quality/SKILL.md +1 -1
  10. package/skills/app-dev/ios-foundation/SKILL.md +1 -1
  11. package/skills/app-dev/maestro/SKILL.md +8 -1
  12. package/skills/app-dev/monorepo/SKILL.md +1 -1
  13. package/skills/app-dev/nextjs-fullstack/SKILL.md +1 -1
  14. package/skills/app-dev/prisma-setup/SKILL.md +1 -1
  15. package/skills/app-dev/pyspark/SKILL.md +1 -1
  16. package/skills/app-dev/python-backend/SKILL.md +1 -1
  17. package/skills/app-dev/shadcn/SKILL.md +1 -1
  18. package/skills/app-dev/zod-v4/SKILL.md +1 -1
  19. package/skills/cicd/cloud-build/SKILL.md +1 -1
  20. package/skills/cicd/cloud-debug/SKILL.md +1 -1
  21. package/skills/cicd/cloud-deploy/SKILL.md +1 -1
  22. package/skills/cicd/docker/SKILL.md +1 -1
  23. package/skills/cicd/github-actions/SKILL.md +8 -2
  24. package/skills/cicd/github-actions/references/debugging.md +21 -0
  25. package/skills/cicd/github-actions/references/pipeline.md +26 -0
  26. package/skills/cicd/github-actions/references/post-deploy-and-publishing.md +7 -0
  27. package/skills/cicd/github-actions/scripts/watch-run.mjs +511 -0
  28. package/skills/cicd/github-flow/SKILL.md +35 -9
  29. package/skills/cicd/github-flow/scripts/watch-checks.mjs +561 -0
  30. package/skills/cicd/google-cloud/SKILL.md +1 -1
  31. package/skills/cicd/mergify/SKILL.md +2 -2
  32. package/skills/cicd/mergify/references/diagnosis.md +6 -1
  33. package/skills/cicd/mergify/references/watch-contract.md +10 -7
  34. package/skills/cicd/mergify/scripts/watch-pr-delivery-core.mjs +15 -30
  35. package/skills/cicd/podman/SKILL.md +1 -1
  36. package/skills/content/article-review/SKILL.md +1 -1
  37. package/skills/content/article-to-image/SKILL.md +1 -1
  38. package/skills/content/flowchart-svg/SKILL.md +1 -1
  39. package/skills/content/image-gen/SKILL.md +1 -1
  40. package/skills/content/mermaid/SKILL.md +1 -1
  41. package/skills/content/wechat-article-writer/SKILL.md +1 -1
  42. package/skills/content/wechat-publisher/SKILL.md +1 -1
  43. package/skills/content/wechat-search/SKILL.md +1 -1
  44. package/skills/content/xai-search/SKILL.md +1 -1
  45. package/skills/core/distill-writing/SKILL.md +1 -1
  46. package/skills/core/doc-to-md/SKILL.md +1 -1
  47. package/skills/core/editorial-review/SKILL.md +1 -1
  48. package/skills/core/house-style/SKILL.md +1 -1
  49. package/skills/core/plain-language/SKILL.md +1 -1
  50. package/skills/core/polish-cn/SKILL.md +1 -1
  51. package/skills/core/reg-parser/SKILL.md +1 -1
  52. package/skills/core/terminology/SKILL.md +1 -1
  53. package/skills/core/write-doc/SKILL.md +1 -1
  54. package/skills/core/write-report/SKILL.md +1 -1
  55. package/skills/engineering/better-review/SKILL.md +1 -1
  56. package/skills/engineering/better-review/references/passes.md +5 -0
  57. package/skills/engineering/e2e-test/SKILL.md +8 -1
  58. package/skills/engineering/engineering/SKILL.md +1 -1
  59. package/skills/engineering/engineering-runtime/SKILL.md +1 -1
  60. package/skills/engineering/engineering-runtime/coherence/workflow.json +13 -13
  61. package/skills/engineering/ensure-coverage/SKILL.md +8 -1
  62. package/skills/engineering/golden-path/SKILL.md +5 -1
  63. package/skills/engineering/harness-runtime/SKILL.md +2 -1
  64. package/skills/engineering/harness-runtime/contracts.md +2 -0
  65. package/skills/engineering/harness-runtime/references/subagent-sessions.md +75 -0
  66. package/skills/engineering/resolve-issues/SKILL.md +25 -6
  67. package/skills/engineering/resolve-issues/references/ci.md +14 -4
  68. package/skills/engineering/resolve-issues/references/delivery-progress.md +3 -1
  69. package/skills/engineering/resolve-issues/references/done.md +8 -6
  70. package/skills/engineering/resolve-issues/references/expire.md +2 -2
  71. package/skills/engineering/resolve-issues/references/exploration.md +10 -3
  72. package/skills/engineering/resolve-issues/references/implementation.md +73 -51
  73. package/skills/engineering/resolve-issues/references/preflight.md +6 -0
  74. package/skills/engineering/resolve-issues/references/review.md +18 -19
  75. package/skills/engineering/resolve-issues/references/shared-modules.md +7 -1
  76. package/skills/engineering/resolve-issues/references/task-plan.md +18 -10
  77. package/skills/engineering/resolve-issues/scripts/next-actions.mjs +42 -32
  78. package/skills/engineering/resolve-release/SKILL.md +1 -1
  79. package/skills/engineering/resolve-release/references/publish.md +12 -4
  80. package/skills/engineering/resolve-release/references/workspace-npm.md +6 -4
  81. package/skills/engineering/rush-issues/SKILL.md +1 -1
  82. package/skills/engineering/rush-release/SKILL.md +1 -1
  83. package/skills/engineering/test-quality/SKILL.md +1 -1
  84. package/skills/risk-compliance/compliance-audit/SKILL.md +1 -1
  85. package/skills/risk-compliance/contract-compare/SKILL.md +1 -1
  86. package/skills/risk-compliance/contract-review/SKILL.md +1 -1
  87. package/skills/risk-compliance/doc-authenticity/SKILL.md +1 -1
  88. package/skills/risk-compliance/fraud-detection/SKILL.md +1 -1
  89. package/skills/risk-compliance/payment-analysis/SKILL.md +1 -1
  90. package/skills/risk-compliance/portfolio-payment-analysis/SKILL.md +1 -1
  91. package/skills/risk-compliance/similar-domain/SKILL.md +1 -1
  92. package/skills/risk-compliance/tld-detection/SKILL.md +1 -1
@@ -75,27 +75,29 @@
75
75
  // fetch failed, it prints `sync` instead. A run never finishes on a tree it
76
76
  // could not read
77
77
  //
78
- // A unit's optional `implementationOwner` is the retained implement-or-fix conversation that outlives
79
- // the worker slot, recorded from the harness as { runId, sessionId?, cwd?, kind }: `runId` is the
80
- // attempt to resume, `kind` ("implement" or "fix", default "implement") says which worker owned it,
81
- // and `sessionId` and `cwd` (the unit's workspace) identify that conversation and its tree. It is
82
- // independent of `worker`, which records whichever worker is active now, so the owner survives the
83
- // review phase and a later fix continues the same conversation instead of starting over.
78
+ // A unit's optional `implementationOwner` is the implement-or-fix conversation that outlives the
79
+ // worker slot, recorded from the harness as { sessionId, runId?, cwd?, kind }: `sessionId` is the
80
+ // native conversation to continue, `runId` is its latest attempt, `kind` ("implement" or "fix",
81
+ // default "implement") says which worker owned it, and `cwd` (the unit's workspace) is its tree. It
82
+ // is independent of `worker`, which records whichever worker is active now, so the owner survives
83
+ // the review phase and a later fix continues the same session instead of starting over.
84
84
  //
85
85
  // Every action that spawns a worker therefore carries the structured continuation the coordinator
86
- // launches, beside its name: `continuation: "fresh"` for a first start or a new worker, launched
87
- // normally, with no retention argument (a saved conversation stays continuable by its id;
88
- // `retain_session: true` is optional protection a caller adds only for a long wait before cleanup).
89
- // Implement and fix sessions become the unit's owner; `continuation: "owner-resume"` with
90
- // `owner: { runId, kind, sessionId?, cwd? }` for a fix, a restack, or an unfinished implementation
91
- // whose owner is still usable (subagent_resume({ id: owner.runId, ... }) returns a new attempt on
92
- // the same conversation). `workerKind` names the slot the action launches. A review round is
93
- // always a fresh reviewer: a finished review
94
- // is never resumed, and a review recorded as an owner is not usable. An owner without a `runId`,
95
- // with a `kind` outside implement and fix, or whose `cwd` is not the unit's workspace is not usable,
96
- // so a fresh action reports ownerUnavailable rather than claiming continuity. A `retentionReleased`
97
- // marker records that optional protection lapsed, so it never makes an owner unusable. A completed
98
- // worker holds no slot: the owner is a reference, never an occupancy.
86
+ // launches, beside its name. `continuation: "fresh"` is a first start or a new worker, launched
87
+ // normally with no session argument. Implement and fix sessions become the unit's owner;
88
+ // `continuation: "owner-resume"` with `owner: { sessionId, runId?, kind, cwd? }` for a fix, a
89
+ // restack, or an unfinished implementation continues that exact session with
90
+ // subagent_spawn({ session_id: owner.sessionId, prompt }), which returns a new attempt id and keeps
91
+ // the session. An attempt `runId` is never passed as `session_id`. A plan written before that
92
+ // contract may hold only `runId`; it prints `continuation: "owner-recovery"` so the coordinator
93
+ // matches that exact attempt in subagent_list({ all: true }) or a verified receipt, and otherwise
94
+ // replaces it with the retained evidence. `workerKind` names the slot the action launches. A review
95
+ // round is always a fresh reviewer: a finished review is never resumed, and a review recorded as
96
+ // an owner is not usable. An owner with neither a `sessionId` nor a `runId`, with a `kind` outside
97
+ // implement and fix, or whose `cwd` is not the unit's workspace is not usable, so a fresh action
98
+ // reports ownerUnavailable rather than claiming continuity. A `retentionReleased` field on an old
99
+ // plan is inert history: no action reads or reverses it. A completed worker holds no slot: the
100
+ // owner is a reference, never an occupancy.
99
101
  //
100
102
  // Text output ends with one short line pointing to the skill path. With --resume or --rules it
101
103
  // ends with RULES instead, the rules a compaction summary most often drops (in narrow and off
@@ -205,23 +207,27 @@ export function normalizeCapacity(input) {
205
207
  const hasWorker = (u) => u.worker !== undefined && u.worker !== null && u.worker !== ''
206
208
  const codeDone = (u) => u.stage === 'done'
207
209
 
208
- // A unit's usable implementation owner, normalized to { runId, kind, sessionId?, cwd? }, or null.
209
- // Usable means it names the attempt to resume (`runId`), its `kind` is an implement or fix worker
210
- // (never a reviewer: a finished review is never resumed for the next round), and, when both are
211
- // recorded, its `cwd` is the unit's workspace (a conversation cannot be resumed in another tree).
212
- // A plan that records nothing here keeps today's behavior: a fresh worker.
210
+ // A unit's saved implementation owner, normalized to { runId?, kind, sessionId?, cwd? }, or null.
211
+ // `sessionId` is the native conversation to continue and `runId` its latest attempt; an owner with
212
+ // a session (and optionally its attempt) is usable, while a legacy owner with only an attempt is
213
+ // recoverable, not usable: the coordinator matches that exact attempt to its session first. Its
214
+ // `kind` must be an implement or fix worker (never a reviewer: a finished review is never resumed
215
+ // for the next round), and, when both are recorded, its `cwd` is the unit's workspace (a
216
+ // conversation cannot be continued in another tree). A plan that records nothing here keeps
217
+ // today's behavior: a fresh worker.
213
218
  export function implementationOwnerOf(unit) {
214
219
  const saved = unit?.implementationOwner
215
220
  if (!saved || typeof saved !== 'object' || Array.isArray(saved)) return null
216
221
  if (saved.cwd !== undefined && saved.cwd !== null && typeof saved.cwd !== 'string') return null
217
222
  const runId = typeof saved.runId === 'string' ? saved.runId.trim() : ''
218
223
  const kind = saved.kind === undefined ? 'implement' : saved.kind
219
- if (!runId || !IMPLEMENTATION_OWNER_KINDS.includes(kind)) return null
224
+ if (!IMPLEMENTATION_OWNER_KINDS.includes(kind)) return null
225
+ const sessionId = typeof saved.sessionId === 'string' ? saved.sessionId.trim() : ''
226
+ if (!runId && !sessionId) return null
220
227
  const cwd = typeof saved.cwd === 'string' ? saved.cwd.trim() : ''
221
228
  const workspace = typeof unit.workspace === 'string' ? unit.workspace.trim() : ''
222
229
  if (cwd && workspace && cwd !== workspace) return null
223
- const sessionId = typeof saved.sessionId === 'string' ? saved.sessionId.trim() : ''
224
- return { runId, kind, ...(sessionId ? { sessionId } : {}), ...(cwd ? { cwd } : {}) }
230
+ return { ...(runId ? { runId } : {}), kind, ...(sessionId ? { sessionId } : {}), ...(cwd ? { cwd } : {}) }
225
231
  }
226
232
 
227
233
  export function workspaceCleanupSettled(unit) {
@@ -390,14 +396,17 @@ export function nextActions(plan, reviews = {}, capacity, { resume = false, now,
390
396
  // A new review round starts fresh even when the preceding session remains available.
391
397
  const continuationFor = (u, workerKind) => {
392
398
  const owner = workerKind === 'review' ? null : implementationOwnerOf(u)
393
- if (owner) return { continuation: 'owner-resume', workerKind, owner }
399
+ if (owner?.sessionId) return { continuation: 'owner-resume', workerKind, owner }
400
+ if (owner) return { continuation: 'owner-recovery', workerKind, owner }
394
401
  const ownerUnavailable = workerKind !== 'review' && u.implementationOwner != null
395
402
  ? 'Saved implementationOwner is malformed, names another role, or does not match the unit workspace; record replacement and retain its evidence.' : undefined
396
403
  return { continuation: 'fresh', workerKind, ...(ownerUnavailable ? { ownerUnavailable } : {}) }
397
404
  }
398
405
  // Appended to an owner-resumed action: the work is the same, so the action keeps its name; only
399
- // the launch changes, and it is a resume rather than a second worker for the unit.
400
- const ownerNote = (id, owner) => `; launch it as a resume of unit ${id}'s implementation owner: subagent_resume({ id: ${JSON.stringify(owner.runId)}, prompt: <that brief or task> }) returns a new attempt on the same conversation${owner.sessionId ? ` (session ${owner.sessionId})` : ''}${owner.cwd ? ` in ${owner.cwd}` : ''}; record the returned id as implementationOwner.runId and keep the owner through review`
406
+ // the launch changes, and it continues one saved session rather than starting a second one.
407
+ const ownerNote = (id, owner) => `; launch it as a continuation of unit ${id}'s implementation owner: subagent_spawn({ session_id: ${JSON.stringify(owner.sessionId)}, prompt: <that brief or task> }) continues that exact session and returns a new attempt id${owner.cwd ? ` in ${owner.cwd}` : ''}; record the returned id as implementationOwner.runId, confirm the receipt's session id is still that conversation, and keep sessionId ${JSON.stringify(owner.sessionId)} (an attempt id is never a session_id), keeping the owner through review`
408
+ // Appended when a legacy owner saved only its attempt: recover its session before replacing it.
409
+ const recoveryNote = (id, owner) => `; before replacing unit ${id}'s implementation owner, match its recorded attempt id ${JSON.stringify(owner.runId)} exactly in subagent_list({ all: true }) (the default list covers only this folder) or in the verified spawn receipt; a match that names its session continues with subagent_spawn({ session_id: <that session id>, prompt: <that brief or task> }) and records the returned run id and that sessionId; with no match, launch a fresh replacement from the saved fill with the retained evidence and say why continuity was lost. Never pass ${JSON.stringify(owner.runId)} as session_id`
401
410
  const managed = (u) => plan.workspaceLifecycle === 1 || u.lifecycle?.version === 1
402
411
  for (const u of units) {
403
412
  if (TERMINAL.has(u.status) && hasWorker(u) && (u.status !== 'blocked' || reasonOk(u))) {
@@ -406,7 +415,7 @@ export function nextActions(plan, reviews = {}, capacity, { resume = false, now,
406
415
  }
407
416
  if (!managed(u) || u.status !== 'succeeded' || !u.workspace) continue
408
417
  if (!hasWorker(u) && !workspaceCleanupSettled(u)) {
409
- add('cleanup-workspace', u, `unit ${u.id} landed: release any retain_session protection it still holds and record that acknowledgement (implementation.md#settle-session-retention), then record lifecycle.cleanup with state applying and headSha ${u.headSha ?? '(record the delivered HEAD first)'}, then run cleanup-runs.mjs cleanup --run <run> --unit ${u.id} --revision <saved planRevision> --apply --json; inspect and persist the returned lifecycle. A refusal is retained with its reason, never complete; do this before finish and alongside independent units`)
418
+ add('cleanup-workspace', u, `unit ${u.id} landed: record lifecycle.cleanup with state applying and headSha ${u.headSha ?? '(record the delivered HEAD first)'}, then run cleanup-runs.mjs cleanup --run <run> --unit ${u.id} --revision <saved planRevision> --apply --json; inspect and persist the returned lifecycle. A refusal is retained with its reason, never complete; do this before finish and alongside independent units`)
410
419
  }
411
420
  }
412
421
  const chainReady = []
@@ -704,7 +713,8 @@ export function nextActions(plan, reviews = {}, capacity, { resume = false, now,
704
713
  if (!workerKind) continue
705
714
  const continuation = continuationFor(byId.get(a.unit), workerKind)
706
715
  Object.assign(a, continuation)
707
- if (continuation.owner) a.detail += ownerNote(a.unit, continuation.owner)
716
+ if (continuation.continuation === 'owner-resume') a.detail += ownerNote(a.unit, continuation.owner)
717
+ if (continuation.continuation === 'owner-recovery') a.detail += recoveryNote(a.unit, continuation.owner)
708
718
  if (continuation.ownerUnavailable) a.detail += `; ${continuation.ownerUnavailable}`
709
719
  }
710
720
  const busy = units.filter(hasWorker).length
@@ -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.50.0
7
+ release-version: 0.50.2
8
8
  ---
9
9
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
10
10
  # Resolve release
@@ -208,10 +208,18 @@ Success is stdout equal to `<nextVersion>`. An `E404` means "not published
208
208
  yet" and the watcher continues. Any other npm error is inconclusive — stop
209
209
  rather than treating it as unpublished or published.
210
210
 
211
- When a GitHub Actions workflow is the npm publisher, `gh run list` /
212
- `gh run watch` for the tag SHA is the wait; `npm view` remains the proof the
213
- artifact exists. A release flow's `registry` is passed as `--registry` to every
214
- npm command, and its `after-publish` steps run once the artifact is proven.
211
+ When a GitHub Actions workflow is the npm publisher, the run is not the wait and a green run is
212
+ not a publish: `npm view` remains the only proof the artifact exists. If you need the run for
213
+ diagnosis, find it once by commit (`gh run list --commit <mergedSha> --limit 5 --json
214
+ databaseId,headSha,status,conclusion`, and refuse a run whose `headSha` is not `<mergedSha>`),
215
+ then read it with bounded `gh run view <id> --json status,conclusion,jobs` polls and treat a
216
+ **job or step transition** as the signal. `gh run watch` repaints a status line and an elapsed
217
+ clock every 30 seconds, so a step that stopped moving looks exactly like one that is working and
218
+ the step names scroll out of view; a log that grows on every tick is not evidence a publish is
219
+ progressing. Report the slow or stuck step by name, with its URL. (The `github-actions` skill's
220
+ `scripts/watch-run.mjs` does this polling when that skill is installed.) A release flow's
221
+ `registry` is passed as `--registry` to every npm command, and its `after-publish` steps run once
222
+ the artifact is proven.
215
223
 
216
224
  ## Release flow steps
217
225
 
@@ -84,10 +84,12 @@ Before each dispatch, check that the workflow's `main` ref still resolves to
84
84
  the verified merged SHA and that the version is not already published with a
85
85
  different provenance. Dispatch the discovered workflow with its documented
86
86
  package input. Record the returned run ID; verify that run's head SHA and input
87
- identify the approved merge and package. Watch the run in the background, then
88
- independently verify the exact version in the public registry, its attestation
89
- resolves to the merged SHA, and its package-scoped tag peels to that SHA. The
90
- workflow, not the agent, creates package tags/releases. A successful workflow
87
+ identify the approved merge and package. Watch the run's job/step transitions in
88
+ the background (bounded `gh run view --json status,conclusion,jobs` reads: a step
89
+ transition is the signal, a repainted status line is not), then independently
90
+ verify the exact version in the public registry, its attestation resolves to the
91
+ merged SHA, and its package-scoped tag peels to that SHA. The workflow, not the
92
+ agent, creates package tags/releases. A successful workflow
91
93
  without registry/provenance/tag proof is not a completed publish. Only then
92
94
  dispatch a dependent bundle. If a dispatch fails or an already-published
93
95
  version has different provenance, stop; do not overwrite a version or tag.
@@ -6,7 +6,7 @@ metadata:
6
6
  workflow-role: coordinator
7
7
  dependencies:
8
8
  - resolve-issues
9
- release-version: 0.50.0
9
+ release-version: 0.50.2
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.50.0
9
+ release-version: 0.50.2
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.50.0
4
+ release-version: 0.50.2
5
5
  ---
6
6
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
7
7
  # Test Quality
@@ -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.50.0
5
+ release-version: 0.50.2
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.50.0
4
+ release-version: 0.50.2
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.50.0
4
+ release-version: 0.50.2
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.50.0
6
+ release-version: 0.50.2
7
7
  ---
8
8
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
9
9
  # Document and Image Authenticity
@@ -12,7 +12,7 @@ description: >
12
12
  impact, and a business report. Use for fraud, scam, mule, account-takeover,
13
13
  chargeback, dispute, transfer, collection, or payout risk analysis even when the
14
14
  user does not name this skill.
15
- release-version: 0.50.0
15
+ release-version: 0.50.2
16
16
  ---
17
17
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
18
18
  # Fraud Detection
@@ -14,7 +14,7 @@ description: >
14
14
  transactions" — even if they do not say payment-analysis. Do NOT use for
15
15
  fraud rule discovery (fraud-detection) or TLD / MCC-miscoding
16
16
  clusters (tld-detection).
17
- release-version: 0.50.0
17
+ release-version: 0.50.2
18
18
  ---
19
19
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
20
20
  # Payment Analysis
@@ -5,7 +5,7 @@ description: >
5
5
  and investigate selected merchants' authorization, settlement and disputes,
6
6
  including descriptor mapping and overlapping exports. Portfolio-level payment
7
7
  overviews belong to payment-analysis; fraud rule discovery belongs to fraud-detection.
8
- release-version: 0.50.0
8
+ release-version: 0.50.2
9
9
  ---
10
10
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
11
11
  # Portfolio payment analysis
@@ -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-detection).
10
10
  disable-model-invocation: true
11
- release-version: 0.50.0
11
+ release-version: 0.50.2
12
12
  ---
13
13
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
14
14
  # Similar Domain
@@ -6,7 +6,7 @@ description: >
6
6
  patterns, with USD and BIN-country currency views, group profiles and priorities.
7
7
  Not payment-analysis, fraud-detection, or website research.
8
8
  disable-model-invocation: true
9
- release-version: 0.50.0
9
+ release-version: 0.50.2
10
10
  ---
11
11
  **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
12
12
  # TLD detection