@rse/ase 0.9.7 → 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 (49) hide show
  1. package/dst/ase-getopt.js +11 -1
  2. package/dst/ase-task.js +20 -21
  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-docs-proofread.md +2 -2
  7. package/plugin/meta/ase-constitution.md +7 -0
  8. package/plugin/meta/ase-control.md +24 -3
  9. package/plugin/meta/ase-format-task.md +2 -2
  10. package/plugin/meta/ase-getopt.md +2 -1
  11. package/plugin/meta/ase-skill.md +28 -9
  12. package/plugin/package.json +2 -2
  13. package/plugin/skills/ase-arch-analyze/SKILL.md +88 -89
  14. package/plugin/skills/ase-arch-discover/SKILL.md +18 -9
  15. package/plugin/skills/ase-code-analyze/SKILL.md +6 -5
  16. package/plugin/skills/ase-code-craft/SKILL.md +42 -35
  17. package/plugin/skills/ase-code-explain/SKILL.md +1 -1
  18. package/plugin/skills/ase-code-insight/SKILL.md +1 -1
  19. package/plugin/skills/ase-code-lint/SKILL.md +16 -8
  20. package/plugin/skills/ase-code-refactor/SKILL.md +42 -35
  21. package/plugin/skills/ase-code-resolve/SKILL.md +43 -35
  22. package/plugin/skills/ase-docs-distill/SKILL.md +1 -1
  23. package/plugin/skills/ase-docs-distill/help.md +3 -3
  24. package/plugin/skills/ase-docs-proofread/SKILL.md +22 -13
  25. package/plugin/skills/ase-meta-brainstorm/SKILL.md +25 -6
  26. package/plugin/skills/ase-meta-brainstorm/help.md +6 -10
  27. package/plugin/skills/ase-meta-diff/SKILL.md +5 -4
  28. package/plugin/skills/ase-meta-diff/help.md +10 -11
  29. package/plugin/skills/ase-meta-evaluate/SKILL.md +10 -9
  30. package/plugin/skills/ase-meta-quorum/SKILL.md +15 -5
  31. package/plugin/skills/ase-meta-review/SKILL.md +3 -3
  32. package/plugin/skills/ase-meta-review/help.md +3 -3
  33. package/plugin/skills/ase-meta-search/SKILL.md +9 -8
  34. package/plugin/skills/ase-meta-steelman/SKILL.md +1 -1
  35. package/plugin/skills/ase-meta-why/SKILL.md +16 -10
  36. package/plugin/skills/ase-task-condense/SKILL.md +32 -17
  37. package/plugin/skills/ase-task-condense/help.md +1 -1
  38. package/plugin/skills/ase-task-delete/SKILL.md +6 -3
  39. package/plugin/skills/ase-task-edit/SKILL.md +53 -32
  40. package/plugin/skills/ase-task-edit/help.md +2 -2
  41. package/plugin/skills/ase-task-grill/SKILL.md +53 -24
  42. package/plugin/skills/ase-task-id/SKILL.md +11 -2
  43. package/plugin/skills/ase-task-implement/SKILL.md +36 -15
  44. package/plugin/skills/ase-task-list/SKILL.md +1 -1
  45. package/plugin/skills/ase-task-preflight/SKILL.md +40 -20
  46. package/plugin/skills/ase-task-preflight/help.md +1 -1
  47. package/plugin/skills/ase-task-reboot/SKILL.md +27 -18
  48. package/plugin/skills/ase-task-rename/SKILL.md +5 -3
  49. package/plugin/skills/ase-task-view/help.md +24 -5
@@ -86,6 +86,15 @@ for the technology stack to *provide* the *needed functionality*
86
86
  </step>
87
87
 
88
88
  3. <step id="STEP 3: Discover Components">
89
+ - If <stack/> is "Unknown", the technology stack could not be
90
+ determined and no component discovery backend is available.
91
+ Inform the user with just the following <template/> and then
92
+ *STOP* the entire flow (do not perform any further steps):
93
+
94
+ <template>
95
+ <ase-tpl-bullet-normal/> **RESULT**: technology stack could not be determined -- component discovery is only supported for JavaScript, TypeScript, Java, and Kotlin projects.
96
+ </template>
97
+
89
98
  - From <stack/> and <functionality/>, derive essential keywords
