@rse/ase 0.9.7 → 0.9.9

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 (85) hide show
  1. package/dst/ase-getopt.js +71 -5
  2. package/dst/ase-hook.js +6 -21
  3. package/dst/ase-markdown.js +32 -11
  4. package/dst/ase-mcp.js +22 -8
  5. package/dst/ase-notify.js +32 -0
  6. package/dst/ase-service.js +5 -2
  7. package/dst/ase-setup.js +45 -131
  8. package/dst/ase-skills.js +17 -13
  9. package/dst/ase-statusline.js +8 -12
  10. package/dst/ase-task.js +32 -23
  11. package/package.json +3 -3
  12. package/plugin/.claude-plugin/plugin.json +1 -1
  13. package/plugin/.github/plugin/plugin.json +1 -1
  14. package/plugin/agents/ase-docs-proofread.md +2 -2
  15. package/plugin/meta/ase-constitution.md +7 -0
  16. package/plugin/meta/ase-control.md +24 -3
  17. package/plugin/meta/ase-dialog.md +105 -7
  18. package/plugin/meta/ase-format-task.md +2 -2
  19. package/plugin/meta/ase-getopt.md +31 -22
  20. package/plugin/meta/ase-skill.md +87 -12
  21. package/plugin/package.json +2 -2
  22. package/plugin/skills/ase-arch-analyze/SKILL.md +88 -89
  23. package/plugin/skills/ase-arch-analyze/help.md +2 -2
  24. package/plugin/skills/ase-arch-discover/SKILL.md +56 -34
  25. package/plugin/skills/ase-arch-discover/help.md +1 -1
  26. package/plugin/skills/ase-code-analyze/SKILL.md +6 -5
  27. package/plugin/skills/ase-code-analyze/help.md +2 -2
  28. package/plugin/skills/ase-code-craft/SKILL.md +83 -71
  29. package/plugin/skills/ase-code-craft/help.md +2 -2
  30. package/plugin/skills/ase-code-explain/SKILL.md +1 -1
  31. package/plugin/skills/ase-code-explain/help.md +1 -1
  32. package/plugin/skills/ase-code-insight/SKILL.md +1 -1
  33. package/plugin/skills/ase-code-insight/help.md +1 -1
  34. package/plugin/skills/ase-code-lint/SKILL.md +35 -18
  35. package/plugin/skills/ase-code-lint/help.md +2 -2
  36. package/plugin/skills/ase-code-refactor/SKILL.md +81 -70
  37. package/plugin/skills/ase-code-refactor/help.md +2 -2
  38. package/plugin/skills/ase-code-resolve/SKILL.md +83 -70
  39. package/plugin/skills/ase-code-resolve/help.md +3 -3
  40. package/plugin/skills/ase-docs-distill/SKILL.md +1 -1
  41. package/plugin/skills/ase-docs-distill/help.md +4 -4
  42. package/plugin/skills/ase-docs-proofread/SKILL.md +36 -19
  43. package/plugin/skills/ase-docs-proofread/help.md +1 -1
  44. package/plugin/skills/ase-meta-brainstorm/SKILL.md +29 -8
  45. package/plugin/skills/ase-meta-brainstorm/help.md +7 -11
  46. package/plugin/skills/ase-meta-changelog/help.md +1 -1
  47. package/plugin/skills/ase-meta-chat/help.md +1 -1
  48. package/plugin/skills/ase-meta-commit/help.md +1 -1
  49. package/plugin/skills/ase-meta-diaboli/help.md +2 -2
  50. package/plugin/skills/ase-meta-diff/SKILL.md +6 -5
  51. package/plugin/skills/ase-meta-diff/help.md +11 -12
  52. package/plugin/skills/ase-meta-evaluate/SKILL.md +10 -9
  53. package/plugin/skills/ase-meta-evaluate/help.md +2 -2
  54. package/plugin/skills/ase-meta-persona/help.md +1 -1
  55. package/plugin/skills/ase-meta-quorum/SKILL.md +15 -5
  56. package/plugin/skills/ase-meta-quorum/help.md +1 -1
  57. package/plugin/skills/ase-meta-review/SKILL.md +3 -4
  58. package/plugin/skills/ase-meta-review/help.md +5 -5
  59. package/plugin/skills/ase-meta-search/SKILL.md +9 -8
  60. package/plugin/skills/ase-meta-search/help.md +1 -1
  61. package/plugin/skills/ase-meta-steelman/SKILL.md +1 -1
  62. package/plugin/skills/ase-meta-steelman/help.md +2 -2
  63. package/plugin/skills/ase-meta-why/SKILL.md +16 -10
  64. package/plugin/skills/ase-meta-why/help.md +1 -1
  65. package/plugin/skills/ase-task-condense/SKILL.md +36 -19
  66. package/plugin/skills/ase-task-condense/help.md +3 -3
  67. package/plugin/skills/ase-task-delete/SKILL.md +6 -3
  68. package/plugin/skills/ase-task-delete/help.md +2 -2
  69. package/plugin/skills/ase-task-edit/SKILL.md +61 -36
  70. package/plugin/skills/ase-task-edit/help.md +4 -4
  71. package/plugin/skills/ase-task-grill/SKILL.md +57 -26
  72. package/plugin/skills/ase-task-grill/help.md +3 -3
  73. package/plugin/skills/ase-task-id/SKILL.md +11 -2
  74. package/plugin/skills/ase-task-id/help.md +2 -2
  75. package/plugin/skills/ase-task-implement/SKILL.md +40 -17
  76. package/plugin/skills/ase-task-implement/help.md +2 -2
  77. package/plugin/skills/ase-task-list/SKILL.md +1 -1
  78. package/plugin/skills/ase-task-list/help.md +2 -2
  79. package/plugin/skills/ase-task-preflight/SKILL.md +44 -22
  80. package/plugin/skills/ase-task-preflight/help.md +3 -3
  81. package/plugin/skills/ase-task-reboot/SKILL.md +31 -20
  82. package/plugin/skills/ase-task-reboot/help.md +2 -2
  83. package/plugin/skills/ase-task-rename/SKILL.md +5 -3
  84. package/plugin/skills/ase-task-rename/help.md +2 -2
  85. package/plugin/skills/ase-task-view/help.md +26 -7
