@ccoalm/ccl-skills 0.14.0 → 0.15.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.
Files changed (36) hide show
  1. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/SKILL.md +19 -24
  2. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/references/client-routing.md +32 -32
  3. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/references/manual-invocation-and-prompts.md +16 -14
  4. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/references/staged-review-contract.md +24 -26
  5. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/AGENTS.md +11 -0
  6. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/claude_review.sh +60 -209
  7. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/init_policy_matrix.py +114 -367
  8. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/parse_probe_result.py +52 -672
  9. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/review_gate.py +10 -2
  10. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/runtime-surface-verification-design.md +4 -2
  11. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_claude_review_probe.sh +77 -444
  12. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_init_policy_matrix.sh +33 -98
  13. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_parse_probe_result.sh +57 -173
  14. package/dist/assets/marketplace/plugins/ccl-skills/skills/defect-diagnosis/SKILL.md +1 -1
  15. package/dist/assets/marketplace/plugins/ccl-skills/skills/grill-me/SKILL.md +1 -1
  16. package/dist/assets/marketplace/plugins/ccl-skills/skills/miniapp-product-dev/SKILL.md +1 -1
  17. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/SKILL.md +1 -1
  18. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/SKILL.md +1 -1
  19. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/SKILL.md +2 -2
  20. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/rd-standards-doc-family-checklist.md +2 -2
  21. package/dist/assets/marketplace/plugins/ccl-skills/skills/requirement-baseline/SKILL.md +1 -1
  22. package/dist/assets/marketplace/plugins/ccl-skills/skills/requirement-doc-writer/SKILL.md +1 -1
  23. package/dist/assets/marketplace/plugins/ccl-skills/skills/requirement-scope/SKILL.md +1 -1
  24. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/eval-routing.md +6 -0
  25. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/external-practice-controls.md +1 -1
  26. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/source-register.md +39 -0
  27. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/eval-routing-bank.rb +62 -3
  28. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/impact-chain-gate.rb +114 -10
  29. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/review_ledger_binding.py +36 -13
  30. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_impact_chain_refscripts.sh +188 -14
  31. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_regressions.sh +2 -0
  32. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_eval_routing_bank_resolution.sh +253 -0
  33. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_impact_chain_gate_verdict_differential.sh +49 -25
  34. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_review_ledger_binding.sh +63 -5
  35. package/dist/assets/release.json +41 -36
  36. package/package.json +1 -1
@@ -616,6 +616,64 @@ out="$(run_chain --base "$CHAIN_MAIN")"; rc=$?
616
616
  check "a round with no accepted ledger at its own base refuses the whole chain, naming that round" \
617
617
  '[ "$rc" = 1 ] && case "$out" in *"round $UNBOUND_MERGE"*"does not bind at its own base"*) true;; *) false;; esac'
618
618
 
