@ccoalm/ccl-skills 0.15.0 → 0.15.2

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.
Files changed (71) hide show
  1. package/README.md +3 -1
  2. package/dist/assets/marketplace/plugins/ccl-skills/agent-context/session-start.md +1 -1
  3. package/dist/assets/marketplace/plugins/ccl-skills/packages/opencode-plugin/ccl-skills.ts +80 -4
  4. package/dist/assets/marketplace/plugins/ccl-skills/packages/opencode-plugin/commands/ccl-install-skills.md +16 -4
  5. package/dist/assets/marketplace/plugins/ccl-skills/scripts/owner-dispatch/owner-dispatch.sh +13 -2
  6. package/dist/assets/marketplace/plugins/ccl-skills/scripts/owner-dispatch/test.sh +53 -0
  7. package/dist/assets/marketplace/plugins/ccl-skills/skills/app-cross-platform-dev/SKILL.md +2 -2
  8. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/SKILL.md +6 -5
  9. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/references/development-completion.md +26 -0
  10. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/references/staged-review-contract.md +37 -13
  11. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/AGENTS.md +5 -2
  12. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/codex_review.sh +77 -5
  13. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/kimi_packet_mcp.py +98 -4
  14. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/parse_cli_review.py +48 -1
  15. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/review_gate.py +237 -17
  16. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_cli_review_wrappers.sh +165 -11
  17. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_kimi_packet_mcp.py +143 -0
  18. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_review_client_compat.py +572 -0
  19. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_review_gate.sh +65 -0
  20. package/dist/assets/marketplace/plugins/ccl-skills/skills/defect-diagnosis/SKILL.md +3 -1
  21. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/SKILL.md +1 -1
  22. package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/SKILL.md +2 -0
  23. package/dist/assets/marketplace/plugins/ccl-skills/skills/miniapp-product-dev/SKILL.md +1 -1
  24. package/dist/assets/marketplace/plugins/ccl-skills/skills/multi-agent-delegation/SKILL.md +1 -1
  25. package/dist/assets/marketplace/plugins/ccl-skills/skills/nodejs-service-dev/SKILL.md +2 -0
  26. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/SKILL.md +7 -5
  27. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/references/alerting-and-on-call.md +8 -0
  28. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/SKILL.md +3 -1
  29. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/SKILL.md +16 -14
  30. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/dual-sidecar-and-traffic-config-center.md +1 -1
  31. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/grpc-authority-workaround.md +40 -83
  32. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/mesh-architecture.md +2 -2
  33. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/retry-timeout-circuit-breaker.md +44 -37
  34. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/service-discovery-recipe.md +1 -1
  35. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/SKILL.md +7 -7
  36. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/delivery-lifecycle.md +1 -1
  37. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/design-review-gate-mechanics.md +1 -1
  38. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/pre-final-continuation-gate.md +20 -11
  39. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/refactoring-discipline.md +7 -1
  40. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/SKILL.md +1 -1
  41. package/dist/assets/marketplace/plugins/ccl-skills/skills/requirement-scope/SKILL.md +8 -5
  42. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/SKILL.md +2 -2
  43. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/dual-track-review-gate.md +17 -17
  44. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/external-practice-controls.md +3 -3
  45. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/harness-patterns-and-eval.md +4 -4
  46. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/resume-paused-delivery.md +3 -3
  47. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/source-register.md +24 -0
  48. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/eval-golden-trace.rb +31 -7
  49. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/impact-chain-gate.rb +74 -3
  50. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/skill-behavior-eval.py +103 -21
  51. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_ai_coding_implementation_gates.sh +83 -48
  52. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_body_compliance_grading.sh +80 -2
  53. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_impact_chain_refscripts.sh +74 -1
  54. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_controlled_escalation_pins.sh +3 -2
  55. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_eval_runtime.py +428 -0
  56. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_validate_extraction_review_state.sh +190 -2
  57. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/validate_extraction_review_state.py +106 -4
  58. package/dist/assets/marketplace/plugins/ccl-skills/skills/terminal-cli-dev/SKILL.md +1 -1
  59. package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/SKILL.md +3 -1
  60. package/dist/assets/marketplace/plugins/ccl-skills/skills/web-react-dev/SKILL.md +1 -1
  61. package/dist/assets/release.json +87 -67
  62. package/dist/claude-adapter.js +14 -7
  63. package/dist/codex-host.d.ts +2 -4
  64. package/dist/codex-host.js +40 -19
  65. package/dist/host-probe.d.ts +27 -0
  66. package/dist/host-probe.js +51 -0
  67. package/dist/opencode-adapter.js +24 -19
  68. package/dist/operations.js +34 -8
  69. package/dist/unified.d.ts +1 -1
  70. package/dist/unified.js +18 -9
  71. package/package.json +1 -1
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schema": 1,
3
3
  "npmPackage": "@ccoalm/ccl-skills",
4
- "version": "0.15.0",
5
- "sourceCommit": "7c3a2fbb2253f218e26acdb729edf16481982b26",
4
+ "version": "0.15.2",
5
+ "sourceCommit": "ea649086e8f1c51e81364b2a94b08fadc1128365",
6
6
  "sourceState": "clean",