@@ -89,9 +89,12 @@ Analyze documents for spelling, punctuation, or grammar errors
89
89
 
90
90
  3. <step id="STEP 3: Correction">
91
91
 
92
- 1. You *MUST* call the MCP tool `ase_config_set(key: "agent.skill", val:
93
- "ase-docs-proofread", scope: "session:<ase-session-id/>")` of the
94
- `ase` MCP server.
92
+ 1. *Mark this skill as the active edit-capable skill* so that the
93
+ ASE `pre-tool-use` hook auto-approves the subsequent `Edit`
94
+ invocations on *any* invocation path (slash command *or* `Skill`
95
+ tool). Call the `ase_config_set(key: "agent.skill", val:
96
+ "ase-docs-proofread", scope: "session:<ase-session-id/>")` tool
97
+ from the `ase` MCP server. Do not output anything in this substep.
95
98
 
96
99
  2. Iterate over all problems:
97
100
 
@@ -116,8 +119,8 @@ Analyze documents for spelling, punctuation, or grammar errors
116
119
 
117
120
  3. <if condition="<getopt-option-auto/> is not 'true'">
118
121
 
119
- Render the proposed correction as a *unified diff* with *one*
120
- line of context in a fenced block based on the following <template/>:
122
+ Render the proposed correction as a *unified diff* with *up to
123
+ two* lines of context in a fenced block based on the following <template/>:
121
124
 
122
125
  <template>
123
126
 
