@1aboveio/skills 0.19.3 → 0.20.1
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 +9 -4
- package/package.json +1 -1
- package/runtime/skills/distribution/generated/recipes.json +54 -48
- package/runtime/skills/distribution/scripts/bundles.mjs +113 -7
- package/runtime/skills/engineering/engineering-runtime/scripts/workflow-coherence.mjs +4 -6
- package/runtime/skills/engineering/engineering-runtime/scripts/workflow-policy.mjs +3 -36
- package/skills/cicd-pipeline/mergify/SKILL.md +1 -1
- package/skills/engineering/engineering-runtime/coherence/workflow.json +14 -83
- package/skills/engineering/engineering-runtime/scripts/workflow-coherence.mjs +4 -6
- package/skills/engineering/engineering-runtime/scripts/workflow-policy.mjs +3 -36
- package/skills/engineering/smoke/SKILL.md +1 -1
- package/skills/payment/payment-analysis/SKILL.md +5 -3
- package/skills/payment/tld-detection/SKILL.md +163 -0
- package/skills/payment/tld-detection/agents/openai.yaml +9 -0
- package/skills/payment/tld-detection/evals/evals.json +107 -0
- package/skills/payment/tld-detection/references/clean.md +51 -0
- package/skills/payment/tld-detection/references/clustering.md +219 -0
- package/skills/payment/tld-detection/references/decision.md +85 -0
- package/skills/payment/tld-detection/references/report-template.md +169 -0
- package/skills/payment/tld-detection/references/terminology.md +69 -0
- package/skills/payment/tld-detection/references/workflow.md +78 -0
- package/skills/payment/tld-detection/scripts/detect_ladders.py +390 -0
- package/skills/payment/tld-detection/tests/test_detect_ladders.py +132 -0
- package/skills/engineering/resolve-issues/SKILL.md +0 -168
- package/skills/engineering/resolve-issues/agents/openai.yaml +0 -9
- package/skills/engineering/resolve-issues/generated/workflow-repair-policy.json +0 -499
- package/skills/engineering/resolve-issues/references/breaker.md +0 -82
- package/skills/engineering/resolve-issues/references/deliverables.md +0 -27
- package/skills/engineering/resolve-issues/references/delivery.md +0 -108
- package/skills/engineering/resolve-issues/references/evidence-lane.md +0 -21
- package/skills/engineering/resolve-issues/references/exact-head-ci.md +0 -287
- package/skills/engineering/resolve-issues/references/fan-out.md +0 -33
- package/skills/engineering/resolve-issues/references/finalization.md +0 -68
- package/skills/engineering/resolve-issues/references/guarantees.md +0 -10
- package/skills/engineering/resolve-issues/references/high-risk.md +0 -29
- package/skills/engineering/resolve-issues/references/incidents/848/README.md +0 -156
- package/skills/engineering/resolve-issues/references/intake.md +0 -86
- package/skills/engineering/resolve-issues/references/integration-gate.md +0 -53
- package/skills/engineering/resolve-issues/references/interference.md +0 -87
- package/skills/engineering/resolve-issues/references/loop.md +0 -134
- package/skills/engineering/resolve-issues/references/model-catalog.md +0 -9
- package/skills/engineering/resolve-issues/references/postmortem.md +0 -27
- package/skills/engineering/resolve-issues/references/pre-flight-model-slots.md +0 -41
- package/skills/engineering/resolve-issues/references/pre-flight-recording-and-checkout.md +0 -48
- package/skills/engineering/resolve-issues/references/pre-flight.md +0 -41
- package/skills/engineering/resolve-issues/references/regression-checklist.md +0 -26
- package/skills/engineering/resolve-issues/references/run-state.md +0 -288
- package/skills/engineering/resolve-issues/references/sandboxed-testing.md +0 -48
- package/skills/engineering/resolve-issues/references/spawn-contract.md +0 -96
- package/skills/engineering/resolve-issues/references/terminal-evidence-journal.md +0 -40
- package/skills/engineering/resolve-issues/references/why.md +0 -653
- package/skills/engineering/resolve-issues/schemas/fix-round.schema.json +0 -49
- package/skills/engineering/resolve-issues/scripts/combine-and-verify.mjs +0 -721
- package/skills/engineering/resolve-issues/scripts/component-candidate.mjs +0 -962
- package/skills/engineering/resolve-issues/scripts/contract-revision.mjs +0 -220
- package/skills/engineering/resolve-issues/scripts/detect-delivery-mode.mjs +0 -420
- package/skills/engineering/resolve-issues/scripts/detect-target-branch.mjs +0 -256
- package/skills/engineering/resolve-issues/scripts/detect-workspace-mode.mjs +0 -168
- package/skills/engineering/resolve-issues/scripts/discover-models.mjs +0 -9
- package/skills/engineering/resolve-issues/scripts/doctrine.mjs +0 -62
- package/skills/engineering/resolve-issues/scripts/evidence-lifecycle-contract.mjs +0 -191
- package/skills/engineering/resolve-issues/scripts/exact-head-ci.mjs +0 -413
- package/skills/engineering/resolve-issues/scripts/exact-head-github-provider.mjs +0 -332
- package/skills/engineering/resolve-issues/scripts/finalize.mjs +0 -488
- package/skills/engineering/resolve-issues/scripts/fix-rounds.mjs +0 -3307
- package/skills/engineering/resolve-issues/scripts/fixtures/evidence-lifecycle-circular-1001.json +0 -16
- package/skills/engineering/resolve-issues/scripts/fixtures/evidence-lifecycle-valid-sequencing.json +0 -51
- package/skills/engineering/resolve-issues/scripts/fixtures/fmm-express-830-component-candidate.json +0 -17
- package/skills/engineering/resolve-issues/scripts/fixtures/head-check-set-1081.json +0 -166
- package/skills/engineering/resolve-issues/scripts/gate-value-series.mjs +0 -92
- package/skills/engineering/resolve-issues/scripts/guide-index.mjs +0 -73
- package/skills/engineering/resolve-issues/scripts/head-check-set.mjs +0 -159
- package/skills/engineering/resolve-issues/scripts/interference.mjs +0 -427
- package/skills/engineering/resolve-issues/scripts/model-catalog.mjs +0 -9
- package/skills/engineering/resolve-issues/scripts/next-operations.mjs +0 -419
- package/skills/engineering/resolve-issues/scripts/postmortem.mjs +0 -909
- package/skills/engineering/resolve-issues/scripts/preflight-questions.mjs +0 -345
- package/skills/engineering/resolve-issues/scripts/reconcile-contained-unit-prs.mjs +0 -415
- package/skills/engineering/resolve-issues/scripts/release-state-contract.mjs +0 -697
- package/skills/engineering/resolve-issues/scripts/report.mjs +0 -494
- package/skills/engineering/resolve-issues/scripts/required-check-plan.mjs +0 -172
- package/skills/engineering/resolve-issues/scripts/round-metadata.mjs +0 -79
- package/skills/engineering/resolve-issues/scripts/run-state-review6-cases.mjs +0 -334
- package/skills/engineering/resolve-issues/scripts/run-state.mjs +0 -4792
- package/skills/engineering/resolve-issues/scripts/sandbox-selftest.mjs +0 -395
- package/skills/engineering/resolve-issues/scripts/spawn-contract.mjs +0 -290
- package/skills/engineering/resolve-issues/scripts/terminal-dispositions.mjs +0 -170
- package/skills/engineering/resolve-issues/scripts/terminal-evidence-journal.mjs +0 -293
- package/skills/engineering/resolve-issues/scripts/unit-kind.mjs +0 -197
- package/skills/engineering/resolve-issues/scripts/unit-lifecycle.mjs +0 -127
- package/skills/engineering/resolve-issues/scripts/watch-delivery.mjs +0 -893
- package/skills/engineering/resolve-issues/scripts/workspaces.mjs +0 -829
- package/skills/engineering/resolve-issues/workflows/independent-review.workflow.js +0 -290
- package/skills/engineering/resolve-issues/workflows/prior-art-scan.workflow.js +0 -80
- package/skills/engineering/resolve-issues/workflows/workflow-smoke.mjs +0 -102
- package/skills/engineering/resolve-release/LICENSE +0 -3
- package/skills/engineering/resolve-release/SKILL.md +0 -113
- package/skills/engineering/resolve-release/agents/openai.yaml +0 -9
- package/skills/engineering/resolve-release/references/assembly.md +0 -137
- package/skills/engineering/resolve-release/references/auto-when-green.md +0 -56
- package/skills/engineering/resolve-release/references/candidate.md +0 -167
- package/skills/engineering/resolve-release/references/exposure.md +0 -178
- package/skills/engineering/resolve-release/references/handoff.md +0 -24
- package/skills/engineering/resolve-release/references/postmortem.md +0 -230
- package/skills/engineering/resolve-release/references/preflight.md +0 -208
- package/skills/engineering/resolve-release/references/principles.md +0 -94
- package/skills/engineering/resolve-release/references/regression-checklist.md +0 -36
- package/skills/engineering/resolve-release/references/related-skills.md +0 -13
- package/skills/engineering/resolve-release/references/routing.md +0 -149
- package/skills/engineering/resolve-release/references/verified-sha-github-flow.md +0 -285
- package/skills/engineering/resolve-release/references/versioning.md +0 -202
- package/skills/engineering/resolve-release/references/why.md +0 -53
- package/skills/engineering/resolve-release/scripts/adapter-completion-artifact.mjs +0 -389
- package/skills/engineering/resolve-release/scripts/build-changes.mjs +0 -209
- package/skills/engineering/resolve-release/scripts/candidate-hygiene.mjs +0 -407
- package/skills/engineering/resolve-release/scripts/candidate-identity.mjs +0 -904
- package/skills/engineering/resolve-release/scripts/candidate-traffic.mjs +0 -81
- package/skills/engineering/resolve-release/scripts/checked-adapter-loader.mjs +0 -612
- package/skills/engineering/resolve-release/scripts/close-attempt.mjs +0 -135
- package/skills/engineering/resolve-release/scripts/closeout-release.mjs +0 -161
- package/skills/engineering/resolve-release/scripts/doctrine.mjs +0 -106
- package/skills/engineering/resolve-release/scripts/durable-processing.mjs +0 -522
- package/skills/engineering/resolve-release/scripts/ensure-target-green.mjs +0 -659
- package/skills/engineering/resolve-release/scripts/evidence-bundle.mjs +0 -1014
- package/skills/engineering/resolve-release/scripts/finalize-release.mjs +0 -526
- package/skills/engineering/resolve-release/scripts/fixtures/durable-processing-adapter.mjs +0 -169
- package/skills/engineering/resolve-release/scripts/green-gate.mjs +0 -599
- package/skills/engineering/resolve-release/scripts/isolated-adapter-evaluator.mjs +0 -752
- package/skills/engineering/resolve-release/scripts/metadata-pr-status.mjs +0 -56
- package/skills/engineering/resolve-release/scripts/metadata-sync.mjs +0 -1538
- package/skills/engineering/resolve-release/scripts/postmortem.mjs +0 -381
- package/skills/engineering/resolve-release/scripts/preflight-probes.mjs +0 -510
- package/skills/engineering/resolve-release/scripts/production-endpoints.mjs +0 -326
- package/skills/engineering/resolve-release/scripts/rc-circuit-breaker.mjs +0 -272
- package/skills/engineering/resolve-release/scripts/report.mjs +0 -417
- package/skills/engineering/resolve-release/scripts/reprobe-credentials.mjs +0 -114
- package/skills/engineering/resolve-release/scripts/revalidate-candidate.mjs +0 -238
- package/skills/engineering/resolve-release/scripts/review-packet.mjs +0 -503
- package/skills/engineering/resolve-release/scripts/rollback-floor.mjs +0 -263
- package/skills/engineering/resolve-release/scripts/version-assert.mjs +0 -339
- package/skills/engineering/resolve-release/scripts/version-postmortem.mjs +0 -485
- package/skills/engineering/resolve-release/scripts/version.mjs +0 -1199
- package/skills/engineering/resolve-release/scripts/watch-candidate-delivery.mjs +0 -449
- package/skills/engineering/resolve-release/vendor/ACORN-LICENSE +0 -21
- package/skills/engineering/resolve-release/vendor/README.md +0 -60
- package/skills/engineering/resolve-release/vendor/acorn.mjs +0 -6233
- package/skills/engineering/resolve-release/vendor/quickjs/core/LICENSE +0 -21
- package/skills/engineering/resolve-release/vendor/quickjs/core/README.md +0 -341
- package/skills/engineering/resolve-release/vendor/quickjs/core/README.template.md +0 -70
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/chunk-TAV5CUKK.mjs +0 -2
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/chunk-TAV5CUKK.mjs.map +0 -1
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/chunk-V2S4ZYJR.mjs +0 -7
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/chunk-V2S4ZYJR.mjs.map +0 -1
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/index.d.mts +0 -2033
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/index.d.ts +0 -2033
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/index.js +0 -7
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/index.js.map +0 -1
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/index.mjs +0 -2
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/index.mjs.map +0 -1
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/module-ES6BEMUI.mjs +0 -2
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/module-ES6BEMUI.mjs.map +0 -1
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/module-asyncify-2EFITU5U.mjs +0 -2
- package/skills/engineering/resolve-release/vendor/quickjs/core/dist/module-asyncify-2EFITU5U.mjs.map +0 -1
- package/skills/engineering/resolve-release/vendor/quickjs/core/package.json +0 -49
- package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/LICENSE +0 -21
- package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/README.md +0 -5
- package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/dist/index.d.mts +0 -549
- package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/dist/index.d.ts +0 -549
- package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/dist/index.js +0 -2
- package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/dist/index.js.map +0 -1
- package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/dist/index.mjs +0 -2
- package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/dist/index.mjs.map +0 -1
- package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/package.json +0 -36
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/LICENSE +0 -47
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/README.md +0 -82
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.browser.d.ts +0 -11
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.browser.mjs +0 -22
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.cjs +0 -21
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.cloudflare.cjs +0 -21
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.cloudflare.d.ts +0 -11
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.d.ts +0 -11
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.mjs +0 -25
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.wasm +0 -0
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/ffi.d.mts +0 -85
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/ffi.d.ts +0 -85
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/ffi.js +0 -2
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/ffi.js.map +0 -1
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/ffi.mjs +0 -2
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/ffi.mjs.map +0 -1
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/index.d.mts +0 -20
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/index.d.ts +0 -20
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/index.js +0 -2
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/index.js.map +0 -1
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/index.mjs +0 -2
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/index.mjs.map +0 -1
- package/skills/engineering/resolve-release/vendor/quickjs/release-sync/package.json +0 -61
- /package/skills/{engineering/resolve-issues → payment/tld-detection}/LICENSE +0 -0
package/README.md
CHANGED
|
@@ -65,11 +65,11 @@ planned same-named skill. The coordinator still owns group and new-member consen
|
|
|
65
65
|
|
|
66
66
|
## Groups in this package
|
|
67
67
|
|
|
68
|
-
- `engineering-workflow` — Engineering Workflow: e2e-test, ensure-coverage, implement-and-pr, rush-issues,
|
|
68
|
+
- `engineering-workflow` — Engineering Workflow: e2e-test, ensure-coverage, implement-and-pr, rush-issues, rush-release, review-pr, smoke, engineering-runtime
|
|
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
|
|
72
|
+
- `payment` — Payment: fraud-analysis, payment-analysis, tld-detection
|
|
73
73
|
- `fullstack` — Fullstack: better-auth, monorepo, nextjs-fullstack, prisma-setup, shadcn, zod-v4
|
|
74
74
|
|
|
75
75
|
Internal dependencies, installed with the groups above and not selectable on their own: `harness-runtime`.
|
|
@@ -97,6 +97,11 @@ non-interactively.
|
|
|
97
97
|
Declined skills are never uninstalled by the coordinator and stay out of the remembered acceptance,
|
|
98
98
|
so the next update asks again.
|
|
99
99
|
|
|
100
|
+
When a release archives a previously accepted skill, `update` asks before removing that installed
|
|
101
|
+
copy. The default is No; `--yes` accepts archival non-interactively. Removal is performed by the
|
|
102
|
+
same pinned native Skills CLI, only after the declared replacement is installed or already current.
|
|
103
|
+
Declined or failed archival remains in selection memory so a later update offers it again.
|
|
104
|
+
|
|
100
105
|
Install and update are best-effort per skill: they continue after a single skill failure, summarize
|
|
101
106
|
every skill as succeeded, unchanged, declined, or failed, and exit non-zero if anything failed. There
|
|
102
107
|
is no rollback or transactional group update; the native CLI remains the sole filesystem write
|
|
@@ -117,7 +122,7 @@ owns — copy the command for the group you want to remove:
|
|
|
117
122
|
|
|
118
123
|
```
|
|
119
124
|
# Engineering Workflow
|
|
120
|
-
npx skills@1.5.22 remove --global --agent universal claude-code --skill e2e-test ensure-coverage implement-and-pr rush-issues
|
|
125
|
+
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
|
|
121
126
|
# Delivery Infrastructure
|
|
122
127
|
npx skills@1.5.22 remove --global --agent universal claude-code --skill cloud-build cloud-debug cloud-deploy docker google-cloud mergify podman
|
|
123
128
|
# Backend
|
|
@@ -125,7 +130,7 @@ npx skills@1.5.22 remove --global --agent universal claude-code --skill app-debu
|
|
|
125
130
|
# Data Science
|
|
126
131
|
npx skills@1.5.22 remove --global --agent universal claude-code --skill airflow pyspark
|
|
127
132
|
# Payment
|
|
128
|
-
npx skills@1.5.22 remove --global --agent universal claude-code --skill fraud-analysis payment-analysis
|
|
133
|
+
npx skills@1.5.22 remove --global --agent universal claude-code --skill fraud-analysis payment-analysis tld-detection
|
|
129
134
|
# Fullstack
|
|
130
135
|
npx skills@1.5.22 remove --global --agent universal claude-code --skill better-auth monorepo nextjs-fullstack prisma-setup shadcn zod-v4
|
|
131
136
|
```
|
package/package.json
CHANGED
|
@@ -3,12 +3,28 @@
|
|
|
3
3
|
"generatedFrom": "skills/distribution/manifest.json",
|
|
4
4
|
"renderTarget": "public-npm",
|
|
5
5
|
"lifecycleAuthority": "native-skills-cli",
|
|
6
|
+
"archives": [
|
|
7
|
+
{
|
|
8
|
+
"installName": "resolve-issues",
|
|
9
|
+
"formerGroupId": "engineering-workflow",
|
|
10
|
+
"archivedIn": "0.20.0",
|
|
11
|
+
"replacement": "rush-issues",
|
|
12
|
+
"command": "npx skills@1.5.22 remove --global --agent universal claude-code --skill resolve-issues"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"installName": "resolve-release",
|
|
16
|
+
"formerGroupId": "engineering-workflow",
|
|
17
|
+
"archivedIn": "0.20.0",
|
|
18
|
+
"replacement": "rush-release",
|
|
19
|
+
"command": "npx skills@1.5.22 remove --global --agent universal claude-code --skill resolve-release"
|
|
20
|
+
}
|
|
21
|
+
],
|
|
6
22
|
"sources": [
|
|
7
23
|
{
|
|
8
24
|
"id": "first-party",
|
|
9
25
|
"type": "first-party",
|
|
10
26
|
"package": "@1aboveio/skills",
|
|
11
|
-
"version": "0.
|
|
27
|
+
"version": "0.20.1",
|
|
12
28
|
"updatePolicy": "pinned-npm-version",
|
|
13
29
|
"members": [
|
|
14
30
|
{
|
|
@@ -35,24 +51,12 @@
|
|
|
35
51
|
"role": "skill",
|
|
36
52
|
"licenseResponsibility": "1aboveio-mit"
|
|
37
53
|
},
|
|
38
|
-
{
|
|
39
|
-
"installName": "resolve-issues",
|
|
40
|
-
"path": "skills/engineering/resolve-issues",
|
|
41
|
-
"role": "skill",
|
|
42
|
-
"licenseResponsibility": "1aboveio-mit"
|
|
43
|
-
},
|
|
44
54
|
{
|
|
45
55
|
"installName": "rush-release",
|
|
46
56
|
"path": "skills/engineering/rush-release",
|
|
47
57
|
"role": "skill",
|
|
48
58
|
"licenseResponsibility": "1aboveio-mit"
|
|
49
59
|
},
|
|
50
|
-
{
|
|
51
|
-
"installName": "resolve-release",
|
|
52
|
-
"path": "skills/engineering/resolve-release",
|
|
53
|
-
"role": "skill",
|
|
54
|
-
"licenseResponsibility": "1aboveio-mit"
|
|
55
|
-
},
|
|
56
60
|
{
|
|
57
61
|
"installName": "review-pr",
|
|
58
62
|
"path": "skills/engineering/review-pr",
|
|
@@ -149,6 +153,12 @@
|
|
|
149
153
|
"role": "skill",
|
|
150
154
|
"licenseResponsibility": "1aboveio-mit"
|
|
151
155
|
},
|
|
156
|
+
{
|
|
157
|
+
"installName": "tld-detection",
|
|
158
|
+
"path": "skills/payment/tld-detection",
|
|
159
|
+
"role": "skill",
|
|
160
|
+
"licenseResponsibility": "1aboveio-mit"
|
|
161
|
+
},
|
|
152
162
|
{
|
|
153
163
|
"installName": "better-auth",
|
|
154
164
|
"path": "skills/fullstack/better-auth",
|
|
@@ -208,7 +218,7 @@
|
|
|
208
218
|
"sourceId": "first-party",
|
|
209
219
|
"sourceType": "first-party",
|
|
210
220
|
"package": "@1aboveio/skills",
|
|
211
|
-
"version": "0.
|
|
221
|
+
"version": "0.20.1",
|
|
212
222
|
"installPath": null,
|
|
213
223
|
"members": [
|
|
214
224
|
"harness-runtime",
|
|
@@ -216,9 +226,7 @@
|
|
|
216
226
|
"ensure-coverage",
|
|
217
227
|
"implement-and-pr",
|
|
218
228
|
"rush-issues",
|
|
219
|
-
"resolve-issues",
|
|
220
229
|
"rush-release",
|
|
221
|
-
"resolve-release",
|
|
222
230
|
"review-pr",
|
|
223
231
|
"smoke",
|
|
224
232
|
"engineering-runtime"
|
|
@@ -226,7 +234,7 @@
|
|
|
226
234
|
"commands": [
|
|
227
235
|
{
|
|
228
236
|
"transport": "local",
|
|
229
|
-
"command": "npx skills@1.5.22 add . --global --agent universal claude-code --skill harness-runtime e2e-test ensure-coverage implement-and-pr rush-issues
|
|
237
|
+
"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 && npm --prefix \"$(realpath \"$HOME/.agents/skills/engineering-runtime/scripts\")\" ci --ignore-scripts"
|
|
230
238
|
}
|
|
231
239
|
],
|
|
232
240
|
"onFailure": {
|
|
@@ -244,7 +252,7 @@
|
|
|
244
252
|
"sourceId": "first-party",
|
|
245
253
|
"sourceType": "first-party",
|
|
246
254
|
"package": "@1aboveio/skills",
|
|
247
|
-
"version": "0.
|
|
255
|
+
"version": "0.20.1",
|
|
248
256
|
"installPath": null,
|
|
249
257
|
"members": [
|
|
250
258
|
"harness-runtime",
|
|
@@ -252,9 +260,7 @@
|
|
|
252
260
|
"ensure-coverage",
|
|
253
261
|
"implement-and-pr",
|
|
254
262
|
"rush-issues",
|
|
255
|
-
"resolve-issues",
|
|
256
263
|
"rush-release",
|
|
257
|
-
"resolve-release",
|
|
258
264
|
"review-pr",
|
|
259
265
|
"smoke",
|
|
260
266
|
"engineering-runtime"
|
|
@@ -262,7 +268,7 @@
|
|
|
262
268
|
"commands": [
|
|
263
269
|
{
|
|
264
270
|
"transport": "local",
|
|
265
|
-
"command": "npx skills@1.5.22 add . --global --agent universal claude-code --skill harness-runtime e2e-test ensure-coverage implement-and-pr rush-issues
|
|
271
|
+
"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 && npm --prefix \"$(realpath \"$HOME/.agents/skills/engineering-runtime/scripts\")\" ci --ignore-scripts"
|
|
266
272
|
}
|
|
267
273
|
],
|
|
268
274
|
"onFailure": {
|
|
@@ -273,7 +279,7 @@
|
|
|
273
279
|
]
|
|
274
280
|
},
|
|
275
281
|
"uninstall": {
|
|
276
|
-
"command": "npx skills@1.5.22 remove --global --agent universal claude-code --skill e2e-test ensure-coverage implement-and-pr rush-issues
|
|
282
|
+
"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",
|
|
277
283
|
"removesDependencies": false
|
|
278
284
|
}
|
|
279
285
|
},
|
|
@@ -290,7 +296,7 @@
|
|
|
290
296
|
"sourceId": "first-party",
|
|
291
297
|
"sourceType": "first-party",
|
|
292
298
|
"package": "@1aboveio/skills",
|
|
293
|
-
"version": "0.
|
|
299
|
+
"version": "0.20.1",
|
|
294
300
|
"installPath": null,
|
|
295
301
|
"members": [
|
|
296
302
|
"harness-runtime",
|
|
@@ -323,7 +329,7 @@
|
|
|
323
329
|
"sourceId": "first-party",
|
|
324
330
|
"sourceType": "first-party",
|
|
325
331
|
"package": "@1aboveio/skills",
|
|
326
|
-
"version": "0.
|
|
332
|
+
"version": "0.20.1",
|
|
327
333
|
"installPath": null,
|
|
328
334
|
"members": [
|
|
329
335
|
"harness-runtime",
|
|
@@ -366,7 +372,7 @@
|
|
|
366
372
|
"sourceId": "first-party",
|
|
367
373
|
"sourceType": "first-party",
|
|
368
374
|
"package": "@1aboveio/skills",
|
|
369
|
-
"version": "0.
|
|
375
|
+
"version": "0.20.1",
|
|
370
376
|
"installPath": null,
|
|
371
377
|
"members": [
|
|
372
378
|
"harness-runtime",
|
|
@@ -394,7 +400,7 @@
|
|
|
394
400
|
"sourceId": "first-party",
|
|
395
401
|
"sourceType": "first-party",
|
|
396
402
|
"package": "@1aboveio/skills",
|
|
397
|
-
"version": "0.
|
|
403
|
+
"version": "0.20.1",
|
|
398
404
|
"installPath": null,
|
|
399
405
|
"members": [
|
|
400
406
|
"harness-runtime",
|
|
@@ -432,7 +438,7 @@
|
|
|
432
438
|
"sourceId": "first-party",
|
|
433
439
|
"sourceType": "first-party",
|
|
434
440
|
"package": "@1aboveio/skills",
|
|
435
|
-
"version": "0.
|
|
441
|
+
"version": "0.20.1",
|
|
436
442
|
"installPath": null,
|
|
437
443
|
"members": [
|
|
438
444
|
"harness-runtime",
|
|
@@ -460,7 +466,7 @@
|
|
|
460
466
|
"sourceId": "first-party",
|
|
461
467
|
"sourceType": "first-party",
|
|
462
468
|
"package": "@1aboveio/skills",
|
|
463
|
-
"version": "0.
|
|
469
|
+
"version": "0.20.1",
|
|
464
470
|
"installPath": null,
|
|
465
471
|
"members": [
|
|
466
472
|
"harness-runtime",
|
|
@@ -498,17 +504,18 @@
|
|
|
498
504
|
"sourceId": "first-party",
|
|
499
505
|
"sourceType": "first-party",
|
|
500
506
|
"package": "@1aboveio/skills",
|
|
501
|
-
"version": "0.
|
|
507
|
+
"version": "0.20.1",
|
|
502
508
|
"installPath": null,
|
|
503
509
|
"members": [
|
|
504
510
|
"harness-runtime",
|
|
505
511
|
"fraud-analysis",
|
|
506
|
-
"payment-analysis"
|
|
512
|
+
"payment-analysis",
|
|
513
|
+
"tld-detection"
|
|
507
514
|
],
|
|
508
515
|
"commands": [
|
|
509
516
|
{
|
|
510
517
|
"transport": "local",
|
|
511
|
-
"command": "npx skills@1.5.22 add . --global --agent universal claude-code --skill harness-runtime fraud-analysis payment-analysis"
|
|
518
|
+
"command": "npx skills@1.5.22 add . --global --agent universal claude-code --skill harness-runtime fraud-analysis payment-analysis tld-detection"
|
|
512
519
|
}
|
|
513
520
|
],
|
|
514
521
|
"onFailure": {
|
|
@@ -526,17 +533,18 @@
|
|
|
526
533
|
"sourceId": "first-party",
|
|
527
534
|
"sourceType": "first-party",
|
|
528
535
|
"package": "@1aboveio/skills",
|
|
529
|
-
"version": "0.
|
|
536
|
+
"version": "0.20.1",
|
|
530
537
|
"installPath": null,
|
|
531
538
|
"members": [
|
|
532
539
|
"harness-runtime",
|
|
533
540
|
"fraud-analysis",
|
|
534
|
-
"payment-analysis"
|
|
541
|
+
"payment-analysis",
|
|
542
|
+
"tld-detection"
|
|
535
543
|
],
|
|
536
544
|
"commands": [
|
|
537
545
|
{
|
|
538
546
|
"transport": "local",
|
|
539
|
-
"command": "npx skills@1.5.22 add . --global --agent universal claude-code --skill harness-runtime fraud-analysis payment-analysis"
|
|
547
|
+
"command": "npx skills@1.5.22 add . --global --agent universal claude-code --skill harness-runtime fraud-analysis payment-analysis tld-detection"
|
|
540
548
|
}
|
|
541
549
|
],
|
|
542
550
|
"onFailure": {
|
|
@@ -547,7 +555,7 @@
|
|
|
547
555
|
]
|
|
548
556
|
},
|
|
549
557
|
"uninstall": {
|
|
550
|
-
"command": "npx skills@1.5.22 remove --global --agent universal claude-code --skill fraud-analysis payment-analysis",
|
|
558
|
+
"command": "npx skills@1.5.22 remove --global --agent universal claude-code --skill fraud-analysis payment-analysis tld-detection",
|
|
551
559
|
"removesDependencies": false
|
|
552
560
|
}
|
|
553
561
|
},
|
|
@@ -564,7 +572,7 @@
|
|
|
564
572
|
"sourceId": "first-party",
|
|
565
573
|
"sourceType": "first-party",
|
|
566
574
|
"package": "@1aboveio/skills",
|
|
567
|
-
"version": "0.
|
|
575
|
+
"version": "0.20.1",
|
|
568
576
|
"installPath": null,
|
|
569
577
|
"members": [
|
|
570
578
|
"harness-runtime",
|
|
@@ -596,7 +604,7 @@
|
|
|
596
604
|
"sourceId": "first-party",
|
|
597
605
|
"sourceType": "first-party",
|
|
598
606
|
"package": "@1aboveio/skills",
|
|
599
|
-
"version": "0.
|
|
607
|
+
"version": "0.20.1",
|
|
600
608
|
"installPath": null,
|
|
601
609
|
"members": [
|
|
602
610
|
"harness-runtime",
|
|
@@ -636,7 +644,7 @@
|
|
|
636
644
|
"sourceId": "first-party",
|
|
637
645
|
"sourceType": "first-party",
|
|
638
646
|
"package": "@1aboveio/skills",
|
|
639
|
-
"version": "0.
|
|
647
|
+
"version": "0.20.1",
|
|
640
648
|
"installPath": null,
|
|
641
649
|
"members": [
|
|
642
650
|
"harness-runtime"
|
|
@@ -662,7 +670,7 @@
|
|
|
662
670
|
"sourceId": "first-party",
|
|
663
671
|
"sourceType": "first-party",
|
|
664
672
|
"package": "@1aboveio/skills",
|
|
665
|
-
"version": "0.
|
|
673
|
+
"version": "0.20.1",
|
|
666
674
|
"installPath": null,
|
|
667
675
|
"members": [
|
|
668
676
|
"harness-runtime"
|
|
@@ -694,7 +702,7 @@
|
|
|
694
702
|
"sourceId": "first-party",
|
|
695
703
|
"sourceType": "first-party",
|
|
696
704
|
"package": "@1aboveio/skills",
|
|
697
|
-
"version": "0.
|
|
705
|
+
"version": "0.20.1",
|
|
698
706
|
"installPath": null,
|
|
699
707
|
"members": [
|
|
700
708
|
"harness-runtime",
|
|
@@ -702,9 +710,7 @@
|
|
|
702
710
|
"ensure-coverage",
|
|
703
711
|
"implement-and-pr",
|
|
704
712
|
"rush-issues",
|
|
705
|
-
"resolve-issues",
|
|
706
713
|
"rush-release",
|
|
707
|
-
"resolve-release",
|
|
708
714
|
"review-pr",
|
|
709
715
|
"smoke",
|
|
710
716
|
"engineering-runtime",
|
|
@@ -721,6 +727,7 @@
|
|
|
721
727
|
"pyspark",
|
|
722
728
|
"fraud-analysis",
|
|
723
729
|
"payment-analysis",
|
|
730
|
+
"tld-detection",
|
|
724
731
|
"better-auth",
|
|
725
732
|
"monorepo",
|
|
726
733
|
"nextjs-fullstack",
|
|
@@ -731,7 +738,7 @@
|
|
|
731
738
|
"commands": [
|
|
732
739
|
{
|
|
733
740
|
"transport": "local",
|
|
734
|
-
"command": "npx skills@1.5.22 add . --global --agent universal claude-code --skill harness-runtime e2e-test ensure-coverage implement-and-pr rush-issues
|
|
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"
|
|
735
742
|
}
|
|
736
743
|
],
|
|
737
744
|
"onFailure": {
|
|
@@ -749,7 +756,7 @@
|
|
|
749
756
|
"sourceId": "first-party",
|
|
750
757
|
"sourceType": "first-party",
|
|
751
758
|
"package": "@1aboveio/skills",
|
|
752
|
-
"version": "0.
|
|
759
|
+
"version": "0.20.1",
|
|
753
760
|
"installPath": null,
|
|
754
761
|
"members": [
|
|
755
762
|
"harness-runtime",
|
|
@@ -757,9 +764,7 @@
|
|
|
757
764
|
"ensure-coverage",
|
|
758
765
|
"implement-and-pr",
|
|
759
766
|
"rush-issues",
|
|
760
|
-
"resolve-issues",
|
|
761
767
|
"rush-release",
|
|
762
|
-
"resolve-release",
|
|
763
768
|
"review-pr",
|
|
764
769
|
"smoke",
|
|
765
770
|
"engineering-runtime",
|
|
@@ -776,6 +781,7 @@
|
|
|
776
781
|
"pyspark",
|
|
777
782
|
"fraud-analysis",
|
|
778
783
|
"payment-analysis",
|
|
784
|
+
"tld-detection",
|
|
779
785
|
"better-auth",
|
|
780
786
|
"monorepo",
|
|
781
787
|
"nextjs-fullstack",
|
|
@@ -786,7 +792,7 @@
|
|
|
786
792
|
"commands": [
|
|
787
793
|
{
|
|
788
794
|
"transport": "local",
|
|
789
|
-
"command": "npx skills@1.5.22 add . --global --agent universal claude-code --skill harness-runtime e2e-test ensure-coverage implement-and-pr rush-issues
|
|
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"
|
|
790
796
|
}
|
|
791
797
|
],
|
|
792
798
|
"onFailure": {
|
|
@@ -797,7 +803,7 @@
|
|
|
797
803
|
]
|
|
798
804
|
},
|
|
799
805
|
"uninstall": {
|
|
800
|
-
"command": "npx skills@1.5.22 remove --global --agent universal claude-code --skill e2e-test ensure-coverage implement-and-pr rush-issues
|
|
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"
|
|
801
807
|
}
|
|
802
808
|
}
|
|
803
809
|
}
|
|
@@ -204,6 +204,20 @@ export function newMemberCandidates(action, groupIds, priorState, transport = {}
|
|
|
204
204
|
return candidates;
|
|
205
205
|
}
|
|
206
206
|
|
|
207
|
+
// Archived members are offered only to users who previously accepted them in the same group.
|
|
208
|
+
// This keeps retirement explicit and prevents a release from treating filesystem presence as
|
|
209
|
+
// consent. A successful removal drops the old acceptance; a decline or failure preserves it so a
|
|
210
|
+
// later update offers the archive again.
|
|
211
|
+
export function archivedMemberCandidates(action, groupIds, priorState, transport = {}) {
|
|
212
|
+
if (action !== 'update' || !priorState) return [];
|
|
213
|
+
const recipes = readRecipes(resolveBundleTransport(transport).recipesPath);
|
|
214
|
+
const selected = new Set(groupIds);
|
|
215
|
+
const acceptedByGroup = new Map(priorState.groups
|
|
216
|
+
.map((group) => [group.id, new Set(group.acceptedMembers)]));
|
|
217
|
+
return (recipes.archives ?? []).filter((archive) => selected.has(archive.formerGroupId)
|
|
218
|
+
&& acceptedByGroup.get(archive.formerGroupId)?.has(archive.installName));
|
|
219
|
+
}
|
|
220
|
+
|
|
207
221
|
// Prior acceptance for the new-member consent delta on explicit selections (picker, --group,
|
|
208
222
|
// --all). ABSENT memory is tolerated — a first-time selection needs no delta — but CORRUPT memory
|
|
209
223
|
// fails closed with the same clear error as the no-arg replay: guessing acceptance from a file we
|
|
@@ -574,7 +588,8 @@ install without --group/--all opens the interactive picker; update without them
|
|
|
574
588
|
remembered selection (\${XDG_STATE_HOME:-~/.local/state}/1aboveio-skills/selection.json).
|
|
575
589
|
When a remembered group's current recipe declares members you have not accepted yet, each new skill
|
|
576
590
|
is offered individually and defaults to No; --yes accepts them all, --dry-run lists them without
|
|
577
|
-
prompting.
|
|
591
|
+
prompting. Retired accepted skills are likewise kept by default; --yes archives them through the
|
|
592
|
+
native Skills CLI after their replacement is current. TDD implicit model invocation is enabled by default; --disable-tdd makes TDD explicit-only,
|
|
578
593
|
and --enable-tdd restores implicit invocation. --manual-tdd remains a compatibility alias for
|
|
579
594
|
--disable-tdd.
|
|
580
595
|
`;
|
|
@@ -749,6 +764,63 @@ async function consentNewMembers(candidates, { yes, stdin, stdout, stderr }) {
|
|
|
749
764
|
return declined;
|
|
750
765
|
}
|
|
751
766
|
|
|
767
|
+
async function consentArchivedMembers(candidates, { yes, stdin, stdout, stderr }) {
|
|
768
|
+
const declined = new Set();
|
|
769
|
+
if (yes) {
|
|
770
|
+
for (const candidate of candidates) stdout.write(`Accepting archive of retired skill "${candidate.installName}" (--yes)\n`);
|
|
771
|
+
return declined;
|
|
772
|
+
}
|
|
773
|
+
if (!stdin.isTTY) {
|
|
774
|
+
for (const candidate of candidates) {
|
|
775
|
+
stderr.write(`Keeping retired skill "${candidate.installName}": no interactive terminal (default No; re-run with --yes to archive)\n`);
|
|
776
|
+
declined.add(candidate.installName);
|
|
777
|
+
}
|
|
778
|
+
return declined;
|
|
779
|
+
}
|
|
780
|
+
const prompter = createLinePrompter({ stdin, stdout });
|
|
781
|
+
for (const candidate of candidates) {
|
|
782
|
+
const answer = await prompter.ask(
|
|
783
|
+
`Archive retired skill "${candidate.installName}" (replaced by ${candidate.replacement})? [y/N] `,
|
|
784
|
+
);
|
|
785
|
+
if (/^y(es)?$/i.test(answer)) stdout.write(`Archiving ${candidate.installName}\n`);
|
|
786
|
+
else {
|
|
787
|
+
stdout.write(`Keeping ${candidate.installName}\n`);
|
|
788
|
+
declined.add(candidate.installName);
|
|
789
|
+
}
|
|
790
|
+
}
|
|
791
|
+
return declined;
|
|
792
|
+
}
|
|
793
|
+
|
|
794
|
+
function runArchiveCommands(candidates, readyMembers, {
|
|
795
|
+
execute = (command) => spawnSync('/bin/bash', ['-lc', command], { stdio: 'inherit' }),
|
|
796
|
+
skillsRoot,
|
|
797
|
+
stdout = process.stdout,
|
|
798
|
+
stderr = process.stderr,
|
|
799
|
+
} = {}) {
|
|
800
|
+
const succeeded = [];
|
|
801
|
+
const failed = [];
|
|
802
|
+
for (const candidate of candidates) {
|
|
803
|
+
if (!readyMembers.has(candidate.replacement)) {
|
|
804
|
+
stderr.write(`Keeping ${candidate.installName}: replacement ${candidate.replacement} was not installed or current\n`);
|
|
805
|
+
failed.push({ candidate, status: 1 });
|
|
806
|
+
continue;
|
|
807
|
+
}
|
|
808
|
+
if (!statSync(join(skillsRoot, candidate.installName), { throwIfNoEntry: false })) {
|
|
809
|
+
stdout.write(`Retired skill ${candidate.installName} is already absent.\n`);
|
|
810
|
+
succeeded.push(candidate);
|
|
811
|
+
continue;
|
|
812
|
+
}
|
|
813
|
+
stdout.write(`\nArchiving ${candidate.installName} (replaced by ${candidate.replacement})...\n`);
|
|
814
|
+
const result = execute(`${candidate.command} --yes`);
|
|
815
|
+
if (result.status === 0) succeeded.push(candidate);
|
|
816
|
+
else {
|
|
817
|
+
stderr.write(`Failed to archive retired skill ${candidate.installName}; it remains installed.\n`);
|
|
818
|
+
failed.push({ candidate, status: Number.isInteger(result.status) ? result.status : 1 });
|
|
819
|
+
}
|
|
820
|
+
}
|
|
821
|
+
return { succeeded, failed };
|
|
822
|
+
}
|
|
823
|
+
|
|
752
824
|
function selectionIncludesTdd(groupIds, catalog) {
|
|
753
825
|
const selected = new Set(groupIds);
|
|
754
826
|
return catalog.some((bundle) => selected.has(bundle.id) && bundle.members.includes('tdd'))
|
|
@@ -822,6 +894,20 @@ export async function runCli(args, {
|
|
|
822
894
|
} else if (candidates.length > 0) {
|
|
823
895
|
declined = await consentNewMembers(candidates, { yes: parsed.yes, stdin, stdout, stderr });
|
|
824
896
|
}
|
|
897
|
+
const archiveCandidates = archivedMemberCandidates(parsed.action, groupIds, priorState, transport);
|
|
898
|
+
let declinedArchives = new Set();
|
|
899
|
+
if (archiveCandidates.length > 0 && parsed.dryRun) {
|
|
900
|
+
for (const candidate of archiveCandidates) {
|
|
901
|
+
stdout.write(`Retired skill "${candidate.installName}" (replaced by ${candidate.replacement}) — would prompt to archive (default: No); --yes accepts archival\n`);
|
|
902
|
+
}
|
|
903
|
+
} else if (archiveCandidates.length > 0) {
|
|
904
|
+
declinedArchives = await consentArchivedMembers(archiveCandidates, {
|
|
905
|
+
yes: parsed.yes,
|
|
906
|
+
stdin,
|
|
907
|
+
stdout,
|
|
908
|
+
stderr,
|
|
909
|
+
});
|
|
910
|
+
}
|
|
825
911
|
// Digest skip (#1127): `update` classifies the accepted members against the installed tree and
|
|
826
912
|
// omits the digest-equal ones from the native add. `install` never skips — it is an explicit
|
|
827
913
|
// request to install/replace the selected members. Declined new members (#1128) are excluded
|
|
@@ -849,7 +935,9 @@ export async function runCli(args, {
|
|
|
849
935
|
for (const planned of commands) {
|
|
850
936
|
stdout.write(`\n${planned.groupName} / ${planned.sourceId} / ${planned.member}\n${planned.command}\n`);
|
|
851
937
|
}
|
|
852
|
-
if (buckets && commands.length === 0
|
|
938
|
+
if (buckets && commands.length === 0 && archiveCandidates.length === 0) {
|
|
939
|
+
stdout.write('Nothing to do: every accepted skill is already up to date.\n');
|
|
940
|
+
}
|
|
853
941
|
return 0;
|
|
854
942
|
}
|
|
855
943
|
if (commands.length === 0 && buckets) {
|
|
@@ -865,6 +953,15 @@ export async function runCli(args, {
|
|
|
865
953
|
stdout,
|
|
866
954
|
stderr,
|
|
867
955
|
});
|
|
956
|
+
const readyMembers = new Set([
|
|
957
|
+
...succeeded.map((planned) => planned.member),
|
|
958
|
+
...(buckets?.unchanged.map((entry) => entry.member) ?? []),
|
|
959
|
+
]);
|
|
960
|
+
const archives = runArchiveCommands(
|
|
961
|
+
archiveCandidates.filter((candidate) => !declinedArchives.has(candidate.installName)),
|
|
962
|
+
readyMembers,
|
|
963
|
+
{ execute, skillsRoot, stdout, stderr },
|
|
964
|
+
);
|
|
868
965
|
printRunSummary(stdout, {
|
|
869
966
|
succeeded,
|
|
870
967
|
failed,
|
|
@@ -875,10 +972,7 @@ export async function runCli(args, {
|
|
|
875
972
|
// native add or were already digest-equal. A group with no recordable member is omitted from
|
|
876
973
|
// the written set, and a run with no recordable member at all leaves prior memory untouched;
|
|
877
974
|
// a decline never becomes remembered acceptance.
|
|
878
|
-
const succeededMembers = [
|
|
879
|
-
...succeeded.map((planned) => planned.member),
|
|
880
|
-
...(buckets?.unchanged.map((entry) => entry.member) ?? []),
|
|
881
|
-
];
|
|
975
|
+
const succeededMembers = [...readyMembers];
|
|
882
976
|
if (succeededMembers.length > 0) {
|
|
883
977
|
const renderTarget = declaredRenderTarget(transport);
|
|
884
978
|
const selection = selectionForRun(parsed.action, groupIds, {
|
|
@@ -889,10 +983,22 @@ export async function runCli(args, {
|
|
|
889
983
|
tddImplicitInvocation: enableTdd,
|
|
890
984
|
});
|
|
891
985
|
if (selection.groups.length > 0) {
|
|
986
|
+
const retainedArchives = new Set([
|
|
987
|
+
...declinedArchives,
|
|
988
|
+
...archives.failed.map((entry) => entry.candidate.installName),
|
|
989
|
+
]);
|
|
990
|
+
for (const archive of archiveCandidates) {
|
|
991
|
+
if (!retainedArchives.has(archive.installName)) continue;
|
|
992
|
+
const group = selection.groups.find((candidate) => candidate.id === archive.formerGroupId);
|
|
993
|
+
if (group && !group.acceptedMembers.includes(archive.installName)) {
|
|
994
|
+
group.acceptedMembers.push(archive.installName);
|
|
995
|
+
}
|
|
996
|
+
}
|
|
892
997
|
writeSelectionState(selection, env);
|
|
893
998
|
}
|
|
894
999
|
}
|
|
895
|
-
|
|
1000
|
+
if (failed.length > 0) return failed[0].status;
|
|
1001
|
+
return archives.failed.length > 0 ? archives.failed[0].status : 0;
|
|
896
1002
|
} catch (error) {
|
|
897
1003
|
stderr.write(`${error.message}\n`);
|
|
898
1004
|
return 2;
|
|
@@ -288,7 +288,7 @@ function validateManifest(manifest) {
|
|
|
288
288
|
add('digest-algorithm-invalid', 'engineering-runtime', 'The coherence digest algorithm is missing or unsupported.');
|
|
289
289
|
}
|
|
290
290
|
if (JSON.stringify(manifest.ownedMembers) !== JSON.stringify(WORKFLOW_OWNED_MEMBERS)) {
|
|
291
|
-
add('owned-census-invalid', 'engineering-runtime', 'The exact
|
|
291
|
+
add('owned-census-invalid', 'engineering-runtime', 'The exact eight-member Workflow ownership census is missing or malformed.');
|
|
292
292
|
}
|
|
293
293
|
if (JSON.stringify(manifest.dependencies) !== JSON.stringify([
|
|
294
294
|
{ groupId: 'matt-pocock-toolkit', members: MATT_DEPENDENCY_MEMBERS },
|
|
@@ -297,11 +297,9 @@ function validateManifest(manifest) {
|
|
|
297
297
|
add('dependency-census-invalid', 'engineering-runtime', 'The exact Matt and harness runtime dependency census is missing or malformed.');
|
|
298
298
|
}
|
|
299
299
|
if (!exactContract(manifest.dependencyClosures, WORKFLOW_TRUSTED_DEPENDENCY_CLOSURES)) {
|
|
300
|
-
const
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
const member = WORKFLOW_TRUSTED_DEPENDENCY_CLOSURES.find((closure) => !names.has(closure.invokedSkill))?.invokedSkill
|
|
304
|
-
?? 'resolve-issues';
|
|
300
|
+
const actual = Array.isArray(manifest.dependencyClosures) ? manifest.dependencyClosures : [];
|
|
301
|
+
const member = WORKFLOW_TRUSTED_DEPENDENCY_CLOSURES.find((closure, index) =>
|
|
302
|
+
!isDeepStrictEqual(actual[index], closure))?.invokedSkill ?? 'engineering-runtime';
|
|
305
303
|
add('dependency-closure-invalid', member, 'The invoked-skill dependency closure is missing, weakened, reordered or malformed.');
|
|
306
304
|
}
|
|
307
305
|
|