7
7
  "files": [
8
8
  {
@@ -42,7 +42,7 @@
42
42
  },
43
43
  {
44
44
  "path": "marketplace/plugins/ccl-skills/agent-context/session-start.md",
45
- "sha256": "0090ac4edff7e5d609190b419ae95e3af922d6b62db73516818a1468172b9cd2",
45
+ "sha256": "aa33454a670eec68a01f9b510c40473e8b5f46280352f8a24f1b940f254727a8",
46
46
  "mode": 420
47
47
  },
48
48
  {
@@ -162,12 +162,12 @@
162
162
  },
163
163
  {
164
164
  "path": "marketplace/plugins/ccl-skills/packages/opencode-plugin/ccl-skills.ts",
165
- "sha256": "6480da2f8a293209cf4e2f8c290bf7b7b6e007a1ff4fd3c272d3408239b56ca9",
165
+ "sha256": "4cc8c560cbbcfe9c7723c9986ea93645ca1926503a0ea80ae93af80f0eabd10e",
166
166
  "mode": 420
167
167
  },
168
168
  {
169
169
  "path": "marketplace/plugins/ccl-skills/packages/opencode-plugin/commands/ccl-install-skills.md",
170
- "sha256": "449d9bee6e89b66c7247bf27c417967fa0a7d8b56e51098a49c57e5a4ad67c3a",
170
+ "sha256": "323c5055bf608ac70fffac47d8581a3e31c3f21489fd325983f022511e711a55",
171
171
  "mode": 420
172
172
  },
173
173
  {
@@ -197,7 +197,7 @@
197
197
  },
198
198
  {
199
199
  "path": "marketplace/plugins/ccl-skills/scripts/owner-dispatch/owner-dispatch.sh",
200
- "sha256": "cb033d816d33ea43a71b1a5a7e2a056cf95f31f6dabff9e6bece27a1d94e15ee",
200
+ "sha256": "76efb7c5d98b8944aaee11c537aabc82259faddfa6b60bb2bfabdbf7d0602ce2",
201
201
  "mode": 493
202
202
  },
203
203
  {
@@ -207,7 +207,7 @@
207
207
  },
208
208
  {
209
209
  "path": "marketplace/plugins/ccl-skills/scripts/owner-dispatch/test.sh",
210
- "sha256": "d8d9600bd37608c13bf8ef91e07302f30a0435ccfd634c5365361f18b74030cc",
210
+ "sha256": "df5d23aef020066b427d0424c200eb64863427ea03a90de84ba5c3fbe76d450d",
211
211
  "mode": 493
212
212
  },
213
213
  {
@@ -262,7 +262,7 @@
262
262
  },
263
263
  {
264
264
  "path": "marketplace/plugins/ccl-skills/skills/app-cross-platform-dev/SKILL.md",
265
- "sha256": "072a5d9562e4ece15524414c29730f26c3d310590684a3554e974aa36975dae8",
265
+ "sha256": "3f34d61f2b15ac4f457ca6e0d5e80c73b010c94a9fb3d9280669e42230c8bbd4",
266
266
  "mode": 420
267
267
  },
268
268
  {
@@ -275,6 +275,11 @@
275
275
  "sha256": "702a372d54b70d9230ed25f0d8096e6762acc179eb1e7febfde9e5ebd343c0d3",
276
276
  "mode": 420
277
277
  },
278
+ {
279
+ "path": "marketplace/plugins/ccl-skills/skills/code-review/references/development-completion.md",
280
+ "sha256": "ff9d6d77062b60563450ef40efebc0fbb365318dbb7bebcc7dbb037802491a11",
281
+ "mode": 420
282
+ },
278
283
  {
279
284
  "path": "marketplace/plugins/ccl-skills/skills/code-review/references/manual-invocation-and-prompts.md",
280
285
  "sha256": "a235a3dfb81dd757ce6e42e82cbc7ec428268ccc290807f5f4bbe07798b33e53",
@@ -282,7 +287,7 @@
282
287
  },
283
288
  {
284
289
  "path": "marketplace/plugins/ccl-skills/skills/code-review/references/staged-review-contract.md",
285
- "sha256": "fc661c17955886936f49b4b99a760e896cdfcbad925c2671affae50108f6ade7",
290
+ "sha256": "dfa8a7956c7a03ab1c3ff12159b122277f35eb5f6310ef6f5ba0604aae380140",
286
291
  "mode": 420
287
292
  },
288
293
  {
@@ -292,7 +297,7 @@
292
297
  },
293
298
  {
294
299
  "path": "marketplace/plugins/ccl-skills/skills/code-review/scripts/AGENTS.md",
295
- "sha256": "8c0f7ed10323f19a40bec905672bc1425c8ede15b98b44a5132fd45ab07e03e2",
300
+ "sha256": "1b7831a9bf483285682d7d751cdbb4bbc0eb43868fb3ea94904388f50fe50f31",
296
301
  "mode": 420
297
302
  },
298
303
  {
@@ -312,7 +317,7 @@
312
317
  },
313
318
  {
314
319
  "path": "marketplace/plugins/ccl-skills/skills/code-review/scripts/codex_review.sh",
315
- "sha256": "e0465ba2ec017beef395491c39f6a1ad4ddd7e648ae48f050bbe34607835601c",
320
+ "sha256": "25ddfdbc658a1dba22fca49e317ee37a8305341fc5e5474ffb95451b6a94a058",
316
321
  "mode": 493
317
322
  },
318
323
  {
@@ -332,7 +337,7 @@
332
337
  },
333
338
  {
334
339
  "path": "marketplace/plugins/ccl-skills/skills/code-review/scripts/kimi_packet_mcp.py",
335
- "sha256": "aed1cbfd65f71b39408cabf81560cd9a98aa691ba77f1b8447a09f8ed58c694c",
340
+ "sha256": "99a12a0fa71a7b31c6fd4e877dd9eba9b1fe4ca57644db573bf7f4febfd21e71",
336
341
  "mode": 420
337
342
  },
338
343
  {
@@ -352,7 +357,7 @@
352
357
  },
353
358
  {
354
359
  "path": "marketplace/plugins/ccl-skills/skills/code-review/scripts/parse_cli_review.py",
355
- "sha256": "b0ff264305685736946358cf1d4d321d5f1ea4f4dddc11cda9d857d112bf853c",
360
+ "sha256": "2134c4dd5fc5a2086b2ff95f6289d4e8c0c064671a5a0e7272e79a187b17f259",
356
361
  "mode": 493
357
362
  },
358
363
  {
@@ -372,7 +377,7 @@
372
377
  },
373
378
  {
374
379
  "path": "marketplace/plugins/ccl-skills/skills/code-review/scripts/review_gate.py",
375
- "sha256": "56e1eaf01a4af639260cfb7193dc6c14eef9bd883751e4831f7e4925db11af81",
380
+ "sha256": "b87410280137ace6340c8ee147c89999069e6d72d8913c8d4dc78e6f150e7152",
376
381
  "mode": 493
377
382
  },
378
383
  {
@@ -407,7 +412,7 @@
407
412
  },
408
413
  {
409
414
  "path": "marketplace/plugins/ccl-skills/skills/code-review/scripts/test_cli_review_wrappers.sh",
410
- "sha256": "849e3d56afd9b442c1b1fac33fba4751295f94a774b31adf44ea11a894c913e8",
415
+ "sha256": "3939d9751665987312d7c36489913205adaaaebece05e38248ebc24526e9e2b8",
411
416
  "mode": 493
412
417
  },
413
418
  {
@@ -432,7 +437,7 @@
432
437
  },
433
438
  {
434
439
  "path": "marketplace/plugins/ccl-skills/skills/code-review/scripts/test_kimi_packet_mcp.py",
435
- "sha256": "24e065c1167dba62977f1d2849f1f0661ad7ccb0827328f078d3ff37c74f3890",
440
+ "sha256": "060587ed35fafc23403b360a11cf34cf30cdfa5338b63bbae35337e8a54b302f",
436
441
  "mode": 420
437
442
  },
438
443
  {
@@ -462,7 +467,7 @@
462
467
  },
463
468
  {
464
469
  "path": "marketplace/plugins/ccl-skills/skills/code-review/scripts/test_review_client_compat.py",
465
- "sha256": "56a139f88e1f56ea7b7d7b8431caf3abf3dc290b50f924a30cc4c67ad7adb0fc",
470
+ "sha256": "fc54b0564a0e46eafced3894f9e70b98ac6ce6e983eb225410b3625246fb20f4",
466
471
  "mode": 420
467
472
  },
468
473
  {
@@ -477,7 +482,7 @@
477
482
  },
478
483
  {
479
484
  "path": "marketplace/plugins/ccl-skills/skills/code-review/scripts/test_review_gate.sh",
480
- "sha256": "51ea90cd42ce9661f84c1a0f5daee4f2a17072b5f0cdfa5d3c0e27a0ec2af235",
485
+ "sha256": "55366dc96415e175c1b9a23f6fa6e118679bb656ed96c818f4a534ca14826ef0",
481
486
  "mode": 493
482
487
  },
483
488
  {
@@ -497,7 +502,7 @@
497
502
  },
498
503
  {
499
504
  "path": "marketplace/plugins/ccl-skills/skills/code-review/SKILL.md",
500
- "sha256": "e4ae36e1d4cf46559cbcd4fcacae00dce3ca538fb05dc92df8fd78b4a6ae694c",
505
+ "sha256": "b057a175a34dbff8b4352429548c38cbcaf16c0b3f2be59b0c6216471ce28d9a",
501
506
  "mode": 420
502
507
  },
503
508
  {
@@ -517,7 +522,7 @@
517
522
  },
518
523
  {
519
524
  "path": "marketplace/plugins/ccl-skills/skills/defect-diagnosis/SKILL.md",
520
- "sha256": "73a01985225c4c790f8da6ab611defc03d2c3dcca09854a8cff9bbd78a2b31d8",
525
+ "sha256": "a0a070d7b28278fc22765b001955bb7ee7bcddb233856c6a4414c161d401843a",
521
526
  "mode": 420
522
527
  },
523
528
  {
@@ -822,7 +827,7 @@
822
827
  },
823
828
  {
824
829
  "path": "marketplace/plugins/ccl-skills/skills/go-microservice-dev/SKILL.md",
825
- "sha256": "e769f91d708b635b1987bfa43343ed0c31734ae66997f2643e00194cb7bea81c",
830
+ "sha256": "acb5e8ad070b99c4b5afc4761335598876e5ae6a79999e9703f0cc84cbb96dab",
826
831
  "mode": 420
827
832
  },
828
833
  {
@@ -947,7 +952,7 @@
947
952
  },
948
953
  {
949
954
  "path": "marketplace/plugins/ccl-skills/skills/llm-inference-integration/SKILL.md",
950
- "sha256": "6877a538dc3292e6ce6b279a43b3e4080d4d9e05b5e971d425547899a1fe515b",
955
+ "sha256": "f79872e12ba613d1943832acd3fbf762e5ed249e88215d6a6dad3598a5d4a642",
951
956
  "mode": 420
952
957
  },
953
958
  {
@@ -997,7 +1002,7 @@
997
1002
  },
998
1003
  {
999
1004
  "path": "marketplace/plugins/ccl-skills/skills/miniapp-product-dev/SKILL.md",
1000
- "sha256": "d47b687c9b38f0bbec134cc6793ba041d08606f9798ce0573c630d1a95887818",
1005
+ "sha256": "c8d4797cd301528ee64b5ece109e305cc1adbf6a410b016d775c56d9f60c55a7",
1001
1006
  "mode": 420
1002
1007
  },
1003
1008
  {
@@ -1012,7 +1017,7 @@
1012
1017
  },
1013
1018
  {
1014
1019
  "path": "marketplace/plugins/ccl-skills/skills/multi-agent-delegation/SKILL.md",
1015
- "sha256": "26bcb8fd221709a3d2bb8d25121493beda4db8c1f738cbd0cdb37b8fc3e4c6e2",
1020
+ "sha256": "f9bcfe2f8e3b15b69d7a33bf2b1a55af4ec84c67137b5915e2f4002880e7f637",
1016
1021
  "mode": 420
1017
1022
  },
1018
1023
  {
@@ -1077,7 +1082,7 @@
1077
1082
  },
1078
1083
  {
1079
1084
  "path": "marketplace/plugins/ccl-skills/skills/nodejs-service-dev/SKILL.md",
1080
- "sha256": "96206c6babadafb509e37339e95ad8d4bf96e70acf837ab8ac9cbd02a7e2a62f",
1085
+ "sha256": "2114994ffe8d5ee3d152f17c9c3eca34d72b12d7b1fee6af6ea5131386bd95e2",
1081
1086
  "mode": 420
1082
1087
  },
1083
1088
  {
@@ -1087,7 +1092,7 @@
1087
1092
  },
1088
1093
  {
1089
1094
  "path": "marketplace/plugins/ccl-skills/skills/platform-observability/references/alerting-and-on-call.md",
1090
- "sha256": "e1363c5ca688cb596e1a96127dd14730cd679cd6fb7344c33b6acfac6f0258dc",
1095
+ "sha256": "8124c37f30783970ce681ba1aa05cfe507f0054640ed68b19f89da32a35105ce",
1091
1096
  "mode": 420
1092
1097
  },
1093
1098
  {
@@ -1132,7 +1137,7 @@
1132
1137
  },
1133
1138
  {
1134
1139
  "path": "marketplace/plugins/ccl-skills/skills/platform-observability/SKILL.md",
1135
- "sha256": "6cec53c15ec23b7bd5ef060fb5442667924593fdcb72e6b4f2866eef3343dfd0",
1140
+ "sha256": "133383e47751d715a6ae90084ef1375ba73f63b9f57349a0fa261fa597b04b43",
1136
1141
  "mode": 420
1137
1142
  },
1138
1143
  {
@@ -1207,7 +1212,7 @@
1207
1212
  },
1208
1213
  {
1209
1214
  "path": "marketplace/plugins/ccl-skills/skills/platform-release-engineering/SKILL.md",
1210
- "sha256": "04c107c45a2acabb4aea65ce996a472064af68355de4929a6b8f731f9f53cd8e",
1215
+ "sha256": "207202ecaa0038d29b23ec23b75cf9a80650d1631f746e089120c0d5fbf869e4",
1211
1216
  "mode": 420
1212
1217
  },
1213
1218
  {
@@ -1217,7 +1222,7 @@
1217
1222
  },
1218
1223
  {
1219
1224
  "path": "marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/dual-sidecar-and-traffic-config-center.md",
1220
- "sha256": "a08191d88586922182e83183282f9ef6f94c46d2097de05179f689dd6e2761ed",
1225
+ "sha256": "9f929f6b9bdc03c88f415cf99169d1b7bd508a49a0a80d9f2da2ffc4e079f4a7",
1221
1226
  "mode": 420
1222
1227
  },
1223
1228
  {
@@ -1227,7 +1232,7 @@
1227
1232
  },
1228
1233
  {
1229
1234
  "path": "marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/grpc-authority-workaround.md",
1230
- "sha256": "f936a8f95c1fad672fcdaadb723af2ea316fbd0dc0270c9f77b846e7d8704bdb",
1235
+ "sha256": "40c7c658a86e08afd47aa7e6cecdf71e2af08ef6c7b5768c5571e17f78b55b32",
1231
1236
  "mode": 420
1232
1237
  },
1233
1238
  {
@@ -1237,7 +1242,7 @@
1237
1242
  },
1238
1243
  {
1239
1244
  "path": "marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/mesh-architecture.md",
1240
- "sha256": "4eaa070fb7669b5be1e33f267558f49f09d9102d07906efb579570adbf9a2d4e",
1245
+ "sha256": "41b7e324969a3d21065fa9139ecabfda86439a5b02eeb18bac4300c1de0e6767",
1241
1246
  "mode": 420
1242
1247
  },
1243
1248
  {
@@ -1252,7 +1257,7 @@
1252
1257
  },
1253
1258
  {
1254
1259
  "path": "marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/retry-timeout-circuit-breaker.md",
1255
- "sha256": "4158a44920b029352eff86ca1eb555218073b69b0cc58ea39286745fee312d08",
1260
+ "sha256": "936383132340fec08539ded8cce57a9d3027af3b90eab6673af562b5c358a412",
1256
1261
  "mode": 420
1257
1262
  },
1258
1263
  {
@@ -1272,12 +1277,12 @@
1272
1277
  },
1273
1278
  {
1274
1279
  "path": "marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/service-discovery-recipe.md",
1275
- "sha256": "6adefb920ae5b0b2496ef5feed9b1b5c44c944111da0bd282d0afecbd30de599",
1280
+ "sha256": "e0f46825eeb423505e44d2deb7d3c4abecd859bc7b61c304085b02dc2a798533",
1276
1281
  "mode": 420
1277
1282
  },
1278
1283
  {
1279
1284
  "path": "marketplace/plugins/ccl-skills/skills/platform-service-connectivity/SKILL.md",
1280
- "sha256": "17c0927bfaaf723480a73f962d9c5675fe41710e487ae8c8a62eaf6b2617c3fa",
1285
+ "sha256": "2d161e91932695d0db762c0c7a19dca458952ad748bf6ea1f98ea6d44c872be9",
1281
1286
  "mode": 420
1282
1287
  },
1283
1288
  {
@@ -1332,12 +1337,12 @@
1332
1337
  },
1333
1338
  {
1334
1339
  "path": "marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/delivery-lifecycle.md",
1335
- "sha256": "17b5f7eee4049894cb855de31878abfda1196a20278a0ccd5c03c87ecf4d720c",
1340
+ "sha256": "3cf969368a7c0343c74ea891fbf78dde8f63295e73c7121a700757df9d0ab1e5",
1336
1341
  "mode": 420
1337
1342
  },
1338
1343
  {
1339
1344
  "path": "marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/design-review-gate-mechanics.md",
1340
- "sha256": "1e769a05f18491db1ec6dad66769f187f5319b45323f7a215d5de8208f7f3f3f",
1345
+ "sha256": "7852dd2f0a6a32b6f6fddd4f4884e8701c54be4b738f6520370b9c4826424c7c",
1341
1346
  "mode": 420
1342
1347
  },
1343
1348
  {
@@ -1397,7 +1402,7 @@
1397
1402
  },
1398
1403
  {
1399
1404
  "path": "marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/pre-final-continuation-gate.md",
1400
- "sha256": "e1987eed7a5788c1a3fcb94d7fdc68176bbce783fdca1fd468750296f67ab35c",
1405
+ "sha256": "891e887b6d07689f2a168fed93d82ed601e1147faa2959a9ba046e7eedc04d78",
1401
1406
  "mode": 420
1402
1407
  },
1403
1408
  {
@@ -1422,7 +1427,7 @@
1422
1427
  },
1423
1428
  {
1424
1429
  "path": "marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/refactoring-discipline.md",
1425
- "sha256": "4f455b536fcd386997917d850500bbbec6d706019703ba1ad78e95c25cd2d737",
1430
+ "sha256": "f6749284dce4a8e9bcf57a7200e16442a36ddb9ce7cb720df98b0e7f44fbf60b",
1426
1431
  "mode": 420
1427
1432
  },
1428
1433
  {
@@ -1472,7 +1477,7 @@
1472
1477
  },
1473
1478
  {
1474
1479
  "path": "marketplace/plugins/ccl-skills/skills/product-rd-workflow/SKILL.md",
1475
- "sha256": "3e0f6d5434294acb66896b936f007d9bef67e608b34728b99a7d2ef07122e690",
1480
+ "sha256": "bf87f0f199ca93916ab3e22d5ef4fab624c336aab7374fec350a3f5242c03878",
1476
1481
  "mode": 420
1477
1482
  },
1478
1483
  {
@@ -1847,7 +1852,7 @@
1847
1852
  },
1848
1853
  {
1849
1854
  "path": "marketplace/plugins/ccl-skills/skills/python-service-dev/SKILL.md",
1850
- "sha256": "13549ba3bf78a7014af32be7abac40860d905e06d389b92281938b97dbc481cd",
1855
+ "sha256": "3807070752702df5a15ad330edaf50e0de9f6fbbd99b6324fc65a30d8f07888d",
1851
1856
  "mode": 420
1852
1857
  },
1853
1858
  {
@@ -1977,7 +1982,7 @@
1977
1982
  },
1978
1983
  {
1979
1984
  "path": "marketplace/plugins/ccl-skills/skills/requirement-scope/SKILL.md",
1980
- "sha256": "45c277944ab2129ee6ff50cd135b527eee8f48514ba1957fd7bc4d929ca5e8f8",
1985
+ "sha256": "31f46a35743b8da351f5a517a3d15a0cbe92ca4f0b778d21aec6d0b5574a9546",
1981
1986
  "mode": 420
1982
1987
  },
1983
1988
  {
@@ -2022,7 +2027,7 @@
2022
2027
  },
2023
2028
  {
2024
2029
  "path": "marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/dual-track-review-gate.md",
2025
- "sha256": "9deda45197efe202db5b3ed1d603aa1e97090476558a254b4612c7c6ab7c95ee",
2030
+ "sha256": "2cd2312cc155ca1c1f3acc1f1d24b0cc1e34e37404fe21212f0d87c09eff6e0b",
2026
2031
  "mode": 420
2027
2032
  },
2028
2033
  {
@@ -2042,7 +2047,7 @@
2042
2047
  },
2043
2048
  {
2044
2049
  "path": "marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/external-practice-controls.md",
2045
- "sha256": "105606307b875fab01dacf8e7492966de6148fe45ae8336b2fbc95cce03c336b",
2050
+ "sha256": "98c8ef6d9250f96feb9e996e108ca473475c9b690c7a0efc57ed5a30e2665d2c",
2046
2051
  "mode": 420
2047
2052
  },
2048
2053
  {
@@ -2062,7 +2067,7 @@
2062
2067
  },
2063
2068
  {
2064
2069
  "path": "marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/harness-patterns-and-eval.md",
2065
- "sha256": "2149bf40adc0eabdd7d0ad4ebc7938288e6c74050ca979d9227f5d9221bec8cb",
2070
+ "sha256": "fe189fde59c7550bef2eac0db8f1cbe43d9e36b4ed539cbb7b7441461f090af2",
2066
2071
  "mode": 420
2067
2072
  },
2068
2073
  {
@@ -2097,7 +2102,7 @@
2097
2102
  },
2098
2103
  {
2099
2104
  "path": "marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/resume-paused-delivery.md",
2100
- "sha256": "c08412da42b854f6d4e50581988e34cb0cab5914e4ea1e776a946993f185048f",
2105
+ "sha256": "3b43de0e81d0a43fb5ba40e97de755bd032f1b5417bbbdd9ca2a4cd2c5c1c65d",
2101
2106
  "mode": 420
2102
2107
  },
2103
2108
  {
@@ -2127,7 +2132,7 @@
2127
2132
  },
2128
2133
  {
2129
2134
  "path": "marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/source-register.md",
2130
- "sha256": "244615335846d51d47798dc428c543ff7ae03b09026deda649f8a2ba07ca9f2d",
2135
+ "sha256": "a622745a40ca220f5f77dc3c84a94f433c609adf27aed775af82df26a52503a4",
2131
2136
  "mode": 420
2132
2137
  },
2133
2138
  {
@@ -2207,7 +2212,7 @@
2207
2212
  },
2208
2213
  {
2209
2214
  "path": "marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/eval-golden-trace.rb",
2210
- "sha256": "14c3c7c1437c6d70c5ab48ac8b1312fab3a421de31b110da84fa0528762b924c",
2215
+ "sha256": "70d0b824c79f701606f752e815fbe7b643324b6f56d601e4e55b3ceae578ad62",
2211
2216
  "mode": 493
2212
2217
  },
2213
2218
  {
@@ -2247,7 +2252,7 @@
2247
2252
  },
2248
2253
  {
2249
2254
  "path": "marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/impact-chain-gate.rb",
2250
- "sha256": "b24246416f7b26bf7d1e262c388dc4a752135193a8ac2ca06a7e1e6fb1caca85",
2255
+ "sha256": "c2a4816b7c7043a7868c0ced2b7a4046b5aba088dda622ffec49360306f59ce1",
2251
2256
  "mode": 493
2252
2257
  },
2253
2258
  {
@@ -2277,7 +2282,7 @@
2277
2282
  },
2278
2283
  {
2279
2284
  "path": "marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/skill-behavior-eval.py",
2280
- "sha256": "c6e82dbbf5b9ea8ac05e38cba1f9404cde4c6f9609bfef8fd645ea3c61d1647e",
2285
+ "sha256": "d65c8a76ae6d4ceacbe16885abc3e0c51d6fd152d491437db7e1e8fc9988ad08",
2281
2286
  "mode": 493
2282
2287
  },
2283
2288
  {
@@ -2292,7 +2297,7 @@
2292
2297
  },
2293
2298
  {
2294
2299
  "path": "marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_ai_coding_implementation_gates.sh",
2295
- "sha256": "16b0b0c04a803d0c9b05ac47a076c5b879f98560da8de4133721019a42387d93",
2300
+ "sha256": "972785d9cb4ef21829c6b7a10ec12af103c448dbcc7f9d619bae552f54282cb4",
2296
2301
  "mode": 493
2297
2302
  },
2298
2303
  {
@@ -2302,12 +2307,12 @@
2302
2307
  },
2303
2308
  {
2304
2309
  "path": "marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_body_compliance_grading.sh",
2305
- "sha256": "8789cf94e8a7b386e6ae27d0d281d1d5761f0ee08f39dc58269acab7b46232a9",
2310
+ "sha256": "d3a37c4ae39492325f71940099fe965862b6766a9b8ec3a3b5db3d8e59f7057a",
2306
2311
  "mode": 493
2307
2312
  },
2308
2313
  {
2309
2314
  "path": "marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_impact_chain_refscripts.sh",
2310
- "sha256": "8c7ddf91ab9987bd8aa34eb204e420a9e930270bcf877fb743cc1f1a0f3a89e4",
2315
+ "sha256": "dbc090be57b6f14795e6b7dcd79abe83bb1efa3d2f090040c4b7225b4e10d2fa",
2311
2316
  "mode": 493
2312
2317
  },
2313
2318
  {
@@ -2372,7 +2377,7 @@
2372
2377
  },
2373
2378
  {
2374
2379
  "path": "marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_controlled_escalation_pins.sh",
2375
- "sha256": "24cc8934495fd7a5e9badff06a84b82cd49a0ec2900e791b7ea8fdefa8386b99",
2380
+ "sha256": "ccbac8859cdd2eb44384b871ca61905790332167137bc9cb414177d1c1923ae9",
2376
2381
  "mode": 493
2377
2382
  },
2378
2383
  {
@@ -2405,6 +2410,11 @@
2405
2410
  "sha256": "8ddd704eac6f4ffdc5d5b6566f9a2b3d5e940b944af448586dfec0e920a54ee5",
2406
2411
  "mode": 493
2407
2412
  },
2413
+ {
2414
+ "path": "marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_eval_runtime.py",
2415
+ "sha256": "b40fb184ba6e98d767f3d9c8e9c7d20a834bba79e644b1626c6071aa777d3f60",
2416
+ "mode": 420
2417
+ },
2408
2418
  {
2409
2419
  "path": "marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_extraction_review_gate.sh",
2410
2420
  "sha256": "b3284aef648eb0b6bde2cd6084b4ac9b7d060e3fb244dace59fe491bab0e05e2",
@@ -2542,7 +2552,7 @@
2542
2552
  },
2543
2553
  {
2544
2554
  "path": "marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_validate_extraction_review_state.sh",
2545
- "sha256": "8bce4771a225860356aa3301aee09dc064a0491a20da6273a3c3aa9719d48297",
2555
+ "sha256": "ea086686d130f3fb4b3969973f306744237caa64b8f9bfa8508b17afc1a7de38",
2546
2556
  "mode": 493
2547
2557
  },
2548
2558
  {
@@ -2562,7 +2572,7 @@
2562
2572
  },
2563
2573
  {
2564
2574
  "path": "marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/validate_extraction_review_state.py",
2565
- "sha256": "234a501a93f2b820081d8aea7bf3a3750bd865455b1217d641e5960931412ae7",
2575
+ "sha256": "2c1c9c23ae4df7221b37e06f43e5cc255a2df8a5abcd8b8eb0baf0cb2aad9ed4",
2566
2576
  "mode": 493
2567
2577
  },
2568
2578
  {
@@ -2572,7 +2582,7 @@
2572
2582
  },
2573
2583
  {
2574
2584
  "path": "marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/SKILL.md",
2575
- "sha256": "5d46b33dcc0c84ec4cac51bdea93aba643427f88dcd7ee3930b3ecd2132bc4f0",
2585
+ "sha256": "0897aac3ad4dcad4cab7671f914bb3bd960e4625176d006b632ab0d7cbdbde6a",
2576
2586
  "mode": 420
2577
2587
  },
2578
2588
  {
@@ -2597,7 +2607,7 @@
2597
2607
  },
2598
2608
  {
2599
2609
  "path": "marketplace/plugins/ccl-skills/skills/terminal-cli-dev/SKILL.md",
2600
- "sha256": "f7397b3c9ee4e30ba6e15953be91d8aaaa9e66ae8003e760b9293f69093b22bb",
2610
+ "sha256": "6698d955720d88232b5423306076aed1398d7076d607dc4d56665f20b2879581",
2601
2611
  "mode": 420
2602
2612
  },
2603
2613
  {
@@ -2857,7 +2867,7 @@
2857
2867
  },
2858
2868
  {
2859
2869
  "path": "marketplace/plugins/ccl-skills/skills/testing-strategy/SKILL.md",
2860
- "sha256": "3527e55b44e74ec4c6a0f402068f0d954b1760715ff4b449f53034086118288a",
2870
+ "sha256": "eabb731f2a3d7f4782a3613ff067ae4a08ed379e620264b6a5cb35e3e2f3ec56",
2861
2871
  "mode": 420
2862
2872
  },
2863
2873
  {
@@ -3212,7 +3222,7 @@
3212
3222
  },
3213
3223
  {
3214
3224
  "path": "marketplace/plugins/ccl-skills/skills/web-react-dev/SKILL.md",
3215
- "sha256": "3d60fa18aa37299dc0b9672126243146ee62c9c41d8707bf09e455e810506cb9",
3225
+ "sha256": "9cb574cbc6a716813533802c2379f698ec4186ef2502be07196110441cd3e7dd",
3216
3226
  "mode": 420
3217
3227
  },
3218
3228
  {
@@ -3264,7 +3274,7 @@
3264
3274
  },
3265
3275
  {
3266
3276
  "path": "claude-adapter.js",
3267
- "sha256": "661a9486abcf1bf44ecb34ef77c66b8bf1ab5d5fbd006587888d092c4348119c",
3277
+ "sha256": "75386ab4c98d7e4056fa22683168da1867536bdc2de4d02c8b6fbef68e908713",
3268
3278
  "mode": 420
3269
3279
  },
3270
3280
  {
@@ -3289,12 +3299,12 @@
3289
3299
  },
3290
3300
  {
3291
3301
  "path": "codex-host.d.ts",
3292
- "sha256": "4a45f6fc30732210a684cde96b37dc96242a56b565723f8267edbdfd5d44011c",
3302
+ "sha256": "0e7c4e32f4627983d04d670efbd63ffe72384fb39b5ebe3bcf22a281421c7985",
3293
3303
  "mode": 420
3294
3304
  },
3295
3305
  {
3296
3306
  "path": "codex-host.js",
3297
- "sha256": "53d2b44b4dacab1170402a70ed857fb46645dd91b6b8a08b0454f43bb033b120",
3307
+ "sha256": "ad899e1fcbe06d53ee195fb10161c2352e4dd865e5632e35c346110cf594c479",
3298
3308
  "mode": 420
3299
3309
  },
3300
3310
  {
@@ -3307,6 +3317,16 @@
3307
3317
  "sha256": "4e2cf0e4742d91d8f9b2024d7df3fc93690fa3a71ab35a4762bed59705e87044",
3308
3318
  "mode": 420
3309
3319
  },
3320
+ {
3321
+ "path": "host-probe.d.ts",
3322
+ "sha256": "7575d4c6b32fe92e359330e272fc4b245aa418e0254dd28320527f1df526f9e9",
3323
+ "mode": 420
3324
+ },
3325
+ {
3326
+ "path": "host-probe.js",
3327
+ "sha256": "4ef90d7773116ac96e1a3b235a04071a2732f036630c0d5202bd67e3a82919f9",
3328
+ "mode": 420
3329
+ },
3310
3330
  {
3311
3331
  "path": "index.d.ts",
3312
3332
  "sha256": "37bf7ef65f13c512112942fa78257e84d42535993669cd97fbea2374dd20e174",
@@ -3334,7 +3354,7 @@
3334
3354
  },
3335
3355
  {
3336
3356
  "path": "opencode-adapter.js",
3337
- "sha256": "51f09cfe6138cfe3db8587a644de528e51177af273d374db303cd1675c947c28",
3357
+ "sha256": "637d3df5182ad6a51ed310736be65471fd0b432c078483af163d340ac04d6460",
3338
3358
  "mode": 420
3339
3359
  },
3340
3360
  {
@@ -3344,7 +3364,7 @@
3344
3364
  },
3345
3365
  {
3346
3366
  "path": "operations.js",
3347
- "sha256": "2fb19b70ed8f1495fc675da251b08619df9d129a1745a90a45485e5b8234bf96",
3367
+ "sha256": "254bf44226fa305e98ea2dac36ddd6ca4f1a2e42e88ee669a5bb83736ba01077",
3348
3368
  "mode": 420
3349
3369
  },
3350
3370
  {
@@ -3369,12 +3389,12 @@
3369
3389
  },
3370
3390
  {
3371
3391
  "path": "unified.d.ts",
3372
- "sha256": "e95b741d7e356d5aff99de8c3e1992ce18a4c263988f5adee897d2b079b34632",
3392
+ "sha256": "947036104532ba21515a27f11a6bbef4843b5ad28f033ddde02e9bf1d2c6aa60",
3373
3393
  "mode": 420
3374
3394
  },
3375
3395
  {
3376
3396
  "path": "unified.js",
3377
- "sha256": "2aeabe2364755dc91d7058bf3e3b8e2bb4086a0392da6b8f87a3892879334915",
3397
+ "sha256": "58b51ed8718885006dce2eab9f327833f450459737b6bf72a060f84718550677",
3378
3398
  "mode": 420
3379
3399
  },
3380
3400
  {
@@ -3408,5 +3428,5 @@
3408
3428
  "mode": 420
3409
3429
  }
3410
3430
  ],