619
+ # Evidence is read from the LANDING tree, not from the round's own checkout. A
620
+ # round that merged without its ledger is still a set of bytes some later review
621
+ # can freeze and inspect; a validator-accepted closeout for exactly that candidate,
622
+ # committed on the integration branch afterwards, binds it. A closeout for any
623
+ # other digest does not, wherever it sits — the candidate hash, not the file's
624
+ # location, is what makes a ledger evidence. The retro ledger lands as a round of
625
+ # its own (a merge whose only change is receipt-shaped evidence), because a
626
+ # direct commit on the integration branch is refused for its own reason.
627
+ D_BASE="$(git -C "$CHAIN" rev-parse HEAD^1)"
628
+ git -C "$CHAIN" checkout -q round-d
629
+ D_DIGEST="$(run_chain --base "$D_BASE" --print-candidate)"
630
+ git -C "$CHAIN" checkout -q dev
631
+ edit_retro_wrong() {
632
+ mkdir -p "$CHAIN/specs/d-retro-wrong/evidence"
633
+ write_closeout "$CHAIN/specs/d-retro-wrong/evidence/closeout.json" "$(printf '%064d' 7)"
634
+ }
635
+ land_round d-retro-wrong no-ledger edit_retro_wrong
636
+ out="$(run_chain --base "$CHAIN_MAIN")"; rc=$?
637
+ check "a later closeout for a different digest does not bind the unbound round" \
638
+ '[ "$rc" = 1 ] && case "$out" in *"round $UNBOUND_MERGE"*"does not bind at its own base"*) true;; *) false;; esac'
639
+ # The right digest in a closeout the validator rejects is still not evidence.
640
+ edit_retro_rejected() {
641
+ mkdir -p "$CHAIN/specs/d-retro-rejected/evidence"
642
+ python3 - "$CHAIN/specs/d-retro-rejected/evidence/closeout.json" "$D_DIGEST" <<'PY'
643
+ import json, sys
644
+ from pathlib import Path
645
+ Path(sys.argv[1]).write_text(json.dumps({"schema_version": 3, "closeout_state": "forged", "controller_receipts": [], "candidate_sha256": sys.argv[2]}))
646
+ PY
647
+ }
648
+ land_round d-retro-rejected no-ledger edit_retro_rejected
649
+ out="$(run_chain --base "$CHAIN_MAIN")"; rc=$?
650
+ check "a later closeout for the right digest that the validator rejects does not bind the unbound round" \
651
+ '[ "$rc" = 1 ] && case "$out" in *"round $UNBOUND_MERGE"*"does not bind at its own base"*) true;; *) false;; esac'
652
+ # Evidence in the landing tree must be COMMITTED there, exactly as before: an
653
+ # untracked closeout for the right digest is refused outright, not read from disk.
654
+ mkdir -p "$CHAIN/specs/d-retro/evidence"
655
+ write_closeout "$CHAIN/specs/d-retro/evidence/closeout.json" "$D_DIGEST"
656
+ out="$(run_chain --base "$CHAIN_MAIN")"; rc=$?
657
+ check "an uncommitted closeout in the landing tree is refused before any round is bound" \
658
+ '[ "$rc" != 0 ] && case "$out" in *"uncommitted changes"*) true;; *) false;; esac'
659
+ rm -r "$CHAIN/specs/d-retro"
660
+ edit_retro_right() {
661
+ mkdir -p "$CHAIN/specs/d-retro/evidence"
662
+ write_closeout "$CHAIN/specs/d-retro/evidence/closeout.json" "$D_DIGEST"
663
+ }
664
+ land_round d-retro no-ledger edit_retro_right
665
+ out="$(run_chain --base "$CHAIN_MAIN")"; rc=$?
666
+ check "a validator-accepted closeout for the round's own candidate, committed on the integration branch after the merge, binds it through the chain" \
667
+ '[ "$rc" = 0 ] && case "$out" in *"first-parent chain"*"specs/d-retro/evidence/closeout.json"*) true;; *) false;; esac'
668
+ # Later evidence changes where a ledger may be found, never what the round is:
669
+ # the unbound round's candidate at its own base hashes exactly as it did before
670
+ # any retro ledger existed, so its packet, base and excludes are untouched.
671
+ git -C "$CHAIN" checkout -q round-d
672
+ D_DIGEST_AFTER="$(run_chain --base "$D_BASE" --print-candidate)"
673
+ git -C "$CHAIN" checkout -q dev
674
+ check "the round's candidate hash is unchanged by evidence committed later in the landing tree" \
675
+ '[ "$D_DIGEST_AFTER" = "$D_DIGEST" ]'
676
+
619
677
  probe_chain
620
678
  printf 'pushed straight to the integration branch\n' >"$CHAIN/lane/direct.txt"
621
679
  git -C "$CHAIN" add -A && git -C "$CHAIN" commit -qm "direct commit on dev"
@@ -827,10 +885,10 @@ check "the passing chain state still passes after the probes" \
827
885
  # the real checkout it ships in, or a break in that path passes every test here.
828
886
  REAL_ROOT="$(cd "$DIR/../../.." && pwd -P)"
829
887
  real_out="$(env -u CCL_SKILL_BASE_REF python3 "$GATE" --repo-root "$REAL_ROOT" --base HEAD~1 --print-candidate 2>&1)"; real_rc=$?
