@rse/ase 0.9.6 → 0.9.8

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 (58) hide show
  1. package/dst/ase-getopt.js +11 -1
  2. package/dst/ase-markdown.js +235 -0
  3. package/dst/ase-service.js +2 -0
  4. package/dst/ase-task.js +22 -20
  5. package/package.json +6 -6
  6. package/plugin/.claude-plugin/plugin.json +1 -1
  7. package/plugin/.github/plugin/plugin.json +1 -1
  8. package/plugin/agents/ase-docs-proofread.md +2 -2
  9. package/plugin/meta/ase-constitution.md +7 -0
  10. package/plugin/meta/ase-control.md +24 -3
  11. package/plugin/meta/ase-format-task.md +14 -14
  12. package/plugin/meta/ase-getopt.md +2 -1
  13. package/plugin/meta/ase-skill.md +28 -9
  14. package/plugin/package.json +3 -3
  15. package/plugin/skills/ase-arch-analyze/SKILL.md +88 -89
  16. package/plugin/skills/ase-arch-discover/SKILL.md +18 -9
  17. package/plugin/skills/ase-code-analyze/SKILL.md +6 -5
  18. package/plugin/skills/ase-code-craft/SKILL.md +47 -40
  19. package/plugin/skills/ase-code-craft/help.md +2 -2
  20. package/plugin/skills/ase-code-explain/SKILL.md +1 -1
  21. package/plugin/skills/ase-code-insight/SKILL.md +1 -1
  22. package/plugin/skills/ase-code-lint/SKILL.md +16 -8
  23. package/plugin/skills/ase-code-refactor/SKILL.md +47 -40
  24. package/plugin/skills/ase-code-refactor/help.md +2 -2
  25. package/plugin/skills/ase-code-resolve/SKILL.md +48 -40
  26. package/plugin/skills/ase-code-resolve/help.md +2 -2
  27. package/plugin/skills/ase-docs-distill/SKILL.md +1 -1
  28. package/plugin/skills/ase-docs-distill/help.md +3 -3
  29. package/plugin/skills/ase-docs-proofread/SKILL.md +22 -13
  30. package/plugin/skills/ase-meta-brainstorm/SKILL.md +25 -6
  31. package/plugin/skills/ase-meta-brainstorm/help.md +6 -10
  32. package/plugin/skills/ase-meta-diff/SKILL.md +5 -4
  33. package/plugin/skills/ase-meta-diff/help.md +10 -11
  34. package/plugin/skills/ase-meta-evaluate/SKILL.md +10 -9
  35. package/plugin/skills/ase-meta-quorum/SKILL.md +15 -5
  36. package/plugin/skills/ase-meta-review/SKILL.md +3 -3
  37. package/plugin/skills/ase-meta-review/help.md +3 -3
  38. package/plugin/skills/ase-meta-search/SKILL.md +9 -8
  39. package/plugin/skills/ase-meta-steelman/SKILL.md +1 -1
  40. package/plugin/skills/ase-meta-why/SKILL.md +16 -10
  41. package/plugin/skills/ase-task-condense/SKILL.md +32 -17
  42. package/plugin/skills/ase-task-condense/help.md +1 -1
  43. package/plugin/skills/ase-task-delete/SKILL.md +6 -3
  44. package/plugin/skills/ase-task-edit/SKILL.md +58 -36
  45. package/plugin/skills/ase-task-edit/help.md +3 -3
  46. package/plugin/skills/ase-task-grill/SKILL.md +59 -24
  47. package/plugin/skills/ase-task-id/SKILL.md +11 -2
  48. package/plugin/skills/ase-task-implement/SKILL.md +38 -17
  49. package/plugin/skills/ase-task-implement/help.md +1 -1
  50. package/plugin/skills/ase-task-list/SKILL.md +1 -1
  51. package/plugin/skills/ase-task-preflight/SKILL.md +42 -22
  52. package/plugin/skills/ase-task-preflight/help.md +1 -1
  53. package/plugin/skills/ase-task-reboot/SKILL.md +31 -22
  54. package/plugin/skills/ase-task-rename/SKILL.md +5 -3
  55. package/plugin/skills/ase-task-view/SKILL.md +19 -8
  56. package/plugin/skills/ase-task-view/help.md +24 -5
  57. package/dst/ase-bash.js +0 -618
  58. package/dst/ase-hello.js +0 -24