@@ -126,7 +129,7 @@ Analyze documents for spelling, punctuation, or grammar errors
126
129
  ```diff
127
130
  --- <file/> (original)
128
131
  +++ <file/> (corrected)
129
- @@ -<line/>,<n/> +<line/>,<m/> @@
132
+ @@ -<old-start/>,<n/> +<new-start/>,<m/> @@
130
133
  <context-before/>
131
134
  -<old-text/>
132
135
  +<new-text/>
@@ -136,16 +139,26 @@ Analyze documents for spelling, punctuation, or grammar errors
136
139
  </template>
137
140
 
138
141
  Hints:
139
- - The <n/> is the number of lines in <old-text/>.
140
- - The <m/> is the number of lines in <new-text/>.
142
+ - The <old-start/> is the line of the first hunk line, i.e.,
143
+ the line of <context-before/> (one before <line/>).
144
+ - The <new-start/> is the same as <old-start/> (the unchanged
145
+ <context-before/> line shares the same start in both files).
146
+ - The <n/> is the total number of old-side hunk lines, i.e.,
147
+ the number of lines in <context-before/>, <old-text/>, and
148
+ <context-after/> combined.
149
+ - The <m/> is the total number of new-side hunk lines, i.e.,
150
+ the number of lines in <context-before/>, <new-text/>, and
151
+ <context-after/> combined.
141
152
 
142
153
  </if>
143
154
 
144
155
  4. <if condition="<getopt-option-auto/> is not 'true'">
145
156
 
146
- Ask the user how to proceed via an interactive user dialog:
157
+ Let the *user interactively choose* what to do as the next
158
+ step. For this you *MUST* use the custom `custom-dialog` and
159
+ not the `AskUserQuestion` based `user-dialog`:
147
160
 
148
- <expand name="user-dialog">
161
+ <expand name="custom-dialog">
149
162
  CORRECTION: How would you like to proceed with this proposed correction?
150
163
  ACCEPT: Apply the proposed correction.
151
164
  REJECT: Skip this proposed correction.
@@ -153,19 +166,20 @@ Analyze documents for spelling, punctuation, or grammar errors
153
166
 
154
167
  </if>
155
168
 
156
- <if condition="<getopt-option-auto/> is 'true'">
169
+ <else>
157
170
 
158
171
  Set <result>ACCEPT</result>.
159
172
 
160
- </if>
173
+ </else>
161
174
 
162
175
  5. Check <result/> and dispatch accordingly:
163
176
 
164
177
  - <if condition="<result/> is 'ACCEPT'">
165
178
 
166
- Invoke the `Edit` tool to apply the change exactly as shown
167
- in the diff. The operation will be auto-approved because of
168
- the active proofread marker, so *no* interactive permission
179
+ Invoke the `Edit` tool to apply the change by replacing
180
+ <old-text/> with <new-text/> at <file/>:<line/>. The operation
181
+ will be auto-approved by the ASE `pre-tool-use` hook (which
182
+ tracks the active skill), so *no* interactive permission
169
183
  prompt will appear. Then continue with the next <item/>.
170
184
 
171
185
  </if>
@@ -174,8 +188,8 @@ Analyze documents for spelling, punctuation, or grammar errors
174
188
 
175
189
  Generate a *new* proposal for the *same* <item/>,
176
190
  incorporating the user's free-text hint from <result/>
177
- after the "OTHER:" prefix, and loop back to substep 2 of
178
- this iteration. There is *no* cap on refinement rounds -
191
+ after the "OTHER:" prefix, and *go back* to substep 2 of
192
+ this `for`-iteration. There is *no* cap on refinement rounds -
179
193
  keep refining until the user picks `ACCEPT` or `REJECT`.
180
194
 
181
195
  </if>
@@ -193,8 +207,11 @@ Analyze documents for spelling, punctuation, or grammar errors
193
207
 
194
208
  </for>
195
209
 
196
- 3. You *MUST* call the MCP tool `ase_config_delete(key: "agent.skill",
197
- scope: "session:<ase-session-id/>")` of the `ase` MCP server.
210
+ 3. *Clear the active edit-capable skill marker* now that all `Edit`
211
+ invocations are done, so a later unrelated `Edit` is *not*
212
+ auto-approved. Call the `ase_config_delete(key: "agent.skill",
213
+ scope: "session:<ase-session-id/>")` tool from the `ase` MCP
214
+ server. Do not output anything in this substep.
198
215
 
199
216
  4. You *MUST* *NOT* output any further additional explanations or
200
217
  summaries at the end of this skill processing, except for the
@@ -51,4 +51,4 @@ Proofread an entire documentation directory automatically:
51
51
 
52
52
  ## SEE ALSO
53
53
 
54
- `ase-code-lint`, `ase-meta-changelog`.
54
+ [`ase-code-lint`](../ase-code-lint/help.md), [`ase-meta-changelog`](../ase-meta-changelog/help.md).
@@ -78,7 +78,7 @@ Honor the following tenets throughout the brainstorming:
78
78
 
79
79
  1. <step id="STEP 1: Restate Topic">
80
80
 
81
- Restate the topic to be brainstormed by output the following <template/>:
81
+ Restate the topic to be brainstormed by outputting the following <template/>:
82
82
 
83
83
  <template>
84
84
  <ase-tpl-bullet-secondary/> **TOPIC**: <topic/>
@@ -113,17 +113,19 @@ Honor the following tenets throughout the brainstorming:
113
113
  <ase-tpl-bullet-signal/> FACET <M/>/<m/>: **<facet-M/>**, QUESTION: **<question-M/>**
114
114
  </template>
115
115
 
116
- 2. Determine *up to 4* grounded candidate answers
116
+ 2. Determine *2 to 4* grounded candidate answers
117
117
  <answer-M-K/> (K={1,2,3,4}) from the code base, the documented
118
118
  context, and your world knowledge.
119
119
 
120
120
  3. Use an interactive user dialog with header <facet-M/> and
121
121
  question <question-M/>, and let the user select the
122
- <answer-M/> out of the candidate answers <answer-M-K/> (just
123
- leave out all answers in case you have determined less than
124
- 4 potential answers)
122
+ <answer-M/> out of the candidate answers <answer-M-K/> (leave
123
+ out the answer lines of those candidate answers you have
124
+ not determined). For this you *MUST* use the custom
125
+ `custom-dialog` and *NOT* the `AskUserQuestion` based
126
+ "user-dialog":
125
127
 
126
- <expand name="user-dialog">
128
+ <expand name="custom-dialog">
127
129
  <facet-M/>: <question-M/>
128
130
  <answer-M-1/>: (first grounded candidate answer)
129
131
  <answer-M-2/>: (second grounded candidate answer)
@@ -131,7 +133,26 @@ Honor the following tenets throughout the brainstorming:
131
133
  <answer-M-4/>: (fourth grounded candidate answer)
132
134
  </expand>
133
135
 
134
- 4. Output the following <template/>:
136
+ 4. Dispatch on the dialog <result/>:
137
+
138
+ - If <result/> is `CANCEL`:
139
+ Skip the remaining sub-steps of this iteration cycle and
140
+ continue directly with sub-step 2 below (cancellation handling).
141
+
142
+ - If <result/> starts with `ERROR:`:
143
+ Ask the user interactively, without a special tool, the
144
+ question <question-M/> directly and set <answer-M/> to the
145
+ response of the user.
146
+
147
+ - If <result/> matches `OTHER: <text/>`:
148
+ Set <answer-M><text/></answer-M> (take the user's free-text answer).
149
+
150
+ - Otherwise:
151
+ Set <answer-M><result/></answer-M> (take the selected candidate answer).
152
+
153
+ Do not output anything in this sub-step.
154
+
155
+ 5. Output the following <template/>:
135
156
 
136
157
  <template>
137
158
  <ase-tpl-bullet-normal/> FACET <M/>/<m/>: **<facet-M/>**, ANSWER: **<answer-M/>**
@@ -182,7 +203,7 @@ Honor the following tenets throughout the brainstorming:
182
203
  set and finally into a recommendation.
183
204
 
184
205
  1. *Cluster*: group the candidate ideas into <c/> coherent clusters
185
- <cluster-C/> (a short 1-4 word label, C=1...</c>), collapsing
206
+ <cluster-C/> (a short 1-4 word label, C=1...<c/>), collapsing
186
207
  near-duplicates and discarding ideas pruned by *You Aren't Gonna
187
208
  Need It (YAGNI)* (speculative, out-of-scope, or contradicting
188
209
  documented context).
@@ -7,10 +7,10 @@
7
7
 
8
8
  `ase-meta-brainstorm`
9
9
  [`--help`|`-h`]
10
- [`--max-clarify=3`]
10
+ [`--max-clarify`|`-c=3`]
11
11
  [`--min-ideas`|`-i=12`]
12
- [`--min-rank=7`]
13
- [`--max-shortlist=4`]
12
+ [`--min-rank`|`-r=7`]
13
+ [`--max-shortlist`|`-s=4`]
14
14
  *topic*
15
15
 
16
16
  ## DESCRIPTION
@@ -33,13 +33,9 @@ default 7, or higher). Finally it distills a *shortlist* of the top
33
33
  wherever possible - and derives a single *RECOMMENDATION*, being either
34
34
  the highest-ranked option or a principled synthesis of the shortlist.
35
35
 
36
- On completion the skill offers a *next step*: stop, or hand the
37
- recommended direction off to the `ase-task-edit`, `ase-code-craft`, or
38
- `ase-task-preflight` skills.
39
-
40
36
  ## OPTIONS
41
37
 
42
- `--max-clarify=3`:
38
+ `--max-clarify`|`-c=3`:
43
39
  The *maximum* number of essential-unknown clarification questions
44
40
  asked in the *clarify intent* phase (default: 3). Lower it for a
45
41
  faster, leaner intake, raise it for more upfront grounding.
@@ -49,12 +45,12 @@ recommended direction off to the `ase-task-edit`, `ase-code-craft`, or
49
45
  phase before converging (default: 12). Raise it for a broader idea
50
46
  space, lower it for a quicker, narrower session.
51
47
 
52
- `--min-rank=7`:
48
+ `--min-rank`|`-r=7`:
53
49
  The *minimum* 0-10 fit rank an idea must score to survive the
54
50
  *converge* phase (default: 7). Raise it for a stricter filter, lower
55
51
  it to retain more ideas.
56
52
 
57
- `--max-shortlist=4`:
53
+ `--max-shortlist`|`-s=4`:
58
54
  The *maximum* number of distilled options on the final *shortlist*
59
55
  (default: 4). Lower it for a sharper focus, raise it for more
60
56
  finalists.
@@ -88,4 +84,4 @@ and a tighter shortlist:
88
84
 
89
85
  ## SEE ALSO
90
86
 
91
- `ase-meta-evaluate`, `ase-meta-quorum`, `ase-meta-diaboli`
87
+ [`ase-meta-evaluate`](../ase-meta-evaluate/help.md), [`ase-meta-quorum`](../ase-meta-quorum/help.md), [`ase-meta-diaboli`](../ase-meta-diaboli/help.md)
@@ -30,4 +30,4 @@ Update the most recent ChangeLog section:
30
30
 
31
31
  ## SEE ALSO
32
32
 
33
- `ase-meta-commit`, `ase-docs-proofread`.
33
+ [`ase-meta-commit`](../ase-meta-commit/help.md), [`ase-docs-proofread`](../ase-docs-proofread/help.md).
@@ -42,4 +42,4 @@ Ask Gemini for a brief comparison:
42
42
 
43
43
  ## SEE ALSO
44
44
 
45
- `ase-meta-quorum`, `ase-meta-search`.
45
+ [`ase-meta-quorum`](../ase-meta-quorum/help.md), [`ase-meta-search`](../ase-meta-search/help.md).
@@ -28,4 +28,4 @@ Craft a commit message for the currently staged changes:
28
28
 
29
29
  ## SEE ALSO
30
30
 
31
- `ase-meta-changelog`.
31
+ [`ase-meta-changelog`](../ase-meta-changelog/help.md).
@@ -73,6 +73,6 @@ Surface at least fifteen anti-theses:
73
73
 
74
74
  ## SEE ALSO
75
75
 
76
- `ase-meta-why`, `ase-meta-evaluate`, `ase-meta-quorum`,
77
- `ase-meta-persona`.
76
+ [`ase-meta-why`](../ase-meta-why/help.md), [`ase-meta-evaluate`](../ase-meta-evaluate/help.md), [`ase-meta-quorum`](../ase-meta-quorum/help.md),
77
+ [`ase-meta-persona`](../ase-meta-persona/help.md).
78
78
 
@@ -11,9 +11,9 @@ disable-model-invocation: false
11
11
  effort: high
12
12
  allowed-tools:
13
13
  - "Bash(git diff *)"
14
- - "Bash(git grep:*)"
15
- - "Bash(git ls-files:*)"
16
- - "Bash(grep:*)"
14
+ - "Bash(git grep *)"
15
+ - "Bash(git ls-files *)"
16
+ - "Bash(grep *)"
17
17
  - "Agent"
18
18
  ---
19
19
 
@@ -98,7 +98,7 @@ explicitly requested by this procedure via outputs based on a <template/>!
98
98
 
99
99
  </template>
100
100
 
101
- 2. Render a *two-column table* with one row per discovered
101
+ 2. Render a *three-column table* with one row per discovered
102
102
  *intent group* present in the <diff/>. Output the following
103
103
  table header <template/>:
104
104
 
@@ -169,7 +169,7 @@ explicitly requested by this procedure via outputs based on a <template/>!
169
169
  Judge overall *coherence* from the flagged hunks: the diff
170
170
  is `COHERENT` when there are *no* `SCOPE-CREEP` and *no*
171
171
  `STRAY-DEBUG` deviations, otherwise it is `INCOHERENT`. Store
172
- the result is <verdict/>.
172
+ the result in <verdict/>.
173
173
 
174
174
  4. Emit the following header <template/>:
175
175
 
@@ -205,6 +205,7 @@ explicitly requested by this procedure via outputs based on a <template/>!
205
205
  | **<deviation/>** | <location/> | <reason/> |
206
206
 
207
207
  </template>
208
+ </if>
208
209
  </step>
209
210
 
210
211
  4. <step id="STEP 4: Score Against Risk Rubric"
@@ -17,24 +17,23 @@ The `ase-meta-diff` skill turns a raw Git diff into a *concise*,
17
17
  *human-readable* narrative of what changed and why, *grouped by
18
18
  intent* (such as *Feature*, *Improvement*, *Bugfix*, *Update*,
19
19
  *Cleanup*, or *Refactor*) rather than by file. It inspects the
20
- *staged* changes (`git diff --cached HEAD`). The result is a short
21
- bullet list, one bullet per intent group, each naming the affected
22
- files with their per-file `[+N/-M]` line counts - giving you the
23
- essence of the changes at a glance.
20
+ *staged* changes (`git diff --cached HEAD`). The result is a compact
21
+ table, one row per intent group, each naming the affected files
22
+ with their per-file `[+N/-M]` line counts - giving you the essence
23
+ of the changes at a glance.
24
24
 
25
25
  With `--coherence`, the skill additionally *reconstructs the single
26
26
  intended change* the diff is trying to accomplish - phrased as one crisp
27
27
  *thesis* sentence - and then walks *every* hunk to *flag those that do
28
28
  not serve it*: **scope creep** (an unrelated feature or drive-by refactor
29
- riding along), **stray debug** (leftover prints, commented-out code, or
30
- disabled tests), and **ripple** (mechanical fallout edits forced by the
31
- core change). It emits an overall **COHERENT** / **INCOHERENT** verdict
29
+ riding along) and **stray debug** (leftover prints, commented-out code, or
30
+ disabled tests). It emits an overall **COHERENT** / **INCOHERENT** verdict
32
31
  plus a table of the flagged hunks with what to do with each - keeping the
33
32
  diff to a *single logical and coherent change* before it is committed.
34
33
 
35
34
  With `--risk`, the skill additionally *scores* the same diff against a
36
35
  four-axis **coupling-criticality-coverage-reversibility** rubric and
37
- emits a *graded risk report* - one bullet per axis (each scored *1*-*5*
36
+ emits a *graded risk report* - one table row per axis (each scored *1*-*5*
38
37
  with a one-line evidence justification drawn from the actual hunks), an
39
38
  overall risk band (**LOW**, **MODERATE**, **HIGH**, or **CRITICAL**),
40
39
  and one actionable *mitigation* per high-risk axis. The axes combine
@@ -57,9 +56,9 @@ giving a visual sense of *what a diff endangers* before a deeper review.
57
56
  `--coherence`, `-c`:
58
57
  In addition to the intent-grouped summary, reconstruct the diff's
59
58
  *single intended change* as one crisp *thesis* sentence and flag
60
- *every* hunk that does *not* serve it - *scope creep*, *stray debug*,
61
- or *ripple* fallout - then emit an overall **COHERENT** /
62
- **INCOHERENT** verdict with a table of the flagged hunks.
59
+ *every* hunk that does *not* serve it - *scope creep* or *stray
60
+ debug* - then emit an overall **COHERENT** / **INCOHERENT** verdict
61
+ with a table of the flagged hunks.
63
62
 
64
63
  `--risk`, `-r`:
65
64
  In addition to the intent-grouped summary, score the diff against
@@ -102,4 +101,4 @@ Summarize the staged changes and append a blast-radius map:
102
101
 
103
102
  ## SEE ALSO
104
103
 
105
- `ase-meta-commit`, `ase-meta-changelog`, `ase-arch-analyze`.
104
+ [`ase-meta-commit`](../ase-meta-commit/help.md), [`ase-meta-changelog`](../ase-meta-changelog/help.md), [`ase-arch-analyze`](../ase-arch-analyze/help.md).
@@ -193,15 +193,16 @@ multi-*criteria* decision matrix.
193
193
 
194
194
  - Determine rating distance percentage <percentage/> between
195
195
  <alternative-K/> and <alternative-X/> from their *raw,
196
- unrounded* ratings by calculating: <percentage/> = <distance/> /
197
- abs(<rating-K/>). Do not output anything.
198
-
199
- - If <rating-K/> is exactly zero, skip the division entirely
200
- and treat <percentage/> as if it were equal to <distance/>
201
- (so a true zero tie with <distance/> = 0 falls into the
202
- *MULTIPLE BEST* branch below, and a non-zero gap with zero
203
- best falls into the *small distance* branch below).
204
- Do not output anything.
196
+ unrounded* ratings as follows. If <rating-K/> is exactly zero,
197
+ skip the division entirely and treat <percentage/> as if it
198
+ were equal to <distance/> (so a true zero tie with <distance/>
199
+ = 0 falls into the *MULTIPLE BEST* branch below, while a non-zero
200
+ gap with zero best is routed by the magnitude of <distance/>
201
+ through the same thresholds as <percentage/> otherwise). Do not
202
+ output anything.
203
+
204
+ - Otherwise (<rating-K/> is non-zero), calculate: <percentage/> =
205
+ <distance/> / abs(<rating-K/>). Do not output anything.
205
206
 
206
207
  - By construction, <rating-K/> is the maximum rating across
207
208
  all alternatives, so <distance/> >= 0 always holds; using
@@ -48,5 +48,5 @@ Evaluate database options with hinted criteria:
48
48
 
49
49
  ## SEE ALSO
50
50
 
51
- `ase-meta-quorum`, `ase-meta-search`, `ase-arch-discover`,
52
- `ase-meta-why`.
51
+ [`ase-meta-quorum`](../ase-meta-quorum/help.md), [`ase-meta-search`](../ase-meta-search/help.md), [`ase-arch-discover`](../ase-arch-discover/help.md),
52
+ [`ase-meta-why`](../ase-meta-why/help.md).
@@ -47,4 +47,4 @@ Switch to the telegrapher persona:
47
47
 
48
48
  ## SEE ALSO
49
49
 
50
- `ase-task-id`.
50
+ [`ase-task-id`](../ase-task-id/help.md).
@@ -62,9 +62,19 @@ by querying *multiple* AIs for an *optimal consensus*.
62
62
 
63
63
  The user-selectable foreign models are restricted by the
64
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
65
+ as a comma-separated list of model tokens. The getopt parser
66
+ validates only the *first* token, so you *MUST* validate each
67
+ remaining token yourself against the allowed set `all`, `chatgpt`,
68
+ `gemini`, `deepseek`, `grok`, `glm`, `qwen`. If any token is *not*
69
+ in this set, only output the following <template/> and then
70
+ immediately *STOP* processing the entire current skill:
71
+
72
+ <template>
73
+ ⧉ **ASE**: ✪ skill: **ase-meta-quorum**, ▶ ERROR: invalid `--models` token: **<token/>**
74
+ </template>
75
+
76
+ The default is the single token `all`. If <getopt-option-models/>
77
+ contains the token `all`, you *MUST* treat it as the full list
68
78
  `chatgpt,gemini,deepseek,grok,glm,qwen` (all models). Anthropic
69
79
  Claude (yourself) is *always* included, independent of this option.
70
80
 
@@ -142,8 +152,8 @@ by querying *multiple* AIs for an *optimal consensus*.
142
152
  5. <step id="STEP 5: Show Results">
143
153
 
144
154
  Finally show the summary, the consensus and the complete and
145
- unmodified responses of yourself and each of the MCP servers, based
146
- on the following output <template/>:
155
+ unmodified responses of yourself and each of the queried foreign
156
+ AIs, based on the following output <template/>:
147
157
 
148
158
  <template>
149
159
  **QUESTION**:
@@ -56,4 +56,4 @@ Ask only a subset of the foreign models:
56
56
 
57
57
  ## SEE ALSO
58
58
 
59
- `ase-meta-chat`, `ase-meta-search`, `ase-meta-evaluate`.
59
+ [`ase-meta-chat`](../ase-meta-chat/help.md), [`ase-meta-search`](../ase-meta-search/help.md), [`ase-meta-evaluate`](../ase-meta-evaluate/help.md).
@@ -17,7 +17,6 @@ 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
20
  @${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
22
21
 
23
22
  <skill name="ase-meta-review">
@@ -107,8 +106,8 @@ explicitly requested by this procedure via outputs based on a <template/>!
107
106
  <verdict/> to `REJECT - DEMANDS CHANGES` if *any* finding in
108
107
  <findings/> has a `severity` field of `HIGH`; otherwise set
109
108
  <verdict/> to `APPROVE`. The verdict is derived *before* the
110
- severity floor below, so a suppressed `HIGH` finding still drives the
111
- verdict.
109
+ severity floor below, so the floor only affects which findings are
110
+ *rendered*, never the verdict.
112
111
 
113
112
  Then *apply the severity floor* selected via <getopt-option-severity/>
114
113
  (default `LOW`): define the ordinal rank `LOW`=1, `MEDIUM`=2,
@@ -135,7 +134,7 @@ explicitly requested by this procedure via outputs based on a <template/>!
135
134
 
136
135
  </template>
137
136
 
138
- You *MUST* *NOT* output anything else in this STEP 3.
137
+ You *MUST* *NOT* output anything else in this STEP 3.1.
139
138
 
140
139
  2. <if condition="<findings/> is empty">
141
140
  Only output the following <template/> and then *SKIP* the
@@ -59,9 +59,9 @@ before it is committed.
59
59
  Set the *severity floor* (default `LOW`): findings below the chosen
60
60
  threshold are silently suppressed, ordered `LOW` < `MEDIUM` <
61
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.
62
+ never suppressed. The floor only affects the rendered findings table,
63
+ not the overall *verdict*, which is always derived from all findings
64
+ before the floor is applied.
65
65
 
66
66
  ## ARGUMENTS
67
67
 
@@ -84,5 +84,5 @@ Review the staged changes, reporting only `MEDIUM` and `HIGH` findings:
84
84
 
85
85
  ## SEE ALSO
86
86
 
87
- `ase-meta-diff`, `ase-meta-commit`, `ase-code-lint`, `ase-code-analyze`,
88
- `ase-meta-diaboli`.
87
+ [`ase-meta-diff`](../ase-meta-diff/help.md), [`ase-meta-commit`](../ase-meta-commit/help.md), [`ase-code-lint`](../ase-code-lint/help.md), [`ase-code-analyze`](../ase-code-analyze/help.md),
88
+ [`ase-meta-diaboli`](../ase-meta-diaboli/help.md).
@@ -41,8 +41,8 @@ Your objective is to *search* the *Internet*/*Web* for the following query:
41
41
  <define name="agent">
42
42
  ```text
