voidmachine 6.0.0 → 7.0.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/core-assets/.claude-plugin/plugin.json +2 -2
- package/core-assets/PHILOSOPHY.md +18 -5
- package/core-assets/data/catalog.v3.json +29 -109
- package/core-assets/data/certification.json +1 -1
- package/core-assets/data/model.json +28 -52
- package/core-assets/hooks/_syntax-worker.cjs +1 -1
- package/core-assets/hooks/_void-hook.mjs +8 -6
- package/core-assets/hooks/tdd-guard.md +45 -88
- package/core-assets/hooks/viewport-screenshot-gate.sh +3 -3
- package/core-assets/packs/pack-monorepo/skills/void-dependency-direction/SKILL.md +27 -146
- package/core-assets/packs/pack-monorepo/skills/void-service-package/SKILL.md +5 -8
- package/core-assets/packs/pack-server/skills/void-webhook-handler-pattern/.source +4 -2
- package/core-assets/packs/pack-server/skills/void-webhook-handler-pattern/SKILL.md +32 -132
- package/core-assets/skills/void-accessibility/SKILL.md +2 -2
- package/core-assets/skills/void-async-safety/SKILL.md +37 -24
- package/core-assets/skills/void-autopilot/SKILL.md +17 -15
- package/core-assets/skills/void-autopilot/references/publication.md +82 -0
- package/core-assets/skills/void-code-review/SKILL.md +1 -1
- package/core-assets/skills/void-commit-discipline/SKILL.md +5 -11
- package/core-assets/skills/void-frontend-design/SKILL.md +2 -2
- package/core-assets/skills/void-hexagonal-architecture/SKILL.md +5 -5
- package/core-assets/skills/void-implement/SKILL.md +11 -5
- package/core-assets/skills/void-observability/SKILL.md +4 -4
- package/core-assets/skills/void-orchestrate/SKILL.md +57 -224
- package/core-assets/skills/void-testing/SKILL.md +4 -4
- package/core-assets/skills/void-verify/SKILL.md +1 -1
- package/core-assets/skills/void-verify/references/ci-admission.mjs +1 -1
- package/core-assets/skills/void-verify/references/ci-feedback.md +33 -4
- package/core-assets/templates/github/void-dependency-audit.yml +18 -2
- package/dist/main.js +2941 -2449
- package/package.json +2 -2
- package/core-assets/hooks/block-protected-push.sh +0 -81
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "harness",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "7.0.1",
|
|
4
4
|
"description": "VoidCorp universal craftsman skills (void-tdd, void-typescript-strict, void-hexagonal-architecture, void-domain-driven-design, void-functional, void-code-review, void-api-and-interface-design, void-source-driven-development, void-context, void-learn, void-decide, void-claude-md, void-observability, void-security-guidance, ...) plus 12 PreToolUse enforcement hooks (tdd-guard, no-any, protect-sensitive-files, block-dangerous-bash, no-ai-design-slop, ...) and PostToolUse/SessionStart lifecycle hooks (incl. trim-large-output token frugality), five read-only critics including doctrine-critic, native architecture/security/QA specialists, and the void-graph, void-doctor and void-audit gestures, which are skills like everything else.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "VoidCorp",
|
|
@@ -99,7 +99,7 @@
|
|
|
99
99
|
]
|
|
100
100
|
},
|
|
101
101
|
{
|
|
102
|
-
"matcher": "Edit|Write",
|
|
102
|
+
"matcher": "Edit|Write|Bash",
|
|
103
103
|
"hooks": [
|
|
104
104
|
{
|
|
105
105
|
"type": "command",
|
|
@@ -2,11 +2,24 @@
|
|
|
2
2
|
|
|
3
3
|
## Stack assumption
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
Void Machine is intended to be Cortex's action and execution system. Development
|
|
6
|
+
is its first specialty. Cortex owns intent, durable personal context and memory,
|
|
7
|
+
priorities, authorization and final acceptance; Machine plans, acts and verifies
|
|
8
|
+
within the mandate. Mission journals support execution and recovery, not a second
|
|
9
|
+
personal memory or global orchestrator. Knowledge is proposed to Cortex, never
|
|
10
|
+
independently memorized by Machine. Direct harness use remains supported.
|
|
11
|
+
|
|
12
|
+
The shipped development harness assumes **TypeScript + web**. Its `core/` is not
|
|
13
|
+
stack-agnostic: it carries TS strict, Zod, UI and code-quality conventions. The
|
|
14
|
+
coding rules below govern that specialty; they do not make Git, TDD or a developer
|
|
15
|
+
panel prerequisites for a non-code mission. Existing `packs/` specialize software
|
|
16
|
+
stacks, not arbitrary professions. No general Cortex integration is implied.
|
|
17
|
+
|
|
18
|
+
Prefer existing execution primitives and direct execution for simple capabilities.
|
|
19
|
+
Delegate only for useful expertise, independence or parallelism. Other specialties
|
|
20
|
+
can add their own capabilities and checks without rebuilding orchestration; a new
|
|
21
|
+
repository, service or framework needs a demonstrated requirement. Permissions,
|
|
22
|
+
security, honest evidence and bounded recovery remain applicable across domains.
|
|
10
23
|
|
|
11
24
|
## Three pillars
|
|
12
25
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"source": {
|
|
6
6
|
"kind": "adapter",
|
|
7
7
|
"version": "3.0.0-alpha.1",
|
|
8
|
-
"rootHash": "sha256:
|
|
8
|
+
"rootHash": "sha256:f1fe033cd7785501f43276bf1cb9e971d71928c082c836d0cd9c04db90efaa95"
|
|
9
9
|
},
|
|
10
10
|
"nodes": [
|
|
11
11
|
{
|
|
@@ -736,34 +736,6 @@
|
|
|
736
736
|
]
|
|
737
737
|
}
|
|
738
738
|
},
|
|
739
|
-
{
|
|
740
|
-
"id": "catalog:hook:hook:block-protected-push",
|
|
741
|
-
"kind": "hook",
|
|
742
|
-
"label": "block-protected-push",
|
|
743
|
-
"data": {
|
|
744
|
-
"legacy": {
|
|
745
|
-
"description": "",
|
|
746
|
-
"id": "hook:block-protected-push",
|
|
747
|
-
"lines": 81,
|
|
748
|
-
"name": "block-protected-push",
|
|
749
|
-
"pack": null,
|
|
750
|
-
"source": "packages/core/hooks/block-protected-push.sh",
|
|
751
|
-
"staticTokens": 971,
|
|
752
|
-
"type": "hook"
|
|
753
|
-
}
|
|
754
|
-
},
|
|
755
|
-
"provenance": {
|
|
756
|
-
"origin": "extracted",
|
|
757
|
-
"confidence": 1,
|
|
758
|
-
"sources": [
|
|
759
|
-
{
|
|
760
|
-
"kind": "path",
|
|
761
|
-
"ref": "packages/core/hooks/block-protected-push.sh",
|
|
762
|
-
"hashOrVersion": "catalog-v1"
|
|
763
|
-
}
|
|
764
|
-
]
|
|
765
|
-
}
|
|
766
|
-
},
|
|
767
739
|
{
|
|
768
740
|
"id": "catalog:hook:hook:boundary-direction-check",
|
|
769
741
|
"kind": "hook",
|
|
@@ -1476,7 +1448,7 @@
|
|
|
1476
1448
|
"name": "viewport-screenshot-gate",
|
|
1477
1449
|
"pack": null,
|
|
1478
1450
|
"source": "packages/core/hooks/viewport-screenshot-gate.sh",
|
|
1479
|
-
"staticTokens":
|
|
1451
|
+
"staticTokens": 570,
|
|
1480
1452
|
"type": "hook"
|
|
1481
1453
|
}
|
|
1482
1454
|
},
|
|
@@ -2166,7 +2138,7 @@
|
|
|
2166
2138
|
"label": "void-dependency-direction",
|
|
2167
2139
|
"data": {
|
|
2168
2140
|
"legacy": {
|
|
2169
|
-
"description": "
|
|
2141
|
+
"description": "Declare cross-package dependencies explicitly and preserve domain-owned ports. Use when crossing a workspace package boundary or fixing boundary-direction-check.",
|
|
2170
2142
|
"enforcement": {
|
|
2171
2143
|
"floor": "ci",
|
|
2172
2144
|
"inline": {
|
|
@@ -2183,7 +2155,7 @@
|
|
|
2183
2155
|
}
|
|
2184
2156
|
],
|
|
2185
2157
|
"id": "skill:pack-monorepo/void-dependency-direction",
|
|
2186
|
-
"lines":
|
|
2158
|
+
"lines": 41,
|
|
2187
2159
|
"name": "void-dependency-direction",
|
|
2188
2160
|
"owner": "folpe",
|
|
2189
2161
|
"pack": "pack-monorepo",
|
|
@@ -2192,7 +2164,7 @@
|
|
|
2192
2164
|
"codex"
|
|
2193
2165
|
],
|
|
2194
2166
|
"source": "packages/packs/pack-monorepo/skills/void-dependency-direction/SKILL.md",
|
|
2195
|
-
"staticTokens":
|
|
2167
|
+
"staticTokens": 535,
|
|
2196
2168
|
"type": "skill"
|
|
2197
2169
|
}
|
|
2198
2170
|
},
|
|
@@ -2279,7 +2251,7 @@
|
|
|
2279
2251
|
}
|
|
2280
2252
|
],
|
|
2281
2253
|
"id": "skill:pack-monorepo/void-service-package",
|
|
2282
|
-
"lines":
|
|
2254
|
+
"lines": 119,
|
|
2283
2255
|
"name": "void-service-package",
|
|
2284
2256
|
"owner": "folpe",
|
|
2285
2257
|
"pack": "pack-monorepo",
|
|
@@ -2288,7 +2260,7 @@
|
|
|
2288
2260
|
"codex"
|
|
2289
2261
|
],
|
|
2290
2262
|
"source": "packages/packs/pack-monorepo/skills/void-service-package/SKILL.md",
|
|
2291
|
-
"staticTokens":
|
|
2263
|
+
"staticTokens": 1444,
|
|
2292
2264
|
"type": "skill"
|
|
2293
2265
|
}
|
|
2294
2266
|
},
|
|
@@ -3270,7 +3242,7 @@
|
|
|
3270
3242
|
"label": "void-webhook-handler-pattern",
|
|
3271
3243
|
"data": {
|
|
3272
3244
|
"legacy": {
|
|
3273
|
-
"description": "Build a webhook handler with signature verification, idempotency, and dead-letter routing. Per-source patterns (Stripe, Resend, GitHub).
|
|
3245
|
+
"description": "Build a webhook handler with signature verification, idempotency, and dead-letter routing. Per-source patterns (Stripe, Resend, GitHub). Uses the shared async-safety contract.",
|
|
3274
3246
|
"enforcement": {
|
|
3275
3247
|
"floor": "ci",
|
|
3276
3248
|
"inline": {
|
|
@@ -3287,7 +3259,7 @@
|
|
|
3287
3259
|
}
|
|
3288
3260
|
],
|
|
3289
3261
|
"id": "skill:pack-server/void-webhook-handler-pattern",
|
|
3290
|
-
"lines":
|
|
3262
|
+
"lines": 105,
|
|
3291
3263
|
"name": "void-webhook-handler-pattern",
|
|
3292
3264
|
"owner": "folpe",
|
|
3293
3265
|
"pack": "pack-server",
|
|
@@ -3296,7 +3268,7 @@
|
|
|
3296
3268
|
"codex"
|
|
3297
3269
|
],
|
|
3298
3270
|
"source": "packages/packs/pack-server/skills/void-webhook-handler-pattern/SKILL.md",
|
|
3299
|
-
"staticTokens":
|
|
3271
|
+
"staticTokens": 1436,
|
|
3300
3272
|
"type": "skill"
|
|
3301
3273
|
}
|
|
3302
3274
|
},
|
|
@@ -3345,7 +3317,7 @@
|
|
|
3345
3317
|
"codex"
|
|
3346
3318
|
],
|
|
3347
3319
|
"source": "packages/core/skills/void-accessibility/SKILL.md",
|
|
3348
|
-
"staticTokens":
|
|
3320
|
+
"staticTokens": 2247,
|
|
3349
3321
|
"triggers": {
|
|
3350
3322
|
"extensions": [
|
|
3351
3323
|
"tsx"
|
|
@@ -3445,7 +3417,7 @@
|
|
|
3445
3417
|
}
|
|
3446
3418
|
],
|
|
3447
3419
|
"id": "skill:void-async-safety",
|
|
3448
|
-
"lines":
|
|
3420
|
+
"lines": 300,
|
|
3449
3421
|
"name": "void-async-safety",
|
|
3450
3422
|
"owner": "folpe",
|
|
3451
3423
|
"pack": null,
|
|
@@ -3454,7 +3426,7 @@
|
|
|
3454
3426
|
"codex"
|
|
3455
3427
|
],
|
|
3456
3428
|
"source": "packages/core/skills/void-async-safety/SKILL.md",
|
|
3457
|
-
"staticTokens":
|
|
3429
|
+
"staticTokens": 3424,
|
|
3458
3430
|
"triggers": {
|
|
3459
3431
|
"globs": [
|
|
3460
3432
|
"**/webhooks/**",
|
|
@@ -3551,7 +3523,7 @@
|
|
|
3551
3523
|
}
|
|
3552
3524
|
],
|
|
3553
3525
|
"id": "skill:void-autopilot",
|
|
3554
|
-
"lines":
|
|
3526
|
+
"lines": 397,
|
|
3555
3527
|
"name": "void-autopilot",
|
|
3556
3528
|
"owner": "folpe",
|
|
3557
3529
|
"pack": null,
|
|
@@ -3560,7 +3532,7 @@
|
|
|
3560
3532
|
"codex"
|
|
3561
3533
|
],
|
|
3562
3534
|
"source": "packages/core/skills/void-autopilot/SKILL.md",
|
|
3563
|
-
"staticTokens":
|
|
3535
|
+
"staticTokens": 7165,
|
|
3564
3536
|
"type": "skill"
|
|
3565
3537
|
}
|
|
3566
3538
|
},
|
|
@@ -3753,7 +3725,7 @@
|
|
|
3753
3725
|
"codex"
|
|
3754
3726
|
],
|
|
3755
3727
|
"source": "packages/core/skills/void-code-review/SKILL.md",
|
|
3756
|
-
"staticTokens":
|
|
3728
|
+
"staticTokens": 3443,
|
|
3757
3729
|
"type": "skill"
|
|
3758
3730
|
}
|
|
3759
3731
|
},
|
|
@@ -3776,7 +3748,7 @@
|
|
|
3776
3748
|
"data": {
|
|
3777
3749
|
"legacy": {
|
|
3778
3750
|
"activation": "always",
|
|
3779
|
-
"description": "Conventional Commits + mandatory \"why\" in body + scope + breaking-change marking.
|
|
3751
|
+
"description": "Conventional Commits + mandatory \"why\" in body + scope + breaking-change marking. Co-author trailer for AI pair. The git log is documentation. Use at every commit.",
|
|
3780
3752
|
"enforcement": {
|
|
3781
3753
|
"floor": "ci",
|
|
3782
3754
|
"inline": {
|
|
@@ -3793,7 +3765,7 @@
|
|
|
3793
3765
|
}
|
|
3794
3766
|
],
|
|
3795
3767
|
"id": "skill:void-commit-discipline",
|
|
3796
|
-
"lines":
|
|
3768
|
+
"lines": 204,
|
|
3797
3769
|
"name": "void-commit-discipline",
|
|
3798
3770
|
"owner": "folpe",
|
|
3799
3771
|
"pack": null,
|
|
@@ -3802,7 +3774,7 @@
|
|
|
3802
3774
|
"codex"
|
|
3803
3775
|
],
|
|
3804
3776
|
"source": "packages/core/skills/void-commit-discipline/SKILL.md",
|
|
3805
|
-
"staticTokens":
|
|
3777
|
+
"staticTokens": 1830,
|
|
3806
3778
|
"type": "skill"
|
|
3807
3779
|
}
|
|
3808
3780
|
},
|
|
@@ -4141,7 +4113,7 @@
|
|
|
4141
4113
|
"codex"
|
|
4142
4114
|
],
|
|
4143
4115
|
"source": "packages/core/skills/void-frontend-design/SKILL.md",
|
|
4144
|
-
"staticTokens":
|
|
4116
|
+
"staticTokens": 3622,
|
|
4145
4117
|
"triggers": {
|
|
4146
4118
|
"extensions": [
|
|
4147
4119
|
"tsx"
|
|
@@ -4292,7 +4264,7 @@
|
|
|
4292
4264
|
"codex"
|
|
4293
4265
|
],
|
|
4294
4266
|
"source": "packages/core/skills/void-hexagonal-architecture/SKILL.md",
|
|
4295
|
-
"staticTokens":
|
|
4267
|
+
"staticTokens": 2797,
|
|
4296
4268
|
"type": "skill"
|
|
4297
4269
|
}
|
|
4298
4270
|
},
|
|
@@ -4331,7 +4303,7 @@
|
|
|
4331
4303
|
}
|
|
4332
4304
|
],
|
|
4333
4305
|
"id": "skill:void-implement",
|
|
4334
|
-
"lines":
|
|
4306
|
+
"lines": 236,
|
|
4335
4307
|
"name": "void-implement",
|
|
4336
4308
|
"owner": "folpe",
|
|
4337
4309
|
"pack": null,
|
|
@@ -4340,7 +4312,7 @@
|
|
|
4340
4312
|
"codex"
|
|
4341
4313
|
],
|
|
4342
4314
|
"source": "packages/core/skills/void-implement/SKILL.md",
|
|
4343
|
-
"staticTokens":
|
|
4315
|
+
"staticTokens": 6683,
|
|
4344
4316
|
"type": "skill"
|
|
4345
4317
|
}
|
|
4346
4318
|
},
|
|
@@ -4638,7 +4610,7 @@
|
|
|
4638
4610
|
"codex"
|
|
4639
4611
|
],
|
|
4640
4612
|
"source": "packages/core/skills/void-observability/SKILL.md",
|
|
4641
|
-
"staticTokens":
|
|
4613
|
+
"staticTokens": 2277,
|
|
4642
4614
|
"type": "skill"
|
|
4643
4615
|
}
|
|
4644
4616
|
},
|
|
@@ -4660,7 +4632,7 @@
|
|
|
4660
4632
|
"label": "void-orchestrate",
|
|
4661
4633
|
"data": {
|
|
4662
4634
|
"legacy": {
|
|
4663
|
-
"description": "Delegate independent research and substantial implementation through native agents; choose context, isolation and bounded concurrency, collect results and preserve review evidence.
|
|
4635
|
+
"description": "Delegate independent research and substantial implementation through native agents; choose context, isolation and bounded concurrency, collect results and preserve review evidence. Publish observed worker lifecycle events.",
|
|
4664
4636
|
"enforcement": {
|
|
4665
4637
|
"floor": "ci",
|
|
4666
4638
|
"inline": {
|
|
@@ -4677,7 +4649,7 @@
|
|
|
4677
4649
|
}
|
|
4678
4650
|
],
|
|
4679
4651
|
"id": "skill:void-orchestrate",
|
|
4680
|
-
"lines":
|
|
4652
|
+
"lines": 203,
|
|
4681
4653
|
"name": "void-orchestrate",
|
|
4682
4654
|
"owner": "folpe",
|
|
4683
4655
|
"pack": null,
|
|
@@ -4686,7 +4658,7 @@
|
|
|
4686
4658
|
"codex"
|
|
4687
4659
|
],
|
|
4688
4660
|
"source": "packages/core/skills/void-orchestrate/SKILL.md",
|
|
4689
|
-
"staticTokens":
|
|
4661
|
+
"staticTokens": 3363,
|
|
4690
4662
|
"type": "skill"
|
|
4691
4663
|
}
|
|
4692
4664
|
},
|
|
@@ -5175,7 +5147,7 @@
|
|
|
5175
5147
|
"codex"
|
|
5176
5148
|
],
|
|
5177
5149
|
"source": "packages/core/skills/void-testing/SKILL.md",
|
|
5178
|
-
"staticTokens":
|
|
5150
|
+
"staticTokens": 3097,
|
|
5179
5151
|
"triggers": {
|
|
5180
5152
|
"globs": [
|
|
5181
5153
|
"**/*.test.ts",
|
|
@@ -5382,7 +5354,7 @@
|
|
|
5382
5354
|
"codex"
|
|
5383
5355
|
],
|
|
5384
5356
|
"source": "packages/core/skills/void-verify/SKILL.md",
|
|
5385
|
-
"staticTokens":
|
|
5357
|
+
"staticTokens": 1573,
|
|
5386
5358
|
"type": "skill"
|
|
5387
5359
|
}
|
|
5388
5360
|
},
|
|
@@ -9976,32 +9948,6 @@
|
|
|
9976
9948
|
]
|
|
9977
9949
|
}
|
|
9978
9950
|
},
|
|
9979
|
-
{
|
|
9980
|
-
"id": "catalog:edge:enforces:a8fea59d96b3c580bad2f20e1270adcc",
|
|
9981
|
-
"from": "catalog:hook:hook:block-protected-push",
|
|
9982
|
-
"to": "catalog:skill:skill:void-autopilot",
|
|
9983
|
-
"kind": "enforces",
|
|
9984
|
-
"data": {
|
|
9985
|
-
"legacy": {
|
|
9986
|
-
"evidence": "block-protected-push guards protected-branch pushes for commit-only autopilot workers — enforces autopilot",
|
|
9987
|
-
"from": "hook:block-protected-push",
|
|
9988
|
-
"kind": "enforces",
|
|
9989
|
-
"origin": "declared",
|
|
9990
|
-
"to": "skill:void-autopilot"
|
|
9991
|
-
}
|
|
9992
|
-
},
|
|
9993
|
-
"provenance": {
|
|
9994
|
-
"origin": "declared",
|
|
9995
|
-
"confidence": 1,
|
|
9996
|
-
"sources": [
|
|
9997
|
-
{
|
|
9998
|
-
"kind": "contract",
|
|
9999
|
-
"ref": "relations:v1",
|
|
10000
|
-
"hashOrVersion": "1"
|
|
10001
|
-
}
|
|
10002
|
-
]
|
|
10003
|
-
}
|
|
10004
|
-
},
|
|
10005
9951
|
{
|
|
10006
9952
|
"id": "catalog:edge:enforces:a93ab646df4cc9c4f91e034b6d04b19c",
|
|
10007
9953
|
"from": "catalog:hook:hook:llm-cost-precommit",
|
|
@@ -10106,32 +10052,6 @@
|
|
|
10106
10052
|
]
|
|
10107
10053
|
}
|
|
10108
10054
|
},
|
|
10109
|
-
{
|
|
10110
|
-
"id": "catalog:edge:enforces:ce43377ab0914630c15e058bf09473f7",
|
|
10111
|
-
"from": "catalog:hook:hook:viewport-screenshot-gate",
|
|
10112
|
-
"to": "catalog:skill:skill:void-accessibility",
|
|
10113
|
-
"kind": "enforces",
|
|
10114
|
-
"data": {
|
|
10115
|
-
"legacy": {
|
|
10116
|
-
"evidence": "viewport-screenshot-gate gates mobile+desktop viewports — enforces accessibility",
|
|
10117
|
-
"from": "hook:viewport-screenshot-gate",
|
|
10118
|
-
"kind": "enforces",
|
|
10119
|
-
"origin": "declared",
|
|
10120
|
-
"to": "skill:void-accessibility"
|
|
10121
|
-
}
|
|
10122
|
-
},
|
|
10123
|
-
"provenance": {
|
|
10124
|
-
"origin": "declared",
|
|
10125
|
-
"confidence": 1,
|
|
10126
|
-
"sources": [
|
|
10127
|
-
{
|
|
10128
|
-
"kind": "contract",
|
|
10129
|
-
"ref": "relations:v1",
|
|
10130
|
-
"hashOrVersion": "1"
|
|
10131
|
-
}
|
|
10132
|
-
]
|
|
10133
|
-
}
|
|
10134
|
-
},
|
|
10135
10055
|
{
|
|
10136
10056
|
"id": "catalog:edge:enforces:d649d23b7833407a2ca2fa785d9457f0",
|
|
10137
10057
|
"from": "catalog:hook:hook:block-dangerous-bash",
|