@@ -2,8 +2,8 @@
2
2
  name: ase-code-refactor
3
3
  argument-hint: "[--help|-h] [--auto|-a] [--dry|-d] [--quick|-Q] [--next|-n <option>[,...]] [<task-id>:] <request>"
4
4
  description: >
5
- Refactor Code Base:
6
- Use when user wants to refactor the code base.
5
+ Refactor Code:
6
+ Use when user wants to "refactor", or "change" the code base.
7
7
  user-invocable: true
8
8
  disable-model-invocation: false
9
9
  effort: xhigh
@@ -69,20 +69,25 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
69
69
  </template>
70
70
  </if>
71
71
 
72
- 2. If <request/> has the format `<id/>: <text/>` where <id/> matches
73
- the regexp `^[a-zA-Z][a-zA-Z0-9_-]*$`, then set
74
- <request><text/></request> and <ase-task-id><id/></ase-task-id>
75
- and call the `ase_task_id(id: "<ase-task-id/>", session:
76
- "<ase-session-id/>")` tool from the `ase` MCP server to
77
- implicitly switch the task. Do not output anything.
72
+ 2. <if condition="
73
+ <request/> has the format `<id/>: <text/>` AND
74
+ <id/> matches the regexp `^[a-zA-Z][a-zA-Z0-9_-]*$`
75
+ ">
76
+ Set <request><text/></request> and
77
+ <ase-task-id><id/></ase-task-id> and call the `ase_task_id(id:
78
+ "<ase-task-id/>", session: "<ase-session-id/>")` tool from the
79
+ `ase` MCP server to implicitly switch the task. Do not output
80
+ anything.
81
+ </if>
78
82
 
79
- 3. If <request/> is empty,
80
- ask the user interactively, without a special tool, for the
83
+ 3. <if condition="<request/> is empty">
84
+ Ask the user interactively, without a special tool, for the
81
85
  initial request with a single question:
82
86
 
83
87
  `**No refactoring details known yet. What is the refactoring you want to request?**`
84
88
 
85
89
  Then set <request/> to the response of the user.
90
+ </if>
86
91
 
87
92
  4. <if condition="
88
93
  <ase-task-id/> is equal `default` and
@@ -196,12 +201,12 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
196
201
  anything else in this step:
197
202
 
198
203
  <template>
199
- **APPROACH A<n/>**<annotation/>: *<summary/>*
200
- [...]
201
- [...]
202
- [...]
203
- *pro*: [...]
204
- *con*: [...]
204
+ **APPROACH A<n/>**<annotation/>: *<summary/>*
205
+ [...]
206
+ [...]
207
+ [...]
208
+ **PRO**: [...]
209
+ **CON**: [...]
205
210
  <optional-diagram/>
206
211
  </template>
207
212
 
@@ -236,7 +241,7 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
236
241
 
237
242
  5. **Choose Refactoring Approach**:
238
243
 
239
- 1. If <getopt-option-auto/> is equal `false`:
244
+ 1. <if condition="<getopt-option-auto/> is not 'true'">
240
245
  Let the *user interactively choose* the preferred refactoring
241
246
  approach A<n/> with the help of the <user-dialog-tool/> tool.
242
247
  Use the header `Select Approach`, use `A<n/>: <short-summary/>`
@@ -245,14 +250,16 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
245
250
  small *code change previews*. Mark your recommended refactoring
246
251
  approach with ` ⚝ **RECOMMENDATION** ⚝` here again. Except for
247
252
  the interactive selection, do not output anything in this step.
253
+ </if>
248
254
 
249
- 2. If <getopt-option-auto/> is equal `true`:
255
+ 2. <else>
250
256
  Set <n/> to the number of the refactoring approach A<n/> you recommend.
251
257
  Output a hint with the following <template/>:
252
258
 
253
259
  <template>
254
260
  ⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **auto-chosen approach A<n/>**
255
261
  </template>
262
+ </else>
256
263
 
257
264
  6. **Compose Refactoring Plan**:
258
265
 
@@ -269,7 +276,7 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
269
276
  file, aligned with its existing style and conventions.
270
277
 
271
278
  <if condition="<getopt-option-dry/> is equal `true`">
272
- You *MUST* completely omit the `##VERIFICATION` section
279
+ You *MUST* completely omit the `## VERIFICATION` section
273
280
  (including its heading and all of its bullet points) from
