@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
@@ -21,7 +21,7 @@ Preflight a Task Plan
21
21
 
22
22
  <expand name="getopt"
23
23
  arg1="ase-task-preflight"
24
- arg2="--next|-n=(none|DONE|EDIT|IMPLEMENT)...">
24
+ arg2="--next|-n=(none|DONE|EDIT|IMPLEMENT)... --int-reuse-task">
25
25
  $ARGUMENTS
26
26
  </expand>
27
27
 
@@ -65,7 +65,7 @@ explicitly requested by this procedure via outputs based on a <template/>!
65
65
  </template>
66
66
  </if>
67
67
 
68
- 2. else <if condition="
68
+ 2. <elseif condition="
69
69
  <instruction/> has the format `<id/>: <text/>` where
70
70
  <id/> matches the regexp `^[a-zA-Z][a-zA-Z0-9_-]*$` and
71
71
  <text/> is *empty*
@@ -80,9 +80,9 @@ explicitly requested by this procedure via outputs based on a <template/>!
80
80
  <template>
81
81
  ⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **task given**
82
82
  </template>
83
- </if>
83
+ </elseif>
84
84
 
85
- 3. else <if condition="<instruction/> is NOT empty">
85
+ 3. <elseif condition="<instruction/> is NOT empty">
86
86
  The argument is neither empty nor a valid task id. As this
87
87
  skill only accepts an optional `[<id>]` argument and *never*
88
88
  a free-text instruction, only output the following <template/>
@@ -91,13 +91,25 @@ explicitly requested by this procedure via outputs based on a <template/>!
91
91
  <template>
92
92
  ⧉ **ASE**: ☻ skill: **ase-task-preflight**, ▶ ERROR: expected single `[<id>]` argument
93
93
  </template>
94
- </if>
94
+ </elseif>
95
95
 
96
96
  2. **Determine Operation:**
97
97
 
98
- 1. Call the `ase_task_load(id: "<ase-task-id/>")` tool of the `ase` MCP
99
- server to load the current task plan content and set <text/> to
100
- the `text` output field of the `ase_task_load` tool call.
98
+ 1. Determine the current task plan content:
99
+
100
+ <if condition="<getopt-option-int-reuse-task/> is equal `true`">
101
+ Set <text/> to the `text` argument of the most recent
102
+ `ase_task_save(id: '<ase-task-id/>', ...)` tool call,
103
+ *without* calling `ase_task_load` again. Set <status>plan
104
+ reused</status>. Do not output anything.
105
+ </if>
106
+ <else>
107
+ Call the `ase_task_load(id: "<ase-task-id/>")` tool of the
108
+ `ase` MCP server to load the current task plan content and
109
+ set <text/> to the `text` output field of this `ase_task_load`
110
+ tool call. Do not output anything related to this MCP tool
111
+ call. Set <status>plan loaded</status>.
112
+ </else>
101
113
 
102
114
  - If <text/> starts with `ERROR:` or `WARNING:`:
103
115
  Set <content></content> (set content to empty).
@@ -110,12 +122,13 @@ explicitly requested by this procedure via outputs based on a <template/>!
110
122
  Only output the following <template/>:
111
123
 
112
124
  <template>
113
- ⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan loaded**
125
+ ⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **<status/>**
114
126
  </template>
115
127
 
116
128
  2. If the <content/> is still empty, complain and tell the user to
117
129
  use the `ase-code-resolve`, `ase-code-refactor`, `ase-code-craft`,
118
- or `ase-task-edit` skills first to create a task plan.
130
+ or `ase-task-edit` skills first to create a task plan. Then
131
+ immediately stop processing this skill.
119
132
 
120
133
  3. **Create Implementation Draft:**
121
134
 
@@ -140,12 +153,12 @@ explicitly requested by this procedure via outputs based on a <template/>!
140
153
 
141
154
  </template>
142
155
 
143
- 3. <if condition="<content/> contains '✎ modified:'">
156
+ 3. <if condition="<content/> contains '⚙ Modified:'">
144
157
  Update <timestamp-modified/> with the current time in
145
158
  ISO-style format, which has to be determined by calling the
146
159
  `ase_timestamp(format: "yyyy-LL-dd HH:mm")` tool of the `ase`
147
160
  MCP server and use the `text` field of its response. Update
