@rse/ase 0.9.9 → 0.9.11

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 (40) hide show
  1. package/package.json +1 -1
  2. package/plugin/.claude-plugin/plugin.json +1 -1
  3. package/plugin/.github/plugin/plugin.json +1 -1
  4. package/plugin/meta/ase-dialog.md +52 -24
  5. package/plugin/meta/ase-format-arch.md +3 -3
  6. package/plugin/meta/ase-format-spec.md +13 -4
  7. package/plugin/meta/ase-getopt.md +11 -7
  8. package/plugin/meta/ase-skill.md +17 -10
  9. package/plugin/package.json +1 -1
  10. package/plugin/skills/ase-arch-analyze/SKILL.md +6 -1
  11. package/plugin/skills/ase-arch-discover/SKILL.md +9 -6
  12. package/plugin/skills/ase-code-analyze/SKILL.md +12 -5
  13. package/plugin/skills/ase-code-craft/SKILL.md +20 -16
  14. package/plugin/skills/ase-code-explain/SKILL.md +6 -1
  15. package/plugin/skills/ase-code-insight/SKILL.md +11 -5
  16. package/plugin/skills/ase-code-lint/SKILL.md +16 -10
  17. package/plugin/skills/ase-code-refactor/SKILL.md +20 -16
  18. package/plugin/skills/ase-code-resolve/SKILL.md +27 -22
  19. package/plugin/skills/ase-docs-proofread/SKILL.md +16 -10
  20. package/plugin/skills/ase-meta-brainstorm/SKILL.md +26 -10
  21. package/plugin/skills/ase-meta-changelog/SKILL.md +16 -5
  22. package/plugin/skills/ase-meta-chat/SKILL.md +6 -1
  23. package/plugin/skills/ase-meta-commit/SKILL.md +5 -0
  24. package/plugin/skills/ase-meta-diaboli/SKILL.md +9 -5
  25. package/plugin/skills/ase-meta-diff/SKILL.md +1 -1
  26. package/plugin/skills/ase-meta-evaluate/SKILL.md +20 -12
  27. package/plugin/skills/ase-meta-persona/SKILL.md +6 -1
  28. package/plugin/skills/ase-meta-quorum/SKILL.md +15 -3
  29. package/plugin/skills/ase-meta-search/SKILL.md +9 -1
  30. package/plugin/skills/ase-meta-steelman/SKILL.md +5 -1
  31. package/plugin/skills/ase-meta-why/SKILL.md +6 -4
  32. package/plugin/skills/ase-task-condense/SKILL.md +5 -4
  33. package/plugin/skills/ase-task-delete/SKILL.md +6 -1
  34. package/plugin/skills/ase-task-edit/SKILL.md +10 -8
  35. package/plugin/skills/ase-task-grill/SKILL.md +35 -13
  36. package/plugin/skills/ase-task-id/SKILL.md +10 -3
  37. package/plugin/skills/ase-task-implement/SKILL.md +5 -4
  38. package/plugin/skills/ase-task-preflight/SKILL.md +5 -4
  39. package/plugin/skills/ase-task-reboot/SKILL.md +7 -6
  40. package/plugin/skills/ase-task-rename/SKILL.md +15 -1
@@ -12,11 +12,16 @@ effort: high
12
12
 
13
13
  @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
