@rse/ase 0.9.44 → 0.9.45
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-setup.js +50 -0
- package/package.json +1 -1
- 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/agents/ase-code-lint.md +11 -0
- package/plugin/agents/ase-docs-proofread.md +8 -0
- package/plugin/agents/ase-meta-chat.md +13 -7
- package/plugin/agents/ase-meta-search.md +0 -1
- package/plugin/meta/ase-common-task.md +145 -0
- package/plugin/meta/ase-constitution.md +4 -1
- package/plugin/meta/ase-dialog.md +5 -5
- package/plugin/meta/ase-format-arch.md +4 -4
- package/plugin/meta/ase-format-spec.md +23 -23
- package/plugin/meta/ase-format-task.md +1 -1
- package/plugin/meta/ase-persona.md +3 -3
- package/plugin/meta/ase-skill.md +2 -2
- package/plugin/meta/ase-tenets.md +4 -4
- package/plugin/package.json +1 -1
- package/plugin/skills/ase-arch-analyze/SKILL.md +2 -3
- package/plugin/skills/ase-code-craft/SKILL.md +7 -7
- package/plugin/skills/ase-code-lint/SKILL.md +19 -3
- package/plugin/skills/ase-code-refactor/SKILL.md +7 -7
- package/plugin/skills/ase-code-resolve/SKILL.md +6 -6
- package/plugin/skills/ase-docs-distill/SKILL.md +6 -6
- package/plugin/skills/ase-docs-proofread/SKILL.md +18 -3
- package/plugin/skills/ase-meta-changelog/SKILL.md +5 -2
- package/plugin/skills/ase-meta-commit/SKILL.md +4 -4
- package/plugin/skills/ase-meta-compat/SKILL.md +3 -3
- package/plugin/skills/ase-meta-diaboli/SKILL.md +2 -2
- package/plugin/skills/ase-meta-evaluate/SKILL.md +6 -9
- package/plugin/skills/ase-meta-quorum/SKILL.md +33 -4
- package/plugin/skills/ase-meta-search/SKILL.md +1 -1
- package/plugin/skills/ase-meta-steelman/SKILL.md +3 -3
- package/plugin/skills/ase-meta-why/SKILL.md +1 -1
- package/plugin/skills/ase-sync-export/SKILL.md +7 -7
- package/plugin/skills/ase-sync-import/SKILL.md +20 -16
- package/plugin/skills/ase-sync-reconcile/SKILL.md +9 -9
- package/plugin/skills/ase-task-condense/SKILL.md +34 -79
- package/plugin/skills/ase-task-edit/SKILL.md +41 -49
- package/plugin/skills/ase-task-grill/SKILL.md +10 -12
- package/plugin/skills/ase-task-id/SKILL.md +7 -3
- package/plugin/skills/ase-task-implement/SKILL.md +18 -111
- package/plugin/skills/ase-task-list/SKILL.md +3 -0
- package/plugin/skills/ase-task-preflight/SKILL.md +22 -115
- package/plugin/skills/ase-task-reboot/SKILL.md +27 -63
- package/plugin/skills/ase-task-view/SKILL.md +7 -7
|
@@ -31,99 +31,30 @@ with a corresponding, complete *change set*.
|
|
|
31
31
|
</objective>
|
|
32
32
|
|
|
33
33
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-format-task.md
|
|
34
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-common-task.md
|
|
34
35
|
|
|
35
36
|
Procedure
|
|
36
37
|
---------
|
|
37
38
|
|
|
38
39
|
1. **Determine Task:**
|
|
39
40
|
|
|
40
|
-
1. Set <instruction><getopt-arguments/></instruction> initially
|
|
41
|
+
1. Set <instruction><getopt-arguments/></instruction> initially, with any
|
|
42
|
+
leading and trailing whitespace stripped.
|
|
41
43
|
Inherit the always existing <ase-task-id/> from the current context.
|
|
42
44
|
Inherit the always existing <ase-session-id/> from the current context.
|
|
43
45
|
Do not output anything.
|
|
44
46
|
|
|
45
47
|
2. React on task id:
|
|
46
48
|
|
|
47
|
-
|
|
48
|
-
<instruction/> matches the regexp `^[a-zA-Z][a-zA-Z0-9_-]*$`
|
|
49
|
-
">
|
|
50
|
-
Set <ase-task-id><instruction/></ase-task-id> (set task
|
|
51
|
-
id to instruction) and <instruction></instruction> (set
|
|
52
|
-
instruction empty), call the `ase_task_id(id: "<ase-task-id/>",
|
|
53
|
-
session: "<ase-session-id/>")` tool from the `ase` MCP
|
|
54
|
-
server to switch the task, and then only output the
|
|
55
|
-
following <template/>:
|
|
49
|
+
<expand name="task-react-id" arg1="ase-task-implement"></expand>
|
|
56
50
|
|
|
57
|
-
|
|
58
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **task given**
|
|
59
|
-
</template>
|
|
60
|
-
</if>
|
|
61
|
-
|
|
62
|
-
2. <elseif condition="
|
|
63
|
-
<instruction/> has the format `<id/>: <text/>` where
|
|
64
|
-
<id/> matches the regexp `^[a-zA-Z][a-zA-Z0-9_-]*$` and
|
|
65
|
-
<text/> is *empty*
|
|
66
|
-
">
|
|
67
|
-
Set <instruction></instruction> (set instruction to empty)
|
|
68
|
-
and <ase-task-id><id/></ase-task-id> (set task id to
|
|
69
|
-
id) and call the `ase_task_id(id: "<ase-task-id/>", session:
|
|
70
|
-
"<ase-session-id/>")` tool from the `ase` MCP server to
|
|
71
|
-
switch the task, and then only output the following
|
|
72
|
-
<template/>:
|
|
73
|
-
|
|
74
|
-
<template>
|
|
75
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **task given**
|
|
76
|
-
</template>
|
|
77
|
-
</elseif>
|
|
78
|
-
|
|
79
|
-
3. <elseif condition="<instruction/> is NOT empty">
|
|
80
|
-
The argument is neither empty nor a valid task id. As this
|
|
81
|
-
skill only accepts an optional `[<id>]` argument and *never*
|
|
82
|
-
a free-text instruction, only output the following <template/>
|
|
83
|
-
and then immediately *STOP* processing the entire current skill:
|
|
84
|
-
|
|
85
|
-
<template>
|
|
86
|
-
⧉ **ASE**: ☻ skill: **ase-task-implement**, ▶ ERROR: expected single `[<id>]` argument
|
|
87
|
-
</template>
|
|
88
|
-
</elseif>
|
|
89
|
-
|
|
90
|
-
2. **Determine Operation**:
|
|
51
|
+
2. **Determine Operation:**
|
|
91
52
|
|
|
92
53
|
1. Determine the current task plan content:
|
|
93
54
|
|
|
94
|
-
<
|
|
95
|
-
<getopt-option-int-reuse-task/> is equal `true`
|
|
96
|
-
*and* a `ase_task_save(id: '<ase-task-id/>', ...)` tool call
|
|
97
|
-
exists earlier in the current session
|
|
98
|
-
">
|
|
99
|
-
Set <text/> to the `text` argument of the most recent
|
|
100
|
-
`ase_task_save(id: '<ase-task-id/>', ...)` tool call,
|
|
101
|
-
*without* calling `ase_task_load` again. Set <status>plan
|
|
102
|
-
reused</status>. Do not output anything.
|
|
103
|
-
</if>
|
|
104
|
-
<else>
|
|
105
|
-
Call the `ase_task_load(id: "<ase-task-id/>")` tool of the
|
|
106
|
-
`ase` MCP server to load the current task plan content and
|
|
107
|
-
set <text/> to the `text` output field of this `ase_task_load`
|
|
108
|
-
tool call. Do not output anything related to this MCP tool
|
|
109
|
-
call. Set <status>plan loaded</status>.
|
|
110
|
-
</else>
|
|
111
|
-
|
|
112
|
-
- If <text/> starts with `ERROR:` or `WARNING:`:
|
|
113
|
-
Set <content></content> (set content to empty).
|
|
114
|
-
Set <words/> to "0".
|
|
115
|
-
|
|
116
|
-
- If <text/> starts NOT with `ERROR:` and NOT with `WARNING:`:
|
|
117
|
-
Set <content><text/></content> (set content to text).
|
|
118
|
-
Calculate the number of words <words/> of <content/>.
|
|
119
|
-
|
|
120
|
-
Only output the following <template/>:
|
|
121
|
-
|
|
122
|
-
<template>
|
|
123
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **<status/>**
|
|
124
|
-
</template>
|
|
55
|
+
<expand name="task-load-content"></expand>
|
|
125
56
|
|
|
126
|
-
2. If the <content/> is still empty, complain and tell the user to
|
|
57
|
+
2. If the <task-content/> is still empty, complain and tell the user to
|
|
127
58
|
use the `ase-code-resolve`, `ase-code-refactor`, `ase-code-craft`,
|
|
128
59
|
or `ase-task-edit` skills first to create a task plan. Then
|
|
129
60
|
immediately stop processing this skill.
|
|
@@ -134,15 +65,15 @@ Procedure
|
|
|
134
65
|
by modifying the *artifacts* with a corresponding, complete
|
|
135
66
|
*change set*.
|
|
136
67
|
|
|
137
|
-
For this, primarily follow and honor the task plan in <content/>.
|
|
68
|
+
For this, primarily follow and honor the task plan in <task-content/>.
|
|
138
69
|
|
|
139
70
|
Secondarily, derive hints from the optionally existing
|
|
140
71
|
`IMPLEMENTATION DRAFT` section (from skill `ase-task-preflight`)
|
|
141
|
-
in <content/>. But the specification text in <content/> always
|
|
72
|
+
in <task-content/>. But the specification text in <task-content/> always
|
|
142
73
|
overrules the implementation draft in the `IMPLEMENTATION DRAFT`
|
|
143
|
-
section of <content/>.
|
|
74
|
+
section of <task-content/>.
|
|
144
75
|
|
|
145
|
-
<if condition="<content/> does NOT contain a `## VERIFICATION` section heading">
|
|
76
|
+
<if condition="<task-content/> does NOT contain a `## VERIFICATION` section heading">
|
|
146
77
|
The task plan deliberately *omits* the `## VERIFICATION`
|
|
147
78
|
section. You *MUST* therefore *strictly skip* the entire
|
|
148
79
|
verification phase after modifying the source files: do *NOT*
|
|
@@ -162,37 +93,13 @@ Procedure
|
|
|
162
93
|
|
|
163
94
|
1. *Determine next step*:
|
|
164
95
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
- If <head/> matches the regex `^(DONE|DELETE)$`:
|
|
173
|
-
Honor the pre-selected token.
|
|
174
|
-
Set <result><head/></result>.
|
|
175
|
-
|
|
176
|
-
- else:
|
|
177
|
-
Only output the following <template/> and then immediately
|
|
178
|
-
*STOP* processing the entire current skill:
|
|
179
|
-
|
|
180
|
-
<template>
|
|
181
|
-
⧉ **ASE**: ☻ skill: **ase-task-implement**, ▶ ERROR: invalid `--next` token: **<head/>**
|
|
182
|
-
</template>
|
|
183
|
-
|
|
184
|
-
- If <getopt-option-next/> is equal to `none`:
|
|
185
|
-
|
|
186
|
-
In the following, you *MUST* *NOT* use your built-in
|
|
187
|
-
<user-dialog-tool/> tool! Instead, you *MUST* just show a
|
|
188
|
-
custom dialog according to the expanded `custom-dialog`
|
|
189
|
-
definition. You *MUST* closely follow this definition:
|
|
190
|
-
|
|
191
|
-
<expand name="custom-dialog" arg1="--no-other">
|
|
192
|
-
Next Step: How would you like to proceed with the plan?
|
|
193
|
-
DONE: Stop processing and PRESERVE task plan.
|
|
194
|
-
DELETE: Stop processing and DELETE the task plan.
|
|
195
|
-
</expand>
|
|
96
|
+
<expand name="task-next-select"
|
|
97
|
+
arg1="ase-task-implement"
|
|
98
|
+
arg2="DONE|DELETE">
|
|
99
|
+
Next Step: How would you like to proceed with the plan?
|
|
100
|
+
DONE: Stop processing and PRESERVE task plan.
|
|
101
|
+
DELETE: Stop processing and DELETE the task plan.
|
|
102
|
+
</expand>
|
|
196
103
|
|
|
197
104
|
2. Check the tool <result/> and dispatch accordingly:
|
|
198
105
|
|
|
@@ -27,6 +27,9 @@ List Task Plans
|
|
|
27
27
|
*List* all available *task plans* of the current project.
|
|
28
28
|
</objective>
|
|
29
29
|
|
|
30
|
+
Procedure
|
|
31
|
+
---------
|
|
32
|
+
|
|
30
33
|
1. Call the `ase_task_list(verbose: <getopt-option-verbose/>)` tool from
|
|
31
34
|
the `ase` MCP server. The result is a structured object with a
|
|
32
35
|
`tasks` array where each entry has an `id` field, and -- if
|
|
@@ -31,112 +31,43 @@ for a corresponding, *complete source code change set*.
|
|
|
31
31
|
</objective>
|
|
32
32
|
|
|
33
33
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-format-task.md
|
|
34
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-common-task.md
|
|
34
35
|
|
|
35
36
|
Procedure
|
|
36
37
|
---------
|
|
37
38
|
|
|
38
39
|
1. **Determine Task:**
|
|
39
40
|
|
|
40
|
-
1. Set <instruction><getopt-arguments/></instruction> initially
|
|
41
|
+
1. Set <instruction><getopt-arguments/></instruction> initially, with any
|
|
42
|
+
leading and trailing whitespace stripped.
|
|
41
43
|
Inherit the always existing <ase-task-id/> from the current context.
|
|
42
44
|
Inherit the always existing <ase-session-id/> from the current context.
|
|
43
45
|
Do not output anything.
|
|
44
46
|
|
|
45
47
|
2. React on task id:
|
|
46
48
|
|
|
47
|
-
|
|
48
|
-
<instruction/> matches the regexp `^[a-zA-Z][a-zA-Z0-9_-]*$`
|
|
49
|
-
">
|
|
50
|
-
Set <ase-task-id><instruction/></ase-task-id> (set task
|
|
51
|
-
id to instruction) and <instruction></instruction> (set
|
|
52
|
-
instruction empty), call the `ase_task_id(id: "<ase-task-id/>",
|
|
53
|
-
session: "<ase-session-id/>")` tool from the `ase` MCP
|
|
54
|
-
server to switch the task, and then only output the
|
|
55
|
-
following <template/>:
|
|
56
|
-
|
|
57
|
-
<template>
|
|
58
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **task given**
|
|
59
|
-
</template>
|
|
60
|
-
</if>
|
|
61
|
-
|
|
62
|
-
2. <elseif condition="
|
|
63
|
-
<instruction/> has the format `<id/>: <text/>` where
|
|
64
|
-
<id/> matches the regexp `^[a-zA-Z][a-zA-Z0-9_-]*$` and
|
|
65
|
-
<text/> is *empty*
|
|
66
|
-
">
|
|
67
|
-
Set <instruction></instruction> (set instruction to empty)
|
|
68
|
-
and <ase-task-id><id/></ase-task-id> (set task id to
|
|
69
|
-
id) and call the `ase_task_id(id: "<ase-task-id/>", session:
|
|
70
|
-
"<ase-session-id/>")` tool from the `ase` MCP server to
|
|
71
|
-
switch the task, and then only output the following
|
|
72
|
-
<template/>:
|
|
73
|
-
|
|
74
|
-
<template>
|
|
75
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **task given**
|
|
76
|
-
</template>
|
|
77
|
-
</elseif>
|
|
78
|
-
|
|
79
|
-
3. <elseif condition="<instruction/> is NOT empty">
|
|
80
|
-
The argument is neither empty nor a valid task id. As this
|
|
81
|
-
skill only accepts an optional `[<id>]` argument and *never*
|
|
82
|
-
a free-text instruction, only output the following <template/>
|
|
83
|
-
and then immediately *STOP* processing the entire current skill:
|
|
84
|
-
|
|
85
|
-
<template>
|
|
86
|
-
⧉ **ASE**: ☻ skill: **ase-task-preflight**, ▶ ERROR: expected single `[<id>]` argument
|
|
87
|
-
</template>
|
|
88
|
-
</elseif>
|
|
49
|
+
<expand name="task-react-id" arg1="ase-task-preflight"></expand>
|
|
89
50
|
|
|
90
51
|
2. **Determine Operation:**
|
|
91
52
|
|
|
92
53
|
1. Determine the current task plan content:
|
|
93
54
|
|
|
94
|
-
<
|
|
95
|
-
<getopt-option-int-reuse-task/> is equal `true`
|
|
96
|
-
*and* a `ase_task_save(id: '<ase-task-id/>', ...)` tool call
|
|
97
|
-
exists earlier in the current session
|
|
98
|
-
">
|
|
99
|
-
Set <text/> to the `text` argument of the most recent
|
|
100
|
-
`ase_task_save(id: '<ase-task-id/>', ...)` tool call,
|
|
101
|
-
*without* calling `ase_task_load` again. Set <status>plan
|
|
102
|
-
reused</status>. Do not output anything.
|
|
103
|
-
</if>
|
|
104
|
-
<else>
|
|
105
|
-
Call the `ase_task_load(id: "<ase-task-id/>")` tool of the
|
|
106
|
-
`ase` MCP server to load the current task plan content and
|
|
107
|
-
set <text/> to the `text` output field of this `ase_task_load`
|
|
108
|
-
tool call. Do not output anything related to this MCP tool
|
|
109
|
-
call. Set <status>plan loaded</status>.
|
|
110
|
-
</else>
|
|
55
|
+
<expand name="task-load-content"></expand>
|
|
111
56
|
|
|
112
|
-
|
|
113
|
-
Set <content></content> (set content to empty).
|
|
114
|
-
Set <words/> to "0".
|
|
115
|
-
|
|
116
|
-
- If <text/> starts NOT with `ERROR:` and NOT with `WARNING:`:
|
|
117
|
-
Set <content><text/></content> (set content to text).
|
|
118
|
-
Calculate the number of words <words/> of <content/>.
|
|
119
|
-
|
|
120
|
-
Only output the following <template/>:
|
|
121
|
-
|
|
122
|
-
<template>
|
|
123
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **<status/>**
|
|
124
|
-
</template>
|
|
125
|
-
|
|
126
|
-
2. If the <content/> is still empty, complain and tell the user to
|
|
57
|
+
2. If the <task-content/> is still empty, complain and tell the user to
|
|
127
58
|
use the `ase-code-resolve`, `ase-code-refactor`, `ase-code-craft`,
|
|
128
59
|
or `ase-task-edit` skills first to create a task plan. Then
|
|
129
60
|
immediately stop processing this skill.
|
|
130
61
|
|
|
131
62
|
3. **Create Implementation Draft:**
|
|
132
63
|
|
|
133
|
-
1. Perform a *preflight* of the *implementation* of <content/> by creating a
|
|
64
|
+
1. Perform a *preflight* of the *implementation* of <task-content/> by creating a
|
|
134
65
|
draft for a corresponding, *complete artifact change set*
|
|
135
|
-
which *would* fully implement the task plan <content/>. Store
|
|
66
|
+
which *would* fully implement the task plan <task-content/>. Store
|
|
136
67
|
this artifact change set in *unified diff* format in <unified-diff/>.
|
|
137
68
|
|
|
138
69
|
2. Append this artifact change set <unified-diff/> to the end
|
|
139
|
-
of the <content/> with the following <template/>. If a section
|
|
70
|
+
of the <task-content/> with the following <template/>. If a section
|
|
140
71
|
named `## IMPLEMENTATION DRAFT` already exists from a
|
|
141
72
|
previous run of this skill, *replace* this entire existing
|
|
142
73
|
section.
|
|
@@ -151,20 +82,20 @@ Procedure
|
|
|
151
82
|
|
|
152
83
|
</template>
|
|
153
84
|
|
|
154
|
-
3. <if condition="<content/> contains '⚙ Modified:'">
|
|
85
|
+
3. <if condition="<task-content/> contains '⚙ Modified:'">
|
|
155
86
|
Update <timestamp-modified/> with the current time in
|
|
156
87
|
ISO-style format, which has to be determined by calling the
|
|
157
88
|
`ase_timestamp(format: "yyyy-LL-dd HH:mm")` tool of the `ase`
|
|
158
89
|
MCP server and use the `text` field of its response. Update
|
|
159
|
-
the `⚙ Modified: ...` line of <content/> with the new
|
|
90
|
+
the `⚙ Modified: ...` line of <task-content/> with the new
|
|
160
91
|
`⚙ Modified: <timestamp-modified/>`.
|
|
161
92
|
Do not output anything.
|
|
162
93
|
</if>
|
|
163
94
|
|
|
164
95
|
4. Finally, call the `ase_task_save(id: "<ase-task-id/>",
|
|
165
|
-
text: "<content/>")` tool of the `ase` MCP server to save the updated
|
|
96
|
+
text: "<task-content/>")` tool of the `ase` MCP server to save the updated
|
|
166
97
|
task plan content. Calculate the number of words <words/> of
|
|
167
|
-
<content/>. Do not output anything related to this MCP tool call
|
|
98
|
+
<task-content/>. Do not output anything related to this MCP tool call
|
|
168
99
|
except the following <template/>:
|
|
169
100
|
|
|
170
101
|
<template>
|
|
@@ -175,38 +106,14 @@ Procedure
|
|
|
175
106
|
|
|
176
107
|
1. *Determine next step*:
|
|
177
108
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
Honor the pre-selected token.
|
|
187
|
-
Set <result><head/></result>.
|
|
188
|
-
|
|
189
|
-
- else:
|
|
190
|
-
Only output the following <template/> and then immediately
|
|
191
|
-
*STOP* processing the entire current skill:
|
|
192
|
-
|
|
193
|
-
<template>
|
|
194
|
-
⧉ **ASE**: ☻ skill: **ase-task-preflight**, ▶ ERROR: invalid `--next` token: **<head/>**
|
|
195
|
-
</template>
|
|
196
|
-
|
|
197
|
-
- If <getopt-option-next/> is equal to `none`:
|
|
198
|
-
|
|
199
|
-
In the following, you *MUST* *NOT* use your built-in
|
|
200
|
-
<user-dialog-tool/> tool! Instead, you *MUST* just show a
|
|
201
|
-
custom dialog according to the expanded `custom-dialog`
|
|
202
|
-
definition. You *MUST* closely follow this definition:
|
|
203
|
-
|
|
204
|
-
<expand name="custom-dialog" arg1="--no-other">
|
|
205
|
-
Next Step: How would you like to proceed with the plan?
|
|
206
|
-
DONE: Stop processing.
|
|
207
|
-
EDIT: Hand processing off to editing.
|
|
208
|
-
IMPLEMENT: Hand processing off to implementation.
|
|
209
|
-
</expand>
|
|
109
|
+
<expand name="task-next-select"
|
|
110
|
+
arg1="ase-task-preflight"
|
|
111
|
+
arg2="DONE|EDIT|IMPLEMENT">
|
|
112
|
+
Next Step: How would you like to proceed with the plan?
|
|
113
|
+
DONE: Stop processing.
|
|
114
|
+
EDIT: Hand processing off to editing.
|
|
115
|
+
IMPLEMENT: Hand processing off to implementation.
|
|
116
|
+
</expand>
|
|
210
117
|
|
|
211
118
|
2. Check the tool <result/> and dispatch accordingly:
|
|
212
119
|
|
|
@@ -244,6 +151,6 @@ Procedure
|
|
|
244
151
|
the current skill once the `Skill` tool was used.
|
|
245
152
|
|
|
246
153
|
<template>
|
|
247
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan updated -- hand-off to
|
|
154
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan updated -- hand-off to implementation**
|
|
248
155
|
</template>
|
|
249
156
|
|
|
@@ -31,13 +31,15 @@ based on the existing *WHAT* and *WHY*.
|
|
|
31
31
|
</objective>
|
|
32
32
|
|
|
33
33
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-format-task.md
|
|
34
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-common-task.md
|
|
34
35
|
|
|
35
36
|
Procedure
|
|
36
37
|
---------
|
|
37
38
|
|
|
38
39
|
1. **Determine Task:**
|
|
39
40
|
|
|
40
|
-
1. Set <instruction><getopt-arguments/></instruction> initially
|
|
41
|
+
1. Set <instruction><getopt-arguments/></instruction> initially, with any
|
|
42
|
+
leading and trailing whitespace stripped.
|
|
41
43
|
Inherit the always existing <ase-task-id/> from the current context.
|
|
42
44
|
Inherit the always existing <ase-session-id/> from the current context.
|
|
43
45
|
Do not output anything.
|
|
@@ -77,12 +79,12 @@ Procedure
|
|
|
77
79
|
the `text` output field of the `ase_task_load` tool call.
|
|
78
80
|
|
|
79
81
|
- If <text/> starts with `ERROR:` or `WARNING:`:
|
|
80
|
-
Set <content></content> (set content to empty).
|
|
82
|
+
Set <task-content></task-content> (set task content to empty).
|
|
81
83
|
Set <words/> to "0".
|
|
82
84
|
|
|
83
85
|
- If <text/> starts NOT with `ERROR:` and NOT with `WARNING:`:
|
|
84
|
-
Set <content><text/></content> (set content to text).
|
|
85
|
-
Calculate the number of words <words/> of <content/>.
|
|
86
|
+
Set <task-content><text/></task-content> (set task content to text).
|
|
87
|
+
Calculate the number of words <words/> of <task-content/>.
|
|
86
88
|
|
|
87
89
|
Only output the following <template/>:
|
|
88
90
|
|
|
@@ -90,7 +92,7 @@ Procedure
|
|
|
90
92
|
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan loaded**
|
|
91
93
|
</template>
|
|
92
94
|
|
|
93
|
-
2. <if condition="<content/> is empty">
|
|
95
|
+
2. <if condition="<task-content/> is empty">
|
|
94
96
|
Complain and tell the user to use the `ase-code-resolve`,
|
|
95
97
|
`ase-code-refactor`, `ase-code-craft`, or `ase-task-edit` skills
|
|
96
98
|
first to create a task plan. Then immediately stop processing
|
|
@@ -101,24 +103,24 @@ Procedure
|
|
|
101
103
|
|
|
102
104
|
1. Start with <instruction></instruction> (set instruction to empty).
|
|
103
105
|
|
|
104
|
-
2. <if condition="<content/> contains neither '- **WHAT**:' nor '- **WHY**:'">
|
|
105
|
-
Set <instruction><content/></instruction> (set instruction to content).
|
|
106
|
+
2. <if condition="<task-content/> contains neither '- **WHAT**:' nor '- **WHY**:'">
|
|
107
|
+
Set <instruction><task-content/></instruction> (set instruction to task content).
|
|
106
108
|
</if>
|
|
107
109
|
|
|
108
|
-
3. <if condition="<content/> contains '- **WHAT**: <text/>'">
|
|
110
|
+
3. <if condition="<task-content/> contains '- **WHAT**: <text/>'">
|
|
109
111
|
Set <instruction><text/></instruction> (set instruction to extracted text).
|
|
110
112
|
</if>
|
|
111
113
|
|
|
112
|
-
4. <if condition="<content/> contains '- **WHY**: <text/>' and <instruction/> is empty">
|
|
114
|
+
4. <if condition="<task-content/> contains '- **WHY**: <text/>' and <instruction/> is empty">
|
|
113
115
|
Set <instruction><text/></instruction> (set instruction to extracted text).
|
|
114
116
|
</if>
|
|
115
117
|
|
|
116
|
-
5. <if condition="<content/> contains '- **WHY**: <text/>' and <instruction/> is NOT empty">
|
|
118
|
+
5. <if condition="<task-content/> contains '- **WHY**: <text/>' and <instruction/> is NOT empty">
|
|
117
119
|
Set <instruction><instruction/>, BECAUSE <text/></instruction>
|
|
118
120
|
(append extracted text to instruction).
|
|
119
121
|
</if>
|
|
120
122
|
|
|
121
|
-
6. <if condition="<content/> contains '⎈ Created: <text/>'">
|
|
123
|
+
6. <if condition="<task-content/> contains '⎈ Created: <text/>'">
|
|
122
124
|
Set <timestamp-created><text/></timestamp-created> (set
|
|
123
125
|
timestamp-created to extracted text)
|
|
124
126
|
</if>
|
|
@@ -127,8 +129,8 @@ Procedure
|
|
|
127
129
|
The WHAT/WHY extraction yielded no usable text (e.g. a
|
|
128
130
|
`- **WHAT**:` line existed but captured empty text, so the
|
|
129
131
|
whole-content fallback above did not fire). Fall back to the
|
|
130
|
-
full previous plan content: set <instruction><content/></instruction>
|
|
131
|
-
(set instruction to content).
|
|
132
|
+
full previous plan content: set <instruction><task-content/></instruction>
|
|
133
|
+
(set instruction to task content).
|
|
132
134
|
<if condition="<instruction/> is still empty or contains only whitespace">
|
|
133
135
|
There is nothing to reboot from. Only output the following
|
|
134
136
|
<template/> and then immediately *STOP* processing the entire
|
|
@@ -141,30 +143,16 @@ Procedure
|
|
|
141
143
|
</if>
|
|
142
144
|
|
|
143
145
|
8. Create a new plan from scratch and store the result as
|
|
144
|
-
<content/> by closely following the defined plan format
|
|
146
|
+
<task-content/> by closely following the defined plan format
|
|
145
147
|
<format/> and injecting into it all the information from
|
|
146
148
|
the <instruction/> and all decisions you derived from the
|
|
147
149
|
<instruction/>.
|
|
148
150
|
|
|
149
|
-
9.
|
|
150
|
-
`ase` MCP server and use the `text` field of its response for
|
|
151
|
-
<timestamp-modified/> information. If <timestamp-created/> is
|
|
152
|
-
still unset (because the previous <content/> had no `Created:`
|
|
153
|
-
line), set <timestamp-created><timestamp-modified/></timestamp-created>
|
|
154
|
-
(fall back to the modified timestamp). Then insert the current
|
|
155
|
-
<ase-task-id/>, previous <timestamp-created/>, and refreshed
|
|
156
|
-
<timestamp-modified/> information and calculate the number of
|
|
157
|
-
words <words/> of <content/>.
|
|
151
|
+
9. <expand name="task-save-content" arg1="plan rebooted"></expand>
|
|
158
152
|
|
|
159
|
-
10.
|
|
160
|
-
text: "<content/>")` tool of the `ase` MCP server to save the updated
|
|
161
|
-
task plan content. Do not output anything related to this MCP
|
|
162
|
-
call.
|
|
163
|
-
|
|
164
|
-
11. Only output the following <template/> and continue processing:
|
|
153
|
+
10. Only output the following <template/> and continue processing:
|
|
165
154
|
|
|
166
155
|
<template>
|
|
167
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan rebooted**
|
|
168
156
|
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ⇌ instruction: **<instruction/>**, ▶ status: **instruction given**
|
|
169
157
|
</template>
|
|
170
158
|
|
|
@@ -172,39 +160,15 @@ Procedure
|
|
|
172
160
|
|
|
173
161
|
1. *Determine next step*:
|
|
174
162
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
Set <result><head/></result>.
|
|
185
|
-
|
|
186
|
-
- else:
|
|
187
|
-
Only output the following <template/> and then immediately
|
|
188
|
-
*STOP* processing the entire current skill:
|
|
189
|
-
|
|
190
|
-
<template>
|
|
191
|
-
⧉ **ASE**: ☻ skill: **ase-task-reboot**, ▶ ERROR: invalid `--next` token: **<head/>**
|
|
192
|
-
</template>
|
|
193
|
-
|
|
194
|
-
- If <getopt-option-next/> is equal to `none`:
|
|
195
|
-
|
|
196
|
-
In the following, you *MUST* *NOT* use your built-in
|
|
197
|
-
<user-dialog-tool/> tool! Instead, you *MUST* just show a
|
|
198
|
-
custom dialog according to the expanded `custom-dialog`
|
|
199
|
-
definition. You *MUST* closely follow this definition:
|
|
200
|
-
|
|
201
|
-
<expand name="custom-dialog" arg1="--no-other">
|
|
202
|
-
Next Step: How would you like to proceed with the plan?
|
|
203
|
-
DONE: Stop processing.
|
|
204
|
-
EDIT: Hand off plan to editing.
|
|
205
|
-
IMPLEMENT: Hand off plan to implementation.
|
|
206
|
-
PREFLIGHT: Hand off plan to pre-flighting.
|
|
207
|
-
</expand>
|
|
163
|
+
<expand name="task-next-select"
|
|
164
|
+
arg1="ase-task-reboot"
|
|
165
|
+
arg2="DONE|EDIT|IMPLEMENT|PREFLIGHT">
|
|
166
|
+
Next Step: How would you like to proceed with the plan?
|
|
167
|
+
DONE: Stop processing.
|
|
168
|
+
EDIT: Hand off plan to editing.
|
|
169
|
+
IMPLEMENT: Hand off plan to implementation.
|
|
170
|
+
PREFLIGHT: Hand off plan to pre-flighting.
|
|
171
|
+
</expand>
|
|
208
172
|
|
|
209
173
|
2. Check the tool <result/> and dispatch accordingly:
|
|
210
174
|
|
|
@@ -60,7 +60,7 @@ Procedure
|
|
|
60
60
|
output anything related to this MCP tool call.
|
|
61
61
|
|
|
62
62
|
- If <text/> starts with `ERROR:` or `WARNING:`:
|
|
63
|
-
Set <content></content> (set content to empty).
|
|
63
|
+
Set <task-content></task-content> (set task content to empty).
|
|
64
64
|
Only output the following <template/>:
|
|
65
65
|
|
|
66
66
|
<template>
|
|
@@ -68,18 +68,18 @@ Procedure
|
|
|
68
68
|
</template>
|
|
69
69
|
|
|
70
70
|
- If <text/> starts NOT with `ERROR:` and NOT with `WARNING:`:
|
|
71
|
-
Set <content><text/></content> (set content to text).
|
|
72
|
-
Calculate the number of words <words/> of <content/>.
|
|
71
|
+
Set <task-content><text/></task-content> (set task content to text).
|
|
72
|
+
Calculate the number of words <words/> of <task-content/>.
|
|
73
73
|
Only output the following <template/>:
|
|
74
74
|
|
|
75
75
|
<template>
|
|
76
76
|
⧉ **ASE**: ◉ task: **<id/>**, ✪ plan: **<words/>** words, ▶ status: **plan loaded**
|
|
77
77
|
</template>
|
|
78
78
|
|
|
79
|
-
2. <if condition="<content/> is not empty">
|
|
80
|
-
Treat <content/> as *verbatim* Markdown.
|
|
79
|
+
2. <if condition="<task-content/> is not empty">
|
|
80
|
+
Treat <task-content/> as *verbatim* Markdown.
|
|
81
81
|
*Render plan*: Only output the following <template/>. If
|
|
82
|
-
<getopt-option-full/> is *not* `true`, <content/> is longer than
|
|
82
|
+
<getopt-option-full/> is *not* `true`, <task-content/> is longer than
|
|
83
83
|
90 lines, and a `## IMPLEMENTATION DRAFT` section (from the
|
|
84
84
|
companion skill `ase-task-preflight`) exists, replace the entire
|
|
85
85
|
content of the `## IMPLEMENTATION DRAFT` section with `[...]`.
|
|
@@ -88,7 +88,7 @@ Procedure
|
|
|
88
88
|
|
|
89
89
|
<template>
|
|
90
90
|
<ase-tpl-head title="TASK"/>
|
|
91
|
-
<content/>
|
|
91
|
+
<task-content/>
|
|
92
92
|
<ase-tpl-foot title="TASK"/>
|
|
93
93
|
</template>
|
|
94
94
|
</if>
|