@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.
Files changed (41) hide show
  1. package/dst/ase-hello.js +24 -0
  2. package/dst/ase-statusline.js +15 -5
  3. package/package.json +2 -2
  4. package/plugin/.claude-plugin/plugin.json +1 -1
  5. package/plugin/.github/plugin/plugin.json +1 -1
  6. package/plugin/agents/ase-meta-review.md +188 -0
  7. package/plugin/etc/eslint.mjs +25 -0
  8. package/plugin/etc/markdownlint.yaml +13 -11
  9. package/plugin/etc/stx.conf +2 -1
  10. package/plugin/meta/ase-control.md +7 -2
  11. package/plugin/meta/ase-dialog.md +2 -0
  12. package/plugin/meta/ase-format-arch.md +31 -31
  13. package/plugin/meta/ase-format-spec.md +3 -3
  14. package/plugin/meta/ase-getopt.md +1 -0
  15. package/plugin/meta/ase-persona.md +1 -1
  16. package/plugin/meta/ase-skill.md +6 -6
  17. package/plugin/package.json +5 -2
  18. package/plugin/skills/ase-arch-analyze/SKILL.md +33 -33
  19. package/plugin/skills/ase-code-analyze/SKILL.md +162 -18
  20. package/plugin/skills/ase-code-analyze/help.md +47 -7
  21. package/plugin/skills/ase-code-lint/SKILL.md +11 -3
  22. package/plugin/skills/ase-code-lint/help.md +14 -1
  23. package/plugin/skills/ase-docs-distill/SKILL.md +158 -0
  24. package/plugin/skills/ase-docs-distill/help.md +76 -0
  25. package/plugin/skills/ase-docs-proofread/SKILL.md +1 -1
  26. package/plugin/skills/ase-docs-proofread/help.md +1 -1
  27. package/plugin/skills/ase-meta-brainstorm/SKILL.md +29 -15
  28. package/plugin/skills/ase-meta-brainstorm/help.md +21 -7
  29. package/plugin/skills/ase-meta-diaboli/SKILL.md +36 -13
  30. package/plugin/skills/ase-meta-diaboli/help.md +22 -4
  31. package/plugin/skills/ase-meta-diff/SKILL.md +110 -64
  32. package/plugin/skills/ase-meta-diff/help.md +30 -6
  33. package/plugin/skills/ase-meta-review/SKILL.md +184 -0
  34. package/plugin/skills/ase-meta-review/help.md +88 -0
  35. package/plugin/skills/ase-meta-steelman/SKILL.md +210 -0
  36. package/plugin/skills/ase-meta-steelman/help.md +92 -0
  37. package/plugin/skills/ase-meta-why/SKILL.md +20 -7
  38. package/plugin/skills/ase-meta-why/help.md +18 -5
  39. package/plugin/skills/ase-task-condense/SKILL.md +3 -3
  40. package/plugin/skills/ase-task-grill/SKILL.md +1 -1
  41. 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 $ARGUMENTS?</problem>
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
- <for items="1 2 3 4 5">
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 <item/>**: <answer/>
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 5 "Why" -- you can <break/> the iteration
54
- when you already reached the root-cause.
55
- </for>
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 five times to drill down from surface symptoms
17
- to the underlying root cause, considering technical, domain-specific,
18
- process-related, and organizational causes. After identifying the
19
- root cause it proposes a *SOLUTION* that addresses it, optionally
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 `—` for short subsequent facts.
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 but *only* when
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 semantics preserved EXACTLY*: condensing
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 terms.
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 the
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