274
281
  <content/>.
275
282
  </if>
@@ -298,40 +305,40 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
298
305
  Treat <getopt-option-next/> as a comma-separated chronological
299
306
  list of pre-selected next-step tokens. *Peek* the *first* token
300
307
  as <head/> (or `none` if the list is `none`/empty).
308
+ Set <args>--int-reuse-task</args>.
301
309
 
302
310
  1. <if condition="<head/> is equal `IMPLEMENT`">
303
311
  Consume the head: set <getopt-option-next/> to the remaining
304
- tokens (joined back with `,`, or `none` if empty). Set
305
- <args></args> (empty).
312
+ tokens (joined back with `,`, or `none` if empty).
306
313
  <if condition="<getopt-option-next/> is not equal `none`">
307
- Set <args>--next <getopt-option-next/></args> (forward
308
- remaining list tokens to the downstream skill).
314
+ Set <args><args/> --next <getopt-option-next/></args>
309
315
  </if>
310
- Call the tool `Skill(skill: "ase:ase-task-implement", args: <args/>)`
316
+ Call the tool `Skill(skill: "ase:ase-task-implement", args: "<args/>")`
311
317
  to *implement* the freshly composed plan, bypassing `ase-task-edit`.
312
318
  </if>
313
319
 
314
- 2. <if condition="<head/> is equal `PREFLIGHT`">
320
+ 2. <elseif condition="<head/> is equal `PREFLIGHT`">
315
321
  Consume the head: set <getopt-option-next/> to the remaining
316
- tokens (joined back with `,`, or `none` if empty). Set
317
- <args></args> (empty).
322
+ tokens (joined back with `,`, or `none` if empty).
318
323
  <if condition="<getopt-option-next/> is not equal `none`">
319
- Set <args>--next <getopt-option-next/></args> (forward
320
- remaining list tokens to the downstream skill).
324
+ Set <args><args/> --next <getopt-option-next/></args>
321
325
  </if>
322
- Call the tool `Skill(skill: "ase:ase-task-preflight", args: <args/>)`
326
+ Call the tool `Skill(skill: "ase:ase-task-preflight", args: "<args/>")`
323
327
  to *preflight* the freshly composed plan, bypassing `ase-task-edit`.
324
- </if>
328
+ </elseif>
325
329
 
326
- 3. <if condition="
327
- <head/> is not equal `IMPLEMENT` AND
328
- <head/> is not equal `PREFLIGHT`
329
- ">
330
- Forward the *entire* (unshifted) list to `ase-task-edit`, which
331
- will consume its head itself. Set <args></args> (empty).
332
- <if condition="<getopt-option-next/> is not equal `none`">
333
- Set <args>--next <getopt-option-next/></args> (append to args).
330
+ 3. <else>
331
+ Hand off to `ase-task-edit`.
332
+ <if condition="<head/> is equal `EDIT`">
333
+ Consume the head: set <getopt-option-next/> to the remaining
334
+ tokens (joined back with `,`, or `none` if empty).
334
335
  </if>
335
- Then call the tool `Skill(skill: "ase:ase-task-edit", args: <args/>)`.
336
+ All remaining tokens are `ase-task-edit`'s own vocabulary
337
+ and are forwarded verbatim, so `ase-task-edit` consumes its
338
+ head itself.
339
+ <if condition="<getopt-option-next/> is not equal `none`">
340
+ Set <args><args/> --next <getopt-option-next/></args>
336
341
  </if>
342
+ Then call the tool `Skill(skill: "ase:ase-task-edit", args: "<args/>")`.
343
+ </else>
337
344
 
@@ -34,7 +34,7 @@ plan via `ase_task_save` and then hands off to `ase-task-edit`,
34
34
  asking the user via the interactive dialog.
35
35
 
36
36
  `--dry`|`-d`:
37
- Compose the plan *without* the `※ VERIFICATION` section. When
37
+ Compose the plan *without* the `## VERIFICATION` section. When
38
38
  `ase-task-implement` later applies such a plan, it strictly skips
39
39
  the entire verification phase (no build, tests, linter,
40
40
  type-checker, or program execution) once the source files have
@@ -43,7 +43,7 @@ plan via `ase_task_save` and then hands off to `ase-task-edit`,
43
43
  `--quick`|`-Q`:
44
44
  Shorthand alias for `-a -d -n IMPLEMENT,DELETE`: automatically pick
45
45
  the recommended refactoring approach, compose the plan *without* the
46
- `※ VERIFICATION` section, immediately hand off to `ase-task-implement`,
46
+ `## VERIFICATION` section, immediately hand off to `ase-task-implement`,
47
47
  and finally `ase-task-delete` the now-consumed plan. This gives a
48
48
  single, fast *one-shot* refactoring mode.
49
49
 
@@ -3,7 +3,7 @@ name: ase-code-resolve
3
3
  argument-hint: "[--help|-h] [--auto|-a] [--dry|-d] [--quick|-Q] [--next|-n <option>[,...]] [<task-id>:] <problem>"
4
4
  description: >
5
5
  Resolve Problem:
6
- Use when user wants a bug fixed or problem resolved.
6
+ Use when user wants to "bugfix" or "fix" code or "resolve" a problem.
7
7
  user-invocable: true
8
8
  disable-model-invocation: false
9
9
  effort: xhigh
@@ -81,20 +81,26 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
81
81
  </template>
82
82
  </if>
83
83
 
84
- 3. If <problem/> has the format `<id/>: <text/>` where <id/> matches
85
- the regexp `^[a-zA-Z][a-zA-Z0-9_-]*$`, then set
86
- <problem><text/></problem> and <ase-task-id><id/></ase-task-id>
87
- and call the `ase_task_id(id: "<ase-task-id/>", session:
88
- "<ase-session-id/>")` tool from the `ase` MCP server to
89
- implicitly switch the task. Do not output anything.
84
+ 3. <if condition="
85
+ <problem-id/> is not set AND
86
+ <problem/> has the format `<id/>: <text/>` AND
87
+ <id/> matches the regexp `^[a-zA-Z][a-zA-Z0-9_-]*$`
88
+ ">
89
+ Set <problem><text/></problem> and
90
+ <ase-task-id><id/></ase-task-id> and call the `ase_task_id(id:
91
+ "<ase-task-id/>", session: "<ase-session-id/>")` tool from the
92
+ `ase` MCP server to implicitly switch the task. Do not output
93
+ anything.
94
+ </if>
90
95
 
91
- 4. If <problem/> is empty,
92
- ask the user interactively, without a special tool, for the
96
+ 4. <if condition="<problem/> is empty">
97
+ Ask the user interactively, without a special tool, for the
93
98
  initial problem with a single question:
94
99
 
95
100
  `**No problem details known yet. What is the problem you want to resolve?**`
96
101
 
97
102
  Then set <problem/> to the response of the user.
103
+ </if>
98
104
 
99
105
  5. <if condition="
100
106
  <ase-task-id/> is equal `default` and
@@ -245,12 +251,12 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
245
251
  anything else in this step:
246
252
 
247
253
  <template>
248
- **APPROACH A<n/>**<annotation/>: *<summary/>*
249
- [...]
250
- [...]
251
- [...]
252
- *pro*: [...]
253
- *con*: [...]
254
+ **APPROACH A<n/>**<annotation/>: *<summary/>*
255
+ [...]
256
+ [...]
257
+ [...]
258
+ **PRO**: [...]
259
+ **CON**: [...]
254
260
  <optional-diagram/>
255
261
  </template>
256
262
 
@@ -285,7 +291,7 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
285
291
 
286
292
  5. **Choose Problem Resolution Approach**:
287
293
 
288
- 1. If <getopt-option-auto/> is equal `false`:
294
+ 1. <if condition="<getopt-option-auto/> is not 'true'">
289
295
  Let the *user interactively choose* the preferred resolution
290
296
  approach A<n/> with the help of the <user-dialog-tool/> tool.
291
297
  Use the header `Select Approach`, use `A<n/>: <short-summary/>`
@@ -293,14 +299,16 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
293
299
  of the approach A<n/>), and *single-selection* only and provide
294
300
  small *code change previews*. Mark your recommended resolution
295
301
  approach with ` ⚝ **RECOMMENDATION** ⚝` here again.
302
+ </if>
296
303
 
297
- 2. If <getopt-option-auto/> is equal `true`:
304
+ 2. <else>
298
305
  Set <n/> to the number of the resolution approach A<n/> you recommend.
299
306
  Output a hint with the following <template/>:
300
307
 