43
43
  Agent(
44
- name: "ase-meta-search",
45
- description: "Query Web Search Service",
44
+ name: "ase-meta-search-<arg1/>",
45
+ description: "Query Web Search Service: <arg1/>",
46
46
  subagent_type: "ase:ase-meta-search",
47
47
  prompt: <content/>
48
48
  )
@@ -53,8 +53,9 @@ Your objective is to *search* the *Internet*/*Web* for the following query:
53
53
  *backend tokens*. The getopt parser validates only the *first*
54
54
  token, so you *MUST* validate each remaining token yourself against
55
55
  the allowed set `all`, `perplexity`, `brave`, `exa`, `websearch`. If
56
- any token is *not* in this set, only output the following <template/>
57
- and then immediately *STOP* processing the entire current skill:
56
+ any token is *not* in this set, bind <token/> to that offending
57
+ token, then only output the following <template/> and then
58
+ immediately *STOP* processing the entire current skill:
58
59
 
59
60
  <template>
60
61
  ⧉ **ASE**: ✪ skill: **ase-meta-search**, ▶ ERROR: invalid `--services` token: **<token/>**
@@ -66,7 +67,7 @@ Your objective is to *search* the *Internet*/*Web* for the following query:
66
67
  If the `perplexity` backend is *selected* and the MCP tool
