@1aboveio/skills 0.17.0 → 0.19.0
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 +4 -4
- package/package.json +1 -1
- package/runtime/skills/distribution/generated/recipes.json +52 -32
- package/runtime/skills/engineering/engineering-runtime/scripts/workflow-coherence.mjs +1 -1
- package/runtime/skills/engineering/engineering-runtime/scripts/workflow-policy.mjs +23 -1
- package/skills/cicd-pipeline/mergify/references/watch-contract.md +2 -2
- package/skills/cicd-pipeline/mergify/scripts/watch-pr-delivery-core.mjs +48 -4
- package/skills/data-science/airflow/SKILL.md +198 -0
- package/skills/data-science/pyspark/assets/templates/etl.py +1 -0
- package/skills/data-science/pyspark/references/etl-contract.md +3 -0
- package/skills/engineering/engineering-runtime/coherence/workflow.json +65 -15
- package/skills/engineering/engineering-runtime/scripts/workflow-coherence.mjs +1 -1
- package/skills/engineering/engineering-runtime/scripts/workflow-policy.mjs +23 -1
- package/skills/engineering/resolve-issues/SKILL.md +1 -1
- package/skills/engineering/resolve-issues/generated/workflow-repair-policy.json +55 -11
- package/skills/engineering/resolve-issues/scripts/run-state.mjs +4 -4
- package/skills/engineering/resolve-release/SKILL.md +2 -1
- package/skills/engineering/resolve-release/agents/openai.yaml +9 -0
- package/skills/engineering/resolve-release/references/related-skills.md +1 -0
- package/skills/engineering/rush-issues/LICENSE +3 -0
- package/skills/engineering/rush-issues/SKILL.md +179 -0
- package/skills/engineering/rush-issues/agents/openai.yaml +9 -0
- package/skills/engineering/rush-issues/evals/evals.json +65 -0
- package/skills/engineering/rush-issues/references/canary.md +45 -0
- package/skills/engineering/rush-issues/references/cicd.md +37 -0
- package/skills/engineering/rush-issues/references/combine.md +51 -0
- package/skills/engineering/rush-issues/references/expire.md +55 -0
- package/skills/engineering/rush-issues/references/exploration.md +53 -0
- package/skills/engineering/rush-issues/references/implementation.md +66 -0
- package/skills/engineering/rush-issues/references/preflight.md +31 -0
- package/skills/engineering/rush-issues/references/profiling.md +78 -0
- package/skills/engineering/rush-issues/references/review.md +48 -0
- package/skills/engineering/rush-issues/references/shared-modules.md +66 -0
- package/skills/engineering/rush-issues/references/task-plan.md +110 -0
- package/skills/engineering/rush-issues/scripts/discover-models.mjs +9 -0
- package/skills/engineering/rush-issues/scripts/model-catalog.mjs +9 -0
- package/skills/engineering/rush-issues/scripts/preflight-models.mjs +466 -0
- package/skills/engineering/rush-release/LICENSE +3 -0
- package/skills/engineering/rush-release/SKILL.md +99 -0
- package/skills/engineering/rush-release/agents/openai.yaml +8 -0
- package/skills/engineering/rush-release/evals/evals.json +44 -0
- package/skills/engineering/rush-release/references/candidate.md +30 -0
- package/skills/engineering/rush-release/references/cut.md +66 -0
- package/skills/engineering/rush-release/references/preflight.md +47 -0
- package/skills/engineering/rush-release/references/publish.md +100 -0
- package/skills/engineering/rush-release/scripts/apply.mjs +185 -0
- package/skills/engineering/rush-release/scripts/green-head.mjs +231 -0
- package/skills/engineering/rush-release/scripts/plan.mjs +264 -0
- package/skills/fullstack/zod-v4/SKILL.md +1 -1
- package/skills/data-science/airflow-dag-develop/SKILL.md +0 -111
- /package/skills/data-science/{airflow-dag-develop → airflow}/LICENSE +0 -0
package/README.md
CHANGED
|
@@ -65,10 +65,10 @@ 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, resolve-issues, resolve-release, review-pr, smoke, engineering-runtime
|
|
68
|
+
- `engineering-workflow` — Engineering Workflow: e2e-test, ensure-coverage, implement-and-pr, rush-issues, resolve-issues, rush-release, resolve-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
|
-
- `data-science` — Data Science: airflow
|
|
71
|
+
- `data-science` — Data Science: airflow, pyspark
|
|
72
72
|
- `payment` — Payment: fraud-analysis, payment-analysis
|
|
73
73
|
- `fullstack` — Fullstack: better-auth, monorepo, nextjs-fullstack, prisma-setup, shadcn, zod-v4
|
|
74
74
|
|
|
@@ -117,13 +117,13 @@ owns — copy the command for the group you want to remove:
|
|
|
117
117
|
|
|
118
118
|
```
|
|
119
119
|
# Engineering Workflow
|
|
120
|
-
npx skills@1.5.22 remove --global --agent universal claude-code --skill e2e-test ensure-coverage implement-and-pr resolve-issues resolve-release review-pr smoke engineering-runtime
|
|
120
|
+
npx skills@1.5.22 remove --global --agent universal claude-code --skill e2e-test ensure-coverage implement-and-pr rush-issues resolve-issues rush-release resolve-release review-pr smoke engineering-runtime
|
|
121
121
|
# Delivery Infrastructure
|
|
122
122
|
npx skills@1.5.22 remove --global --agent universal claude-code --skill cloud-build cloud-debug cloud-deploy docker google-cloud mergify podman
|
|
123
123
|
# Backend
|
|
124
124
|
npx skills@1.5.22 remove --global --agent universal claude-code --skill app-debug python-backend
|
|
125
125
|
# Data Science
|
|
126
|
-
npx skills@1.5.22 remove --global --agent universal claude-code --skill airflow
|
|
126
|
+
npx skills@1.5.22 remove --global --agent universal claude-code --skill airflow pyspark
|
|
127
127
|
# Payment
|
|
128
128
|
npx skills@1.5.22 remove --global --agent universal claude-code --skill fraud-analysis payment-analysis
|
|
129
129
|
# Fullstack
|
package/package.json
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"id": "first-party",
|
|
9
9
|
"type": "first-party",
|
|
10
10
|
"package": "@1aboveio/skills",
|
|
11
|
-
"version": "0.
|
|
11
|
+
"version": "0.19.0",
|
|
12
12
|
"updatePolicy": "pinned-npm-version",
|
|
13
13
|
"members": [
|
|
14
14
|
{
|
|
@@ -29,12 +29,24 @@
|
|
|
29
29
|
"role": "skill",
|
|
30
30
|
"licenseResponsibility": "1aboveio-mit"
|
|
31
31
|
},
|
|
32
|
+
{
|
|
33
|
+
"installName": "rush-issues",
|
|
34
|
+
"path": "skills/engineering/rush-issues",
|
|
35
|
+
"role": "skill",
|
|
36
|
+
"licenseResponsibility": "1aboveio-mit"
|
|
37
|
+
},
|
|
32
38
|
{
|
|
33
39
|
"installName": "resolve-issues",
|
|
34
40
|
"path": "skills/engineering/resolve-issues",
|
|
35
41
|
"role": "skill",
|
|
36
42
|
"licenseResponsibility": "1aboveio-mit"
|
|
37
43
|
},
|
|
44
|
+
{
|
|
45
|
+
"installName": "rush-release",
|
|
46
|
+
"path": "skills/engineering/rush-release",
|
|
47
|
+
"role": "skill",
|
|
48
|
+
"licenseResponsibility": "1aboveio-mit"
|
|
49
|
+
},
|
|
38
50
|
{
|
|
39
51
|
"installName": "resolve-release",
|
|
40
52
|
"path": "skills/engineering/resolve-release",
|
|
@@ -114,8 +126,8 @@
|
|
|
114
126
|
"licenseResponsibility": "1aboveio-mit"
|
|
115
127
|
},
|
|
116
128
|
{
|
|
117
|
-
"installName": "airflow
|
|
118
|
-
"path": "skills/data-science/airflow
|
|
129
|
+
"installName": "airflow",
|
|
130
|
+
"path": "skills/data-science/airflow",
|
|
119
131
|
"role": "skill",
|
|
120
132
|
"licenseResponsibility": "1aboveio-mit"
|
|
121
133
|
},
|
|
@@ -196,14 +208,16 @@
|
|
|
196
208
|
"sourceId": "first-party",
|
|
197
209
|
"sourceType": "first-party",
|
|
198
210
|
"package": "@1aboveio/skills",
|
|
199
|
-
"version": "0.
|
|
211
|
+
"version": "0.19.0",
|
|
200
212
|
"installPath": null,
|
|
201
213
|
"members": [
|
|
202
214
|
"harness-runtime",
|
|
203
215
|
"e2e-test",
|
|
204
216
|
"ensure-coverage",
|
|
205
217
|
"implement-and-pr",
|
|
218
|
+
"rush-issues",
|
|
206
219
|
"resolve-issues",
|
|
220
|
+
"rush-release",
|
|
207
221
|
"resolve-release",
|
|
208
222
|
"review-pr",
|
|
209
223
|
"smoke",
|
|
@@ -212,7 +226,7 @@
|
|
|
212
226
|
"commands": [
|
|
213
227
|
{
|
|
214
228
|
"transport": "local",
|
|
215
|
-
"command": "npx skills@1.5.22 add . --global --agent universal claude-code --skill harness-runtime e2e-test ensure-coverage implement-and-pr resolve-issues resolve-release review-pr smoke engineering-runtime && npm --prefix \"$(realpath \"$HOME/.agents/skills/engineering-runtime/scripts\")\" ci --ignore-scripts"
|
|
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 resolve-issues rush-release resolve-release review-pr smoke engineering-runtime && npm --prefix \"$(realpath \"$HOME/.agents/skills/engineering-runtime/scripts\")\" ci --ignore-scripts"
|
|
216
230
|
}
|
|
217
231
|
],
|
|
218
232
|
"onFailure": {
|
|
@@ -230,14 +244,16 @@
|
|
|
230
244
|
"sourceId": "first-party",
|
|
231
245
|
"sourceType": "first-party",
|
|
232
246
|
"package": "@1aboveio/skills",
|
|
233
|
-
"version": "0.
|
|
247
|
+
"version": "0.19.0",
|
|
234
248
|
"installPath": null,
|
|
235
249
|
"members": [
|
|
236
250
|
"harness-runtime",
|
|
237
251
|
"e2e-test",
|
|
238
252
|
"ensure-coverage",
|
|
239
253
|
"implement-and-pr",
|
|
254
|
+
"rush-issues",
|
|
240
255
|
"resolve-issues",
|
|
256
|
+
"rush-release",
|
|
241
257
|
"resolve-release",
|
|
242
258
|
"review-pr",
|
|
243
259
|
"smoke",
|
|
@@ -246,7 +262,7 @@
|
|
|
246
262
|
"commands": [
|
|
247
263
|
{
|
|
248
264
|
"transport": "local",
|
|
249
|
-
"command": "npx skills@1.5.22 add . --global --agent universal claude-code --skill harness-runtime e2e-test ensure-coverage implement-and-pr resolve-issues resolve-release review-pr smoke engineering-runtime && npm --prefix \"$(realpath \"$HOME/.agents/skills/engineering-runtime/scripts\")\" ci --ignore-scripts"
|
|
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 resolve-issues rush-release resolve-release review-pr smoke engineering-runtime && npm --prefix \"$(realpath \"$HOME/.agents/skills/engineering-runtime/scripts\")\" ci --ignore-scripts"
|
|
250
266
|
}
|
|
251
267
|
],
|
|
252
268
|
"onFailure": {
|
|
@@ -257,7 +273,7 @@
|
|
|
257
273
|
]
|
|
258
274
|
},
|
|
259
275
|
"uninstall": {
|
|
260
|
-
"command": "npx skills@1.5.22 remove --global --agent universal claude-code --skill e2e-test ensure-coverage implement-and-pr resolve-issues resolve-release review-pr smoke engineering-runtime",
|
|
276
|
+
"command": "npx skills@1.5.22 remove --global --agent universal claude-code --skill e2e-test ensure-coverage implement-and-pr rush-issues resolve-issues rush-release resolve-release review-pr smoke engineering-runtime",
|
|
261
277
|
"removesDependencies": false
|
|
262
278
|
}
|
|
263
279
|
},
|
|
@@ -274,7 +290,7 @@
|
|
|
274
290
|
"sourceId": "first-party",
|
|
275
291
|
"sourceType": "first-party",
|
|
276
292
|
"package": "@1aboveio/skills",
|
|
277
|
-
"version": "0.
|
|
293
|
+
"version": "0.19.0",
|
|
278
294
|
"installPath": null,
|
|
279
295
|
"members": [
|
|
280
296
|
"harness-runtime",
|
|
@@ -307,7 +323,7 @@
|
|
|
307
323
|
"sourceId": "first-party",
|
|
308
324
|
"sourceType": "first-party",
|
|
309
325
|
"package": "@1aboveio/skills",
|
|
310
|
-
"version": "0.
|
|
326
|
+
"version": "0.19.0",
|
|
311
327
|
"installPath": null,
|
|
312
328
|
"members": [
|
|
313
329
|
"harness-runtime",
|
|
@@ -350,7 +366,7 @@
|
|
|
350
366
|
"sourceId": "first-party",
|
|
351
367
|
"sourceType": "first-party",
|
|
352
368
|
"package": "@1aboveio/skills",
|
|
353
|
-
"version": "0.
|
|
369
|
+
"version": "0.19.0",
|
|
354
370
|
"installPath": null,
|
|
355
371
|
"members": [
|
|
356
372
|
"harness-runtime",
|
|
@@ -378,7 +394,7 @@
|
|
|
378
394
|
"sourceId": "first-party",
|
|
379
395
|
"sourceType": "first-party",
|
|
380
396
|
"package": "@1aboveio/skills",
|
|
381
|
-
"version": "0.
|
|
397
|
+
"version": "0.19.0",
|
|
382
398
|
"installPath": null,
|
|
383
399
|
"members": [
|
|
384
400
|
"harness-runtime",
|
|
@@ -416,17 +432,17 @@
|
|
|
416
432
|
"sourceId": "first-party",
|
|
417
433
|
"sourceType": "first-party",
|
|
418
434
|
"package": "@1aboveio/skills",
|
|
419
|
-
"version": "0.
|
|
435
|
+
"version": "0.19.0",
|
|
420
436
|
"installPath": null,
|
|
421
437
|
"members": [
|
|
422
438
|
"harness-runtime",
|
|
423
|
-
"airflow
|
|
439
|
+
"airflow",
|
|
424
440
|
"pyspark"
|
|
425
441
|
],
|
|
426
442
|
"commands": [
|
|
427
443
|
{
|
|
428
444
|
"transport": "local",
|
|
429
|
-
"command": "npx skills@1.5.22 add . --global --agent universal claude-code --skill harness-runtime airflow
|
|
445
|
+
"command": "npx skills@1.5.22 add . --global --agent universal claude-code --skill harness-runtime airflow pyspark"
|
|
430
446
|
}
|
|
431
447
|
],
|
|
432
448
|
"onFailure": {
|
|
@@ -444,17 +460,17 @@
|
|
|
444
460
|
"sourceId": "first-party",
|
|
445
461
|
"sourceType": "first-party",
|
|
446
462
|
"package": "@1aboveio/skills",
|
|
447
|
-
"version": "0.
|
|
463
|
+
"version": "0.19.0",
|
|
448
464
|
"installPath": null,
|
|
449
465
|
"members": [
|
|
450
466
|
"harness-runtime",
|
|
451
|
-
"airflow
|
|
467
|
+
"airflow",
|
|
452
468
|
"pyspark"
|
|
453
469
|
],
|
|
454
470
|
"commands": [
|
|
455
471
|
{
|
|
456
472
|
"transport": "local",
|
|
457
|
-
"command": "npx skills@1.5.22 add . --global --agent universal claude-code --skill harness-runtime airflow
|
|
473
|
+
"command": "npx skills@1.5.22 add . --global --agent universal claude-code --skill harness-runtime airflow pyspark"
|
|
458
474
|
}
|
|
459
475
|
],
|
|
460
476
|
"onFailure": {
|
|
@@ -465,7 +481,7 @@
|
|
|
465
481
|
]
|
|
466
482
|
},
|
|
467
483
|
"uninstall": {
|
|
468
|
-
"command": "npx skills@1.5.22 remove --global --agent universal claude-code --skill airflow
|
|
484
|
+
"command": "npx skills@1.5.22 remove --global --agent universal claude-code --skill airflow pyspark",
|
|
469
485
|
"removesDependencies": false
|
|
470
486
|
}
|
|
471
487
|
},
|
|
@@ -482,7 +498,7 @@
|
|
|
482
498
|
"sourceId": "first-party",
|
|
483
499
|
"sourceType": "first-party",
|
|
484
500
|
"package": "@1aboveio/skills",
|
|
485
|
-
"version": "0.
|
|
501
|
+
"version": "0.19.0",
|
|
486
502
|
"installPath": null,
|
|
487
503
|
"members": [
|
|
488
504
|
"harness-runtime",
|
|
@@ -510,7 +526,7 @@
|
|
|
510
526
|
"sourceId": "first-party",
|
|
511
527
|
"sourceType": "first-party",
|
|
512
528
|
"package": "@1aboveio/skills",
|
|
513
|
-
"version": "0.
|
|
529
|
+
"version": "0.19.0",
|
|
514
530
|
"installPath": null,
|
|
515
531
|
"members": [
|
|
516
532
|
"harness-runtime",
|
|
@@ -548,7 +564,7 @@
|
|
|
548
564
|
"sourceId": "first-party",
|
|
549
565
|
"sourceType": "first-party",
|
|
550
566
|
"package": "@1aboveio/skills",
|
|
551
|
-
"version": "0.
|
|
567
|
+
"version": "0.19.0",
|
|
552
568
|
"installPath": null,
|
|
553
569
|
"members": [
|
|
554
570
|
"harness-runtime",
|
|
@@ -580,7 +596,7 @@
|
|
|
580
596
|
"sourceId": "first-party",
|
|
581
597
|
"sourceType": "first-party",
|
|
582
598
|
"package": "@1aboveio/skills",
|
|
583
|
-
"version": "0.
|
|
599
|
+
"version": "0.19.0",
|
|
584
600
|
"installPath": null,
|
|
585
601
|
"members": [
|
|
586
602
|
"harness-runtime",
|
|
@@ -620,7 +636,7 @@
|
|
|
620
636
|
"sourceId": "first-party",
|
|
621
637
|
"sourceType": "first-party",
|
|
622
638
|
"package": "@1aboveio/skills",
|
|
623
|
-
"version": "0.
|
|
639
|
+
"version": "0.19.0",
|
|
624
640
|
"installPath": null,
|
|
625
641
|
"members": [
|
|
626
642
|
"harness-runtime"
|
|
@@ -646,7 +662,7 @@
|
|
|
646
662
|
"sourceId": "first-party",
|
|
647
663
|
"sourceType": "first-party",
|
|
648
664
|
"package": "@1aboveio/skills",
|
|
649
|
-
"version": "0.
|
|
665
|
+
"version": "0.19.0",
|
|
650
666
|
"installPath": null,
|
|
651
667
|
"members": [
|
|
652
668
|
"harness-runtime"
|
|
@@ -678,14 +694,16 @@
|
|
|
678
694
|
"sourceId": "first-party",
|
|
679
695
|
"sourceType": "first-party",
|
|
680
696
|
"package": "@1aboveio/skills",
|
|
681
|
-
"version": "0.
|
|
697
|
+
"version": "0.19.0",
|
|
682
698
|
"installPath": null,
|
|
683
699
|
"members": [
|
|
684
700
|
"harness-runtime",
|
|
685
701
|
"e2e-test",
|
|
686
702
|
"ensure-coverage",
|
|
687
703
|
"implement-and-pr",
|
|
704
|
+
"rush-issues",
|
|
688
705
|
"resolve-issues",
|
|
706
|
+
"rush-release",
|
|
689
707
|
"resolve-release",
|
|
690
708
|
"review-pr",
|
|
691
709
|
"smoke",
|
|
@@ -699,7 +717,7 @@
|
|
|
699
717
|
"podman",
|
|
700
718
|
"app-debug",
|
|
701
719
|
"python-backend",
|
|
702
|
-
"airflow
|
|
720
|
+
"airflow",
|
|
703
721
|
"pyspark",
|
|
704
722
|
"fraud-analysis",
|
|
705
723
|
"payment-analysis",
|
|
@@ -713,7 +731,7 @@
|
|
|
713
731
|
"commands": [
|
|
714
732
|
{
|
|
715
733
|
"transport": "local",
|
|
716
|
-
"command": "npx skills@1.5.22 add . --global --agent universal claude-code --skill harness-runtime e2e-test ensure-coverage implement-and-pr resolve-issues resolve-release review-pr smoke engineering-runtime cloud-build cloud-debug cloud-deploy docker google-cloud mergify podman app-debug python-backend airflow
|
|
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 resolve-issues rush-release resolve-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 better-auth monorepo nextjs-fullstack prisma-setup shadcn zod-v4 && npm --prefix \"$(realpath \"$HOME/.agents/skills/engineering-runtime/scripts\")\" ci --ignore-scripts"
|
|
717
735
|
}
|
|
718
736
|
],
|
|
719
737
|
"onFailure": {
|
|
@@ -731,14 +749,16 @@
|
|
|
731
749
|
"sourceId": "first-party",
|
|
732
750
|
"sourceType": "first-party",
|
|
733
751
|
"package": "@1aboveio/skills",
|
|
734
|
-
"version": "0.
|
|
752
|
+
"version": "0.19.0",
|
|
735
753
|
"installPath": null,
|
|
736
754
|
"members": [
|
|
737
755
|
"harness-runtime",
|
|
738
756
|
"e2e-test",
|
|
739
757
|
"ensure-coverage",
|
|
740
758
|
"implement-and-pr",
|
|
759
|
+
"rush-issues",
|
|
741
760
|
"resolve-issues",
|
|
761
|
+
"rush-release",
|
|
742
762
|
"resolve-release",
|
|
743
763
|
"review-pr",
|
|
744
764
|
"smoke",
|
|
@@ -752,7 +772,7 @@
|
|
|
752
772
|
"podman",
|
|
753
773
|
"app-debug",
|
|
754
774
|
"python-backend",
|
|
755
|
-
"airflow
|
|
775
|
+
"airflow",
|
|
756
776
|
"pyspark",
|
|
757
777
|
"fraud-analysis",
|
|
758
778
|
"payment-analysis",
|
|
@@ -766,7 +786,7 @@
|
|
|
766
786
|
"commands": [
|
|
767
787
|
{
|
|
768
788
|
"transport": "local",
|
|
769
|
-
"command": "npx skills@1.5.22 add . --global --agent universal claude-code --skill harness-runtime e2e-test ensure-coverage implement-and-pr resolve-issues resolve-release review-pr smoke engineering-runtime cloud-build cloud-debug cloud-deploy docker google-cloud mergify podman app-debug python-backend airflow
|
|
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 resolve-issues rush-release resolve-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 better-auth monorepo nextjs-fullstack prisma-setup shadcn zod-v4 && npm --prefix \"$(realpath \"$HOME/.agents/skills/engineering-runtime/scripts\")\" ci --ignore-scripts"
|
|
770
790
|
}
|
|
771
791
|
],
|
|
772
792
|
"onFailure": {
|
|
@@ -777,7 +797,7 @@
|
|
|
777
797
|
]
|
|
778
798
|
},
|
|
779
799
|
"uninstall": {
|
|
780
|
-
"command": "npx skills@1.5.22 remove --global --agent universal claude-code --skill e2e-test ensure-coverage implement-and-pr resolve-issues resolve-release review-pr smoke engineering-runtime cloud-build cloud-debug cloud-deploy docker google-cloud mergify podman app-debug python-backend airflow
|
|
800
|
+
"command": "npx skills@1.5.22 remove --global --agent universal claude-code --skill e2e-test ensure-coverage implement-and-pr rush-issues resolve-issues rush-release resolve-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 better-auth monorepo nextjs-fullstack prisma-setup shadcn zod-v4 harness-runtime"
|
|
781
801
|
}
|
|
782
802
|
}
|
|
783
803
|
}
|
|
@@ -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 ten-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 },
|
|
@@ -10,7 +10,9 @@ export const WORKFLOW_OWNED_MEMBERS = deepFreeze([
|
|
|
10
10
|
'e2e-test',
|
|
11
11
|
'ensure-coverage',
|
|
12
12
|
'implement-and-pr',
|
|
13
|
+
'rush-issues',
|
|
13
14
|
'resolve-issues',
|
|
15
|
+
'rush-release',
|
|
14
16
|
'resolve-release',
|
|
15
17
|
'review-pr',
|
|
16
18
|
'smoke',
|
|
@@ -52,6 +54,18 @@ export const WORKFLOW_TRUSTED_INVOCATION_POLICIES = deepFreeze([
|
|
|
52
54
|
]);
|
|
53
55
|
|
|
54
56
|
export const WORKFLOW_TRUSTED_DEPENDENCY_CLOSURES = deepFreeze([
|
|
57
|
+
{
|
|
58
|
+
invokedSkill: 'rush-issues',
|
|
59
|
+
members: [
|
|
60
|
+
'code-review',
|
|
61
|
+
'harness-runtime',
|
|
62
|
+
'e2e-test',
|
|
63
|
+
'rush-issues',
|
|
64
|
+
'smoke',
|
|
65
|
+
'engineering-runtime',
|
|
66
|
+
],
|
|
67
|
+
generatedIdentities: [],
|
|
68
|
+
},
|
|
55
69
|
{
|
|
56
70
|
invokedSkill: 'resolve-issues',
|
|
57
71
|
members: [
|
|
@@ -69,6 +83,14 @@ export const WORKFLOW_TRUSTED_DEPENDENCY_CLOSURES = deepFreeze([
|
|
|
69
83
|
{ member: 'resolve-issues', path: 'generated/workflow-repair-policy.json' },
|
|
70
84
|
],
|
|
71
85
|
},
|
|
86
|
+
{
|
|
87
|
+
invokedSkill: 'rush-release',
|
|
88
|
+
members: [
|
|
89
|
+
'rush-release',
|
|
90
|
+
'engineering-runtime',
|
|
91
|
+
],
|
|
92
|
+
generatedIdentities: [],
|
|
93
|
+
},
|
|
72
94
|
{
|
|
73
95
|
invokedSkill: 'resolve-release',
|
|
74
96
|
members: [
|
|
@@ -97,7 +119,7 @@ export const WORKFLOW_TRUSTED_SOURCES = deepFreeze({
|
|
|
97
119
|
id: 'first-party',
|
|
98
120
|
type: 'first-party',
|
|
99
121
|
package: '@1aboveio/skills',
|
|
100
|
-
version: '0.
|
|
122
|
+
version: '0.19.0',
|
|
101
123
|
},
|
|
102
124
|
matt: {
|
|
103
125
|
id: 'matt-pocock',
|
|
@@ -24,7 +24,7 @@ So the watcher's memory *is* the verdict. Four pieces of state must survive acro
|
|
|
24
24
|
|
|
25
25
|
1. **`seenQueued`** — has queue entry ever been observed? Every downstream transition depends on it. Set from the `queued` label **or** `mergify queue show`.
|
|
26
26
|
2. **A re-read counter** (`missingActiveReads` / `absentStreak`) — one absence is suspicion, two consecutive *readable* absences settle `DEQUEUED`.
|
|
27
|
-
3. **Readable vs. absent** — a failed `gh`/`mergify` call is *no information
|
|
27
|
+
3. **Readable vs. absent** — a failed `gh`/`mergify` call is *no information*: it must not advance that counter or overwrite that source's last readable contribution to the stall-state snapshot. During a partial outage, the still-readable sibling remains informative and genuine progress from it still resets the change clock.
|
|
28
28
|
4. **A change clock** (`lastChangeMs`) — the stall bound is *no observable change*, not elapsed time.
|
|
29
29
|
|
|
30
30
|
### Why a per-poll predicate cannot satisfy this
|
|
@@ -160,7 +160,7 @@ When the reason is not machine-readable, quote the Mergify status comment, queue
|
|
|
160
160
|
## Watcher Requirements
|
|
161
161
|
|
|
162
162
|
- Run as one background task or one script invocation; do not spend foreground turns polling.
|
|
163
|
-
- Retry transient `gh`, GraphQL, and Mergify CLI failures. EOF, TLS handshake timeouts, and temporary API failures are not dequeue signals — an unreadable read is *no information*, not a "not queued" observation, and must not advance the counter that settles `DEQUEUED`.
|
|
163
|
+
- Retry transient `gh`, GraphQL, and Mergify CLI failures. EOF, TLS handshake timeouts, and temporary API failures are not dequeue signals — an unreadable read is *no information*, not a "not queued" observation, and must not advance the counter that settles `DEQUEUED`. Retain that source's last readable stall-state contribution instead; a readable sibling can still report genuine progress and reset the change clock.
|
|
164
164
|
- Bound every subprocess read on its own timeout, in addition to the stall/ceiling bounds below — those are only evaluated after a poll returns, so an unbounded read can hang the watcher past both of them.
|
|
165
165
|
- **Run the bundled script. Do not hand-roll a watcher** — see the progression section above for why the hand-rolled shape cannot hold the contract, whatever care goes into the code. (If you are reading a legacy shell watcher: avoid shell-reserved variable names such as `status`.)
|
|
166
166
|
- Keep enqueue and watch separate. A watch observes only; it does not post `@mergifyio queue`, `@mergifyio dequeue`, or merge.
|
|
@@ -165,6 +165,50 @@ export function observationKey({ pr = {}, queue = {} } = {}) {
|
|
|
165
165
|
])
|
|
166
166
|
}
|
|
167
167
|
|
|
168
|
+
function stallPrSnapshot(pr = {}) {
|
|
169
|
+
return {
|
|
170
|
+
state: pr.state ?? null,
|
|
171
|
+
mergedAt: pr.mergedAt ?? null,
|
|
172
|
+
headRefOid: pr.headRefOid ?? null,
|
|
173
|
+
labels: Array.isArray(pr.labels) ? [...pr.labels] : [],
|
|
174
|
+
failedChecks: Array.isArray(pr.failedChecks) ? pr.failedChecks.map(({ name, status }) => ({ name, status })) : [],
|
|
175
|
+
pendingChecks: Array.isArray(pr.pendingChecks) ? pr.pendingChecks.map(({ name, status }) => ({ name, status })) : [],
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
function stallQueueSnapshot(queue = {}) {
|
|
180
|
+
return {
|
|
181
|
+
queued: queue.queued ?? null,
|
|
182
|
+
queueState: queue.queueState ?? queue.state ?? null,
|
|
183
|
+
position: queue.position ?? null,
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
// Retain each source's last readable contribution independently. A failed read carries no
|
|
188
|
+
// replacement state, while a readable sibling can still move the effective stall snapshot.
|
|
189
|
+
export function nextStallObservation({ cache = {}, pr = {}, queue = {} } = {}) {
|
|
190
|
+
const previous = cache && typeof cache === 'object' ? cache : {}
|
|
191
|
+
const prReadable = pr.readable !== false
|
|
192
|
+
const queueReadable = queue.readable !== false
|
|
193
|
+
const nextPr = prReadable ? stallPrSnapshot(pr) : (previous.pr ?? null)
|
|
194
|
+
const nextQueue = queueReadable ? stallQueueSnapshot(queue) : (previous.queue ?? null)
|
|
195
|
+
|
|
196
|
+
if (!prReadable && !queueReadable) {
|
|
197
|
+
return {
|
|
198
|
+
cache: { pr: nextPr, queue: nextQueue, key: previous.key ?? null },
|
|
199
|
+
key: previous.key ?? null,
|
|
200
|
+
changed: false,
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
const key = observationKey({ pr: nextPr ?? {}, queue: nextQueue ?? {} })
|
|
205
|
+
return {
|
|
206
|
+
cache: { pr: nextPr, queue: nextQueue, key },
|
|
207
|
+
key,
|
|
208
|
+
changed: key !== (previous.key ?? null),
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
|
|
168
212
|
// A failed subprocess read (`readable: false`) carries no information about queue membership
|
|
169
213
|
// — it is not evidence the PR is still queued, and it is not evidence it left the queue
|
|
170
214
|
// either. Only a clean read that reports absence should move the counter that eventually
|
|
@@ -609,7 +653,7 @@ export async function runCli(argv) {
|
|
|
609
653
|
let seenQueued = args.seenQueued === true
|
|
610
654
|
let everActive = false
|
|
611
655
|
let missingActiveReads = 0
|
|
612
|
-
let
|
|
656
|
+
let stallObservationCache = null
|
|
613
657
|
let lastChangeMs = startedMs
|
|
614
658
|
let observations = 0
|
|
615
659
|
let phases = []
|
|
@@ -675,10 +719,10 @@ export async function runCli(argv) {
|
|
|
675
719
|
return verdict.outcome === 'MERGED' ? 0 : 4
|
|
676
720
|
}
|
|
677
721
|
|
|
678
|
-
const
|
|
679
|
-
|
|
722
|
+
const stallObservation = nextStallObservation({ cache: stallObservationCache, pr, queue })
|
|
723
|
+
stallObservationCache = stallObservation.cache
|
|
724
|
+
const changed = stallObservation.changed
|
|
680
725
|
if (changed) {
|
|
681
|
-
lastKey = key
|
|
682
726
|
lastChangeMs = Date.now()
|
|
683
727
|
}
|
|
684
728
|
|