90
99
  <keyword-L/> (L=1-M), which allow you to search for suitable
91
100
  components.
@@ -122,7 +131,7 @@ for the technology stack to *provide* the *needed functionality*
122
131
  their unique Maven coordinates <package-K/> of the form
123
132
  `groupId:artifactId`.
124
133
 
125
- - Use the shell command `curl -s 'https://search.maven.org/solrsearch/select?q=<keyword-1/>+<keyword-M/>&rows=<getopt-option-limit/>&wt=json'`
134
+ - Use the shell command `curl -s 'https://search.maven.org/solrsearch/select?q=<keyword-1/>+[...]+<keyword-M/>&rows=<getopt-option-limit/>&wt=json'`
126
135
  to *specifically* discover an additional set of a maximum
127
136
  of <getopt-option-limit/> *Maven packages* <component-K/> and at least their
128
137
  unique Maven coordinates <package-K/> (i.e. `<g/>:<a/>` from
@@ -167,11 +176,11 @@ for the technology stack to *provide* the *needed functionality*
167
176
  <template>
168
177
  <ase-tpl-bullet-normal/> **COMPONENT HINTS**:
169
178
 
170
- | ⚑ *Component* | ▣ *Package* | ⚖ *Hint* |
171
- | :----------------- | :------------- | :-------- |
172
- | **<component-1/>** | `<package-1/>` | <info-1/> |
179
+ | ⚑ *Component* | ▣ *Package* | ⚖ *Hint* |
180
+ | :------------ | :------------- | :-------- |
181
+ | **<name-1/>** | `<package-1/>` | <info-1/> |
173
182
  [...]
174
- | **<component-N/>** | `<package-N/>` | <info-N/> |
183
+ | **<name-N/>** | `<package-N/>` | <info-N/> |
175
184
  </template>
176
185
 
177
186
  - Display the discovered components as a Markdown *table*
@@ -180,11 +189,11 @@ for the technology stack to *provide* the *needed functionality*
180
189
  <template>
181
190
  <ase-tpl-bullet-normal/> **COMPONENT RANKING**:
182
191
 
183
- | ⚑ *Component* | ▣ *Package* | ❖ *Version* | ↓ *Downloads* | ⎈ *Stars* | ⏲ *Updated* | ☆ *Created* |
184
- | :----------------- | :------------- | -----------: | -----------------: | -------------: | :--------------- | :----------- |
185
- | **<component-1/>** | `<package-1/>` | <version-1/> | **<downloads-1/>** | **<stars-1/>** | **<updated-1/>** | <created-1/> |
192
+ | ⚑ *Component* | ▣ *Package* | ❖ *Version* | ↓ *Downloads* | ⎈ *Stars* | ⏲ *Updated* | ☆ *Created* |
193
+ | :------------ | :------------- | -----------: | -----------------: | -------------: | :--------------- | :----------- |
194
+ | **<name-1/>** | `<package-1/>` | <version-1/> | **<downloads-1/>** | **<stars-1/>** | **<updated-1/>** | <created-1/> |
186
195
  [...]
187
- | **<component-N/>** | `<package-N/>` | <version-N/> | **<downloads-N/>** | **<stars-N/>** | **<updated-N/>** | <created-N/> |
196
+ | **<name-N/>** | `<package-N/>` | <version-N/> | **<downloads-N/>** | **<stars-N/>** | **<updated-N/>** | <created-N/> |
188
197
  </template>
189
198
  </step>
190
199
  </flow>
@@ -202,9 +202,12 @@ problems in *performance* and *efficiency*, or problems in *security*.
202
202
  <template>(`<filename/>#<function-or-method/>`)</template>.
203
203
 
204
204
  - In <description/>, classify the problem with a <severity/>
205
- of <template>LOW</template>, <template>MEDIUM</template> or
206
- <template>HIGH</template>, ranked by the estimated *impact* of the
207
- problem.
205
+ of <template>LOW</template>, <template>MEDIUM</template>,
206
+ <template>HIGH</template>, or <template>ACCEPTED</template>,
207
+ ranked by the estimated *impact* of the problem. Use
208
+ <template>ACCEPTED</template> when the problem is a deliberate,
209
+ justified trade-off that should remain on record but is never
210
+ dropped by the severity floor (see STEP 3).
208
211
 
209
212
  - <if condition="<getopt-option-performance/> is equal `true`">
210
213
  In <evidence/>, ground the finding by citing either the inferred
@@ -241,5 +244,3 @@ problems in *performance* and *efficiency*, or problems in *security*.
241
244
  </step>
242
245
 
243
246
  </flow>
244
-
245
- </output>
@@ -2,8 +2,8 @@
2
2
  name: ase-code-craft
3
3
  argument-hint: "[--help|-h] [--auto|-a] [--dry|-d] [--quick|-Q] [--next|-n <option>[,...]] [<task-id>:] <feature>"
4
4
  description: >
5
- Craft Source Code:
6
- Use when user wants to create or craft a new feature from scratch.
5
+ Craft Source:
6
+ Use when user wants to "create", "add", or "craft" a new feature from scratch.
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 <feature/> has the format `<id/>: <text/>` where <id/> matches
73
- the regexp `^[a-zA-Z][a-zA-Z0-9_-]*$`, then set
74
- <feature><text/></feature> 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
+ <feature/> has the format `<id/>: <text/>` AND
74
+ <id/> matches the regexp `^[a-zA-Z][a-zA-Z0-9_-]*$`
75
+ ">
76
+ Set <feature><text/></feature> 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 <feature/> is empty,
80
- ask the user interactively, without a special tool, for the
83
+ 3. <if condition="<feature/> is empty">
84
+ Ask the user interactively, without a special tool, for the
81
85
  initial feature with a single question:
82
86
 
83
87
  `**No feature known yet. What is the feature you want to craft?**`
84
88
 
85
89
  Then set <feature/> to the response of the user.
90
+ </if>
86
91
 
87
92
  4. <if condition="
88
93
  <ase-task-id/> is equal `default` and
@@ -210,8 +215,8 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
210
215
  ○ [...]
211
216
  ○ [...]
212
217
  ○ [...]
213
- *PRO*: [...]
214
- *CON*: [...]
218
+ **PRO**: [...]
219
+ **CON**: [...]
215
220
  <optional-diagram/>
216
221
  </template>
217
222
 
@@ -246,7 +251,7 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
246
251
 
247
252
  5. **Choose Feature Crafting Approach**:
248
253
 
249
- 1. If <getopt-option-auto/> is equal `false`:
254
+ 1. <if condition="<getopt-option-auto/> is equal `false`">
250
255
  Let the *user interactively choose* the preferred feature
251
256
  approach A<n/> with the help of the <user-dialog-tool/> tool.
252
257
  Use the header `Select Approach`, use `A<n/>: <short-summary/>`
@@ -254,14 +259,16 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
254
259
  of the approach A<n/>), and *single-selection* only and provide