830
- # Both outputs are legitimate and which one appears depends on what the parent
831
- # commit happened to touch: a candidate hash when a reviewed path moved, the
832
- # no-change signal when it did not. Accepting only the first makes this assertion
833
- # a function of repository state rather than of the gate.
888
+ # Three outputs are legitimate and which one appears depends on what the parent
889
+ # commit happened to touch: a candidate hash when a bounded reviewed path moved,
890
+ # the no-change signal when it did not, or the packet-ceiling refusal when the
891
+ # parent diff is too large for one reviewer packet.
834
892
  # Which answer is legitimate depends on the checkout, so decide that FIRST and then
835
893
  # assert the one matching branch. Accepting every output would make this assertion a
836
894
  # function of repository state; branching on the state keeps it an assertion about
@@ -842,7 +900,7 @@ if [ -n "$real_dirty" ]; then
842
900
  '[ "$real_rc" != 0 ] && case "$real_out" in *"uncommitted changes"*) true;; *) false;; esac'
843
901
  else
844
902
  check "the gate answers for the clean real checkout it ships in, whichever legitimate answer applies" \
845
- '[ "$real_rc" = 0 ] && { case "$real_out" in [0-9a-f]*) [ ${#real_out} = 64 ];; *) false;; esac || case "$real_out" in *review_ledger_binding_no_change*) true;; *) false;; esac; }'
903
+ '{ [ "$real_rc" = 0 ] && { case "$real_out" in [0-9a-f]*) [ ${#real_out} = 64 ];; *) false;; esac || case "$real_out" in *review_ledger_binding_no_change*) true;; *) false;; esac; }; } || { [ "$real_rc" = 1 ] && case "$real_out" in *"cannot freeze the candidate packet"*"review packet exceeds 200000 bytes"*) true;; *) false;; esac; }'
846
904
  fi
847
905
 
848
906
  if [ "$fails" -gt 0 ]; then
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schema": 1,
3
3
  "npmPackage": "@ccoalm/ccl-skills",
4
- "version": "0.14.0",
5
- "sourceCommit": "3b42a5bd027e29f72b90b055c763333964d46259",
4
+ "version": "0.15.0",
5
+ "sourceCommit": "7c3a2fbb2253f218e26acdb729edf16481982b26",
6
6
  "sourceState": "clean",
