@olegkoval/agent-skills 1.48.0 → 1.49.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.
@@ -15,10 +15,13 @@ Run an adversarial review of **your own previous answer** and report the result
15
15
  A confident answer is not a verified one. This skill turns your last substantial reply into the
16
16
  subject of a hostile review: a separate critic agent tries to refute it against live sources, hunts
17
17
  for the related issue or pattern you missed, and scores it. You then revise and re-score until the
18
- score stops moving, and report the outcome honestly, including where you were wrong.
18
+ score stops moving, report the outcome honestly, including where you were wrong, and convert what
19
+ the critic caught into a rule that survives the session.
19
20
 
20
- The point is to surface error before the user does, and to make "is this actually right?" a measured
21
- quantity instead of a vibe.
21
+ The point is to surface error before the user does, to make "is this actually right?" a measured
22
+ quantity instead of a vibe, and to make the same mistake cost less the second time than it did the
23
+ first. A critique that ends at a score has bought one corrected answer. A critique that ends at a
24
+ durable rule has bought every answer after it.
22
25
 
23
26
  ## When to Use
24
27
 
@@ -35,11 +38,19 @@ answers.
35
38
  1. **Snapshot the target.** Capture your last substantial answer verbatim, plus the concrete claims
36
39
  it makes and the source each claim rests on. This is `v1`.
37
40
 
41
+ Write the claim list before you re-read the answer's prose, and put a real receipt against each
42
+ claim: a quoted field, a `file:line` whose body you actually opened, a command and its output.
43
+ A claim you cannot receipt at snapshot time is already a finding - mark it `unverified` yourself
44
+ rather than waiting for the critic to find it. Grep output, a file name, a path, an endpoint
45
+ string, or the behaviour of a sibling module are not receipts for what code does; they prove
46
+ those things exist, not what they do.
47
+
38
48
  2. **Spawn the critic.** Launch one independent agent with live-source access (issue tracker, code
39
49
  host, error monitor, the repo). Use the prompt template below. The critic must return: `score`
40
50
  (0-100), `verdict` (AGREE / AGREE-WITH-CAVEATS / DISAGREE), `where_wrong` (list), `missed`
41
51
  (related issues or patterns you failed to surface), `unverifiable` (claims it could not confirm),
42
- and `fixes` (ranked, actionable).
52
+ `fixes` (ranked, actionable), and `shapes` (the reusable class of reasoning behind each
53
+ `where_wrong` item, which Step 5 turns into the rule).
43
54
 
44
55
  3. **Decide and loop.** Stop if `score >= 90` OR no actionable `fixes` remain. Otherwise revise the
45
56
  answer using the fixes to produce `v2`, then re-spawn the critic to score `v2`. Repeat.
@@ -54,6 +65,64 @@ answers.
54
65
  If only one round ran, state `no revision needed`.
55
66
  - **Final score** - the critic's last score and verdict.
56
67
  - **Unverifiable** - anything you should not present as fact.