148
- <content/> with the new `✎ modified: **<timestamp-modified/>**`.
161
+ <content/> with the new `Modified: <timestamp-modified/>`.
149
162
  Do not output anything.
150
163
  </if>
151
164
 
@@ -202,13 +215,12 @@ explicitly requested by this procedure via outputs based on a <template/>!
202
215
  </template>
203
216
 
204
217
  - If <result/> is `EDIT`:
205
- Set <args></args> (empty).
218
+ Set <args>--int-reuse-task</args>.
206
219
  <if condition="<getopt-option-next/> is not equal `none`">
207
- Set <args>--next <getopt-option-next/></args> (forward
208
- remaining list tokens to the downstream skill).
220
+ Set <args><args/> --next <getopt-option-next/></args>
209
221
  </if>
210
222
  Only output the following <template/> and then call the
211
- tool `Skill(skill: "ase:ase-task-edit", args: <args/>)`
223
+ tool `Skill(skill: "ase:ase-task-edit", args: "<args/>")`
212
224
  to invoke the `ase:ase-task-edit` skill in order to *edit*
213
225
  the updated plan. Immediately stop processing the current
214
226
  skill once the `Skill` tool was used.
@@ -218,13 +230,12 @@ explicitly requested by this procedure via outputs based on a <template/>!
218
230
  </template>
219
231
 
220
232
  - If <result/> is `IMPLEMENT`:
221
- Set <args></args> (empty).
233
+ Set <args>--int-reuse-task</args>.
222
234
  <if condition="<getopt-option-next/> is not equal `none`">
223
- Set <args>--next <getopt-option-next/></args> (forward
224
- remaining list tokens to the downstream skill).
235
+ Set <args><args/> --next <getopt-option-next/></args>
225
236
  </if>
226
237
  Only output the following <template/> and then call the
227
- tool `Skill(skill: "ase:ase-task-implement", args: <args/>)`
238
+ tool `Skill(skill: "ase:ase-task-implement", args: "<args/>")`
228
239
  to invoke the `ase:ase-task-implement` skill in order to
229
240
  *implement* the updated plan. Immediately stop processing
230
241
  the current skill once the `Skill` tool was used.
@@ -233,3 +244,12 @@ explicitly requested by this procedure via outputs based on a <template/>!
233
244
  ⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan updated -- hand-off to implement**
234
245
  </template>
235
246
 
247
+ - If <result/> matches `OTHER: <text/>` or is any other
248
+ unrecognized value:
249
+ Treat it as `DONE` (the plan is already preflighted):
250
+ only output the following <template/> and then *STOP*.
251
+
252
+ <template>
253
+ ⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan updated -- done**
254
+ </template>
255
+
@@ -16,7 +16,7 @@ The `ase-task-preflight` skill performs a *preflight* (dry-run,
16
16
  test-drive) of the *implementation* of a task plan by creating a
17
17
  draft for a corresponding, complete *artifact change set* in
18
18
  *unified diff* format. The draft is appended to the task plan as
19
- a `※ IMPLEMENTATION DRAFT` section (replacing any previous draft).
19
+ an `IMPLEMENTATION DRAFT` section (replacing any previous draft).
20
20
  No source files are modified.
21
21
 
22
22
  After the preflight, the user is asked whether to stop, hand
@@ -21,7 +21,7 @@ Reboot a Task Plan
21
21
 
22
22
  <expand name="getopt"
23
23
  arg1="ase-task-reboot"
24
- arg2="--next|-n=(none|DONE|EDIT)...">
24
+ arg2="--next|-n=(none|DONE|EDIT|IMPLEMENT|PREFLIGHT)...">
25
25
  $ARGUMENTS
26
26
  </expand>
27
27
 
@@ -65,7 +65,7 @@ explicitly requested by this procedure via outputs based on a <template/>!
65
65
  </template>
66
66
  </if>
67
67
 
68
- 2. else <if condition="<instruction/> is NOT empty">
68
+ 2. <elseif condition="<instruction/> is NOT empty">
69
69
  The argument is neither empty nor a valid task id. As this
70
70
  skill only accepts an optional `[<id>]` argument and *never*
71
71
  a free-text instruction, only output the following <template/>
@@ -74,7 +74,7 @@ explicitly requested by this procedure via outputs based on a <template/>!
74
74
  <template>
