@rse/ase 0.9.2 → 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/dst/ase-hello.js +24 -0
- package/dst/ase-statusline.js +15 -5
- package/package.json +2 -2
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/.github/plugin/plugin.json +1 -1
- package/plugin/agents/ase-meta-review.md +188 -0
- package/plugin/etc/eslint.mjs +25 -0
- package/plugin/etc/markdownlint.yaml +13 -11
- package/plugin/etc/stx.conf +2 -1
- package/plugin/meta/ase-control.md +7 -2
- package/plugin/meta/ase-dialog.md +2 -0
- package/plugin/meta/ase-format-arch.md +31 -31
- package/plugin/meta/ase-format-spec.md +3 -3
- package/plugin/meta/ase-getopt.md +1 -0
- package/plugin/meta/ase-persona.md +1 -1
- package/plugin/meta/ase-skill.md +6 -6
- package/plugin/package.json +5 -2
- package/plugin/skills/ase-arch-analyze/SKILL.md +33 -33
- 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 +11 -3
- package/plugin/skills/ase-code-lint/help.md +14 -1
- package/plugin/skills/ase-docs-distill/SKILL.md +158 -0
- package/plugin/skills/ase-docs-distill/help.md +76 -0
- package/plugin/skills/ase-docs-proofread/SKILL.md +1 -1
- package/plugin/skills/ase-docs-proofread/help.md +1 -1
- package/plugin/skills/ase-meta-brainstorm/SKILL.md +29 -15
- package/plugin/skills/ase-meta-brainstorm/help.md +21 -7
- package/plugin/skills/ase-meta-diaboli/SKILL.md +36 -13
- package/plugin/skills/ase-meta-diaboli/help.md +22 -4
- package/plugin/skills/ase-meta-diff/SKILL.md +110 -64
- package/plugin/skills/ase-meta-diff/help.md +30 -6
- package/plugin/skills/ase-meta-review/SKILL.md +184 -0
- package/plugin/skills/ase-meta-review/help.md +88 -0
- package/plugin/skills/ase-meta-steelman/SKILL.md +210 -0
- package/plugin/skills/ase-meta-steelman/help.md +92 -0
- 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-condense/SKILL.md +3 -3
- package/plugin/skills/ase-task-grill/SKILL.md +1 -1
- package/plugin/skills/ase-task-implement/help.md +1 -1
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ase-meta-steelman
|
|
3
|
+
argument-hint: "[--help|-h] [--count|-c <count>] [--rounds|-r <rounds>] <thesis>"
|
|
4
|
+
description: >
|
|
5
|
+
Build the strongest possible case for a thesis by playing
|
|
6
|
+
"Steelman" (Latin spirit: "Advocatus Dei"). Use when the user
|
|
7
|
+
wants a thesis or statement charitably strengthened and defended.
|
|
8
|
+
user-invocable: true
|
|
9
|
+
disable-model-invocation: false
|
|
10
|
+
effort: xhigh
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
|
|
14
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
|
|
15
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
|
|
16
|
+
|
|
17
|
+
<skill name="ase-meta-steelman">
|
|
18
|
+
Build the "Steelman" Argument
|
|
19
|
+
</skill>
|
|
20
|
+
|
|
21
|
+
<expand name="getopt"
|
|
22
|
+
arg1="ase-meta-steelman"
|
|
23
|
+
arg2="--count|-c=10 --rounds|-r=1">
|
|
24
|
+
$ARGUMENTS
|
|
25
|
+
</expand>
|
|
26
|
+
|
|
27
|
+
<objective>
|
|
28
|
+
Build the "Steelman" argument by constructing the strongest
|
|
29
|
+
possible case for the thesis: <thesis><getopt-arguments/></thesis>
|
|
30
|
+
</objective>
|
|
31
|
+
|
|
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>
|
|
56
|
+
|
|
57
|
+
Output the thesis with the following <template/>:
|
|
58
|
+
|
|
59
|
+
<template>
|
|
60
|
+
<ase-tpl-bullet-normal/> **THESIS**: <thesis/>
|
|
61
|
+
</template>
|
|
62
|
+
|
|
63
|
+
</step>
|
|
64
|
+
|
|
65
|
+
2. <step id="STEP 2: Determine Pro-Theses">
|
|
66
|
+
|
|
67
|
+
Reason on the thesis in <thesis/> by playing *Steelman* (Latin
|
|
68
|
+
spirit: "Advocatus Dei") - building the strongest possible case
|
|
69
|
+
*for* it - by charitably strengthening and defending it with the
|
|
70
|
+
help of the following tenets:
|
|
71
|
+
|
|
72
|
+
- **Charitable Interpretation**:
|
|
73
|
+
Defend the strongest ("steelman") interpretation of the
|
|
74
|
+
<thesis/>, not the weakest ("strawman"), because the most
|
|
75
|
+
generous reading is the one worth defending and the one a fair
|
|
76
|
+
critic must ultimately confront.
|
|
77
|
+
|
|
78
|
+
- **Strengthen the Fundamentals**:
|
|
79
|
+
Identify the soundest fundamental ideas behind the thesis and
|
|
80
|
+
make them explicit, because a position rests on the strength of
|
|
81
|
+
its foundation and a solid foundation carries everything built
|
|
82
|
+
on top of it.
|
|
83
|
+
|
|
84
|
+
- **Credit Claims, Not Person**:
|
|
85
|
+
Support the thesis, the assumption, the evidence - never appeal
|
|
86
|
+
to the proponent's authority or reputation, because a case that
|
|
87
|
+
leans on who said it instead of what was said is no stronger
|
|
88
|
+
than its weakest argument.
|
|
89
|
+
|
|
90
|
+
- **Make the Enabling Assumptions Explicit**:
|
|
91
|
+
Surface the reasonable assumptions the thesis depends on and
|
|
92
|
+
show they hold, because most strong arguments gain their force
|
|
93
|
+
from premises that are sound once stated out loud.
|
|
94
|
+
|
|
95
|
+
- **Supply Evidence Proportional to Claim**:
|
|
96
|
+
Ask "How do we know this?" and "What best supports it?", and
|
|
97
|
+
marshal that support, because a claim defended with its
|
|
98
|
+
strongest available evidence is the one hardest to dismiss.
|
|
99
|
+
|
|
100
|
+
- **Seek the Confirming Case**:
|
|
101
|
+
Actively hunt for the supporting example, the favourable
|
|
102
|
+
scenario, the precedent where the position succeeds, because
|
|
103
|
+
one solid confirming case anchors the argument in reality.
|
|
104
|
+
|
|
105
|
+
- **Merit Identification**:
|
|
106
|
+
Focus on the genuine strengths of the thesis with the highest
|
|
107
|
+
potential value only, because marginal merits are not worth the
|
|
108
|
+
explicit discussion.
|
|
109
|
+
|
|
110
|
+
- **Push the Logic to its Best Conclusion**:
|
|
111
|
+
Ask "If we accept this, then what follows?" and apply
|
|
112
|
+
"Reduction to the Good" (Latin: "Reductio Ad Bonum"), because
|
|
113
|
+
this strengthens the thesis by showing that accepting it leads
|
|
114
|
+
to coherent, beneficial, and reinforcing conclusions.
|
|
115
|
+
|
|
116
|
+
- **Surface the Upside and Leverage**:
|
|
117
|
+
Name the opportunity gained, the compounding benefit, the
|
|
118
|
+
problem dissolved, because every choice in the thesis unlocks
|
|
119
|
+
possibilities that a fair appraisal must count.
|
|
120
|
+
|
|
121
|
+
- **Stay Falsifiable and Concrete**:
|
|
122
|
+
Frame each supporting point so it can be checked and confirmed
|
|
123
|
+
with facts, because vague enthusiasm ("I just like it") adds no
|
|
124
|
+
strength to the case.
|
|
125
|
+
|
|
126
|
+
- **Argue in Good Faith**:
|
|
127
|
+
Make clear you are building the best honest case, not
|
|
128
|
+
overselling, because the goal of the objective is a better
|
|
129
|
+
final decision, not a sales pitch.
|
|
130
|
+
|
|
131
|
+
- **Concede the Real Weaknesses**:
|
|
132
|
+
Acknowledging where the thesis genuinely falls short is what
|
|
133
|
+
makes the defence credible, because a Steelman who can never
|
|
134
|
+
admit a flaw is just an apologist.
|
|
135
|
+
|
|
136
|
+
- **Pre-Parade Thinking**:
|
|
137
|
+
Imagine success scenarios of the thesis, because envisioning
|
|
138
|
+
how it wins clarifies the conditions worth securing in advance.
|
|
139
|
+
|
|
140
|
+
For each Pro-Thesis or Supporting-Argument rank it on a Likert
|
|
141
|
+
scale of 0 (weak) to 10 (strong). Repeat the process of finding
|
|
142
|
+
more Pro-Theses or Supporting-Arguments until you EITHER have found
|
|
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.
|
|
146
|
+
|
|
147
|
+
Then, for the top-<count/> highest-ranked Pro-Theses or
|
|
148
|
+
Supporting-Arguments, sort them by their rank from highest to lowest,
|
|
149
|
+
store each in <prothesis-N/> with the format `**<aspect-N/>**
|
|
150
|
+
(rank: <rank-N/>/10): <statement-N/>` (where <aspect-N/> is a short
|
|
151
|
+
1-3 word summary of <statement-N/>, <rank-N/> is the determined
|
|
152
|
+
rank on the Likert scale, and <statement-N/> is a single-sentence
|
|
153
|
+
statement of not more than 40 words), and then output the following
|
|
154
|
+
<template/>:
|
|
155
|
+
|
|
156
|
+
<template>
|
|
157
|
+
<ase-tpl-bullet-signal/> **PRO-THESIS**: <prothesis-N/>
|
|
158
|
+
</template>
|
|
159
|
+
</step>
|
|
160
|
+
|
|
161
|
+
3. <step id="STEP 3: Consolidating Reasoning">
|
|
162
|
+
|
|
163
|
+
Following the consolidation of...
|
|
164
|
+
|
|
165
|
+
*Thesis* + *Pro-Theses* → *Fortification*
|
|
166
|
+
|
|
167
|
+
...with...
|
|
168
|
+
|
|
169
|
+
- *Thesis*: the initial statement, claim, or position. It is asserted
|
|
170
|
+
as true, but on its own it is under-developed: it captures part of the
|
|
171
|
+
truth while leaving its own strongest support implicit, unstated, or
|
|
172
|
+
unproven.
|
|
173
|
+
|
|
174
|
+
- *Pro-Theses*: the reinforcing forces. They are the corroboration,
|
|
175
|
+
evidence, or supporting positions that the thesis invites - precisely
|
|
176
|
+
the role a Steelman played. The pro-theses make explicit what the
|
|
177
|
+
thesis assumed or left unsaid.
|
|
178
|
+
|
|
179
|
+
- *Fortification*: the consolidation. Not an uncritical "cheerleading"
|
|
180
|
+
of the thesis, and not a mere restatement of it, but a stronger
|
|
181
|
+
position that consolidates everything that genuinely strengthens it
|
|
182
|
+
while honestly bounding where it holds. The fortification reinforces
|
|
183
|
+
the position by sharpening it.
|
|
184
|
+
|
|
185
|
+
...then derive a strong single-sentence (not more than 40 words)
|
|
186
|
+
fortification of the <thesis/> and all found <prothesis-N/> - the
|
|
187
|
+
strongest defensible form of the thesis - store it in <fortification/>,
|
|
188
|
+
and then finally output the following <template/>:
|
|
189
|
+
|
|
190
|
+
<template>
|
|
191
|
+
<ase-tpl-bullet-normal/> **FORTIFICATION**: <fortification/>
|
|
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>
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
|
|
2
|
+
## NAME
|
|
3
|
+
|
|
4
|
+
`ase-meta-steelman` - Build the "Steelman" Argument
|
|
5
|
+
|
|
6
|
+
## SYNOPSIS
|
|
7
|
+
|
|
8
|
+
`ase-meta-steelman`
|
|
9
|
+
[`--help`|`-h`]
|
|
10
|
+
[`--count`|`-c` *count*]
|
|
11
|
+
[`--rounds`|`-r` *rounds*]
|
|
12
|
+
*thesis*
|
|
13
|
+
|
|
14
|
+
## DESCRIPTION
|
|
15
|
+
|
|
16
|
+
The `ase-meta-steelman` skill builds the strongest possible case
|
|
17
|
+
*for* a supplied *thesis* - the constructive mirror of its adversarial
|
|
18
|
+
counterpart `ase-meta-diaboli`. It applies a disciplined set of
|
|
19
|
+
constructive-thinking tenets - charitable interpretation, strengthening
|
|
20
|
+
the fundamentals, surfacing the enabling assumptions, supplying
|
|
21
|
+
proportional evidence, seeking confirming cases, *Reductio Ad Bonum*,
|
|
22
|
+
surfacing the upside, and pre-parade thinking - while crediting the
|
|
23
|
+
claim rather than the proponent's authority and conceding where the
|
|
24
|
+
thesis genuinely falls short.
|
|
25
|
+
|
|
26
|
+
The skill iterates until it has found at least *count* pro-theses
|
|
27
|
+
(supporting arguments) each ranked at least 7 on a 0 (weak) to 10
|
|
28
|
+
(strong) Likert scale, reports the top *count* sorted from strongest to
|
|
29
|
+
weakest, and finally consolidates them (*Thesis* + *Pro-Theses* →
|
|
30
|
+
*Fortification*) to derive a single-sentence *FORTIFICATION* that
|
|
31
|
+
consolidates everything genuinely strengthening the thesis while
|
|
32
|
+
honestly bounding where it holds.
|
|
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
|
+
|
|
47
|
+
The intent is constructive: building the best honest case for the
|
|
48
|
+
thesis to arrive at a better final decision, not overselling or merely
|
|
49
|
+
cheerleading.
|
|
50
|
+
|
|
51
|
+
## ARGUMENTS
|
|
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
|
+
|
|
64
|
+
*thesis*:
|
|
65
|
+
The statement, claim, or position to be charitably strengthened.
|
|
66
|
+
It may be technical, factual, or opinion-based; the skill defends
|
|
67
|
+
its strongest ("steelman") interpretation.
|
|
68
|
+
|
|
69
|
+
## EXAMPLES
|
|
70
|
+
|
|
71
|
+
Strengthen a technology-choice claim:
|
|
72
|
+
|
|
73
|
+
```text
|
|
74
|
+
❯ /ase-meta-steelman HAPI is the best REST framework
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Build the case for a design decision:
|
|
78
|
+
|
|
79
|
+
```text
|
|
80
|
+
❯ /ase-meta-steelman We should rewrite the service in Rust.
|
|
81
|
+
```
|
|
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
|
+
|
|
89
|
+
## SEE ALSO
|
|
90
|
+
|
|
91
|
+
`ase-meta-diaboli`, `ase-meta-why`, `ase-meta-evaluate`,
|
|
92
|
+
`ase-meta-quorum`.
|
|
@@ -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"
|
|
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`.
|
|
@@ -127,21 +127,21 @@ explicitly requested by this procedure via outputs based on a <template/>!
|
|
|
127
127
|
- *Drop* filler ("just", "really", "basically", "simply"),
|
|
128
128
|
pleasantries, and hedging ("I think", "maybe", "perhaps").
|
|
129
129
|
- *Use* shorter synonyms and common abbreviations.
|
|
130
|
-
- *Use* `→` for causality and
|
|
130
|
+
- *Use* `→` for causality and `-` for short subsequent facts.
|
|
131
131
|
- *Drop* articles ("a", "an", "the") and *replace*
|
|
132
132
|
conjunctions with short separate clauses where this
|
|
133
133
|
shortens the text without introducing ambiguity.
|
|
134
134
|
- *Re-wrap* the shortened free-text to the ~120-character-
|
|
135
135
|
per-line convention.
|
|
136
136
|
- *Merge* genuinely-redundant bullets (the same aspect
|
|
137
|
-
restated) and *drop* pure duplication
|
|
137
|
+
restated) and *drop* pure duplication - but *only* when
|
|
138
138
|
truly redundant; *never* lose a distinct aspect.
|
|
139
139
|
|
|
140
140
|
3. *Persona override*: this condense ruleset *always wins* for
|
|
141
141
|
the plan content. This ruleset-based compression is applied
|
|
142
142
|
*regardless* of the currently active session persona style.
|
|
143
143
|
|
|
144
|
-
4. *Hard guardrail
|
|
144
|
+
4. *Hard guardrail - semantics preserved EXACTLY*: condensing
|
|
145
145
|
*only* shortens wording. It *MUST NOT* drop, merge (except
|
|
146
146
|
truly-redundant bullets per sub-item 2), reorder, or alter
|
|
147
147
|
*any* factual claim, requirement, file path, rule, or
|
|
@@ -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
|
|
@@ -16,7 +16,7 @@ The `ase-task-implement` skill performs the *final implementation*
|
|
|
16
16
|
of a task plan by modifying the corresponding *artifacts* with a
|
|
17
17
|
complete *change set*. The plan is loaded from
|
|
18
18
|
`.ase/tasks/`*id*`/plan.md`, and any optional `IMPLEMENTATION DRAFT`
|
|
19
|
-
section produced by `ase-task-preflight` is used as a hint
|
|
19
|
+
section produced by `ase-task-preflight` is used as a hint - the
|
|
20
20
|
plain plan content always overrules the draft.
|
|
21
21
|
|
|
22
22
|
If the task plan deliberately *omits* the `※ VERIFICATION` section
|