67
68
  `perplexity_search` from the MCP server `search-perplexity` is available:
68
69
 
69
- <expand name="agent">
70
+ <expand name="agent" arg1="perplexity">
70
71
  Call the MCP tool `perplexity_search(query: "<query/>")`
71
72
  from the MCP server `search-perplexity`.
72
73
  </expand>
@@ -74,7 +75,7 @@ Your objective is to *search* the *Internet*/*Web* for the following query:
74
75
  If the `brave` backend is *selected* and the MCP tool
75
76
  `brave_web_search` from the MCP server `search-brave` is available:
76
77
 
77
- <expand name="agent">
78
+ <expand name="agent" arg1="brave">
78
79
  Call the MCP tool `brave_web_search(query: "<query/>")`
79
80
  from the MCP server `search-brave`.
80
81
  </expand>
@@ -82,14 +83,14 @@ Your objective is to *search* the *Internet*/*Web* for the following query:
82
83
  If the `exa` backend is *selected* and the MCP tool
83
84
  `web_search_exa` from the MCP server `search-exa` is available:
84
85
 
85
- <expand name="agent">
86
+ <expand name="agent" arg1="exa">
86
87
  Call the MCP tool `web_search_exa(query: "<query/>")`
87
88
  from the MCP server `search-exa`.
