@rse/ase 0.0.58 → 0.0.59
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-getopt.js +28 -2
- package/dst/ase-hello.js +5 -5
- package/package.json +1 -1
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/.github/plugin/plugin.json +1 -1
- package/plugin/meta/ase-format-adr.md +199 -0
- package/plugin/meta/ase-getopt.md +12 -5
- package/plugin/package.json +1 -1
- package/plugin/skills/ase-arch-discover/SKILL.md +1 -1
- package/plugin/skills/ase-code-craft/SKILL.md +37 -15
- package/plugin/skills/ase-code-craft/help.md +16 -8
- package/plugin/skills/ase-code-explain/SKILL.md +1 -1
- package/plugin/skills/ase-code-insight/SKILL.md +1 -1
- package/plugin/skills/ase-code-refactor/SKILL.md +37 -15
- package/plugin/skills/ase-code-refactor/help.md +16 -8
- package/plugin/skills/ase-code-resolve/SKILL.md +37 -15
- package/plugin/skills/ase-code-resolve/help.md +16 -8
- package/plugin/skills/ase-meta-changes/SKILL.md +1 -1
- package/plugin/skills/ase-meta-chat/SKILL.md +1 -1
- package/plugin/skills/ase-meta-diaboli/SKILL.md +152 -0
- package/plugin/skills/ase-meta-diaboli/help.md +60 -0
- package/plugin/skills/ase-meta-persona/SKILL.md +1 -1
- package/plugin/skills/ase-meta-quorum/SKILL.md +1 -1
- package/plugin/skills/ase-meta-search/SKILL.md +1 -1
- package/plugin/skills/ase-meta-why/SKILL.md +4 -4
- package/plugin/skills/ase-task-delete/SKILL.md +2 -2
- package/plugin/skills/ase-task-edit/SKILL.md +42 -23
- package/plugin/skills/ase-task-edit/help.md +10 -4
- package/plugin/skills/ase-task-grill/SKILL.md +275 -0
- package/plugin/skills/ase-task-grill/help.md +79 -0
- package/plugin/skills/ase-task-id/SKILL.md +1 -1
- package/plugin/skills/ase-task-implement/SKILL.md +31 -9
- package/plugin/skills/ase-task-implement/help.md +8 -4
- package/plugin/skills/ase-task-list/SKILL.md +1 -1
- package/plugin/skills/ase-task-preflight/SKILL.md +40 -13
- package/plugin/skills/ase-task-preflight/help.md +10 -5
- package/plugin/skills/ase-task-reboot/SKILL.md +61 -11
- package/plugin/skills/ase-task-reboot/help.md +13 -6
- package/plugin/skills/ase-task-rename/SKILL.md +1 -1
- package/plugin/skills/ase-task-view/SKILL.md +1 -1
- /package/plugin/meta/{ase-plan.md → ase-format-plan.md} +0 -0
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ase-task-grill
|
|
3
|
+
argument-hint: "[--help|-h] [--next|-n <option>[,...]] [<id>]"
|
|
4
|
+
description: >
|
|
5
|
+
Interview the user relentlessly about the task plan until reaching a
|
|
6
|
+
shared understanding, resolving each branch of the question decision
|
|
7
|
+
tree. Use when the user wants to stress-test a plan, get grilled on
|
|
8
|
+
their plan, or mentions "grill me" or "grill plan".
|
|
9
|
+
user-invocable: true
|
|
10
|
+
disable-model-invocation: false
|
|
11
|
+
effort: high
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
|
|
15
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
|
|
16
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-dialog.md
|
|
17
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
|
|
18
|
+
|
|
19
|
+
<skill name="ase-task-grill">
|
|
20
|
+
Iteratively Grill a Task Plan
|
|
21
|
+
</skill>
|
|
22
|
+
|
|
23
|
+
<expand name="getopt"
|
|
24
|
+
arg1="ase-task-grill"
|
|
25
|
+
arg2="--next|-n=(none|DONE|EDIT)...">
|
|
26
|
+
$ARGUMENTS
|
|
27
|
+
</expand>
|
|
28
|
+
|
|
29
|
+
<objective>
|
|
30
|
+
Interview the user relentlessly about every essential aspect of the
|
|
31
|
+
task plan until reaching a shared understanding.
|
|
32
|
+
</objective>
|
|
33
|
+
|
|
34
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-format-plan.md
|
|
35
|
+
|
|
36
|
+
Procedure
|
|
37
|
+
---------
|
|
38
|
+
|
|
39
|
+
1. **Determine Task:**
|
|
40
|
+
|
|
41
|
+
1. Set <id>$ARGUMENTS</id> initially.
|
|
42
|
+
Inherit the always existing <ase-task-id/> from the current context.
|
|
43
|
+
Inherit the always existing <ase-session-id/> from the current context.
|
|
44
|
+
Do not output anything.
|
|
45
|
+
|
|
46
|
+
2. React on task id:
|
|
47
|
+
|
|
48
|
+
1. <if condition="
|
|
49
|
+
<id/> matches the regexp `^[a-zA-Z][a-zA-Z0-9_-]*$`
|
|
50
|
+
">
|
|
51
|
+
Set <ase-task-id><id/></ase-task-id> (set task id) and
|
|
52
|
+
call the `ase_task_id(id: "<ase-task-id/>", session:
|
|
53
|
+
"<ase-session-id/>")` tool from the `ase` MCP server
|
|
54
|
+
to switch the task, and then only output the following
|
|
55
|
+
<template/>:
|
|
56
|
+
|
|
57
|
+
<template>
|
|
58
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **task given**
|
|
59
|
+
</template>
|
|
60
|
+
</if>
|
|
61
|
+
|
|
62
|
+
2. else <if condition="<id/> is NOT empty">
|
|
63
|
+
The argument is neither empty nor a valid task id. As this
|
|
64
|
+
skill only accepts an optional `[<id>]` argument and *never*
|
|
65
|
+
a free-text instruction, only output the following <template/>
|
|
66
|
+
and then immediately *STOP* processing the entire current skill:
|
|
67
|
+
|
|
68
|
+
<template>
|
|
69
|
+
⧉ **ASE**: ☻ skill: **ase-task-grill**, ▶ **ERROR**: expected single `[<id>]` argument
|
|
70
|
+
</template>
|
|
71
|
+
</if>
|
|
72
|
+
|
|
73
|
+
2. **Determine Task Plan:**
|
|
74
|
+
|
|
75
|
+
1. Call the `ase_task_load(id: "<ase-task-id/>")` tool of the `ase` MCP
|
|
76
|
+
server to load the current task plan content and set <text/> to
|
|
77
|
+
the `text` output field of the `ase_task_load` tool call.
|
|
78
|
+
|
|
79
|
+
- If <text/> starts with `ERROR:` or `WARNING:`:
|
|
80
|
+
Output the following <template/> and then immediately *STOP*
|
|
81
|
+
processing the entire current skill:
|
|
82
|
+
|
|
83
|
+
<template>
|
|
84
|
+
⧉ **ASE**: ☻ skill: **ase-task-grill**, ▶ **<text/>**
|
|
85
|
+
</template>
|
|
86
|
+
|
|
87
|
+
- If <text/> starts NOT with `ERROR:` and NOT with `WARNING:`:
|
|
88
|
+
Set <plan><text/></plan> (set plan to text).
|
|
89
|
+
Calculate the number of words <words/> of <plan/>.
|
|
90
|
+
|
|
91
|
+
Output the following <template/>:
|
|
92
|
+
|
|
93
|
+
<template>
|
|
94
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan loaded**
|
|
95
|
+
</template>
|
|
96
|
+
|
|
97
|
+
2. <if condition="<plan/> is empty">
|
|
98
|
+
Complain and tell the user to use the `ase-code-resolve`,
|
|
99
|
+
`ase-code-refactor`, `ase-code-craft`, or `ase-task-edit` skills
|
|
100
|
+
first to create a task plan. Then immediately stop processing
|
|
101
|
+
this skill.
|
|
102
|
+
</if>
|
|
103
|
+
|
|
104
|
+
3. **Iterate Over Task Plan Aspects:**
|
|
105
|
+
|
|
106
|
+
Interactively interview the user *relentlessly* about every
|
|
107
|
+
*essential aspect* of the task plan in <plan/> *until* reaching a
|
|
108
|
+
shared understanding and no decisions/questions are left open.
|
|
109
|
+
|
|
110
|
+
For this process, determine the <n/> essential aspects <aspect-N/>
|
|
111
|
+
(a one or two word long short identifier like `Foo` or `Bar-Baz`)
|
|
112
|
+
and the corresponding decision/question <question-N/> where a shared
|
|
113
|
+
understanding is required upon.
|
|
114
|
+
|
|
115
|
+
Honor also the following checks for identifying the problematic
|
|
116
|
+
aspects:
|
|
117
|
+
|
|
118
|
+
- **Fuzzy Language**:
|
|
119
|
+
When the user uses vague or overloaded terms instead of a precise
|
|
120
|
+
or canonical terms.
|
|
121
|
+
|
|
122
|
+
- **Conflicting Terminology**:
|
|
123
|
+
When the user uses a term that conflicts with the existing
|
|
124
|
+
terminology in the code base.
|
|
125
|
+
|
|
126
|
+
- **Conflicting Code**:
|
|
127
|
+
When the user states how something works, check whether the
|
|
128
|
+
current code state really agrees.
|
|
129
|
+
|
|
130
|
+
- **Non-Concrete Scenarios**:
|
|
131
|
+
When domain relationships are being discussed, stress-test them
|
|
132
|
+
with specific scenarios. Invent scenarios that probe edge cases
|
|
133
|
+
and force the user to be precise about the boundaries between
|
|
134
|
+
concepts.
|
|
135
|
+
|
|
136
|
+
Then create a decisions/questions tree for them. Walk down each
|
|
137
|
+
branch of this decision tree, resolving dependencies between
|
|
138
|
+
decisions one-by-one. Ask the questions <question-N/> and determine
|
|
139
|
+
corresponding answer <answer-N/>, one at a time.
|
|
140
|
+
|
|
141
|
+
1. For each question <question-N/> in the iteration circle <N/>:
|
|
142
|
+
|
|
143
|
+
1. Output the following <template/>:
|
|
144
|
+
|
|
145
|
+
<template>
|
|
146
|
+
🟠 ASPECT <N/>/<n/>: **<aspect-N/>**, QUESTION: **<question-N/>**
|
|
147
|
+
</template>
|
|
148
|
+
|
|
149
|
+
2. Determine the answer alternatives:
|
|
150
|
+
|
|
151
|
+
1. Check the <plan/> for the answer <answer-N-1/>.
|
|
152
|
+
|
|
153
|
+
2. Check the code base and your world knowledge and
|
|
154
|
+
use this information to find *up to three* grounded
|
|
155
|
+
alternative answers <answer-N-K/> (K={2,3,4}).
|
|
156
|
+
|
|
157
|
+
3. Use an interactive user dialog
|
|
158
|
+
with header <aspect-N/> and question <question-N/>, and
|
|
159
|
+
let the user select the <answer-N/> out of <answer-N-K/>
|
|
160
|
+
(K={1..4}). In this dialog, mark the <answer-N-1/> by
|
|
161
|
+
appending ` ⚝ **CURRENT PLAN** ⚝` to its option name (not the
|
|
162
|
+
description).
|
|
163
|
+
|
|
164
|
+
4. Output the following <template/>:
|
|
165
|
+
|
|
166
|
+
<template>
|
|
167
|
+
🔵 ASPECT <N/>/<n/>: **<aspect-N/>**, ANSWER: **<answer-N/>**
|
|
168
|
+
</template>
|
|
169
|
+
|
|
170
|
+
3. Finally, update the in <plan/> based on all answers <answer-N/>.
|
|
171
|
+
|
|
172
|
+
4. Call the `ase_timestamp(format: "yyyy-LL-dd HH:mm")` tool of the
|
|
173
|
+
`ase` MCP server and use the `text` field of its response for
|
|
174
|
+
<timestamp-modified/> information. Then insert the current
|
|
175
|
+
<ase-task-id/>, previous <timestamp-created/>, and refreshed
|
|
176
|
+
<timestamp-modified/> information and calculate the number of
|
|
177
|
+
words <words/> of <plan/>.
|
|
178
|
+
|
|
179
|
+
5. Call the `ase_task_save(id: "<ase-task-id/>",
|
|
180
|
+
text: "<plan/>")` of the `ase` MCP server to save the updated
|
|
181
|
+
task plan content. Do not output anything related to this MCP
|
|
182
|
+
call.
|
|
183
|
+
|
|
184
|
+
6. Only output the following <template/> and continue processing:
|
|
185
|
+
|
|
186
|
+
<template>
|
|
187
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan updated**
|
|
188
|
+
</template>
|
|
189
|
+
|
|
190
|
+
4. **Decide Next Step:**
|
|
191
|
+
|
|
192
|
+
1. *Determine next step*:
|
|
193
|
+
|
|
194
|
+
- If <getopt-option-next/> is not equal to `none`:
|
|
195
|
+
Treat <getopt-option-next/> as a comma-separated chronological
|
|
196
|
+
list of pre-selected next-step tokens. *Split* it on `,`,
|
|
197
|
+
take the *first* token as <head/>, and store the remaining
|
|
198
|
+
tokens (joined back with `,`, or `none` if empty) into
|
|
199
|
+
<getopt-option-next/> so downstream skills can consume the tail.
|
|
200
|
+
|
|
201
|
+
- If <head/> matches the regex `^(DONE|EDIT|IMPLEMENT|PREFLIGHT)$`:
|
|
202
|
+
Honor the pre-selected token.
|
|
203
|
+
Set <result><head/></result>.
|
|
204
|
+
|
|
205
|
+
- else:
|
|
206
|
+
Only output the following <template/> and then immediately
|
|
207
|
+
*STOP* processing the entire current skill:
|
|
208
|
+
|
|
209
|
+
<template>
|
|
210
|
+
⧉ **ASE**: ☻ skill: **ase-task-grill**, ▶ ERROR: invalid `--next` token: **<head/>**
|
|
211
|
+
</template>
|
|
212
|
+
|
|
213
|
+
- If <getopt-option-next/> is equal to `none`:
|
|
214
|
+
Let the *user interactively choose* what to do as the next step.
|
|
215
|
+
|
|
216
|
+
<expand name="user-dialog">
|
|
217
|
+
Next Step: How would you like to proceed with the plan?
|
|
218
|
+
DONE: Stop processing.
|
|
219
|
+
EDIT: Hand off plan to editing.
|
|
220
|
+
IMPLEMENT: Hand off plan to implementation.
|
|
221
|
+
PREFLIGHT: Hand off plan to pre-flighting.
|
|
222
|
+
</expand>
|
|
223
|
+
|
|
224
|
+
2. Check the tool <result/> and dispatch accordingly:
|
|
225
|
+
|
|
226
|
+
- If <result/> is `DONE` or `CANCEL`:
|
|
227
|
+
Only output the following <template/> and then *STOP*.
|
|
228
|
+
|
|
229
|
+
<template>
|
|
230
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan updated -- done**
|
|
231
|
+
</template>
|
|
232
|
+
|
|
233
|
+
- If <result/> is `EDIT`:
|
|
234
|
+
Set <args></args> (empty).
|
|
235
|
+
<if condition="<getopt-option-next/> is not equal `none`">
|
|
236
|
+
Set <args>--next <getopt-option-next/></args> (forward
|
|
237
|
+
remaining list tokens to the downstream skill).
|
|
238
|
+
</if>
|
|
239
|
+
Only output the following <template/> and then call the
|
|
240
|
+
tool `Skill(skill: "ase:ase-task-edit", args: <args/>)`
|
|
241
|
+
to invoke the `ase:ase-task-edit` skill in order to *edit*
|
|
242
|
+
the updated plan. Immediately stop processing the current
|
|
243
|
+
skill once the `Skill` tool was used.
|
|
244
|
+
|
|
245
|
+
<template>
|
|
246
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan updated -- hand-off to edit**
|
|
247
|
+
</template>
|
|
248
|
+
|
|
249
|
+
- If <result/> is `IMPLEMENT`:
|
|
250
|
+
Set <args></args> (empty).
|
|
251
|
+
<if condition="<getopt-option-next/> is not equal `none`">
|
|
252
|
+
Set <args>--next <getopt-option-next/></args> (forward
|
|
253
|
+
remaining list tokens to the downstream skill).
|
|
254
|
+
</if>
|
|
255
|
+
Only output the following <template/> and then call the
|
|
256
|
+
`Skill(skill: "ase:ase-task-implement", args: <args/>)` tool
|
|
257
|
+
to *apply* the plan.
|
|
258
|
+
|
|
259
|
+
<template>
|
|
260
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan updated -- hand-off to implementation**
|
|
261
|
+
</template>
|
|
262
|
+
|
|
263
|
+
- If <result/> is `PREFLIGHT`:
|
|
264
|
+
Set <args></args> (empty).
|
|
265
|
+
<if condition="<getopt-option-next/> is not equal `none`">
|
|
266
|
+
Set <args>--next <getopt-option-next/></args> (forward
|
|
267
|
+
remaining list tokens to the downstream skill).
|
|
268
|
+
</if>
|
|
269
|
+
Only output the following <template/> and then call the
|
|
270
|
+
`Skill(skill: "ase:ase-task-preflight", args: <args/>)` tool
|
|
271
|
+
to *apply* the plan.
|
|
272
|
+
|
|
273
|
+
<template>
|
|
274
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan updated -- hand-off to pre-flight**
|
|
275
|
+
</template>
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
|
|
2
|
+
## NAME
|
|
3
|
+
|
|
4
|
+
`ase-task-grill` - Iteratively Grill a Task Plan
|
|
5
|
+
|
|
6
|
+
## SYNOPSIS
|
|
7
|
+
|
|
8
|
+
`ase-task-grill`
|
|
9
|
+
[`--help`|`-h`]
|
|
10
|
+
[`--next`|`-n` *option*[,...]]
|
|
11
|
+
[*id*]
|
|
12
|
+
|
|
13
|
+
## DESCRIPTION
|
|
14
|
+
|
|
15
|
+
The `ase-task-grill` skill *relentlessly interviews* the user about
|
|
16
|
+
every *essential aspect* of an existing *task plan* until a *shared
|
|
17
|
+
understanding* is reached and no decisions or questions are left open.
|
|
18
|
+
|
|
19
|
+
The skill identifies the essential aspects of the plan, builds a
|
|
20
|
+
decision tree of the open questions, and walks down each branch
|
|
21
|
+
one-by-one. For each aspect it presents up to four *grounded*
|
|
22
|
+
alternative answers (the current plan plus alternatives derived from
|
|
23
|
+
the code base and world knowledge), marks the current-plan choice, and
|
|
24
|
+
lets the user pick via an interactive dialog. It honors checks for
|
|
25
|
+
*fuzzy language*, *conflicting terminology*, *conflicting code*, and
|
|
26
|
+
*non-concrete scenarios*. Once all aspects are resolved, the plan is
|
|
27
|
+
updated and persisted, and the user is offered a hand-off to editing,
|
|
28
|
+
implementation, or preflight.
|
|
29
|
+
|
|
30
|
+
The task plan is stored in `.ase/tasks/`*id*`/plan.md` files of the
|
|
31
|
+
project and can be alternatively edited with the "`ase task edit` *id*"
|
|
32
|
+
command from outside the agent tool.
|
|
33
|
+
|
|
34
|
+
## OPTIONS
|
|
35
|
+
|
|
36
|
+
`--next`|`-n` *option*[,...]:
|
|
37
|
+
Automatically answer the user dialog for the next step (at the end
|
|
38
|
+
of this skill). *option* is a single token or a *comma-separated
|
|
39
|
+
chronological list* of tokens; the *first* token is consumed by
|
|
40
|
+
this skill and any remaining tokens are *forwarded* (via `--next`)
|
|
41
|
+
to the downstream skill on hand-off so an entire pipeline can be
|
|
42
|
+
pre-scripted in one shot. Recognized tokens at this skill: `none`
|
|
43
|
+
(default, interactive answer required), `DONE` (no next step),
|
|
44
|
+
`EDIT` (hand-over to `ase-task-edit`), `IMPLEMENT` (hand-over to
|
|
45
|
+
`ase-task-implement`), or `PREFLIGHT` (hand-over to
|
|
46
|
+
`ase-task-preflight`).
|
|
47
|
+
|
|
48
|
+
## ARGUMENTS
|
|
49
|
+
|
|
50
|
+
*id*:
|
|
51
|
+
Grill the task with the unique identifier *id* (default: `default`).
|
|
52
|
+
The skill accepts *only* an optional *id* argument and never a
|
|
53
|
+
free-text instruction.
|
|
54
|
+
|
|
55
|
+
## EXAMPLES
|
|
56
|
+
|
|
57
|
+
Grill the current task plan:
|
|
58
|
+
|
|
59
|
+
```text
|
|
60
|
+
❯ /ase-task-grill
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Grill the task plan under id `hello`:
|
|
64
|
+
|
|
65
|
+
```text
|
|
66
|
+
❯ /ase-task-grill hello
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Grill the current task plan and then hand off to editing:
|
|
70
|
+
|
|
71
|
+
```text
|
|
72
|
+
❯ /ase-task-grill --next EDIT
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## SEE ALSO
|
|
76
|
+
|
|
77
|
+
`ase-task-edit`, `ase-task-reboot`, `ase-task-preflight`,
|
|
78
|
+
`ase-task-implement`, `ase-task-view`, `ase-task-list`,
|
|
79
|
+
`ase-task-rename`, `ase-task-delete`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ase-task-implement
|
|
3
|
-
argument-hint: "[--help|-h] [--next|-n <option>] [<id>]"
|
|
3
|
+
argument-hint: "[--help|-h] [--next|-n <option>[,...]] [<id>]"
|
|
4
4
|
description: >
|
|
5
5
|
Implement current or given task plan.
|
|
6
6
|
Use when the user calls to "implement", "realize" or "apply" the
|
|
@@ -21,7 +21,7 @@ Implement a Task Plan
|
|
|
21
21
|
|
|
22
22
|
<expand name="getopt"
|
|
23
23
|
arg1="ase-task-implement"
|
|
24
|
-
arg2="--next|-n=(none|DONE|DELETE)">
|
|
24
|
+
arg2="--next|-n=(none|DONE|DELETE)...">
|
|
25
25
|
$ARGUMENTS
|
|
26
26
|
</expand>
|
|
27
27
|
|
|
@@ -30,6 +30,8 @@ Implement a Task Plan
|
|
|
30
30
|
with a corresponding, complete *change set*.
|
|
31
31
|
</objective>
|
|
32
32
|
|
|
33
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-format-plan.md
|
|
34
|
+
|
|
33
35
|
Procedure
|
|
34
36
|
---------
|
|
35
37
|
|
|
@@ -149,9 +151,24 @@ explicitly requested by this procedure via outputs based on a <template/>!
|
|
|
149
151
|
|
|
150
152
|
1. *Determine next step*:
|
|
151
153
|
|
|
152
|
-
- If <getopt-option-next/>
|
|
153
|
-
|
|
154
|
-
|
|
154
|
+
- If <getopt-option-next/> is not equal to `none`:
|
|
155
|
+
Treat <getopt-option-next/> as a comma-separated chronological
|
|
156
|
+
list of pre-selected next-step tokens. *Split* it on `,`,
|
|
157
|
+
take the *first* token as <head/>, and store the remaining
|
|
158
|
+
tokens (joined back with `,`, or `none` if empty) into
|
|
159
|
+
<getopt-option-next/> so downstream skills can consume the tail.
|
|
160
|
+
|
|
161
|
+
- If <head/> matches the regex `^(DONE|DELETE)$`:
|
|
162
|
+
Honor the pre-selected token.
|
|
163
|
+
Set <result><head/></result>.
|
|
164
|
+
|
|
165
|
+
- else:
|
|
166
|
+
Only output the following <template/> and then immediately
|
|
167
|
+
*STOP* processing the entire current skill:
|
|
168
|
+
|
|
169
|
+
<template>
|
|
170
|
+
⧉ **ASE**: ☻ skill: **ase-task-implement**, ▶ ERROR: invalid `--next` token: **<head/>**
|
|
171
|
+
</template>
|
|
155
172
|
|
|
156
173
|
- If <getopt-option-next/> is equal to `none`:
|
|
157
174
|
Let the *user interactively choose* what to do as the next step.
|
|
@@ -172,11 +189,16 @@ explicitly requested by this procedure via outputs based on a <template/>!
|
|
|
172
189
|
</template>
|
|
173
190
|
|
|
174
191
|
- If <result/> is `DELETE`:
|
|
192
|
+
Set <args></args> (empty).
|
|
193
|
+
<if condition="<getopt-option-next/> is not equal `none`">
|
|
194
|
+
Set <args>--next <getopt-option-next/></args> (forward
|
|
195
|
+
remaining list tokens to the downstream skill).
|
|
196
|
+
</if>
|
|
175
197
|
Only output the following <template/> and then call the
|
|
176
|
-
tool `Skill(skill: "ase:ase-task-delete")`
|
|
177
|
-
`ase:ase-task-delete` skill in order to
|
|
178
|
-
plan. Immediately stop processing the
|
|
179
|
-
`Skill` tool was used.
|
|
198
|
+
tool `Skill(skill: "ase:ase-task-delete", args: <args/>)`
|
|
199
|
+
to invoke the `ase:ase-task-delete` skill in order to
|
|
200
|
+
*delete* the updated plan. Immediately stop processing the
|
|
201
|
+
current skill once the `Skill` tool was used.
|
|
180
202
|
|
|
181
203
|
<template>
|
|
182
204
|
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan implemented -- hand-off to delete task**
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
`ase-task-implement`
|
|
9
9
|
[`--help`|`-h`]
|
|
10
|
-
[`--next`|`-n` *option*]
|
|
10
|
+
[`--next`|`-n` *option*[,...]]
|
|
11
11
|
[*id*]
|
|
12
12
|
|
|
13
13
|
## DESCRIPTION
|
|
@@ -31,9 +31,13 @@ delete the task plan, unless `--next` pre-selects this choice.
|
|
|
31
31
|
|
|
32
32
|
## OPTIONS
|
|
33
33
|
|
|
34
|
-
`--next`|`-n` *option
|
|
35
|
-
Automatically answer the user dialog for the next step
|
|
36
|
-
|
|
34
|
+
`--next`|`-n` *option*[,...]:
|
|
35
|
+
Automatically answer the user dialog for the next step. *option*
|
|
36
|
+
is a single token or a *comma-separated chronological list* of
|
|
37
|
+
tokens; the *first* token is consumed by this skill, and any
|
|
38
|
+
remaining tokens are *forwarded* (via `--next`) to the downstream
|
|
39
|
+
skill so an entire pipeline can be pre-scripted in one shot.
|
|
40
|
+
Recognized tokens at this skill: `none` (default, interactive
|
|
37
41
|
answer required), `DONE` (preserve task plan and stop), or
|
|
38
42
|
`DELETE` (hand off to `ase-task-delete`).
|
|
39
43
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ase-task-preflight
|
|
3
|
-
argument-hint: "[--help|-h] [--next|-n <option>] [<id>]"
|
|
3
|
+
argument-hint: "[--help|-h] [--next|-n <option>[,...]] [<id>]"
|
|
4
4
|
description: >
|
|
5
5
|
Preflight the implementation of current or given task plan.
|
|
6
6
|
Use when the user calls to "preflight", "dry-run" or "test-drive"
|
|
@@ -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)...">
|
|
25
25
|
$ARGUMENTS
|
|
26
26
|
</expand>
|
|
27
27
|
|
|
@@ -30,6 +30,8 @@ Preflight a Task Plan
|
|
|
30
30
|
for a corresponding, *complete source code change set*.
|
|
31
31
|
</objective>
|
|
32
32
|
|
|
33
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-format-plan.md
|
|
34
|
+
|
|
33
35
|
Procedure
|
|
34
36
|
---------
|
|
35
37
|
|
|
@@ -161,9 +163,24 @@ explicitly requested by this procedure via outputs based on a <template/>!
|
|
|
161
163
|
|
|
162
164
|
1. *Determine next step*:
|
|
163
165
|
|
|
164
|
-
- If <getopt-option-next/>
|
|
165
|
-
|
|
166
|
-
|
|
166
|
+
- If <getopt-option-next/> is not equal to `none`:
|
|
167
|
+
Treat <getopt-option-next/> as a comma-separated chronological
|
|
168
|
+
list of pre-selected next-step tokens. *Split* it on `,`,
|
|
169
|
+
take the *first* token as <head/>, and store the remaining
|
|
170
|
+
tokens (joined back with `,`, or `none` if empty) into
|
|
171
|
+
<getopt-option-next/> so downstream skills can consume the tail.
|
|
172
|
+
|
|
173
|
+
- If <head/> matches the regex `^(DONE|EDIT|IMPLEMENT)$`:
|
|
174
|
+
Honor the pre-selected token.
|
|
175
|
+
Set <result><head/></result>.
|
|
176
|
+
|
|
177
|
+
- else:
|
|
178
|
+
Only output the following <template/> and then immediately
|
|
179
|
+
*STOP* processing the entire current skill:
|
|
180
|
+
|
|
181
|
+
<template>
|
|
182
|
+
⧉ **ASE**: ☻ skill: **ase-task-preflight**, ▶ ERROR: invalid `--next` token: **<head/>**
|
|
183
|
+
</template>
|
|
167
184
|
|
|
168
185
|
- If <getopt-option-next/> is equal to `none`:
|
|
169
186
|
Let the *user interactively choose* what to do as the next step.
|
|
@@ -185,22 +202,32 @@ explicitly requested by this procedure via outputs based on a <template/>!
|
|
|
185
202
|
</template>
|
|
186
203
|
|
|
187
204
|
- If <result/> is `EDIT`:
|
|
205
|
+
Set <args></args> (empty).
|
|
206
|
+
<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).
|
|
209
|
+
</if>
|
|
188
210
|
Only output the following <template/> and then call the
|
|
189
|
-
tool `Skill(skill: "ase:ase-task-edit")`
|
|
190
|
-
`ase:ase-task-edit` skill in order to *edit*
|
|
191
|
-
plan. Immediately stop processing the current
|
|
192
|
-
`Skill` tool was used.
|
|
211
|
+
tool `Skill(skill: "ase:ase-task-edit", args: <args/>)`
|
|
212
|
+
to invoke the `ase:ase-task-edit` skill in order to *edit*
|
|
213
|
+
the updated plan. Immediately stop processing the current
|
|
214
|
+
skill once the `Skill` tool was used.
|
|
193
215
|
|
|
194
216
|
<template>
|
|
195
217
|
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan updated -- hand-off to edit**
|
|
196
218
|
</template>
|
|
197
219
|
|
|
198
220
|
- If <result/> is `IMPLEMENT`:
|
|
221
|
+
Set <args></args> (empty).
|
|
222
|
+
<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).
|
|
225
|
+
</if>
|
|
199
226
|
Only output the following <template/> and then call the
|
|
200
|
-
tool `Skill(skill: "ase:ase-task-implement")`
|
|
201
|
-
`ase:ase-task-implement` skill in order to
|
|
202
|
-
updated plan. Immediately stop processing
|
|
203
|
-
once the `Skill` tool was used.
|
|
227
|
+
tool `Skill(skill: "ase:ase-task-implement", args: <args/>)`
|
|
228
|
+
to invoke the `ase:ase-task-implement` skill in order to
|
|
229
|
+
*implement* the updated plan. Immediately stop processing
|
|
230
|
+
the current skill once the `Skill` tool was used.
|
|
204
231
|
|
|
205
232
|
<template>
|
|
206
233
|
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan updated -- hand-off to implement**
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
`ase-task-preflight`
|
|
9
9
|
[`--help`|`-h`]
|
|
10
|
-
[`--next`|`-n` *option*]
|
|
10
|
+
[`--next`|`-n` *option*[,...]]
|
|
11
11
|
[*id*]
|
|
12
12
|
|
|
13
13
|
## DESCRIPTION
|
|
@@ -25,12 +25,17 @@ unless `--next` pre-selects this choice.
|
|
|
25
25
|
|
|
26
26
|
## OPTIONS
|
|
27
27
|
|
|
28
|
-
`--next`|`-n` *option
|
|
29
|
-
Automatically answer the user dialog for the next step
|
|
30
|
-
|
|
28
|
+
`--next`|`-n` *option*[,...]:
|
|
29
|
+
Automatically answer the user dialog for the next step. *option*
|
|
30
|
+
is a single token or a *comma-separated chronological list* of
|
|
31
|
+
tokens; the *first* token is consumed by this skill, and any
|
|
32
|
+
remaining tokens are *forwarded* (via `--next`) to the downstream
|
|
33
|
+
skill so an entire pipeline can be pre-scripted in one shot.
|
|
34
|
+
Recognized tokens at this skill: `none` (default, interactive
|
|
31
35
|
answer required), `DONE` (stop), `EDIT` (hand off to
|
|
32
36
|
`ase-task-edit`), or `IMPLEMENT` (hand off to
|
|
33
|
-
`ase-task-implement`).
|
|
37
|
+
`ase-task-implement`). Example: `--next IMPLEMENT,DONE` runs the
|
|
38
|
+
preflight, hands off to implementation, then exits without asking.
|
|
34
39
|
|
|
35
40
|
## ARGUMENTS
|
|
36
41
|
|