@rse/ase 0.9.1 → 0.9.3

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 (39) 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 +317 -102
  13. package/plugin/meta/ase-format-meta.md +12 -0
  14. package/plugin/meta/ase-format-spec.md +535 -251
  15. package/plugin/meta/ase-getopt.md +1 -0
  16. package/plugin/meta/ase-persona.md +1 -1
  17. package/plugin/meta/ase-skill.md +6 -6
  18. package/plugin/package.json +5 -2
  19. package/plugin/skills/ase-arch-analyze/SKILL.md +33 -33
  20. package/plugin/skills/ase-code-lint/SKILL.md +1 -1
  21. package/plugin/skills/ase-code-lint/help.md +1 -1
  22. package/plugin/skills/ase-docs-distill/SKILL.md +158 -0
  23. package/plugin/skills/ase-docs-distill/help.md +76 -0
  24. package/plugin/skills/ase-docs-proofread/SKILL.md +1 -1
  25. package/plugin/skills/ase-docs-proofread/help.md +1 -1
  26. package/plugin/skills/ase-meta-brainstorm/SKILL.md +17 -11
  27. package/plugin/skills/ase-meta-brainstorm/help.md +4 -4
  28. package/plugin/skills/ase-meta-diaboli/SKILL.md +4 -4
  29. package/plugin/skills/ase-meta-diaboli/help.md +2 -2
  30. package/plugin/skills/ase-meta-diff/SKILL.md +110 -64
  31. package/plugin/skills/ase-meta-diff/help.md +30 -6
  32. package/plugin/skills/ase-meta-review/SKILL.md +166 -0
  33. package/plugin/skills/ase-meta-review/help.md +70 -0
  34. package/plugin/skills/ase-meta-steelman/SKILL.md +159 -0
  35. package/plugin/skills/ase-meta-steelman/help.md +60 -0
  36. package/plugin/skills/ase-meta-why/help.md +1 -1
  37. package/plugin/skills/ase-task-condense/SKILL.md +3 -3
  38. package/plugin/skills/ase-task-implement/help.md +1 -1
  39. package/plugin/meta/ase-format-adr.md +0 -199