75
75
  ⧉ **ASE**: ☻ skill: **ase-task-reboot**, ▶ ERROR: expected single `[<id>]` argument
76
76
  </template>
77
- </if>
77
+ </elseif>
78
78
 
79
79
  2. **Determine Operation:**
80
80
 
@@ -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. else <if condition="<content/> contains '- **WHY**: <text/>' and <instruction/> is NOT empty">
122
+ 5. <elseif 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
- </if>
125
+ </elseif>
126
126
 
127
127
  6. <if condition="<content/> contains 'Created: <text/>'">
128
128
  Set <timestamp-created><text/></timestamp-created> (set
@@ -137,7 +137,10 @@ explicitly requested by this procedure via outputs based on a <template/>!
137
137
 
138
138
  8. Call the `ase_timestamp(format: "yyyy-LL-dd HH:mm")` tool of the
139
139
  `ase` MCP server and use the `text` field of its response for
140
- <timestamp-modified/> information. Then insert the current
140
+ <timestamp-modified/> information. If <timestamp-created/> is
141
+ still unset (because the previous <content/> had no `Created:`
142
+ line), set <timestamp-created><timestamp-modified/></timestamp-created>
143
+ (fall back to the modified timestamp). Then insert the current
141
144
  <ase-task-id/>, previous <timestamp-created/>, and refreshed
142
145
  <timestamp-modified/> information and calculate the number of
143
146
  words <words/> of <content/>.
@@ -198,13 +201,12 @@ explicitly requested by this procedure via outputs based on a <template/>!
198
201
  </template>
199
202
 
200
203
  - If <result/> is `EDIT`:
201
- Set <args></args> (empty).
204
+ Set <args>--int-reuse-task</args>.
202
205
  <if condition="<getopt-option-next/> is not equal `none`">
203
- Set <args>--next <getopt-option-next/></args> (forward
204
- remaining list tokens to the downstream skill).
206
+ Set <args><args/> --next <getopt-option-next/></args>
205
207
  </if>
206
208
  Only output the following <template/> and then call the
207
- tool `Skill(skill: "ase:ase-task-edit", args: <args/>)`
209
+ tool `Skill(skill: "ase:ase-task-edit", args: "<args/>")`
208
210
  to invoke the `ase:ase-task-edit` skill in order to *edit*
209
211
  the updated plan. Immediately stop processing the current
210
212
  skill once the `Skill` tool was used.
@@ -214,13 +216,12 @@ explicitly requested by this procedure via outputs based on a <template/>!
214
216
  </template>
215
217
 
216
218
  - If <result/> is `IMPLEMENT`:
217
- Set <args></args> (empty).
219
+ Set <args>--int-reuse-task</args>.
218
220
  <if condition="<getopt-option-next/> is not equal `none`">
219
- Set <args>--next <getopt-option-next/></args> (forward
220
- remaining list tokens to the downstream skill).
221
+ Set <args><args/> --next <getopt-option-next/></args>
221
222
  </if>
222
223
  Only output the following <template/> and then call the
223
- `Skill(skill: "ase:ase-task-implement", args: <args/>)` tool
224
+ `Skill(skill: "ase:ase-task-implement", args: "<args/>")` tool
224
225
  to *apply* the plan.
225
226
 
226
227
  <template>
@@ -228,16 +229,24 @@ explicitly requested by this procedure via outputs based on a <template/>!
228
229
  </template>
229
230
 
230
231
  - If <result/> is `PREFLIGHT`:
231
- Set <args></args> (empty).
232
+ Set <args>--int-reuse-task</args>.
232
233
  <if condition="<getopt-option-next/> is not equal `none`">
233
- Set <args>--next <getopt-option-next/></args> (forward
234
- remaining list tokens to the downstream skill).
234
+ Set <args><args/> --next <getopt-option-next/></args>
235
235
  </if>
236
236
  Only output the following <template/> and then call the
237
- `Skill(skill: "ase:ase-task-preflight", args: <args/>)` tool
237
+ `Skill(skill: "ase:ase-task-preflight", args: "<args/>")` tool
238
238
  to *apply* the plan.
239
239
 
240
240
  <template>
241
241
  ⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan updated -- hand-off to pre-flight**
242
242
  </template>
243
243
 
244
+ - If <result/> matches `OTHER: <text/>` or is any other
245
+ unrecognized value:
246
+ Treat it as `DONE` (the updated plan is already saved):
247
+ only output the following <template/> and then *STOP*.
248
+
249
+ <template>
250
+ ⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan updated -- done**
251
+ </template>
252
+
@@ -33,8 +33,8 @@ explicitly requested by this procedure via outputs based on a <template/>!
33
33
  1. **Determine Task:**
34
34
 
35
35
  1. Parse <arguments>$ARGUMENTS</arguments> into a whitespace-separated
36
- list of tokens. Inherit the always existing <ase-task-id/> from
37
- the current context. Do not output anything.
36
+ list of tokens. Inherit the always existing <ase-task-id/> and
37
+ <ase-session-id/> from the current context. Do not output anything.
38
38
 
39
39
  2. <if condition="<arguments/> contains two tokens">
40
40
  Set <old/> to the first token of <arguments/>.
@@ -65,6 +65,7 @@ explicitly requested by this procedure via outputs based on a <template/>!
65
65
  output anything related to this MCP tool call.
66
66
 
67
67
  - If <text/> starts with `ERROR:` or `WARNING:`:
68
+ Set <renamed/> to `false`.
68
69
  Only output the following <template/>:
69
70
 
70
71
  <template>
@@ -72,13 +73,14 @@ explicitly requested by this procedure via outputs based on a <template/>!
72
73
  </template>
73
74
 
74
75
  - If <text/> starts NOT with `ERROR:` and NOT with `WARNING:`:
76
+ Set <renamed/> to `true`.
75
77
  Only output the following <template/>:
76
78
 
77
79
  <template>
78
80
  ⧉ **ASE**: ◉ task: **<new/>**, ▶ status: **task renamed**
79
81
  </template>
80
82
 
81
- 2. <if condition="<old/> is equal <ase-task-id/>">
83
+ 2. <if condition="<renamed/> is `true` AND <old/> is equal <ase-task-id/>">
82
84
  Set <ase-task-id><new/></ase-task-id>. Call the `ase_task_id(id:
83
85
  "<ase-task-id/>", session: "<ase-session-id/>")` tool from the `ase`
84
86
  MCP server to switch the task to the renamed task. Only output
@@ -7,15 +7,28 @@
7
7
 
8
8
  `ase-task-view`
9
9
  [`--help`|`-h`]
10
+ [`--full`|`-f`]
10
11
  [*id*]
11
12
 
12
13
  ## DESCRIPTION
13
14
 
14
- The `ase-task-view` skill renders the *task plan* identified by *id*
15
- in full, without truncation or summarization. The plan is loaded via
16
- the `ase_task_load` MCP tool and shown between `TASK-PLAN-BEGIN` and
17
- `TASK-PLAN-END` markers. If *id* is omitted, the *current* task id
18
- (inherited from the session context) is used.
15
+ The `ase-task-view` skill renders the *task plan* identified by *id*.
16
+ The plan is loaded via the `ase_task_load` MCP tool and shown framed
17
+ between a `( TASK )` header and footer rule. If *id* is omitted, the
18
+ *current* task id (inherited from the session context) is used.
19
+
20
+ By default, when the plan is longer than 90 lines and contains an
21
+ `IMPLEMENTATION DRAFT` section (produced by `ase-task-preflight`), the
22
+ content of that section is collapsed to `[...]` to keep the view
23
+ compact. The `--full`|`-f` option suppresses this collapsing and renders
24
+ the plan in full, without any truncation or summarization.
25
+
26
+ ## OPTIONS
27
+
28
+ `--full`|`-f`:
29
+ Render the plan in full, without collapsing the `IMPLEMENTATION
30
+ DRAFT` section. By default, that section is replaced with `[...]`
31
+ for plans longer than 90 lines.
19
32
 
20
33
  ## ARGUMENTS
21
34
 
@@ -37,6 +50,12 @@ View a specific task plan:
37
50
  ❯ /ase-task-view hello
38
51
  ```
39
52
 
53
+ View a plan in full, including its `IMPLEMENTATION DRAFT` section:
54
+
55
+ ```text
56
+ ❯ /ase-task-view --full hello
57
+ ```
58
+
40
59
  ## SEE ALSO
41
60
 
42
61
  `ase-task-list`, `ase-task-edit`, `ase-task-id`,