@rse/ase 0.9.58 → 0.9.60
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-service.js +2 -0
- package/dst/ase-setup.js +1 -1
- package/dst/ase-sleep.js +3 -3
- package/dst/ase-statusline.js +1 -1
- package/dst/ase-worktree.js +162 -0
- package/dst/ase.js +2 -0
- 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/agents/ase-code-lint.md +15 -0
- package/plugin/agents/ase-docs-proofread.md +15 -0
- package/plugin/meta/ase-common-code.md +1 -1
- package/plugin/meta/ase-common-task.md +8 -8
- package/plugin/meta/ase-control.md +26 -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-dissect/SKILL.md +30 -9
- package/plugin/skills/ase-code-edit/SKILL.md +472 -0
- package/plugin/skills/ase-code-edit/help.md +127 -0
- package/plugin/skills/ase-code-lint/SKILL.md +26 -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-docs-proofread/SKILL.md +21 -0
- 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 +39 -24
- 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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ase-code-craft
|
|
3
|
-
argument-hint: "[--help|-h] [--auto|-a] [--dry|-d] [--direct|-D] [--quick|-Q] [--next|-n <option>[,...]] [<task-id>:] <feature>"
|
|
3
|
+
argument-hint: "[--help|-h] [--auto|-a] [--dry|-d] [--direct|-D] [--interactive|-i] [--quick|-Q] [--next|-n <option>[,...]] [<task-id>:] <feature>"
|
|
4
4
|
description: >
|
|
5
5
|
Craft Source Code:
|
|
6
6
|
Use when user wants to "create", "add", or "craft" a new feature from scratch.
|
|
@@ -24,7 +24,7 @@ Craft Source Code
|
|
|
24
24
|
|
|
25
25
|
<expand name="getopt"
|
|
26
26
|
arg1="ase-code-craft"
|
|
27
|
-
arg2="--auto|-a --dry|-d --direct|-D --quick|-Q --next|-n=(none|DONE|EDIT|GRILL|PREFLIGHT|IMPLEMENT)...">
|
|
27
|
+
arg2="--auto|-a --dry|-d --direct|-D --interactive|-i --quick|-Q --next|-n=(none|DONE|EDIT|GRILL|PREFLIGHT|IMPLEMENT)...">
|
|
28
28
|
$ARGUMENTS
|
|
29
29
|
</expand>
|
|
30
30
|
|
|
@@ -34,6 +34,11 @@ to `true`, <getopt-option-dry/> to `true`, and <getopt-option-next/> to
|
|
|
34
34
|
`IMPLEMENT,DELETE`. Do not output anything.
|
|
35
35
|
</if>
|
|
36
36
|
|
|
37
|
+
<if condition="<getopt-option-interactive/> is equal `true`">
|
|
38
|
+
The `--interactive`/`-i` flag *implies* the `--direct`/`-D` mode: set
|
|
39
|
+
<getopt-option-direct/> to `true`. Do not output anything.
|
|
40
|
+
</if>
|
|
41
|
+
|
|
37
42
|
<objective>
|
|
38
43
|
From scratch *craft* the following feature:
|
|
39
44
|
<feature><getopt-arguments/></feature>
|
|
@@ -48,8 +53,9 @@ Procedure
|
|
|
48
53
|
|
|
49
54
|
<if condition="<getopt-option-direct/> is not equal to 'true'">
|
|
50
55
|
You *MUST* *NOT* call `Edit`, `Write`, `NotebookEdit`, or any
|
|
51
|
-
filesystem-modifying tool
|
|
52
|
-
|
|
56
|
+
filesystem-modifying tool, nor execute any filesystem-modifying
|
|
57
|
+
shell command, during this entire skill. The *only* permitted way
|
|
58
|
+
to persist artifacts is via the `ase_task_save(...)` MCP tool.
|
|
53
59
|
</if>
|
|
54
60
|
<else>
|
|
55
61
|
The `--direct`/`-D` mode applies the crafting *in place*, so STEP 4
|
|
@@ -162,7 +168,35 @@ crafting actually demands, and you *MUST* *NOT* call
|
|
|
162
168
|
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **changes directly applied**
|
|
163
169
|
</template>
|
|
164
170
|
|
|
165
|
-
3.
|
|
171
|
+
3. <if condition="<getopt-option-interactive/> is equal `true`">
|
|
172
|
+
Enter the *interactive crafting loop*:
|
|
173
|
+
|
|
174
|
+
<while condition="`true`">
|
|
175
|
+
|
|
176
|
+
1. In the following, you *MUST* *NOT* use your built-in
|
|
177
|
+
<user-dialog-tool/> tool! Instead, you *MUST* just show a
|
|
178
|
+
custom dialog according to the expanded `custom-dialog`
|
|
179
|
+
definition. You *MUST* closely follow this definition.
|
|
180
|
+
|
|
181
|
+
Ask the user for the next change with the following
|
|
182
|
+
custom dialog:
|
|
183
|
+
|
|
184
|
+
<expand name="custom-dialog" arg1="--other">
|
|
185
|
+
Next Change: What is the next change to craft?
|
|
186
|
+
DONE: Finish the interactive crafting loop
|
|
187
|
+
</expand>
|
|
188
|
+
|
|
189
|
+
2. If <result/> is `DONE` or `CANCEL`, <break/>.
|
|
190
|
+
|
|
191
|
+
3. Otherwise <result/> has the format `OTHER: <text/>`: set
|
|
192
|
+
<feature/> to <text/>, then directly craft it and report
|
|
193
|
+
it exactly as specified by the items 1 and 2 above
|
|
194
|
+
(including the CHANGELOG.md entry).
|
|
195
|
+
|
|
196
|
+
</while>
|
|
197
|
+
</if>
|
|
198
|
+
|
|
199
|
+
4. Then *IMMEDIATELY* *STOP* all further skill processing. You
|
|
166
200
|
*MUST* *NOT* output anything else in this STEP 4 or after it --
|
|
167
201
|
*independent* of <ase-project-boxing/>, whose exposure rules
|
|
168
202
|
are explicitly *overridden* here. Especially, do not output a
|
|
@@ -207,16 +241,16 @@ crafting actually demands, and you *MUST* *NOT* call
|
|
|
207
241
|
`ase` MCP server and use the `text` field of its response for
|
|
208
242
|
<timestamp-created/> and <timestamp-modified/> information. Then
|
|
209
243
|
insert the current <ase-task-id/>, <timestamp-created/>,
|
|
210
|
-
<timestamp-modified/>, and <task-kind/> information
|
|
211
|
-
the number of words <words/> of <task-content/>.
|
|
244
|
+
<timestamp-modified/>, and <task-kind/> information.
|
|
212
245
|
|
|
213
246
|
3. You then *MUST* *save* the resulting plan content with the
|
|
214
|
-
`ase_task_save(id: "<ase-task-id/>", text: "<task-content/>")
|
|
247
|
+
`ase_task_save(id: "<ase-task-id/>", text: "<task-content/>")`
|
|
248
|
+
MCP tool call only -- *NEVER* by executing a shell command.
|
|
215
249
|
|
|
216
250
|
4. Output a hint with the following <template/>:
|
|
217
251
|
|
|
218
252
|
<template>
|
|
219
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**,
|
|
253
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **plan created**
|
|
220
254
|
</template>
|
|
221
255
|
|
|
222
256
|
5. Directly pass-through control to the next skill:
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
[`--auto`|`-a`]
|
|
11
11
|
[`--dry`|`-d`]
|
|
12
12
|
[`--direct`|`-D`]
|
|
13
|
+
[`--interactive`|`-i`]
|
|
13
14
|
[`--quick`|`-Q`]
|
|
14
15
|
[`--next`|`-n` *option*[,...]]
|
|
15
16
|
[*task-id*:] *feature*
|
|
@@ -51,6 +52,12 @@ entirely and applies the change set to the affected artifacts itself.
|
|
|
51
52
|
`--next` have no effect, as neither approaches are proposed nor a
|
|
52
53
|
plan is composed.
|
|
53
54
|
|
|
55
|
+
`--interactive`|`-i`:
|
|
56
|
+
Craft *interactively*: implies `--direct` and, once the initial
|
|
57
|
+
*feature* has been applied, repeatedly asks for the *next change*
|
|
58
|
+
with a free-text dialog and immediately applies it in place, too,
|
|
59
|
+
until the user stops the loop by answering `DONE`.
|
|
60
|
+
|
|
54
61
|
`--quick`|`-Q`:
|
|
55
62
|
Shorthand alias for `-a -d -n IMPLEMENT,DELETE`: automatically pick
|
|
56
63
|
the recommended feature approach, compose the plan *without* the
|
|
@@ -96,6 +103,12 @@ Craft a feature under a named task and directly hand off to implementation:
|
|
|
96
103
|
❯ /ase-code-craft --next IMPLEMENT auth: add JWT authentication middleware
|
|
97
104
|
```
|
|
98
105
|
|
|
106
|
+
Craft interactively, applying one change after the other in place:
|
|
107
|
+
|
|
108
|
+
```text
|
|
109
|
+
❯ /ase-code-craft -i add a --verbose option to the CLI
|
|
110
|
+
```
|
|
111
|
+
|
|
99
112
|
## SEE ALSO
|
|
100
113
|
|
|
101
114
|
[`ase-code-refactor`](../ase-code-refactor/help.md), [`ase-code-resolve`](../ase-code-resolve/help.md), [`ase-task-edit`](../ase-task-edit/help.md),
|
|
@@ -169,7 +169,28 @@ Procedure
|
|
|
169
169
|
3. <step id="STEP 3: Detect Target Collisions"
|
|
170
170
|
condition="<getopt-option-dry/> is not equal `true`">
|
|
171
171
|
|
|
172
|
-
1. Determine the *
|
|
172
|
+
1. Determine the *worktree directory* of every part by calling the
|
|
173
|
+
`ase_worktree_path(id: "<part-id/>", create: true)` tool of the
|
|
174
|
+
`ase` MCP server once per <part-id/> of <parts/> and capturing
|
|
175
|
+
its output into the <part-dir/> of that part.
|
|
176
|
+
|
|
177
|
+
You *MUST* *NEVER* assemble such a path yourself, as only this
|
|
178
|
+
tool rejects a path leading through a symbolic link, through a
|
|
179
|
+
non-directory, or out of the repository -- a path both `git
|
|
180
|
+
worktree add` and `git worktree remove` would otherwise silently
|
|
181
|
+
follow and thereby write outside the repository.
|
|
182
|
+
|
|
183
|
+
<if condition="this tool call fails for any part">
|
|
184
|
+
Only output the following <template/> and then immediately *STOP*
|
|
185
|
+
processing the entire current skill, leaving the working copy and
|
|
186
|
+
*all* existing worktrees and branches untouched:
|
|
187
|
+
|
|
188
|
+
<template>
|
|
189
|
+
⧉ **ASE**: ✪ skill: **ase-code-dissect**, ▶ ERROR: unsafe worktree directory -- cannot create worktrees
|
|
190
|
+
</template>
|
|
191
|
+
</if>
|
|
192
|
+
|
|
193
|
+
2. Determine the *existing worktrees* and *existing branches* by
|
|
173
194
|
running the corresponding commands (taken exactly as given) and
|
|
174
195
|
capturing their outputs:
|
|
175
196
|
|
|
@@ -177,11 +198,11 @@ Procedure
|
|
|
177
198
|
|
|
178
199
|
`git branch --list`
|
|
179
200
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
201
|
+
3. Set <collisions/> to all <part-id/> of <parts/> for which either
|
|
202
|
+
the worktree directory <part-dir/> or a branch `<part-id/>`
|
|
203
|
+
already exists.
|
|
183
204
|
|
|
184
|
-
|
|
205
|
+
4. <if condition="<collisions/> is not empty AND <getopt-option-force/> is not equal `true`">
|
|
185
206
|
Only output the following <template/> -- with <collisions/>
|
|
186
207
|
rendered as a comma-separated list of code spans -- and then
|
|
187
208
|
immediately *STOP* processing the entire current skill, leaving
|
|
@@ -202,13 +223,13 @@ Procedure
|
|
|
202
223
|
</ase-tpl-hint>
|
|
203
224
|
</if>
|
|
204
225
|
|
|
205
|
-
|
|
226
|
+
5. <if condition="<collisions/> is not empty AND <getopt-option-force/> is equal `true`">
|
|
206
227
|
*Remove* every colliding target by running the corresponding
|
|
207
228
|
commands (taken exactly as given) per colliding <part-id/>, and
|
|
208
229
|
silently ignore the failure of an individual command when the
|
|
209
230
|
corresponding worktree or branch does not exist:
|
|
210
231
|
|
|
211
|
-
`git worktree remove --force "<
|
|
232
|
+
`git worktree remove --force "<part-dir/>"`
|
|
212
233
|
|
|
213
234
|
`git worktree prune`
|
|
214
235
|
|
|
@@ -255,7 +276,7 @@ Procedure
|
|
|
255
276
|
git-ignored, so the worktree itself never shows up as a
|
|
256
277
|
change:
|
|
257
278
|
|
|
258
|
-
`git worktree add "<
|
|
279
|
+
`git worktree add "<part-dir/>"`
|
|
259
280
|
|
|
260
281
|
<if condition="this command fails">
|
|
261
282
|
Only output the following <template/>, then *continue* with
|
|
@@ -270,7 +291,7 @@ Procedure
|
|
|
270
291
|
4. Apply the patch *inside* the freshly created worktree by
|
|
271
292
|
running the corresponding command (taken exactly as given):
|
|
272
293
|
|
|
273
|
-
`git -C "<
|
|
294
|
+
`git -C "<part-dir/>" apply --whitespace=nowarn "<tmp-dir/>/ase-dissect-<part-id/>.patch"`
|
|
274
295
|
|
|
275
296
|
<if condition="this command fails">
|
|
276
297
|
Only output the following <template/>, then *continue* with
|