255
260
  small *code change previews*. Mark your recommended feature
256
261
  approach with ` ⚝ **RECOMMENDATION** ⚝` here again.
262
+ </if>
257
263
 
258
- 2. If <getopt-option-auto/> is equal `true`:
264
+ 2. <else>
259
265
  Set <n/> to the number of the feature approach A<n/> you recommend.
260
266
  Output a hint with the following <template/>:
261
267
 
262
268
  <template>
263
269
  ⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **auto-chosen approach A<n/>**
264
270
  </template>
271
+ </else>
265
272
 
266
273
  6. **Compose Feature Crafting Plan**:
267
274
 
@@ -307,40 +314,40 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
307
314
  Treat <getopt-option-next/> as a comma-separated chronological
308
315
  list of pre-selected next-step tokens. *Peek* the *first* token
309
316
  as <head/> (or `none` if the list is `none`/empty).
317
+ Set <args>--int-reuse-task</args>.
310
318
 
311
319
  1. <if condition="<head/> is equal `IMPLEMENT`">
312
320
  Consume the head: set <getopt-option-next/> to the remaining
313
- tokens (joined back with `,`, or `none` if empty). Set
314
- <args></args> (empty).
321
+ tokens (joined back with `,`, or `none` if empty).
315
322
  <if condition="<getopt-option-next/> is not equal `none`">
