@1aboveio/skills 1.0.18 → 1.0.20
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.
- package/.codex-plugin/plugin.json +1 -1
- package/.codex-plugin/resources.json +151 -145
- package/package.json +4 -4
- package/skills/app-dev/airflow/SKILL.md +1 -1
- package/skills/app-dev/android-development/SKILL.md +1 -1
- package/skills/app-dev/app-debug/SKILL.md +1 -1
- package/skills/app-dev/better-auth/SKILL.md +1 -1
- package/skills/app-dev/data-catalog/SKILL.md +1 -1
- package/skills/app-dev/data-quality/SKILL.md +1 -1
- package/skills/app-dev/ios-foundation/SKILL.md +1 -1
- package/skills/app-dev/maestro/SKILL.md +1 -1
- package/skills/app-dev/monorepo/SKILL.md +1 -1
- package/skills/app-dev/nextjs-fullstack/SKILL.md +1 -1
- package/skills/app-dev/prisma-setup/SKILL.md +1 -1
- package/skills/app-dev/pyspark/SKILL.md +1 -1
- package/skills/app-dev/python-backend/SKILL.md +1 -1
- package/skills/app-dev/shadcn/SKILL.md +1 -1
- package/skills/app-dev/zod-v4/SKILL.md +1 -1
- package/skills/cicd/cloud-build/SKILL.md +1 -1
- package/skills/cicd/cloud-debug/SKILL.md +1 -1
- package/skills/cicd/cloud-deploy/SKILL.md +1 -1
- package/skills/cicd/docker/SKILL.md +1 -1
- package/skills/cicd/github-actions/SKILL.md +1 -1
- package/skills/cicd/github-flow/SKILL.md +1 -1
- package/skills/cicd/google-cloud/SKILL.md +1 -1
- package/skills/cicd/mergify/SKILL.md +1 -1
- package/skills/cicd/podman/SKILL.md +1 -1
- package/skills/content/article-review/SKILL.md +1 -1
- package/skills/content/article-to-image/SKILL.md +1 -1
- package/skills/content/flowchart-svg/SKILL.md +1 -1
- package/skills/content/image-gen/SKILL.md +1 -1
- package/skills/content/mermaid/SKILL.md +1 -1
- package/skills/content/wechat-article-writer/SKILL.md +1 -1
- package/skills/content/wechat-publisher/SKILL.md +1 -1
- package/skills/content/wechat-search/SKILL.md +1 -1
- package/skills/content/xai-search/SKILL.md +1 -1
- package/skills/core/distill-writing/SKILL.md +1 -1
- package/skills/core/doc-to-md/SKILL.md +1 -1
- package/skills/core/editorial-review/SKILL.md +1 -1
- package/skills/core/house-style/SKILL.md +1 -1
- package/skills/core/plain-language/SKILL.md +1 -1
- package/skills/core/polish-cn/SKILL.md +1 -1
- package/skills/core/reg-parser/SKILL.md +1 -1
- package/skills/core/terminology/SKILL.md +1 -1
- package/skills/core/write-doc/SKILL.md +1 -1
- package/skills/core/write-report/SKILL.md +1 -1
- package/skills/engineering/better-review/SKILL.md +5 -4
- package/skills/engineering/better-review/references/passes.md +15 -0
- package/skills/engineering/better-review/references/result.md +14 -0
- package/skills/engineering/e2e-test/SKILL.md +1 -1
- package/skills/engineering/engineering/SKILL.md +1 -1
- package/skills/engineering/engineering-runtime/SKILL.md +1 -1
- package/skills/engineering/engineering-runtime/coherence/workflow.json +13 -13
- package/skills/engineering/ensure-coverage/SKILL.md +1 -1
- package/skills/engineering/golden-path/SKILL.md +1 -1
- package/skills/engineering/harness-runtime/SKILL.md +1 -1
- package/skills/engineering/resolve-issues/SKILL.md +14 -9
- package/skills/engineering/resolve-issues/references/ci.md +3 -1
- package/skills/engineering/resolve-issues/references/delivery-progress.md +16 -0
- package/skills/engineering/resolve-issues/references/done.md +7 -0
- package/skills/engineering/resolve-issues/references/dropbox.md +31 -6
- package/skills/engineering/resolve-issues/references/expire.md +6 -3
- package/skills/engineering/resolve-issues/references/implementation.md +67 -6
- package/skills/engineering/resolve-issues/references/preflight.md +17 -3
- package/skills/engineering/resolve-issues/references/retention.md +162 -0
- package/skills/engineering/resolve-issues/references/review.md +42 -9
- package/skills/engineering/resolve-issues/references/task-plan.md +17 -2
- package/skills/engineering/resolve-issues/references/workspaces.md +40 -10
- package/skills/engineering/resolve-issues/scripts/daily-cleanup.mjs +169 -0
- package/skills/engineering/resolve-issues/scripts/dropbox.mjs +2 -1
- package/skills/engineering/resolve-issues/scripts/next-actions.mjs +79 -4
- package/skills/engineering/resolve-issues/scripts/resource-formats.mjs +625 -0
- package/skills/engineering/resolve-issues/scripts/retention-lock.mjs +548 -0
- package/skills/engineering/resolve-issues/scripts/retention-plans.mjs +57 -0
- package/skills/engineering/resolve-issues/scripts/retention.mjs +2314 -0
- package/skills/engineering/resolve-issues/scripts/review-verdict.mjs +63 -10
- package/skills/engineering/resolve-release/SKILL.md +1 -1
- package/skills/engineering/rush-issues/SKILL.md +1 -1
- package/skills/engineering/rush-release/SKILL.md +1 -1
- package/skills/engineering/test-quality/SKILL.md +1 -1
- package/skills/risk-compliance/compliance-audit/SKILL.md +1 -1
- package/skills/risk-compliance/contract-compare/SKILL.md +1 -1
- package/skills/risk-compliance/contract-review/SKILL.md +1 -1
- package/skills/risk-compliance/doc-authenticity/SKILL.md +1 -1
- package/skills/risk-compliance/fraud-detection/SKILL.md +1 -1
- package/skills/risk-compliance/payment-analysis/SKILL.md +1 -1
- package/skills/risk-compliance/portfolio-payment-analysis/SKILL.md +1 -1
- package/skills/risk-compliance/similar-domain/SKILL.md +1 -1
- package/skills/risk-compliance/tld-detection/SKILL.md +1 -1
|
@@ -28,8 +28,8 @@
|
|
|
28
28
|
// codes below for one release (DEPRECATED: read `verdict` instead). Old exit codes:
|
|
29
29
|
// 0 pass: no P0/P1 on --head (or a confirmed skip); record `reviewedHead`; ready
|
|
30
30
|
// once CI is green
|
|
31
|
-
// 1 fix: the printed `fixBrief` file holds the P0/P1
|
|
32
|
-
//
|
|
31
|
+
// 1 fix: the printed `fixBrief` file holds the P0/P1 blocker list. The coordinator
|
|
32
|
+
// may also name supporting P2 work selected in the plan. `action` says how to fix, from a
|
|
33
33
|
// comparison with the previous round's file (`<unit>-r<N-1>.json` beside
|
|
34
34
|
// it, or --prior):
|
|
35
35
|
// fix first blocking round: fix each finding's rule across its
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
// focused cases for missing proof, see the open cases fail,
|
|
40
40
|
// then fix until all pass, with the
|
|
41
41
|
// escalation model
|
|
42
|
-
// one-by-one only new P0/P1, introduced by the last fix:
|
|
43
|
-
//
|
|
42
|
+
// one-by-one only new P0/P1, introduced by the last fix: the owner fixes
|
|
43
|
+
// findings in turn, the smallest change that closes
|
|
44
44
|
// every row across the applicable paths
|
|
45
45
|
// 5 wait: no P0/P1 is open, but a GitHub reviewer whose changes request a fix brief
|
|
46
46
|
// already carried has not re-reviewed (`awaiting`, from github-reviews.mjs merge);
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
// on a skip record too, which carries only the reviewer's approval.
|
|
67
67
|
|
|
68
68
|
import { existsSync, readdirSync, readFileSync, writeFileSync } from 'node:fs'
|
|
69
|
-
import { basename, dirname, join } from 'node:path'
|
|
69
|
+
import { basename, dirname, isAbsolute, join } from 'node:path'
|
|
70
70
|
|
|
71
71
|
import { execFileSync } from 'node:child_process'
|
|
72
72
|
|
|
@@ -101,10 +101,26 @@ const isCarry = (review) => reviewTier(review) === 'skip' && review?.carry === A
|
|
|
101
101
|
// A blocking finding names its rule and every path that must hold it, at least one open; a P0/P1
|
|
102
102
|
// with every row closed is resolved and belongs out of the file. Checked on the current review
|
|
103
103
|
// only, so earlier records written without the fields stay readable as priors.
|
|
104
|
+
function reproducerProblems(repro, label) {
|
|
105
|
+
const problems = []
|
|
106
|
+
if (!isRecord(repro) || !isText(repro.command) || !isText(repro.expected)) {
|
|
107
|
+
problems.push(`${label}.reproducer needs a command and expected result`)
|
|
108
|
+
}
|
|
109
|
+
if (!isText(repro?.cwd) || isAbsolute(repro.cwd) || repro.cwd.startsWith('\\') || /^[A-Za-z]:/.test(repro.cwd)
|
|
110
|
+
|| repro.cwd.replaceAll('\\', '/').split('/').includes('..')) {
|
|
111
|
+
problems.push(`${label}.reproducer.cwd must be relative to the candidate workspace, without parent traversal`)
|
|
112
|
+
}
|
|
113
|
+
if (isRecord(repro) && Object.hasOwn(repro, 'evidence') && !isText(repro.evidence)) {
|
|
114
|
+
problems.push(`${label}.reproducer.evidence must name retained evidence when present`)
|
|
115
|
+
}
|
|
116
|
+
return problems
|
|
117
|
+
}
|
|
118
|
+
|
|
104
119
|
function blockingShapeProblems(f, label) {
|
|
105
120
|
const problems = []
|
|
106
121
|
if (!isText(f?.trigger)) problems.push(`${label} (P0/P1) has no trigger`)
|
|
107
122
|
if (!isText(f?.rule)) problems.push(`${label} (P0/P1) has no rule`)
|
|
123
|
+
if (Object.hasOwn(f, 'reproducer')) problems.push(...reproducerProblems(f.reproducer, label))
|
|
108
124
|
if (!Array.isArray(f?.paths) || f.paths.length === 0) return [...problems, `${label} (P0/P1) has no paths rows`]
|
|
109
125
|
for (const [j, row] of f.paths.entries()) {
|
|
110
126
|
if (!isText(row?.path)) problems.push(`${label}.paths[${j}] has no path`)
|
|
@@ -213,6 +229,35 @@ export function roundsWithoutNewLow(review, history = []) {
|
|
|
213
229
|
return since
|
|
214
230
|
}
|
|
215
231
|
|
|
232
|
+
// Preserve concrete witnesses for the still-broken rule, including earlier triggers.
|
|
233
|
+
// These are source references, not claims that the candidate has passed them.
|
|
234
|
+
function fixReproducers(blocking, records) {
|
|
235
|
+
const ids = new Set(blocking.map((finding) => finding.id))
|
|
236
|
+
const lastPass = records.findLastIndex((record) => isRecord(record)
|
|
237
|
+
&& Array.isArray(record.findings) && reviewCompletionProblems(record).length === 0
|
|
238
|
+
&& !record.findings.some((finding) => BLOCKING.includes(finding?.severity)))
|
|
239
|
+
const seen = new Set()
|
|
240
|
+
const out = []
|
|
241
|
+
const gaps = []
|
|
242
|
+
for (const record of records.slice(lastPass + 1)) {
|
|
243
|
+
for (const finding of Array.isArray(record?.findings) ? record.findings : []) {
|
|
244
|
+
if (!ids.has(finding?.id) || !BLOCKING.includes(finding.severity) || !Object.hasOwn(finding, 'reproducer')) continue
|
|
245
|
+
const key = JSON.stringify([finding.id, finding.trigger, finding.reproducer])
|
|
246
|
+
if (seen.has(key)) continue
|
|
247
|
+
seen.add(key)
|
|
248
|
+
const problems = reproducerProblems(finding.reproducer, finding.id)
|
|
249
|
+
if (problems.length) {
|
|
250
|
+
gaps.push({ finding: finding.id, round: record.round, head: record.head,
|
|
251
|
+
trigger: finding.trigger, reason: problems.join('; ') })
|
|
252
|
+
continue
|
|
253
|
+
}
|
|
254
|
+
out.push({ finding: finding.id, round: record.round, head: record.head,
|
|
255
|
+
trigger: finding.trigger, reproducer: structuredClone(finding.reproducer) })
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
return { reproducers: out, reproducerGaps: gaps }
|
|
259
|
+
}
|
|
260
|
+
|
|
216
261
|
// How to act on a blocking round. better-review keeps a still-open finding's id across
|
|
217
262
|
// rounds, so a shared id means the last fix did not resolve it.
|
|
218
263
|
// `history` is every record before `prior`, oldest first, or a function that reads them; it is
|
|
@@ -294,7 +339,12 @@ export function reviewVerdict(review, head, prior = null, { confirmSkip, earlier
|
|
|
294
339
|
return awaiting.length ? { verdict: 'wait', ...base, ...skipped } : { verdict: 'pass', reviewedHead: head, ...base, ...skipped }
|
|
295
340
|
}
|
|
296
341
|
if (skip && blocking.some((f) => !GITHUB_ID.test(String(f.id)))) throw new ReviewIncomplete('a skip record cannot hold findings; spawn the reviewer')
|
|
297
|
-
|
|
342
|
+
let retainedHistory
|
|
343
|
+
const readHistoryOnce = () => retainedHistory ??= typeof history === 'function' ? history() : history
|
|
344
|
+
const action = fixAction(review, blocking, prior, readHistoryOnce, { decision })
|
|
345
|
+
const witnesses = action.verdict === 'fix'
|
|
346
|
+
? fixReproducers(blocking, [...readHistoryOnce(), prior, review]) : {}
|
|
347
|
+
return { ...action, ...base, fix: blocking, ...witnesses }
|
|
298
348
|
}
|
|
299
349
|
|
|
300
350
|
// The record --carry writes for `head`: the previous round's approval, carried with no
|
|
@@ -333,12 +383,13 @@ export function carryRecord(prior, head, identity = {}) {
|
|
|
333
383
|
}
|
|
334
384
|
|
|
335
385
|
const INSTRUCTIONS = {
|
|
336
|
-
'fix': 'Fix
|
|
386
|
+
'fix': 'Fix these blocking findings. For each, make the smallest complete fix for its `rule` across the applicable paths and close every row in its `paths`. Use a shared owner when useful, but do not require a refactor; focused fixes on individual paths are acceptable.',
|
|
337
387
|
'test-first': 'The findings listed in `recurring` survived a fix: the last fix closed one path and missed others. For each, before changing code: name the rule the bug breaks; list every code path that can break it, including the trigger of this finding id in each earlier round\'s review file beside this one; reuse sufficient tests and add focused cases from the concrete triggers, then run them to see it fail on each open path. One table-driven test may cover several paths. Then make the smallest complete fix across the applicable paths until every test passes. Use a shared owner when useful, but do not require a refactor; focused fixes on individual paths are acceptable. "Fixed" is every path\'s test passing. Fix the rest as usual.',
|
|
338
|
-
'one-by-one': 'The last fix introduced these findings. Fix them
|
|
388
|
+
'one-by-one': 'The last fix introduced these findings. Fix them sequentially in this assignment, with the smallest complete change that closes every row of its `paths`. Use a shared owner when useful, but do not require a refactor; focused fixes on individual paths are acceptable.',
|
|
339
389
|
}
|
|
340
390
|
|
|
341
|
-
// The
|
|
391
|
+
// The generated blocker list stays P0/P1. Supporting P2 selections come from the
|
|
392
|
+
// coordinator's plan decision and accompanying brief; P3 is always skipped.
|
|
342
393
|
export function fixBriefOf(result) {
|
|
343
394
|
const fixRound = hasFixRound(result) ? result.fixRound : result.round
|
|
344
395
|
if (!isCounter(result.round) || !isCounter(fixRound) || fixRound > result.round) {
|
|
@@ -350,9 +401,11 @@ export function fixBriefOf(result) {
|
|
|
350
401
|
fixRound,
|
|
351
402
|
head: result.head,
|
|
352
403
|
action: result.action,
|
|
353
|
-
instruction: `${INSTRUCTIONS[result.action]}${result.decision ? ` Decision ${result.decision} in the plan's \`decisions\` settles what the recurring spec finding requires: fix it as that decision reads.` : ''}
|
|
404
|
+
instruction: `${INSTRUCTIONS[result.action]}${result.decision ? ` Decision ${result.decision} in the plan's \`decisions\` settles what the recurring spec finding requires: fix it as that decision reads.` : ''} Read each retained reproducer before using it; run against the candidate workspace at its workspace-relative cwd, preserving the recorded trigger and expected contract. Earlier results are baseline evidence, not candidate passes. A reproducerGaps entry is a source reference, not a runnable command: inspect its original review and establish a valid candidate-local case, retaining the original evidence and reporting any remaining gap. Keep subsequent failures of the affected operation in this repair until its existing criteria pass or an existing stop condition applies. Also perform only supporting P2 work explicitly selected by the coordinator in the plan and accompanying brief, naming the existing authorized outcome, verification or delivery it enables. P2 remains nonblocking; defer unselected P2 to the dropbox or a follow-up issue. Skip P3. Preserve the acceptance bar and existing authorization boundaries.`,
|
|
354
405
|
...(result.decision ? { decision: result.decision } : {}),
|
|
355
406
|
recurring: result.recurring,
|
|
407
|
+
reproducers: result.reproducers ?? [],
|
|
408
|
+
reproducerGaps: result.reproducerGaps ?? [],
|
|
356
409
|
fix: result.fix,
|
|
357
410
|
}
|
|
358
411
|
}
|
|
@@ -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.
|
|
7
|
+
release-version: 0.50.0
|
|
8
8
|
---
|
|
9
9
|
**Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
|
|
10
10
|
# 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.
|
|
4
|
+
release-version: 0.50.0
|
|
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.
|
|
5
|
+
release-version: 0.50.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.
|
|
4
|
+
release-version: 0.50.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.
|
|
4
|
+
release-version: 0.50.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.
|
|
6
|
+
release-version: 0.50.0
|
|
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.
|
|
15
|
+
release-version: 0.50.0
|
|
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.
|
|
17
|
+
release-version: 0.50.0
|
|
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.
|
|
8
|
+
release-version: 0.50.0
|
|
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.
|
|
11
|
+
release-version: 0.50.0
|
|
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.
|
|
9
|
+
release-version: 0.50.0
|
|
10
10
|
---
|
|
11
11
|
**Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
|
|
12
12
|
# TLD detection
|