@ccoalm/ccl-skills 0.16.0 → 0.17.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/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/SKILL.md +6 -4
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/references/staged-review-contract.md +73 -123
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/references/wording-only-review.md +136 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/review_gate.py +120 -11
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_review_client_compat.py +17 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_review_client_order.sh +30 -15
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_review_gate.sh +209 -12
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_update_review_plan_intent.sh +14 -7
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/attention-budget-ratchet.md +1 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/firing-point-placement.md +22 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/source-register.md +10 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/contract-anchors.tsv +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_extraction_review_gate.sh +56 -18
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_register_firing_path_resolution.sh +41 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/SKILL.md +3 -2
- package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/references/closeout-reread.md +40 -0
- package/dist/assets/release.json +27 -17
- package/package.json +1 -1
|
@@ -55,12 +55,14 @@ PY
|
|
|
55
55
|
# Exercise the installed wrapper/controller pair without invoking a model. The
|
|
56
56
|
# same real controller defaults to budget 0 when called directly, while the
|
|
57
57
|
# extraction wrapper must make the emitted receipt report budget 1.
|
|
58
|
-
python3 - "$TMP/real-controller.diff" "$TMP/real-controller-plan.json" <<'PY'
|
|
58
|
+
python3 - "$TMP/real-controller.diff" "$TMP/real-controller-plan.json" "$ROOT" <<'PY'
|
|
59
59
|
import json
|
|
60
|
+
import subprocess
|
|
60
61
|
import sys
|
|
61
62
|
from pathlib import Path
|
|
62
63
|
|
|
63
|
-
diff_path, plan_path = map(Path, sys.argv[1:])
|
|
64
|
+
diff_path, plan_path = map(Path, sys.argv[1:3])
|
|
65
|
+
root = Path(sys.argv[3])
|
|
64
66
|
diff_path.write_text(
|
|
65
67
|
"diff --git a/skills/skill-extraction-workflow/scripts/extraction_review_gate.sh "
|
|
66
68
|
"b/skills/skill-extraction-workflow/scripts/extraction_review_gate.sh\n"
|
|
@@ -69,20 +71,41 @@ diff_path.write_text(
|
|
|
69
71
|
"@@ -1 +1 @@\n-old wrapper\n+new wrapper\n",
|
|
70
72
|
encoding="utf-8",
|
|
71
73
|
)
|
|
74
|
+
# The required set has ONE owner. A fixture that keeps its own copy stops
|
|
75
|
+
# satisfying the gate the moment that set changes, and the runner aborts at its
|
|
76
|
+
# first failing target so the later shards never report it -- five suites drifted
|
|
77
|
+
# that way in one round. Derive it instead.
|
|
78
|
+
required = subprocess.run(
|
|
79
|
+
[
|
|
80
|
+
sys.executable,
|
|
81
|
+
str(root / "skills/code-review/scripts/review_gate.py"),
|
|
82
|
+
"--print-required-concerns",
|
|
83
|
+
"--stage",
|
|
84
|
+
"build",
|
|
85
|
+
],
|
|
86
|
+
capture_output=True,
|
|
87
|
+
text=True,
|
|
88
|
+
check=True,
|
|
89
|
+
).stdout.split()
|
|
90
|
+
assert required, "the controller printed no required concerns"
|
|
72
91
|
conclusions = {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
"failure_paths": "The no-independent-reviewer boundary remains structured and fail closed.",
|
|
76
|
-
"tests_evidence": "Direct and wrapped calls provide a differential budget assertion.",
|
|
77
|
-
"compatibility": "The generic controller default remains zero while extraction fixes one.",
|
|
78
|
-
}
|
|
79
|
-
skills = {
|
|
80
|
-
"correctness": "skill-extraction-workflow",
|
|
81
|
-
"safety": "code-review",
|
|
82
|
-
"failure_paths": "python-service-dev",
|
|
83
|
-
"tests_evidence": "testing-strategy",
|
|
84
|
-
"compatibility": "terminal-cli-dev",
|
|
92
|
+
concern: f"The differential budget probe covers {concern} within the fixture it was observed on."
|
|
93
|
+
for concern in required
|
|
85
94
|
}
|
|
95
|
+
# Owners are a separate obligation: the controller derives them from the candidate's
|
|
96
|
+
# own paths, so they do not drift when the concern set does. Spread the required
|
|
97
|
+
# concerns over them, then give any owner the spread missed a row of its own.
|
|
98
|
+
owners = [
|
|
99
|
+
"skill-extraction-workflow",
|
|
100
|
+
"code-review",
|
|
101
|
+
"python-service-dev",
|
|
102
|
+
"testing-strategy",
|
|
103
|
+
"terminal-cli-dev",
|
|
104
|
+
]
|
|
105
|
+
skills = {concern: owners[index % len(owners)] for index, concern in enumerate(required)}
|
|
106
|
+
extra_rows = [
|
|
107
|
+
(required[0], owner) for owner in owners if owner not in set(skills.values())
|
|
108
|
+
]
|
|
86
109
|
plan = {
|
|
87
110
|
"intent": "Prove the extraction wrapper and real review controller agree on budget one.",
|
|
88
111
|
"acceptance": ["The wrapped real-controller receipt reports challenge_budget one."],
|
|
@@ -94,6 +117,15 @@ plan = {
|
|
|
94
117
|
"evidence_refs": ["real-controller-differential"],
|
|
95
118
|
}
|
|
96
119
|
for concern, conclusion in conclusions.items()
|
|
120
|
+
]
|
|
121
|
+
+ [
|
|
122
|
+
{
|
|
123
|
+
"concern": concern,
|
|
124
|
+
"skill": owner,
|
|
125
|
+
"conclusion": f"{owner} is covered for {concern} by the same differential probe.",
|
|
126
|
+
"evidence_refs": ["real-controller-differential"],
|
|
127
|
+
}
|
|
128
|
+
for concern, owner in extra_rows
|
|
97
129
|
],
|
|
98
130
|
"evidence": [
|
|
99
131
|
{
|
|
@@ -274,6 +306,11 @@ landing = (
|
|
|
274
306
|
staged = (
|
|
275
307
|
root / "skills/code-review/references/staged-review-contract.md"
|
|
276
308
|
).read_text(encoding="utf-8")
|
|
309
|
+
# The wording-only exception is specified in its own reference; the contract must
|
|
310
|
+
# still name it, so the pin proves both the specification and its reachability.
|
|
311
|
+
wording_only = (
|
|
312
|
+
root / "skills/code-review/references/wording-only-review.md"
|
|
313
|
+
).read_text(encoding="utf-8")
|
|
277
314
|
code_review = (root / "skills/code-review/SKILL.md").read_text(encoding="utf-8")
|
|
278
315
|
|
|
279
316
|
for label, text in {
|
|
@@ -310,10 +347,11 @@ for label, text in {
|
|
|
310
347
|
assert "wording_only_boundary" in text, (
|
|
311
348
|
f"{label} does not require independent wording-only semantic confirmation"
|
|
312
349
|
)
|
|
313
|
-
assert "
|
|
314
|
-
assert "--
|
|
315
|
-
assert "
|
|
316
|
-
assert "markdown-
|
|
350
|
+
assert "wording-only-review.md" in staged
|
|
351
|
+
assert "--wording-only-proof-file" in wording_only
|
|
352
|
+
assert "--challenge-budget 0" in wording_only
|
|
353
|
+
assert "markdown-punctuation-only" in wording_only
|
|
354
|
+
assert "markdown-token-replacement" in wording_only
|
|
317
355
|
assert "opens no challenge chain or `complete` checkpoint" in dual
|
|
318
356
|
assert "codex review --base" not in quickstart
|
|
319
357
|
assert "codex exec adversarial" not in quickstart
|
|
@@ -720,5 +720,45 @@ run_gate "$FIX"
|
|
|
720
720
|
assert_rc "$rc" 0 "a fenced example row is an illustration, not a live declaration"
|
|
721
721
|
pass "fenced declaration-looking example does not red a register with no live declarations"
|
|
722
722
|
|
|
723
|
-
|
|
723
|
+
# ── N. RED: the anchored list rule DELETED outright ──────────────────────────
|
|
724
|
+
# A prose rule pinned for a documentation round is normally removed, not
|
|
725
|
+
# reworded: the round that added this case pinned five rules whose only
|
|
726
|
+
# mechanical protection is this gate, and its walk deleted each in turn.
|
|
727
|
+
new_fixture deleted_rule "$LITERAL"
|
|
728
|
+
# A mutation that does not apply proves nothing, so each edit below is checked
|
|
729
|
+
# both before and after: the target must be present first, and the edit must
|
|
730
|
+
# have changed the file. Without this a fixture drift turns these cases into
|
|
731
|
+
# assertions about an unmutated fixture that still pass.
|
|
732
|
+
grep -qF 'Never bypass the demo isolation boundary' "$FIX/skills/demo-skill/SKILL.md" \
|
|
733
|
+
|| fail "fixture drift: the rule this case deletes is not in the fixture"
|
|
734
|
+
grep -v 'Never bypass the demo isolation boundary' "$FIX/skills/demo-skill/SKILL.md" \
|
|
735
|
+
> "$FIX/skills/demo-skill/SKILL.md.tmp"
|
|
736
|
+
mv "$FIX/skills/demo-skill/SKILL.md.tmp" "$FIX/skills/demo-skill/SKILL.md"
|
|
737
|
+
grep -qF 'Never bypass the demo isolation boundary' "$FIX/skills/demo-skill/SKILL.md" \
|
|
738
|
+
&& fail "mutation did not apply: the rule is still present"
|
|
739
|
+
run_gate "$FIX"
|
|
740
|
+
assert_rc "$rc" 1 "deleting the anchored rule outright must be caught"
|
|
741
|
+
assert_contains "anchor text absent from target" "$out" "deleted anchored rule"
|
|
742
|
+
assert_contains "Never bypass the demo isolation boundary" "$out" "names the dead locator"
|
|
743
|
+
pass "deleting an anchored rule turns the gate RED"
|
|
744
|
+
|
|
745
|
+
# ── N+1. GREEN by design: text OUTSIDE the anchor may be gutted ──────────────
|
|
746
|
+
# The stated boundary, asserted rather than promised: a substring locator binds
|
|
747
|
+
# the letters it names and nothing else. Here the anchored clause survives while
|
|
748
|
+
# the rest of its line is replaced, and the gate is silent — which is why the
|
|
749
|
+
# ledger rows that rely on it must not claim semantic protection.
|
|
750
|
+
new_fixture unanchored_clause_gutted "$LITERAL"
|
|
751
|
+
grep -qF ' when dispatching work.' "$FIX/skills/demo-skill/SKILL.md" \
|
|
752
|
+
|| fail "fixture drift: the clause this case guts is not in the fixture"
|
|
753
|
+
sed -i.bak 's/ when dispatching work\./ — every safeguard around it removed./' \
|
|
754
|
+
"$FIX/skills/demo-skill/SKILL.md"
|
|
755
|
+
grep -qF ' — every safeguard around it removed.' "$FIX/skills/demo-skill/SKILL.md" \
|
|
756
|
+
|| fail "mutation did not apply: the unanchored clause is unchanged"
|
|
757
|
+
run_gate "$FIX"
|
|
758
|
+
assert_rc "$rc" 0 "gutting text outside the anchor is invisible to this gate"
|
|
759
|
+
assert_contains "register_firing_path_resolution_ok" "$out" "boundary control"
|
|
760
|
+
assert_not_contains "anchor text absent" "$out" "no false RED on unanchored text"
|
|
761
|
+
pass "text outside the anchor can be gutted while the gate stays green (declared boundary)"
|
|
762
|
+
|
|
763
|
+
[ "$passed" -eq 59 ] || fail "expected 59 assertions, saw $passed (a case was skipped or misplaced)"
|
|
724
764
|
echo "register_firing_path_resolution_tests_ok ($passed assertions)"
|
|
@@ -23,7 +23,7 @@ For spec/standard/guideline artifacts, the `pre-owner blocked` marker rule appli
|
|
|
23
23
|
|
|
24
24
|
Before sharing, syncing, committing, or publishing a concrete deliverable artifact, run Tighten mode by default. Do not ask the user whether to optimize unless the edit would change a substantive decision, remove required detail, or risk collaborative-comment loss. A request to write a template, SOP, report, checklist, Feishu/Lark doc, task card, or launch material already includes the optimization pass after the owner skill has settled the substance.
|
|
25
25
|
|
|
26
|
-
After multi-round edits that added, restructured, or changed reader-facing prose or meaning, always run the Tighten mode before sharing or publishing; rounds of only exempt trivial edits (typo/link/format) may record that exemption instead.
|
|
26
|
+
After multi-round edits that added, restructured, or changed reader-facing prose or meaning, always run the Tighten mode before sharing or publishing; rounds of only exempt trivial edits (typo/link/format) may record that exemption instead. **就地编辑线上文档没有「发布前」这一刻**,触发点顺延到最后一次写操作之后。这一遍的证据标准、扫描范围与语域漂移查法见 `references/closeout-reread.md`。
|
|
27
27
|
|
|
28
28
|
**技术 / 参考文档:form 优化 ≠ 内容已核。** 当本轮**新增 / 改写 / 发布**了可对源码核验的承载性技术断言(API 签名、env 行为 / 优先级、字段 / label 名、默认值——这类文档常自述真值源),**且一手源用户已给、在当前工作区可得、或用户明确授权查证**时,form 清理之外要把这些断言对一手源码(SDK / specs / fixtures / 可跑命令)核一遍。核出不符:**仅 source-literal 的 typo / 名称 / 默认值笔误**可直接照证据改;**会改动 substantive contract / decision 的**只标 discrepancy / pending 交 owner(stack / review skill),tighten-doc 不接管纠错。源不可得、超出本轮范围、或只是轻量润色:只做 form 并声明「形式已优化、内容未核」,不得裸称「文档已优化 / 准确」(别把每次 tighten 滚成一次代码审计)。
|
|
29
29
|
|
|
@@ -63,7 +63,7 @@ owner · 硬规则 · 完成标准/DoD · 里程碑 · 数值阈值 · the real
|
|
|
63
63
|
- **代码进代码块,不进段落**:**多行 / 独立执行步骤 / 长 flag 串命令 / 多命令序列**放带 lang 的代码块。**随文的短 one-liner / 表达式、表格单元格、`func()` 式符号引用可留 inline**,以不妨碍扫读为限。多语言对照两端形态对齐;随复制必需的说明:支持注释则放块内,否则随附;长篇原理放正文。
|
|
64
64
|
- **Enumeration sections (依赖/兜底/分工/里程碑 子项) = multi-line sub-bullets, NOT a `;`-collapsed single line.** Readability beats compactness here; a `- 依赖:A;B;C;D` run is hard to scan — split to `- 依赖:` + one `- A` sub-bullet per item. Do not collapse to one `;` line just for parity with another card; parity is not a reason to reduce scanability. Single-line `;` is only for a true 2-item short pointer where sub-bullets would be heavier than the content.
|
|
65
65
|
- Table cells that list multiple skills, owners, checks, environments, or evidence items should be split into multiple lines or shorter rows. A readable table beats a compressed cell when the cell is used as an execution checklist.
|
|
66
|
-
- Terms unified and glossed once in a 白话 section (e.g. 红灯 = 卡住/NO-GO 到点必升级; 排障手册 = 排障 SOP). Also catch **intra-doc term drift**: the same concept written two different ways in one doc → align to that doc's prevailing term. Drift includes **unit drift in a sequenced ladder** (a milestone list mixing 第N周 and N天 — align the lone odd unit to the ladder's prevailing one). 陌生或自造缩写仅在明显缩短且反复使用时引入;正式名称按下条保留。
|
|
66
|
+
- Terms unified and glossed once in a 白话 section (e.g. 红灯 = 卡住/NO-GO 到点必升级; 排障手册 = 排障 SOP). Also catch **intra-doc term drift**: the same concept written two different ways in one doc → align to that doc's prevailing term. Drift includes **unit drift in a sequenced ladder** (a milestone list mixing 第N周 and N天 — align the lone odd unit to the ladder's prevailing one). Drift 还包括**语域漂移**:改写时新句用词不得高出原文水位、抬高读者门槛(查法同上引用)。 陌生或自造缩写仅在明显缩短且反复使用时引入;正式名称按下条保留。
|
|
67
67
|
- A column/section header must match what its cells actually hold (a "文档化进度" header over cells that hold 现状 is a defect — rename the header to the truth). An editorial paren in a header/heading that restates an intro rule is the same 编辑性括号 as DELETE #9 — cut it.
|
|
68
68
|
- **Reader-facing published docs: the problem is unexplained or non-navigable internal references, not the names themselves**. Fix three recurring reader-blockers: ① internal repo paths used as navigation (`see README.md`) a non-author can't follow → name the human destination or link the published doc; ② opaque internal gate/code labels (`R0` / `F4`-style) → plain-name or drop the code; ③ unglossed in-house English / abbreviations (`mTLS` / `PTY` / `SLO`) → 中文化 or gloss at first use. **Keep** anything the reader actually operates on or that is a public convention / protocol / API / field / contract / standard name (`AGENTS.md`, `CODEOWNERS`, `package.json`, well-known abbrevs) — gloss if unfamiliar, don't delete.
|
|
69
69
|
- **A cell must fit its column's semantic role.** A 负责人/owner column entry must be a who (person/role), a 事项/规则 column a what (a parseable clause). Over-terse text — including a value the user dictated in an earlier pass — that no longer parses as that column's type ("业务真值+ 误差" in a 负责人 column; "…必需的指标建立" as a 规则 clause) is a 病句 (DELETE #7). On re-review, read each dictated/compressed value back **in its column context**, not in isolation; flag it with the rule even if the user set it (don't silently override, but don't pass it as clean either).
|
|
@@ -181,6 +181,7 @@ When the user probes sentence-by-sentence ("这是废话么 / 什么意思 / 能
|
|
|
181
181
|
- For Feishu/Lark comment preservation, range update mechanics, overwrite pitfalls, and cross-doc rename safety, read `references/comment-safe-feishu.md`.
|
|
182
182
|
- 「外部基线」条一触发就必读 `references/self-benchmark-baseline.md`:抽样、分布定位输出、可发现性语料与词频读法、两条边界。
|
|
183
183
|
- 交付面收尾(投放回读、三态定义与绕过路径、旧版退役与「被要求删除」的转出、静态导出全展开)展开在 `references/delivery-face-closeout.md`;closeout 第 7 项与「交付面」条都指向它。
|
|
184
|
+
- 收尾回读(触发点、证据标准、语域漂移查法)在 `references/closeout-reread.md`。
|
|
184
185
|
|
|
185
186
|
## CROSS-MODEL / CODEX CO-REVIEW CAVEAT
|
|
186
187
|
|
package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/references/closeout-reread.md
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# 收尾回读:触发点、证据、语域漂移
|
|
2
|
+
|
|
3
|
+
`SKILL.md`「After multi-round edits…」那条的展开。触发与硬判据在那条,这里放执行细节;两处冲突以 `SKILL.md` 为准。
|
|
4
|
+
|
|
5
|
+
## 触发点
|
|
6
|
+
|
|
7
|
+
- 默认触发点是**分享 / 同步 / 提交 / 发布之前**。只含 typo / 链接 / 格式这类豁免小改的轮次,记豁免即可。
|
|
8
|
+
- **就地编辑线上文档(协作文档、wiki、已发布页面)没有「发布前」这一刻**:每一刀落地即发布,读者随时可能正在读。触发点顺延到**最后一次写操作之后**:收工前必须把整篇(或受影响那一面)整体回读一遍。
|
|
9
|
+
- 「逐刀都很小」不是跳过的理由。**逐刀都对 ≠ 整篇读着对**:重复、术语漂移、语域漂移都是跨刀才显形的缺陷,只有整体回读能看见。
|
|
10
|
+
|
|
11
|
+
## 这一遍要拿出的证据
|
|
12
|
+
|
|
13
|
+
按 rubric 回读受影响的交付面:重复(含你自己本轮早些时候改出来的**同内容换面孔**)、一坨、术语漂移、语域漂移、cell-fits-column。
|
|
14
|
+
|
|
15
|
+
回读后记下五项:
|
|
16
|
+
|
|
17
|
+
- 回读的是哪一面。
|
|
18
|
+
- 自上次整体回读以来动过的块——这是**扫描范围的下限不是上限**,含义被这轮改动改变的小节也要进来。
|
|
19
|
+
- 是否命中 `SKILL.md` 里的整卡 / 全家族扫描触发条件。
|
|
20
|
+
- 查出的缺陷,或明确写「无」。
|
|
21
|
+
- 范围如果停在动过的块,写清为什么。
|
|
22
|
+
|
|
23
|
+
## 不能顶替它的三类东西
|
|
24
|
+
|
|
25
|
+
写的时候逐条守 rubric、收尾只跑 grep(半角 / 残留词扫描)、以及实质性内容评审——这三样**单独或加在一起都不算**这一遍的证据。
|
|
26
|
+
|
|
27
|
+
反复踩的就是把它们当等价证据,然后把自己改出来的重复发出去——那正是整体回读一眼能看见的东西。
|
|
28
|
+
|
|
29
|
+
## 语域漂移:改写场景里最高频的自引入缺陷
|
|
30
|
+
|
|
31
|
+
给已有文档做修订时,新写的句子用了比原文更专业的词,读者门槛被你抬高了。病根是编辑落笔用的是**自己的词库**,不是宿主文档的词库;原文越是刻意写成大白话,越容易被抬高。
|
|
32
|
+
|
|
33
|
+
查法:
|
|
34
|
+
|
|
35
|
+
- 必须把本轮**新写的句子**单独拎出来单独看,不混在整篇里读——混着读就看不出是谁的词。
|
|
36
|
+
- 逐个术语查它**在改动之前的文本里**出现过没有;不得拿改完的文档做对照,否则新词自己就在里面,永远查不出候选。没出现过的就是候选。
|
|
37
|
+
- 每个候选必须二选一:换成原文已经在用的说法,或当场用一句白话把它解释掉;原样留着不算处理。
|
|
38
|
+
- 收尾只读新句:读着**不像原文同一个人写的**,就是漂了。
|
|
39
|
+
|
|
40
|
+
指针型改写同样受这条管——写「按 X 执行」而不抄数值时,称呼那份 X 要用原文已有的说法,别换成你自己的行话。
|
package/dist/assets/release.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema": 1,
|
|
3
3
|
"npmPackage": "@ccoalm/ccl-skills",
|
|
4
|
-
"version": "0.
|
|
5
|
-
"sourceCommit": "
|
|
4
|
+
"version": "0.17.0",
|
|
5
|
+
"sourceCommit": "536886d4d5a148fd35519a725951dab0f8dc91fa",
|
|
6
6
|
"sourceState": "clean",
|
|
7
7
|
"files": [
|
|
8
8
|
{
|
|
@@ -287,7 +287,7 @@
|
|
|
287
287
|
},
|
|
288
288
|
{
|
|
289
289
|
"path": "marketplace/plugins/ccl-skills/skills/code-review/references/staged-review-contract.md",
|
|
290
|
-
"sha256": "
|
|
290
|
+
"sha256": "ea227f11c5f5808a3dbd4b9953b015a538bc80d3b74057d3c0f303bd46ec637d",
|
|
291
291
|
"mode": 420
|
|
292
292
|
},
|
|
293
293
|
{
|
|
@@ -295,6 +295,11 @@
|
|
|
295
295
|
"sha256": "16151d1fd9612fa8e0f195655ce02ea0b4b2669728801ed27d04fbe25e07a1e8",
|
|
296
296
|
"mode": 420
|
|
297
297
|
},
|
|
298
|
+
{
|
|
299
|
+
"path": "marketplace/plugins/ccl-skills/skills/code-review/references/wording-only-review.md",
|
|
300
|
+
"sha256": "0bbbfaa946fd23c8ef901911190d2525e9a5b6ea2e28ccb759567ca8a6672021",
|
|
301
|
+
"mode": 420
|
|
302
|
+
},
|
|
298
303
|
{
|
|
299
304
|
"path": "marketplace/plugins/ccl-skills/skills/code-review/scripts/AGENTS.md",
|
|
300
305
|
"sha256": "1b7831a9bf483285682d7d751cdbb4bbc0eb43868fb3ea94904388f50fe50f31",
|
|
@@ -377,7 +382,7 @@
|
|
|
377
382
|
},
|
|
378
383
|
{
|
|
379
384
|
"path": "marketplace/plugins/ccl-skills/skills/code-review/scripts/review_gate.py",
|
|
380
|
-
"sha256": "
|
|
385
|
+
"sha256": "9a8dc5fccfc3f51519b1daee97df19c535eedeaf8dea5f0dd2dce5434d156eae",
|
|
381
386
|
"mode": 493
|
|
382
387
|
},
|
|
383
388
|
{
|
|
@@ -467,12 +472,12 @@
|
|
|
467
472
|
},
|
|
468
473
|
{
|
|
469
474
|
"path": "marketplace/plugins/ccl-skills/skills/code-review/scripts/test_review_client_compat.py",
|
|
470
|
-
"sha256": "
|
|
475
|
+
"sha256": "d01237037ff418a71943406a1d893c940a690981f11923fd66ca33755ab85bcc",
|
|
471
476
|
"mode": 420
|
|
472
477
|
},
|
|
473
478
|
{
|
|
474
479
|
"path": "marketplace/plugins/ccl-skills/skills/code-review/scripts/test_review_client_order.sh",
|
|
475
|
-
"sha256": "
|
|
480
|
+
"sha256": "33b35545b79c3092e8dad84ea7e1ef6f8b4911453214dd6ea2faf93bb0c7264f",
|
|
476
481
|
"mode": 493
|
|
477
482
|
},
|
|
478
483
|
{
|
|
@@ -482,12 +487,12 @@
|
|
|
482
487
|
},
|
|
483
488
|
{
|
|
484
489
|
"path": "marketplace/plugins/ccl-skills/skills/code-review/scripts/test_review_gate.sh",
|
|
485
|
-
"sha256": "
|
|
490
|
+
"sha256": "42d258c72453441d20ac211446fa85982b624dd38e40950fc108d518a99435b2",
|
|
486
491
|
"mode": 493
|
|
487
492
|
},
|
|
488
493
|
{
|
|
489
494
|
"path": "marketplace/plugins/ccl-skills/skills/code-review/scripts/test_update_review_plan_intent.sh",
|
|
490
|
-
"sha256": "
|
|
495
|
+
"sha256": "3e882292b03a5d77fc044e6df0d31a9e766b833c8655ca52bc29e5ab34fb59b3",
|
|
491
496
|
"mode": 493
|
|
492
497
|
},
|
|
493
498
|
{
|
|
@@ -502,7 +507,7 @@
|
|
|
502
507
|
},
|
|
503
508
|
{
|
|
504
509
|
"path": "marketplace/plugins/ccl-skills/skills/code-review/SKILL.md",
|
|
505
|
-
"sha256": "
|
|
510
|
+
"sha256": "1d6d662e424e9d754f1a9a458d27b7cee338f4ed5de1b33f73bb5eb55a30d188",
|
|
506
511
|
"mode": 420
|
|
507
512
|
},
|
|
508
513
|
{
|
|
@@ -1997,7 +2002,7 @@
|
|
|
1997
2002
|
},
|
|
1998
2003
|
{
|
|
1999
2004
|
"path": "marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/attention-budget-ratchet.md",
|
|
2000
|
-
"sha256": "
|
|
2005
|
+
"sha256": "807862fd959f4e0742832ab13edcf5216b0ea5404e63bbd0592d34324e137f1a",
|
|
2001
2006
|
"mode": 420
|
|
2002
2007
|
},
|
|
2003
2008
|
{
|
|
@@ -2062,7 +2067,7 @@
|
|
|
2062
2067
|
},
|
|
2063
2068
|
{
|
|
2064
2069
|
"path": "marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/firing-point-placement.md",
|
|
2065
|
-
"sha256": "
|
|
2070
|
+
"sha256": "f9b610ab357e1fdf06bc014420c684ae5baa30bb70429fcc0f9759036dd9f658",
|
|
2066
2071
|
"mode": 420
|
|
2067
2072
|
},
|
|
2068
2073
|
{
|
|
@@ -2132,7 +2137,7 @@
|
|
|
2132
2137
|
},
|
|
2133
2138
|
{
|
|
2134
2139
|
"path": "marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/source-register.md",
|
|
2135
|
-
"sha256": "
|
|
2140
|
+
"sha256": "7805f12f6a2f0253cce53751841aa61468c4dd24ed64169f857c7861f5287c6d",
|
|
2136
2141
|
"mode": 420
|
|
2137
2142
|
},
|
|
2138
2143
|
{
|
|
@@ -2202,7 +2207,7 @@
|
|
|
2202
2207
|
},
|
|
2203
2208
|
{
|
|
2204
2209
|
"path": "marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/contract-anchors.tsv",
|
|
2205
|
-
"sha256": "
|
|
2210
|
+
"sha256": "2a1189f096b93e334872b83380ab40030b733a28b1937055e35cd82bb823936b",
|
|
2206
2211
|
"mode": 420
|
|
2207
2212
|
},
|
|
2208
2213
|
{
|
|
@@ -2417,7 +2422,7 @@
|
|
|
2417
2422
|
},
|
|
2418
2423
|
{
|
|
2419
2424
|
"path": "marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_extraction_review_gate.sh",
|
|
2420
|
-
"sha256": "
|
|
2425
|
+
"sha256": "22373c19d615b14321187daf6e3c1e9afe2e16708075182b2d0c298ac4187acf",
|
|
2421
2426
|
"mode": 493
|
|
2422
2427
|
},
|
|
2423
2428
|
{
|
|
@@ -2502,7 +2507,7 @@
|
|
|
2502
2507
|
},
|
|
2503
2508
|
{
|
|
2504
2509
|
"path": "marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_register_firing_path_resolution.sh",
|
|
2505
|
-
"sha256": "
|
|
2510
|
+
"sha256": "ba82e2d6506ad0845e1583e64bb8d28f91ae7411c8b75f40ed44295a6c3b4897",
|
|
2506
2511
|
"mode": 493
|
|
2507
2512
|
},
|
|
2508
2513
|
{
|
|
@@ -2880,6 +2885,11 @@
|
|
|
2880
2885
|
"sha256": "eaf5adc225ecd47e555611e5a1b9768fbe725204384dd96461408b81646c7fd1",
|
|
2881
2886
|
"mode": 420
|
|
2882
2887
|
},
|
|
2888
|
+
{
|
|
2889
|
+
"path": "marketplace/plugins/ccl-skills/skills/tighten-doc/references/closeout-reread.md",
|
|
2890
|
+
"sha256": "b1ffe3b6996c7d292c5cc12b62b5f07dbcaf292cae46765a573406a29f70fdb6",
|
|
2891
|
+
"mode": 420
|
|
2892
|
+
},
|
|
2883
2893
|
{
|
|
2884
2894
|
"path": "marketplace/plugins/ccl-skills/skills/tighten-doc/references/comment-safe-feishu.md",
|
|
2885
2895
|
"sha256": "c930ab39dd676da34c202c46c798441fdf2699271a5aff17d52c1dbd87df77f7",
|
|
@@ -3187,7 +3197,7 @@
|
|
|
3187
3197
|
},
|
|
3188
3198
|
{
|
|
3189
3199
|
"path": "marketplace/plugins/ccl-skills/skills/tighten-doc/SKILL.md",
|
|
3190
|
-
"sha256": "
|
|
3200
|
+
"sha256": "5deb5331c65264c32d5e47c5cd672263986d9083aa4553be2f508127ad7304f0",
|
|
3191
3201
|
"mode": 420
|
|
3192
3202
|
},
|
|
3193
3203
|
{
|
|
@@ -3433,5 +3443,5 @@
|
|
|
3433
3443
|
"mode": 420
|
|
3434
3444
|
}
|
|
3435
3445
|
],
|
|
3436
|
-
"snapshotHash": "
|
|
3446
|
+
"snapshotHash": "011ddc9a24fc123c44f2de11a78ccf1ffb32606b8efb09ff3c80734ad7cbe480"
|
|
3437
3447
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ccoalm/ccl-skills",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.17.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",
|