@@ -0,0 +1,159 @@
1
+ ---
2
+ name: ase-meta-steelman
3
+ argument-hint: "[--help|-h] <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
+
16
+ <skill name="ase-meta-steelman">
17
+ Build the "Steelman" Argument
18
+ </skill>
19
+
20
+ <objective>
21
+ Build the "Steelman" argument by constructing the strongest
22
+ possible case for the thesis: <thesis>$ARGUMENTS</thesis>
23
+ </objective>
24
+
25
+ 1. **Repeat Thesis**:
26
+
27
+ Output the thesis with the following <template/>:
28
+
29
+ <template>
30
+ <ase-tpl-bullet-secondary/> **THESIS**: <thesis/>
31
+ </template>
32
+
33
+ 2. **Determine Pro-Theses**:
34
+
35
+ Reason on the thesis in <thesis/> by playing *Steelman* (Latin
36
+ spirit: "Advocatus Dei") - building the strongest possible case
37
+ *for* it - by charitably strengthening and defending it with the
38
+ help of the following tenets:
39
+
40
+ - **Charitable Interpretation**:
41
+ Defend the strongest ("steelman") interpretation of the
42
+ <thesis/>, not the weakest ("strawman"), because the most
43
+ generous reading is the one worth defending and the one a fair
44
+ critic must ultimately confront.
45
+
46
+ - **Strengthen the Fundamentals**:
47
+ Identify the soundest fundamental ideas behind the thesis and
48
+ make them explicit, because a position rests on the strength of
49
+ its foundation and a solid foundation carries everything built
50
+ on top of it.
51
+
52
+ - **Credit Claims, Not Person**:
53
+ Support the thesis, the assumption, the evidence - never appeal
54
+ to the proponent's authority or reputation, because a case that
55
+ leans on who said it instead of what was said is no stronger
56
+ than its weakest argument.
57
+
58
+ - **Make the Enabling Assumptions Explicit**:
59
+ Surface the reasonable assumptions the thesis depends on and
60
+ show they hold, because most strong arguments gain their force
61
+ from premises that are sound once stated out loud.
62
+
63
+ - **Supply Evidence Proportional to Claim**:
64
+ Ask "How do we know this?" and "What best supports it?", and
65
+ marshal that support, because a claim defended with its
66
+ strongest available evidence is the one hardest to dismiss.
67
+
68
+ - **Seek the Confirming Case**:
69
+ Actively hunt for the supporting example, the favourable
70
+ scenario, the precedent where the position succeeds, because
71
+ one solid confirming case anchors the argument in reality.
72
+
73
+ - **Merit Identification**:
74
+ Focus on the genuine strengths of the thesis with the highest
75
+ potential value only, because marginal merits are not worth the
76
+ explicit discussion.
77
+
78
+ - **Push the Logic to its Best Conclusion**:
79
+ Ask "If we accept this, then what follows?" and apply
80
+ "Reduction to the Good" (Latin: "Reductio Ad Bonum"), because
81
+ this strengthens the thesis by showing that accepting it leads
82
+ to coherent, beneficial, and reinforcing conclusions.
83
+
84
+ - **Surface the Upside and Leverage**:
85
+ Name the opportunity gained, the compounding benefit, the
86
+ problem dissolved, because every choice in the thesis unlocks
87
+ possibilities that a fair appraisal must count.
88
+
89
+ - **Stay Falsifiable and Concrete**:
90
+ Frame each supporting point so it can be checked and confirmed
91
+ with facts, because vague enthusiasm ("I just like it") adds no
92
+ strength to the case.
93
+
94
+ - **Argue in Good Faith**:
95
+ Make clear you are building the best honest case, not
96
+ overselling, because the goal of the objective is a better
97
+ final decision, not a sales pitch.
98
+
99
+ - **Concede the Real Weaknesses**:
100
+ Acknowledging where the thesis genuinely falls short is what
101
+ makes the defence credible, because a Steelman who can never
102
+ admit a flaw is just an apologist.
103
+
104
+ - **Pre-Parade Thinking**:
105
+ Imagine success scenarios of the thesis, because envisioning
106
+ how it wins clarifies the conditions worth securing in advance.
107
+
108
+ For each Pro-Thesis or Supporting-Argument rank it on a Likert
109
+ scale of 0 (weak) to 10 (strong). Repeat the process of finding
110
+ more Pro-Theses or Supporting-Arguments until you EITHER have found
111
+ at least 10 Pro-Theses or Supporting-Arguments with at least a rank
112
+ of 7 OR you have already checked a total of 50 Pro-Theses or
113
+ Supporting-Arguments.
114
+
115
+ Then, for the top-10 highest-ranked Pro-Theses or
116
+ Supporting-Arguments, sort them by their rank from highest to lowest,
117
+ store each in <prothesis-N/> with the format `**<aspect-N/>**
118
+ (rank: <rank-N/>/10): <statement-N/>` (where <aspect-N/> is a short
119
+ 1-3 word summary of <statement-N/>, <rank-N/> is the determined
120
+ rank on the Likert scale, and <statement-N/> is a single-sentence
121
+ statement of not more than 40 words), and then output the following
122
+ <template/>:
123
+
124
+ <template>
125
+ <ase-tpl-bullet-signal/> **PRO-THESIS**: <prothesis-N/>
126
+ </template>
127
+
128
+ 3. **Consolidating Reasoning**:
129
+
130
+ Following the consolidation of...
131
+
132
+ *Thesis* + *Pro-Theses* → *Fortification*
133
+
134
+ ...with...
135
+
136
+ - *Thesis*: the initial statement, claim, or position. It is asserted
137
+ as true, but on its own it is under-developed: it captures part of the
138
+ truth while leaving its own strongest support implicit, unstated, or
139
+ unproven.
140
+
141
+ - *Pro-Theses*: the reinforcing forces. They are the corroboration,
142
+ evidence, or supporting positions that the thesis invites - precisely
143
+ the role a Steelman played. The pro-theses make explicit what the
144
+ thesis assumed or left unsaid.
145
+
146
+ - *Fortification*: the consolidation. Not an uncritical "cheerleading"
147
+ of the thesis, and not a mere restatement of it, but a stronger
148
+ position that consolidates everything that genuinely strengthens it
149
+ while honestly bounding where it holds. The fortification reinforces
150
+ the position by sharpening it.
151
+
152
+ ...finally derive a strong single-sentence (not more than 40 words)
153
+ fortification of the <thesis/> and all found <prothesis-N/> - the
154
+ strongest defensible form of the thesis - store it in <fortification/>,
155
+ and then finally output the following <template/>:
156
+
157
+ <template>
158
+ <ase-tpl-bullet-normal/> **FORTIFICATION**: <fortification/>
159
+ </template>
@@ -0,0 +1,60 @@
1
+
2
+ ## NAME
3
+
4
+ `ase-meta-steelman` - Build the "Steelman" Argument
5
+
6
+ ## SYNOPSIS
7
+
8
+ `ase-meta-steelman`
9
+ [`--help`|`-h`]
10
+ *thesis*
11
+
12
+ ## DESCRIPTION
13
+
14
+ The `ase-meta-steelman` skill builds the strongest possible case
15
+ *for* a supplied *thesis* - the constructive mirror of its adversarial
16
+ counterpart `ase-meta-diaboli`. It applies a disciplined set of
17
+ constructive-thinking tenets - charitable interpretation, strengthening
18
+ the fundamentals, surfacing the enabling assumptions, supplying
19
+ proportional evidence, seeking confirming cases, *Reductio Ad Bonum*,
20
+ surfacing the upside, and pre-parade thinking - while crediting the
21
+ claim rather than the proponent's authority and conceding where the
22
+ thesis genuinely falls short.
23
+
24
+ The skill iterates until it has found at least ten pro-theses
25
+ (supporting arguments) each ranked at least 7 on a 0 (weak) to 10
26
+ (strong) Likert scale, reports the top ten sorted from strongest to
27
+ weakest, and finally consolidates them (*Thesis* + *Pro-Theses* →
28
+ *Fortification*) to derive a single-sentence *FORTIFICATION* that
29
+ consolidates everything genuinely strengthening the thesis while
30
+ honestly bounding where it holds.
31
+
32
+ The intent is constructive: building the best honest case for the
33
+ thesis to arrive at a better final decision, not overselling or merely
34
+ cheerleading.
35
+
36
+ ## ARGUMENTS
37
+
38
+ *thesis*:
39
+ The statement, claim, or position to be charitably strengthened.
40
+ It may be technical, factual, or opinion-based; the skill defends
41
+ its strongest ("steelman") interpretation.
42
+
43
+ ## EXAMPLES
44
+
45
+ Strengthen a technology-choice claim:
46
+
47
+ ```text
48
+ ❯ /ase-meta-steelman HAPI is the best REST framework
49
+ ```
50
+
51
+ Build the case for a design decision:
52
+
53
+ ```text
54
+ ❯ /ase-meta-steelman We should rewrite the service in Rust.
55
+ ```
56
+
57
+ ## SEE ALSO
58
+
59
+ `ase-meta-diaboli`, `ase-meta-why`, `ase-meta-evaluate`,
60
+ `ase-meta-quorum`.
@@ -13,7 +13,7 @@
13
13
 
