@rse/ase 0.9.59 → 0.9.61
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.
- package/dst/ase-hook.js +45 -5
- package/dst/ase-markdown.js +1 -1
- package/dst/ase-meta.js +1 -1
- package/dst/ase-setup.js +1 -1
- package/dst/ase-statusline.js +1 -1
- package/package.json +12 -13
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/.codex-plugin/plugin.json +1 -1
- package/plugin/.github/plugin/plugin.json +1 -1
- package/plugin/meta/ase-common-code.md +1 -1
- package/plugin/meta/ase-common-task.md +8 -8
- package/plugin/meta/ase-dialog.md +4 -2
- package/plugin/package.json +4 -4
- package/plugin/skills/ase-code-craft/SKILL.md +43 -9
- package/plugin/skills/ase-code-craft/help.md +13 -0
- package/plugin/skills/ase-code-edit/SKILL.md +492 -0
- package/plugin/skills/ase-code-edit/help.md +127 -0
- package/plugin/skills/ase-code-refactor/SKILL.md +7 -6
- package/plugin/skills/ase-code-resolve/SKILL.md +7 -6
- package/plugin/skills/ase-help-skill/catalog.md +1 -0
- package/plugin/skills/ase-sync-import/SKILL.md +2 -1
- package/plugin/skills/ase-sync-reconcile/SKILL.md +3 -1
- package/plugin/skills/ase-task-condense/SKILL.md +13 -13
- package/plugin/skills/ase-task-dissect/SKILL.md +6 -5
- package/plugin/skills/ase-task-edit/SKILL.md +42 -20
- package/plugin/skills/ase-task-edit/help.md +7 -0
- package/plugin/skills/ase-task-grill/SKILL.md +4 -4
- package/plugin/skills/ase-task-implement/SKILL.md +21 -10
- package/plugin/skills/ase-task-implement/help.md +4 -2
- package/plugin/skills/ase-task-preflight/SKILL.md +18 -4
- package/plugin/skills/ase-task-preflight/help.md +5 -1
- package/plugin/skills/ase-task-reboot/SKILL.md +1 -1
- package/plugin/skills/ase-task-view/SKILL.md +1 -2
- package/plugin/package-lock.json +0 -2890
|
@@ -48,8 +48,9 @@ Procedure
|
|
|
48
48
|
|
|
49
49
|
<if condition="<getopt-option-direct/> is not equal to 'true'">
|
|
50
50
|
You *MUST* *NOT* call `Edit`, `Write`, `NotebookEdit`, or any
|
|
51
|
-
filesystem-modifying tool
|
|
52
|
-
|
|
51
|
+
filesystem-modifying tool, nor execute any filesystem-modifying
|
|
52
|
+
shell command, during this entire skill. The *only* permitted way
|
|
53
|
+
to persist artifacts is via the `ase_task_save(...)` MCP tool.
|
|
53
54
|
</if>
|
|
54
55
|
<else>
|
|
55
56
|
The `--direct`/`-D` mode applies the resolution *in place*, so STEP 4
|
|
@@ -257,11 +258,11 @@ resolution actually demands, and you *MUST* *NOT* call
|
|
|
257
258
|
`ase` MCP server and use the `text` field of its response for
|
|
258
259
|
<timestamp-created/> and <timestamp-modified/> information. Then
|
|
259
260
|
insert the current <ase-task-id/>, <timestamp-created/>,
|
|
260
|
-
<timestamp-modified/>, and <task-kind/> information
|
|
261
|
-
the number of words <words/> of <task-content/>.
|
|
261
|
+
<timestamp-modified/>, and <task-kind/> information.
|
|
262
262
|
|
|
263
263
|
3. You then *MUST* *save* the resulting plan content with the
|
|
264
|
-
`ase_task_save(id: "<ase-task-id/>", text: "<task-content/>")
|
|
264
|
+
`ase_task_save(id: "<ase-task-id/>", text: "<task-content/>")`
|
|
265
|
+
MCP tool call only -- *NEVER* by executing a shell command.
|
|
265
266
|
|
|
266
267
|
4. If <problem-id/> is set (i.e. the <problem/> was retrieved from
|
|
267
268
|
`ase_kv_get` in STEP 1.1 via key `ase-issue-<problem-id/>`),
|
|
@@ -273,7 +274,7 @@ resolution actually demands, and you *MUST* *NOT* call
|
|
|
273
274
|
5. Output a hint with the following <template/>:
|
|
274
275
|
|
|
275
276
|
<template>
|
|
276
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**,
|
|
277
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **plan created**
|
|
277
278
|
</template>
|
|
278
279
|
|
|
279
280
|
6. Directly pass through control to the next skill:
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
○ `ase-code-craft`: Craft Source Code
|
|
29
29
|
○ `ase-code-refactor`: Refactor Artifacts
|
|
30
30
|
○ `ase-code-resolve`: Resolve Problem
|
|
31
|
+
○ `ase-code-edit`: Edit Source Code
|
|
31
32
|
○ `ase-sync-import`: Import Foreign Sources into Artifact Set
|
|
32
33
|
○ `ase-sync-reconcile`: Reconcile Artifact Set to Artifact Set
|
|
33
34
|
○ `ase-sync-export`: Export Artifact Set to Side-by-Side Files
|
|
@@ -167,7 +167,8 @@ Procedure
|
|
|
167
167
|
|
|
168
168
|
Apply the generation/update directly to the target artifacts via
|
|
169
169
|
the `Write`/`Edit` tools. For a `TASK` target, apply it via the
|
|
170
|
-
`ase_task_save` tool instead
|
|
170
|
+
`ase_task_save` MCP tool instead -- *NEVER* write a task plan
|
|
171
|
+
file via `Write`/`Edit` or by executing a shell command.
|
|
171
172
|
|
|
172
173
|
6. Report the performed changes with the following <template/>, listing
|
|
173
174
|
one bullet line per generated or updated file (with <file/> its
|
|
@@ -177,7 +177,9 @@ Procedure
|
|
|
177
177
|
parts of an output artifact.
|
|
178
178
|
|
|
179
179
|
Apply the update directly to the output artifacts via the
|
|
180
|
-
`Write`/`Edit` tools.
|
|
180
|
+
`Write`/`Edit` tools. For a `TASK` output, apply it via the
|
|
181
|
+
`ase_task_save` MCP tool instead -- *NEVER* write a task plan
|
|
182
|
+
file via `Write`/`Edit` or by executing a shell command.
|
|
181
183
|
|
|
182
184
|
For each formatted output artifact kind, strictly honor its
|
|
183
185
|
format contract.
|
|
@@ -64,8 +64,8 @@ Set <args></args> (set args to empty).
|
|
|
64
64
|
|
|
65
65
|
<expand name="task-load-content"></expand>
|
|
66
66
|
|
|
67
|
-
Set <
|
|
68
|
-
|
|
67
|
+
Set <content-before><task-content/></content-before> (remember the
|
|
68
|
+
loaded plan content for the strictly-shorter check in step 3).
|
|
69
69
|
|
|
70
70
|
<if condition="the frontmatter of <task-content/> carries a `Created: <text/>` key">
|
|
71
71
|
Set <timestamp-created><text/></timestamp-created> (extract the
|
|
@@ -124,21 +124,21 @@ Set <args></args> (set args to empty).
|
|
|
124
124
|
example. If a shortening would change meaning, *keep the
|
|
125
125
|
longer wording*.
|
|
126
126
|
|
|
127
|
-
2. *Persist only if smaller*:
|
|
128
|
-
|
|
127
|
+
2. *Persist only if smaller*: compare the condensed <task-content/>
|
|
128
|
+
against <content-before/>, without counting words.
|
|
129
129
|
|
|
130
|
-
- <if condition="<
|
|
130
|
+
- <if condition="the condensed <task-content/> is strictly shorter than <content-before/>">
|
|
131
131
|
<expand name="task-save-content" arg1="plan condensed"></expand>
|
|
132
132
|
</if>
|
|
133
133
|
|
|
134
|
-
- <if condition="<
|
|
134
|
+
- <if condition="the condensed <task-content/> is NOT strictly shorter than <content-before/>">
|
|
135
135
|
Do *not* save and do *not* bump the timestamp. Set
|
|
136
|
-
<
|
|
137
|
-
*unchanged* stored plan,
|
|
136
|
+
<task-content><content-before/></task-content> (keep the
|
|
137
|
+
*unchanged* stored plan, discard the condensed one).
|
|
138
138
|
Only output the following <template/>:
|
|
139
139
|
|
|
140
140
|
<template>
|
|
141
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**,
|
|
141
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **plan already condensed**
|
|
142
142
|
</template>
|
|
143
143
|
</if>
|
|
144
144
|
|
|
@@ -162,7 +162,7 @@ Set <args></args> (set args to empty).
|
|
|
162
162
|
Only output the following <template/> and then *STOP*.
|
|
163
163
|
|
|
164
164
|
<template>
|
|
165
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**,
|
|
165
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **plan condensed -- done**
|
|
166
166
|
</template>
|
|
167
167
|
|
|
168
168
|
- If <result/> is `EDIT`:
|
|
@@ -174,7 +174,7 @@ Set <args></args> (set args to empty).
|
|
|
174
174
|
skill once the `Skill` tool was used.
|
|
175
175
|
|
|
176
176
|
<template>
|
|
177
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**,
|
|
177
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **plan condensed -- hand-off to edit**
|
|
178
178
|
</template>
|
|
179
179
|
|
|
180
180
|
- If <result/> is `IMPLEMENT`:
|
|
@@ -184,7 +184,7 @@ Set <args></args> (set args to empty).
|
|
|
184
184
|
to *apply* the plan.
|
|
185
185
|
|
|
186
186
|
<template>
|
|
187
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**,
|
|
187
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **plan condensed -- hand-off to implementation**
|
|
188
188
|
</template>
|
|
189
189
|
|
|
190
190
|
- If <result/> is `PREFLIGHT`:
|
|
@@ -194,5 +194,5 @@ Set <args></args> (set args to empty).
|
|
|
194
194
|
to *apply* the plan.
|
|
195
195
|
|
|
196
196
|
<template>
|
|
197
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**,
|
|
197
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **plan condensed -- hand-off to pre-flight**
|
|
198
198
|
</template>
|
|
@@ -245,13 +245,14 @@ Procedure
|
|
|
245
245
|
|
|
246
246
|
2. Call the `ase_task_save(id: "<part-id/>", text:
|
|
247
247
|
"<part-content/>")` tool of the `ase` MCP server to persist
|
|
248
|
-
the sub-task plan
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
248
|
+
the sub-task plan -- this MCP tool call is the *only*
|
|
249
|
+
permitted way to persist it, *NEVER* write the plan file
|
|
250
|
+
via `Write`/`Edit` or by executing a shell command. Do not
|
|
251
|
+
output anything related to this MCP tool call except the
|
|
252
|
+
following <template/>:
|
|
252
253
|
|
|
253
254
|
<template>
|
|
254
|
-
⧉ **ASE**: ◉ task: **<part-id/>**,
|
|
255
|
+
⧉ **ASE**: ◉ task: **<part-id/>**, ▶ status: **sub-task plan created**
|
|
255
256
|
</template>
|
|
256
257
|
|
|
257
258
|
4. *Report the overall result* with the following <template/>:
|
|
@@ -48,7 +48,17 @@ When refining the plan this way, preserve the overall structure of the
|
|
|
48
48
|
plan and only modify what the user actually requested. Do *not* rewrite
|
|
49
49
|
unrelated sections of the plan.
|
|
50
50
|
|
|
51
|
-
|
|
51
|
+
<if condition="<task-content/> contains a `## IMPLEMENTATION DRAFT`
|
|
52
|
+
section (from the companion skill `ase-task-preflight`) AND the
|
|
53
|
+
applied <instruction/> changed the plan text *outside* of that
|
|
54
|
+
section">
|
|
55
|
+
The implementation draft was created for the *previous* plan text and
|
|
56
|
+
hence is *stale* now. Remove the entire `## IMPLEMENTATION DRAFT`
|
|
57
|
+
section from <task-content/>, remove the value `preflighted` from the
|
|
58
|
+
`Properties:` frontmatter key (dropping the whole key if it carries no
|
|
59
|
+
values anymore), and set <draft-removed>true</draft-removed>.
|
|
60
|
+
</if>
|
|
61
|
+
|
|
52
62
|
Set <task-content-dirty>true</task-content-dirty>.
|
|
53
63
|
</define>
|
|
54
64
|
|
|
@@ -76,8 +86,7 @@ Call the `ase_timestamp(format: "yyyy-LL-dd HH:mm")` tool of the
|
|
|
76
86
|
`ase` MCP server and use the `text` field of its response
|
|
77
87
|
for fresh <timestamp-created/> and <timestamp-modified/>
|
|
78
88
|
information. Then insert the current <ase-task-id/>,
|
|
79
|
-
<timestamp-created/>, and <timestamp-modified/> information
|
|
80
|
-
and calculate the number of words <words/> of <task-content/>.
|
|
89
|
+
<timestamp-created/>, and <timestamp-modified/> information.
|
|
81
90
|
Set <task-content-dirty>true</task-content-dirty>.
|
|
82
91
|
</define>
|
|
83
92
|
|
|
@@ -205,21 +214,20 @@ Set <args></args> (set args to empty).
|
|
|
205
214
|
</else>
|
|
206
215
|
|
|
207
216
|
Set <task-content-dirty>false</task-content-dirty>.
|
|
217
|
+
Set <draft-removed>false</draft-removed>.
|
|
208
218
|
|
|
209
219
|
- If <text/> starts with `ERROR:` or `WARNING:`:
|
|
210
220
|
Silently ignore the MCP error.
|
|
211
221
|
Set <task-content/> to empty.
|
|
212
222
|
Set <task-render/> to empty.
|
|
213
|
-
Set <words/> to "0".
|
|
214
223
|
Do not output anything.
|
|
215
224
|
|
|
216
225
|
- If <text/> starts NOT with `ERROR:` and NOT with `WARNING:`:
|
|
217
226
|
Set <task-content><text/></task-content> (set task content to text).
|
|
218
|
-
Calculate the number of words <words/> of <task-content/>.
|
|
219
227
|
Only output the following <template/>:
|
|
220
228
|
|
|
221
229
|
<template>
|
|
222
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**,
|
|
230
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **<status/>**
|
|
223
231
|
</template>
|
|
224
232
|
|
|
225
233
|
2. <if condition="<task-content/> is empty AND <instruction/> is empty">
|
|
@@ -267,7 +275,7 @@ Set <args></args> (set args to empty).
|
|
|
267
275
|
*STOP* processing this skill:
|
|
268
276
|
|
|
269
277
|
<template>
|
|
270
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**,
|
|
278
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **plan preserved**
|
|
271
279
|
</template>
|
|
272
280
|
|
|
273
281
|
- If <result/> is `OVERWRITE`:
|
|
@@ -277,7 +285,7 @@ Set <args></args> (set args to empty).
|
|
|
277
285
|
Only output the following <template/> and continue processing:
|
|
278
286
|
|
|
279
287
|
<template>
|
|
280
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**,
|
|
288
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **plan overwritten**
|
|
281
289
|
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ⇌ instruction: **<instruction/>**, ▶ status: **instruction given**
|
|
282
290
|
</template>
|
|
283
291
|
|
|
@@ -288,7 +296,7 @@ Set <args></args> (set args to empty).
|
|
|
288
296
|
Only output the following <template/> and continue processing:
|
|
289
297
|
|
|
290
298
|
<template>
|
|
291
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**,
|
|
299
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **plan refined**
|
|
292
300
|
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ⇌ instruction: **<instruction/>**, ▶ status: **instruction given**
|
|
293
301
|
</template>
|
|
294
302
|
|
|
@@ -302,7 +310,7 @@ Set <args></args> (set args to empty).
|
|
|
302
310
|
Only output the following <template/> and continue processing:
|
|
303
311
|
|
|
304
312
|
<template>
|
|
305
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**,
|
|
313
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **plan refined**
|
|
306
314
|
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ⇌ instruction: **<instruction/>**, ▶ status: **instruction given**
|
|
307
315
|
</template>
|
|
308
316
|
</if>
|
|
@@ -321,7 +329,7 @@ Set <args></args> (set args to empty).
|
|
|
321
329
|
|
|
322
330
|
<template>
|
|
323
331
|
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ⇌ instruction: **<instruction/>**, ▶ status: **instruction given**
|
|
324
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**,
|
|
332
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **plan generated**
|
|
325
333
|
</template>
|
|
326
334
|
</if>
|
|
327
335
|
|
|
@@ -349,18 +357,32 @@ Set <args></args> (set args to empty).
|
|
|
349
357
|
persist the current plan -- <task-content/> always is the
|
|
350
358
|
*authoring form* of the plan and hence is persisted *as is* --
|
|
351
359
|
and then set <task-content-dirty>false</task-content-dirty>
|
|
352
|
-
again.
|
|
360
|
+
again. This `ase_task_save` MCP tool call is the *only*
|
|
361
|
+
permitted way to persist the plan -- *NEVER* write the plan
|
|
362
|
+
file via `Write`/`Edit` or by executing a shell command.
|
|
363
|
+
Finally, set <task-render/> to the `text` *output* field
|
|
353
364
|
of this `ase_task_save` tool call -- the rendering-prepared form
|
|
354
365
|
of the just-persisted plan, which is for *display only* and
|
|
355
366
|
*MUST NOT* be confused with the `text` *argument* passed into
|
|
356
367
|
that call -- so the rendering in step 3.3 stays consistent across
|
|
357
|
-
all loop rounds.
|
|
358
|
-
<task-content/>. Do not output anything related to this MCP tool
|
|
368
|
+
all loop rounds. Do not output anything related to this MCP tool
|
|
359
369
|
call except the following <template/>:
|
|
360
370
|
|
|
361
371
|
<template>
|
|
362
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**,
|
|
372
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **plan saved**
|
|
363
373
|
</template>
|
|
374
|
+
|
|
375
|
+
<if condition="<draft-removed/> is equal `true`">
|
|
376
|
+
Directly *after* this <template/>, reset
|
|
377
|
+
<draft-removed>false</draft-removed> and give the corrective
|
|
378
|
+
hint by expanding the following (which, depending on the
|
|
379
|
+
configured <ase-guidance-level/>, may expand into nothing and
|
|
380
|
+
hence emit no output at all):
|
|
381
|
+
|
|
382
|
+
<ase-tpl-hint level="minimal">
|
|
383
|
+
The `IMPLEMENTATION DRAFT` section became stale through the plan change and was removed -- run `/ase-task-preflight` again to re-create the draft for the changed plan.
|
|
384
|
+
</ase-tpl-hint>
|
|
385
|
+
</if>
|
|
364
386
|
</if>
|
|
365
387
|
|
|
366
388
|
3. *Render plan*:
|
|
@@ -459,7 +481,7 @@ Set <args></args> (set args to empty).
|
|
|
459
481
|
and then *STOP*. Do *not* implement the plan.
|
|
460
482
|
|
|
461
483
|
<template>
|
|
462
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**,
|
|
484
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **plan finalized -- done**
|
|
463
485
|
</template>
|
|
464
486
|
|
|
465
487
|
- If <result/> is `GRILL`:
|
|
@@ -471,7 +493,7 @@ Set <args></args> (set args to empty).
|
|
|
471
493
|
to *grill* the finalized plan.
|
|
472
494
|
|
|
473
495
|
<template>
|
|
474
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**,
|
|
496
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **plan finalized -- hand-off to grilling**
|
|
475
497
|
</template>
|
|
476
498
|
|
|
477
499
|
- If <result/> is `PREFLIGHT`:
|
|
@@ -483,7 +505,7 @@ Set <args></args> (set args to empty).
|
|
|
483
505
|
to *apply* the finalized plan.
|
|
484
506
|
|
|
485
507
|
<template>
|
|
486
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**,
|
|
508
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **plan finalized -- hand-off to pre-flight**
|
|
487
509
|
</template>
|
|
488
510
|
|
|
489
511
|
- If <result/> is `IMPLEMENT`:
|
|
@@ -495,7 +517,7 @@ Set <args></args> (set args to empty).
|
|
|
495
517
|
to *apply* the finalized plan.
|
|
496
518
|
|
|
497
519
|
<template>
|
|
498
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**,
|
|
520
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **plan finalized -- hand-off to implementation**
|
|
499
521
|
</template>
|
|
500
522
|
|
|
501
523
|
- If <result/> matches `OTHER: <text/>`:
|
|
@@ -517,6 +539,6 @@ Set <args></args> (set args to empty).
|
|
|
517
539
|
and then *STOP*. Do *not* implement the plan.
|
|
518
540
|
|
|
519
541
|
<template>
|
|
520
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**,
|
|
542
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **plan refinement cancelled**
|
|
521
543
|
</template>
|
|
522
544
|
|
|
@@ -19,6 +19,13 @@ through a *chat-driven loop*. The user steers each round via an
|
|
|
19
19
|
interactive dialog that offers continued refinement, finalization, or
|
|
20
20
|
hand-off to implementation or preflight.
|
|
21
21
|
|
|
22
|
+
When a refinement changes the plan text while an `IMPLEMENTATION
|
|
23
|
+
DRAFT` section (produced by `ase-task-preflight`) exists, that section
|
|
24
|
+
became *stale* and is *removed* -- together with the `preflighted`
|
|
25
|
+
value of the `Properties:` frontmatter key -- and a hint is emitted
|
|
26
|
+
that `ase-task-preflight` has to be run again to re-create the draft
|
|
27
|
+
for the changed plan.
|
|
28
|
+
|
|
22
29
|
## OPTIONS
|
|
23
30
|
|
|
24
31
|
`--plan`|`-p` *option*:
|
|
@@ -193,7 +193,7 @@ Set <args>--int-reuse-task</args>.
|
|
|
193
193
|
without output of any further information.
|
|
194
194
|
|
|
195
195
|
<template>
|
|
196
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**,
|
|
196
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **plan updated -- done**
|
|
197
197
|
</template>
|
|
198
198
|
|
|
199
199
|
- If <result/> is `EDIT`:
|
|
@@ -205,7 +205,7 @@ Set <args>--int-reuse-task</args>.
|
|
|
205
205
|
skill once the `Skill` tool was used.
|
|
206
206
|
|
|
207
207
|
<template>
|
|
208
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**,
|
|
208
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **plan updated -- hand-off to edit**
|
|
209
209
|
</template>
|
|
210
210
|
|
|
211
211
|
- If <result/> is `PREFLIGHT`:
|
|
@@ -215,7 +215,7 @@ Set <args>--int-reuse-task</args>.
|
|
|
215
215
|
to *apply* the plan.
|
|
216
216
|
|
|
217
217
|
<template>
|
|
218
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**,
|
|
218
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **plan updated -- hand-off to pre-flight**
|
|
219
219
|
</template>
|
|
220
220
|
|
|
221
221
|
- If <result/> is `IMPLEMENT`:
|
|
@@ -225,5 +225,5 @@ Set <args>--int-reuse-task</args>.
|
|
|
225
225
|
to *apply* the plan.
|
|
226
226
|
|
|
227
227
|
<template>
|
|
228
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**,
|
|
228
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **plan updated -- hand-off to implementation**
|
|
229
229
|
</template>
|
|
@@ -162,13 +162,21 @@ Procedure
|
|
|
162
162
|
by modifying the *artifacts* with a corresponding, complete
|
|
163
163
|
*change set*.
|
|
164
164
|
|
|
165
|
-
|
|
165
|
+
<if condition="<task-content/> contains an `## IMPLEMENTATION DRAFT` section (from skill `ase-task-preflight`)">
|
|
166
|
+
Take over the implementation draft of this section *1:1* as
|
|
167
|
+
the change set: the draft is assumed to have been *reviewed*
|
|
168
|
+
by the user, so you *MUST* *NOT* create a fresh implementation
|
|
169
|
+
from scratch. Apply the draft *verbatim* and *adjust* only
|
|
170
|
+
those parts which actually *fail* -- because a hunk no longer
|
|
171
|
+
applies to meanwhile drifted artifacts, or because the
|
|
172
|
+
verification phase rejects the result. For such adjusted parts,
|
|
173
|
+
and for aspects the draft does not cover at all, follow the
|
|
174
|
+
task plan in <task-content/>.
|
|
175
|
+
</if>
|
|
166
176
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
overrules the implementation draft in the `IMPLEMENTATION DRAFT`
|
|
171
|
-
section of <task-content/>.
|
|
177
|
+
<if condition="<task-content/> contains NO `## IMPLEMENTATION DRAFT` section">
|
|
178
|
+
Follow and honor the task plan in <task-content/>.
|
|
179
|
+
</if>
|
|
172
180
|
|
|
173
181
|
<if condition="<worktree-dir/> is not empty">
|
|
174
182
|
The change set *MUST* land *exclusively inside* the worktree
|
|
@@ -224,12 +232,15 @@ Procedure
|
|
|
224
232
|
|
|
225
233
|
Finally call the `ase_task_save(id: "<ase-task-id/>", text:
|
|
226
234
|
"<task-content/>")` tool of the `ase` MCP server to persist the
|
|
227
|
-
updated task plan.
|
|
235
|
+
updated task plan. This `ase_task_save` MCP tool call is the
|
|
236
|
+
*only* permitted way to persist the plan -- *NEVER* write the
|
|
237
|
+
plan file via `Write`/`Edit` or by executing a shell command.
|
|
238
|
+
Do not output anything in this sub-step.
|
|
228
239
|
|
|
229
240
|
3. Only output the following <template/>:
|
|
230
241
|
|
|
231
242
|
<template>
|
|
232
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**,
|
|
243
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **plan implemented**
|
|
233
244
|
</template>
|
|
234
245
|
|
|
235
246
|
4. <if condition="<worktree-dir/> is not empty">
|
|
@@ -260,7 +271,7 @@ Procedure
|
|
|
260
271
|
Only output the following <template/> and then *STOP*.
|
|
261
272
|
|
|
262
273
|
<template>
|
|
263
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**,
|
|
274
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **plan implemented -- done**
|
|
264
275
|
</template>
|
|
265
276
|
|
|
266
277
|
- If <result/> is `DELETE`:
|
|
@@ -275,6 +286,6 @@ Procedure
|
|
|
275
286
|
current skill once the `Skill` tool was used.
|
|
276
287
|
|
|
277
288
|
<template>
|
|
278
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**,
|
|
289
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **plan implemented -- hand-off to delete task**
|
|
279
290
|
</template>
|
|
280
291
|
|
|
@@ -16,8 +16,10 @@
|
|
|
16
16
|
The `ase-task-implement` skill performs the *final implementation* of
|
|
17
17
|
a task plan by modifying the corresponding *artifacts* with a complete
|
|
18
18
|
*change set*. The plan is loaded and any optional `IMPLEMENTATION DRAFT`
|
|
19
|
-
section produced by `ase-task-preflight` is
|
|
20
|
-
|
|
19
|
+
section produced by `ase-task-preflight` is taken over *1:1* as the
|
|
20
|
+
change set -- the draft is assumed to be user-reviewed, so no fresh
|
|
21
|
+
implementation is created and only parts which actually fail are
|
|
22
|
+
adjusted, guided by the plain plan content. Afterwards the plan's
|
|
21
23
|
`Properties:` frontmatter key gains the value `implemented` (plus
|
|
22
24
|
`verified`, if the verification phase actually ran and succeeded), and
|
|
23
25
|
its `Status:` key becomes `COMPLETED` if the change set was applied
|
|
@@ -72,6 +72,18 @@ Procedure
|
|
|
72
72
|
which *would* fully implement the task plan <task-content/>. Store
|
|
73
73
|
this artifact change set in *unified diff* format in <unified-diff/>.
|
|
74
74
|
|
|
75
|
+
Create this draft with the *same rigor* as the final
|
|
76
|
+
implementation of the companion skill `ase-task-implement`,
|
|
77
|
+
because that skill later takes the draft over *1:1* -- the user
|
|
78
|
+
is assumed to review the draft in between. Hence *read* the
|
|
79
|
+
current content of *every* artifact the draft touches before
|
|
80
|
+
drafting its hunks, so all context lines match the artifacts
|
|
81
|
+
*exactly* and the diff would apply *cleanly*, and honor the
|
|
82
|
+
task plan and the internalized tenets just as the final
|
|
83
|
+
implementation would. Only the actual modification of the
|
|
84
|
+
artifacts and the verification phase are deferred to
|
|
85
|
+
`ase-task-implement`.
|
|
86
|
+
|
|
75
87
|
2. Append this artifact change set <unified-diff/> to the end
|
|
76
88
|
of the <task-content/> with the following <template/>. If a section
|
|
77
89
|
named `## IMPLEMENTATION DRAFT` already exists from a
|
|
@@ -112,12 +124,14 @@ Procedure
|
|
|
112
124
|
|
|
113
125
|
4. Finally, call the `ase_task_save(id: "<ase-task-id/>",
|
|
114
126
|
text: "<task-content/>")` tool of the `ase` MCP server to save the updated
|
|
115
|
-
task plan content.
|
|
116
|
-
|
|
127
|
+
task plan content. This `ase_task_save` MCP tool call is the
|
|
128
|
+
*only* permitted way to persist the plan -- *NEVER* write the
|
|
129
|
+
plan file via `Write`/`Edit` or by executing a shell command.
|
|
130
|
+
Do not output anything related to this MCP tool call
|
|
117
131
|
except the following <template/>:
|
|
118
132
|
|
|
119
133
|
<template>
|
|
120
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**,
|
|
134
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **plan updated**
|
|
121
135
|
</template>
|
|
122
136
|
|
|
123
137
|
4. **Decide Next Step:**
|
|
@@ -139,7 +153,7 @@ Procedure
|
|
|
139
153
|
Only output the following <template/> and then *STOP*.
|
|
140
154
|
|
|
141
155
|
<template>
|
|
142
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**,
|
|
156
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **plan updated -- done**
|
|
143
157
|
</template>
|
|
144
158
|
|
|
145
159
|
- If <result/> is `EDIT`:
|
|
@@ -18,7 +18,11 @@ draft for a corresponding, complete *artifact change set* in
|
|
|
18
18
|
*unified diff* format. The draft is appended to the task plan as
|
|
19
19
|
an `IMPLEMENTATION DRAFT` section (replacing any previous draft) and
|
|
20
20
|
the plan's `Properties:` frontmatter key gains the value `preflighted`.
|
|
21
|
-
No source files are modified.
|
|
21
|
+
No source files are modified. The draft is produced under the *same
|
|
22
|
+
tenets* and with the *same rigor* as a final implementation, because
|
|
23
|
+
`ase-task-implement` later takes it over *1:1* after user review --
|
|
24
|
+
only the actual artifact modification and the verification phase
|
|
25
|
+
are deferred.
|
|
22
26
|
|
|
23
27
|
The *kind of change* stated by the plan's `Kind:` frontmatter key
|
|
24
28
|
(`CRAFTING`, `REFACTORING`, or `RESOLVING`) selects which
|
|
@@ -139,7 +139,7 @@ Procedure
|
|
|
139
139
|
Only output the following <template/> and then *STOP*.
|
|
140
140
|
|
|
141
141
|
<template>
|
|
142
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**,
|
|
142
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **plan rebooted -- done**
|
|
143
143
|
</template>
|
|
144
144
|
|
|
145
145
|
- If <result/> is `EDIT`:
|
|
@@ -71,11 +71,10 @@ Procedure
|
|
|
71
71
|
|
|
72
72
|
- If <text/> starts NOT with `ERROR:` and NOT with `WARNING:`:
|
|
73
73
|
Set <task-content><text/></task-content> (set task content to text).
|
|
74
|
-
Calculate the number of words <words/> of <task-content/>.
|
|
75
74
|
Only output the following <template/>:
|
|
76
75
|
|
|
77
76
|
<template>
|
|
78
|
-
⧉ **ASE**: ◉ task: **<id/>**,
|
|
77
|
+
⧉ **ASE**: ◉ task: **<id/>**, ▶ status: **plan loaded**
|
|
79
78
|
</template>
|
|
80
79
|
|
|
81
80
|
2. <if condition="<task-content/> is not empty">
|