@rse/ase 0.9.6 → 0.9.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dst/ase-getopt.js +11 -1
- package/dst/ase-markdown.js +235 -0
- package/dst/ase-service.js +2 -0
- package/dst/ase-task.js +22 -20
- package/package.json +6 -6
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/.github/plugin/plugin.json +1 -1
- package/plugin/agents/ase-docs-proofread.md +2 -2
- package/plugin/meta/ase-constitution.md +7 -0
- package/plugin/meta/ase-control.md +24 -3
- package/plugin/meta/ase-format-task.md +14 -14
- package/plugin/meta/ase-getopt.md +2 -1
- package/plugin/meta/ase-skill.md +28 -9
- package/plugin/package.json +3 -3
- package/plugin/skills/ase-arch-analyze/SKILL.md +88 -89
- package/plugin/skills/ase-arch-discover/SKILL.md +18 -9
- package/plugin/skills/ase-code-analyze/SKILL.md +6 -5
- package/plugin/skills/ase-code-craft/SKILL.md +47 -40
- package/plugin/skills/ase-code-craft/help.md +2 -2
- 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-lint/SKILL.md +16 -8
- package/plugin/skills/ase-code-refactor/SKILL.md +47 -40
- package/plugin/skills/ase-code-refactor/help.md +2 -2
- package/plugin/skills/ase-code-resolve/SKILL.md +48 -40
- package/plugin/skills/ase-code-resolve/help.md +2 -2
- package/plugin/skills/ase-docs-distill/SKILL.md +1 -1
- package/plugin/skills/ase-docs-distill/help.md +3 -3
- package/plugin/skills/ase-docs-proofread/SKILL.md +22 -13
- package/plugin/skills/ase-meta-brainstorm/SKILL.md +25 -6
- package/plugin/skills/ase-meta-brainstorm/help.md +6 -10
- package/plugin/skills/ase-meta-diff/SKILL.md +5 -4
- package/plugin/skills/ase-meta-diff/help.md +10 -11
- package/plugin/skills/ase-meta-evaluate/SKILL.md +10 -9
- package/plugin/skills/ase-meta-quorum/SKILL.md +15 -5
- package/plugin/skills/ase-meta-review/SKILL.md +3 -3
- package/plugin/skills/ase-meta-review/help.md +3 -3
- package/plugin/skills/ase-meta-search/SKILL.md +9 -8
- package/plugin/skills/ase-meta-steelman/SKILL.md +1 -1
- package/plugin/skills/ase-meta-why/SKILL.md +16 -10
- package/plugin/skills/ase-task-condense/SKILL.md +32 -17
- package/plugin/skills/ase-task-condense/help.md +1 -1
- package/plugin/skills/ase-task-delete/SKILL.md +6 -3
- package/plugin/skills/ase-task-edit/SKILL.md +58 -36
- package/plugin/skills/ase-task-edit/help.md +3 -3
- package/plugin/skills/ase-task-grill/SKILL.md +59 -24
- package/plugin/skills/ase-task-id/SKILL.md +11 -2
- package/plugin/skills/ase-task-implement/SKILL.md +38 -17
- package/plugin/skills/ase-task-implement/help.md +1 -1
- package/plugin/skills/ase-task-list/SKILL.md +1 -1
- package/plugin/skills/ase-task-preflight/SKILL.md +42 -22
- package/plugin/skills/ase-task-preflight/help.md +1 -1
- package/plugin/skills/ase-task-reboot/SKILL.md +31 -22
- package/plugin/skills/ase-task-rename/SKILL.md +5 -3
- package/plugin/skills/ase-task-view/SKILL.md +19 -8
- package/plugin/skills/ase-task-view/help.md +24 -5
- package/dst/ase-bash.js +0 -618
- package/dst/ase-hello.js +0 -24
package/plugin/meta/ase-skill.md
CHANGED
|
@@ -25,6 +25,18 @@ Skill Output
|
|
|
25
25
|
Unicode characters, and the potential reduction of prose according
|
|
26
26
|
to the currently defined persona style.
|
|
27
27
|
|
|
28
|
+
- *IMPORTANT*: For *Final-Message-Only Display* ("focus mode"):
|
|
29
|
+
some agent harnesses show the user only the *final* text message of
|
|
30
|
+
a turn and *hide* all text emitted *between* tool calls. If your
|
|
31
|
+
harness instructions indicate such a mode (e.g. *Claude Code* with
|
|
32
|
+
"focus mode" enabled), you *MUST* repeat *all* <template/> outputs
|
|
33
|
+
emitted since the last shown final text message -- *verbatim*, in
|
|
34
|
+
their *original order*, and each only *once* -- at the *top* of the
|
|
35
|
+
next final text message (i.e. the text after the last tool call of
|
|
36
|
+
a turn). Never *drop* or *summarize* a <template/> output just
|
|
37
|
+
because it would land between tool calls. If no such display mode
|
|
38
|
+
is indicated, do *not* repeat anything.
|
|
39
|
+
|
|
28
40
|
- *IMPORTANT*: The active *persona style* (see `ase-persona.md`) *MUST* be applied
|
|
29
41
|
to all *free-text placeholders* within <template/> sections - i.e. any placeholder
|
|
30
42
|
whose content you author yourself (such as `<description/>`, `<title/>`, `<objective/>`,
|
|
@@ -98,14 +110,21 @@ Skill Sequential Processing
|
|
|
98
110
|
- *IMPORTANT*: For each given <flow/>, you *MUST* use the
|
|
99
111
|
`TaskCreate` tool to create a corresponding set of processing steps.
|
|
100
112
|
|
|
101
|
-
Each `<step id="xxx" [...]
|
|
102
|
-
subject: "xxx", description: "xxx"
|
|
103
|
-
words, use the text of the `id` attribute of <step/>
|
|
104
|
-
|
|
113
|
+
Each `<step id="xxx" [...]>...</step>` corresponds to a
|
|
114
|
+
`TaskCreate({ subject: "xxx", description: "xxx" })`. In other
|
|
115
|
+
words, use the text of the `id` attribute of <step/> exactly
|
|
116
|
+
*as-is* for both the `subject`, and the `description` fields of
|
|
105
117
|
`TaskCreate`.
|
|
106
118
|
|
|
107
|
-
|
|
108
|
-
|
|
119
|
+
For speed, emit *all* `TaskCreate` calls together in a *single* turn
|
|
120
|
+
(issued in parallel), *not* one-per-turn sequentially. Do *not*
|
|
121
|
+
rely on the call order to establish the step order, as the parallel
|
|
122
|
+
results carry no guaranteed ordering. Instead, in the *immediately
|
|
123
|
+
following* turn, establish the strict order explicitly by chaining
|
|
124
|
+
the created tasks with `TaskUpdate`: for each <step/> after the
|
|
125
|
+
first one, call `TaskUpdate({ taskId: "<this/>", addBlockedBy:
|
|
126
|
+
[ "<prev/>" ] })` so that every step (with `taskId` <this/>) is
|
|
127
|
+
blocked by its predecessor step (with `taskId` <prev/>).
|
|
109
128
|
|
|
110
129
|
- *IMPORTANT*: For each <step/> you *MUST* use the `TaskUpdate` tool
|
|
111
130
|
for updating its status during processing.
|
|
@@ -208,7 +227,7 @@ Template Patterns
|
|
|
208
227
|
</template>
|
|
209
228
|
|
|
210
229
|
- When `<ase-tpl-head title="<title/>"/>` should be expanded, use
|
|
211
|
-
(where <bar/> = "─" x (70 -
|
|
230
|
+
(where <bar/> = "─" x (70 - 16 - length("<title/>")), i.e., <bar/> is
|
|
212
231
|
the "─" character repeated (70 - 16 - length("<title/>")) times):
|
|
213
232
|
|
|
214
233
|
<template>
|
|
@@ -226,8 +245,8 @@ Template Patterns
|
|
|
226
245
|
</template>
|
|
227
246
|
|
|
228
247
|
- When `<ase-tpl-foot title="<title/>"/>` should be expanded, use
|
|
229
|
-
(where <bar/> = "─" x (70 -
|
|
230
|
-
the "─" character repeated (
|
|
248
|
+
(where <bar/> = "─" x (70 - 16 - length("<title/>")), i.e., <bar/> is
|
|
249
|
+
the "─" character repeated (71 - 16 - length("<title/>")) times):
|
|
231
250
|
|
|
232
251
|
<template>
|
|
233
252
|
|
package/plugin/package.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"homepage": "http://github.com/rse/ase",
|
|
7
7
|
"repository": { "url": "git+https://github.com/rse/ase.git", "type": "git" },
|
|
8
8
|
"bugs": { "url": "http://github.com/rse/ase/issues" },
|
|
9
|
-
"version": "0.9.
|
|
9
|
+
"version": "0.9.8",
|
|
10
10
|
"license": "GPL-3.0-only",
|
|
11
11
|
"author": {
|
|
12
12
|
"name": "Dr. Ralf S. Engelschall",
|
|
@@ -15,11 +15,11 @@
|
|
|
15
15
|
},
|
|
16
16
|
"devDependencies": {
|
|
17
17
|
"@rse/stx": "1.1.5",
|
|
18
|
-
"markdownlint": "0.
|
|
18
|
+
"markdownlint": "0.41.0",
|
|
19
19
|
"markdownlint-cli2": "0.22.1",
|
|
20
20
|
"eslint": "10.4.1",
|
|
21
21
|
"@eslint/markdown": "8.0.2",
|
|
22
|
-
"eslint-markdown": "0.
|
|
22
|
+
"eslint-markdown": "0.11.0"
|
|
23
23
|
},
|
|
24
24
|
"engines": {
|
|
25
25
|
"npm": ">=10.0.0",
|
|
@@ -7,94 +7,94 @@ disable-model-invocation: false
|
|
|
7
7
|
model: opus
|
|
8
8
|
effort: high
|
|
9
9
|
allowed-tools:
|
|
10
|
-
- "Bash(wc
|
|
11
|
-
- "Bash(ls
|
|
12
|
-
- "Bash(tree
|
|
13
|
-
- "Bash(file
|
|
14
|
-
- "Bash(du
|
|
15
|
-
- "Bash(stat
|
|
16
|
-
- "Bash(grep
|
|
17
|
-
- "Bash(awk
|
|
18
|
-
- "Bash(head
|
|
19
|
-
- "Bash(tail
|
|
20
|
-
- "Bash(sort
|
|
21
|
-
- "Bash(uniq
|
|
22
|
-
- "Bash(cat
|
|
23
|
-
- "Bash(cut
|
|
24
|
-
- "Bash(tr
|
|
25
|
-
- "Bash(nl
|
|
26
|
-
- "Bash(column
|
|
27
|
-
- "Bash(diff
|
|
28
|
-
- "Bash(cmp
|
|
29
|
-
- "Bash(jq
|
|
30
|
-
- "Bash(cloc
|
|
31
|
-
- "Bash(tokei
|
|
32
|
-
- "Bash(scc
|
|
33
|
-
- "Bash(basename
|
|
34
|
-
- "Bash(dirname
|
|
35
|
-
- "Bash(realpath
|
|
36
|
-
- "Bash(readlink
|
|
37
|
-
- "Bash(pwd
|
|
38
|
-
- "Bash(which
|
|
39
|
-
- "Bash(whereis
|
|
40
|
-
- "Bash(type
|
|
41
|
-
- "Bash(namei
|
|
42
|
-
- "Bash(git log
|
|
43
|
-
- "Bash(git show
|
|
44
|
-
- "Bash(git diff
|
|
45
|
-
- "Bash(git blame
|
|
46
|
-
- "Bash(git ls-files
|
|
47
|
-
- "Bash(git ls-tree
|
|
48
|
-
- "Bash(git grep
|
|
49
|
-
- "Bash(git status
|
|
50
|
-
- "Bash(git rev-list
|
|
51
|
-
- "Bash(git rev-parse
|
|
52
|
-
- "Bash(git for-each-ref
|
|
53
|
-
- "Bash(git reflog
|
|
54
|
-
- "Bash(git cat-file
|
|
55
|
-
- "Bash(git config --get
|
|
56
|
-
- "Bash(git config --list
|
|
57
|
-
- "Bash(git remote
|
|
58
|
-
- "Bash(git branch
|
|
59
|
-
- "Bash(git tag --list
|
|
60
|
-
- "Bash(git describe
|
|
61
|
-
- "Bash(git shortlog
|
|
62
|
-
- "Bash(find * -name
|
|
63
|
-
- "Bash(find * -type
|
|
64
|
-
- "Bash(find * -path
|
|
65
|
-
- "Bash(find * -maxdepth
|
|
66
|
-
- "Bash(find * -mindepth
|
|
67
|
-
- "Bash(find * -size
|
|
68
|
-
- "Bash(find * -mtime
|
|
69
|
-
- "Bash(find * -newer
|
|
70
|
-
- "Bash(git diff
|
|
71
|
-
- "Bash(git diff
|
|
72
|
-
- "Bash(git diff
|
|
73
|
-
- "Bash(git diff
|
|
74
|
-
- "Bash(git diff
|
|
75
|
-
- "Bash(git log
|
|
76
|
-
- "Bash(git log
|
|
77
|
-
- "Bash(git log
|
|
78
|
-
- "Bash(git show
|
|
79
|
-
- "Bash(git show
|
|
80
|
-
- "Bash(git grep
|
|
81
|
-
- "Bash(git grep
|
|
82
|
-
- "Bash(git ls-files
|
|
83
|
-
- "Bash(git ls-files
|
|
84
|
-
- "Bash(git ls-files
|
|
85
|
-
- "Bash(grep
|
|
86
|
-
- "Bash(grep
|
|
87
|
-
- "Bash(grep
|
|
88
|
-
- "Bash(grep
|
|
89
|
-
- "Bash(cat
|
|
90
|
-
- "Bash(cat
|
|
91
|
-
- "Bash(cat
|
|
92
|
-
- "Bash(cat
|
|
93
|
-
- "Bash(find
|
|
94
|
-
- "Bash(find
|
|
95
|
-
- "Bash(awk
|
|
96
|
-
- "Bash(sort
|
|
97
|
-
- "Bash(sort
|
|
10
|
+
- "Bash(wc *)"
|
|
11
|
+
- "Bash(ls *)"
|
|
12
|
+
- "Bash(tree *)"
|
|
13
|
+
- "Bash(file *)"
|
|
14
|
+
- "Bash(du *)"
|
|
15
|
+
- "Bash(stat *)"
|
|
16
|
+
- "Bash(grep *)"
|
|
17
|
+
- "Bash(awk *)"
|
|
18
|
+
- "Bash(head *)"
|
|
19
|
+
- "Bash(tail *)"
|
|
20
|
+
- "Bash(sort *)"
|
|
21
|
+
- "Bash(uniq *)"
|
|
22
|
+
- "Bash(cat *)"
|
|
23
|
+
- "Bash(cut *)"
|
|
24
|
+
- "Bash(tr *)"
|
|
25
|
+
- "Bash(nl *)"
|
|
26
|
+
- "Bash(column *)"
|
|
27
|
+
- "Bash(diff *)"
|
|
28
|
+
- "Bash(cmp *)"
|
|
29
|
+
- "Bash(jq *)"
|
|
30
|
+
- "Bash(cloc *)"
|
|
31
|
+
- "Bash(tokei *)"
|
|
32
|
+
- "Bash(scc *)"
|
|
33
|
+
- "Bash(basename *)"
|
|
34
|
+
- "Bash(dirname *)"
|
|
35
|
+
- "Bash(realpath *)"
|
|
36
|
+
- "Bash(readlink *)"
|
|
37
|
+
- "Bash(pwd *)"
|
|
38
|
+
- "Bash(which *)"
|
|
39
|
+
- "Bash(whereis *)"
|
|
40
|
+
- "Bash(type *)"
|
|
41
|
+
- "Bash(namei *)"
|
|
42
|
+
- "Bash(git log *)"
|
|
43
|
+
- "Bash(git show *)"
|
|
44
|
+
- "Bash(git diff *)"
|
|
45
|
+
- "Bash(git blame *)"
|
|
46
|
+
- "Bash(git ls-files *)"
|
|
47
|
+
- "Bash(git ls-tree *)"
|
|
48
|
+
- "Bash(git grep *)"
|
|
49
|
+
- "Bash(git status *)"
|
|
50
|
+
- "Bash(git rev-list *)"
|
|
51
|
+
- "Bash(git rev-parse *)"
|
|
52
|
+
- "Bash(git for-each-ref *)"
|
|
53
|
+
- "Bash(git reflog *)"
|
|
54
|
+
- "Bash(git cat-file *)"
|
|
55
|
+
- "Bash(git config --get *)"
|
|
56
|
+
- "Bash(git config --list *)"
|
|
57
|
+
- "Bash(git remote *)"
|
|
58
|
+
- "Bash(git branch *)"
|
|
59
|
+
- "Bash(git tag --list *)"
|
|
60
|
+
- "Bash(git describe *)"
|
|
61
|
+
- "Bash(git shortlog *)"
|
|
62
|
+
- "Bash(find * -name *)"
|
|
63
|
+
- "Bash(find * -type *)"
|
|
64
|
+
- "Bash(find * -path *)"
|
|
65
|
+
- "Bash(find * -maxdepth *)"
|
|
66
|
+
- "Bash(find * -mindepth *)"
|
|
67
|
+
- "Bash(find * -size *)"
|
|
68
|
+
- "Bash(find * -mtime *)"
|
|
69
|
+
- "Bash(find * -newer *)"
|
|
70
|
+
- "Bash(git diff * | awk *)"
|
|
71
|
+
- "Bash(git diff * | grep *)"
|
|
72
|
+
- "Bash(git diff * | head *)"
|
|
73
|
+
- "Bash(git diff * | tail *)"
|
|
74
|
+
- "Bash(git diff * | wc *)"
|
|
75
|
+
- "Bash(git log * | head *)"
|
|
76
|
+
- "Bash(git log * | grep *)"
|
|
77
|
+
- "Bash(git log * | wc *)"
|
|
78
|
+
- "Bash(git show * | head *)"
|
|
79
|
+
- "Bash(git show * | grep *)"
|
|
80
|
+
- "Bash(git grep * | head *)"
|
|
81
|
+
- "Bash(git grep * | wc *)"
|
|
82
|
+
- "Bash(git ls-files * | grep *)"
|
|
83
|
+
- "Bash(git ls-files * | head *)"
|
|
84
|
+
- "Bash(git ls-files * | wc *)"
|
|
85
|
+
- "Bash(grep * | head *)"
|
|
86
|
+
- "Bash(grep * | sort *)"
|
|
87
|
+
- "Bash(grep * | wc *)"
|
|
88
|
+
- "Bash(grep * | sort * | uniq *)"
|
|
89
|
+
- "Bash(cat * | grep *)"
|
|
90
|
+
- "Bash(cat * | awk *)"
|
|
91
|
+
- "Bash(cat * | head *)"
|
|
92
|
+
- "Bash(cat * | wc *)"
|
|
93
|
+
- "Bash(find * | head *)"
|
|
94
|
+
- "Bash(find * | wc *)"
|
|
95
|
+
- "Bash(awk * | head *)"
|
|
96
|
+
- "Bash(sort * | uniq *)"
|
|
97
|
+
- "Bash(sort * | head *)"
|
|
98
98
|
- "Agent"
|
|
99
99
|
- "Skill"
|
|
100
100
|
---
|
|
@@ -437,7 +437,6 @@ interface quality, quality attributes, and architecture governance.
|
|
|
437
437
|
Finally, output the following <template/> to give a final hint:
|
|
438
438
|
|
|
439
439
|
<template>
|
|
440
|
-
⧉ **ASE**: ☻ skill: **<skill-name/>**, ▶ status: **skill finished**
|
|
441
440
|
⧉ **ASE**: ↪ hint: **For deeper analysis, suggestions on solution approaches and then final source code changes, use `/ase-code-resolve P{n}` or `/ase-code-resolve T{n}` in the same or even a different session.**
|
|
442
441
|
</template>
|
|
443
442
|
</step>
|
|
@@ -86,6 +86,15 @@ for the technology stack to *provide* the *needed functionality*
|
|
|
86
86
|
</step>
|
|
87
87
|
|
|
88
88
|
3. <step id="STEP 3: Discover Components">
|
|
89
|
+
- If <stack/> is "Unknown", the technology stack could not be
|
|
90
|
+
determined and no component discovery backend is available.
|
|
91
|
+
Inform the user with just the following <template/> and then
|
|
92
|
+
*STOP* the entire flow (do not perform any further steps):
|
|
93
|
+
|
|
94
|
+
<template>
|
|
95
|
+
<ase-tpl-bullet-normal/> **RESULT**: technology stack could not be determined -- component discovery is only supported for JavaScript, TypeScript, Java, and Kotlin projects.
|
|
96
|
+
</template>
|
|
97
|
+
|
|
89
98
|
- From <stack/> and <functionality/>, derive essential keywords
|
|
90
99
|
<keyword-L/> (L=1-M), which allow you to search for suitable
|
|
91
100
|
components.
|
|
@@ -122,7 +131,7 @@ for the technology stack to *provide* the *needed functionality*
|
|
|
122
131
|
their unique Maven coordinates <package-K/> of the form
|
|
123
132
|
`groupId:artifactId`.
|
|
124
133
|
|
|
125
|
-
- Use the shell command `curl -s 'https://search.maven.org/solrsearch/select?q=<keyword-1
|
|
134
|
+
- Use the shell command `curl -s 'https://search.maven.org/solrsearch/select?q=<keyword-1/>+[...]+<keyword-M/>&rows=<getopt-option-limit/>&wt=json'`
|
|
126
135
|
to *specifically* discover an additional set of a maximum
|
|
127
136
|
of <getopt-option-limit/> *Maven packages* <component-K/> and at least their
|
|
128
137
|
unique Maven coordinates <package-K/> (i.e. `<g/>:<a/>` from
|
|
@@ -167,11 +176,11 @@ for the technology stack to *provide* the *needed functionality*
|
|
|
167
176
|
<template>
|
|
168
177
|
<ase-tpl-bullet-normal/> **COMPONENT HINTS**:
|
|
169
178
|
|
|
170
|
-
| ⚑ *Component*
|
|
171
|
-
|
|
|
172
|
-
| **<
|
|
179
|
+
| ⚑ *Component* | ▣ *Package* | ⚖ *Hint* |
|
|
180
|
+
| :------------ | :------------- | :-------- |
|
|
181
|
+
| **<name-1/>** | `<package-1/>` | <info-1/> |
|
|
173
182
|
[...]
|
|
174
|
-
| **<
|
|
183
|
+
| **<name-N/>** | `<package-N/>` | <info-N/> |
|
|
175
184
|
</template>
|
|
176
185
|
|
|
177
186
|
- Display the discovered components as a Markdown *table*
|
|
@@ -180,11 +189,11 @@ for the technology stack to *provide* the *needed functionality*
|
|
|
180
189
|
<template>
|
|
181
190
|
<ase-tpl-bullet-normal/> **COMPONENT RANKING**:
|
|
182
191
|
|
|
183
|
-
| ⚑ *Component*
|
|
184
|
-
|
|
|
185
|
-
| **<
|
|
192
|
+
| ⚑ *Component* | ▣ *Package* | ❖ *Version* | ↓ *Downloads* | ⎈ *Stars* | ⏲ *Updated* | ☆ *Created* |
|
|
193
|
+
| :------------ | :------------- | -----------: | -----------------: | -------------: | :--------------- | :----------- |
|
|
194
|
+
| **<name-1/>** | `<package-1/>` | <version-1/> | **<downloads-1/>** | **<stars-1/>** | **<updated-1/>** | <created-1/> |
|
|
186
195
|
[...]
|
|
187
|
-
| **<
|
|
196
|
+
| **<name-N/>** | `<package-N/>` | <version-N/> | **<downloads-N/>** | **<stars-N/>** | **<updated-N/>** | <created-N/> |
|
|
188
197
|
</template>
|
|
189
198
|
</step>
|
|
190
199
|
</flow>
|
|
@@ -202,9 +202,12 @@ problems in *performance* and *efficiency*, or problems in *security*.
|
|
|
202
202
|
<template>(`<filename/>#<function-or-method/>`)</template>.
|
|
203
203
|
|
|
204
204
|
- In <description/>, classify the problem with a <severity/>
|
|
205
|
-
of <template>LOW</template>, <template>MEDIUM</template
|
|
206
|
-
<template>HIGH</template>,
|
|
207
|
-
problem.
|
|
205
|
+
of <template>LOW</template>, <template>MEDIUM</template>,
|
|
206
|
+
<template>HIGH</template>, or <template>ACCEPTED</template>,
|
|
207
|
+
ranked by the estimated *impact* of the problem. Use
|
|
208
|
+
<template>ACCEPTED</template> when the problem is a deliberate,
|
|
209
|
+
justified trade-off that should remain on record but is never
|
|
210
|
+
dropped by the severity floor (see STEP 3).
|
|
208
211
|
|
|
209
212
|
- <if condition="<getopt-option-performance/> is equal `true`">
|
|
210
213
|
In <evidence/>, ground the finding by citing either the inferred
|
|
@@ -241,5 +244,3 @@ problems in *performance* and *efficiency*, or problems in *security*.
|
|
|
241
244
|
</step>
|
|
242
245
|
|
|
243
246
|
</flow>
|
|
244
|
-
|
|
245
|
-
</output>
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
name: ase-code-craft
|
|
3
3
|
argument-hint: "[--help|-h] [--auto|-a] [--dry|-d] [--quick|-Q] [--next|-n <option>[,...]] [<task-id>:] <feature>"
|
|
4
4
|
description: >
|
|
5
|
-
Craft Source
|
|
6
|
-
Use when user wants to create or craft a new feature from scratch.
|
|
5
|
+
Craft Source:
|
|
6
|
+
Use when user wants to "create", "add", or "craft" a new feature from scratch.
|
|
7
7
|
user-invocable: true
|
|
8
8
|
disable-model-invocation: false
|
|
9
9
|
effort: xhigh
|
|
@@ -69,20 +69,25 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
|
|
|
69
69
|
</template>
|
|
70
70
|
</if>
|
|
71
71
|
|
|
72
|
-
2.
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
72
|
+
2. <if condition="
|
|
73
|
+
<feature/> has the format `<id/>: <text/>` AND
|
|
74
|
+
<id/> matches the regexp `^[a-zA-Z][a-zA-Z0-9_-]*$`
|
|
75
|
+
">
|
|
76
|
+
Set <feature><text/></feature> and
|
|
77
|
+
<ase-task-id><id/></ase-task-id> and call the `ase_task_id(id:
|
|
78
|
+
"<ase-task-id/>", session: "<ase-session-id/>")` tool from the
|
|
79
|
+
`ase` MCP server to implicitly switch the task. Do not output
|
|
80
|
+
anything.
|
|
81
|
+
</if>
|
|
78
82
|
|
|
79
|
-
3.
|
|
80
|
-
|
|
83
|
+
3. <if condition="<feature/> is empty">
|
|
84
|
+
Ask the user interactively, without a special tool, for the
|
|
81
85
|
initial feature with a single question:
|
|
82
86
|
|
|
83
87
|
`**No feature known yet. What is the feature you want to craft?**`
|
|
84
88
|
|
|
85
89
|
Then set <feature/> to the response of the user.
|
|
90
|
+
</if>
|
|
86
91
|
|
|
87
92
|
4. <if condition="
|
|
88
93
|
<ase-task-id/> is equal `default` and
|
|
@@ -206,12 +211,12 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
|
|
|
206
211
|
inlining its pros/cons derived in sub-step 2:
|
|
207
212
|
|
|
208
213
|
<template>
|
|
209
|
-
●
|
|
210
|
-
○
|
|
211
|
-
○
|
|
212
|
-
○
|
|
213
|
-
⊕
|
|
214
|
-
⊖
|
|
214
|
+
● **APPROACH A<n/>**<annotation/>: *<summary/>*
|
|
215
|
+
○ [...]
|
|
216
|
+
○ [...]
|
|
217
|
+
○ [...]
|
|
218
|
+
⊕ **PRO**: [...]
|
|
219
|
+
⊖ **CON**: [...]
|
|
215
220
|
<optional-diagram/>
|
|
216
221
|
</template>
|
|
217
222
|
|
|
@@ -246,7 +251,7 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
|
|
|
246
251
|
|
|
247
252
|
5. **Choose Feature Crafting Approach**:
|
|
248
253
|
|
|
249
|
-
1.
|
|
254
|
+
1. <if condition="<getopt-option-auto/> is equal `false`">
|
|
250
255
|
Let the *user interactively choose* the preferred feature
|
|
251
256
|
approach A<n/> with the help of the <user-dialog-tool/> tool.
|
|
252
257
|
Use the header `Select Approach`, use `A<n/>: <short-summary/>`
|
|
@@ -254,14 +259,16 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
|
|
|
254
259
|
of the approach A<n/>), and *single-selection* only and provide
|
|
255
260
|
small *code change previews*. Mark your recommended feature
|
|
256
261
|
approach with ` ⚝ **RECOMMENDATION** ⚝` here again.
|
|
262
|
+
</if>
|
|
257
263
|
|
|
258
|
-
2.
|
|
264
|
+
2. <else>
|
|
259
265
|
Set <n/> to the number of the feature approach A<n/> you recommend.
|
|
260
266
|
Output a hint with the following <template/>:
|
|
261
267
|
|
|
262
268
|
<template>
|
|
263
269
|
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **auto-chosen approach A<n/>**
|
|
264
270
|
</template>
|
|
271
|
+
</else>
|
|
265
272
|
|
|
266
273
|
6. **Compose Feature Crafting Plan**:
|
|
267
274
|
|
|
@@ -278,7 +285,7 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
|
|
|
278
285
|
file, aligned with its existing style and conventions.
|
|
279
286
|
|
|
280
287
|
<if condition="<getopt-option-dry/> is equal `true`">
|
|
281
|
-
You *MUST* completely omit the `##
|
|
288
|
+
You *MUST* completely omit the `## VERIFICATION` section
|
|
282
289
|
(including its heading and all of its bullet points) from
|
|
283
290
|
<content/>.
|
|
284
291
|
</if>
|
|
@@ -307,40 +314,40 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
|
|
|
307
314
|
Treat <getopt-option-next/> as a comma-separated chronological
|
|
308
315
|
list of pre-selected next-step tokens. *Peek* the *first* token
|
|
309
316
|
as <head/> (or `none` if the list is `none`/empty).
|
|
317
|
+
Set <args>--int-reuse-task</args>.
|
|
310
318
|
|
|
311
319
|
1. <if condition="<head/> is equal `IMPLEMENT`">
|
|
312
320
|
Consume the head: set <getopt-option-next/> to the remaining
|
|
313
|
-
tokens (joined back with `,`, or `none` if empty).
|
|
314
|
-
<args></args> (empty).
|
|
321
|
+
tokens (joined back with `,`, or `none` if empty).
|
|
315
322
|
<if condition="<getopt-option-next/> is not equal `none`">
|
|
316
|
-
|
|
317
|
-
remaining list tokens to the downstream skill).
|
|
323
|
+
Set <args><args/> --next <getopt-option-next/></args>
|
|
318
324
|
</if>
|
|
319
|
-
Call the tool `Skill(skill: "ase:ase-task-implement", args: <args/>)`
|
|
325
|
+
Call the tool `Skill(skill: "ase:ase-task-implement", args: "<args/>")`
|
|
320
326
|
to *implement* the freshly composed plan, bypassing `ase-task-edit`.
|
|
321
327
|
</if>
|
|
322
328
|
|
|
323
|
-
2. <
|
|
329
|
+
2. <elseif condition="<head/> is equal `PREFLIGHT`">
|
|
324
330
|
Consume the head: set <getopt-option-next/> to the remaining
|
|
325
|
-
tokens (joined back with `,`, or `none` if empty).
|
|
326
|
-
<args></args> (empty).
|
|
331
|
+
tokens (joined back with `,`, or `none` if empty).
|
|
327
332
|
<if condition="<getopt-option-next/> is not equal `none`">
|
|
328
|
-
|
|
329
|
-
remaining list tokens to the downstream skill).
|
|
333
|
+
Set <args><args/> --next <getopt-option-next/></args>
|
|
330
334
|
</if>
|
|
331
|
-
Call the tool `Skill(skill: "ase:ase-task-preflight", args: <args/>)`
|
|
335
|
+
Call the tool `Skill(skill: "ase:ase-task-preflight", args: "<args/>")`
|
|
332
336
|
to *preflight* the freshly composed plan, bypassing `ase-task-edit`.
|
|
333
|
-
</
|
|
337
|
+
</elseif>
|
|
334
338
|
|
|
335
|
-
3. <
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
will consume its head itself. Set <args></args> (empty).
|
|
341
|
-
<if condition="<getopt-option-next/> is not equal `none`">
|
|
342
|
-
Set <args>--next <getopt-option-next/></args> (append to args).
|
|
339
|
+
3. <else>
|
|
340
|
+
Hand off to `ase-task-edit`.
|
|
341
|
+
<if condition="<head/> is equal `EDIT`">
|
|
342
|
+
Consume the head: set <getopt-option-next/> to the remaining
|
|
343
|
+
tokens (joined back with `,`, or `none` if empty).
|
|
343
344
|
</if>
|
|
344
|
-
|
|
345
|
+
All remaining tokens are `ase-task-edit`'s own vocabulary
|
|
346
|
+
and are forwarded verbatim, so `ase-task-edit` consumes its
|
|
347
|
+
head itself.
|
|
348
|
+
<if condition="<getopt-option-next/> is not equal `none`">
|
|
349
|
+
Set <args><args/> --next <getopt-option-next/></args>
|
|
345
350
|
</if>
|
|
351
|
+
Then call the tool `Skill(skill: "ase:ase-task-edit", args: "<args/>")`.
|
|
352
|
+
</else>
|
|
346
353
|
|
|
@@ -34,7 +34,7 @@ plan via `ase_task_save` and then hands off to `ase-task-edit`,
|
|
|
34
34
|
asking the user via the interactive dialog.
|
|
35
35
|
|
|
36
36
|
`--dry`|`-d`:
|
|
37
|
-
Compose the plan *without* the
|
|
37
|
+
Compose the plan *without* the `## VERIFICATION` section. When
|
|
38
38
|
`ase-task-implement` later applies such a plan, it strictly skips
|
|
39
39
|
the entire verification phase (no build, tests, linter,
|
|
40
40
|
type-checker, or program execution) once the source files have
|
|
@@ -43,7 +43,7 @@ plan via `ase_task_save` and then hands off to `ase-task-edit`,
|
|
|
43
43
|
`--quick`|`-Q`:
|
|
44
44
|
Shorthand alias for `-a -d -n IMPLEMENT,DELETE`: automatically pick
|
|
45
45
|
the recommended feature approach, compose the plan *without* the
|
|
46
|
-
|
|
46
|
+
`## VERIFICATION` section, immediately hand off to `ase-task-implement`,
|
|
47
47
|
and finally `ase-task-delete` the now-consumed plan. This gives a
|
|
48
48
|
single, fast *one-shot* crafting mode.
|
|
49
49
|
|
|
@@ -71,7 +71,7 @@ code and *explain* it in a *brief*, *standardized*, and *concise* way.
|
|
|
71
71
|
`sequenceDiagram` for actor/message flow, or `flowchart TB` for
|
|
72
72
|
boxes-and-lines component layouts. Then dispatch the rendering to
|
|
73
73
|
the `ase-meta-diagram` sub-agent by calling the tool `Agent(name:
|
|
74
|
-
"ase
|
|
74
|
+
"ase-meta-diagram", description: "Diagram Rendering", subagent_type:
|
|
75
75
|
"ase:ase-meta-diagram", prompt: <mermaid-spec/>)` and reproduce its
|
|
76
76
|
returned fenced code block verbatim in the response text. Do *not*
|
|
77
77
|
hand-draw.
|
|
@@ -70,7 +70,7 @@ Give *insights* into the project through the source code of $ARGUMENTS.
|
|
|
70
70
|
Then run the following command...
|
|
71
71
|
|
|
72
72
|
```
|
|
73
|
-
git log --format=format: --name-only --since="1 year ago" | sort | uniq -c | sort -nr | head -10
|
|
73
|
+
git log --format=format: --name-only --since="1 year ago" | grep -v '^$' | sort | uniq -c | sort -nr | head -10
|
|
74
74
|
```
|
|
75
75
|
|
|
76
76
|
...and then display its result as a table with a table head and
|
|
@@ -101,7 +101,7 @@ related to a set of code quality aspects.
|
|
|
101
101
|
3. <step id="STEP 3: Correction">
|
|
102
102
|
|
|
103
103
|
1. You *MUST* call the MCP tool `ase_config_set(key: "agent.skill", val:
|
|
104
|
-
"ase-
|
|
104
|
+
"ase-code-lint", scope: "session:<ase-session-id/>")` of the
|
|
105
105
|
`ase` MCP server. You *MUST* *NOT* output anything related to
|
|
106
106
|
this.
|
|
107
107
|
|
|
@@ -150,7 +150,7 @@ related to a set of code quality aspects.
|
|
|
150
150
|
3. Append the following <template/> to <diff-file/>:
|
|
151
151
|
|
|
152
152
|
<template>
|
|
153
|
-
@@ -<
|
|
153
|
+
@@ -<old-start/>,<n/> +<new-start/>,<m/> @@
|
|
154
154
|
<context-before/>
|
|
155
155
|
-<old-text/>
|
|
156
156
|
+<new-text/>
|
|
@@ -158,8 +158,16 @@ related to a set of code quality aspects.
|
|
|
158
158
|
</template>
|
|
159
159
|
|
|
160
160
|
Hints:
|
|
161
|
-
- The <
|
|
162
|
-
|
|
161
|
+
- The <old-start/> is the line of the first hunk line, i.e.,
|
|
162
|
+
the line of <context-before/> (one before <line/>).
|
|
163
|
+
- The <new-start/> is the same as <old-start/> (the unchanged
|
|
164
|
+
<context-before/> line shares the same start in both files).
|
|
165
|
+
- The <n/> is the total number of old-side hunk lines, i.e.,
|
|
166
|
+
the number of lines in <context-before/>, <old-text/>, and
|
|
167
|
+
<context-after/> combined.
|
|
168
|
+
- The <m/> is the total number of new-side hunk lines, i.e.,
|
|
169
|
+
the number of lines in <context-before/>, <new-text/>, and
|
|
170
|
+
<context-after/> combined.
|
|
163
171
|
|
|
164
172
|
</for>
|
|
165
173
|
|
|
@@ -190,7 +198,7 @@ related to a set of code quality aspects.
|
|
|
190
198
|
</template>
|
|
191
199
|
|
|
192
200
|
</if>
|
|
193
|
-
<
|
|
201
|
+
<else>
|
|
194
202
|
|
|
195
203
|
Report the solution with the following <template/>:
|
|
196
204
|
|
|
@@ -201,7 +209,7 @@ related to a set of code quality aspects.
|
|
|
201
209
|
|
|
202
210
|
</template>
|
|
203
211
|
|
|
204
|
-
</
|
|
212
|
+
</else>
|
|
205
213
|
|
|
206
214
|
6. <if condition="<getopt-option-auto/> is not 'true'">
|
|
207
215
|
|
|
@@ -215,12 +223,12 @@ related to a set of code quality aspects.
|
|
|
215
223
|
|
|
216
224
|
</if>
|
|
217
225
|
|
|
218
|
-
<
|
|
226
|
+
<else>
|
|
219
227
|
|
|
220
228
|
Set <result>ACCEPT</result>.
|
|
221
229
|
You *MUST* *NOT* output anything else in this step 6.
|
|
222
230
|
|
|
223
|
-
</
|
|
231
|
+
</else>
|
|
224
232
|
|
|
225
233
|
7. Check <result/> and dispatch accordingly:
|
|
226
234
|
|