@rse/ase 0.9.3 → 0.9.4
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/package.json +1 -1
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/.github/plugin/plugin.json +1 -1
- package/plugin/package.json +1 -1
- package/plugin/skills/ase-code-analyze/SKILL.md +162 -18
- package/plugin/skills/ase-code-analyze/help.md +47 -7
- package/plugin/skills/ase-code-lint/SKILL.md +10 -2
- package/plugin/skills/ase-code-lint/help.md +13 -0
- package/plugin/skills/ase-docs-distill/SKILL.md +1 -1
- package/plugin/skills/ase-meta-brainstorm/SKILL.md +13 -5
- package/plugin/skills/ase-meta-brainstorm/help.md +17 -3
- package/plugin/skills/ase-meta-diaboli/SKILL.md +33 -10
- package/plugin/skills/ase-meta-diaboli/help.md +20 -2
- package/plugin/skills/ase-meta-review/SKILL.md +20 -2
- package/plugin/skills/ase-meta-review/help.md +20 -2
- package/plugin/skills/ase-meta-steelman/SKILL.md +62 -11
- package/plugin/skills/ase-meta-steelman/help.md +34 -2
- package/plugin/skills/ase-meta-why/SKILL.md +20 -7
- package/plugin/skills/ase-meta-why/help.md +18 -5
- package/plugin/skills/ase-task-grill/SKILL.md +1 -1
package/package.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"homepage": "http://github.com/rse/ase",
|
|
7
7
|
"repository": { "url": "git+https://github.com/rse/ase.git", "type": "git" },
|
|
8
8
|
"bugs": { "url": "http://github.com/rse/ase/issues" },
|
|
9
|
-
"version": "0.9.
|
|
9
|
+
"version": "0.9.4",
|
|
10
10
|
"license": "GPL-3.0-only",
|
|
11
11
|
"author": {
|
|
12
12
|
"name": "Dr. Ralf S. Engelschall",
|
package/plugin/package.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"homepage": "http://github.com/rse/ase",
|
|
7
7
|
"repository": { "url": "git+https://github.com/rse/ase.git", "type": "git" },
|
|
8
8
|
"bugs": { "url": "http://github.com/rse/ase/issues" },
|
|
9
|
-
"version": "0.9.
|
|
9
|
+
"version": "0.9.4",
|
|
10
10
|
"license": "GPL-3.0-only",
|
|
11
11
|
"author": {
|
|
12
12
|
"name": "Dr. Ralf S. Engelschall",
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ase-code-analyze
|
|
3
|
-
argument-hint: "[--help|-h] <source-reference>"
|
|
3
|
+
argument-hint: "[--help|-h] [--performance|-p] [--security|-s] [--severity|-S=(LOW|MEDIUM|HIGH)] <source-reference>"
|
|
4
4
|
description: >
|
|
5
|
-
Analyze the source code for problems in the logic and
|
|
5
|
+
Analyze the source code for problems in either the logic and
|
|
6
|
+
semantics and its related control flow, performance and efficiency,
|
|
7
|
+
or security.
|
|
6
8
|
user-invocable: true
|
|
7
9
|
disable-model-invocation: false
|
|
8
10
|
effort: high
|
|
@@ -12,50 +14,174 @@ allowed-tools:
|
|
|
12
14
|
|
|
13
15
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
|
|
14
16
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
|
|
17
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
|
|
15
18
|
|
|
16
19
|
<skill name="ase-code-analyze">
|
|
17
20
|
Analyze Source Code
|
|
18
21
|
</skill>
|
|
19
22
|
|
|
23
|
+
<expand name="getopt"
|
|
24
|
+
arg1="ase-code-analyze"
|
|
25
|
+
arg2="--performance|-p --security|-s --severity|-S=(LOW|MEDIUM|HIGH)">
|
|
26
|
+
$ARGUMENTS
|
|
27
|
+
</expand>
|
|
28
|
+
|
|
20
29
|
<objective>
|
|
21
|
-
*Analyze* the source code of
|
|
22
|
-
code, for problems
|
|
23
|
-
*
|
|
30
|
+
*Analyze* the source code of <getopt-arguments/>, and its directly
|
|
31
|
+
related source code, for problems - read-only, *without* applying any
|
|
32
|
+
changes. The *analysis lens* depends on the selected options: problems
|
|
33
|
+
in its *logic* and *semantics* and its related *control flow*, or
|
|
34
|
+
problems in *performance* and *efficiency*, or problems in *security*.
|
|
24
35
|
</objective>
|
|
25
36
|
|
|
26
37
|
<flow>
|
|
27
38
|
|
|
28
|
-
1. <step id="STEP 1:
|
|
29
|
-
|
|
39
|
+
1. <step id="STEP 1: Sanity Check Usage">
|
|
40
|
+
|
|
41
|
+
<if condition="<getopt-option-performance/> is equal `true` and <getopt-option-security/> is equal `true`">
|
|
42
|
+
|
|
43
|
+
Only output the following <template/> and then *STOP* immediately:
|
|
44
|
+
|
|
45
|
+
<template>
|
|
46
|
+
⧉ **ASE**: ✪ skill: **ase-code-analyze**, ▶ ERROR: options `--performance` and `--security` are mutually exclusive
|
|
47
|
+
</template>
|
|
48
|
+
|
|
49
|
+
</if>
|
|
50
|
+
|
|
51
|
+
</step>
|
|
52
|
+
|
|
53
|
+
2. <step id="STEP 2: Investigate Code Base">
|
|
54
|
+
|
|
55
|
+
In this STEP 2, investigate on the code. If the code base is large,
|
|
30
56
|
you *MUST* use the `Agent` tool (not inline work) to create multiple
|
|
31
57
|
sub-agents to split the investigation task into appropriate chunks.
|
|
32
58
|
|
|
33
59
|
Tenets:
|
|
34
60
|
|
|
35
61
|
- **Quiet Operation**:
|
|
36
|
-
|
|
62
|
+
|
|
63
|
+
During investigation in this STEP 2, do *not* output anything else,
|
|
37
64
|
especially do not give any further explanations or information.
|
|
38
65
|
|
|
39
66
|
- **Practical Relevance Only**:
|
|
67
|
+
|
|
40
68
|
Focus on *practically relevant* cases and especially do *not*
|
|
41
69
|
investigate theoretical or fictive cases.
|
|
42
70
|
|
|
43
71
|
- **Problem Focus Only**:
|
|
72
|
+
|
|
44
73
|
Still focus on the *problem only* and do *not* already
|
|
45
|
-
investigate any possible *solution*.
|
|
74
|
+
investigate any possible *solution* or apply any *change*.
|
|
75
|
+
|
|
76
|
+
- **Lens Focus**:
|
|
77
|
+
|
|
78
|
+
<if condition="<getopt-option-performance/> is equal `true`">
|
|
79
|
+
|
|
80
|
+
Focus on *performance* and *efficiency* only - and do *not*
|
|
81
|
+
investigate logic, semantics, control flow, or security
|
|
82
|
+
problems.
|
|
83
|
+
|
|
84
|
+
Analysis Hints (not exhaustive, just indicators):
|
|
85
|
+
- high algorithmic complexity
|
|
86
|
+
- needless resource allocations/copies
|
|
87
|
+
- redundant recomputation
|
|
88
|
+
- many I/O and query round-trips
|
|
89
|
+
- concurrency bottlenecks
|
|
90
|
+
- mismatched data structures
|
|
91
|
+
- [...]
|
|
92
|
+
|
|
93
|
+
</if>
|
|
94
|
+
|
|
95
|
+
<if condition="<getopt-option-security/> is equal `true`">
|
|
96
|
+
|
|
97
|
+
Focus on *security* only - and do *not* investigate logic,
|
|
98
|
+
semantics, performance, or efficiency problems.
|
|
99
|
+
|
|
100
|
+
Analysis Hints (not exhaustive, just indicators):
|
|
101
|
+
- unsafe data deserialization
|
|
102
|
+
- missing input data validation/sanitization
|
|
103
|
+
- broken authentication/authorization
|
|
104
|
+
- sensitive-data exposure
|
|
105
|
+
- path traversal
|
|
106
|
+
- unsafe cryptography
|
|
107
|
+
- hard-coded secrets
|
|
108
|
+
- vulnerable dependencies
|
|
109
|
+
- [...]
|
|
110
|
+
|
|
111
|
+
</if>
|
|
112
|
+
|
|
113
|
+
<if condition="<getopt-option-performance/> is NOT equal `true` and <getopt-option-security/> is NOT equal `true`">
|
|
114
|
+
|
|
115
|
+
Focus on problems in the *logic* and *semantics* and the related
|
|
116
|
+
*control flow* only - and do *not* investigate performance,
|
|
117
|
+
efficiency, or security problems.
|
|
118
|
+
|
|
119
|
+
Analysis Hints (not exhaustive, just indicators):
|
|
120
|
+
- incorrect conditionals and boolean logic
|
|
121
|
+
- off-by-one and boundary errors
|
|
122
|
+
- operator misuse
|
|
123
|
+
- mishandled edge cases
|
|
124
|
+
- broken or missing error handling
|
|
125
|
+
- incorrect async/await/promise handling
|
|
126
|
+
- control-flow defects (unreachable code, missing breaks, wrong early returns)
|
|
127
|
+
- state-mutation bugs
|
|
128
|
+
- incorrect default values
|
|
129
|
+
- null/undefined mishandling
|
|
130
|
+
- type-coercion bugs
|
|
131
|
+
- faulty parsing or merge/override semantics
|
|
132
|
+
- [...]
|
|
133
|
+
|
|
134
|
+
</if>
|
|
135
|
+
|
|
136
|
+
You *MUST* not output anything in this STEP 2.
|
|
137
|
+
|
|
46
138
|
</step>
|
|
47
139
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
140
|
+
3. <step id="STEP 3: Show Results">
|
|
141
|
+
|
|
142
|
+
Before reporting, *apply the severity floor* selected via
|
|
143
|
+
<getopt-option-severity/> (default `LOW`): define the ordinal rank
|
|
144
|
+
`LOW`=1, `MEDIUM`=2, `HIGH`=3. *Keep* a detected problem if and only
|
|
145
|
+
if its <severity/> is `ACCEPTED` *or* `rank(severity)` is greater
|
|
146
|
+
than or equal to `rank(<getopt-option-severity/>)`; *silently drop*
|
|
147
|
+
all other problems (they are neither reported nor persisted). With
|
|
148
|
+
the default floor `LOW`, all problems are kept. `ACCEPTED` problems
|
|
149
|
+
are *never* dropped. Then renumber the surviving problems
|
|
150
|
+
contiguously as `P<n/>` with <n/> = 1, 2, ... in the original
|
|
151
|
+
ordering. If *all* problems are dropped, skip the per-problem report
|
|
152
|
+
but still emit the final hint <template/> below.
|
|
153
|
+
|
|
154
|
+
In this STEP 3, for *EVERY* surviving problem, immediately report
|
|
155
|
+
it with the following output <template/>, based on concise bullet
|
|
51
156
|
points.
|
|
52
157
|
|
|
158
|
+
<if condition="<getopt-option-performance/> is equal `true`">
|
|
159
|
+
|
|
53
160
|
<template>
|
|
54
|
-
|
|
161
|
+
|
|
162
|
+
<ase-tpl-bullet-signal/> **PROBLEM** (Severity: **<severity/>**): **P<n/>**: **<title/>**
|
|
163
|
+
|
|
164
|
+
<description/>
|
|
165
|
+
|
|
166
|
+
⊙ EVIDENCE: <evidence/>
|
|
167
|
+
⊖ TRADEOFF: <trade-off/>
|
|
168
|
+
|
|
169
|
+
</template>
|
|
170
|
+
|
|
171
|
+
</if>
|
|
172
|
+
|
|
173
|
+
<if condition="<getopt-option-performance/> is NOT equal `true`">
|
|
174
|
+
|
|
175
|
+
<template>
|
|
176
|
+
|
|
177
|
+
<ase-tpl-bullet-signal/> **PROBLEM** (Severity: **<severity/>**): **P<n/>**: **<title/>**
|
|
55
178
|
|
|
56
179
|
<description/>
|
|
180
|
+
|
|
57
181
|
</template>
|
|
58
182
|
|
|
183
|
+
</if>
|
|
184
|
+
|
|
59
185
|
Hints:
|
|
60
186
|
|
|
61
187
|
- For the final results, do *not* output anything else, especially do
|
|
@@ -77,7 +203,23 @@ code, for problems in its *logic* and *semantics* and its related
|
|
|
77
203
|
|
|
78
204
|
- In <description/>, classify the problem with a <severity/>
|
|
79
205
|
of <template>LOW</template>, <template>MEDIUM</template> or
|
|
80
|
-
<template>HIGH</template
|
|
206
|
+
<template>HIGH</template>, ranked by the estimated *impact* of the
|
|
207
|
+
problem.
|
|
208
|
+
|
|
209
|
+
- <if condition="<getopt-option-performance/> is equal `true`">
|
|
210
|
+
In <evidence/>, ground the finding by citing either the inferred
|
|
211
|
+
*Big-O* time/space complexity (e.g. `O(n²)` reducible to `O(n)`)
|
|
212
|
+
with the exact driving loop or recursion, or the matched
|
|
213
|
+
performance *anti-pattern* (e.g. N+1 query, sync-in-loop, repeated
|
|
214
|
+
recompute, string concat in loop), with an inline code reference.
|
|
215
|
+
</if>
|
|
216
|
+
|
|
217
|
+
- <if condition="<getopt-option-performance/> is equal `true`">
|
|
218
|
+
In <trade-off/>, state the *cost* of the optimization (e.g.
|
|
219
|
+
readability, additional memory for speed, added complexity), so
|
|
220
|
+
the user can make an informed decision; use *none* if there is no
|
|
221
|
+
meaningful trade-off.
|
|
222
|
+
</if>
|
|
81
223
|
|
|
82
224
|
- *Additionally*, persist all reported problems in a *single*
|
|
83
225
|
`ase_kv_batch` call to the `ase` MCP server with `transactional`
|
|
@@ -85,17 +227,19 @@ code, for problems in its *logic* and *semantics* and its related
|
|
|
85
227
|
starts with one `{ command: "clear" }` entry, followed by one
|
|
86
228
|
`{ command: "set", key: "ase-issue-P<n/>", val: "<title/>:
|
|
87
229
|
<description/>" }` entry per reported problem.
|
|
88
|
-
</step>
|
|
89
230
|
|
|
90
|
-
|
|
91
|
-
Finally, in this STEP 3, output the following <template/> to give a
|
|
92
|
-
final hint:
|
|
231
|
+
Finally, output the following <template/> to give a final hint:
|
|
93
232
|
|
|
94
233
|
<template>
|
|
95
234
|
⧉ **ASE**: ☻ skill: **<skill-name/>**, ▶ status: **skill finished**
|
|
96
235
|
⧉ **ASE**: ↪ hint: **For deeper analysis, suggestions on solution approaches and then final problem resolution, use `/ase-code-resolve P{n}` in the same or even a different session.**
|
|
97
236
|
</template>
|
|
237
|
+
|
|
238
|
+
You *MUST* not output anything else in this STEP 3,
|
|
239
|
+
especially not any further explanations.
|
|
240
|
+
|
|
98
241
|
</step>
|
|
99
242
|
|
|
100
243
|
</flow>
|
|
101
244
|
|
|
245
|
+
</output>
|
|
@@ -7,19 +7,41 @@
|
|
|
7
7
|
|
|
8
8
|
`ase-code-analyze`
|
|
9
9
|
[`--help`|`-h`]
|
|
10
|
+
[`--performance`|`-p`]
|
|
11
|
+
[`--security`|`-s`]
|
|
12
|
+
[`--severity`|`-S`=(`LOW`|`MEDIUM`|`HIGH`)]
|
|
10
13
|
*source-reference*
|
|
11
14
|
|
|
12
15
|
## DESCRIPTION
|
|
13
16
|
|
|
14
17
|
The `ase-code-analyze` skill analyzes the source code of the referenced
|
|
15
|
-
location, and its directly related source code, for problems
|
|
16
|
-
*
|
|
18
|
+
location, and its directly related source code, for problems. It is
|
|
19
|
+
*read-only* and advisory: it reports problems but applies *no* changes.
|
|
20
|
+
|
|
21
|
+
The *analysis lens* depends on the selected options:
|
|
22
|
+
|
|
23
|
+
- **default** (neither `--performance` nor `--security`): problems in
|
|
24
|
+
its *logic*, *semantics*, and related *control flow*.
|
|
25
|
+
|
|
26
|
+
- `--performance`|`-p`: problems in *performance* and *efficiency*.
|
|
27
|
+
|
|
28
|
+
- `--security`|`-s`: problems in *security*.
|
|
29
|
+
|
|
30
|
+
The `--performance` and `--security` options are *mutually exclusive*.
|
|
31
|
+
|
|
32
|
+
The `--severity`|`-S`=(`LOW`|`MEDIUM`|`HIGH`) option sets a *severity
|
|
33
|
+
floor* (default `LOW`): problems below the chosen threshold are silently
|
|
34
|
+
suppressed (neither reported nor persisted), ordered `LOW` < `MEDIUM` <
|
|
35
|
+
`HIGH`. The default `LOW` keeps all problems; `ACCEPTED` problems are
|
|
36
|
+
never suppressed. Surviving problems are renumbered contiguously as
|
|
37
|
+
`P<n>`.
|
|
17
38
|
|
|
18
39
|
The skill investigates the code base silently, reports each detected
|
|
19
|
-
problem as a `PROBLEM` entry with severity (`LOW`, `MEDIUM`, `HIGH`)
|
|
20
|
-
inline file/line references
|
|
21
|
-
|
|
22
|
-
|
|
40
|
+
problem as a `PROBLEM` entry with severity (`LOW`, `MEDIUM`, `HIGH`) and
|
|
41
|
+
inline file/line references (in the performance lens, each entry
|
|
42
|
+
additionally carries an *evidence* and a *trade-off* line), and persists
|
|
43
|
+
results in the `ase` MCP key/value store as `ase-issue-P<n>` entries so
|
|
44
|
+
they can later be resolved via `ase-code-resolve P<n>`.
|
|
23
45
|
|
|
24
46
|
## ARGUMENTS
|
|
25
47
|
|
|
@@ -29,7 +51,7 @@ resolved via `ase-code-resolve P<n>`.
|
|
|
29
51
|
|
|
30
52
|
## EXAMPLES
|
|
31
53
|
|
|
32
|
-
Analyze a specific source file:
|
|
54
|
+
Analyze a specific source file for logic/semantic problems:
|
|
33
55
|
|
|
34
56
|
```text
|
|
35
57
|
❯ /ase-code-analyze src/server.ts
|
|
@@ -41,6 +63,24 @@ Analyze a directory of code:
|
|
|
41
63
|
❯ /ase-code-analyze src/handlers/
|
|
42
64
|
```
|
|
43
65
|
|
|
66
|
+
Analyze a source file for performance/efficiency opportunities only:
|
|
67
|
+
|
|
68
|
+
```text
|
|
69
|
+
❯ /ase-code-analyze --performance src/server.ts
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Analyze a source file for security aspects only:
|
|
73
|
+
|
|
74
|
+
```text
|
|
75
|
+
❯ /ase-code-analyze -s src/handlers/
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Analyze a directory, reporting only `MEDIUM` and `HIGH` problems:
|
|
79
|
+
|
|
80
|
+
```text
|
|
81
|
+
❯ /ase-code-analyze -S MEDIUM src/handlers/
|
|
82
|
+
```
|
|
83
|
+
|
|
44
84
|
## SEE ALSO
|
|
45
85
|
|
|
46
86
|
`ase-code-resolve`, `ase-code-refactor`, `ase-code-lint`,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ase-code-lint
|
|
3
|
-
argument-hint: "[--help|-h] [--auto|-a] <source-reference>"
|
|
3
|
+
argument-hint: "[--help|-h] [--auto|-a] [--severity|-S=(LOW|MEDIUM|HIGH)] <source-reference>"
|
|
4
4
|
description: >
|
|
5
5
|
Lint source code for potential code quality problems.
|
|
6
6
|
Use when the user wants to "lint" or "check" source code.
|
|
@@ -20,7 +20,7 @@ Lint Source Code
|
|
|
20
20
|
|
|
21
21
|
<expand name="getopt"
|
|
22
22
|
arg1="ase-code-lint"
|
|
23
|
-
arg2="--auto|-a">
|
|
23
|
+
arg2="--auto|-a --severity|-S=(LOW|MEDIUM|HIGH)">
|
|
24
24
|
$ARGUMENTS
|
|
25
25
|
</expand>
|
|
26
26
|
|
|
@@ -59,6 +59,14 @@ related to a set of code quality aspects.
|
|
|
59
59
|
Parse the single result message of the `Agent` tool as a JSON array
|
|
60
60
|
and set <problems/> to that list.
|
|
61
61
|
|
|
62
|
+
Then *apply the severity floor* selected via <getopt-option-severity/>
|
|
63
|
+
(default `LOW`): define the ordinal rank `LOW`=1, `MEDIUM`=2,
|
|
64
|
+
`HIGH`=3. *Keep* a problem in <problems/> if and only if its
|
|
65
|
+
`severity` field is `ACCEPTED` *or* `rank(severity)` is greater than
|
|
66
|
+
or equal to `rank(<getopt-option-severity/>)`; *silently drop* all
|
|
67
|
+
other problems. With the default floor `LOW`, all problems are kept.
|
|
68
|
+
`ACCEPTED` problems are *never* dropped.
|
|
69
|
+
|
|
62
70
|
You *MUST* *NOT* output anything else in this step 1.
|
|
63
71
|
|
|
64
72
|
</step>
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
`ase-code-lint`
|
|
9
9
|
[`--help`|`-h`]
|
|
10
10
|
[`--auto`|`-a`]
|
|
11
|
+
[`--severity`|`-S`=(`LOW`|`MEDIUM`|`HIGH`)]
|
|
11
12
|
*source-reference*
|
|
12
13
|
|
|
13
14
|
## DESCRIPTION
|
|
@@ -29,6 +30,12 @@ automatically.
|
|
|
29
30
|
Automatically apply every proposed correction without asking the
|
|
30
31
|
user via the interactive dialog.
|
|
31
32
|
|
|
33
|
+
`--severity`|`-S`=(`LOW`|`MEDIUM`|`HIGH`):
|
|
34
|
+
Set the *severity floor* (default `LOW`): findings below the chosen
|
|
35
|
+
threshold are silently suppressed, ordered `LOW` < `MEDIUM` <
|
|
36
|
+
`HIGH`. The default `LOW` keeps all findings; `ACCEPTED` findings are
|
|
37
|
+
never suppressed.
|
|
38
|
+
|
|
32
39
|
## ARGUMENTS
|
|
33
40
|
|
|
34
41
|
*source-reference*:
|
|
@@ -48,6 +55,12 @@ Lint a directory and automatically apply all corrections:
|
|
|
48
55
|
❯ /ase-code-lint --auto src/handlers/
|
|
49
56
|
```
|
|
50
57
|
|
|
58
|
+
Lint a directory, reporting only `MEDIUM` and `HIGH` findings:
|
|
59
|
+
|
|
60
|
+
```text
|
|
61
|
+
❯ /ase-code-lint -S MEDIUM src/handlers/
|
|
62
|
+
```
|
|
63
|
+
|
|
51
64
|
## SEE ALSO
|
|
52
65
|
|
|
53
66
|
`ase-code-analyze`, `ase-code-resolve`, `ase-code-refactor`,
|
|
@@ -109,7 +109,7 @@ explicitly requested by this procedure via outputs based on a <template/>!
|
|
|
109
109
|
where `Ls` is the start line and `Le` is the end line.
|
|
110
110
|
|
|
111
111
|
- A *verbatim* <evidence/> snippet, copied exactly from
|
|
112
|
-
<source/> (but with all newlines
|
|
112
|
+
<source/> (but with all newlines replaced with spaces
|
|
113
113
|
and multiple spaces collapsed into a single space), that
|
|
114
114
|
*proves* the point. The cited snippet *MUST* prove the
|
|
115
115
|
point verbatim. If it does not, *re-investigate and re-cite
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ase-meta-brainstorm
|
|
3
|
-
argument-hint: "[--help|-h] <topic>"
|
|
3
|
+
argument-hint: "[--help|-h] [--count|-c=12] <topic>"
|
|
4
4
|
description: >
|
|
5
5
|
Collaboratively brainstorm a topic by diverging on ideas, converging
|
|
6
6
|
through clustering and scoring, and distilling a shortlist with
|
|
@@ -15,13 +15,20 @@ effort: high
|
|
|
15
15
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
|
|
16
16
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
|
|
17
17
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-dialog.md
|
|
18
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
|
|
18
19
|
|
|
19
20
|
<skill name="ase-meta-brainstorm">
|
|
20
21
|
Collaboratively Brainstorm a Topic
|
|
21
22
|
</skill>
|
|
22
23
|
|
|
24
|
+
<expand name="getopt"
|
|
25
|
+
arg1="ase-meta-brainstorm"
|
|
26
|
+
arg2="--count|-c=12">
|
|
27
|
+
$ARGUMENTS
|
|
28
|
+
</expand>
|
|
29
|
+
|
|
23
30
|
<objective>
|
|
24
|
-
Collaboratively brainstorm the topic <topic
|
|
31
|
+
Collaboratively brainstorm the topic <topic><getopt-arguments/></topic> by first
|
|
25
32
|
*diverging* into a broad space of candidate ideas, then *converging*
|
|
26
33
|
through clustering and scoring, and finally distilling a *shortlist*
|
|
27
34
|
with a single recommended direction.
|
|
@@ -88,7 +95,7 @@ Honor the following tenets throughout the brainstorming:
|
|
|
88
95
|
that must be pinned down for the brainstorming to be reasonably
|
|
89
96
|
grounded.
|
|
90
97
|
|
|
91
|
-
Notice: you are intentionally
|
|
98
|
+
Notice: you are intentionally constrained to just 1-3 unknowns,
|
|
92
99
|
as too much upfront intent clarification kills the brainstorming
|
|
93
100
|
of ideas later. So, you *MUST* reduce the clarifications of the
|
|
94
101
|
unknowns to the absolute minimum!
|
|
@@ -152,8 +159,9 @@ Honor the following tenets throughout the brainstorming:
|
|
|
152
159
|
variety in outcome.
|
|
153
160
|
|
|
154
161
|
Do still *not* judge, rank, or prune ideas in this step. Generate
|
|
155
|
-
ideas until you either reach at least
|
|
156
|
-
have clearly exhausted the meaningfully distinct
|
|
162
|
+
ideas until you either reach at least <getopt-option-count/> distinct
|
|
163
|
+
candidate ideas or have clearly exhausted the meaningfully distinct
|
|
164
|
+
space.
|
|
157
165
|
|
|
158
166
|
Store each candidate idea in <idea-N/> with the format
|
|
159
167
|
`**<idea-name-N/>**: <idea-statement-N/>` (where <idea-name-N/> is a
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
`ase-meta-brainstorm`
|
|
9
9
|
[`--help`|`-h`]
|
|
10
|
+
[`--count`|`-c=12`]
|
|
10
11
|
*topic*
|
|
11
12
|
|
|
12
13
|
## DESCRIPTION
|
|
@@ -16,9 +17,9 @@ session on a *topic* *before* any implementation begins. It first
|
|
|
16
17
|
*clarifies intent* by exploring the project context and interviewing
|
|
17
18
|
the user - one grounded, multiple-choice question at a time - about
|
|
18
19
|
purpose, constraints, scope, and success criteria. It then *diverges*
|
|
19
|
-
into a broad space of candidate ideas
|
|
20
|
-
angles (MVP-first, risk-first,
|
|
21
|
-
without judging them.
|
|
20
|
+
into a broad space of candidate ideas (at least `--count`, default 12)
|
|
21
|
+
pursued from deliberately diverse angles (MVP-first, risk-first,
|
|
22
|
+
UX-first, reuse-first, and wildcard), without judging them.
|
|
22
23
|
|
|
23
24
|
Next it *converges* by clustering the ideas into coherent themes,
|
|
24
25
|
pruning speculative or out-of-scope ones via *YAGNI*, and scoring the
|
|
@@ -32,6 +33,13 @@ On completion the skill offers a *next step*: stop, or hand the
|
|
|
32
33
|
recommended direction off to the `ase-task-edit`, `ase-code-craft`, or
|
|
33
34
|
`ase-task-preflight` skills.
|
|
34
35
|
|
|
36
|
+
## OPTIONS
|
|
37
|
+
|
|
38
|
+
`--count`|`-c=12`:
|
|
39
|
+
The *minimum* number of candidate ideas to generate in the *diverge*
|
|
40
|
+
phase before converging (default: 12). Raise it for a broader idea
|
|
41
|
+
space, lower it for a quicker, narrower session.
|
|
42
|
+
|
|
35
43
|
## ARGUMENTS
|
|
36
44
|
|
|
37
45
|
*topic*:
|
|
@@ -46,6 +54,12 @@ Brainstorm an approach for a new feature:
|
|
|
46
54
|
❯ /ase-meta-brainstorm an offline-first sync layer for the mobile app
|
|
47
55
|
```
|
|
48
56
|
|
|
57
|
+
Brainstorm with a broader idea space of at least 20 candidates:
|
|
58
|
+
|
|
59
|
+
```text
|
|
60
|
+
❯ /ase-meta-brainstorm --count 20 an offline-first sync layer
|
|
61
|
+
```
|
|
62
|
+
|
|
49
63
|
## SEE ALSO
|
|
50
64
|
|
|
51
65
|
`ase-meta-evaluate`, `ase-meta-quorum`, `ase-meta-diaboli`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ase-meta-diaboli
|
|
3
|
-
argument-hint: "[--help|-h] <thesis>"
|
|
3
|
+
argument-hint: "[--help|-h] [--count|-c <count>] <thesis>"
|
|
4
4
|
description: >
|
|
5
5
|
Challenge a thesis by playing "Devil’s Advocate" (latin: "Advocatus
|
|
6
6
|
Diaboli"). Use when the user wants a thesis or statement
|
|
@@ -12,25 +12,40 @@ effort: xhigh
|
|
|
12
12
|
|
|
13
13
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
|
|
14
14
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
|
|
15
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
|
|
15
16
|
|
|
16
17
|
<skill name="ase-meta-diaboli">
|
|
17
18
|
Play "Devil's Advocate"
|
|
18
19
|
</skill>
|
|
19
20
|
|
|
21
|
+
<expand name="getopt"
|
|
22
|
+
arg1="ase-meta-diaboli"
|
|
23
|
+
arg2="--count|-c=10">
|
|
24
|
+
$ARGUMENTS
|
|
25
|
+
</expand>
|
|
26
|
+
|
|
20
27
|
<objective>
|
|
21
28
|
Play "Devil’s Advocate" (latin: "Advocatus Diaboli") by relentlessly
|
|
22
|
-
challenging or criticising the thesis: <thesis
|
|
29
|
+
challenging or criticising the thesis: <thesis><getopt-arguments/></thesis>
|
|
23
30
|
</objective>
|
|
24
31
|
|
|
25
|
-
|
|
32
|
+
Determine the minimum number of *anti-theses* to surface: set <count/>
|
|
33
|
+
to <getopt-option-count/>; if <getopt-option-count/> is *non-numeric* or
|
|
34
|
+
*less than or equal to 0*, use the default *10* instead.
|
|
35
|
+
|
|
36
|
+
<flow>
|
|
37
|
+
|
|
38
|
+
1. <step id="STEP 1: Repeat Thesis">
|
|
26
39
|
|
|
27
40
|
Output the thesis with the following <template/>:
|
|
28
41
|
|
|
29
42
|
<template>
|
|
30
|
-
<ase-tpl-bullet-
|
|
43
|
+
<ase-tpl-bullet-normal/> **THESIS**: <thesis/>
|
|
31
44
|
</template>
|
|
32
45
|
|
|
33
|
-
|
|
46
|
+
</step>
|
|
47
|
+
|
|
48
|
+
2. <step id="STEP 2: Determine Anti-Theses">
|
|
34
49
|
|
|
35
50
|
Reason on the thesis in <thesis/> by playing *Devil's Advocate*
|
|
36
51
|
(latin: *Advocatus Diaboli*) by relentlessly challenging or
|
|
@@ -103,11 +118,11 @@ effort: xhigh
|
|
|
103
118
|
For each Anti-Thesis or Counter-Argument rank it on a Likert scale
|
|
104
119
|
of 0 (weak) to 10 (strong). Repeat the process of finding more
|
|
105
120
|
Anti-Theses or Counter-Arguments until you EITHER have found at
|
|
106
|
-
least
|
|
107
|
-
of 7 OR you have already checked a total of
|
|
108
|
-
Counter-Arguments.
|
|
121
|
+
least <count/> Anti-Theses or Counter-Arguments with at least a rank
|
|
122
|
+
of 7 OR you have already checked a total of <count/> x 5 Anti-Theses
|
|
123
|
+
or Counter-Arguments.
|
|
109
124
|
|
|
110
|
-
Then, for the top
|
|
125
|
+
Then, for the top-<count/> highest-ranked Anti-Theses or
|
|
111
126
|
Counter-Arguments, sort them by their rank from highest to lowest,
|
|
112
127
|
store each in <antithesis-N/> with the format `**<aspect-N/>**
|
|
113
128
|
(rank: <rank-N/>/10): <statement-N/>` (where <aspect-N/> is a short
|
|
@@ -120,7 +135,9 @@ effort: xhigh
|
|
|
120
135
|
<ase-tpl-bullet-signal/> **ANTITHESIS**: <antithesis-N/>
|
|
121
136
|
</template>
|
|
122
137
|
|
|
123
|
-
|
|
138
|
+
</step>
|
|
139
|
+
|
|
140
|
+
3. <step id="STEP 3: Dialectical Reasoning">
|
|
124
141
|
|
|
125
142
|
Following the Hegelian dialectics of...
|
|
126
143
|
|
|
@@ -150,3 +167,9 @@ effort: xhigh
|
|
|
150
167
|
<ase-tpl-bullet-normal/> **SYNTHESIS**: <synthesis/>
|
|
151
168
|
</template>
|
|
152
169
|
|
|
170
|
+
Do not output any further explanations.
|
|
171
|
+
|
|
172
|
+
</step>
|
|
173
|
+
|
|
174
|
+
</flow>
|
|
175
|
+
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
`ase-meta-diaboli`
|
|
9
9
|
[`--help`|`-h`]
|
|
10
|
+
[`--count`|`-c` *count*]
|
|
10
11
|
*thesis*
|
|
11
12
|
|
|
12
13
|
## DESCRIPTION
|
|
@@ -20,20 +21,31 @@ cases, *Reductio Ad Absurdum*, exposing hidden costs, and pre-mortem
|
|
|
20
21
|
thinking - while targeting the claim rather than its proponent and
|
|
21
22
|
yielding where the argument genuinely holds.
|
|
22
23
|
|
|
23
|
-
The skill iterates until it has found at least
|
|
24
|
+
The skill iterates until it has found at least *count* anti-theses
|
|
24
25
|
(counter-arguments) each ranked at least 7 on a 0 (weak) to 10
|
|
25
|
-
(strong) Likert scale, reports the top
|
|
26
|
+
(strong) Likert scale, reports the top *count* sorted from strongest to
|
|
26
27
|
weakest, and finally applies *Hegelian dialectics* (*Thesis* +
|
|
27
28
|
*Antithesis* → *Synthesis*) to derive a single-sentence *SYNTHESIS*
|
|
28
29
|
that preserves what is true in both the thesis and its antitheses
|
|
29
30
|
while discarding what is false.
|
|
30
31
|
|
|
32
|
+
The `--count`/`-c` *count* option sets the minimum number of strong
|
|
33
|
+
anti-theses to surface (default *10*), raising or lowering the floor of
|
|
34
|
+
counter-arguments hunted for, sorted, and reported in the single
|
|
35
|
+
challenge pass. A `0`, negative, or non-numeric value falls back to the
|
|
36
|
+
default *10*.
|
|
37
|
+
|
|
31
38
|
The intent is constructive: stress-testing the thesis in good faith to
|
|
32
39
|
arrive at a better final decision, not obstructing or merely being
|
|
33
40
|
contrarian.
|
|
34
41
|
|
|
35
42
|
## ARGUMENTS
|
|
36
43
|
|
|
44
|
+
`--count`, `-c` *count*:
|
|
45
|
+
Surface at least *count* strong anti-theses (default *10*) before
|
|
46
|
+
sorting and reporting the top *count* and deriving the *SYNTHESIS*. An
|
|
47
|
+
invalid or non-positive *count* reverts to the default *10*.
|
|
48
|
+
|
|
37
49
|
*thesis*:
|
|
38
50
|
The statement, claim, or position to be relentlessly challenged.
|
|
39
51
|
It may be technical, factual, or opinion-based; the skill attacks
|
|
@@ -53,6 +65,12 @@ Stress-test a design decision:
|
|
|
53
65
|
❯ /ase-meta-diaboli We should rewrite the service in Rust.
|
|
54
66
|
```
|
|
55
67
|
|
|
68
|
+
Surface at least fifteen anti-theses:
|
|
69
|
+
|
|
70
|
+
```text
|
|
71
|
+
❯ /ase-meta-diaboli --count 15 We should rewrite the service in Rust.
|
|
72
|
+
```
|
|
73
|
+
|
|
56
74
|
## SEE ALSO
|
|
57
75
|
|
|
58
76
|
`ase-meta-why`, `ase-meta-evaluate`, `ase-meta-quorum`,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ase-meta-review
|
|
3
|
-
argument-hint: "[--help|-h]"
|
|
3
|
+
argument-hint: "[--help|-h] [--severity|-S=(LOW|MEDIUM|HIGH)]"
|
|
4
4
|
description: >
|
|
5
5
|
Perform a holistic, human-reviewer-style critique of the currently
|
|
6
6
|
staged Git changes and emit an approve/reject verdict with
|
|
@@ -17,11 +17,19 @@ allowed-tools:
|
|
|
17
17
|
|
|
18
18
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
|
|
19
19
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
|
|
20
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-dialog.md
|
|
21
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
|
|
20
22
|
|
|
21
23
|
<skill name="ase-meta-review">
|
|
22
24
|
Review Staged Changes
|
|
23
25
|
</skill>
|
|
24
26
|
|
|
27
|
+
<expand name="getopt"
|
|
28
|
+
arg1="ase-meta-review"
|
|
29
|
+
arg2="--severity|-S=(LOW|MEDIUM|HIGH)">
|
|
30
|
+
$ARGUMENTS
|
|
31
|
+
</expand>
|
|
32
|
+
|
|
25
33
|
<objective>
|
|
26
34
|
Review the currently staged Git changes the way an *experienced human
|
|
27
35
|
reviewer* would - judging them *holistically* against the change's *own
|
|
@@ -98,7 +106,17 @@ explicitly requested by this procedure via outputs based on a <template/>!
|
|
|
98
106
|
Then *derive* the overall <verdict/> from <findings/>: set
|
|
99
107
|
<verdict/> to `REJECT - DEMANDS CHANGES` if *any* finding in
|
|
100
108
|
<findings/> has a `severity` field of `HIGH`; otherwise set
|
|
101
|
-
<verdict/> to `APPROVE`.
|
|
109
|
+
<verdict/> to `APPROVE`. The verdict is derived *before* the
|
|
110
|
+
severity floor below, so a suppressed `HIGH` finding still drives the
|
|
111
|
+
verdict.
|
|
112
|
+
|
|
113
|
+
Then *apply the severity floor* selected via <getopt-option-severity/>
|
|
114
|
+
(default `LOW`): define the ordinal rank `LOW`=1, `MEDIUM`=2,
|
|
115
|
+
`HIGH`=3. *Keep* a finding in <findings/> if and only if its
|
|
116
|
+
`severity` field is `ACCEPTED` *or* `rank(severity)` is greater than
|
|
117
|
+
or equal to `rank(<getopt-option-severity/>)`; *silently drop* all
|
|
118
|
+
other findings. With the default floor `LOW`, all findings are kept.
|
|
119
|
+
`ACCEPTED` findings are *never* dropped.
|
|
102
120
|
|
|
103
121
|
You *MUST* *NOT* output anything else in this STEP 2.
|
|
104
122
|
|
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
## SYNOPSIS
|
|
7
7
|
|
|
8
8
|
`ase-meta-review`
|
|
9
|
+
[`--help`|`-h`]
|
|
10
|
+
[`--severity`|`-S`=(`LOW`|`MEDIUM`|`HIGH`)]
|
|
9
11
|
|
|
10
12
|
## DESCRIPTION
|
|
11
13
|
|
|
@@ -51,10 +53,20 @@ inspects *logic and semantics*, `ase-meta-diff` narrates *what changed*
|
|
|
51
53
|
`ase-meta-review` renders a *reviewer's judgement* on a concrete diff
|
|
52
54
|
before it is committed.
|
|
53
55
|
|
|
56
|
+
## OPTIONS
|
|
57
|
+
|
|
58
|
+
`--severity`|`-S`=(`LOW`|`MEDIUM`|`HIGH`):
|
|
59
|
+
Set the *severity floor* (default `LOW`): findings below the chosen
|
|
60
|
+
threshold are silently suppressed, ordered `LOW` < `MEDIUM` <
|
|
61
|
+
`HIGH`. The default `LOW` keeps all findings; `ACCEPTED` findings are
|
|
62
|
+
never suppressed. The floor only affects the rendered findings table;
|
|
63
|
+
the overall *verdict* is still derived from all findings, so a
|
|
64
|
+
suppressed `HIGH` finding still yields a *REJECT* verdict.
|
|
65
|
+
|
|
54
66
|
## ARGUMENTS
|
|
55
67
|
|
|
56
|
-
The `ase-meta-review` skill takes no arguments; it always
|
|
57
|
-
currently *staged* Git changes.
|
|
68
|
+
The `ase-meta-review` skill takes no positional arguments; it always
|
|
69
|
+
reviews the currently *staged* Git changes.
|
|
58
70
|
|
|
59
71
|
## EXAMPLES
|
|
60
72
|
|
|
@@ -64,6 +76,12 @@ Review the currently staged changes before committing:
|
|
|
64
76
|
❯ /ase-meta-review
|
|
65
77
|
```
|
|
66
78
|
|
|
79
|
+
Review the staged changes, reporting only `MEDIUM` and `HIGH` findings:
|
|
80
|
+
|
|
81
|
+
```text
|
|
82
|
+
❯ /ase-meta-review -S MEDIUM
|
|
83
|
+
```
|
|
84
|
+
|
|
67
85
|
## SEE ALSO
|
|
68
86
|
|
|
69
87
|
`ase-meta-diff`, `ase-meta-commit`, `ase-code-lint`, `ase-code-analyze`,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ase-meta-steelman
|
|
3
|
-
argument-hint: "[--help|-h] <thesis>"
|
|
3
|
+
argument-hint: "[--help|-h] [--count|-c <count>] [--rounds|-r <rounds>] <thesis>"
|
|
4
4
|
description: >
|
|
5
5
|
Build the strongest possible case for a thesis by playing
|
|
6
6
|
"Steelman" (Latin spirit: "Advocatus Dei"). Use when the user
|
|
@@ -12,25 +12,57 @@ effort: xhigh
|
|
|
12
12
|
|
|
13
13
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
|
|
14
14
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
|
|
15
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
|
|
15
16
|
|
|
16
17
|
<skill name="ase-meta-steelman">
|
|
17
18
|
Build the "Steelman" Argument
|
|
18
19
|
</skill>
|
|
19
20
|
|
|
21
|
+
<expand name="getopt"
|
|
22
|
+
arg1="ase-meta-steelman"
|
|
23
|
+
arg2="--count|-c=10 --rounds|-r=1">
|
|
24
|
+
$ARGUMENTS
|
|
25
|
+
</expand>
|
|
26
|
+
|
|
20
27
|
<objective>
|
|
21
28
|
Build the "Steelman" argument by constructing the strongest
|
|
22
|
-
possible case for the thesis: <thesis
|
|
29
|
+
possible case for the thesis: <thesis><getopt-arguments/></thesis>
|
|
23
30
|
</objective>
|
|
24
31
|
|
|
25
|
-
|
|
32
|
+
Determine the number of *rounds* to perform: set <rounds/> to
|
|
33
|
+
<getopt-option-rounds/>; if <getopt-option-rounds/> is *non-numeric* or
|
|
34
|
+
*less than or equal to 0*, use the default *1* instead.
|
|
35
|
+
|
|
36
|
+
Determine the minimum number of *pro-theses* to surface: set <count/>
|
|
37
|
+
to <getopt-option-count/>; if <getopt-option-count/> is *non-numeric* or
|
|
38
|
+
*less than or equal to 0*, use the default *10* instead.
|
|
39
|
+
|
|
40
|
+
<flow>
|
|
41
|
+
|
|
42
|
+
1. <step id="STEP 1: Repeat Thesis">
|
|
43
|
+
|
|
44
|
+
Begin a *round* of fortification and consolidating reasoning. On
|
|
45
|
+
the first visit, set <i>1</i> (set round counter to one); on each
|
|
46
|
+
subsequent visit (via the jump back in the last step), <i/> has
|
|
47
|
+
already been incremented.
|
|
48
|
+
|
|
49
|
+
<if condition="<rounds/> is greater than 1">
|
|
50
|
+
Indicate the current round with the following <template/>:
|
|
51
|
+
|
|
52
|
+
<template>
|
|
53
|
+
<ase-tpl-bullet-secondary/> **ROUND**: <i/>/<rounds/>
|
|
54
|
+
</template>
|
|
55
|
+
</if>
|
|
26
56
|
|
|
27
57
|
Output the thesis with the following <template/>:
|
|
28
58
|
|
|
29
59
|
<template>
|
|
30
|
-
<ase-tpl-bullet-
|
|
60
|
+
<ase-tpl-bullet-normal/> **THESIS**: <thesis/>
|
|
31
61
|
</template>
|
|
32
62
|
|
|
33
|
-
|
|
63
|
+
</step>
|
|
64
|
+
|
|
65
|
+
2. <step id="STEP 2: Determine Pro-Theses">
|
|
34
66
|
|
|
35
67
|
Reason on the thesis in <thesis/> by playing *Steelman* (Latin
|
|
36
68
|
spirit: "Advocatus Dei") - building the strongest possible case
|
|
@@ -108,11 +140,11 @@ effort: xhigh
|
|
|
108
140
|
For each Pro-Thesis or Supporting-Argument rank it on a Likert
|
|
109
141
|
scale of 0 (weak) to 10 (strong). Repeat the process of finding
|
|
110
142
|
more Pro-Theses or Supporting-Arguments until you EITHER have found
|
|
111
|
-
at least
|
|
112
|
-
of 7 OR you have already checked a total of
|
|
113
|
-
Supporting-Arguments.
|
|
143
|
+
at least <count/> Pro-Theses or Supporting-Arguments with at least a
|
|
144
|
+
rank of 7 OR you have already checked a total of <count/> x 5
|
|
145
|
+
Pro-Theses or Supporting-Arguments.
|
|
114
146
|
|
|
115
|
-
Then, for the top
|
|
147
|
+
Then, for the top-<count/> highest-ranked Pro-Theses or
|
|
116
148
|
Supporting-Arguments, sort them by their rank from highest to lowest,
|
|
117
149
|
store each in <prothesis-N/> with the format `**<aspect-N/>**
|
|
118
150
|
(rank: <rank-N/>/10): <statement-N/>` (where <aspect-N/> is a short
|
|
@@ -124,8 +156,9 @@ effort: xhigh
|
|
|
124
156
|
<template>
|
|
125
157
|
<ase-tpl-bullet-signal/> **PRO-THESIS**: <prothesis-N/>
|
|
126
158
|
</template>
|
|
159
|
+
</step>
|
|
127
160
|
|
|
128
|
-
3.
|
|
161
|
+
3. <step id="STEP 3: Consolidating Reasoning">
|
|
129
162
|
|
|
130
163
|
Following the consolidation of...
|
|
131
164
|
|
|
@@ -149,7 +182,7 @@ effort: xhigh
|
|
|
149
182
|
while honestly bounding where it holds. The fortification reinforces
|
|
150
183
|
the position by sharpening it.
|
|
151
184
|
|
|
152
|
-
...
|
|
185
|
+
...then derive a strong single-sentence (not more than 40 words)
|
|
153
186
|
fortification of the <thesis/> and all found <prothesis-N/> - the
|
|
154
187
|
strongest defensible form of the thesis - store it in <fortification/>,
|
|
155
188
|
and then finally output the following <template/>:
|
|
@@ -157,3 +190,21 @@ effort: xhigh
|
|
|
157
190
|
<template>
|
|
158
191
|
<ase-tpl-bullet-normal/> **FORTIFICATION**: <fortification/>
|
|
159
192
|
</template>
|
|
193
|
+
|
|
194
|
+
Finally, decide whether to perform a further round:
|
|
195
|
+
|
|
196
|
+
<if condition="<i/> is less than <rounds/>">
|
|
197
|
+
Carry the result forward to the next round: set
|
|
198
|
+
<thesis><fortification/></thesis> (the fortification becomes the
|
|
199
|
+
thesis to be strengthened next), set <i/> to <i/> + 1 (increment the
|
|
200
|
+
round counter), and then *CONTINUE* the *LOOP* at **STEP 1**!
|
|
201
|
+
</if>
|
|
202
|
+
|
|
203
|
+
<if condition="<i/> is greater than or equal to <rounds/>">
|
|
204
|
+
All <rounds/> rounds are complete; *STOP* the loop here.
|
|
205
|
+
Do not output any further explanations.
|
|
206
|
+
</if>
|
|
207
|
+
|
|
208
|
+
</step>
|
|
209
|
+
|
|
210
|
+
</flow>
|
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
|
|
8
8
|
`ase-meta-steelman`
|
|
9
9
|
[`--help`|`-h`]
|
|
10
|
+
[`--count`|`-c` *count*]
|
|
11
|
+
[`--rounds`|`-r` *rounds*]
|
|
10
12
|
*thesis*
|
|
11
13
|
|
|
12
14
|
## DESCRIPTION
|
|
@@ -21,20 +23,44 @@ surfacing the upside, and pre-parade thinking - while crediting the
|
|
|
21
23
|
claim rather than the proponent's authority and conceding where the
|
|
22
24
|
thesis genuinely falls short.
|
|
23
25
|
|
|
24
|
-
The skill iterates until it has found at least
|
|
26
|
+
The skill iterates until it has found at least *count* pro-theses
|
|
25
27
|
(supporting arguments) each ranked at least 7 on a 0 (weak) to 10
|
|
26
|
-
(strong) Likert scale, reports the top
|
|
28
|
+
(strong) Likert scale, reports the top *count* sorted from strongest to
|
|
27
29
|
weakest, and finally consolidates them (*Thesis* + *Pro-Theses* →
|
|
28
30
|
*Fortification*) to derive a single-sentence *FORTIFICATION* that
|
|
29
31
|
consolidates everything genuinely strengthening the thesis while
|
|
30
32
|
honestly bounding where it holds.
|
|
31
33
|
|
|
34
|
+
The `--rounds`/`-r` *rounds* option turns the single defense pass into an
|
|
35
|
+
*iterative chain* of *rounds* rounds (default *1*): each round's
|
|
36
|
+
*FORTIFICATION* becomes the *thesis* of the next round, so the position
|
|
37
|
+
is progressively re-fortified and sharpened. A `0`, negative, or
|
|
38
|
+
non-numeric value falls back to the default *1*; with a single round the
|
|
39
|
+
output is identical to running without the option.
|
|
40
|
+
|
|
41
|
+
The `--count`/`-c` *count* option sets the minimum number of strong
|
|
42
|
+
pro-theses to surface (default *10*), raising or lowering the floor of
|
|
43
|
+
supporting arguments hunted for, sorted, and reported in each defense
|
|
44
|
+
pass. A `0`, negative, or non-numeric value falls back to the default
|
|
45
|
+
*10*.
|
|
46
|
+
|
|
32
47
|
The intent is constructive: building the best honest case for the
|
|
33
48
|
thesis to arrive at a better final decision, not overselling or merely
|
|
34
49
|
cheerleading.
|
|
35
50
|
|
|
36
51
|
## ARGUMENTS
|
|
37
52
|
|
|
53
|
+
`--count`, `-c` *count*:
|
|
54
|
+
Surface at least *count* strong pro-theses (default *10*) per defense
|
|
55
|
+
pass before sorting and reporting the top *count* and deriving the
|
|
56
|
+
*FORTIFICATION*. An invalid or non-positive *count* reverts to the
|
|
57
|
+
default *10*.
|
|
58
|
+
|
|
59
|
+
`--rounds`, `-r` *rounds*:
|
|
60
|
+
Run *rounds* iterative defense rounds (default *1*), feeding each
|
|
61
|
+
round's *FORTIFICATION* in as the next round's *thesis*. An invalid
|
|
62
|
+
or non-positive *rounds* reverts to the default *1*.
|
|
63
|
+
|
|
38
64
|
*thesis*:
|
|
39
65
|
The statement, claim, or position to be charitably strengthened.
|
|
40
66
|
It may be technical, factual, or opinion-based; the skill defends
|
|
@@ -54,6 +80,12 @@ Build the case for a design decision:
|
|
|
54
80
|
❯ /ase-meta-steelman We should rewrite the service in Rust.
|
|
55
81
|
```
|
|
56
82
|
|
|
83
|
+
Strengthen across five iterative rounds:
|
|
84
|
+
|
|
85
|
+
```text
|
|
86
|
+
❯ /ase-meta-steelman --rounds 5 We should rewrite the service in Rust.
|
|
87
|
+
```
|
|
88
|
+
|
|
57
89
|
## SEE ALSO
|
|
58
90
|
|
|
59
91
|
`ase-meta-diaboli`, `ase-meta-why`, `ase-meta-evaluate`,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ase-meta-why
|
|
3
|
-
argument-hint: "[--help|-h] <fact>"
|
|
3
|
+
argument-hint: "[--help|-h] [--depth|-d <N>] <fact>"
|
|
4
4
|
description: >
|
|
5
5
|
Five-Whys Root-Cause Analysis.
|
|
6
6
|
user-invocable: true
|
|
@@ -10,16 +10,23 @@ effort: high
|
|
|
10
10
|
|
|
11
11
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
|
|
12
12
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
|
|
13
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
|
|
13
14
|
|
|
14
15
|
<skill name="ase-meta-why">
|
|
15
16
|
Five-Whys Root-Cause Analysis
|
|
16
17
|
</skill>
|
|
17
18
|
|
|
19
|
+
<expand name="getopt"
|
|
20
|
+
arg1="ase-meta-why"
|
|
21
|
+
arg2="--depth|-d=5">
|
|
22
|
+
$ARGUMENTS
|
|
23
|
+
</expand>
|
|
24
|
+
|
|
18
25
|
<objective>
|
|
19
26
|
Apply the *Five-Whys* *root-cause analysis* technique to investigate
|
|
20
27
|
the following problem:
|
|
21
28
|
|
|
22
|
-
<problem>Why
|
|
29
|
+
<problem>Why <getopt-arguments/>?</problem>
|
|
23
30
|
|
|
24
31
|
For this, iteratively ask "why" to drill down from symptoms to the root-cause.
|
|
25
32
|
This helps to identify the fundamental reason behind a problem rather than just
|
|
@@ -39,20 +46,26 @@ addressing surface-level symptoms.
|
|
|
39
46
|
Find the root-cause of <problem/> by following the following iteration cycle.
|
|
40
47
|
Start with a <question/> set equal to the <problem/>.
|
|
41
48
|
|
|
42
|
-
|
|
49
|
+
Determine the *maximum chain length* from <getopt-option-depth/>: if
|
|
50
|
+
<getopt-option-depth/> is *non-numeric* or *less than or equal to 0*,
|
|
51
|
+
use the default *5* instead.
|
|
52
|
+
|
|
53
|
+
Start with <n>1</n> (set iteration counter to one).
|
|
54
|
+
<while condition="<n/> is less than or equal to <getopt-option-depth/>">
|
|
43
55
|
Ask <question/> and document the answer in <answer/> with the following template:
|
|
44
56
|
Don't stop at symptoms, keep digging for systemic issues.
|
|
45
57
|
Multiple root-causes may exist -- explore different branches.
|
|
46
58
|
Consider technical, domain-specific, process-related, or organizational causes.
|
|
47
59
|
|
|
48
60
|
<template>
|
|
49
|
-
<ase-tpl-bullet-secondary/> **WHY <
|
|
61
|
+
<ase-tpl-bullet-secondary/> **WHY <n/>**: <answer/>
|
|
50
62
|
</template>
|
|
51
63
|
|
|
52
64
|
Then, for the next iteration set <question/> now to be the last <answer/>.
|
|
53
|
-
The magic is NOT in exactly
|
|
54
|
-
when you already reached the root-cause.
|
|
55
|
-
|
|
65
|
+
The magic is NOT in exactly <getopt-option-depth/> "Why" -- you can <break/>
|
|
66
|
+
the iteration when you already reached the root-cause.
|
|
67
|
+
Finally, set <n/> to <n/> + 1 (increment iteration counter).
|
|
68
|
+
</while>
|
|
56
69
|
</step>
|
|
57
70
|
|
|
58
71
|
3. <step id="STEP 3: Report Solution">
|
|
@@ -7,20 +7,27 @@
|
|
|
7
7
|
|
|
8
8
|
`ase-meta-why`
|
|
9
9
|
[`--help`|`-h`]
|
|
10
|
+
[`--depth`|`-d` *N*]
|
|
10
11
|
*fact*
|
|
11
12
|
|
|
12
13
|
## DESCRIPTION
|
|
13
14
|
|
|
14
15
|
The `ase-meta-why` skill applies the *Five-Whys* *root-cause
|
|
15
16
|
analysis* technique to the supplied *fact*. The skill iteratively
|
|
16
|
-
asks "why" - up to
|
|
17
|
-
to the underlying root cause, considering
|
|
18
|
-
process-related, and organizational
|
|
19
|
-
root cause it proposes a *SOLUTION* that
|
|
20
|
-
including concrete source code changes.
|
|
17
|
+
asks "why" - up to *N* times (see `--depth`, default five) - to drill
|
|
18
|
+
down from surface symptoms to the underlying root cause, considering
|
|
19
|
+
technical, domain-specific, process-related, and organizational
|
|
20
|
+
causes. After identifying the root cause it proposes a *SOLUTION* that
|
|
21
|
+
addresses it, optionally including concrete source code changes.
|
|
21
22
|
|
|
22
23
|
## ARGUMENTS
|
|
23
24
|
|
|
25
|
+
`--depth`|`-d` *N*:
|
|
26
|
+
The *maximum* number of "why" iterations (the Five-Whys chain
|
|
27
|
+
length), acting as an *upper bound* only - the analysis still stops
|
|
28
|
+
early once the root cause is reached. Defaults to *5*. A non-numeric
|
|
29
|
+
or non-positive value falls back to the default.
|
|
30
|
+
|
|
24
31
|
*fact*:
|
|
25
32
|
The observed *fact* (symptom, problem, or surprising outcome)
|
|
26
33
|
whose root cause should be investigated. The skill implicitly
|
|
@@ -34,6 +41,12 @@ Investigate the root cause of a build failure:
|
|
|
34
41
|
❯ /ase-meta-why the CI build is intermittently failing on macOS runners
|
|
35
42
|
```
|
|
36
43
|
|
|
44
|
+
Drill down deeper with a tunable chain length of seven:
|
|
45
|
+
|
|
46
|
+
```text
|
|
47
|
+
❯ /ase-meta-why -d 7 the production latency spiked after the last deploy
|
|
48
|
+
```
|
|
49
|
+
|
|
37
50
|
## SEE ALSO
|
|
38
51
|
|
|
39
52
|
`ase-code-analyze`, `ase-code-resolve`, `ase-arch-analyze`.
|
|
@@ -117,7 +117,7 @@ Procedure
|
|
|
117
117
|
|
|
118
118
|
- **Fuzzy Language**:
|
|
119
119
|
When the user uses vague or overloaded terms instead of a precise
|
|
120
|
-
or canonical
|
|
120
|
+
or canonical term.
|
|
121
121
|
|
|
122
122
|
- **Conflicting Terminology**:
|
|
123
123
|
When the user uses a term that conflicts with the existing
|