@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.
Files changed (43) hide show
  1. package/dst/ase-artifact.js +331 -0
  2. package/dst/ase-config.js +56 -10
  3. package/dst/ase-service.js +2 -0
  4. package/dst/ase-task.js +139 -64
  5. package/dst/ase.js +2 -0
  6. package/package.json +5 -3
  7. package/plugin/.claude-plugin/plugin.json +1 -1
  8. package/plugin/.github/plugin/plugin.json +1 -1
  9. package/plugin/meta/ase-format-meta.md +5 -2
  10. package/plugin/meta/{ase-format-plan.md → ase-format-task.md} +7 -6
  11. package/plugin/package.json +1 -1
  12. package/plugin/skills/ase-arch-analyze/SKILL.md +1 -1
  13. package/plugin/skills/ase-arch-discover/SKILL.md +17 -9
  14. package/plugin/skills/ase-arch-discover/help.md +14 -0
  15. package/plugin/skills/ase-code-craft/SKILL.md +2 -2
  16. package/plugin/skills/ase-code-insight/SKILL.md +1 -1
  17. package/plugin/skills/ase-code-lint/SKILL.md +1 -1
  18. package/plugin/skills/ase-code-refactor/SKILL.md +2 -2
  19. package/plugin/skills/ase-code-resolve/SKILL.md +3 -3
  20. package/plugin/skills/ase-docs-proofread/SKILL.md +1 -1
  21. package/plugin/skills/ase-meta-brainstorm/SKILL.md +22 -21
  22. package/plugin/skills/ase-meta-brainstorm/help.md +38 -12
  23. package/plugin/skills/ase-meta-chat/SKILL.md +1 -1
  24. package/plugin/skills/ase-meta-diaboli/SKILL.md +1 -1
  25. package/plugin/skills/ase-meta-diff/SKILL.md +1 -1
  26. package/plugin/skills/ase-meta-quorum/SKILL.md +37 -5
  27. package/plugin/skills/ase-meta-quorum/help.md +18 -0
  28. package/plugin/skills/ase-meta-review/SKILL.md +1 -1
  29. package/plugin/skills/ase-meta-search/SKILL.md +35 -6
  30. package/plugin/skills/ase-meta-search/help.md +14 -2
  31. package/plugin/skills/ase-meta-steelman/SKILL.md +1 -1
  32. package/plugin/skills/ase-meta-why/SKILL.md +117 -25
  33. package/plugin/skills/ase-meta-why/help.md +30 -2
  34. package/plugin/skills/ase-task-condense/SKILL.md +1 -1
  35. package/plugin/skills/ase-task-delete/help.md +0 -4
  36. package/plugin/skills/ase-task-edit/SKILL.md +4 -4
  37. package/plugin/skills/ase-task-edit/help.md +0 -4
  38. package/plugin/skills/ase-task-grill/SKILL.md +1 -1
  39. package/plugin/skills/ase-task-grill/help.md +0 -4
  40. package/plugin/skills/ase-task-implement/SKILL.md +1 -1
  41. package/plugin/skills/ase-task-implement/help.md +5 -6
  42. package/plugin/skills/ase-task-preflight/SKILL.md +1 -1
  43. 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
- 1. <step id="STEP 1: Determine Problem">
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/>: 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/>">
55
- Ask <question/> and document the answer in <answer/> with the following template:
56
- Don't stop at symptoms, keep digging for systemic issues.
57
- Multiple root-causes may exist -- explore different branches.
58
- Consider technical, domain-specific, process-related, or organizational causes.
59
-
60
- <template>
61
- <ase-tpl-bullet-secondary/> **WHY <n/>**: <answer/>
62
- </template>
63
-
64
- Then, for the next iteration set <question/> now to be the last <answer/>.
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>
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
- Validate the root-cause by working backwards the causality chain.
73
- Propose a solution that addresses and solves the root-cause.
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. After identifying the root cause it proposes a *SOLUTION* that
21
- addresses it, optionally including concrete source code changes.
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`.
@@ -30,7 +30,7 @@ Condense a Task Plan
30
30
  semantics exactly.
31
31
  </objective>
32
32
 
33
- @${CLAUDE_SKILL_DIR}/../../meta/ase-format-plan.md
33
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-format-task.md
34
34
 
35
35
  Procedure
36
36
  ---------
@@ -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-plan.md
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 PLAN:' AND <instruction/> is empty">
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-PLAN"/>
330
+ <ase-tpl-head title="TASK"/>
331
331
  <content/>
332
- <ase-tpl-foot title="TASK-PLAN"/>
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-plan.md
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*[,...]:
@@ -30,7 +30,7 @@ Implement a Task Plan
30
30
  with a corresponding, complete *change set*.
31
31
  </objective>
32
32
 
33
- @${CLAUDE_SKILL_DIR}/../../meta/ase-format-plan.md
33
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-format-task.md
34
34
 
35
35
  Procedure
36
36
  ---------
@@ -12,12 +12,11 @@
12
12
 
13
13
  ## DESCRIPTION
14
14
 
15
- The `ase-task-implement` skill performs the *final implementation*
16
- of a task plan by modifying the corresponding *artifacts* with a
17
- complete *change set*. The plan is loaded from
18
- `.ase/tasks/`*id*`/plan.md`, and any optional `IMPLEMENTATION DRAFT`
19
- section produced by `ase-task-preflight` is used as a hint - the
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`,
@@ -30,7 +30,7 @@ Preflight a Task Plan
30
30
  for a corresponding, *complete source code change set*.
31
31
  </objective>
32
32
 
33
- @${CLAUDE_SKILL_DIR}/../../meta/ase-format-plan.md
33
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-format-task.md
34
34
 
35
35
  Procedure
36
36
  ---------
@@ -30,7 +30,7 @@ Reboot a Task Plan
30
30
  based on the existing *WHAT* and *WHY*.
31
31
  </objective>
32
32
 
33
- @${CLAUDE_SKILL_DIR}/../../meta/ase-format-plan.md
33
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-format-task.md
34
34
 
35
35
  Procedure
36
36
  ---------