@rse/ase 0.9.3 → 0.9.5

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 (34) hide show
  1. package/package.json +1 -1
  2. package/plugin/.claude-plugin/plugin.json +1 -1
  3. package/plugin/.github/plugin/plugin.json +1 -1
  4. package/plugin/package.json +1 -1
  5. package/plugin/skills/ase-arch-analyze/SKILL.md +1 -1
  6. package/plugin/skills/ase-arch-discover/SKILL.md +17 -9
  7. package/plugin/skills/ase-arch-discover/help.md +14 -0
  8. package/plugin/skills/ase-code-analyze/SKILL.md +162 -18
  9. package/plugin/skills/ase-code-analyze/help.md +47 -7
  10. package/plugin/skills/ase-code-craft/SKILL.md +1 -1
  11. package/plugin/skills/ase-code-insight/SKILL.md +1 -1
  12. package/plugin/skills/ase-code-lint/SKILL.md +11 -3
  13. package/plugin/skills/ase-code-lint/help.md +13 -0
  14. package/plugin/skills/ase-code-refactor/SKILL.md +1 -1
  15. package/plugin/skills/ase-code-resolve/SKILL.md +2 -2
  16. package/plugin/skills/ase-docs-distill/SKILL.md +1 -1
  17. package/plugin/skills/ase-docs-proofread/SKILL.md +1 -1
  18. package/plugin/skills/ase-meta-brainstorm/SKILL.md +30 -21
  19. package/plugin/skills/ase-meta-brainstorm/help.md +49 -9
  20. package/plugin/skills/ase-meta-chat/SKILL.md +1 -1
  21. package/plugin/skills/ase-meta-diaboli/SKILL.md +33 -10
  22. package/plugin/skills/ase-meta-diaboli/help.md +20 -2
  23. package/plugin/skills/ase-meta-diff/SKILL.md +1 -1
  24. package/plugin/skills/ase-meta-quorum/SKILL.md +37 -5
  25. package/plugin/skills/ase-meta-quorum/help.md +18 -0
  26. package/plugin/skills/ase-meta-review/SKILL.md +21 -3
  27. package/plugin/skills/ase-meta-review/help.md +20 -2
  28. package/plugin/skills/ase-meta-search/SKILL.md +35 -6
  29. package/plugin/skills/ase-meta-search/help.md +14 -2
  30. package/plugin/skills/ase-meta-steelman/SKILL.md +62 -11
  31. package/plugin/skills/ase-meta-steelman/help.md +34 -2
  32. package/plugin/skills/ase-meta-why/SKILL.md +122 -17
  33. package/plugin/skills/ase-meta-why/help.md +46 -5
  34. package/plugin/skills/ase-task-grill/SKILL.md +1 -1
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ase-meta-brainstorm
3
- argument-hint: "[--help|-h] <topic>"
3
+ argument-hint: "[--help|-h] [--max-clarify|-c=3] [--min-ideas|-i=12] [--min-rank|-r=7] [--max-shortlist|-s=4] <topic>"
4
4
  description: >
5
5
  Collaboratively brainstorm a topic by diverging on ideas, converging
6
6
  through clustering and scoring, and distilling a shortlist with
@@ -15,16 +15,23 @@ effort: high
15
15
  @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