301
308
  <template>
302
309
  ⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **auto-chosen approach A<n/>**
303
310
  </template>
311
+ </else>
304
312
 
305
313
  6. **Compose Problem Resolution Plan**:
306
314
 
@@ -317,7 +325,7 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
317
325
  file, aligned with its existing style and conventions.
318
326
 
319
327
  <if condition="<getopt-option-dry/> is equal `true`">
320
- You *MUST* completely omit the `##VERIFICATION` section
328
+ You *MUST* completely omit the `## VERIFICATION` section
321
329
  (including its heading and all of its bullet points) from
322
330
  <content/>.
323
331
  </if>
@@ -336,7 +344,7 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
336
344
  `ase_task_save(id: "<ase-task-id/>", text: "<content/>")`.
337
345
 
338
346
  4. If <problem-id/> is set (i.e. the <problem/> was retrieved from
339
- `ase_kv_get` in STEP 1.3 via key `ase-issue-<problem-id/>`),
347
+ `ase_kv_get` in STEP 1.1 via key `ase-issue-<problem-id/>`),
340
348
  you *MUST* additionally call the `ase_kv_delete(key:
341
349
  "ase-issue-<problem-id/>")` tool of the `ase` MCP
342
350
  server to remove the now-resolved analyzer result from the
@@ -353,40 +361,40 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
353
361
  Treat <getopt-option-next/> as a comma-separated chronological
354
362
  list of pre-selected next-step tokens. *Peek* the *first* token
355
363
  as <head/> (or `none` if the list is `none`/empty).
364
+ Set <args>--int-reuse-task</args>.
356
365
 
357
366
  1. <if condition="<head/> is equal `IMPLEMENT`">
358
367
  Consume the head: set <getopt-option-next/> to the remaining
359
- tokens (joined back with `,`, or `none` if empty). Set
360
- <args></args> (empty).
368
+ tokens (joined back with `,`, or `none` if empty).
361
369
  <if condition="<getopt-option-next/> is not equal `none`">
362
- Set <args>--next <getopt-option-next/></args> (forward
363
- remaining list tokens to the downstream skill).
370
+ Set <args><args/> --next <getopt-option-next/></args>
364
371
  </if>
365
- Call the tool `Skill(skill: "ase:ase-task-implement", args: <args/>)`
372
+ Call the tool `Skill(skill: "ase:ase-task-implement", args: "<args/>")`
366
373
  to *implement* the freshly composed plan, bypassing `ase-task-edit`.
367
374
  </if>
368
375
 
369
- 2. <if condition="<head/> is equal `PREFLIGHT`">
376
+ 2. <elseif condition="<head/> is equal `PREFLIGHT`">
370
377
  Consume the head: set <getopt-option-next/> to the remaining
371
- tokens (joined back with `,`, or `none` if empty). Set
372
- <args></args> (empty).
378
+ tokens (joined back with `,`, or `none` if empty).
373
379
  <if condition="<getopt-option-next/> is not equal `none`">
374
- Set <args>--next <getopt-option-next/></args> (forward
375
- remaining list tokens to the downstream skill).
380
+ Set <args><args/> --next <getopt-option-next/></args>
376
381
  </if>
377
- Call the tool `Skill(skill: "ase:ase-task-preflight", args: <args/>)`
382
+ Call the tool `Skill(skill: "ase:ase-task-preflight", args: "<args/>")`
378
383
  to *preflight* the freshly composed plan, bypassing `ase-task-edit`.
379
- </if>
384
+ </elseif>
380
385
 
381
- 3. <if condition="
382
- <head/> is not equal `IMPLEMENT` AND
383
- <head/> is not equal `PREFLIGHT`
384
- ">
385
- Forward the *entire* (unshifted) list to `ase-task-edit`, which
386
- will consume its head itself. Set <args></args> (empty).
387
- <if condition="<getopt-option-next/> is not equal `none`">
388
- Set <args>--next <getopt-option-next/></args> (append to args).
386
+ 3. <else>
387
+ Hand off to `ase-task-edit`.
388
+ <if condition="<head/> is equal `EDIT`">
389
+ Consume the head: set <getopt-option-next/> to the remaining
390
+ tokens (joined back with `,`, or `none` if empty).
389
391
  </if>