88
89
  </expand>
89
90
 
90
91
  If the `websearch` backend is *selected*:
91
92
 
92
- <expand name="agent">
93
+ <expand name="agent" arg1="websearch">
93
94
  Call the tool `WebSearch(query: "<query/>")`.
94
95
  </expand>
95
96
 
@@ -48,4 +48,4 @@ Search the Web using only the Brave and Exa backends:
48
48
 
49
49
  ## SEE ALSO
50
50
 
51
- `ase-meta-chat`, `ase-meta-quorum`, `ase-arch-discover`.
51
+ [`ase-meta-chat`](../ase-meta-chat/help.md), [`ase-meta-quorum`](../ase-meta-quorum/help.md), [`ase-arch-discover`](../ase-arch-discover/help.md).
@@ -197,7 +197,7 @@ to <getopt-option-count/>; if <getopt-option-count/> is *non-numeric* or
197
197
  Carry the result forward to the next round: set
198
198
  <thesis><fortification/></thesis> (the fortification becomes the
199
199
  thesis to be strengthened next), set <i/> to <i/> + 1 (increment the
200
- round counter), and then *CONTINUE* the *LOOP* at **STEP 1**!
200
+ round counter), and then *REPEAT* the operation at **STEP 1**!
201
201
  </if>
202
202
 
203
203
  <if condition="<i/> is greater than or equal to <rounds/>">
@@ -88,5 +88,5 @@ Strengthen across five iterative rounds:
88
88
 
89
89
  ## SEE ALSO
90
90
 
91
- `ase-meta-diaboli`, `ase-meta-why`, `ase-meta-evaluate`,
92
- `ase-meta-quorum`.
91
+ [`ase-meta-diaboli`](../ase-meta-diaboli/help.md), [`ase-meta-why`](../ase-meta-why/help.md), [`ase-meta-evaluate`](../ase-meta-evaluate/help.md),
92
+ [`ase-meta-quorum`](../ase-meta-quorum/help.md).