7
7
  "files": [
8
8
  {
@@ -272,17 +272,17 @@
272
272
  },
273
273
  {
274
274
  "path": "marketplace/plugins/ccl-skills/skills/code-review/references/client-routing.md",
275
- "sha256": "0cd80b1ac97dfbdde531a7d3a03c273cb66e918a6f759a82a5d796e6e3067b04",
275
+ "sha256": "702a372d54b70d9230ed25f0d8096e6762acc179eb1e7febfde9e5ebd343c0d3",
276
276
  "mode": 420
277
277
  },
278
278
  {
279
279
  "path": "marketplace/plugins/ccl-skills/skills/code-review/references/manual-invocation-and-prompts.md",
280
- "sha256": "7e2fba79714418428748dfbc055d06a67c048ec6e12f1b6b3a441f81d2c05a24",
280
+ "sha256": "a235a3dfb81dd757ce6e42e82cbc7ec428268ccc290807f5f4bbe07798b33e53",
281
281
  "mode": 420
282
282
  },
283
283
  {
284
284
  "path": "marketplace/plugins/ccl-skills/skills/code-review/references/staged-review-contract.md",
285
- "sha256": "c63a16c569e2ae55784204a36458cab1e19351b76d7b94da1cae1ee370412449",
285
+ "sha256": "fc661c17955886936f49b4b99a760e896cdfcbad925c2671affae50108f6ade7",
286
286
  "mode": 420
287
287
  },
288
288
  {
@@ -292,7 +292,7 @@
292
292
  },
293
293
  {
294
294
  "path": "marketplace/plugins/ccl-skills/skills/code-review/scripts/AGENTS.md",
295
- "sha256": "dab83de1ee7ad7b2f66f49eb0a7da4a2acc12bec3c40d1e4e4c9d1668db80d09",
295
+ "sha256": "8c0f7ed10323f19a40bec905672bc1425c8ede15b98b44a5132fd45ab07e03e2",
296
296
  "mode": 420
297
297
  },
298
298
  {
@@ -307,7 +307,7 @@
307
307
  },
308
308
  {
309
309
  "path": "marketplace/plugins/ccl-skills/skills/code-review/scripts/claude_review.sh",
310
- "sha256": "9dd673b56689012a6f40ffdbd74cd3cc845505b3f58dcd724c47ce4454e4ff12",
310
+ "sha256": "f7fbc0c531607510b137616278c55b922291ca220d9c7a4406401e077ebee6b3",
311
311
  "mode": 493
312
312
  },
313
313
  {
@@ -327,7 +327,7 @@
327
327
  },
328
328
  {
329
329
  "path": "marketplace/plugins/ccl-skills/skills/code-review/scripts/init_policy_matrix.py",
330
- "sha256": "82731b71377160669ff99284acbfaa705f13304c886f0572fe76e717030da0de",
330
+ "sha256": "f83bb777975af65064cab7b334c488c9c3f880d5de7ddcb0f6f3022d9249e58b",
331
331
  "mode": 420
332
332
  },
333
333
  {
@@ -362,7 +362,7 @@
362
362
  },
363
363
  {
364
364
  "path": "marketplace/plugins/ccl-skills/skills/code-review/scripts/parse_probe_result.py",
365
- "sha256": "2b4fcfde20ae728eea51473fee7eaa85db59407a0ff67e8f9d8863ccc2e27090",
365
+ "sha256": "428eff8c3290c2dff0baf46dfbc0c3df19c599f0ba57100878c85d6d24463bcc",
366
366
  "mode": 493
367
367
  },
368
368
  {
@@ -372,7 +372,7 @@
372
372
  },
373
373
  {
374
374
  "path": "marketplace/plugins/ccl-skills/skills/code-review/scripts/review_gate.py",
375
- "sha256": "887d408540b9e195301c856df37c6883916ae9287ede623f7fd43cc31fac99e9",
375
+ "sha256": "56e1eaf01a4af639260cfb7193dc6c14eef9bd883751e4831f7e4925db11af81",
376
376
  "mode": 493
377
377
  },
378
378
  {
@@ -387,7 +387,7 @@
387
387
  },
388
388
  {
389
389
  "path": "marketplace/plugins/ccl-skills/skills/code-review/scripts/runtime-surface-verification-design.md",
390
- "sha256": "b92a8b2ae91608081665eabcee482b7550415d66df8ad654f1d041add6b3de8f",
390
+ "sha256": "723b96d86cdb24e33ba216e3c23a0d7d27da808a57a78fa710ea7e8311b1d078",
391
391
  "mode": 420
392
392
  },
393
393
  {
@@ -402,7 +402,7 @@
402
402
  },
403
403
  {
404
404
  "path": "marketplace/plugins/ccl-skills/skills/code-review/scripts/test_claude_review_probe.sh",
405
- "sha256": "9ef76959d21baac5b8cfc88ea52e9b347736c672df72f32071f5020db2b9b5d1",
405
+ "sha256": "1a17dd58a04ca987fa12a57fbc5f8ce1694caace6c3bc537bae6527a38f8cb35",
406
406
  "mode": 493
407
407
  },
408
408
  {
@@ -427,7 +427,7 @@
427
427
  },
428
428
  {
429
429
  "path": "marketplace/plugins/ccl-skills/skills/code-review/scripts/test_init_policy_matrix.sh",
430
- "sha256": "c93b3db0e68758a71b85f6e05c2553fd64f023e038d765976778fb69435387c3",
430
+ "sha256": "2783faecb8ec5797d56f435070092d71066124826e2d4445028ef04c5bf6aa32",
431
431
  "mode": 493
432
432
  },
433
433
  {
@@ -452,7 +452,7 @@
452
452
  },
453
453
  {
454
454
  "path": "marketplace/plugins/ccl-skills/skills/code-review/scripts/test_parse_probe_result.sh",
455
- "sha256": "d035ef9c2cd154c4e81ae8818b1b12469f69514ad6e8d01b53f620387c568774",
455
+ "sha256": "4d459976e514b92329a29c97f339fe7b043951c4be6c418c7e3befe98158bd81",
456
456
  "mode": 493
457
457
  },
458
458
  {
@@ -497,7 +497,7 @@
497
497
  },
498
498
  {
499
499
  "path": "marketplace/plugins/ccl-skills/skills/code-review/SKILL.md",
500
- "sha256": "f960b78a381e166bb848a80efb8834f7904cd1103d9aee176205375f4b02a81b",
500
+ "sha256": "e4ae36e1d4cf46559cbcd4fcacae00dce3ca538fb05dc92df8fd78b4a6ae694c",
501
501
  "mode": 420
502
502
  },
503
503
  {
@@ -517,7 +517,7 @@
517
517
  },
518
518
  {
519
519
  "path": "marketplace/plugins/ccl-skills/skills/defect-diagnosis/SKILL.md",
520
- "sha256": "edc593f500265943802f035ddafcd62aa2769c68c446eea0a74c66930ba7aff2",
520
+ "sha256": "73a01985225c4c790f8da6ab611defc03d2c3dcca09854a8cff9bbd78a2b31d8",
521
521
  "mode": 420
522
522
  },
523
523
  {
@@ -832,7 +832,7 @@
832
832
  },
833
833
  {
834
834
  "path": "marketplace/plugins/ccl-skills/skills/grill-me/SKILL.md",
835
- "sha256": "261268b32df1a22ba664773c5448579a640a573a5ff5018b49ee54ab98c6d97b",
835
+ "sha256": "d12c73e56c5d885aca71176735e76e00be6b57443ff4dec6a03b859f3b879334",
836
836
  "mode": 420
837
837
  },
838
838
  {
@@ -997,7 +997,7 @@
997
997
  },
998
998
  {
999
999
  "path": "marketplace/plugins/ccl-skills/skills/miniapp-product-dev/SKILL.md",
1000
- "sha256": "9342963c25cf0cd61dbc36e9c1d3d848e65d6f2a59c6c9f9947785a2cc97e048",
1000
+ "sha256": "d47b687c9b38f0bbec134cc6793ba041d08606f9798ce0573c630d1a95887818",
1001
1001
  "mode": 420
1002
1002
  },
1003
1003
  {
@@ -1132,7 +1132,7 @@
1132
1132
  },
1133
1133
  {
1134
1134
  "path": "marketplace/plugins/ccl-skills/skills/platform-observability/SKILL.md",
1135
- "sha256": "1d73a36f4d4e9511df81588054eba288a1db1efb5f2437a515929326142a15a8",
1135
+ "sha256": "6cec53c15ec23b7bd5ef060fb5442667924593fdcb72e6b4f2866eef3343dfd0",
1136
1136
  "mode": 420
1137
1137
  },
1138
1138
  {
@@ -1207,7 +1207,7 @@
1207
1207
  },
1208
1208
  {
1209
1209
  "path": "marketplace/plugins/ccl-skills/skills/platform-release-engineering/SKILL.md",
1210
- "sha256": "5e9002fe487db146c994b4b01736bffdbbd86fed0c4c747371aa057054e53826",
1210
+ "sha256": "04c107c45a2acabb4aea65ce996a472064af68355de4929a6b8f731f9f53cd8e",
1211
1211
  "mode": 420
1212
1212
  },
1213
1213
  {
@@ -1417,7 +1417,7 @@
1417
1417
  },
1418
1418
  {
1419
1419
  "path": "marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/rd-standards-doc-family-checklist.md",
1420
- "sha256": "f88d85cfb4ebd7ec292a46472df365d8c97ca776b6ab4a5024d7bfe54bc093f3",
1420
+ "sha256": "62f3008e36d84eaca73a1c849f32abc20ebd63ec492c7e87a7d1baf4833c6e0e",
1421
1421
  "mode": 420
1422
1422
  },
1423
1423
  {
@@ -1472,7 +1472,7 @@
1472
1472
  },
1473
1473
  {
1474
1474
  "path": "marketplace/plugins/ccl-skills/skills/product-rd-workflow/SKILL.md",
1475
- "sha256": "3569609af15adace2db554945a3fd2a2926b45802e26df05da1132da3b8cd9ca",
1475
+ "sha256": "3e0f6d5434294acb66896b936f007d9bef67e608b34728b99a7d2ef07122e690",
1476
1476
  "mode": 420
1477
1477
  },
1478
1478
  {
@@ -1932,7 +1932,7 @@
1932
1932
  },
1933
1933
  {
1934
1934
  "path": "marketplace/plugins/ccl-skills/skills/requirement-baseline/SKILL.md",
1935
- "sha256": "0b00a330676206a805e3ab7740086b68b0f0efc763e10183215325724f4e9287",
1935
+ "sha256": "3c54a33449fbeaf8a83d1d8cb21964d990be11c3889a54a21c0ec82665b47396",
1936
1936
  "mode": 420
1937
1937
  },
1938
1938
  {
@@ -1957,7 +1957,7 @@
1957
1957
  },
1958
1958
  {
1959
1959
  "path": "marketplace/plugins/ccl-skills/skills/requirement-doc-writer/SKILL.md",
1960
- "sha256": "7716f0e4324bca6a071f98ab36bdb046d6d854d21d51069da8c37850ff2595f1",
1960
+ "sha256": "7007abab8aa412e67ef2db7c5107c42fc193795bc76138703ad3f0273ba1e37f",
1961
1961
  "mode": 420
1962
1962
  },
1963
1963
  {
@@ -1977,7 +1977,7 @@
1977
1977
  },
1978
1978
  {
1979
1979
  "path": "marketplace/plugins/ccl-skills/skills/requirement-scope/SKILL.md",
1980
- "sha256": "c90040ac05c6c2102ad60137dd89fc488c46ba11044f1999fc424ef5a6acfa29",
1980
+ "sha256": "45c277944ab2129ee6ff50cd135b527eee8f48514ba1957fd7bc4d929ca5e8f8",
1981
1981
  "mode": 420
1982
1982
  },
1983
1983
  {
@@ -2027,7 +2027,7 @@
2027
2027
  },
2028
2028
  {
2029
2029
  "path": "marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/eval-routing.md",
2030
- "sha256": "867941f4dcb59c19b36310f8f304bf883e77a5c58c9e9d5cf82e879720dff0de",
2030
+ "sha256": "bbe5ac36800a0c3301d82b467076863ab9b72c51be0656b14ec79a6c382f1bbc",
2031
2031
  "mode": 420
2032
2032
  },
2033
2033
  {
@@ -2042,7 +2042,7 @@
2042
2042
  },
2043
2043
  {
2044
2044
  "path": "marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/external-practice-controls.md",
2045
- "sha256": "665eaecb1f9ef219f581fa86a02df4bb378694dbc4ff52b5117f7c929bdec287",
2045
+ "sha256": "105606307b875fab01dacf8e7492966de6148fe45ae8336b2fbc95cce03c336b",
2046
2046
  "mode": 420
2047
2047
  },
2048
2048
  {
@@ -2127,7 +2127,7 @@
2127
2127
  },
2128
2128
  {
2129
2129
  "path": "marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/source-register.md",
2130
- "sha256": "12ca28829763dcd5b1e7e55ffe32c5189757855d9e22d34a56c4dc1524293e18",
2130
+ "sha256": "244615335846d51d47798dc428c543ff7ae03b09026deda649f8a2ba07ca9f2d",
2131
2131
  "mode": 420
2132
2132
  },
2133
2133
  {
@@ -2217,7 +2217,7 @@
2217
2217
  },
2218
2218
  {
2219
2219
  "path": "marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/eval-routing-bank.rb",
2220
- "sha256": "fcfabff1e2ae8053a93dd71deb651ea7322e3eeb397c8c41b53c3c86f4cdacaf",
2220
+ "sha256": "6d1e2f0d13c0965ffe5b41e42a86bfd7e135158cbd1bdfbcbb6f01be9140bee0",
2221
2221
  "mode": 493
2222
2222
  },
2223
2223
  {
@@ -2247,7 +2247,7 @@
2247
2247
  },
2248
2248
  {
2249
2249
  "path": "marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/impact-chain-gate.rb",
2250
- "sha256": "9430395d38d36863e6ec5e4a2087e558c4f2214dc90feebdaa70e8d0d92a29f8",
2250
+ "sha256": "b24246416f7b26bf7d1e262c388dc4a752135193a8ac2ca06a7e1e6fb1caca85",
2251
2251
  "mode": 493
2252
2252
  },
2253
2253
  {
@@ -2267,7 +2267,7 @@
2267
2267
  },
2268
2268
  {
2269
2269
  "path": "marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/review_ledger_binding.py",
2270
- "sha256": "ae7b2aa0c7f0afa569f424fbd57d62209e21fd4da9a6b94da15686eb4b2d8719",
2270
+ "sha256": "19771e040412508c08eb5f591358d2a5da454d63426eb0c4c1eec6244850fe2b",
2271
2271
  "mode": 493
2272
2272
  },
2273
2273
  {
@@ -2307,7 +2307,7 @@
2307
2307
  },
2308
2308
  {
2309
2309
  "path": "marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_impact_chain_refscripts.sh",
2310
- "sha256": "82eb576dd1a0280bdd7cbe742f5903a5b1919f8b0bdd8da53489b47f0468e09c",
2310
+ "sha256": "8c7ddf91ab9987bd8aa34eb204e420a9e930270bcf877fb743cc1f1a0f3a89e4",
2311
2311
  "mode": 493
2312
2312
  },
2313
2313
  {
@@ -2327,7 +2327,7 @@
2327
2327
  },
2328
2328
  {
2329
2329
  "path": "marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_regressions.sh",
2330
- "sha256": "c8309b75883f8e7e404ae15a85efc347e58f0255385bf57ddb6b200a3b587588",
2330
+ "sha256": "039ad0158c41a1b7731a64de4be39e02a489bfaa6090ef842d0d0a8068f07bc0",
2331
2331
  "mode": 493
2332
2332
  },
2333
2333
  {
@@ -2390,6 +2390,11 @@
2390
2390
  "sha256": "10cacb2baf142dbedddbecb34ac2ee1bd9d043b9c946acff9ce83373be0d1553",
2391
2391
  "mode": 493
2392
2392
  },
2393
+ {
2394
+ "path": "marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_eval_routing_bank_resolution.sh",
2395
+ "sha256": "ea151e086c53d3cbf227e1e5cf6a3c3ef54d0e6460b4ec61275a097073499c11",
2396
+ "mode": 493
2397
+ },
2393
2398
  {
2394
2399
  "path": "marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_eval_routing_bank_surface_binding.sh",
2395
2400
  "sha256": "68003f1b1bc58023236a021ca5272b598cb7d9080182548a012992322214b9e8",
@@ -2442,7 +2447,7 @@
2442
2447
  },
2443
2448
  {
2444
2449
  "path": "marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_impact_chain_gate_verdict_differential.sh",
2445
- "sha256": "30d94cbf6d2255d1a9eb38eb558ef2d8c638b4d1a65d739b1c713f339b9b22ad",
2450
+ "sha256": "b53ec5cc1247bbcd068f43eacac190de2efcea531883f8e25828522870553a37",
2446
2451
  "mode": 493
2447
2452
  },
2448
2453
  {
@@ -2507,7 +2512,7 @@
2507
2512
  },
2508
2513
  {
2509
2514
  "path": "marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_review_ledger_binding.sh",
2510
- "sha256": "a7274e735371dcd80b4c1b7745e3e5648d7e84b1dee676bf2743f4600751a770",
2515
+ "sha256": "a299ded873de1796f8e377e832d59faa1909bcceb5504347b072186139362f36",
2511
2516
  "mode": 493
2512
2517
  },
2513
2518
  {
@@ -3403,5 +3408,5 @@
3403
3408
  "mode": 420
3404
3409
  }
3405
3410
  ],
3406
- "snapshotHash": "ba1bcedf0fe6247bda9eb70091de735a5e6fef8e7fc8d82f573841870dcb5302"
3411
+ "snapshotHash": "6e6c0f7d8b6ed499d7cf1a4701958fbd38d70219ddb72f1d985b5ea8605853cc"
3407
3412
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ccoalm/ccl-skills",
3
- "version": "0.14.0",
3
+ "version": "0.15.0",
4
4
  "description": "Reusable workflows that help coding agents plan, build, test, review, and release software — for Claude Code, Codex, and OpenCode",
5
5
  "keywords": ["skills", "agent-skills", "claude", "claude-code", "codex", "opencode", "agent", "ai", "ai-agents", "cli", "anthropic", "developer-tools"],
6
6
  "type": "module",