316
- Set <args>--next <getopt-option-next/></args> (forward
317
- remaining list tokens to the downstream skill).
323
+ Set <args><args/> --next <getopt-option-next/></args>
318
324
  </if>
319
- Call the tool `Skill(skill: "ase:ase-task-implement", args: <args/>)`
325
+ Call the tool `Skill(skill: "ase:ase-task-implement", args: "<args/>")`
320
326
  to *implement* the freshly composed plan, bypassing `ase-task-edit`.
321
327
  </if>
322
328
 
323
- 2. <if condition="<head/> is equal `PREFLIGHT`">
329
+ 2. <elseif condition="<head/> is equal `PREFLIGHT`">
324
330
  Consume the head: set <getopt-option-next/> to the remaining
325
- tokens (joined back with `,`, or `none` if empty). Set
326
- <args></args> (empty).
331
+ tokens (joined back with `,`, or `none` if empty).
327
332
  <if condition="<getopt-option-next/> is not equal `none`">
328
- Set <args>--next <getopt-option-next/></args> (forward
329
- remaining list tokens to the downstream skill).
333
+ Set <args><args/> --next <getopt-option-next/></args>
330
334
  </if>
331
- Call the tool `Skill(skill: "ase:ase-task-preflight", args: <args/>)`
335
+ Call the tool `Skill(skill: "ase:ase-task-preflight", args: "<args/>")`
332
336
  to *preflight* the freshly composed plan, bypassing `ase-task-edit`.
333
- </if>
337
+ </elseif>
334
338
 
335
- 3. <if condition="
336
- <head/> is not equal `IMPLEMENT` AND
337
- <head/> is not equal `PREFLIGHT`
338
- ">
339
- Forward the *entire* (unshifted) list to `ase-task-edit`, which
340
- will consume its head itself. Set <args></args> (empty).
341
- <if condition="<getopt-option-next/> is not equal `none`">
342
- Set <args>--next <getopt-option-next/></args> (append to args).
339
+ 3. <else>
340
+ Hand off to `ase-task-edit`.
341
+ <if condition="<head/> is equal `EDIT`">
342
+ Consume the head: set <getopt-option-next/> to the remaining
343
+ tokens (joined back with `,`, or `none` if empty).
343
344
  </if>
344
- Then call the tool `Skill(skill: "ase:ase-task-edit", args: <args/>)`.
345
+ All remaining tokens are `ase-task-edit`'s own vocabulary
346
+ and are forwarded verbatim, so `ase-task-edit` consumes its
347
+ head itself.
348
+ <if condition="<getopt-option-next/> is not equal `none`">
349
+ Set <args><args/> --next <getopt-option-next/></args>
345
350
  </if>
351
+ Then call the tool `Skill(skill: "ase:ase-task-edit", args: "<args/>")`.
352
+ </else>
346
353
 
@@ -71,7 +71,7 @@ code and *explain* it in a *brief*, *standardized*, and *concise* way.
71
71
  `sequenceDiagram` for actor/message flow, or `flowchart TB` for
72
72
  boxes-and-lines component layouts. Then dispatch the rendering to
73
73
  the `ase-meta-diagram` sub-agent by calling the tool `Agent(name:
74
- "ase:ase-meta-diagram", description: "Diagram Rendering", subagent_type:
74
+ "ase-meta-diagram", description: "Diagram Rendering", subagent_type:
75
75
  "ase:ase-meta-diagram", prompt: <mermaid-spec/>)` and reproduce its