390
- Then call the tool `Skill(skill: "ase:ase-task-edit", args: <args/>)`.
392
+ All remaining tokens are `ase-task-edit`'s own vocabulary
393
+ and are forwarded verbatim, so `ase-task-edit` consumes its
394
+ head itself.
395
+ <if condition="<getopt-option-next/> is not equal `none`">
396
+ Set <args><args/> --next <getopt-option-next/></args>
391
397
  </if>
398
+ Then call the tool `Skill(skill: "ase:ase-task-edit", args: "<args/>")`.
399
+ </else>
392
400
 
@@ -39,7 +39,7 @@ plan via `ase_task_save` and then hands off to `ase-task-edit`,
39
39
  asking the user via the interactive dialog.
40
40
 
41
41
  `--dry`|`-d`:
42
- Compose the plan *without* the `※ VERIFICATION` section. When
42
+ Compose the plan *without* the `## VERIFICATION` section. When
43
43
  `ase-task-implement` later applies such a plan, it strictly skips
44
44
  the entire verification phase (no build, tests, linter,
45
45
  type-checker, or program execution) once the source files have
@@ -48,7 +48,7 @@ plan via `ase_task_save` and then hands off to `ase-task-edit`,
48
48
  `--quick`|`-Q`:
49
49
  Shorthand alias for `-a -d -n IMPLEMENT,DELETE`: automatically pick
50
50
  the recommended resolution approach, compose the plan *without* the
51
- `※ VERIFICATION` section, immediately hand off to `ase-task-implement`,
51
+ `## VERIFICATION` section, immediately hand off to `ase-task-implement`,
52
52
  and finally `ase-task-delete` the now-consumed plan. This gives a
53
53
  single, fast *one-shot* resolution mode.
54
54
 
@@ -122,7 +122,7 @@ explicitly requested by this procedure via outputs based on a <template/>!
122
122
  only*: keep at most `min(<getopt-option-top/>, number of salient
123
123
  points)` points and *never pad* the list with filler to reach
124
124
  the bound. If <getopt-option-top/> is *non-numeric* or *less
125
- than or equal to 0*, use the default *10* instead.
125
+ than or equal to 0*, use the default *5* instead.
126
126
 
127
127
  You *MUST* *NOT* output anything in this STEP 2.
128
128
 
@@ -32,15 +32,15 @@ one block per point, each showing its *LOCATION*, *EVIDENCE*,
32
32
  ranking is *auditable* rather than an opaque ordering.
33
33
 
34
34
  The `--top`/`-t` *N* option is a *length dial* that bounds the list to at
35
- most *N* points (default *10*). It is an *upper bound only*: when the
35
+ most *N* points (default *5*). It is an *upper bound only*: when the
36
36
  document has fewer salient points than *N*, the skill emits only the
37
37
  points it found and *never pads* the list with filler; a `0`, negative, or
38
- non-numeric value falls back to the default *10*.
38
+ non-numeric value falls back to the default *5*.
39
39
 
40
40
  ## ARGUMENTS
41
41
 
42
42
  `--top`, `-t` *N*:
43
- Bound the ranked list to at most *N* key points (default *10*). The
43
+ Bound the ranked list to at most *N* key points (default *5*). The
44
44
  bound is a *cap*, never a *quota* - fewer points are emitted when the
45
45
  document does not contain *N* salient ones, and an invalid or
46
46
  non-positive *N* reverts to the default.
@@ -116,8 +116,8 @@ Analyze documents for spelling, punctuation, or grammar errors
116
116
 
117
117
  3. <if condition="<getopt-option-auto/> is not 'true'">
118
118
 
119
- Render the proposed correction as a *unified diff* with *one*
120
- line of context in a fenced block based on the following <template/>:
119
+ Render the proposed correction as a *unified diff* with *up to
120
+ two* lines of context in a fenced block based on the following <template/>:
121
121
 
122
122
  <template>
123
123
 