3411
- "snapshotHash": "6e6c0f7d8b6ed499d7cf1a4701958fbd38d70219ddb72f1d985b5ea8605853cc"
3431
+ "snapshotHash": "e42471992f654d5e75b902ac23ed963dc2a4252fbdeda2d0c4e87c33f57c00f2"
3412
3432
  }
@@ -5,6 +5,7 @@ import { fileURLToPath } from "node:url";
5
5
  import { atomicJson, canonicalAlias, copyRegularTree, verifyTree } from "./fs-safe.js";
6
6
  import { manifestFor, readManifest, readRelease } from "./manifest.js";
7
7
  import { compare } from "./version.js";
8
+ import { probeHostVersion } from "./host-probe.js";
8
9
  const MARKET = "ccl-skills-npm", REF = `ccl-skills@${MARKET}`;
9
10
  function paths(context) {
10
11
  const rawHome = context.home ?? (context.env ? context.env.HOME : process.env.HOME);
@@ -46,9 +47,9 @@ function command(args, context, allowFailure = false) {
46
47
  return result;
47
48
  }
48
49
  function state(context) {
49
- const version = command(["--version"], context, true);
50
- if (version.status !== 0)
51
- return { host: false, marketplace: null, plugin: false, legacy: false };
50
+ const version = probeHostVersion("claude", context.env || process.env);
51
+ if (!version.ok)
52
+ return { host: false, hostFailure: { code: 4, status: `host-${version.kind}`, message: version.message } };
52
53
  const marketsRaw = command(["plugin", "marketplace", "list", "--json"], context), pluginsRaw = command(["plugin", "list", "--json"], context);
53
54
  let markets, plugins;
54
55
  try {
@@ -100,6 +101,8 @@ function prepare(context, old) {
100
101
  }
101
102
  function removeRegistration(context) {
102
103
  const current = state(context);
104
+ if (!current.host)
105
+ throw new Error(current.hostFailure.message);
103
106
  if (current.plugin)
104
107
  command(["plugin", "uninstall", REF, "--scope", "user"], context);
105
108
  if (current.marketplace)
@@ -109,6 +112,8 @@ function installRegistration(marketplace, context) {
109
112
  command(["plugin", "marketplace", "add", marketplace, "--scope", "user"], context);
110
113
  command(["plugin", "install", REF, "--scope", "user"], context);
111
114
  const current = state(context);
115
+ if (!current.host)
116
+ throw new Error(current.hostFailure.message);
112
117
  if (!current.plugin || !samePath(current.marketplace || "", marketplace))
113
118
  throw new Error("Claude did not expose the exact npm marketplace candidate");
114
119
  }
@@ -117,7 +122,7 @@ function doctor(context) {
117
122
  assertExclusiveRoot(p.claudeHome, p.root);
118
123
  const current = state(context);
119
124
  if (!current.host)
120
- return { code: 4, status: "host-missing", message: "Claude CLI is not installed" };
125
+ return current.hostFailure;
121
126
  if (current.legacy)
122
127
  return { code: 3, status: "double-install", message: "Git marketplace and npm marketplace are both present; keep exactly one" };
123
128
  const manifest = readManifest(p.manifest);
@@ -138,7 +143,7 @@ function installOrUpdate(commandName, options, context) {
138
143
  assertExclusiveRoot(p.claudeHome, p.root, true);
139
144
  const current = state(context);
140
145
  if (!current.host)
141
- return { code: 4, status: "host-missing", message: "Claude CLI is not installed" };
146
+ return current.hostFailure;
142
147
  if (current.legacy)
143
148
  return { code: 3, status: "double-install", message: "Remove the Git marketplace install or choose it instead of npm" };
144
149
  const old = readManifest(p.manifest), release = readRelease(p.release);
@@ -199,18 +204,20 @@ function uninstall(options, context) {
199
204
  const p = paths(context);
200
205
  assertExclusiveRoot(p.claudeHome, p.root);
201
206
  const manifest = readManifest(p.manifest), current = state(context);
207
+ if (!current.host)
208
+ return { ...current.hostFailure, message: `${current.hostFailure.message}; refusing to drop ownership evidence while registration cannot be verified` };
202
209
  if (!manifest && !current.plugin && !current.marketplace)
203
210
  return { code: 0, status: "absent", message: "Claude npm install is already absent" };
204
211
  if (!manifest)
205
212
  return { code: 3, status: "unowned-registration", message: "refusing to remove an unowned Claude registration" };
206
- if (!current.host)
207
- return { code: 4, status: "host-missing", message: "Claude CLI is not installed; refusing to drop ownership evidence while registration cannot be verified" };
208
213
  if (!options.yes)
209
214
  return { code: 0, status: "dry-run", message: "Claude uninstall preview", plan: ["remove npm plugin", "remove npm marketplace", "delete exclusive owned snapshots"] };
210
215
  if (context.isInterrupted?.())
211
216
  return { code: 130, status: "interrupted", message: "Claude uninstall interrupted before registration mutation", interrupted: true };
212
217
  removeRegistration(context);
213
218
  const after = state(context);
219
+ if (!after.host)
220
+ return { code: 5, status: "partial", message: `${after.hostFailure.message}; uninstall state is unverified, retaining ownership evidence` };
214
221
  if (after.plugin || after.marketplace)
215
222
  return { code: 5, status: "partial", message: "Claude registration remains after uninstall" };
216
223
  try {