76
76
  returned fenced code block verbatim in the response text. Do *not*
77
77
  hand-draw.
@@ -70,7 +70,7 @@ Give *insights* into the project through the source code of $ARGUMENTS.
70
70
  Then run the following command...
71
71
 
72
72
  ```
73
- git log --format=format: --name-only --since="1 year ago" | sort | uniq -c | sort -nr | head -10
73
+ git log --format=format: --name-only --since="1 year ago" | grep -v '^$' | sort | uniq -c | sort -nr | head -10
74
74
  ```
75
75
 
76
76
  ...and then display its result as a table with a table head and
@@ -101,7 +101,7 @@ related to a set of code quality aspects.
101
101
  3. <step id="STEP 3: Correction">
102
102
 
103
103
  1. You *MUST* call the MCP tool `ase_config_set(key: "agent.skill", val:
104
- "ase-docs-proofread", scope: "session:<ase-session-id/>")` of the
104
+ "ase-code-lint", scope: "session:<ase-session-id/>")` of the
105
105
  `ase` MCP server. You *MUST* *NOT* output anything related to
106
106
  this.
107
107
 
@@ -150,7 +150,7 @@ related to a set of code quality aspects.
150
150
  3. Append the following <template/> to <diff-file/>:
151
151
 
152
152
  <template>
153
- @@ -<line/>,<n/> +<line/>,<m/> @@
153
+ @@ -<old-start/>,<n/> +<new-start/>,<m/> @@
154
154
  <context-before/>
155
155
  -<old-text/>
156
156
  +<new-text/>
@@ -158,8 +158,16 @@ related to a set of code quality aspects.
158
158
  </template>
159
159
 
160
160
  Hints:
161
- - The <n/> is the number of lines in <old-text/>.
162
- - The <m/> is the number of lines in <new-text/>.
161
+ - The <old-start/> is the line of the first hunk line, i.e.,
162
+ the line of <context-before/> (one before <line/>).
163
+ - The <new-start/> is the same as <old-start/> (the unchanged
164
+ <context-before/> line shares the same start in both files).
165
+ - The <n/> is the total number of old-side hunk lines, i.e.,
166
+ the number of lines in <context-before/>, <old-text/>, and
167
+ <context-after/> combined.
168
+ - The <m/> is the total number of new-side hunk lines, i.e.,
169
+ the number of lines in <context-before/>, <new-text/>, and
170
+ <context-after/> combined.
163
171
 
164
172
  </for>
165
173
 
@@ -190,7 +198,7 @@ related to a set of code quality aspects.
190
198
  </template>
191
199
 
192
200
  </if>
193
- <if condition="<getopt-option-auto/> is 'true'">
201
+ <else>
194
202
 
195
203
  Report the solution with the following <template/>:
196
204
 
@@ -201,7 +209,7 @@ related to a set of code quality aspects.
201
209
 
202
210
  </template>
203
211
 
204
- </if>
212
+ </else>
205
213
 
206
214
  6. <if condition="<getopt-option-auto/> is not 'true'">
207
215
 
@@ -215,12 +223,12 @@ related to a set of code quality aspects.
215
223
 
216
224
  </if>
217
225
 
218
- <if condition="<getopt-option-auto/> is 'true'">
226
+ <else>
219
227
 
220
228
  Set <result>ACCEPT</result>.
221
229
  You *MUST* *NOT* output anything else in this step 6.
222
230
 
223
- </if>
231
+ </else>
224
232
 
225
233
  7. Check <result/> and dispatch accordingly:
226
234
 
@@ -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
@@ -200,8 +205,8 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
200
205
  ○ [...]
201
206
  ○ [...]
202
207
  ○ [...]
203
- ⊕ **PRO*: [...]
204
- ⊖ **CON*: [...]
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
 
@@ -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
 
@@ -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
@@ -249,8 +255,8 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
249
255
  ○ [...]
250
256
  ○ [...]
251
257
  ○ [...]
252
- *PRO*: [...]
253
- *CON*: [...]
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
 
@@ -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
 
@@ -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