@ccoalm/ccl-skills 0.10.0 → 0.12.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 (38) hide show
  1. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/SKILL.md +4 -3
  2. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/references/staged-review-contract.md +18 -0
  3. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/review_gate.py +178 -4
  4. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_review_gate.sh +127 -0
  5. package/dist/assets/marketplace/plugins/ccl-skills/skills/defect-diagnosis/SKILL.md +2 -1
  6. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/SKILL.md +1 -1
  7. package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/SKILL.md +1 -0
  8. package/dist/assets/marketplace/plugins/ccl-skills/skills/nodejs-service-dev/SKILL.md +11 -1
  9. package/dist/assets/marketplace/plugins/ccl-skills/skills/nodejs-service-dev/references/async-lifecycle-and-performance.md +16 -0
  10. package/dist/assets/marketplace/plugins/ccl-skills/skills/nodejs-service-dev/references/source-map.md +1 -0
  11. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/SKILL.md +1 -1
  12. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/delivery-lifecycle.md +1 -1
  13. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/dispatch-owner-skills.md +9 -1
  14. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/problem-resolution-and-learning.md +2 -0
  15. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/SKILL.md +1 -1
  16. package/dist/assets/marketplace/plugins/ccl-skills/skills/release-coordination/references/tag-and-prod-pipeline-gate.md +9 -0
  17. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/SKILL.md +9 -9
  18. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/dual-track-review-gate.md +7 -23
  19. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/external-practice-controls.md +16 -0
  20. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/extraction-quickstart.md +1 -1
  21. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/rule-consolidation.md +2 -0
  22. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/source-register.md +29 -0
  23. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/source-to-skill-extraction.md +2 -2
  24. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/validation-and-landing.md +2 -0
  25. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/check-ccl-skills.sh +5 -0
  26. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/contract-anchors.tsv +1 -0
  27. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/impact-chain-gate.rb +35 -6
  28. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/review_ledger_binding.py +817 -0
  29. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_impact_chain_refscripts.sh +81 -1
  30. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_regressions.sh +3 -0
  31. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_review_ledger_binding.sh +521 -0
  32. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_routing_pointer_integrity.sh +41 -1
  33. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_validate_extraction_review_state.sh +116 -9
  34. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/validate_extraction_review_state.py +123 -32
  35. package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/SKILL.md +1 -1
  36. package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/SKILL.md +9 -8
  37. package/dist/assets/release.json +47 -37
  38. package/package.json +1 -1
@@ -13,3 +13,4 @@ burn-rate-page-row-reference skills/platform-observability/references/sli-slo-de
13
13
  coverage-tier-provenance skills/testing-strategy/references/test-code-authoring-patterns.md 60% acceptable / 75% commendable / 90% exemplary 分档 071-chainC-r1f4: externally verified coverage tiers (specs/071 source-verification)
14
14
  pairwise-trigger-range skills/test-artifact-management/references/classical-test-design-techniques.md 2-way 累计触发 53–97% 071-chainC-r1f4: NIST SP 800-142 empirical range, externally verified (specs/071 source-verification)
15
15
  bva-two-vs-three-value skills/test-artifact-management/references/classical-test-design-techniques.md 2-value(边界 + 下一格)和 3-value(边界 + 两侧) 071-chainC-r1f4: ISTQB v4 BVA variant definitions, externally verified (specs/071 source-verification)