14
14
  The `ase-meta-why` skill applies the *Five-Whys* *root-cause
15
15
  analysis* technique to the supplied *fact*. The skill iteratively
16
- asks "why" up to five times to drill down from surface symptoms
16
+ asks "why" - up to five times - to drill down from surface symptoms
17
17
  to the underlying root cause, considering technical, domain-specific,
18
18
  process-related, and organizational causes. After identifying the
19
19
  root cause it proposes a *SOLUTION* that addresses it, optionally
@@ -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
@@ -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
@@ -1,199 +0,0 @@
1
-
2
- Architecture Decision Record (ADR)
3
- ==================================
4
-
5
- An *Architecture Decision Record (ADR)* records
6
- a major decision related to the architecture.
7
-
8
- FORMAT
9
- ------
10
-
11
- Every ADR uses a strict and fixed format:
12
-
13
- <format>
14
-
15
- # ✪ <id/> - **<title/>**
16
-
17
- ✳ created: **<timestamp-created/>**
18
- ✎ modified: **<timestamp-modified/>**
19
- ▶ status: <status/>
20
-
21
- ## ※ WHEN (Context)
22
-
23
- <context/>
24
-
25
- ## ※ WHAT (Decision)
26
-
27
- <decision/>
28
-
29
- ## ※ WHY (Rationale)
30
-
31
- <rationale/>
32
-
33
- ## ※ NOTES (Background)
34
-
35
- <notes/>
36
-
37
- </format>
38
-
39
- You *MUST* honor the following hints on this *ADR* format:
40
-
41
- - The <id/> is `ADR-<N/>-<slug/>` where <N/> is a 3-digit zero-padded
42
- unique number, <slug/> is a unique "slug" of always 2 lower-cased
43
- words (concatenated with "-" characters and in total not longer than
44
- 30 characters, and derived from the <decision/>).
45
-
46
- - The <title/> is a short summary of the <decision/>, not longer than
47
- 80 characters.
48
-
49
- - The <timestamp-created/> is the timestamp when this ADR
50
- was created. The <timestamp-modified/> is the timestamp when this
51
- ADR was last modified. Both use an ISO-style format value. The value
52
- of both can be determined by a call to the `ase_timestamp(format:
53
- "yyyy-LL-dd HH:mm")` tool of the `ase` MCP server and use the `text`
54
- field of its response.
55
-
56
- - The <status/> is `proposed`, `accepted`, `deprecated` or `superseded
57
- by ADR-NNN-xxx-yyy`)
58
-
59
- - The <context/> captures the situation that forces the <decision/> -
60
- the "why are we even talking about this" part. It describes the
61
- situation as it is, before the <decision/> is made.
62
-
63
- The following usually goes into <context/>:
64
-
65
- - The problem or need — what's broken, missing, or about to change
66
- that requires a decision.
67
- - The forces at play — technical constraints, business requirements,
68
- deadlines, team skills, existing systems, regulatory/compliance
69
- pressures. These are often competing and that tension is the whole point.
70
- - Relevant facts — current architecture, prior decisions,
71
- assumptions, what's known and what's uncertain.
72
- - Scope/boundaries — what this decision is (and isn't) about.
73
-
74
- It is written neutrally and factually. It should not contain the
75
- decision itself, nor advocate for an option — a reader should
76
- be able to read the <context/>, pause, and arrive at the decision
77
- themselves because the forces make it (nearly) inevitable.
78
-
79
- - The <decision/> states what you are actually going to do — the chosen
80
- response to the forces laid out in the <context/>. It is written in
81
- active, assertive voice, in the present or imperative tense, as a
82
- committed position rather than a discussion.
83
-
84
- The following usually goes into <decision/>:
85
-
86
- - The choice itself — clearly and unambiguously.
87
- - The essence of how — enough of the approach to make the choice
88
- concrete (the mechanism, pattern, or technology), but not a full
89
- implementation specification.
90
-
91
- The <decision/> is a declaration, not a deliberation. The
92
- <decision/> usually uses the wording "We use..." or "We do..."
93
- and is active, definite, owning the choice. In <decision/> avoid
94
- hedging ("we might", "we could consider"). The deliberation already
95
- happened, the ADR records the verdict.
96
-
97
- - The <rationale/> is the reasoning that justifies the <decision/> — the
98
- bridge that explains why this choice, given those forces. It
99
- answers: "Of all the things we could have done, why was this the
100
- right one?". Where <context/> states the forces and <decision/>
101
- states the choice, <rationale/> is the logical connective tissue
102
- between them — it shows that the <decision/> actually follows from
103
- the <context/>.
104
-
105
- The following usually goes in <rationale/>:
106
-
107
- - The deciding factors — which forces from the <context/> carried the
108
- most weight, and how the chosen option satisfies them best.
109
- - The trade-off reasoning — what you optimized for and what you
110
- knowingly sacrificed. Naming the trade-off is the heart of rationale.
111
- - Why the alternatives lost — the comparative argument: "option B
112
- failed on X, option C cost too much on Y."
113
- - Assumptions and evidence — benchmarks, prior experience,
114
- constraints, or principles the reasoning rests on.
115
-
116
- - The <notes/> section is *OPTIONAL* and can be omitted
117
- when it does not add genuine value. Most ADRs won't need it.
118
-
119
- The following usually goes in <notes/>:
120
-
121
- - Information of the decision *process* like e.g.
122
- weighted decision matrix of considered alternatives.
123
- - Consequences of the <decision/> — but only when non-obvious downstream
124
- effects need to be called out.
125
- - Links to strongly related ADRs.
126
-
127
- - For the relationship between <context/>, <decision/> and <rationale/>
128
- good checks are:
129
-
130
- - The "litmus test" is:
131
- - <context/> = forces
132
- - <decision/> = response to those forces,
133
- - <rationale/> = why <decision/> answers the forces in <context/>.
134
-
135
- - The <decision/> should feel like the natural, almost inevitable
136
- answer to the <context/>. If a reader is surprised by the
137
- <decision/>, either the <context/> is missing a force, or the
138
- <decision/> is under-justified.
139
-
140
- - The <rationale/> should make the <decision/> feel earned, not
141
- asserted. If you would delete the <rationale/> and the
142
- <decision/> suddenly looks arbitrary, the <rationale/> was
143
- doing its job. So, the <rationale/> is the justification that
144
- ties the <decision/> back to the pressures in <context/>.
145
-
146
- - The <context/>, <decision/> and <rationale/> all are just a
147
- single paragraph of concise and brief prose text, usually comprised
148
- of just 1 to 3 sentences. The paragraphs break all lines with a
149
- newline character after about 120 characters per line. The value of
150
- an ADR is in recording *that* a decision was made and *why* — not in
151
- filling out sections of a document.
152
-
153
- TENETS
154
- ------
155
-
156
- For an ADR, all of the following three tenets must be true:
157
-
158
- - **Hard to Reverse**: the cost of changing it later is meaningful
159
- ("Oh my god, this would result in a dramatic refactoring!"). So,
160
- if a decision is easy to reverse, just skip it.
161
-
162
- - **Surprising without Context**: a future architect will look at
163
- the code and wonder ("Why on earth did they do it this way?").
164
- So, if a decision is not surprising, nobody will wonder why.
165
-
166
- - **Result of a Real Trade-Off**: there were genuine alternatives
167
- and one was picked for specific reasons ("We deliberately chose
168
- this, because..."). So, if there was no real alternative,
169
- there's nothing to record beyond "we did the obvious thing."
170
-
171
- For an ADR, the following qualify:
172
-
173
- - **Architectural shape.** "We're using a monorepo." "The write
174
- model is event-sourced, the read model is projected into PostgreSQL."
175
-
176
- - **Integration patterns between contexts.** "Ordering and Billing
177
- communicate via domain events, not synchronous HTTP."
178
-
179
- - **Technology choices that carry lock-in.** Database, message bus,
180
- auth provider, deployment target. Not every library — just the
181
- ones that would take a quarter to swap out.
182
-
183
- - **Boundary and scope decisions.** "Customer data is owned by the
184
- Customer context; other contexts reference it by ID only." The explicit
185
- no-s are as valuable as the yes-s.
186
-
187
- - **Deliberate deviations from the obvious path.** "We're using
188
- manual SQL instead of an ORM because X." Anything where a reasonable
189
- reader would assume the opposite. These stop the next engineer from
190
- "fixing" something that was deliberate.
191
-
192
- - **Constraints not visible in the code.** "We can't use AWS because
193
- of compliance requirements." "Response times must be under 200ms because
194
- of the partner API contract."
195
-
196
- - **Rejected alternatives when the rejection is non-obvious.** If
197
- you considered GraphQL and picked REST for subtle reasons, record it —
198
- otherwise someone will suggest GraphQL again in six months.
199
-