@1aboveio/skills 0.20.2 → 0.20.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.
- package/README.md +12 -5
- package/package.json +1 -1
- package/runtime/skills/distribution/generated/recipes.json +220 -25
- package/runtime/skills/distribution/scripts/bundles.mjs +49 -5
- package/runtime/skills/engineering/engineering-runtime/scripts/workflow-coherence.mjs +4 -0
- package/runtime/skills/engineering/engineering-runtime/scripts/workflow-policy.mjs +1 -1
- package/skills/compliance/compliance-audit/LICENSE +3 -0
- package/skills/compliance/compliance-audit/SKILL.md +466 -0
- package/skills/compliance/compliance-audit/references/findings-schema.md +290 -0
- package/skills/compliance/compliance-audit/references/vars-checklist.md +1068 -0
- package/skills/compliance/compliance-audit/references/vars-findings-schema.md +395 -0
- package/skills/compliance/compliance-audit/scripts/reconcile_tracker.py +454 -0
- package/skills/compliance/compliance-audit/scripts/test_validate_tracker.py +90 -0
- package/skills/compliance/compliance-audit/scripts/validate_tracker.py +752 -0
- package/skills/compliance/doc-authenticity/LICENSE +3 -0
- package/skills/compliance/doc-authenticity/SKILL.md +158 -0
- package/skills/compliance/doc-authenticity/references/agreement.md +66 -0
- package/skills/compliance/doc-authenticity/references/bank-statement.md +150 -0
- package/skills/compliance/doc-authenticity/references/forensic-signals.md +157 -0
- package/skills/compliance/doc-authenticity/references/image-signals.md +114 -0
- package/skills/compliance/doc-authenticity/references/invoice.md +66 -0
- package/skills/compliance/doc-authenticity/references/issuer-profiles.md +86 -0
- package/skills/compliance/doc-authenticity/references/verdict-and-report.md +95 -0
- package/skills/compliance/doc-authenticity/references/verdict.schema.json +81 -0
- package/skills/compliance/doc-authenticity/scripts/image_forensics.py +294 -0
- package/skills/compliance/doc-authenticity/scripts/pdf_forensics.py +401 -0
- package/skills/compliance/doc-authenticity/scripts/validate_codes.py +224 -0
- package/skills/compliance/doc-authenticity/scripts/validate_verdict.py +308 -0
- package/skills/compliance/report-writing/LICENSE +3 -0
- package/skills/compliance/report-writing/SKILL.md +206 -0
- package/skills/compliance/report-writing/references/audit-report-template.md +121 -0
- package/skills/compliance/report-writing/references/external-assessment-template.md +167 -0
- package/skills/compliance/report-writing/references/management-report-template.md +145 -0
- package/skills/compliance/report-writing/references/vars-report-template.md +224 -0
- package/skills/document-utils/doc-to-md/LICENSE +3 -0
- package/skills/document-utils/doc-to-md/SKILL.md +77 -0
- package/skills/document-utils/doc-to-md/scripts/convert.py +157 -0
- package/skills/document-utils/reg-parser/LICENSE +3 -0
- package/skills/document-utils/reg-parser/SKILL.md +201 -0
- package/skills/document-utils/reg-parser/references/checklist-schema.md +223 -0
- package/skills/document-utils/reg-parser/references/checklists/hk-amlo-checklist.json +1306 -0
- package/skills/document-utils/reg-parser/references/checklists/hk-amlo-checklist.md +469 -0
- package/skills/document-utils/reg-parser/references/checklists/hk-fi-corporate-onboarding-cdd-checklist.json +634 -0
- package/skills/document-utils/reg-parser/references/checklists/hk-fi-corporate-onboarding-cdd-checklist.md +233 -0
- package/skills/document-utils/reg-parser/references/checklists/hk-mso-guideline-checklist.json +2194 -0
- package/skills/document-utils/reg-parser/references/checklists/hk-mso-guideline-checklist.md +771 -0
- package/skills/document-utils/reg-parser/references/checklists/kyc-aml-checklist.md +258 -0
- package/skills/document-utils/reg-parser/references/checklists/visa-vars-checklist.md +1058 -0
- package/skills/document-utils/reg-parser/references/mandates/hk-amlo-cap615.md +389 -0
- package/skills/document-utils/reg-parser/references/mandates/visa-vars.md +205 -0
- package/skills/document-utils/reg-parser/scripts/compare_checklist.py +228 -0
- package/skills/document-utils/reg-parser/scripts/dump_checklist.py +348 -0
- package/skills/document-utils/reg-parser/scripts/preprocess-mandate.sh +171 -0
- package/skills/document-utils/reg-parser/scripts/test_quarantine.sh +102 -0
- package/skills/document-utils/reg-parser/scripts/validate_checklist.py +532 -0
- package/skills/document-utils/reg-parser/scripts/validate_mandate.py +242 -0
- package/skills/engineering/engineering-runtime/coherence/workflow.json +16 -16
- package/skills/engineering/engineering-runtime/scripts/workflow-coherence.mjs +4 -0
- package/skills/engineering/engineering-runtime/scripts/workflow-policy.mjs +1 -1
- package/skills/payment/similar-domain/LICENSE +3 -0
- package/skills/payment/similar-domain/SKILL.md +178 -0
- package/skills/payment/similar-domain/references/entities.md +58 -0
- package/skills/payment/similar-domain/references/fingerprints.md +82 -0
- package/skills/payment/similar-domain/references/pivots.md +66 -0
- package/skills/payment/similar-domain/references/report-template.md +76 -0
- package/skills/payment/similar-domain/references/scoring.md +61 -0
- package/skills/payment/similar-domain/references/terminology.md +37 -0
- package/skills/payment/similar-domain/references/workflow.md +79 -0
- package/skills/payment/tld-detection/SKILL.md +76 -21
- package/skills/payment/tld-detection/references/clean.md +1 -1
- package/skills/payment/tld-detection/references/clustering.md +21 -6
- package/skills/payment/tld-detection/references/decision.md +7 -2
- package/skills/payment/tld-detection/references/fx-conversion.md +229 -0
- package/skills/payment/tld-detection/references/report-template.md +63 -27
- package/skills/payment/tld-detection/references/streams.md +90 -0
- package/skills/payment/tld-detection/references/terminology.md +15 -7
- package/skills/payment/tld-detection/references/workflow.md +1 -1
- package/skills/payment/tld-detection/scripts/detect_streams.py +542 -0
- package/skills/engineering/ensure-coverage/evals/evals.json +0 -125
- package/skills/engineering/rush-issues/evals/evals.json +0 -65
- package/skills/engineering/rush-release/evals/evals.json +0 -58
- package/skills/fullstack/shadcn/evals/evals.json +0 -90
- package/skills/payment/fraud-analysis/evals/evals.json +0 -40
- package/skills/payment/tld-detection/evals/evals.json +0 -107
- package/skills/payment/tld-detection/tests/test_detect_ladders.py +0 -132
package/README.md
CHANGED
|
@@ -57,8 +57,8 @@ Running `install` with no `--group` opens the interactive bundle picker; `update
|
|
|
57
57
|
- `--disable-tdd` — keep TDD installed but allow only explicit user invocation.
|
|
58
58
|
|
|
59
59
|
Selecting several groups (interactive picker, repeated `--group`, or `--all`) installs their
|
|
60
|
-
members as one native `skills add` per skill from the unpacked package
|
|
61
|
-
|
|
60
|
+
members as one native `skills add` per skill from the unpacked package. A failure is reported by
|
|
61
|
+
name, blocks only transitive dependents, and never aborts unrelated skills. Every native add uses `--yes` because
|
|
62
62
|
`skills@1.5.22` has no independent `--symlink` flag: this selects the default canonical store plus
|
|
63
63
|
per-harness symlinks without an installation-method prompt, and also confirms replacement of each
|
|
64
64
|
planned same-named skill. The coordinator still owns group and new-member consent before planning.
|
|
@@ -69,7 +69,9 @@ planned same-named skill. The coordinator still owns group and new-member consen
|
|
|
69
69
|
- `delivery-infrastructure` — Delivery Infrastructure: cloud-build, cloud-debug, cloud-deploy, docker, google-cloud, mergify, podman
|
|
70
70
|
- `backend` — Backend: app-debug, python-backend
|
|
71
71
|
- `data-science` — Data Science: airflow, pyspark
|
|
72
|
-
- `payment` — Payment: fraud-analysis, payment-analysis, tld-detection
|
|
72
|
+
- `payment` — Payment: fraud-analysis, payment-analysis, tld-detection, similar-domain
|
|
73
|
+
- `document-utilities` — Document Utilities: doc-to-md, reg-parser (required: reg-parser -> doc-to-md)
|
|
74
|
+
- `compliance` — Compliance: compliance-audit, doc-authenticity, report-writing (required: compliance-audit -> doc-to-md; optional: compliance-audit -> reg-parser)
|
|
73
75
|
- `fullstack` — Fullstack: better-auth, monorepo, nextjs-fullstack, prisma-setup, shadcn, zod-v4
|
|
74
76
|
|
|
75
77
|
Internal dependencies, installed with the groups above and not selectable on their own: `harness-runtime`.
|
|
@@ -102,7 +104,8 @@ copy. The default is No; `--yes` accepts archival non-interactively. Removal is
|
|
|
102
104
|
same pinned native Skills CLI, only after the declared replacement is installed or already current.
|
|
103
105
|
Declined or failed archival remains in selection memory so a later update offers it again.
|
|
104
106
|
|
|
105
|
-
Install and update are best-effort per skill: they continue after a single skill failure
|
|
107
|
+
Install and update are best-effort per skill: they continue after a single skill failure except for
|
|
108
|
+
skills whose required dependency is unavailable, summarize
|
|
106
109
|
every skill as succeeded, unchanged, declined, or failed, and exit non-zero if anything failed. There
|
|
107
110
|
is no rollback or transactional group update; the native CLI remains the sole filesystem write
|
|
108
111
|
authority. Selection memory follows the same per-skill rule: it is rewritten when
|
|
@@ -130,7 +133,11 @@ npx skills@1.5.22 remove --global --agent universal claude-code --skill app-debu
|
|
|
130
133
|
# Data Science
|
|
131
134
|
npx skills@1.5.22 remove --global --agent universal claude-code --skill airflow pyspark
|
|
132
135
|
# Payment
|
|
133
|
-
npx skills@1.5.22 remove --global --agent universal claude-code --skill fraud-analysis payment-analysis tld-detection
|
|
136
|
+
npx skills@1.5.22 remove --global --agent universal claude-code --skill fraud-analysis payment-analysis tld-detection similar-domain
|
|
137
|
+
# Document Utilities
|
|
138
|
+
npx skills@1.5.22 remove --global --agent universal claude-code --skill doc-to-md reg-parser
|
|
139
|
+
# Compliance
|
|
140
|
+
npx skills@1.5.22 remove --global --agent universal claude-code --skill compliance-audit doc-authenticity report-writing
|
|
134
141
|
# Fullstack
|
|
135
142
|
npx skills@1.5.22 remove --global --agent universal claude-code --skill better-auth monorepo nextjs-fullstack prisma-setup shadcn zod-v4
|
|
136
143
|
```
|
package/package.json
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"id": "first-party",
|
|
25
25
|
"type": "first-party",
|
|
26
26
|
"package": "@1aboveio/skills",
|
|
27
|
-
"version": "0.20.
|
|
27
|
+
"version": "0.20.3",
|
|
28
28
|
"updatePolicy": "pinned-npm-version",
|
|
29
29
|
"members": [
|
|
30
30
|
{
|
|
@@ -159,6 +159,51 @@
|
|
|
159
159
|
"role": "skill",
|
|
160
160
|
"licenseResponsibility": "1aboveio-mit"
|
|
161
161
|
},
|
|
162
|
+
{
|
|
163
|
+
"installName": "similar-domain",
|
|
164
|
+
"path": "skills/payment/similar-domain",
|
|
165
|
+
"role": "skill",
|
|
166
|
+
"licenseResponsibility": "1aboveio-mit"
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
"installName": "doc-to-md",
|
|
170
|
+
"path": "skills/document-utils/doc-to-md",
|
|
171
|
+
"role": "skill",
|
|
172
|
+
"licenseResponsibility": "1aboveio-mit"
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
"installName": "reg-parser",
|
|
176
|
+
"path": "skills/document-utils/reg-parser",
|
|
177
|
+
"role": "skill",
|
|
178
|
+
"licenseResponsibility": "1aboveio-mit",
|
|
179
|
+
"requires": [
|
|
180
|
+
"doc-to-md"
|
|
181
|
+
]
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
"installName": "compliance-audit",
|
|
185
|
+
"path": "skills/compliance/compliance-audit",
|
|
186
|
+
"role": "skill",
|
|
187
|
+
"licenseResponsibility": "1aboveio-mit",
|
|
188
|
+
"requires": [
|
|
189
|
+
"doc-to-md"
|
|
190
|
+
],
|
|
191
|
+
"optionalRequires": [
|
|
192
|
+
"reg-parser"
|
|
193
|
+
]
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
"installName": "doc-authenticity",
|
|
197
|
+
"path": "skills/compliance/doc-authenticity",
|
|
198
|
+
"role": "skill",
|
|
199
|
+
"licenseResponsibility": "1aboveio-mit"
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
"installName": "report-writing",
|
|
203
|
+
"path": "skills/compliance/report-writing",
|
|
204
|
+
"role": "skill",
|
|
205
|
+
"licenseResponsibility": "1aboveio-mit"
|
|
206
|
+
},
|
|
162
207
|
{
|
|
163
208
|
"installName": "better-auth",
|
|
164
209
|
"path": "skills/fullstack/better-auth",
|
|
@@ -218,7 +263,7 @@
|
|
|
218
263
|
"sourceId": "first-party",
|
|
219
264
|
"sourceType": "first-party",
|
|
220
265
|
"package": "@1aboveio/skills",
|
|
221
|
-
"version": "0.20.
|
|
266
|
+
"version": "0.20.3",
|
|
222
267
|
"installPath": null,
|
|
223
268
|
"members": [
|
|
224
269
|
"harness-runtime",
|
|
@@ -252,7 +297,7 @@
|
|
|
252
297
|
"sourceId": "first-party",
|
|
253
298
|
"sourceType": "first-party",
|
|
254
299
|
"package": "@1aboveio/skills",
|
|
255
|
-
"version": "0.20.
|
|
300
|
+
"version": "0.20.3",
|
|
256
301
|
"installPath": null,
|
|
257
302
|
"members": [
|
|
258
303
|
"harness-runtime",
|
|
@@ -296,7 +341,7 @@
|
|
|
296
341
|
"sourceId": "first-party",
|
|
297
342
|
"sourceType": "first-party",
|
|
298
343
|
"package": "@1aboveio/skills",
|
|
299
|
-
"version": "0.20.
|
|
344
|
+
"version": "0.20.3",
|
|
300
345
|
"installPath": null,
|
|
301
346
|
"members": [
|
|
302
347
|
"harness-runtime",
|
|
@@ -329,7 +374,7 @@
|
|
|
329
374
|
"sourceId": "first-party",
|
|
330
375
|
"sourceType": "first-party",
|
|
331
376
|
"package": "@1aboveio/skills",
|
|
332
|
-
"version": "0.20.
|
|
377
|
+
"version": "0.20.3",
|
|
333
378
|
"installPath": null,
|
|
334
379
|
"members": [
|
|
335
380
|
"harness-runtime",
|
|
@@ -372,7 +417,7 @@
|
|
|
372
417
|
"sourceId": "first-party",
|
|
373
418
|
"sourceType": "first-party",
|
|
374
419
|
"package": "@1aboveio/skills",
|
|
375
|
-
"version": "0.20.
|
|
420
|
+
"version": "0.20.3",
|
|
376
421
|
"installPath": null,
|
|
377
422
|
"members": [
|
|
378
423
|
"harness-runtime",
|
|
@@ -400,7 +445,7 @@
|
|
|
400
445
|
"sourceId": "first-party",
|
|
401
446
|
"sourceType": "first-party",
|
|
402
447
|
"package": "@1aboveio/skills",
|
|
403
|
-
"version": "0.20.
|
|
448
|
+
"version": "0.20.3",
|
|
404
449
|
"installPath": null,
|
|
405
450
|
"members": [
|
|
406
451
|
"harness-runtime",
|
|
@@ -438,7 +483,7 @@
|
|
|
438
483
|
"sourceId": "first-party",
|
|
439
484
|
"sourceType": "first-party",
|
|
440
485
|
"package": "@1aboveio/skills",
|
|
441
|
-
"version": "0.20.
|
|
486
|
+
"version": "0.20.3",
|
|
442
487
|
"installPath": null,
|
|
443
488
|
"members": [
|
|
444
489
|
"harness-runtime",
|
|
@@ -466,7 +511,7 @@
|
|
|
466
511
|
"sourceId": "first-party",
|
|
467
512
|
"sourceType": "first-party",
|
|
468
513
|
"package": "@1aboveio/skills",
|
|
469
|
-
"version": "0.20.
|
|
514
|
+
"version": "0.20.3",
|
|
470
515
|
"installPath": null,
|
|
471
516
|
"members": [
|
|
472
517
|
"harness-runtime",
|
|
@@ -504,18 +549,19 @@
|
|
|
504
549
|
"sourceId": "first-party",
|
|
505
550
|
"sourceType": "first-party",
|
|
506
551
|
"package": "@1aboveio/skills",
|
|
507
|
-
"version": "0.20.
|
|
552
|
+
"version": "0.20.3",
|
|
508
553
|
"installPath": null,
|
|
509
554
|
"members": [
|
|
510
555
|
"harness-runtime",
|
|
511
556
|
"fraud-analysis",
|
|
512
557
|
"payment-analysis",
|
|
513
|
-
"tld-detection"
|
|
558
|
+
"tld-detection",
|
|
559
|
+
"similar-domain"
|
|
514
560
|
],
|
|
515
561
|
"commands": [
|
|
516
562
|
{
|
|
517
563
|
"transport": "local",
|
|
518
|
-
"command": "npx skills@1.5.22 add . --global --agent universal claude-code --skill harness-runtime fraud-analysis payment-analysis tld-detection"
|
|
564
|
+
"command": "npx skills@1.5.22 add . --global --agent universal claude-code --skill harness-runtime fraud-analysis payment-analysis tld-detection similar-domain"
|
|
519
565
|
}
|
|
520
566
|
],
|
|
521
567
|
"onFailure": {
|
|
@@ -533,18 +579,155 @@
|
|
|
533
579
|
"sourceId": "first-party",
|
|
534
580
|
"sourceType": "first-party",
|
|
535
581
|
"package": "@1aboveio/skills",
|
|
536
|
-
"version": "0.20.
|
|
582
|
+
"version": "0.20.3",
|
|
537
583
|
"installPath": null,
|
|
538
584
|
"members": [
|
|
539
585
|
"harness-runtime",
|
|
540
586
|
"fraud-analysis",
|
|
541
587
|
"payment-analysis",
|
|
542
|
-
"tld-detection"
|
|
588
|
+
"tld-detection",
|
|
589
|
+
"similar-domain"
|
|
590
|
+
],
|
|
591
|
+
"commands": [
|
|
592
|
+
{
|
|
593
|
+
"transport": "local",
|
|
594
|
+
"command": "npx skills@1.5.22 add . --global --agent universal claude-code --skill harness-runtime fraud-analysis payment-analysis tld-detection similar-domain"
|
|
595
|
+
}
|
|
596
|
+
],
|
|
597
|
+
"onFailure": {
|
|
598
|
+
"action": "stop",
|
|
599
|
+
"message": "Source first-party fetch failed; stop this recipe before running another source."
|
|
600
|
+
}
|
|
601
|
+
}
|
|
602
|
+
]
|
|
603
|
+
},
|
|
604
|
+
"uninstall": {
|
|
605
|
+
"command": "npx skills@1.5.22 remove --global --agent universal claude-code --skill fraud-analysis payment-analysis tld-detection similar-domain",
|
|
606
|
+
"removesDependencies": false
|
|
607
|
+
}
|
|
608
|
+
},
|
|
609
|
+
{
|
|
610
|
+
"id": "document-utilities",
|
|
611
|
+
"displayName": "Document Utilities",
|
|
612
|
+
"dependsOn": [
|
|
613
|
+
"harness-runtime"
|
|
614
|
+
],
|
|
615
|
+
"install": {
|
|
616
|
+
"stopOnFailure": true,
|
|
617
|
+
"steps": [
|
|
618
|
+
{
|
|
619
|
+
"sourceId": "first-party",
|
|
620
|
+
"sourceType": "first-party",
|
|
621
|
+
"package": "@1aboveio/skills",
|
|
622
|
+
"version": "0.20.3",
|
|
623
|
+
"installPath": null,
|
|
624
|
+
"members": [
|
|
625
|
+
"harness-runtime",
|
|
626
|
+
"doc-to-md",
|
|
627
|
+
"reg-parser"
|
|
628
|
+
],
|
|
629
|
+
"commands": [
|
|
630
|
+
{
|
|
631
|
+
"transport": "local",
|
|
632
|
+
"command": "npx skills@1.5.22 add . --global --agent universal claude-code --skill harness-runtime doc-to-md reg-parser"
|
|
633
|
+
}
|
|
634
|
+
],
|
|
635
|
+
"onFailure": {
|
|
636
|
+
"action": "stop",
|
|
637
|
+
"message": "Source first-party fetch failed; stop this recipe before running another source."
|
|
638
|
+
}
|
|
639
|
+
}
|
|
640
|
+
]
|
|
641
|
+
},
|
|
642
|
+
"update": {
|
|
643
|
+
"mode": "rerun-install-recipe",
|
|
644
|
+
"stopOnFailure": true,
|
|
645
|
+
"steps": [
|
|
646
|
+
{
|
|
647
|
+
"sourceId": "first-party",
|
|
648
|
+
"sourceType": "first-party",
|
|
649
|
+
"package": "@1aboveio/skills",
|
|
650
|
+
"version": "0.20.3",
|
|
651
|
+
"installPath": null,
|
|
652
|
+
"members": [
|
|
653
|
+
"harness-runtime",
|
|
654
|
+
"doc-to-md",
|
|
655
|
+
"reg-parser"
|
|
656
|
+
],
|
|
657
|
+
"commands": [
|
|
658
|
+
{
|
|
659
|
+
"transport": "local",
|
|
660
|
+
"command": "npx skills@1.5.22 add . --global --agent universal claude-code --skill harness-runtime doc-to-md reg-parser"
|
|
661
|
+
}
|
|
662
|
+
],
|
|
663
|
+
"onFailure": {
|
|
664
|
+
"action": "stop",
|
|
665
|
+
"message": "Source first-party fetch failed; stop this recipe before running another source."
|
|
666
|
+
}
|
|
667
|
+
}
|
|
668
|
+
]
|
|
669
|
+
},
|
|
670
|
+
"uninstall": {
|
|
671
|
+
"command": "npx skills@1.5.22 remove --global --agent universal claude-code --skill doc-to-md reg-parser",
|
|
672
|
+
"removesDependencies": false
|
|
673
|
+
}
|
|
674
|
+
},
|
|
675
|
+
{
|
|
676
|
+
"id": "compliance",
|
|
677
|
+
"displayName": "Compliance",
|
|
678
|
+
"dependsOn": [
|
|
679
|
+
"harness-runtime"
|
|
680
|
+
],
|
|
681
|
+
"install": {
|
|
682
|
+
"stopOnFailure": true,
|
|
683
|
+
"steps": [
|
|
684
|
+
{
|
|
685
|
+
"sourceId": "first-party",
|
|
686
|
+
"sourceType": "first-party",
|
|
687
|
+
"package": "@1aboveio/skills",
|
|
688
|
+
"version": "0.20.3",
|
|
689
|
+
"installPath": null,
|
|
690
|
+
"members": [
|
|
691
|
+
"harness-runtime",
|
|
692
|
+
"doc-to-md",
|
|
693
|
+
"compliance-audit",
|
|
694
|
+
"doc-authenticity",
|
|
695
|
+
"report-writing"
|
|
696
|
+
],
|
|
697
|
+
"commands": [
|
|
698
|
+
{
|
|
699
|
+
"transport": "local",
|
|
700
|
+
"command": "npx skills@1.5.22 add . --global --agent universal claude-code --skill harness-runtime doc-to-md compliance-audit doc-authenticity report-writing"
|
|
701
|
+
}
|
|
702
|
+
],
|
|
703
|
+
"onFailure": {
|
|
704
|
+
"action": "stop",
|
|
705
|
+
"message": "Source first-party fetch failed; stop this recipe before running another source."
|
|
706
|
+
}
|
|
707
|
+
}
|
|
708
|
+
]
|
|
709
|
+
},
|
|
710
|
+
"update": {
|
|
711
|
+
"mode": "rerun-install-recipe",
|
|
712
|
+
"stopOnFailure": true,
|
|
713
|
+
"steps": [
|
|
714
|
+
{
|
|
715
|
+
"sourceId": "first-party",
|
|
716
|
+
"sourceType": "first-party",
|
|
717
|
+
"package": "@1aboveio/skills",
|
|
718
|
+
"version": "0.20.3",
|
|
719
|
+
"installPath": null,
|
|
720
|
+
"members": [
|
|
721
|
+
"harness-runtime",
|
|
722
|
+
"doc-to-md",
|
|
723
|
+
"compliance-audit",
|
|
724
|
+
"doc-authenticity",
|
|
725
|
+
"report-writing"
|
|
543
726
|
],
|
|
544
727
|
"commands": [
|
|
545
728
|
{
|
|
546
729
|
"transport": "local",
|
|
547
|
-
"command": "npx skills@1.5.22 add . --global --agent universal claude-code --skill harness-runtime
|
|
730
|
+
"command": "npx skills@1.5.22 add . --global --agent universal claude-code --skill harness-runtime doc-to-md compliance-audit doc-authenticity report-writing"
|
|
548
731
|
}
|
|
549
732
|
],
|
|
550
733
|
"onFailure": {
|
|
@@ -555,7 +738,7 @@
|
|
|
555
738
|
]
|
|
556
739
|
},
|
|
557
740
|
"uninstall": {
|
|
558
|
-
"command": "npx skills@1.5.22 remove --global --agent universal claude-code --skill
|
|
741
|
+
"command": "npx skills@1.5.22 remove --global --agent universal claude-code --skill compliance-audit doc-authenticity report-writing",
|
|
559
742
|
"removesDependencies": false
|
|
560
743
|
}
|
|
561
744
|
},
|
|
@@ -572,7 +755,7 @@
|
|
|
572
755
|
"sourceId": "first-party",
|
|
573
756
|
"sourceType": "first-party",
|
|
574
757
|
"package": "@1aboveio/skills",
|
|
575
|
-
"version": "0.20.
|
|
758
|
+
"version": "0.20.3",
|
|
576
759
|
"installPath": null,
|
|
577
760
|
"members": [
|
|
578
761
|
"harness-runtime",
|
|
@@ -604,7 +787,7 @@
|
|
|
604
787
|
"sourceId": "first-party",
|
|
605
788
|
"sourceType": "first-party",
|
|
606
789
|
"package": "@1aboveio/skills",
|
|
607
|
-
"version": "0.20.
|
|
790
|
+
"version": "0.20.3",
|
|
608
791
|
"installPath": null,
|
|
609
792
|
"members": [
|
|
610
793
|
"harness-runtime",
|
|
@@ -644,7 +827,7 @@
|
|
|
644
827
|
"sourceId": "first-party",
|
|
645
828
|
"sourceType": "first-party",
|
|
646
829
|
"package": "@1aboveio/skills",
|
|
647
|
-
"version": "0.20.
|
|
830
|
+
"version": "0.20.3",
|
|
648
831
|
"installPath": null,
|
|
649
832
|
"members": [
|
|
650
833
|
"harness-runtime"
|
|
@@ -670,7 +853,7 @@
|
|
|
670
853
|
"sourceId": "first-party",
|
|
671
854
|
"sourceType": "first-party",
|
|
672
855
|
"package": "@1aboveio/skills",
|
|
673
|
-
"version": "0.20.
|
|
856
|
+
"version": "0.20.3",
|
|
674
857
|
"installPath": null,
|
|
675
858
|
"members": [
|
|
676
859
|
"harness-runtime"
|
|
@@ -702,7 +885,7 @@
|
|
|
702
885
|
"sourceId": "first-party",
|
|
703
886
|
"sourceType": "first-party",
|
|
704
887
|
"package": "@1aboveio/skills",
|
|
705
|
-
"version": "0.20.
|
|
888
|
+
"version": "0.20.3",
|
|
706
889
|
"installPath": null,
|
|
707
890
|
"members": [
|
|
708
891
|
"harness-runtime",
|
|
@@ -728,6 +911,12 @@
|
|
|
728
911
|
"fraud-analysis",
|
|
729
912
|
"payment-analysis",
|
|
730
913
|
"tld-detection",
|
|
914
|
+
"similar-domain",
|
|
915
|
+
"doc-to-md",
|
|
916
|
+
"reg-parser",
|
|
917
|
+
"compliance-audit",
|
|
918
|
+
"doc-authenticity",
|
|
919
|
+
"report-writing",
|
|
731
920
|
"better-auth",
|
|
732
921
|
"monorepo",
|
|
733
922
|
"nextjs-fullstack",
|
|
@@ -738,7 +927,7 @@
|
|
|
738
927
|
"commands": [
|
|
739
928
|
{
|
|
740
929
|
"transport": "local",
|
|
741
|
-
"command": "npx skills@1.5.22 add . --global --agent universal claude-code --skill harness-runtime e2e-test ensure-coverage implement-and-pr rush-issues rush-release review-pr smoke engineering-runtime cloud-build cloud-debug cloud-deploy docker google-cloud mergify podman app-debug python-backend airflow pyspark fraud-analysis payment-analysis tld-detection better-auth monorepo nextjs-fullstack prisma-setup shadcn zod-v4 && npm --prefix \"$(realpath \"$HOME/.agents/skills/engineering-runtime/scripts\")\" ci --ignore-scripts"
|
|
930
|
+
"command": "npx skills@1.5.22 add . --global --agent universal claude-code --skill harness-runtime e2e-test ensure-coverage implement-and-pr rush-issues rush-release review-pr smoke engineering-runtime cloud-build cloud-debug cloud-deploy docker google-cloud mergify podman app-debug python-backend airflow pyspark fraud-analysis payment-analysis tld-detection similar-domain doc-to-md reg-parser compliance-audit doc-authenticity report-writing better-auth monorepo nextjs-fullstack prisma-setup shadcn zod-v4 && npm --prefix \"$(realpath \"$HOME/.agents/skills/engineering-runtime/scripts\")\" ci --ignore-scripts"
|
|
742
931
|
}
|
|
743
932
|
],
|
|
744
933
|
"onFailure": {
|
|
@@ -756,7 +945,7 @@
|
|
|
756
945
|
"sourceId": "first-party",
|
|
757
946
|
"sourceType": "first-party",
|
|
758
947
|
"package": "@1aboveio/skills",
|
|
759
|
-
"version": "0.20.
|
|
948
|
+
"version": "0.20.3",
|
|
760
949
|
"installPath": null,
|
|
761
950
|
"members": [
|
|
762
951
|
"harness-runtime",
|
|
@@ -782,6 +971,12 @@
|
|
|
782
971
|
"fraud-analysis",
|
|
783
972
|
"payment-analysis",
|
|
784
973
|
"tld-detection",
|
|
974
|
+
"similar-domain",
|
|
975
|
+
"doc-to-md",
|
|
976
|
+
"reg-parser",
|
|
977
|
+
"compliance-audit",
|
|
978
|
+
"doc-authenticity",
|
|
979
|
+
"report-writing",
|
|
785
980
|
"better-auth",
|
|
786
981
|
"monorepo",
|
|
787
982
|
"nextjs-fullstack",
|
|
@@ -792,7 +987,7 @@
|
|
|
792
987
|
"commands": [
|
|
793
988
|
{
|
|
794
989
|
"transport": "local",
|
|
795
|
-
"command": "npx skills@1.5.22 add . --global --agent universal claude-code --skill harness-runtime e2e-test ensure-coverage implement-and-pr rush-issues rush-release review-pr smoke engineering-runtime cloud-build cloud-debug cloud-deploy docker google-cloud mergify podman app-debug python-backend airflow pyspark fraud-analysis payment-analysis tld-detection better-auth monorepo nextjs-fullstack prisma-setup shadcn zod-v4 && npm --prefix \"$(realpath \"$HOME/.agents/skills/engineering-runtime/scripts\")\" ci --ignore-scripts"
|
|
990
|
+
"command": "npx skills@1.5.22 add . --global --agent universal claude-code --skill harness-runtime e2e-test ensure-coverage implement-and-pr rush-issues rush-release review-pr smoke engineering-runtime cloud-build cloud-debug cloud-deploy docker google-cloud mergify podman app-debug python-backend airflow pyspark fraud-analysis payment-analysis tld-detection similar-domain doc-to-md reg-parser compliance-audit doc-authenticity report-writing better-auth monorepo nextjs-fullstack prisma-setup shadcn zod-v4 && npm --prefix \"$(realpath \"$HOME/.agents/skills/engineering-runtime/scripts\")\" ci --ignore-scripts"
|
|
796
991
|
}
|
|
797
992
|
],
|
|
798
993
|
"onFailure": {
|
|
@@ -803,7 +998,7 @@
|
|
|
803
998
|
]
|
|
804
999
|
},
|
|
805
1000
|
"uninstall": {
|
|
806
|
-
"command": "npx skills@1.5.22 remove --global --agent universal claude-code --skill e2e-test ensure-coverage implement-and-pr rush-issues rush-release review-pr smoke engineering-runtime cloud-build cloud-debug cloud-deploy docker google-cloud mergify podman app-debug python-backend airflow pyspark fraud-analysis payment-analysis tld-detection better-auth monorepo nextjs-fullstack prisma-setup shadcn zod-v4 harness-runtime"
|
|
1001
|
+
"command": "npx skills@1.5.22 remove --global --agent universal claude-code --skill e2e-test ensure-coverage implement-and-pr rush-issues rush-release review-pr smoke engineering-runtime cloud-build cloud-debug cloud-deploy docker google-cloud mergify podman app-debug python-backend airflow pyspark fraud-analysis payment-analysis tld-detection similar-domain doc-to-md reg-parser compliance-audit doc-authenticity report-writing better-auth monorepo nextjs-fullstack prisma-setup shadcn zod-v4 harness-runtime"
|
|
807
1002
|
}
|
|
808
1003
|
}
|
|
809
1004
|
}
|
|
@@ -354,6 +354,9 @@ export function planBundleCommands(action, groupIds, {
|
|
|
354
354
|
const recipes = readRecipes(recipesPath);
|
|
355
355
|
assertLocalRoot(localRoot);
|
|
356
356
|
const groups = new Map(recipes.groups.map((group) => [group.id, group]));
|
|
357
|
+
const memberMetadata = new Map((recipes.sources ?? [])
|
|
358
|
+
.flatMap((source) => source.members ?? [])
|
|
359
|
+
.map((member) => [member.installName, member]));
|
|
357
360
|
const requested = [];
|
|
358
361
|
for (const groupId of groupIds) {
|
|
359
362
|
if (!groups.has(groupId) || SUPPORT_GROUPS.has(groupId)) throw new Error(`Unknown bundle: ${groupId}`);
|
|
@@ -409,6 +412,9 @@ export function planBundleCommands(action, groupIds, {
|
|
|
409
412
|
command: skillCommand,
|
|
410
413
|
cwd: localRoot,
|
|
411
414
|
failureMessage: step.onFailure.message,
|
|
415
|
+
...(memberMetadata.get(skill)?.requires?.length > 0
|
|
416
|
+
? { requires: memberMetadata.get(skill).requires }
|
|
417
|
+
: {}),
|
|
412
418
|
};
|
|
413
419
|
plannedByMember.set(skill, entry);
|
|
414
420
|
planned.push(entry);
|
|
@@ -419,20 +425,27 @@ export function planBundleCommands(action, groupIds, {
|
|
|
419
425
|
return planned;
|
|
420
426
|
}
|
|
421
427
|
|
|
422
|
-
// Continue-on-failure (#1129):
|
|
423
|
-
//
|
|
424
|
-
//
|
|
425
|
-
// exit status, and selection persistence sees exactly which members succeeded.
|
|
428
|
+
// Continue-on-failure (#1129): planned per-skill adds run in dependency order. A failed skill blocks
|
|
429
|
+
// only members that require it; unrelated later skills still run. The caller summarizes the buckets,
|
|
430
|
+
// decides the exit status, and persists only members whose required closure is ready.
|
|
426
431
|
export function runBundleCommands(commands, {
|
|
427
432
|
execute = (command, cwd) => spawnSync('/bin/bash', ['-lc', command], { cwd, stdio: 'inherit' }),
|
|
428
433
|
applyPolicy = applyInvocationPolicy,
|
|
429
434
|
skillsRoot,
|
|
430
435
|
stdout = process.stdout,
|
|
431
436
|
stderr = process.stderr,
|
|
437
|
+
satisfiedMembers = [],
|
|
432
438
|
} = {}) {
|
|
433
439
|
const succeeded = [];
|
|
434
440
|
const failed = [];
|
|
441
|
+
const available = new Set(satisfiedMembers);
|
|
435
442
|
for (const planned of commands) {
|
|
443
|
+
const blockedBy = (planned.requires ?? []).filter((dependency) => !available.has(dependency));
|
|
444
|
+
if (blockedBy.length > 0) {
|
|
445
|
+
stderr.write(`Dependency failed for ${planned.member}: ${blockedBy.join(', ')} is not available\n`);
|
|
446
|
+
failed.push({ planned, status: 1, blockedBy });
|
|
447
|
+
continue;
|
|
448
|
+
}
|
|
436
449
|
stdout.write(`\nInstalling ${planned.member} (${planned.sourceId})...\n`);
|
|
437
450
|
const result = execute(planned.command, planned.cwd);
|
|
438
451
|
if (result.status === 0) {
|
|
@@ -445,6 +458,7 @@ export function runBundleCommands(commands, {
|
|
|
445
458
|
});
|
|
446
459
|
}
|
|
447
460
|
succeeded.push(planned);
|
|
461
|
+
available.add(planned.member);
|
|
448
462
|
continue;
|
|
449
463
|
} catch (error) {
|
|
450
464
|
stderr.write(`Invocation policy failed for ${planned.member}: ${error.message}\n`);
|
|
@@ -458,6 +472,25 @@ export function runBundleCommands(commands, {
|
|
|
458
472
|
return { succeeded, failed };
|
|
459
473
|
}
|
|
460
474
|
|
|
475
|
+
export function enforceReadyDependencies(readyMembers, records, stderr = process.stderr) {
|
|
476
|
+
const metadata = new Map(records.map((record) => [record.member, record]));
|
|
477
|
+
const blocked = [];
|
|
478
|
+
let changed = true;
|
|
479
|
+
while (changed) {
|
|
480
|
+
changed = false;
|
|
481
|
+
for (const member of [...readyMembers]) {
|
|
482
|
+
const record = metadata.get(member);
|
|
483
|
+
const blockedBy = (record?.requires ?? []).filter((dependency) => !readyMembers.has(dependency));
|
|
484
|
+
if (blockedBy.length === 0) continue;
|
|
485
|
+
readyMembers.delete(member);
|
|
486
|
+
blocked.push({ planned: record, status: 1, blockedBy });
|
|
487
|
+
stderr.write(`Dependency unavailable for ${member}: ${blockedBy.join(', ')} is not ready\n`);
|
|
488
|
+
changed = true;
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
return blocked;
|
|
492
|
+
}
|
|
493
|
+
|
|
461
494
|
// The four run buckets, printed after every non-dry run. `unchanged` (digest-identical skip, #1127)
|
|
462
495
|
// and `declined` (new-member consent, #1128) render from empty lists until those units land — the
|
|
463
496
|
// summary contract is stable from here on, so both buckets are always shown.
|
|
@@ -508,7 +541,12 @@ export function expectedMemberDigest(source, member, { localRoot }) {
|
|
|
508
541
|
// installed store (`~/.agents/skills`); the member lives under it by installName.
|
|
509
542
|
export function classifyInstalledMember(source, member, { enableTdd = true, localRoot, skillsRoot }) {
|
|
510
543
|
const directory = join(skillsRoot, member.installName);
|
|
511
|
-
const entry = {
|
|
544
|
+
const entry = {
|
|
545
|
+
member: member.installName,
|
|
546
|
+
sourceId: source?.id ?? null,
|
|
547
|
+
directory,
|
|
548
|
+
...(member.requires?.length > 0 ? { requires: member.requires } : {}),
|
|
549
|
+
};
|
|
512
550
|
if (!statSync(directory, { throwIfNoEntry: false })?.isDirectory()) {
|
|
513
551
|
return { ...entry, status: 'missing' };
|
|
514
552
|
}
|
|
@@ -952,11 +990,17 @@ export async function runCli(args, {
|
|
|
952
990
|
skillsRoot,
|
|
953
991
|
stdout,
|
|
954
992
|
stderr,
|
|
993
|
+
satisfiedMembers: buckets?.unchanged.map((entry) => entry.member),
|
|
955
994
|
});
|
|
956
995
|
const readyMembers = new Set([
|
|
957
996
|
...succeeded.map((planned) => planned.member),
|
|
958
997
|
...(buckets?.unchanged.map((entry) => entry.member) ?? []),
|
|
959
998
|
]);
|
|
999
|
+
failed.push(...enforceReadyDependencies(
|
|
1000
|
+
readyMembers,
|
|
1001
|
+
[...commands, ...(buckets?.unchanged ?? [])],
|
|
1002
|
+
stderr,
|
|
1003
|
+
));
|
|
960
1004
|
const archives = runArchiveCommands(
|
|
961
1005
|
archiveCandidates.filter((candidate) => !declinedArchives.has(candidate.installName)),
|
|
962
1006
|
readyMembers,
|
|
@@ -154,6 +154,10 @@ const TEST_FIXTURE = /\.fixtures?\.[^.]+$/;
|
|
|
154
154
|
export function publishedContentExcluded(name) {
|
|
155
155
|
return name.startsWith('.')
|
|
156
156
|
|| name === 'node_modules'
|
|
157
|
+
|| name === '__pycache__'
|
|
158
|
+
|| name === 'evals'
|
|
159
|
+
|| name === 'samples'
|
|
160
|
+
|| name === 'tests'
|
|
157
161
|
|| name.endsWith('-workspace')
|
|
158
162
|
|| name.endsWith('.test.mjs')
|
|
159
163
|
|| TEST_FIXTURE.test(name);
|