16
16
  @${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
17
17
  @${CLAUDE_SKILL_DIR}/../../meta/ase-dialog.md
18
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
18
19
 
19
20
  <skill name="ase-meta-brainstorm">
20
21
  Collaboratively Brainstorm a Topic
21
22
  </skill>
22
23
 
24
+ <expand name="getopt"
25
+ arg1="ase-meta-brainstorm"
26
+ arg2="--max-clarify|-c=3 --min-ideas|-i=12 --min-rank|-r=7 --max-shortlist|-s=4">
27
+ $ARGUMENTS
28
+ </expand>
29
+
23
30
  <objective>
24
- Collaboratively brainstorm the topic <topic>$ARGUMENTS</topic> by first
25
- *diverging* into a broad space of candidate ideas, then *converging*
26
- through clustering and scoring, and finally distilling a *shortlist*
27
- with a single recommended direction.
31
+ Collaboratively brainstorm the topic <topic><getopt-arguments/></topic>
32
+ by first *diverging* into a broad space of candidate ideas, then
33
+ *converging* through clustering and scoring, and finally distilling a
34
+ *shortlist* with a single recommended direction.
28
35
  </objective>
29
36
 
30
37
  Guiding Tenets
@@ -83,19 +90,20 @@ Honor the following tenets throughout the brainstorming:
83
90
 
84
91
  Before generating any ideas, *explore the project context* (review
85
92
  relevant existing files, documentation, and recent changes) and
86
- determine the <m/> (<m/>=1-3) *essential unknowns* about the topic
87
- - the purpose, constraints, scope boundaries, and success criteria
88
- that must be pinned down for the brainstorming to be reasonably
89
- grounded.
93
+ determine the <m/> (<m/> = 1..<getopt-option-max-clarify/>)
94
+ *essential unknowns* about the topic - the purpose, constraints,
95
+ scope boundaries, and success criteria that must be pinned down for
96
+ the brainstorming to be reasonably grounded.
90
97
 
91
- Notice: you are intentionally constraint to just 1-3 unknowns,
92
- as too much upfront intent clarification kills the brainstorming
93
- of ideas later. So, you *MUST* reduce the clarifications of the
94
- unknowns to the absolute minimum!
98
+ Notice: you are intentionally constrained to just
99
+ 1..<getopt-option-max-clarify/> unknowns, as too much upfront intent
100
+ clarification kills the brainstorming of ideas later. So, you *MUST*
101
+ reduce the clarifications of the unknowns to the absolute minimum in
102
+ general and cap it at <getopt-option-max-clarify/>!
95
103
 
96
- For each essential unknown, derive a short 1-3 word facet <facet-M/>
97
- and a corresponding question <question-M/> whose answer materially
98
- changes which ideas make sense at all.
104
+ For each essential unknown to clarify, derive a short 1-3 word facet
105
+ <facet-M/> and a corresponding question <question-M/> whose answer
106
+ materially changes which ideas make sense at all.
99
107
 
100
108
  1. For each <question-M/> in the iteration cycle <M/> (<M/>=1...<m/>):
101
109
 
@@ -152,8 +160,9 @@ Honor the following tenets throughout the brainstorming:
152
160
  variety in outcome.
153
161
 
154
162
  Do still *not* judge, rank, or prune ideas in this step. Generate
155
- ideas until you either reach at least 12 distinct candidate ideas or
156
- have clearly exhausted the meaningfully distinct space.
163
+ ideas until you either reach at least <getopt-option-min-ideas/> distinct
164
+ candidate ideas or have clearly exhausted the meaningfully distinct
165
+ space.
157
166
 
158
167
  Store each candidate idea in <idea-N/> with the format
159
168
  `**<idea-name-N/>**: <idea-statement-N/>` (where <idea-name-N/> is a
@@ -191,10 +200,10 @@ Honor the following tenets throughout the brainstorming:
191
200
  purpose and constraints on a Likert scale of 0 (poor) to 10
192
201
  (excellent), considering *value*, *uniqueness*, *risk*, and
193
202
  *alignment with the existing code base*. Keep only ideas in the
194
- clusters with a rank of at least 7.
203
+ clusters with a rank of at least <getopt-option-min-rank/>.
195
204
 
196
205
  3. From the scored ideas <idea-N/>, distill a *shortlist* of the top
197
- 3-4 options, sorted by rank from highest to lowest.
206
+ <getopt-option-max-shortlist/> options, sorted by rank from highest to lowest.
198
207
 
199
208
  For this, draw the shortlist from *distinct* clusters <cluster-C/>
200
209
  wherever possible - prefer a diverse shortlist spanning different
@@ -208,7 +217,7 @@ Honor the following tenets throughout the brainstorming:
208
217
  and its primary trade-off), and output the following <template/>:
209
218
 
210
219
  <template>
211
- <ase-tpl-bullet-normal/> **DISTILLED IDEA <N/>**: <option-N/>
220
+ <ase-tpl-bullet-normal/> **DISTILLED IDEA**: <option-N/>
212
221
  </template>
213
222
 
214
223
  4. Finally, derive a single *recommended idea* - the highest-ranked
@@ -7,6 +7,10 @@
7
7
 
8
8
  `ase-meta-brainstorm`
9
9
  [`--help`|`-h`]
10
+ [`--max-clarify=3`]
11
+ [`--min-ideas`|`-i=12`]
12
+ [`--min-rank=7`]
13
+ [`--max-shortlist=4`]
10
14
  *topic*
11
15
 
12
16
  ## DESCRIPTION
@@ -15,23 +19,46 @@ The `ase-meta-brainstorm` skill guides a collaborative ideation
15
19
  session on a *topic* *before* any implementation begins. It first
16
20
  *clarifies intent* by exploring the project context and interviewing
17
21
  the user - one grounded, multiple-choice question at a time - about
18
- purpose, constraints, scope, and success criteria. It then *diverges*
19
- into a broad space of candidate ideas pursued from deliberately diverse
20
- angles (MVP-first, risk-first, UX-first, reuse-first, and wildcard),
21
- without judging them.
22
+ purpose, constraints, scope, and success criteria (asking at most
23
+ `--max-clarify`, default 3, questions). It then *diverges* into a broad
24
+ space of candidate ideas (at least `--min-ideas`, default 12) pursued from
25
+ deliberately diverse angles (MVP-first, risk-first, UX-first,
26
+ reuse-first, and wildcard), without judging them.
22
27
 
23
28
  Next it *converges* by clustering the ideas into coherent themes,
24
29
  pruning speculative or out-of-scope ones via *YAGNI*, and scoring the
25
- survivors on a 0-10 fit scale (keeping only those ranked 7 or higher).
26
- Finally it distills a *shortlist* of the top 3-4 directions - drawn from
27
- distinct clusters wherever possible - and derives a single
28
- *RECOMMENDATION*, being either the highest-ranked option or a principled
29
- synthesis of the shortlist.
30
+ survivors on a 0-10 fit scale (keeping only those ranked `--min-rank`,
31
+ default 7, or higher). Finally it distills a *shortlist* of the top
32
+ `--max-shortlist`, default 4, directions - drawn from distinct clusters
33
+ wherever possible - and derives a single *RECOMMENDATION*, being either
34
+ the highest-ranked option or a principled synthesis of the shortlist.
30
35
 
31
36
  On completion the skill offers a *next step*: stop, or hand the
32
37
  recommended direction off to the `ase-task-edit`, `ase-code-craft`, or
33
38
  `ase-task-preflight` skills.
34
39
 
40
+ ## OPTIONS
41
+
42
+ `--max-clarify=3`:
43
+ The *maximum* number of essential-unknown clarification questions
44
+ asked in the *clarify intent* phase (default: 3). Lower it for a
45
+ faster, leaner intake, raise it for more upfront grounding.
46
+
47
+ `--min-ideas`|`-i=12`:
48
+ The *minimum* number of candidate ideas to generate in the *diverge*
49
+ phase before converging (default: 12). Raise it for a broader idea
50
+ space, lower it for a quicker, narrower session.
51
+
52
+ `--min-rank=7`:
53
+ The *minimum* 0-10 fit rank an idea must score to survive the
54
+ *converge* phase (default: 7). Raise it for a stricter filter, lower
55
+ it to retain more ideas.
56
+
57
+ `--max-shortlist=4`:
58
+ The *maximum* number of distilled options on the final *shortlist*
59
+ (default: 4). Lower it for a sharper focus, raise it for more
60
+ finalists.
61
+
35
62
  ## ARGUMENTS
36
63
 
37
64
  *topic*:
@@ -46,6 +73,19 @@ Brainstorm an approach for a new feature:
46
73
  ❯ /ase-meta-brainstorm an offline-first sync layer for the mobile app
47
74
  ```
48
75
 
76
+ Brainstorm with a broader idea space of at least 20 candidates:
77
+
78
+ ```text
79
+ ❯ /ase-meta-brainstorm --min-ideas 20 an offline-first sync layer
80
+ ```
81
+
82
+ Brainstorm quickly with a single clarification, a stricter score floor,
83
+ and a tighter shortlist:
84
+
85
+ ```text
86
+ ❯ /ase-meta-brainstorm --max-clarify 1 --min-rank 8 --max-shortlist 3 an offline-first sync layer
87
+ ```
88
+
49
89
  ## SEE ALSO
50
90
 
51
91
  `ase-meta-evaluate`, `ase-meta-quorum`, `ase-meta-diaboli`
@@ -28,7 +28,7 @@ Query foreign LLM for: <query>$ARGUMENTS</query>
28
28
 
29
29
  ```text
30
30
  Agent(
31
- name: "ase:ase-meta-chat",
31
+ name: "ase-meta-chat",
32
32
  description: "Query Foreign LLM for Chat",
33
33
  subagent_type: "ase:ase-meta-chat",
34
34
  prompt: <query/>
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ase-meta-diaboli
3
- argument-hint: "[--help|-h] <thesis>"
3
+ argument-hint: "[--help|-h] [--count|-c <count>] <thesis>"
4
4
  description: >
5
5
  Challenge a thesis by playing "Devil’s Advocate" (latin: "Advocatus
6
6
  Diaboli"). Use when the user wants a thesis or statement
@@ -12,25 +12,40 @@ effort: xhigh
12
12
 
13
13
  @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
14
14
  @${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
15
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
15
16
 
16
17
  <skill name="ase-meta-diaboli">
17
18
  Play "Devil's Advocate"
18
19
  </skill>
19
20
 
21
+ <expand name="getopt"
22
+ arg1="ase-meta-diaboli"
23
+ arg2="--count|-c=10">
24
+ $ARGUMENTS
25
+ </expand>
26
+
20
27
  <objective>
21
28
  Play "Devil’s Advocate" (latin: "Advocatus Diaboli") by relentlessly
22
- challenging or criticising the thesis: <thesis>$ARGUMENTS</thesis>
29
+ challenging or criticising the thesis: <thesis><getopt-arguments/></thesis>
23
30
  </objective>
24
31
 
25
- 1. **Repeat Thesis**:
32
+ Determine the minimum number of *anti-theses* to surface: set <count/>
33
+ to <getopt-option-count/>; if <getopt-option-count/> is *non-numeric* or
34
+ *less than or equal to 0*, use the default *10* instead.
35
+
36
+ <flow>
37
+
38
+ 1. <step id="STEP 1: Restate Thesis">
26
39
 
27
40
  Output the thesis with the following <template/>:
28
41
 
29
42
  <template>
30
- <ase-tpl-bullet-secondary/> **THESIS**: <thesis/>
43
+ <ase-tpl-bullet-normal/> **THESIS**: <thesis/>
31
44
  </template>
32
45
 
33
- 2. **Determine Anti-Theses**:
46
+ </step>
47
+
48
+ 2. <step id="STEP 2: Determine Anti-Theses">
34
49
 
35
50
  Reason on the thesis in <thesis/> by playing *Devil's Advocate*
36
51
  (latin: *Advocatus Diaboli*) by relentlessly challenging or
@@ -103,11 +118,11 @@ effort: xhigh
103
118
  For each Anti-Thesis or Counter-Argument rank it on a Likert scale
104
119
  of 0 (weak) to 10 (strong). Repeat the process of finding more
105
120
  Anti-Theses or Counter-Arguments until you EITHER have found at
106
- least 10 Anti-Theses or Counter-Arguments with at least a rank
107
- of 7 OR you have already checked a total of 50 Anti-Theses or
108
- Counter-Arguments.
121
+ least <count/> Anti-Theses or Counter-Arguments with at least a rank
122
+ of 7 OR you have already checked a total of <count/> x 5 Anti-Theses
123
+ or Counter-Arguments.
109
124
 
110
- Then, for the top-10 highest-ranked Anti-Theses or
125
+ Then, for the top-<count/> highest-ranked Anti-Theses or
111
126
  Counter-Arguments, sort them by their rank from highest to lowest,
112
127
  store each in <antithesis-N/> with the format `**<aspect-N/>**
113
128
  (rank: <rank-N/>/10): <statement-N/>` (where <aspect-N/> is a short
@@ -120,7 +135,9 @@ effort: xhigh
120
135
  <ase-tpl-bullet-signal/> **ANTITHESIS**: <antithesis-N/>
121
136
  </template>
122
137
 
123
- 3. **Dialectical Reasoning**:
138
+ </step>
139
+
140
+ 3. <step id="STEP 3: Dialectical Reasoning">
124
141
 
125
142
  Following the Hegelian dialectics of...
126
143
 
@@ -150,3 +167,9 @@ effort: xhigh
150
167
  <ase-tpl-bullet-normal/> **SYNTHESIS**: <synthesis/>
151
168
  </template>
152
169
 
170
+ Do not output any further explanations.
171
+
172
+ </step>
173
+
174
+ </flow>
175
+
@@ -7,6 +7,7 @@
7
7
 
8
8
  `ase-meta-diaboli`
9
9
  [`--help`|`-h`]
10
+ [`--count`|`-c` *count*]
10
11
  *thesis*
11
12
 
12
13
  ## DESCRIPTION
@@ -20,20 +21,31 @@ cases, *Reductio Ad Absurdum*, exposing hidden costs, and pre-mortem
20
21
  thinking - while targeting the claim rather than its proponent and
21
22
  yielding where the argument genuinely holds.
22
23
 
23
- The skill iterates until it has found at least ten anti-theses
24
+ The skill iterates until it has found at least *count* anti-theses
24
25
  (counter-arguments) each ranked at least 7 on a 0 (weak) to 10
25
- (strong) Likert scale, reports the top ten sorted from strongest to
26
+ (strong) Likert scale, reports the top *count* sorted from strongest to
26
27
  weakest, and finally applies *Hegelian dialectics* (*Thesis* +
27
28
  *Antithesis* → *Synthesis*) to derive a single-sentence *SYNTHESIS*
28
29
  that preserves what is true in both the thesis and its antitheses
29
30
  while discarding what is false.
30
31
 
32
+ The `--count`/`-c` *count* option sets the minimum number of strong
33
+ anti-theses to surface (default *10*), raising or lowering the floor of
34
+ counter-arguments hunted for, sorted, and reported in the single
35
+ challenge pass. A `0`, negative, or non-numeric value falls back to the
36
+ default *10*.
37
+
31
38
  The intent is constructive: stress-testing the thesis in good faith to
32
39
  arrive at a better final decision, not obstructing or merely being
33
40
  contrarian.
34
41
 
35
42
  ## ARGUMENTS
36
43
 
44
+ `--count`, `-c` *count*:
45
+ Surface at least *count* strong anti-theses (default *10*) before
46
+ sorting and reporting the top *count* and deriving the *SYNTHESIS*. An
47
+ invalid or non-positive *count* reverts to the default *10*.
48
+
37
49
  *thesis*:
38
50
  The statement, claim, or position to be relentlessly challenged.
39
51
  It may be technical, factual, or opinion-based; the skill attacks
@@ -53,6 +65,12 @@ Stress-test a design decision:
53
65
  ❯ /ase-meta-diaboli We should rewrite the service in Rust.
54
66
  ```
55
67
 
68
+ Surface at least fifteen anti-theses:
69
+
70
+ ```text
71
+ ❯ /ase-meta-diaboli --count 15 We should rewrite the service in Rust.
72
+ ```
73
+
56
74
  ## SEE ALSO
57
75
 
58
76
  `ase-meta-why`, `ase-meta-evaluate`, `ase-meta-quorum`,
@@ -306,7 +306,7 @@ explicitly requested by this procedure via outputs based on a <template/>!
306
306
  labels ultra short (basenames or module names only).
307
307
 
308
308
  2. Dispatch the rendering to the `ase-meta-diagram` sub-agent by
309
- calling the tool `Agent(name: "ase:ase-meta-diagram",
309
+ calling the tool `Agent(name: "ase-meta-diagram",
310
310
  description: "Diagram Rendering", subagent_type:
311
311
  "ase:ase-meta-diagram", prompt: "<mermaid-spec/>")` and capture
312
312
  its returned `text` field as <diagram/>.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ase-meta-quorum
3
- argument-hint: "[--help|-h] <question>"
3
+ argument-hint: "[--help|-h] [--models|-m <model>[,...]] <question>"
4
4
  description: >
5
5
  Query Multiple AIs for Quorum Answer.
6
6
  user-invocable: true
@@ -13,11 +13,18 @@ allowed-tools:
13
13
 
14
14
  @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
15
15
  @${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
16
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
16
17
 
17
18
  <skill name="ase-meta-quorum">
18
19
  Query Multiple AIs for Quorum Answer
19
20
  </skill>
20
21
 
22
+ <expand name="getopt"
23
+ arg1="ase-meta-quorum"
24
+ arg2="--models|-m=(all|chatgpt|gemini|deepseek|grok|glm|qwen)...">
25
+ $ARGUMENTS
26
+ </expand>
27
+
21
28
  <objective>
22
29
  Find a *quorum answer* on an arbitrary question,
23
30
  by querying *multiple* AIs for an *optimal consensus*.
@@ -30,7 +37,7 @@ by querying *multiple* AIs for an *optimal consensus*.
30
37
  Prepare the LLM query by setting <query/> to the following <template/>:
31
38
 
32
39
  <template>
33
- $ARGUMENTS.
40
+ <getopt-arguments/>.
34
41
  Please respond with facts and very concise and brief only,
35
42
  usually with just 1 to 7 corresponding bullet points and with short sentences.
36
43
  Optionally, mention potential cruxes which should be noticed.
@@ -53,12 +60,20 @@ by querying *multiple* AIs for an *optimal consensus*.
53
60
 
54
61
  2. <step id="STEP 2: Query Foreign AIs">
55
62
 
63
+ The user-selectable foreign models are restricted by the
64
+ `--models`/`-m` option, parsed into <getopt-option-models/>
65
+ as a comma-separated list of model tokens. The default is
66
+ the single token `all`. If <getopt-option-models/> contains
67
+ the token `all`, you *MUST* treat it as the full list
68
+ `chatgpt,gemini,deepseek,grok,glm,qwen` (all models). Anthropic
69
+ Claude (yourself) is *always* included, independent of this option.
70
+
56
71
  <define name="agent">
57
72
  Call the `Agent` tool:
58
73
 
59
74
  ```text
60
75
  Agent(
61
- name: "ase:ase-meta-chat",
76
+ name: "ase-meta-chat-<arg2/>",
62
77
  description: "Query Foreign LLM: <arg1/>",
63
78
  subagent_type: "ase:ase-meta-chat",
64
79
  prompt: "<arg2/> <query/>"
@@ -67,12 +82,28 @@ by querying *multiple* AIs for an *optimal consensus*.
67
82
 
68
83
  </define>
69
84
 
85
+ Query only those foreign models whose token is contained in
86
+ <getopt-option-models/> (where `all` selects every model); silently
87
+ skip all others:
88
+
89
+ <if condition="<getopt-option-models/> contains `all` OR <getopt-option-models/> contains `chatgpt`">
70
90
  <expand name="agent" arg1="OpenAI ChatGPT" arg2="chatgpt"></expand>
91
+ </if>
92
+ <if condition="<getopt-option-models/> contains `all` OR <getopt-option-models/> contains `gemini`">
71
93
  <expand name="agent" arg1="Google Gemini" arg2="gemini"></expand>
94
+ </if>
95
+ <if condition="<getopt-option-models/> contains `all` OR <getopt-option-models/> contains `deepseek`">
72
96
  <expand name="agent" arg1="DeepSeek" arg2="deepseek"></expand>
97
+ </if>
98
+ <if condition="<getopt-option-models/> contains `all` OR <getopt-option-models/> contains `grok`">
73
99
  <expand name="agent" arg1="xAI Grok" arg2="grok"></expand>
100
+ </if>
101
+ <if condition="<getopt-option-models/> contains `all` OR <getopt-option-models/> contains `glm`">
74
102
  <expand name="agent" arg1="Z.AI GLM" arg2="glm"></expand>
103
+ </if>
104
+ <if condition="<getopt-option-models/> contains `all` OR <getopt-option-models/> contains `qwen`">
75
105
  <expand name="agent" arg1="Alibaba Qwen" arg2="qwen"></expand>
106
+ </if>
76
107
 
77
108
  You *MUST* *NOT* output anything in this step.
78
109
 
@@ -116,7 +147,7 @@ by querying *multiple* AIs for an *optimal consensus*.
116
147
 
117
148
  <template>
118
149
  **QUESTION**:
119
- $ARGUMENTS
150
+ <getopt-arguments/>
120
151
 
121
152
  &#x25CF; **CONSENSUS ANSWER**:
122
153
  - [...]
@@ -153,7 +184,8 @@ by querying *multiple* AIs for an *optimal consensus*.
153
184
  - [...]
154
185
  </template>
155
186
 
156
- In this output, remove the sections of those AIs which were not available.
187
+ In this output, remove the sections of those AIs which were not
188
+ queried (excluded via `--models`/`-m`) or were not available.
157
189
  You *MUST* *NOT* output any further explanations yourself.
158
190
 
159
191
  </step>
@@ -7,6 +7,7 @@
7
7
 
8
8
  `ase-meta-quorum`
9
9
  [`--help`|`-h`]
10
+ [`--models`|`-m` *model*[,...]]
10
11
  *question*
11
12
 
12
13
  ## DESCRIPTION
@@ -23,6 +24,17 @@ a Likert scale of `0..N` (where `N` is the number of available
23
24
  responders), and reports the consensus answer alongside the
24
25
  complete, unmodified individual responses.
25
26
 
27
+ ## OPTIONS
28
+
29
+ `--models`|`-m` *model*[,...]:
30
+ Restrict the *foreign* LLMs that are queried to the given
31
+ comma-separated list of *model* tokens. Recognized tokens are
32
+ `all`, `chatgpt`, `gemini`, `deepseek`, `grok`, `glm`, and `qwen`,
33
+ where `all` selects every model. The default is `all`. Models that
34
+ are not selected (or not available) are *silently skipped*.
35
+ Anthropic Claude (the skill itself) is *always* included,
36
+ independent of this option.
37
+
26
38
  ## ARGUMENTS
27
39
 
28
40
  *question*:
@@ -36,6 +48,12 @@ Ask the quorum a factual question:
36
48
  ❯ /ase-meta-quorum What are the most common causes of memory leaks in Node.js?
37
49
  ```
38
50
 
51
+ Ask only a subset of the foreign models:
52
+
53
+ ```text
54
+ ❯ /ase-meta-quorum --models chatgpt,gemini,grok Which sorting algorithm is fastest in practice?
55
+ ```
56
+
39
57
  ## SEE ALSO
40
58
 
41
59
  `ase-meta-chat`, `ase-meta-search`, `ase-meta-evaluate`.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ase-meta-review
3
- argument-hint: "[--help|-h]"
3
+ argument-hint: "[--help|-h] [--severity|-S=(LOW|MEDIUM|HIGH)]"
4
4
  description: >
5
5
  Perform a holistic, human-reviewer-style critique of the currently
6
6
  staged Git changes and emit an approve/reject verdict with
@@ -17,11 +17,19 @@ allowed-tools:
17
17
 
18
18
  @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
19
19
  @${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
20
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-dialog.md
21
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
20
22
 
21
23
  <skill name="ase-meta-review">
22
24
  Review Staged Changes
23
25
  </skill>
24
26
 
27
+ <expand name="getopt"
28
+ arg1="ase-meta-review"
29
+ arg2="--severity|-S=(LOW|MEDIUM|HIGH)">
30
+ $ARGUMENTS
31
+ </expand>
32
+
25
33
  <objective>
26
34
  Review the currently staged Git changes the way an *experienced human
27
35
  reviewer* would - judging them *holistically* against the change's *own
@@ -82,7 +90,7 @@ explicitly requested by this procedure via outputs based on a <template/>!
82
90
 
83
91
  ```text
84
92
  Agent(
85
- name: "ase:ase-meta-review",
93
+ name: "ase-meta-review",
86
94
  description: "Review Investigation",
87
95
  subagent_type: "ase:ase-meta-review",
88
96
  mode: "plan",
@@ -98,7 +106,17 @@ explicitly requested by this procedure via outputs based on a <template/>!
98
106
  Then *derive* the overall <verdict/> from <findings/>: set
99
107
  <verdict/> to `REJECT - DEMANDS CHANGES` if *any* finding in
100
108
  <findings/> has a `severity` field of `HIGH`; otherwise set
101
- <verdict/> to `APPROVE`.
109
+ <verdict/> to `APPROVE`. The verdict is derived *before* the
110
+ severity floor below, so a suppressed `HIGH` finding still drives the
111
+ verdict.
112
+
113
+ Then *apply the severity floor* selected via <getopt-option-severity/>
114
+ (default `LOW`): define the ordinal rank `LOW`=1, `MEDIUM`=2,
115
+ `HIGH`=3. *Keep* a finding in <findings/> if and only if its
116
+ `severity` field is `ACCEPTED` *or* `rank(severity)` is greater than
117
+ or equal to `rank(<getopt-option-severity/>)`; *silently drop* all
118
+ other findings. With the default floor `LOW`, all findings are kept.
119
+ `ACCEPTED` findings are *never* dropped.
102
120
 
103
121
  You *MUST* *NOT* output anything else in this STEP 2.
104
122
 
@@ -6,6 +6,8 @@
6
6
  ## SYNOPSIS
7
7
 
8
8
  `ase-meta-review`
9
+ [`--help`|`-h`]
10
+ [`--severity`|`-S`=(`LOW`|`MEDIUM`|`HIGH`)]
9
11
 
10
12
  ## DESCRIPTION
11
13
 
@@ -51,10 +53,20 @@ inspects *logic and semantics*, `ase-meta-diff` narrates *what changed*
51
53
  `ase-meta-review` renders a *reviewer's judgement* on a concrete diff
52
54
  before it is committed.
53
55
 
56
+ ## OPTIONS
57
+
58
+ `--severity`|`-S`=(`LOW`|`MEDIUM`|`HIGH`):
59
+ Set the *severity floor* (default `LOW`): findings below the chosen
60
+ threshold are silently suppressed, ordered `LOW` < `MEDIUM` <
61
+ `HIGH`. The default `LOW` keeps all findings; `ACCEPTED` findings are
62
+ never suppressed. The floor only affects the rendered findings table;
63
+ the overall *verdict* is still derived from all findings, so a
64
+ suppressed `HIGH` finding still yields a *REJECT* verdict.
65
+
54
66
  ## ARGUMENTS
55
67
 
56
- The `ase-meta-review` skill takes no arguments; it always reviews the
57
- currently *staged* Git changes.
68
+ The `ase-meta-review` skill takes no positional arguments; it always
69
+ reviews the currently *staged* Git changes.
58
70
 
59
71
  ## EXAMPLES
60
72
 
@@ -64,6 +76,12 @@ Review the currently staged changes before committing:
64
76
  ❯ /ase-meta-review
65
77
  ```
66
78
 
79
+ Review the staged changes, reporting only `MEDIUM` and `HIGH` findings:
80
+
81
+ ```text
82
+ ❯ /ase-meta-review -S MEDIUM
83
+ ```
84
+
67
85
  ## SEE ALSO
68
86
 
69
87
  `ase-meta-diff`, `ase-meta-commit`, `ase-code-lint`, `ase-code-analyze`,