16
+ merge-side-ledger-binding-failclosed skills/skill-extraction-workflow/scripts/review_ledger_binding.py return 0 if args.allow_unevaluated else 2 084-r4f1: the no-base fail-closed branch; flipping it to an unconditional 0 restores a gate that passes having checked nothing
@@ -1327,19 +1327,48 @@ if upstream.any? || routing_entrypoint_changed || changed_paths.include?(LEDGER_
1327
1327
  # path is broken gets the firing-path message; every other failure shape
1328
1328
  # gets the behavior-evidence message. (A declared wording-only row can
1329
1329
  # never be a RED row, so no exclusion is needed here.)
1330
- firing_path_incomplete = evaluated.any? do |entry|
1331
- entry[:red_declared] && !entry[:firing_path_valid]
1332
- end
1333
- if firing_path_incomplete
1334
- firing_path_failures << path
1330
+ # Name the OFFENDING ROWS, not just the owner. The owner-level `all?` above
1331
+ # means one bad row reddens the package, so an owner-only diagnostic sends the
1332
+ # author to inspect whichever row they were just writing — which is usually the
1333
+ # correct one. Observed: a round whose new row was fine failed because an
1334
+ # unrelated ALREADY-COMMITTED ledger row had been edited by an unbounded string
1335
+ # replace; the edit made that old row an added row of this round, so its own
1336
+ # original anchor no longer resolved here. Three iterations went into rewriting
1337
+ # the good anchor before the real offender was found by patching debug output
1338
+ # into this script. The row identity is what closes that gap.
1339
+ offending_rows = evaluated.each_index.select do |index|
1340
+ evaluated[index][:red_declared] && !evaluated[index][:firing_path_valid]
1341
+ end.map { |index| owner_rows[index] }
1342
+ if offending_rows.any?
1343
+ firing_path_failures << { path: path, rows: offending_rows }
1335
1344
  else
1336
1345
  behavior_failures << path
1337
1346
  end
1338
1347
  end
1348
+ # First cell of a ledger row, bounded: enough to recognise which row is meant
1349
+ # without dumping a multi-thousand-character evidence cell into the diagnostic.
1350
+ # This renders REPOSITORY TEXT a contributor controls onto a terminal/CI channel,
1351
+ # so it is scrubbed before it is printed, not merely bounded. C0/C1 controls,
1352
+ # bidi overrides, and zero-width characters can erase earlier output, restyle it,
1353
+ # or reorder the rendered row so the named offender is not the one a reader sees —
1354
+ # a length cap does nothing about any of that. Invalid bytes are replaced first so
1355
+ # the escape pass cannot raise on a malformed cell. Both reviewer lanes raised this
1356
+ # independently.
1357
+ CONTROL_OR_INVISIBLE = /[\u0000-\u001F\u007F-\u009F\u200B-\u200F\u2028-\u202E\u2060-\u2064\u206A-\u206F\uFEFF]/.freeze
1358
+ row_label = lambda do |row|
1359
+ cell = row[:line].to_s.sub(/\A\+/, "").split("|")[1].to_s.strip
1360
+ cell = cell.empty? ? row[:line].to_s.strip : cell
1361
+ visible = cell.scrub("?").gsub(CONTROL_OR_INVISIBLE) { |ch| format("\\u%04X", ch.ord) }
1362
+ visible.length > 120 ? "#{visible[0, 117]}..." : visible
1363
+ end
1339
1364
  unless firing_path_failures.empty?
1340
1365
  warn "impact_chain_firing_path_missing: RED-baseline row has no owner-scoped firing path in this committed diff"
1341
1366
  warn " fix: point to this owner with `firing-path: command:<changed repo executable>` or `firing-path: file:<changed markdown>#<unique token on a changed numbered/list rule with a normative action>`"
1342
- firing_path_failures.each { |path| warn " incomplete: #{path}" }
1367
+ warn " note: the rows named below are the ones that failed — every RED row bound to an owner must resolve, so a row you did not intend to touch can redden the owner. If a named row is one you only EDITED, it became an added row of this round and its original anchor no longer resolves against this round's diff: restore that row rather than rewriting an anchor that was already correct."
1368
+ firing_path_failures.each do |entry|
1369
+ warn " incomplete: #{entry[:path]}"
1370
+ entry[:rows].each { |row| warn " offending row: #{row_label.call(row)}" }
1371
+ end
1343
1372
  exit 1
1344
1373
  end
1345
1374
  unless behavior_failures.empty?