14
14
  @${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
15
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
15
16
 
16
17
  <skill name="ase-task-delete">
17
18
  Delete a Task Plan
18
19
  </skill>
19
20
 
21
+ <expand name="getopt" arg1="ase-task-delete">
22
+ $ARGUMENTS
23
+ </expand>
24
+
20
25
  <objective>
21
26
  *Delete* the task plan.
22
27
  </objective>
@@ -32,7 +37,7 @@ explicitly requested by this procedure via outputs based on a <template/>!
32
37
 
33
38
  1. **Determine Task:**
34
39
 
35
- 1. Set <id>$ARGUMENTS</id> initially, with any leading and trailing
40
+ 1. Set <id><getopt-arguments/></id> initially, with any leading and trailing
36
41
  whitespace stripped.
37
42
  Inherit the always existing <ase-task-id/> from the current context.
38
43
  Inherit the always existing <ase-session-id/> from the current context.
@@ -226,11 +226,12 @@ Set <content-dirty>true</content-dirty>.
226
226
  Set <result><getopt-option-plan/></result>.
227
227
 
228
228
  - If <getopt-option-plan/> is equal to `none`:
229
- Let the *user interactively choose* what to do as the next
230
- step. For this you *MUST* use the custom `custom-dialog` and
231
- *NOT* the `AskUserQuestion` based "user-dialog":
232
229
 
233
- <expand name="custom-dialog">
230
+ In the following, you *MUST* *NOT* use the <user-dialog-tool/>
231
+ tool! Instead, you *MUST* just show a custom output, let the
232
+ user enter input, and then you set the result accordingly.
233
+
234
+ <expand name="custom-dialog" arg1="--other">
234
235
  Previous Plan: Should the previous plan content be overwritten, refined, or preserved?
235
236
  OVERWRITE: Continue operation, overwrite previous plan.
236
237
  REFINE: Continue operation, refine previous plan.
@@ -376,11 +377,12 @@ Set <content-dirty>true</content-dirty>.
376
377
  </template>
377
378
 
378
379
  - If <getopt-option-next/> is equal to `none`:
379
- Let the *user interactively choose* what to do as the next
380
- step. For this you *MUST* use the custom `custom-dialog` and
381
- *NOT* the `AskUserQuestion` based "user-dialog":
382
380
 
383
- <expand name="custom-dialog">
381
+ In the following, you *MUST* *NOT* use the <user-dialog-tool/>
382
+ tool! Instead, you *MUST* just show a custom output, let the
383
+ user enter input, and then you set the result accordingly.
384
+
385
+ <expand name="custom-dialog" arg1="--other">
384
386
  Next Step: How would you like to proceed with the plan?
385
387
  DONE: Mark plan finalized, exit planning loop.
386
388
  GRILL: Hand off plan to grilling.
@@ -175,14 +175,32 @@ explicitly requested by this procedure via outputs based on a <template/>!
175
175
 
176
176
  2. Check the code base and your world knowledge and
177
177
  use this information to find *up to three* grounded
178
- alternative answers <answer-N-K/> (K={2,3,4}).
179
-
180
- 3. Use an interactive user dialog
181
- with header <aspect-N/> and question <question-N/>, and
182
- let the user select the <answer-N/> out of <answer-N-K/>
183
- (K={1..4}). In this dialog, mark the <answer-N-1/> by
184
- appending ` ⚝ **CURRENT PLAN** ⚝` to its option name (not the
185
- description).
178
+ alternative answers <answer-N-K/> (K={2,3,4}), so there
179
+ are between two and four answer options in total.
180
+
181
+ 3. In the following, you *MUST* *NOT* use the
182
+ <user-dialog-tool/> tool! Instead, you *MUST* just show a
183
+ custom output, let the user enter input, and then you set
184
+ the result accordingly.
185
+
186
+ Let the user select the <answer-N/> out of the answer
187
+ alternatives <answer-N-K/> by raising a question with the
188
+ following custom dialog, where per alternative <answer-N-K/>
189
+ you determine a brief label <answer-N-K-label/> and a
190
+ description <answer-N-K-description/>, and you mark the
191
+ <answer-N-1/> by prefixing its description with
192
+ `⚝ **CURRENT PLAN** ⚝ `. Emit only the answer lines for the
193
+ alternatives <answer-N-K/> you actually determined in the
194
+ previous step (between two and four lines in total):
195
+
196
+ <expand name="custom-dialog" arg1="--other">
197
+ <aspect-N/>: <question-N/>
198
+ <answer-N-1-label/>: ⚝ **CURRENT PLAN** ⚝ <answer-N-1-description/>
199
+ <answer-N-K-label/>: <answer-N-K-description/>
200
+ [...]
201
+ </expand>
202
+
203
+ Set <answer-N/> to the selected <result/>.
186
204
 
187
205
  4. Output the following <template/>:
188
206
 
@@ -199,7 +217,10 @@ explicitly requested by this procedure via outputs based on a <template/>!
199
217
 
200
218
  4. Call the `ase_timestamp(format: "yyyy-LL-dd HH:mm")` tool of the
201
219
  `ase` MCP server and use the `text` field of its response for
202
- <timestamp-modified/> information. Then insert the current
220
+ <timestamp-modified/> information. If <timestamp-created/> is
221
+ still unset (because the previous <plan/> had no `Created:`
222
+ line), set <timestamp-created><timestamp-modified/></timestamp-created>
223
+ (fall back to the modified timestamp). Then insert the current
203
224
  <ase-task-id/>, previous <timestamp-created/>, and refreshed
204
225
  <timestamp-modified/> information and calculate the number of
205
226
  words <words/> of <plan/>.
@@ -239,11 +260,12 @@ explicitly requested by this procedure via outputs based on a <template/>!
239
260
  </template>
240
261
 
241
262
  - If <getopt-option-next/> is equal to `none`:
242
- Let the *user interactively choose* what to do as the next
243
- step. For this you *MUST* use the custom `custom-dialog` and
244
- *NOT* the `AskUserQuestion` based "user-dialog":
245
263
 
246
- <expand name="custom-dialog">
264
+ In the following, you *MUST* *NOT* use the <user-dialog-tool/>
265
+ tool! Instead, you *MUST* just show a custom output, let the
266
+ user enter input, and then you set the result accordingly.
267
+
268
+ <expand name="custom-dialog" arg1="--no-other">
247
269
  Next Step: How would you like to proceed with the plan?
248
270
  DONE: Stop processing.
249
271
  EDIT: Hand off plan to editing.
@@ -12,17 +12,23 @@ effort: high
12
12
 
13
13
  @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
14
14
  @${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
15
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
15
16
 
16
17
  <skill name="ase-task-id">
17
18
  Configure Task Id
18
19
  </skill>
19
20
 
21
+ <expand name="getopt" arg1="ase-task-id">
22
+ $ARGUMENTS
23
+ </expand>
24
+
20
25
  <objective>
21
26
  *Get* or *set* the unique *task id* of the current session.
22
27
  </objective>
23
28
 
24
29
  1. Determine request:
25
- <request>$ARGUMENTS</request>
30
+ <request><getopt-arguments/></request>
31
+ Inherit the always existing <ase-session-id/> from the current context.
26
32
 
27
33
  2. <if condition="<request/> is NOT empty AND <request/> does NOT match the regexp `^[a-zA-Z][a-zA-Z0-9_-]*$`">
28
34
  Only output the following <template/> and then immediately
@@ -35,8 +41,9 @@ Configure Task Id
35
41
 
36
42
  3. <if condition="<request/> is empty">
37
43
  - Call the `ase_task_id(session: "<ase-session-id/>")`
38
- tool from the `ase` MCP server and set
39
- <ase-task-id/> to its `text` output.
44
+ tool from the `ase` MCP server and set <text/> to its
45
+ `text` output. Check the response as mandated above; only
46
+ on a clean response set <ase-task-id><text/></ase-task-id>.
40
47
 
41
48
  - Output:
42
49
  <template>
@@ -184,11 +184,12 @@ explicitly requested by this procedure via outputs based on a <template/>!
184
184
  </template>
185
185
 
186
186
  - If <getopt-option-next/> is equal to `none`:
187
- Let the *user interactively choose* what to do as the next
188
- step. For this you *MUST* use the custom `custom-dialog` and
189
- *NOT* the `AskUserQuestion` based "user-dialog":
190
187
 
191
- <expand name="custom-dialog">
188
+ In the following, you *MUST* *NOT* use the <user-dialog-tool/>
189
+ tool! Instead, you *MUST* just show a custom output, let the
190
+ user enter input, and then you set the result accordingly.
191
+
192
+ <expand name="custom-dialog" arg1="--no-other">
192
193
  Next Step: How would you like to proceed with the plan?
193
194
  DONE: Stop processing and PRESERVE task plan.
194
195
  DELETE: Stop processing and DELETE the task plan.
@@ -196,11 +196,12 @@ explicitly requested by this procedure via outputs based on a <template/>!
196
196
  </template>
197
197
 
198
198
  - If <getopt-option-next/> is equal to `none`:
199
- Let the *user interactively choose* what to do as the next
200
- step. For this you *MUST* use the custom `custom-dialog` and
201
- *NOT* the `AskUserQuestion` based "user-dialog":
202
199
 
203
- <expand name="custom-dialog">
200
+ In the following, you *MUST* *NOT* use the <user-dialog-tool/>
201
+ tool! Instead, you *MUST* just show a custom output, let the
202
+ user enter input, and then you set the result accordingly.
203
+
204
+ <expand name="custom-dialog" arg1="--no-other">
204
205
  Next Step: How would you like to proceed with the plan?
205
206
  DONE: Stop processing.
206
207
  EDIT: Hand processing off to editing.
@@ -119,10 +119,10 @@ explicitly requested by this procedure via outputs based on a <template/>!
119
119
  Set <instruction><text/></instruction> (set instruction to extracted text).
120
120
  </if>
121
121
 
122
- 5. <elseif condition="<content/> contains '- **WHY**: <text/>' and <instruction/> is NOT empty">
122
+ 5. <if condition="<content/> contains '- **WHY**: <text/>' and <instruction/> is NOT empty">
123
123
  Set <instruction><instruction/>, BECAUSE <text/></instruction>
124
124
  (append extracted text to instruction).
125
- </elseif>
125
+ </if>
126
126
 
127
127
  6. <if condition="<content/> contains 'Created: <text/>'">
128
128
  Set <timestamp-created><text/></timestamp-created> (set
@@ -181,11 +181,12 @@ explicitly requested by this procedure via outputs based on a <template/>!
181
181
  </template>
182
182
 
183
183
  - If <getopt-option-next/> is equal to `none`:
184
- Let the *user interactively choose* what to do as the next
185
- step. For this you *MUST* use the custom `custom-dialog` and
186
- *NOT* the `AskUserQuestion` based "user-dialog":
187
184
 
188
- <expand name="custom-dialog">
185
+ In the following, you *MUST* *NOT* use the <user-dialog-tool/>
186
+ tool! Instead, you *MUST* just show a custom output, let the
187
+ user enter input, and then you set the result accordingly.
188
+
189
+ <expand name="custom-dialog" arg1="--no-other">
189
190
  Next Step: How would you like to proceed with the plan?
190
191
  DONE: Stop processing.
191
192
  EDIT: Hand off plan to editing.
@@ -12,11 +12,16 @@ effort: high
12
12
 
13
13
  @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
14
14
  @${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
15
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
15
16
 
16
17
  <skill name="ase-task-rename">
17
18
  Rename a Task Plan
18
19
  </skill>
19
20
 
21
+ <expand name="getopt" arg1="ase-task-rename">
22
+ $ARGUMENTS
23
+ </expand>
24
+
20
25
  <objective>
21
26
  *Rename* the task plan.
22
27
  </objective>
@@ -32,7 +37,7 @@ explicitly requested by this procedure via outputs based on a <template/>!
32
37
 
33
38
  1. **Determine Task:**
34
39
 
35
- 1. Parse <arguments>$ARGUMENTS</arguments> into a whitespace-separated
40
+ 1. Parse <arguments><getopt-arguments/></arguments> into a whitespace-separated
36
41
  list of tokens. Inherit the always existing <ase-task-id/> and
37
42
  <ase-session-id/> from the current context. Do not output anything.
38
43
 
@@ -57,6 +62,15 @@ explicitly requested by this procedure via outputs based on a <template/>!
57
62
  </template>
58
63
  </if>
59
64
 
65
+ 5. <if condition="<old/> does NOT match the regexp `^[a-zA-Z][a-zA-Z0-9_-]*$` OR <new/> does NOT match the regexp `^[a-zA-Z][a-zA-Z0-9_-]*$`">
66
+ Only output the following <template/> and then immediately
67
+ *STOP* processing the entire current skill:
68
+
69
+ <template>
70
+ ⧉ **ASE**: ☻ skill: **ase-task-rename**, ▶ ERROR: invalid task id (expected `^[a-zA-Z][a-zA-Z0-9_-]*$`)
71
+ </template>
72
+ </if>
73
+
60
74
  2. **Perform Operation**:
61
75
 
62
76
  1. Call the `ase_task_rename(old: "<old/>", new: "<new/>")` tool of the