@@ -126,7 +126,7 @@ Analyze documents for spelling, punctuation, or grammar errors
126
126
  ```diff
127
127
  --- <file/> (original)
128
128
  +++ <file/> (corrected)
129
- @@ -<line/>,<n/> +<line/>,<m/> @@
129
+ @@ -<old-start/>,<n/> +<new-start/>,<m/> @@
130
130
  <context-before/>
131
131
  -<old-text/>
132
132
  +<new-text/>
@@ -136,8 +136,16 @@ Analyze documents for spelling, punctuation, or grammar errors
136
136
  </template>
137
137
 
138
138
  Hints:
139
- - The <n/> is the number of lines in <old-text/>.
140
- - The <m/> is the number of lines in <new-text/>.
139
+ - The <old-start/> is the line of the first hunk line, i.e.,
140
+ the line of <context-before/> (one before <line/>).
141
+ - The <new-start/> is the same as <old-start/> (the unchanged
142
+ <context-before/> line shares the same start in both files).
143
+ - The <n/> is the total number of old-side hunk lines, i.e.,
144
+ the number of lines in <context-before/>, <old-text/>, and
145
+ <context-after/> combined.
146
+ - The <m/> is the total number of new-side hunk lines, i.e.,
147
+ the number of lines in <context-before/>, <new-text/>, and
148
+ <context-after/> combined.
141
149
 
142
150
  </if>
143
151
 
@@ -153,20 +161,21 @@ Analyze documents for spelling, punctuation, or grammar errors
153
161
 
154
162
  </if>
155
163
 
156
- <if condition="<getopt-option-auto/> is 'true'">
164
+ <else>
157
165
 
158
166
  Set <result>ACCEPT</result>.
159
167
 
160
- </if>
168
+ </else>
161
169
 
162
170
  5. Check <result/> and dispatch accordingly:
163
171
 
164
172
  - <if condition="<result/> is 'ACCEPT'">
165
173
 
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
169
- prompt will appear. Then continue with the next <item/>.
174
+ Invoke the `Edit` tool to apply the change by replacing
175
+ <old-text/> with <new-text/> at <file/>:<line/>. The operation
176
+ will be auto-approved because of the active proofread marker,
177
+ so *no* interactive permission prompt will appear. Then
178
+ continue with the next <item/>.
170
179
 
171
180
  </if>
172
181
 
@@ -174,8 +183,8 @@ Analyze documents for spelling, punctuation, or grammar errors
174
183
 
175
184
  Generate a *new* proposal for the *same* <item/>,
176
185
  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 -
186
+ after the "OTHER:" prefix, and *go back* to substep 2 of
187
+ this `for`-iteration. There is *no* cap on refinement rounds -
179
188
  keep refining until the user picks `ACCEPT` or `REJECT`.
180
189
 
181
190
  </if>
@@ -113,15 +113,15 @@ 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)
125
125
 
126
126
  <expand name="user-dialog">
127
127
  <facet-M/>: <question-M/>
@@ -131,7 +131,26 @@ Honor the following tenets throughout the brainstorming:
131
131
  <answer-M-4/>: (fourth grounded candidate answer)
132
132
  </expand>
133
133
 
134
- 4. Output the following <template/>:
134
+ 4. Dispatch on the dialog <result/>:
135
+
136
+ - If <result/> is `CANCEL`:
137
+ Skip the remaining sub-steps of this iteration cycle and
138
+ continue directly with sub-step 2 below (cancellation handling).
139
+
140
+ - If <result/> starts with `ERROR:`:
141
+ Ask the user interactively, without a special tool, the
142
+ question <question-M/> directly and set <answer-M/> to the
143
+ response of the user.
144
+
145
+ - If <result/> matches `OTHER: <text/>`:
146
+ Set <answer-M><text/></answer-M> (take the user's free-text answer).
147
+
148
+ - Otherwise:
149
+ Set <answer-M><result/></answer-M> (take the selected candidate answer).
150
+
151
+ Do not output anything in this sub-step.
152
+
153
+ 5. Output the following <template/>:
135
154
 
136
155
  <template>
137
156
  <ase-tpl-bullet-normal/> FACET <M/>/<m/>: **<facet-M/>**, ANSWER: **<answer-M/>**
@@ -182,7 +201,7 @@ Honor the following tenets throughout the brainstorming:
182
201
  set and finally into a recommendation.
183
202
 
184
203
  1. *Cluster*: group the candidate ideas into <c/> coherent clusters
185
- <cluster-C/> (a short 1-4 word label, C=1...</c>), collapsing
204
+ <cluster-C/> (a short 1-4 word label, C=1...<c/>), collapsing
186
205
  near-duplicates and discarding ideas pruned by *You Aren't Gonna
187
206
  Need It (YAGNI)* (speculative, out-of-scope, or contradicting
188
207
  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.
@@ -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
 
@@ -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"