68
+ - **Declined fixes** - any ranked fix you chose not to take, and the reason. Silently dropping a
69
+ fix looks identical to missing it.
70
+
71
+ 5. **Convert the outcome into a durable rule.** See below. Skipping this step is what makes the
72
+ same critique necessary again next week.
73
+
74
+ ## Step 5: turn the critique into something that outlives the session
75
+
76
+ A score is a measurement, not an improvement. The improvement is the rule you write down, in a
77
+ place a future session actually reads, before you move on.
78
+
79
+ **Not every finding earns a rule.** Write one only when the finding passes both gates:
80
+
81
+ - **Recurrence** - the same *shape* of mistake could plausibly happen again on a different task.
82
+ - **Cost** - it would have reached the user, cost real rework, or damaged their credibility with
83
+ someone else.
84
+
85
+ A one-off factual slip, a typo, or a finding fully explained by this task's specifics fails both.
86
+ Writing a rule for it pollutes the store, and a littered store is worse than a thin one, because
87
+ the next session stops reading it.
88
+
89
+ **Write the shape, not the incident.** The incident is the evidence; the shape is the rule. Ask
90
+ what class of reasoning produced the error, then name that class:
91
+
92
+ | Incident | Shape worth keeping |
93
+ | --- | --- |
94
+ | Called an endpoint a read because the path was a noun and a sibling module imported | A conclusion drawn from evidence that does not cover the claim |
95
+ | Priced an open design question as "small" in the same sentence that asked which design was wanted | Never attach a size to an answer you are simultaneously asking for |
96
+ | Described a batch from the one member that was checked | Check the risk-deciding field on every member before describing the set |
97
+
98
+ **Route it to the narrowest store the host has**, in this order, and only one of them:
99
+
100
+ 1. The user's or project's agent memory, when the rule is about how to work with this user or this
101
+ project.
102
+ 2. The repository's own `CLAUDE.md` / `AGENTS.md`, when the rule is true only inside that codebase.
103
+ 3. A shared, cross-session store, when the rule holds across projects. Use `context-repo` to resolve
104
+ it, or `shared-knowledge-artifact` when several agents need to read the same ledger.
105
+
106
+ Broadening a rule's scope so it qualifies for a wider store is the failure mode to avoid: one
107
+ incident on one afternoon is not standing policy. Let the evidence decide where it lands.
108
+
109
+ **Each rule carries three things.** Without all three the next session cannot act on it:
110
+
111
+ - **The rule**, stated as the shape, in the imperative.
112
+ - **Why**, with the incident and its receipt, dated. A rule with no cost attached gets argued away.
113
+ - **How to apply**, naming the moment the rule fires ("before drafting outbound text", "before
114
+ describing a batch"), not just the principle.
115
+
116
+ Before writing to shared persistence, redact the incident evidence, including when using
117
+ `context-repo` or `shared-knowledge-artifact`, while still including the incident and its dated
118
+ receipt. This redaction requirement does not apply to local agent memory or repository-rule writes.
119
+
120
+ **Dedupe before writing.** Read the store first. If a rule of the same shape exists, sharpen it and
121
+ add this incident as further evidence rather than creating a second entry. Link related rules
122
+ instead of restating them.
123
+
124
+ **Then close the loop.** State in your report where the rule was written and what it says, so the
125
+ user can veto it. A rule the user has not seen is a rule they cannot correct.
57
126
 
58
127
  ## Critic prompt template
59
128
 
@@ -92,6 +161,9 @@ the default stance is that the answer is wrong until a live source proves otherw
92
161
  > - `missed`: related issues or patterns the author failed to surface, with IDs
93
162
  > - `unverifiable`: claims that need a source you do not have
94
163
  > - `fixes`: ranked, actionable - what to change to raise the score
164
+ > - `shapes`: for each item in `where_wrong`, the class of reasoning that produced it, stated so it
165
+ > would apply to a different task ("a conclusion drawn from evidence that does not cover the
166
+ > claim"), not the incident itself. Say `one-off` when the error has no reusable shape.
95
167
 
96
168
  ## Optional: auto-offer via a Claude Code Stop hook
97
169
 
@@ -138,3 +210,12 @@ message.
138
210
  - Diversity beats redundancy: if a claim can fail in more than one way, give the critic distinct
139
211
  lenses (correctness, completeness, does-it-reproduce) instead of repeating the same check.
140
212
  - The critic verifies against live sources; it does not rewrite the answer. You revise; it re-scores.
213
+ - Re-score by messaging the same critic rather than spawning a fresh one, and hand it the receipts
214
+ for whatever it could not verify in the earlier round, so round two spends its budget on the
215
+ claims still standing instead of re-deriving the ones already settled.
216
+ - A critic finding you disagree with is worth one challenge. Put the reasoning to it and let it rule;
217
+ if it concedes, that is a real answer for the report, and the reasoning is what the user needs to
218
+ see either way.
219
+ - The honest test of Step 5 is not that a rule was written, it is that the next task of the same
220
+ class does not need this skill to catch the same thing. If it does, the rule named the incident
221
+ instead of the shape - rewrite it, do not add another.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: self-critique
3
- description: Adversarially critique your own last substantial answer before the user has to. Spawn a critic agent that verifies every claim against live sources, checks similar and related issues, finds patterns, and addresses comments directly to you. Loop (revise, re-score) until satisfied, then report where you were wrong, iterations-to-satisfy, the numeric improvement, and a final score. Use when the user asks you to criticize, challenge, stress-test, or red-team your own answer, or accepts a "critical-thinking review" offer.
3
+ description: Adversarially critique your own last substantial answer before the user has to. Spawn a critic agent that verifies every claim against live sources, checks similar and related issues, finds patterns, and addresses comments directly to you. Loop (revise, re-score) until satisfied, report where you were wrong, iterations-to-satisfy, the numeric improvement and a final score, then convert what the critic caught into a durable rule so the next session does not repeat it. Use when the user asks you to criticize, challenge, stress-test, or red-team your own answer, or accepts a "critical-thinking review" offer.
4
4
  license: MIT
5
5
  compatibility: Codex, Claude Code, Cursor, and other Agent Skills compatible tools.
6
6
  metadata:
@@ -24,10 +24,13 @@ Run an adversarial review of **your own previous answer** and report the result
24
24
  A confident answer is not a verified one. This skill turns your last substantial reply into the
25
25
  subject of a hostile review: a separate critic agent tries to refute it against live sources, hunts
26
26
  for the related issue or pattern you missed, and scores it. You then revise and re-score until the
27
- score stops moving, and report the outcome honestly, including where you were wrong.
27
+ score stops moving, report the outcome honestly, including where you were wrong, and convert what
28
+ the critic caught into a rule that survives the session.
28
29
 
29
- The point is to surface error before the user does, and to make "is this actually right?" a measured
30
- quantity instead of a vibe.
30
+ The point is to surface error before the user does, to make "is this actually right?" a measured
31
+ quantity instead of a vibe, and to make the same mistake cost less the second time than it did the
32
+ first. A critique that ends at a score has bought one corrected answer. A critique that ends at a
33
+ durable rule has bought every answer after it.
31
34
 
32
35
  ## When to Use
33
36
 
@@ -44,11 +47,19 @@ answers.
44
47
  1. **Snapshot the target.** Capture your last substantial answer verbatim, plus the concrete claims
45
48
  it makes and the source each claim rests on. This is `v1`.
46
49
 
50
+ Write the claim list before you re-read the answer's prose, and put a real receipt against each
51
+ claim: a quoted field, a `file:line` whose body you actually opened, a command and its output.
52
+ A claim you cannot receipt at snapshot time is already a finding - mark it `unverified` yourself
53
+ rather than waiting for the critic to find it. Grep output, a file name, a path, an endpoint
54
+ string, or the behaviour of a sibling module are not receipts for what code does; they prove
55
+ those things exist, not what they do.
56
+
47
57
  2. **Spawn the critic.** Launch one independent agent with live-source access (issue tracker, code
48
58
  host, error monitor, the repo). Use the prompt template below. The critic must return: `score`
49
59
  (0-100), `verdict` (AGREE / AGREE-WITH-CAVEATS / DISAGREE), `where_wrong` (list), `missed`
50
60
  (related issues or patterns you failed to surface), `unverifiable` (claims it could not confirm),
51
- and `fixes` (ranked, actionable).
61
+ `fixes` (ranked, actionable), and `shapes` (the reusable class of reasoning behind each
62
+ `where_wrong` item, which Step 5 turns into the rule).
52
63
 
53
64
  3. **Decide and loop.** Stop if `score >= 90` OR no actionable `fixes` remain. Otherwise revise the
54
65
  answer using the fixes to produce `v2`, then re-spawn the critic to score `v2`. Repeat.
@@ -63,6 +74,64 @@ answers.
63
74
  If only one round ran, state `no revision needed`.
64
75
  - **Final score** - the critic's last score and verdict.
65
76
  - **Unverifiable** - anything you should not present as fact.
77
+ - **Declined fixes** - any ranked fix you chose not to take, and the reason. Silently dropping a
78
+ fix looks identical to missing it.
79
+
80
+ 5. **Convert the outcome into a durable rule.** See below. Skipping this step is what makes the
81
+ same critique necessary again next week.
82
+
83
+ ## Step 5: turn the critique into something that outlives the session
84
+
85
+ A score is a measurement, not an improvement. The improvement is the rule you write down, in a
86
+ place a future session actually reads, before you move on.
87
+
88
+ **Not every finding earns a rule.** Write one only when the finding passes both gates:
89
+
90
+ - **Recurrence** - the same *shape* of mistake could plausibly happen again on a different task.
91
+ - **Cost** - it would have reached the user, cost real rework, or damaged their credibility with
92
+ someone else.
93
+
94
+ A one-off factual slip, a typo, or a finding fully explained by this task's specifics fails both.
95
+ Writing a rule for it pollutes the store, and a littered store is worse than a thin one, because
96
+ the next session stops reading it.
97
+
98
+ **Write the shape, not the incident.** The incident is the evidence; the shape is the rule. Ask
99
+ what class of reasoning produced the error, then name that class:
100
+
101
+ | Incident | Shape worth keeping |
102
+ | --- | --- |
103
+ | Called an endpoint a read because the path was a noun and a sibling module imported | A conclusion drawn from evidence that does not cover the claim |
104
+ | Priced an open design question as "small" in the same sentence that asked which design was wanted | Never attach a size to an answer you are simultaneously asking for |
105
+ | Described a batch from the one member that was checked | Check the risk-deciding field on every member before describing the set |
106
+
107
+ **Route it to the narrowest store the host has**, in this order, and only one of them:
108
+
109
+ 1. The user's or project's agent memory, when the rule is about how to work with this user or this
110
+ project.
111
+ 2. The repository's own `CLAUDE.md` / `AGENTS.md`, when the rule is true only inside that codebase.
112
+ 3. A shared, cross-session store, when the rule holds across projects. Use `context-repo` to resolve
113
+ it, or `shared-knowledge-artifact` when several agents need to read the same ledger.
114
+
115
+ Broadening a rule's scope so it qualifies for a wider store is the failure mode to avoid: one
116
+ incident on one afternoon is not standing policy. Let the evidence decide where it lands.
117
+
118
+ **Each rule carries three things.** Without all three the next session cannot act on it:
119
+
120
+ - **The rule**, stated as the shape, in the imperative.
121
+ - **Why**, with the incident and its receipt, dated. A rule with no cost attached gets argued away.
122
+ - **How to apply**, naming the moment the rule fires ("before drafting outbound text", "before
123
+ describing a batch"), not just the principle.
124
+
125
+ Before writing to shared persistence, redact the incident evidence, including when using
126
+ `context-repo` or `shared-knowledge-artifact`, while still including the incident and its dated
127
+ receipt. This redaction requirement does not apply to local agent memory or repository-rule writes.
128
+
129
+ **Dedupe before writing.** Read the store first. If a rule of the same shape exists, sharpen it and
130
+ add this incident as further evidence rather than creating a second entry. Link related rules
131
+ instead of restating them.
132
+
133
+ **Then close the loop.** State in your report where the rule was written and what it says, so the
134
+ user can veto it. A rule the user has not seen is a rule they cannot correct.
66
135
 
67
136
  ## Critic prompt template
68
137
 
@@ -101,6 +170,9 @@ the default stance is that the answer is wrong until a live source proves otherw
101
170
  > - `missed`: related issues or patterns the author failed to surface, with IDs
102
171
  > - `unverifiable`: claims that need a source you do not have
103
172
  > - `fixes`: ranked, actionable - what to change to raise the score
173
+ > - `shapes`: for each item in `where_wrong`, the class of reasoning that produced it, stated so it
174
+ > would apply to a different task ("a conclusion drawn from evidence that does not cover the
175
+ > claim"), not the incident itself. Say `one-off` when the error has no reusable shape.
104
176
 
105
177
  ## Optional: auto-offer via a Claude Code Stop hook
106
178
 
@@ -147,3 +219,12 @@ message.
147
219
  - Diversity beats redundancy: if a claim can fail in more than one way, give the critic distinct
148
220
  lenses (correctness, completeness, does-it-reproduce) instead of repeating the same check.
149
221
  - The critic verifies against live sources; it does not rewrite the answer. You revise; it re-scores.
222
+ - Re-score by messaging the same critic rather than spawning a fresh one, and hand it the receipts
223
+ for whatever it could not verify in the earlier round, so round two spends its budget on the
224
+ claims still standing instead of re-deriving the ones already settled.
225
+ - A critic finding you disagree with is worth one challenge. Put the reasoning to it and let it rule;
226
+ if it concedes, that is a real answer for the report, and the reasoning is what the user needs to
227
+ see either way.
228
+ - The honest test of Step 5 is not that a rule was written, it is that the next task of the same
229
+ class does not need this skill to catch the same thing. If it does, the rule named the incident
230
+ instead of the shape - rewrite it, do not add another.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: self-critique
3
- description: Adversarially critique your own last substantial answer before the user has to. Spawn a critic agent that verifies every claim against live sources, checks similar and related issues, finds patterns, and addresses comments directly to you. Loop (revise, re-score) until satisfied, then report where you were wrong, iterations-to-satisfy, the numeric improvement, and a final score. Use when the user asks you to criticize, challenge, stress-test, or red-team your own answer, or accepts a "critical-thinking review" offer.
3
+ description: Adversarially critique your own last substantial answer before the user has to. Spawn a critic agent that verifies every claim against live sources, checks similar and related issues, finds patterns, and addresses comments directly to you. Loop (revise, re-score) until satisfied, report where you were wrong, iterations-to-satisfy, the numeric improvement and a final score, then convert what the critic caught into a durable rule so the next session does not repeat it. Use when the user asks you to criticize, challenge, stress-test, or red-team your own answer, or accepts a "critical-thinking review" offer.
4
4
  license: MIT
5
5
  compatibility: Codex, Claude Code, Cursor, and other Agent Skills compatible tools.
6
6
  metadata:
@@ -24,10 +24,13 @@ Run an adversarial review of **your own previous answer** and report the result
24
24
  A confident answer is not a verified one. This skill turns your last substantial reply into the
25
25
  subject of a hostile review: a separate critic agent tries to refute it against live sources, hunts
26
26
  for the related issue or pattern you missed, and scores it. You then revise and re-score until the
27
- score stops moving, and report the outcome honestly, including where you were wrong.
27
+ score stops moving, report the outcome honestly, including where you were wrong, and convert what
28
+ the critic caught into a rule that survives the session.
28
29
 
29
- The point is to surface error before the user does, and to make "is this actually right?" a measured
30
- quantity instead of a vibe.
30
+ The point is to surface error before the user does, to make "is this actually right?" a measured
31
+ quantity instead of a vibe, and to make the same mistake cost less the second time than it did the
32
+ first. A critique that ends at a score has bought one corrected answer. A critique that ends at a
33
+ durable rule has bought every answer after it.
31
34
 
32
35
  ## When to Use
33
36
 
@@ -44,11 +47,19 @@ answers.
44
47
  1. **Snapshot the target.** Capture your last substantial answer verbatim, plus the concrete claims
45
48
  it makes and the source each claim rests on. This is `v1`.
46
49
 
50
+ Write the claim list before you re-read the answer's prose, and put a real receipt against each
51
+ claim: a quoted field, a `file:line` whose body you actually opened, a command and its output.
52
+ A claim you cannot receipt at snapshot time is already a finding - mark it `unverified` yourself
53
+ rather than waiting for the critic to find it. Grep output, a file name, a path, an endpoint
54
+ string, or the behaviour of a sibling module are not receipts for what code does; they prove
55
+ those things exist, not what they do.
56
+
47
57
  2. **Spawn the critic.** Launch one independent agent with live-source access (issue tracker, code
48
58
  host, error monitor, the repo). Use the prompt template below. The critic must return: `score`
49
59
  (0-100), `verdict` (AGREE / AGREE-WITH-CAVEATS / DISAGREE), `where_wrong` (list), `missed`
50
60
  (related issues or patterns you failed to surface), `unverifiable` (claims it could not confirm),
51
- and `fixes` (ranked, actionable).
61
+ `fixes` (ranked, actionable), and `shapes` (the reusable class of reasoning behind each
62
+ `where_wrong` item, which Step 5 turns into the rule).
52
63
 
53
64
  3. **Decide and loop.** Stop if `score >= 90` OR no actionable `fixes` remain. Otherwise revise the
54
65
  answer using the fixes to produce `v2`, then re-spawn the critic to score `v2`. Repeat.
@@ -63,6 +74,64 @@ answers.
63
74
  If only one round ran, state `no revision needed`.
64
75
  - **Final score** - the critic's last score and verdict.
65
76
  - **Unverifiable** - anything you should not present as fact.
77
+ - **Declined fixes** - any ranked fix you chose not to take, and the reason. Silently dropping a
78
+ fix looks identical to missing it.
79
+
80
+ 5. **Convert the outcome into a durable rule.** See below. Skipping this step is what makes the
81
+ same critique necessary again next week.
82
+
83
+ ## Step 5: turn the critique into something that outlives the session
84
+
85
+ A score is a measurement, not an improvement. The improvement is the rule you write down, in a
86
+ place a future session actually reads, before you move on.
87
+
88
+ **Not every finding earns a rule.** Write one only when the finding passes both gates:
89
+
90
+ - **Recurrence** - the same *shape* of mistake could plausibly happen again on a different task.
91
+ - **Cost** - it would have reached the user, cost real rework, or damaged their credibility with
92
+ someone else.
93
+
94
+ A one-off factual slip, a typo, or a finding fully explained by this task's specifics fails both.
95
+ Writing a rule for it pollutes the store, and a littered store is worse than a thin one, because
96
+ the next session stops reading it.
97
+
98
+ **Write the shape, not the incident.** The incident is the evidence; the shape is the rule. Ask
99
+ what class of reasoning produced the error, then name that class:
100
+
101
+ | Incident | Shape worth keeping |
102
+ | --- | --- |
103
+ | Called an endpoint a read because the path was a noun and a sibling module imported | A conclusion drawn from evidence that does not cover the claim |
104
+ | Priced an open design question as "small" in the same sentence that asked which design was wanted | Never attach a size to an answer you are simultaneously asking for |
105
+ | Described a batch from the one member that was checked | Check the risk-deciding field on every member before describing the set |
106
+
107
+ **Route it to the narrowest store the host has**, in this order, and only one of them:
108
+
109
+ 1. The user's or project's agent memory, when the rule is about how to work with this user or this
110
+ project.
111
+ 2. The repository's own `CLAUDE.md` / `AGENTS.md`, when the rule is true only inside that codebase.
112
+ 3. A shared, cross-session store, when the rule holds across projects. Use `context-repo` to resolve
113
+ it, or `shared-knowledge-artifact` when several agents need to read the same ledger.
114
+
115
+ Broadening a rule's scope so it qualifies for a wider store is the failure mode to avoid: one
116
+ incident on one afternoon is not standing policy. Let the evidence decide where it lands.
117
+
118
+ **Each rule carries three things.** Without all three the next session cannot act on it:
119
+
120
+ - **The rule**, stated as the shape, in the imperative.
121
+ - **Why**, with the incident and its receipt, dated. A rule with no cost attached gets argued away.
122
+ - **How to apply**, naming the moment the rule fires ("before drafting outbound text", "before
123
+ describing a batch"), not just the principle.
124
+
125
+ Before writing to shared persistence, redact the incident evidence, including when using
126
+ `context-repo` or `shared-knowledge-artifact`, while still including the incident and its dated
127
+ receipt. This redaction requirement does not apply to local agent memory or repository-rule writes.
128
+
129
+ **Dedupe before writing.** Read the store first. If a rule of the same shape exists, sharpen it and
130
+ add this incident as further evidence rather than creating a second entry. Link related rules
131
+ instead of restating them.
132
+
133
+ **Then close the loop.** State in your report where the rule was written and what it says, so the
134
+ user can veto it. A rule the user has not seen is a rule they cannot correct.
66
135
 
67
136
  ## Critic prompt template
68
137
 
@@ -101,6 +170,9 @@ the default stance is that the answer is wrong until a live source proves otherw
101
170
  > - `missed`: related issues or patterns the author failed to surface, with IDs
102
171
  > - `unverifiable`: claims that need a source you do not have
103
172
  > - `fixes`: ranked, actionable - what to change to raise the score
173
+ > - `shapes`: for each item in `where_wrong`, the class of reasoning that produced it, stated so it
174
+ > would apply to a different task ("a conclusion drawn from evidence that does not cover the
175
+ > claim"), not the incident itself. Say `one-off` when the error has no reusable shape.
104
176
 
105
177
  ## Optional: auto-offer via a Claude Code Stop hook
106
178
 
@@ -147,3 +219,12 @@ message.
147
219
  - Diversity beats redundancy: if a claim can fail in more than one way, give the critic distinct
148
220
  lenses (correctness, completeness, does-it-reproduce) instead of repeating the same check.
149
221
  - The critic verifies against live sources; it does not rewrite the answer. You revise; it re-scores.
222
+ - Re-score by messaging the same critic rather than spawning a fresh one, and hand it the receipts
223
+ for whatever it could not verify in the earlier round, so round two spends its budget on the
224
+ claims still standing instead of re-deriving the ones already settled.
225
+ - A critic finding you disagree with is worth one challenge. Put the reasoning to it and let it rule;
226
+ if it concedes, that is a real answer for the report, and the reasoning is what the user needs to
227
+ see either way.
228
+ - The honest test of Step 5 is not that a rule was written, it is that the next task of the same
229
+ class does not need this skill to catch the same thing. If it does, the rule named the incident
230
+ instead of the shape - rewrite it, do not add another.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: self-critique
3
- description: Adversarially critique your own last substantial answer before the user has to. Spawn a critic agent that verifies every claim against live sources, checks similar and related issues, finds patterns, and addresses comments directly to you. Loop (revise, re-score) until satisfied, then report where you were wrong, iterations-to-satisfy, the numeric improvement, and a final score. Use when the user asks you to criticize, challenge, stress-test, or red-team your own answer, or accepts a "critical-thinking review" offer.
3
+ description: Adversarially critique your own last substantial answer before the user has to. Spawn a critic agent that verifies every claim against live sources, checks similar and related issues, finds patterns, and addresses comments directly to you. Loop (revise, re-score) until satisfied, report where you were wrong, iterations-to-satisfy, the numeric improvement and a final score, then convert what the critic caught into a durable rule so the next session does not repeat it. Use when the user asks you to criticize, challenge, stress-test, or red-team your own answer, or accepts a "critical-thinking review" offer.
4
4
  license: MIT
5
5
  compatibility: Codex, Claude Code, Cursor, and other Agent Skills compatible tools.
6
6
  metadata:
@@ -24,10 +24,13 @@ Run an adversarial review of **your own previous answer** and report the result
24
24
  A confident answer is not a verified one. This skill turns your last substantial reply into the
25
25
  subject of a hostile review: a separate critic agent tries to refute it against live sources, hunts
26
26
  for the related issue or pattern you missed, and scores it. You then revise and re-score until the
27
- score stops moving, and report the outcome honestly, including where you were wrong.
27
+ score stops moving, report the outcome honestly, including where you were wrong, and convert what
28
+ the critic caught into a rule that survives the session.
28
29
 
29
- The point is to surface error before the user does, and to make "is this actually right?" a measured
30
- quantity instead of a vibe.
30
+ The point is to surface error before the user does, to make "is this actually right?" a measured
31
+ quantity instead of a vibe, and to make the same mistake cost less the second time than it did the
32
+ first. A critique that ends at a score has bought one corrected answer. A critique that ends at a
33
+ durable rule has bought every answer after it.
31
34
 
32
35
  ## When to Use
33
36
 
@@ -44,11 +47,19 @@ answers.
44
47
  1. **Snapshot the target.** Capture your last substantial answer verbatim, plus the concrete claims
45
48
  it makes and the source each claim rests on. This is `v1`.
46
49
 
50
+ Write the claim list before you re-read the answer's prose, and put a real receipt against each
51
+ claim: a quoted field, a `file:line` whose body you actually opened, a command and its output.
52
+ A claim you cannot receipt at snapshot time is already a finding - mark it `unverified` yourself
53
+ rather than waiting for the critic to find it. Grep output, a file name, a path, an endpoint
54
+ string, or the behaviour of a sibling module are not receipts for what code does; they prove
55
+ those things exist, not what they do.
56
+
47
57
  2. **Spawn the critic.** Launch one independent agent with live-source access (issue tracker, code
48
58
  host, error monitor, the repo). Use the prompt template below. The critic must return: `score`
49
59
  (0-100), `verdict` (AGREE / AGREE-WITH-CAVEATS / DISAGREE), `where_wrong` (list), `missed`
50
60
  (related issues or patterns you failed to surface), `unverifiable` (claims it could not confirm),
51
- and `fixes` (ranked, actionable).
61
+ `fixes` (ranked, actionable), and `shapes` (the reusable class of reasoning behind each
62
+ `where_wrong` item, which Step 5 turns into the rule).
52
63
 
53
64
  3. **Decide and loop.** Stop if `score >= 90` OR no actionable `fixes` remain. Otherwise revise the
54
65
  answer using the fixes to produce `v2`, then re-spawn the critic to score `v2`. Repeat.
@@ -63,6 +74,64 @@ answers.
63
74
  If only one round ran, state `no revision needed`.
64
75
  - **Final score** - the critic's last score and verdict.
65
76
  - **Unverifiable** - anything you should not present as fact.
77
+ - **Declined fixes** - any ranked fix you chose not to take, and the reason. Silently dropping a
78
+ fix looks identical to missing it.
79
+
80
+ 5. **Convert the outcome into a durable rule.** See below. Skipping this step is what makes the
81
+ same critique necessary again next week.
82
+
83
+ ## Step 5: turn the critique into something that outlives the session
84
+
85
+ A score is a measurement, not an improvement. The improvement is the rule you write down, in a
86
+ place a future session actually reads, before you move on.
87
+
88
+ **Not every finding earns a rule.** Write one only when the finding passes both gates:
89
+
90
+ - **Recurrence** - the same *shape* of mistake could plausibly happen again on a different task.
91
+ - **Cost** - it would have reached the user, cost real rework, or damaged their credibility with
92
+ someone else.
93
+
94
+ A one-off factual slip, a typo, or a finding fully explained by this task's specifics fails both.
95
+ Writing a rule for it pollutes the store, and a littered store is worse than a thin one, because
96
+ the next session stops reading it.
97
+
98
+ **Write the shape, not the incident.** The incident is the evidence; the shape is the rule. Ask
99
+ what class of reasoning produced the error, then name that class:
100
+
101
+ | Incident | Shape worth keeping |
102
+ | --- | --- |
103
+ | Called an endpoint a read because the path was a noun and a sibling module imported | A conclusion drawn from evidence that does not cover the claim |
104
+ | Priced an open design question as "small" in the same sentence that asked which design was wanted | Never attach a size to an answer you are simultaneously asking for |
105
+ | Described a batch from the one member that was checked | Check the risk-deciding field on every member before describing the set |
106
+
107
+ **Route it to the narrowest store the host has**, in this order, and only one of them:
108
+
109
+ 1. The user's or project's agent memory, when the rule is about how to work with this user or this
110
+ project.
111
+ 2. The repository's own `CLAUDE.md` / `AGENTS.md`, when the rule is true only inside that codebase.
112
+ 3. A shared, cross-session store, when the rule holds across projects. Use `context-repo` to resolve
113
+ it, or `shared-knowledge-artifact` when several agents need to read the same ledger.
114
+
115
+ Broadening a rule's scope so it qualifies for a wider store is the failure mode to avoid: one
116
+ incident on one afternoon is not standing policy. Let the evidence decide where it lands.
117
+
118
+ **Each rule carries three things.** Without all three the next session cannot act on it:
119
+
120
+ - **The rule**, stated as the shape, in the imperative.
121
+ - **Why**, with the incident and its receipt, dated. A rule with no cost attached gets argued away.
122
+ - **How to apply**, naming the moment the rule fires ("before drafting outbound text", "before
123
+ describing a batch"), not just the principle.
124
+
125
+ Before writing to shared persistence, redact the incident evidence, including when using
126
+ `context-repo` or `shared-knowledge-artifact`, while still including the incident and its dated
127
+ receipt. This redaction requirement does not apply to local agent memory or repository-rule writes.
128
+
129
+ **Dedupe before writing.** Read the store first. If a rule of the same shape exists, sharpen it and
130
+ add this incident as further evidence rather than creating a second entry. Link related rules
131
+ instead of restating them.
132
+
133
+ **Then close the loop.** State in your report where the rule was written and what it says, so the
134
+ user can veto it. A rule the user has not seen is a rule they cannot correct.
66
135
 
67
136
  ## Critic prompt template
68
137
 
@@ -101,6 +170,9 @@ the default stance is that the answer is wrong until a live source proves otherw
101
170
  > - `missed`: related issues or patterns the author failed to surface, with IDs
102
171
  > - `unverifiable`: claims that need a source you do not have
103
172
  > - `fixes`: ranked, actionable - what to change to raise the score
173
+ > - `shapes`: for each item in `where_wrong`, the class of reasoning that produced it, stated so it
174
+ > would apply to a different task ("a conclusion drawn from evidence that does not cover the
175
+ > claim"), not the incident itself. Say `one-off` when the error has no reusable shape.
104
176
 
105
177
  ## Optional: auto-offer via a Claude Code Stop hook
106
178
 
@@ -147,3 +219,12 @@ message.
147
219
  - Diversity beats redundancy: if a claim can fail in more than one way, give the critic distinct
148
220
  lenses (correctness, completeness, does-it-reproduce) instead of repeating the same check.
149
221
  - The critic verifies against live sources; it does not rewrite the answer. You revise; it re-scores.
222
+ - Re-score by messaging the same critic rather than spawning a fresh one, and hand it the receipts
223
+ for whatever it could not verify in the earlier round, so round two spends its budget on the
224
+ claims still standing instead of re-deriving the ones already settled.
225
+ - A critic finding you disagree with is worth one challenge. Put the reasoning to it and let it rule;
226
+ if it concedes, that is a real answer for the report, and the reasoning is what the user needs to
227
+ see either way.
228
+ - The honest test of Step 5 is not that a rule was written, it is that the next task of the same
229
+ class does not need this skill to catch the same thing. If it does, the rule named the incident
230
+ instead of the shape - rewrite it, do not add another.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@olegkoval/agent-skills",
3
- "version": "1.48.0",
3
+ "version": "1.49.0",
4
4
  "private": false,
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "olko-apple-kit",
3
3
  "description": "Build and ship Apple platform apps: macOS menubar apps, App Store submissions.",
4
- "version": "1.48.0",
4
+ "version": "1.49.0",
5
5
  "author": {
6
6
  "name": "Oleg Koval"
7
7
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "olko-creative",
3
3
  "description": "Creative and personal projects: photo galleries, music players, listings, wiki editing.",
4
- "version": "1.48.0",
4
+ "version": "1.49.0",
5
5
  "author": {
6
6
  "name": "Oleg Koval"
7
7
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "olko-garmin-kit",
3
3
  "description": "Build, test and publish Garmin Connect IQ watch faces.",
4
- "version": "1.48.0",
4
+ "version": "1.49.0",
5
5
  "author": {
6
6
  "name": "Oleg Koval"
7
7
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "olko-git-tools",
3
3
  "description": "Everyday git and GitHub CLI operations: conventional commits, branch hygiene.",
4
- "version": "1.48.0",
4
+ "version": "1.49.0",
5
5
  "author": {
6
6
  "name": "Oleg Koval"
7
7
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "olko-github-pr",
3
3
  "description": "Drive GitHub pull requests to merge-ready: review-bot loops, CI fixes, descriptions, dependency triage.",
4
- "version": "1.48.0",
4
+ "version": "1.49.0",
5
5
  "author": {
6
6
  "name": "Oleg Koval"
7
7
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "olko-obsidian",
3
3
  "description": "Keep an Obsidian vault in sync with work: PR sync, task rollover, morning routine.",
4
- "version": "1.48.0",
4
+ "version": "1.49.0",
5
5
  "author": {
6
6
  "name": "Oleg Koval"
7
7
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "olko-product",
3
3
  "description": "Take a product idea to a shippable build: MVP passes, full-stack scaffolds, UX/UI quality loops, launch plans.",
4
- "version": "1.48.0",
4
+ "version": "1.49.0",
5
5
  "author": {
6
6
  "name": "Oleg Koval"
7
7
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "olko-reflection",
3
3
  "description": "Look back and improve: self-critique, retrospectives, performance review, rapid learning.",
4
- "version": "1.48.0",
4
+ "version": "1.49.0",
5
5
  "author": {
6
6
  "name": "Oleg Koval"
7
7
  },
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: self-critique
3
- description: Adversarially critique your own last substantial answer before the user has to. Spawn a critic agent that verifies every claim against live sources, checks similar and related issues, finds patterns, and addresses comments directly to you. Loop (revise, re-score) until satisfied, then report where you were wrong, iterations-to-satisfy, the numeric improvement, and a final score. Use when the user asks you to criticize, challenge, stress-test, or red-team your own answer, or accepts a "critical-thinking review" offer.
3
+ description: Adversarially critique your own last substantial answer before the user has to. Spawn a critic agent that verifies every claim against live sources, checks similar and related issues, finds patterns, and addresses comments directly to you. Loop (revise, re-score) until satisfied, report where you were wrong, iterations-to-satisfy, the numeric improvement and a final score, then convert what the critic caught into a durable rule so the next session does not repeat it. Use when the user asks you to criticize, challenge, stress-test, or red-team your own answer, or accepts a "critical-thinking review" offer.
4
4
  license: MIT
5
5
  compatibility: Codex, Claude Code, Cursor, and other Agent Skills compatible tools.
6
6
  metadata:
@@ -23,10 +23,13 @@ Run an adversarial review of **your own previous answer** and report the result
23
23
  A confident answer is not a verified one. This skill turns your last substantial reply into the
24
24
  subject of a hostile review: a separate critic agent tries to refute it against live sources, hunts
25
25
  for the related issue or pattern you missed, and scores it. You then revise and re-score until the
26
- score stops moving, and report the outcome honestly, including where you were wrong.
26
+ score stops moving, report the outcome honestly, including where you were wrong, and convert what
27
+ the critic caught into a rule that survives the session.
27
28
 
28
- The point is to surface error before the user does, and to make "is this actually right?" a measured
29
- quantity instead of a vibe.
29
+ The point is to surface error before the user does, to make "is this actually right?" a measured
30
+ quantity instead of a vibe, and to make the same mistake cost less the second time than it did the
31
+ first. A critique that ends at a score has bought one corrected answer. A critique that ends at a
32
+ durable rule has bought every answer after it.
30
33
 
31
34
  ## When to Use
32
35
 
@@ -43,11 +46,19 @@ answers.
43
46
  1. **Snapshot the target.** Capture your last substantial answer verbatim, plus the concrete claims
44
47
  it makes and the source each claim rests on. This is `v1`.
45
48
 
49
+ Write the claim list before you re-read the answer's prose, and put a real receipt against each
50
+ claim: a quoted field, a `file:line` whose body you actually opened, a command and its output.
51
+ A claim you cannot receipt at snapshot time is already a finding - mark it `unverified` yourself
52
+ rather than waiting for the critic to find it. Grep output, a file name, a path, an endpoint
53
+ string, or the behaviour of a sibling module are not receipts for what code does; they prove
54
+ those things exist, not what they do.
55
+
46
56
  2. **Spawn the critic.** Launch one independent agent with live-source access (issue tracker, code
47
57
  host, error monitor, the repo). Use the prompt template below. The critic must return: `score`
48
58
  (0-100), `verdict` (AGREE / AGREE-WITH-CAVEATS / DISAGREE), `where_wrong` (list), `missed`
49
59
  (related issues or patterns you failed to surface), `unverifiable` (claims it could not confirm),
50
- and `fixes` (ranked, actionable).
60
+ `fixes` (ranked, actionable), and `shapes` (the reusable class of reasoning behind each
61
+ `where_wrong` item, which Step 5 turns into the rule).
51
62
 
52
63
  3. **Decide and loop.** Stop if `score >= 90` OR no actionable `fixes` remain. Otherwise revise the
53
64
  answer using the fixes to produce `v2`, then re-spawn the critic to score `v2`. Repeat.
@@ -62,6 +73,64 @@ answers.
62
73
  If only one round ran, state `no revision needed`.
63
74
  - **Final score** - the critic's last score and verdict.
64
75
  - **Unverifiable** - anything you should not present as fact.
76
+ - **Declined fixes** - any ranked fix you chose not to take, and the reason. Silently dropping a
77
+ fix looks identical to missing it.
78
+
79
+ 5. **Convert the outcome into a durable rule.** See below. Skipping this step is what makes the
80
+ same critique necessary again next week.
81
+
82
+ ## Step 5: turn the critique into something that outlives the session
83
+
84
+ A score is a measurement, not an improvement. The improvement is the rule you write down, in a
85
+ place a future session actually reads, before you move on.
86
+
87
+ **Not every finding earns a rule.** Write one only when the finding passes both gates:
88
+
89
+ - **Recurrence** - the same *shape* of mistake could plausibly happen again on a different task.
90
+ - **Cost** - it would have reached the user, cost real rework, or damaged their credibility with
91
+ someone else.
92
+
93
+ A one-off factual slip, a typo, or a finding fully explained by this task's specifics fails both.
94
+ Writing a rule for it pollutes the store, and a littered store is worse than a thin one, because
95
+ the next session stops reading it.
96
+
97
+ **Write the shape, not the incident.** The incident is the evidence; the shape is the rule. Ask
98
+ what class of reasoning produced the error, then name that class:
99
+
100
+ | Incident | Shape worth keeping |
101
+ | --- | --- |
102
+ | Called an endpoint a read because the path was a noun and a sibling module imported | A conclusion drawn from evidence that does not cover the claim |
103
+ | Priced an open design question as "small" in the same sentence that asked which design was wanted | Never attach a size to an answer you are simultaneously asking for |
104
+ | Described a batch from the one member that was checked | Check the risk-deciding field on every member before describing the set |
105
+
106
+ **Route it to the narrowest store the host has**, in this order, and only one of them:
107
+
108
+ 1. The user's or project's agent memory, when the rule is about how to work with this user or this
109
+ project.
110
+ 2. The repository's own `CLAUDE.md` / `AGENTS.md`, when the rule is true only inside that codebase.
111
+ 3. A shared, cross-session store, when the rule holds across projects. Use `context-repo` to resolve
112
+ it, or `shared-knowledge-artifact` when several agents need to read the same ledger.
113
+
114
+ Broadening a rule's scope so it qualifies for a wider store is the failure mode to avoid: one
115
+ incident on one afternoon is not standing policy. Let the evidence decide where it lands.
116
+
117
+ **Each rule carries three things.** Without all three the next session cannot act on it:
118
+
119
+ - **The rule**, stated as the shape, in the imperative.
120
+ - **Why**, with the incident and its receipt, dated. A rule with no cost attached gets argued away.
121
+ - **How to apply**, naming the moment the rule fires ("before drafting outbound text", "before
122
+ describing a batch"), not just the principle.
123
+
124
+ Before writing to shared persistence, redact the incident evidence, including when using
125
+ `context-repo` or `shared-knowledge-artifact`, while still including the incident and its dated
126
+ receipt. This redaction requirement does not apply to local agent memory or repository-rule writes.
127
+
128
+ **Dedupe before writing.** Read the store first. If a rule of the same shape exists, sharpen it and
129
+ add this incident as further evidence rather than creating a second entry. Link related rules
130
+ instead of restating them.
131
+
132
+ **Then close the loop.** State in your report where the rule was written and what it says, so the
133
+ user can veto it. A rule the user has not seen is a rule they cannot correct.
65
134
 
66
135
  ## Critic prompt template
67
136
 
@@ -100,6 +169,9 @@ the default stance is that the answer is wrong until a live source proves otherw
100
169
  > - `missed`: related issues or patterns the author failed to surface, with IDs
101
170
  > - `unverifiable`: claims that need a source you do not have
102
171
  > - `fixes`: ranked, actionable - what to change to raise the score
172
+ > - `shapes`: for each item in `where_wrong`, the class of reasoning that produced it, stated so it
173
+ > would apply to a different task ("a conclusion drawn from evidence that does not cover the
174
+ > claim"), not the incident itself. Say `one-off` when the error has no reusable shape.
103
175
 
104
176
  ## Optional: auto-offer via a Claude Code Stop hook
105
177
 
@@ -146,3 +218,12 @@ message.
146
218
  - Diversity beats redundancy: if a claim can fail in more than one way, give the critic distinct
147
219
  lenses (correctness, completeness, does-it-reproduce) instead of repeating the same check.
148
220
  - The critic verifies against live sources; it does not rewrite the answer. You revise; it re-scores.
221
+ - Re-score by messaging the same critic rather than spawning a fresh one, and hand it the receipts
222
+ for whatever it could not verify in the earlier round, so round two spends its budget on the
223
+ claims still standing instead of re-deriving the ones already settled.
224
+ - A critic finding you disagree with is worth one challenge. Put the reasoning to it and let it rule;
225
+ if it concedes, that is a real answer for the report, and the reasoning is what the user needs to
226
+ see either way.
227
+ - The honest test of Step 5 is not that a rule was written, it is that the next task of the same
228
+ class does not need this skill to catch the same thing. If it does, the rule named the incident
229
+ instead of the shape - rewrite it, do not add another.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "olko-release",
3
3
  "description": "Ship a release: semantic-release setup, changelogs, store listing copy, release-day routine.",
4
- "version": "1.48.0",
4
+ "version": "1.49.0",
5
5
  "author": {
6
6
  "name": "Oleg Koval"
7
7
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "olko-skill-meta",
3
3
  "description": "Author and maintain agent skills and the AI toolchain itself.",
4
- "version": "1.48.0",
4
+ "version": "1.49.0",
5
5
  "author": {
6
6
  "name": "Oleg Koval"
7
7
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "olko-web-ops",
3
3
  "description": "Operate a website: WAF rules, search console audits, analytics bootstrap, docs indexes.",
4
- "version": "1.48.0",
4
+ "version": "1.49.0",
5
5
  "author": {
6
6
  "name": "Oleg Koval"
7
7
  },