@rse/ase 0.9.4 → 0.9.6
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-artifact.js +331 -0
- package/dst/ase-config.js +56 -10
- package/dst/ase-service.js +2 -0
- package/dst/ase-task.js +139 -64
- package/dst/ase.js +2 -0
- package/package.json +5 -3
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/.github/plugin/plugin.json +1 -1
- package/plugin/meta/ase-format-meta.md +5 -2
- package/plugin/meta/{ase-format-plan.md → ase-format-task.md} +7 -6
- package/plugin/package.json +1 -1
- package/plugin/skills/ase-arch-analyze/SKILL.md +1 -1
- package/plugin/skills/ase-arch-discover/SKILL.md +17 -9
- package/plugin/skills/ase-arch-discover/help.md +14 -0
- package/plugin/skills/ase-code-craft/SKILL.md +2 -2
- package/plugin/skills/ase-code-insight/SKILL.md +1 -1
- package/plugin/skills/ase-code-lint/SKILL.md +1 -1
- package/plugin/skills/ase-code-refactor/SKILL.md +2 -2
- package/plugin/skills/ase-code-resolve/SKILL.md +3 -3
- package/plugin/skills/ase-docs-proofread/SKILL.md +1 -1
- package/plugin/skills/ase-meta-brainstorm/SKILL.md +22 -21
- package/plugin/skills/ase-meta-brainstorm/help.md +38 -12
- package/plugin/skills/ase-meta-chat/SKILL.md +1 -1
- package/plugin/skills/ase-meta-diaboli/SKILL.md +1 -1
- package/plugin/skills/ase-meta-diff/SKILL.md +1 -1
- package/plugin/skills/ase-meta-quorum/SKILL.md +37 -5
- package/plugin/skills/ase-meta-quorum/help.md +18 -0
- package/plugin/skills/ase-meta-review/SKILL.md +1 -1
- package/plugin/skills/ase-meta-search/SKILL.md +35 -6
- package/plugin/skills/ase-meta-search/help.md +14 -2
- package/plugin/skills/ase-meta-steelman/SKILL.md +1 -1
- package/plugin/skills/ase-meta-why/SKILL.md +117 -25
- package/plugin/skills/ase-meta-why/help.md +30 -2
- package/plugin/skills/ase-task-condense/SKILL.md +1 -1
- package/plugin/skills/ase-task-delete/help.md +0 -4
- package/plugin/skills/ase-task-edit/SKILL.md +4 -4
- package/plugin/skills/ase-task-edit/help.md +0 -4
- package/plugin/skills/ase-task-grill/SKILL.md +1 -1
- package/plugin/skills/ase-task-grill/help.md +0 -4
- package/plugin/skills/ase-task-implement/SKILL.md +1 -1
- package/plugin/skills/ase-task-implement/help.md +5 -6
- package/plugin/skills/ase-task-preflight/SKILL.md +1 -1
- package/plugin/skills/ase-task-reboot/SKILL.md +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ase-meta-why
|
|
3
|
-
argument-hint: "[--help|-h] [--depth|-d <N>] <fact>"
|
|
3
|
+
argument-hint: "[--help|-h] [--depth|-d <N>] [--width|-w <M>] <fact>"
|
|
4
4
|
description: >
|
|
5
5
|
Five-Whys Root-Cause Analysis.
|
|
6
6
|
user-invocable: true
|
|
@@ -18,7 +18,7 @@ Five-Whys Root-Cause Analysis
|
|
|
18
18
|
|
|
19
19
|
<expand name="getopt"
|
|
20
20
|
arg1="ase-meta-why"
|
|
21
|
-
arg2="--depth|-d=5">
|
|
21
|
+
arg2="--depth|-d=5 --width|-w=1">
|
|
22
22
|
$ARGUMENTS
|
|
23
23
|
</expand>
|
|
24
24
|
|
|
@@ -34,48 +34,140 @@ addressing surface-level symptoms.
|
|
|
34
34
|
</objective>
|
|
35
35
|
|
|
36
36
|
<flow>
|
|
37
|
-
|
|
37
|
+
|
|
38
|
+
1. <step id="STEP 1: Restate Problem">
|
|
39
|
+
|
|
38
40
|
State the problem statement.
|
|
39
41
|
|
|
40
42
|
<template>
|
|
41
43
|
<ase-tpl-bullet-signal/> **PROBLEM**: <problem/>
|
|
42
44
|
</template>
|
|
45
|
+
|
|
43
46
|
</step>
|
|
44
47
|
|
|
45
48
|
2. <step id="STEP 2: Root-Cause Analysis">
|
|
49
|
+
|
|
46
50
|
Find the root-cause of <problem/> by following the following iteration cycle.
|
|
47
51
|
Start with a <question/> set equal to the <problem/>.
|
|
48
52
|
|
|
49
|
-
Determine the *maximum chain length* from <getopt-option-depth/>:
|
|
50
|
-
<getopt-option-depth
|
|
51
|
-
use the default *5* instead.
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
53
|
+
Determine the *maximum chain length* from <getopt-option-depth/>:
|
|
54
|
+
set <depth/> to <getopt-option-depth/>; if <getopt-option-depth/>
|
|
55
|
+
is *non-numeric* or *less than or equal to 0*, use the default *5* instead.
|
|
56
|
+
|
|
57
|
+
Determine the *maximum chain width* from <getopt-option-width/>:
|
|
58
|
+
set <width/> to <getopt-option-width/>; if <getopt-option-width/>
|
|
59
|
+
is *non-numeric* or *less than or equal to 0*, use the default *1* instead.
|
|
60
|
+
|
|
61
|
+
- <if condition="<width/> is less than or equal to 1">
|
|
62
|
+
|
|
63
|
+
Walk a *single* causality chain (the classic Five-Whys):
|
|
64
|
+
|
|
65
|
+
Start with <n>1</n> (set iteration counter to one).
|
|
66
|
+
|
|
67
|
+
<while condition="<n/> is less than or equal to <depth/>">
|
|
68
|
+
|
|
69
|
+
Ask <question/> and document the answer in <answer/> with the following template:
|
|
70
|
+
Don't stop at symptoms, keep digging for systemic issues.
|
|
71
|
+
Consider technical, domain-specific, process-related, or organizational causes.
|
|
72
|
+
|
|
73
|
+
<template>
|
|
74
|
+
<ase-tpl-bullet-secondary/> **WHY <n/>**: <answer/>
|
|
75
|
+
</template>
|
|
76
|
+
|
|
77
|
+
Then, for the next iteration set <question/> now to be the last <answer/>.
|
|
78
|
+
The magic is NOT in exactly <depth/> "Why" -- you can <break/>
|
|
79
|
+
the iteration when you already reached the root-cause.
|
|
80
|
+
Finally, set <n/> to <n/> + 1 (increment iteration counter).
|
|
81
|
+
|
|
82
|
+
</while>
|
|
83
|
+
|
|
84
|
+
</if>
|
|
85
|
+
|
|
86
|
+
- <if condition="<width/> is greater than 1">
|
|
87
|
+
|
|
88
|
+
Walk a *widened* causality chain: at each "why" level, surface up to
|
|
89
|
+
<width/> *candidate* sub-causes, then commit to the single most
|
|
90
|
+
significant one and descend into it (the chain stays single-rooted --
|
|
91
|
+
the extra candidates are *not* each drilled to their own root-cause).
|
|
92
|
+
Their purpose is to guard against *premature commitment* to the wrong
|
|
93
|
+
sub-cause: by enumerating the plausible alternatives at each level, the
|
|
94
|
+
chosen descent is a *justified* selection rather than the first
|
|
95
|
+
plausible answer, and the unchosen candidates remain on record as
|
|
96
|
+
*fallbacks* to backtrack into (see STEP 3) should the chosen path fail
|
|
97
|
+
validation.
|
|
98
|
+
|
|
99
|
+
Remember the *unchosen* candidates of every level (keep them in
|
|
100
|
+
<fallbacks/>, tagged by their level <n/>), so STEP 3 can backtrack
|
|
101
|
+
into them.
|
|
102
|
+
|
|
103
|
+
Start with <n>1</n> (set iteration counter to one).
|
|
104
|
+
|
|
105
|
+
<while condition="<n/> is less than or equal to <depth/>">
|
|
106
|
+
|
|
107
|
+
Ask <question/> and surface up to <width/> *distinct*,
|
|
108
|
+
*non-overlapping* candidate sub-causes, each documented in <answer-k/>.
|
|
109
|
+
Don't stop at symptoms, keep digging for systemic issues.
|
|
110
|
+
Explore *different* candidates -- technical, domain-specific,
|
|
111
|
+
process-related, or organizational causes -- and avoid restating
|
|
112
|
+
the same cause in different words.
|
|
113
|
+
|
|
114
|
+
Start with <k>1</k> (set candidate counter to one).
|
|
115
|
+
<while condition="<k/> is less than or equal to <width/>">
|
|
116
|
+
<template>
|
|
117
|
+
<ase-tpl-bullet-secondary/> **WHY <n/>.<k/>**: <answer-k/>
|
|
118
|
+
</template>
|
|
119
|
+
Set <k/> to <k/> + 1 (increment candidate counter).
|
|
120
|
+
</while>
|
|
121
|
+
|
|
122
|
+
Then choose, among the <answer-k/>, the *most causally-significant*
|
|
123
|
+
candidate -- the one most likely to lead to the true root-cause --
|
|
124
|
+
and *justify* the choice in one line (state explicitly *why* it
|
|
125
|
+
beats the other candidates, e.g. it alone also explains the timing,
|
|
126
|
+
scope, or magnitude of the level's fact). A bare "most significant"
|
|
127
|
+
is *not* sufficient; if no candidate clearly dominates, say so.
|
|
128
|
+
|
|
129
|
+
<template>
|
|
130
|
+
<ase-tpl-bullet-secondary/> **WHY <n/> → chosen <n/>.<chosen-k/>**: <justification/>
|
|
131
|
+
</template>
|
|
132
|
+
|
|
133
|
+
Record the remaining candidates as <fallbacks/> for level <n/>.
|
|
134
|
+
Then, for the next iteration, set <question/> to the chosen candidate.
|
|
135
|
+
You can <break/> the iteration when the chosen candidate already
|
|
136
|
+
reached its root-cause.
|
|
137
|
+
Finally, set <n/> to <n/> + 1 (increment iteration counter).
|
|
138
|
+
|
|
139
|
+
</while>
|
|
140
|
+
|
|
141
|
+
</if>
|
|
142
|
+
|
|
69
143
|
</step>
|
|
70
144
|
|
|
71
145
|
3. <step id="STEP 3: Report Solution">
|
|
72
|
-
|
|
73
|
-
|
|
146
|
+
|
|
147
|
+
Validate the root-cause by working backwards along the chosen causality
|
|
148
|
+
chain: check, level by level, that each chosen sub-cause genuinely *causes*
|
|
149
|
+
the fact above it (and that fixing the final root-cause would dissolve the
|
|
150
|
+
whole chain up to the original <problem/>).
|
|
151
|
+
|
|
152
|
+
When <width/> is *greater than 1* and this backward validation *fails* at
|
|
153
|
+
some level -- i.e. the chosen sub-cause does *not* adequately explain the
|
|
154
|
+
fact above it -- *backtrack*: discard the chosen sub-cause from that level
|
|
155
|
+
downward, pick the next-best candidate from that level's <fallbacks/>, set
|
|
156
|
+
<question/> to it, and re-run the STEP 2 widened descent from there. Repeat
|
|
157
|
+
until a chain survives backward validation or that level's <fallbacks/> are
|
|
158
|
+
exhausted (then report the strongest chain found and note that no candidate
|
|
159
|
+
fully validated). This is the payoff of <width/> *greater than 1*: the
|
|
160
|
+
enumerated alternatives let the analysis *recover* from a wrong turn instead
|
|
161
|
+
of committing to a mis-rooted chain.
|
|
162
|
+
|
|
163
|
+
Propose a solution that addresses and solves the validated root-cause.
|
|
74
164
|
For the proposed solution, optionally directly propose corresponding source code changes.
|
|
75
165
|
|
|
76
166
|
<template>
|
|
77
167
|
<ase-tpl-bullet-signal/> **SOLUTION**: <solution/>
|
|
78
168
|
</template>
|
|
169
|
+
|
|
79
170
|
</step>
|
|
171
|
+
|
|
80
172
|
</flow>
|
|
81
173
|
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
`ase-meta-why`
|
|
9
9
|
[`--help`|`-h`]
|
|
10
10
|
[`--depth`|`-d` *N*]
|
|
11
|
+
[`--width`|`-w` *M*]
|
|
11
12
|
*fact*
|
|
12
13
|
|
|
13
14
|
## DESCRIPTION
|
|
@@ -17,8 +18,16 @@ analysis* technique to the supplied *fact*. The skill iteratively
|
|
|
17
18
|
asks "why" - up to *N* times (see `--depth`, default five) - to drill
|
|
18
19
|
down from surface symptoms to the underlying root cause, considering
|
|
19
20
|
technical, domain-specific, process-related, and organizational
|
|
20
|
-
causes.
|
|
21
|
-
|
|
21
|
+
causes. By default it walks a *single* causality chain, but with
|
|
22
|
+
`--width` *M* (> 1) it walks a *widened* chain: at each level it surfaces
|
|
23
|
+
up to *M* candidate sub-causes, descends into the most significant one
|
|
24
|
+
with an explicit justification for the choice, and keeps the unchosen
|
|
25
|
+
candidates as *fallbacks*. If backward validation later shows the chosen
|
|
26
|
+
path was mis-rooted, it *backtracks* into a fallback and re-descends -
|
|
27
|
+
guarding against the classic Five-Whys failure of committing early to the
|
|
28
|
+
wrong sub-cause. After identifying (and validating) the root cause it
|
|
29
|
+
proposes a *SOLUTION* that addresses it, optionally including concrete
|
|
30
|
+
source code changes.
|
|
22
31
|
|
|
23
32
|
## ARGUMENTS
|
|
24
33
|
|
|
@@ -28,6 +37,18 @@ addresses it, optionally including concrete source code changes.
|
|
|
28
37
|
early once the root cause is reached. Defaults to *5*. A non-numeric
|
|
29
38
|
or non-positive value falls back to the default.
|
|
30
39
|
|
|
40
|
+
`--width`|`-w` *M*:
|
|
41
|
+
The *maximum* number of *candidate sub-causes* to surface per "why"
|
|
42
|
+
level. With the default *1*, the skill walks a single causality chain
|
|
43
|
+
(classic Five-Whys); with *M* > 1, each level surfaces up to *M*
|
|
44
|
+
candidate sub-causes, descends into the single most significant one
|
|
45
|
+
(justifying the choice), and retains the rest as *fallbacks*. During
|
|
46
|
+
backward validation a mis-rooted choice is *backtracked* into a fallback
|
|
47
|
+
and re-descended, so the widening actively improves which root-cause is
|
|
48
|
+
reached rather than merely listing alternatives. The result is still a
|
|
49
|
+
single, but better-justified, root-cause. A non-numeric or non-positive
|
|
50
|
+
value falls back to the default.
|
|
51
|
+
|
|
31
52
|
*fact*:
|
|
32
53
|
The observed *fact* (symptom, problem, or surprising outcome)
|
|
33
54
|
whose root cause should be investigated. The skill implicitly
|
|
@@ -47,6 +68,13 @@ Drill down deeper with a tunable chain length of seven:
|
|
|
47
68
|
❯ /ase-meta-why -d 7 the production latency spiked after the last deploy
|
|
48
69
|
```
|
|
49
70
|
|
|
71
|
+
Weigh several candidate sub-causes per level (with backtracking) to avoid
|
|
72
|
+
committing early to the wrong root-cause:
|
|
73
|
+
|
|
74
|
+
```text
|
|
75
|
+
❯ /ase-meta-why -w 3 the release was delayed by two weeks
|
|
76
|
+
```
|
|
77
|
+
|
|
50
78
|
## SEE ALSO
|
|
51
79
|
|
|
52
80
|
`ase-code-analyze`, `ase-code-resolve`, `ase-arch-analyze`.
|
|
@@ -17,10 +17,6 @@ session context) is used. When the deleted task is the current task
|
|
|
17
17
|
and not the `default` task, the current task id is automatically
|
|
18
18
|
switched back to `default`.
|
|
19
19
|
|
|
20
|
-
The task plan is stored in `.ase/tasks/`*id*`/plan.md` files of the
|
|
21
|
-
project and can be alternatively deleted with the
|
|
22
|
-
"`ase task delete` *id*" command from outside the agent tool.
|
|
23
|
-
|
|
24
20
|
## ARGUMENTS
|
|
25
21
|
|
|
26
22
|
*id*:
|
|
@@ -34,7 +34,7 @@ continued refinement, finalization, or hand-off to implementation or
|
|
|
34
34
|
preflight.
|
|
35
35
|
</objective>
|
|
36
36
|
|
|
37
|
-
@${CLAUDE_SKILL_DIR}/../../meta/ase-format-
|
|
37
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-format-task.md
|
|
38
38
|
|
|
39
39
|
Procedure
|
|
40
40
|
---------
|
|
@@ -271,7 +271,7 @@ Set <content-dirty>true</content-dirty>.
|
|
|
271
271
|
</template>
|
|
272
272
|
</if>
|
|
273
273
|
|
|
274
|
-
4. <if condition="<content/> does not contain '# ✪ TASK
|
|
274
|
+
4. <if condition="<content/> does not contain '# ✪ TASK' AND <instruction/> is empty">
|
|
275
275
|
Set <instruction><content/></instruction> (set instruction to content).
|
|
276
276
|
Set <content></content> (set content to empty).
|
|
277
277
|
Set <content-dirty>true</content-dirty>.
|
|
@@ -327,9 +327,9 @@ Set <content-dirty>true</content-dirty>.
|
|
|
327
327
|
Use the following <template/>:
|
|
328
328
|
|
|
329
329
|
<template>
|
|
330
|
-
<ase-tpl-head title="TASK
|
|
330
|
+
<ase-tpl-head title="TASK"/>
|
|
331
331
|
<content/>
|
|
332
|
-
<ase-tpl-foot title="TASK
|
|
332
|
+
<ase-tpl-foot title="TASK"/>
|
|
333
333
|
</template>
|
|
334
334
|
|
|
335
335
|
4. *Determine next step*:
|
|
@@ -19,10 +19,6 @@ through a *chat-driven loop*. The user steers each round via an
|
|
|
19
19
|
interactive dialog that offers continued refinement, finalization, or
|
|
20
20
|
hand-off to implementation or preflight.
|
|
21
21
|
|
|
22
|
-
The task plan is stored in `.ase/tasks/`*id*`/plan.md` files of the
|
|
23
|
-
project and can be alternatively edited with the "`ase task edit` *id*"
|
|
24
|
-
command from outside the agent tool.
|
|
25
|
-
|
|
26
22
|
## OPTIONS
|
|
27
23
|
|
|
28
24
|
`--plan`|`-p` *option*:
|
|
@@ -31,7 +31,7 @@ Interview the user relentlessly about every essential aspect of the
|
|
|
31
31
|
task plan until reaching a shared understanding.
|
|
32
32
|
</objective>
|
|
33
33
|
|
|
34
|
-
@${CLAUDE_SKILL_DIR}/../../meta/ase-format-
|
|
34
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-format-task.md
|
|
35
35
|
|
|
36
36
|
Procedure
|
|
37
37
|
---------
|
|
@@ -27,10 +27,6 @@ lets the user pick via an interactive dialog. It honors checks for
|
|
|
27
27
|
updated and persisted, and the user is offered a hand-off to editing,
|
|
28
28
|
implementation, or preflight.
|
|
29
29
|
|
|
30
|
-
The task plan is stored in `.ase/tasks/`*id*`/plan.md` files of the
|
|
31
|
-
project and can be alternatively edited with the "`ase task edit` *id*"
|
|
32
|
-
command from outside the agent tool.
|
|
33
|
-
|
|
34
30
|
## OPTIONS
|
|
35
31
|
|
|
36
32
|
`--next`|`-n` *option*[,...]:
|
|
@@ -12,12 +12,11 @@
|
|
|
12
12
|
|
|
13
13
|
## DESCRIPTION
|
|
14
14
|
|
|
15
|
-
The `ase-task-implement` skill performs the *final implementation*
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
plain plan content always overrules the draft.
|
|
15
|
+
The `ase-task-implement` skill performs the *final implementation* of
|
|
16
|
+
a task plan by modifying the corresponding *artifacts* with a complete
|
|
17
|
+
*change set*. The plan is loaded and any optional `IMPLEMENTATION DRAFT`
|
|
18
|
+
section produced by `ase-task-preflight` is used as a hint - the plain
|
|
19
|
+
plan content always overrules the draft.
|
|
21
20
|
|
|
22
21
|
If the task plan deliberately *omits* the `※ VERIFICATION` section
|
|
23
22
|
(as produced by `ase-code-craft`, `ase-code-refactor`,
|