@rse/ase 0.0.48 → 0.0.49
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-config.js +1 -4
- package/dst/ase-diagram.js +3 -3
- package/dst/ase-getopt.js +3 -3
- package/dst/ase-hook.js +85 -33
- package/dst/ase-mcp.js +26 -20
- package/dst/ase-service.js +8 -2
- package/dst/ase-statusline.js +17 -21
- package/dst/ase-task.js +60 -1
- package/package.json +1 -1
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/.github/plugin/plugin.json +1 -1
- package/plugin/agents/ase-code-lint.md +370 -0
- package/plugin/agents/ase-docs-proofread.md +100 -0
- package/plugin/meta/ase-persona.md +1 -1
- package/plugin/package.json +1 -1
- package/plugin/skills/ase-arch-analyze/SKILL.md +2 -2
- package/plugin/skills/ase-code-analyze/SKILL.md +2 -2
- package/plugin/skills/ase-code-explain/SKILL.md +1 -1
- package/plugin/skills/ase-code-lint/SKILL.md +179 -298
- package/plugin/skills/ase-docs-proofread/SKILL.md +29 -103
- package/plugin/skills/ase-meta-evaluate/SKILL.md +1 -1
- package/plugin/skills/ase-meta-persona/SKILL.md +1 -1
- package/plugin/skills/ase-meta-quorum/SKILL.md +1 -1
- package/plugin/skills/ase-task-rename/SKILL.md +92 -0
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
name: ase-code-lint
|
|
3
3
|
argument-hint: "<source-reference>"
|
|
4
4
|
description: >
|
|
5
|
-
Lint
|
|
5
|
+
Lint source code for potential code quality problems.
|
|
6
|
+
Use when the user wants to "lint" or "check" source code.
|
|
6
7
|
user-invocable: true
|
|
7
8
|
disable-model-invocation: false
|
|
8
9
|
effort: medium
|
|
@@ -10,6 +11,8 @@ effort: medium
|
|
|
10
11
|
|
|
11
12
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
|
|
12
13
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
|
|
14
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-dialog.md
|
|
15
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
|
|
13
16
|
|
|
14
17
|
Lint Source Code
|
|
15
18
|
================
|
|
@@ -18,369 +21,247 @@ Lint Source Code
|
|
|
18
21
|
Lint Source Code
|
|
19
22
|
</skill>
|
|
20
23
|
|
|
24
|
+
<expand name="getopt"
|
|
25
|
+
arg1="ase-code-lint"
|
|
26
|
+
arg2="--auto|-a">
|
|
27
|
+
$ARGUMENTS
|
|
28
|
+
</expand>
|
|
29
|
+
|
|
30
|
+
<role>
|
|
21
31
|
Your role is an experienced, *expert-level software developer*,
|
|
22
32
|
specialized in *analyzing source code*.
|
|
33
|
+
</role>
|
|
23
34
|
|
|
24
35
|
<objective>
|
|
25
|
-
*Analyze* the code of
|
|
36
|
+
*Analyze* the code of `<getopt-arguments/>` for *potential problems*
|
|
26
37
|
related to a set of code quality aspects.
|
|
27
38
|
</objective>
|
|
28
39
|
|
|
29
|
-
<
|
|
30
|
-
|
|
31
|
-
|
|
40
|
+
<flow>
|
|
41
|
+
|
|
42
|
+
1. <step id="STEP 1: Investigation">
|
|
32
43
|
|
|
33
|
-
|
|
44
|
+
First, use the following <template/> to give a hint on this step:
|
|
34
45
|
|
|
35
46
|
<template>
|
|
36
|
-
|
|
47
|
+
⚪ **LINT INVESTIGATION**
|
|
37
48
|
</template>
|
|
38
49
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
50
|
+
Dispatch the investigation to a *sub-agent* via the `Agent`
|
|
51
|
+
tool so that *no* investigation details leak into the user-visible
|
|
52
|
+
transcript. The sub-agent performs the silent reading and checking;
|
|
53
|
+
only its final structured return value is consumed here.
|
|
43
54
|
|
|
44
|
-
|
|
45
|
-
In case of *no* necessary code changes,
|
|
46
|
-
display the following output <template/>:
|
|
55
|
+
For this, invoke *exactly once* the tool:
|
|
47
56
|
|
|
48
|
-
|
|
57
|
+
```text
|
|
58
|
+
Agent(
|
|
59
|
+
name: "ase-code-lint",
|
|
60
|
+
description: "Lint Investigation",
|
|
61
|
+
subagent_type: "ase-code-lint",
|
|
62
|
+
mode: "plan",
|
|
63
|
+
prompt: <getopt-arguments/>
|
|
64
|
+
)
|
|
65
|
+
```
|
|
49
66
|
|
|
50
|
-
|
|
67
|
+
Parse the single result message of the `Agent` tool as a JSON array
|
|
68
|
+
and set <problems/> to that list.
|
|
51
69
|
|
|
52
|
-
|
|
70
|
+
You *MUST* *NOT* output anything else in this step 1.
|
|
53
71
|
|
|
54
|
-
|
|
72
|
+
</step>
|
|
55
73
|
|
|
56
|
-
|
|
74
|
+
2. <step id="STEP 2: Summary">
|
|
57
75
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
use the following <template/> for those outputs:
|
|
76
|
+
Use the following <template/> to output a summary of the detected
|
|
77
|
+
problems in <problems/> (if any were found), in the original aspect
|
|
78
|
+
ordering `A01 - XXX`...`A20 - XXX`.
|
|
62
79
|
|
|
63
|
-
|
|
80
|
+
<template>
|
|
81
|
+
⚪ **LINT SUMMARY**:
|
|
64
82
|
|
|
65
|
-
|
|
83
|
+
🟠 **AX - XXX**: N issues
|
|
84
|
+
🟠 **AX - XXX**: N issues
|
|
85
|
+
[...]
|
|
86
|
+
</template>
|
|
66
87
|
|
|
67
|
-
|
|
88
|
+
Else, if no problems were found, use the following <template/> to
|
|
89
|
+
output the summary instead:
|
|
68
90
|
|
|
69
|
-
|
|
91
|
+
<template>
|
|
92
|
+
⚪ **LINT SUMMARY**:
|
|
70
93
|
|
|
71
|
-
|
|
94
|
+
*(no problems detected)*
|
|
95
|
+
</template>
|
|
72
96
|
|
|
73
|
-
|
|
74
|
-
code change set*. For this, keep all source code changes as
|
|
75
|
-
*surgical and small* as possible.
|
|
76
|
-
</define>
|
|
97
|
+
You *MUST* *NOT* output anything else in this step 2.
|
|
77
98
|
|
|
78
|
-
<flow>
|
|
79
|
-
1. <step id="Preparation">
|
|
80
|
-
*Find* and *read* all the corresponding source code files
|
|
81
|
-
and all *related* source code files.
|
|
82
|
-
*Determine* the *target programming language* and apply all
|
|
83
|
-
subsequent checks according to its *idiomatic conventions*
|
|
84
|
-
and *best practices*.
|
|
85
99
|
</step>
|
|
86
100
|
|
|
87
|
-
|
|
88
|
-
<expand name="linter" arg1="A01 - FORMATTING">
|
|
89
|
-
Check for inconsistently formatted code and badly vertically
|
|
90
|
-
aligned code on subsequent lines.
|
|
101
|
+
3. <step id="STEP 3: Correction">
|
|
91
102
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
</expand>
|
|
97
|
-
</step>
|
|
103
|
+
1. You *MUST* call the MCP tool `config_set(key: "agent.skill", val:
|
|
104
|
+
"ase-docs-proofread", scope: "session:<ase-session-id/>")` of the
|
|
105
|
+
`ase` MCP server. You *MUST* *NOT* output anything related to
|
|
106
|
+
this.
|
|
98
107
|
|
|
99
|
-
|
|
100
|
-
<expand name="linter" arg1="A02 - COMPREHENSION">
|
|
101
|
-
Check for bad readability, bad maintainability, or bad
|
|
102
|
-
self-documentation on identifiers.
|
|
103
|
-
|
|
104
|
-
For identifiers, prefer single-letter ones for short loops and
|
|
105
|
-
accept that identifier length correlates to the identifier
|
|
106
|
-
scope, i.e., longer identifiers are acceptable for larger
|
|
107
|
-
scopes. For all identifiers, prefer the *idiomatic naming
|
|
108
|
-
convention* of the target programming language (e.g., camelCase
|
|
109
|
-
for TypeScript/Java, snake_case for Python/Rust, mixedCaps for Go).
|
|
110
|
-
</expand>
|
|
111
|
-
</step>
|
|
108
|
+
2. Iterate over all problems:
|
|
112
109
|
|
|
113
|
-
|
|
114
|
-
<expand name="linter" arg1="A03 - CLEANLINESS">
|
|
115
|
-
Check for unclean code and inconsistent code.
|
|
110
|
+
<for items="<problems/>">
|
|
116
111
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
</step>
|
|
112
|
+
1. Set <aspect/> to the `aspect` field of <item/>.
|
|
113
|
+
Set <severity/> to the `severity` field of <item/>.
|
|
114
|
+
Set <description/> to the `description` field of <item/>.
|
|
115
|
+
Set <change-set/> to the `change-set` field of <item/>.
|
|
122
116
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
Check for typos, spelling errors, or incorrect grammar in
|
|
126
|
-
identifiers, string literals and comments.
|
|
117
|
+
2. Set <context></context> (set to empty).
|
|
118
|
+
Set <diff></diff> (set to empty).
|
|
127
119
|
|
|
128
|
-
|
|
129
|
-
prefer short very brief one-line descriptions.
|
|
130
|
-
</expand>
|
|
131
|
-
</step>
|
|
120
|
+
3. Iterate over the change set:
|
|
132
121
|
|
|
133
|
-
|
|
134
|
-
<expand name="linter" arg1="A05 - COMPLEXITY">
|
|
135
|
-
Check for extremely long functions, and deeply nested code
|
|
136
|
-
constructs.
|
|
122
|
+
<for items="<change-set/>">
|
|
137
123
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
</expand>
|
|
141
|
-
</step>
|
|
124
|
+
1. Set <file/> to the `file` field of <item/>.
|
|
125
|
+
Set <change-hunks/> to the `change-hunks` field of <item/>.
|
|
142
126
|
|
|
143
|
-
|
|
144
|
-
<expand name="linter" arg1="A06 - REDUNDANCY">
|
|
145
|
-
Check for *redundant code* through duplications of identical or
|
|
146
|
-
near-identical code. Apply graded severity by block size,
|
|
147
|
-
occurrence count, and locality across the following sub-aspects:
|
|
148
|
-
|
|
149
|
-
- **R1 LARGE-BLOCK** (>=10 lines, near-identical):
|
|
150
|
-
2 occurrences → MEDIUM; 3+ occurrences or cross-file → HIGH.
|
|
151
|
-
|
|
152
|
-
- **R2 MEDIUM-BLOCK** (6-9 lines, near-identical):
|
|
153
|
-
2+ occurrences → MEDIUM; cross-file at any count → MEDIUM.
|
|
154
|
-
|
|
155
|
-
- **R3 SMALL-PATTERN** (<6 lines, near-identical):
|
|
156
|
-
3+ occurrences → LOW. Flag as a smell; note that mechanical
|
|
157
|
-
extraction usually does not pay off below the 6-line threshold,
|
|
158
|
-
so prefer *parameterization* or leave a comment explaining the
|
|
159
|
-
intentional duplication.
|
|
160
|
-
|
|
161
|
-
- **R4 STRUCTURAL-DUPLICATION**: copy-pasted control structures
|
|
162
|
-
with only literal/identifier substitutions (validation chains,
|
|
163
|
-
error-handling boilerplate, mapping/transformation code) → at
|
|
164
|
-
least MEDIUM, regardless of line count.
|
|
165
|
-
|
|
166
|
-
For any flagged redundancy of more than 6 lines, *propose
|
|
167
|
-
extraction* into a utility function placed before its first call
|
|
168
|
-
site as close as possible. For R4, prefer *parameterization*
|
|
169
|
-
(table-driven, strategy map) over inheritance.
|
|
170
|
-
</expand>
|
|
171
|
-
</step>
|
|
127
|
+
Set <diff-file/> to the following <template/>:
|
|
172
128
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
For design patterns, especially check for broken OOP and FP aspects.
|
|
179
|
-
For conventions, especially check for broken *idiomatic conventions
|
|
180
|
-
of the target programming language*. For best practices, especially
|
|
181
|
-
check for not leveraging *standard library APIs* or using *obsolete
|
|
182
|
-
or deprecated APIs*.
|
|
183
|
-
</expand>
|
|
184
|
-
</step>
|
|
129
|
+
<template>
|
|
130
|
+
--- <file/> (original)
|
|
131
|
+
+++ <file/> (corrected)
|
|
132
|
+
</template>
|
|
185
133
|
|
|
186
|
-
|
|
187
|
-
<expand name="linter" arg1="A08 - COMPLICATEDNESS">
|
|
188
|
-
Check for complicated or cumbersome code constructs.
|
|
134
|
+
2. Iterate over the change hunks.
|
|
189
135
|
|
|
190
|
-
|
|
191
|
-
for which simpler solutions exist.
|
|
192
|
-
</expand>
|
|
193
|
-
</step>
|
|
136
|
+
<for items="<change-hunks/>">
|
|
194
137
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
138
|
+
1. Set <line/> to the `line` field of <item/>.
|
|
139
|
+
Set <context-before/> to the `context_before` field of <item/>.
|
|
140
|
+
Set <old-text/> to the `old_text` field of <item/>.
|
|
141
|
+
Set <new-text/> to the `new_text` field of <item/>.
|
|
142
|
+
Set <context-after/> to the `context_after` field of <item/>.
|
|
198
143
|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
aspects.
|
|
203
|
-
</expand>
|
|
204
|
-
</step>
|
|
144
|
+
2. If <context/> is not empty, set
|
|
145
|
+
<context><context/>,</context> (append a comma).
|
|
146
|
+
Then append the following <template/> to <context/>:
|
|
205
147
|
|
|
206
|
-
|
|
207
|
-
<expand name="linter" arg1="A10 - SMELLS">
|
|
208
|
-
Check for code smells.
|
|
148
|
+
<template>`<file/>`:<line/></template>
|
|
209
149
|
|
|
210
|
-
|
|
211
|
-
coercions, and *language-specific anti-patterns* (e.g., void()/eval()
|
|
212
|
-
in JavaScript, unsafe blocks in Rust, reflect in Go).
|
|
213
|
-
</expand>
|
|
214
|
-
</step>
|
|
150
|
+
3. Append the following <template/> to <diff-file/>:
|
|
215
151
|
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
missing type hints in Python) and that types are primarily used on
|
|
224
|
-
function parameters. For all other cases, ensure that a *maximum
|
|
225
|
-
type inference* is used.
|
|
226
|
-
</expand>
|
|
227
|
-
</step>
|
|
152
|
+
<template>
|
|
153
|
+
@@ -<line/>,<n/> +<line/>,<m/> @@
|
|
154
|
+
<context-before/>
|
|
155
|
+
-<old-text/>
|
|
156
|
+
+<new-text/>
|
|
157
|
+
<context-after/>
|
|
158
|
+
</template>
|
|
228
159
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
error preventions.
|
|
233
|
-
|
|
234
|
-
Surround code blocks with error handling constructs only if really
|
|
235
|
-
necessary to not clutter the code too much with error handling.
|
|
236
|
-
For error handling, prefer the *idiomatic error handling pattern*
|
|
237
|
-
of the target programming language (e.g., .catch() in JavaScript,
|
|
238
|
-
Result<T,E> in Rust, if err != nil in Go).
|
|
239
|
-
</expand>
|
|
240
|
-
</step>
|
|
160
|
+
Hints:
|
|
161
|
+
- The <n/> is the number of lines in <old-text/>.
|
|
162
|
+
- The <m/> is the number of lines in <new-text/>.
|
|
241
163
|
|
|
242
|
-
|
|
243
|
-
<expand name="linter" arg1="A13 - MEMORY-LEAK">
|
|
244
|
-
Check for memory leaks and inconsistent resource
|
|
245
|
-
allocation/deallocation pairs.
|
|
164
|
+
</for>
|
|
246
165
|
|
|
247
|
-
|
|
248
|
-
deallocation and that deallocations happen in the exact opposite
|
|
249
|
-
order of the allocations.
|
|
250
|
-
</expand>
|
|
251
|
-
</step>
|
|
166
|
+
3. Append <diff-file/> to <diff/>.
|
|
252
167
|
|
|
253
|
-
|
|
254
|
-
<expand name="linter" arg1="A14 - CONCURRENCY">
|
|
255
|
-
Check for concurrency or parallelism race conditions.
|
|
168
|
+
</for>
|
|
256
169
|
|
|
257
|
-
|
|
258
|
-
*concurrently or asynchronously* through the target language's
|
|
259
|
-
*concurrency model* (e.g., event-loop callbacks in JavaScript,
|
|
260
|
-
goroutines in Go, threads in Java/C++, async/await in Rust/Python).
|
|
261
|
-
</expand>
|
|
262
|
-
</step>
|
|
170
|
+
4. Report the problem with the following <template/>:
|
|
263
171
|
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
Check for bad performance and inefficiency issues.
|
|
172
|
+
<template>
|
|
173
|
+
🟠 **<aspect/> PROBLEM** (`<severity/>`): <context/>
|
|
267
174
|
|
|
268
|
-
|
|
269
|
-
constant/O(1), or linear/O(n) complexity) in its execution time
|
|
270
|
-
and/or memory consumption.
|
|
271
|
-
</expand>
|
|
272
|
-
</step>
|
|
175
|
+
<description/>
|
|
273
176
|
|
|
274
|
-
|
|
275
|
-
<expand name="linter" arg1="A16 - SECURITY">
|
|
276
|
-
Check for potential vulnerabilities, typical security issues,
|
|
277
|
-
and missing essential validations.
|
|
177
|
+
</template>
|
|
278
178
|
|
|
279
|
-
|
|
280
|
-
</expand>
|
|
281
|
-
</step>
|
|
179
|
+
5. <if condition="<getopt-option-auto/> is not 'true'">
|
|
282
180
|
|
|
283
|
-
|
|
284
|
-
<expand name="linter" arg1="A17 - ARCHITECTURE">
|
|
285
|
-
Check for architecture, design, or modularity concerns.
|
|
181
|
+
Report the solution with the following <template/>:
|
|
286
182
|
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
ensure that patterns like Singleton, Proxy, Adapter, Class, and
|
|
290
|
-
Interface are used correctly.
|
|
291
|
-
</expand>
|
|
292
|
-
</step>
|
|
183
|
+
<template>
|
|
184
|
+
🔵 **<aspect/> SOLUTION**:
|
|
293
185
|
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
186
|
+
```diff
|
|
187
|
+
<diff/>
|
|
188
|
+
```
|
|
297
189
|
|
|
298
|
-
|
|
299
|
-
logic.
|
|
300
|
-
</expand>
|
|
301
|
-
</step>
|
|
190
|
+
</template>
|
|
302
191
|
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
Check for wrong control or data flow.
|
|
192
|
+
</if>
|
|
193
|
+
<if condition="<getopt-option-auto/> is 'true'">
|
|
306
194
|
|
|
307
|
-
|
|
308
|
-
and data flows with inconsistent value unit processing.
|
|
309
|
-
</expand>
|
|
310
|
-
</step>
|
|
195
|
+
Report the solution with the following <template/>:
|
|
311
196
|
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
Check for *dead or unused code* across the following sub-aspects.
|
|
315
|
-
For each finding, *guard against false positives* by considering
|
|
316
|
-
the language- and framework-specific access paths listed.
|
|
317
|
-
|
|
318
|
-
- **D1 UNUSED-CALLABLES**: classes, interfaces, methods, or
|
|
319
|
-
functions with no callers in the codebase. Before flagging,
|
|
320
|
-
consider *reflection*, *framework hooks* (DI containers,
|
|
321
|
-
annotation-driven dispatch, route registrations), *external
|
|
322
|
-
module consumers* (public API surface), and *test fixtures*.
|
|
323
|
-
|
|
324
|
-
- **D2 UNUSED-MEMBERS**: class attributes or struct fields
|
|
325
|
-
assigned but never read. Before flagging, consider
|
|
326
|
-
*serialization frameworks*, *ORM/persistence mapping*,
|
|
327
|
-
*template or UI binding via reflection*, and *dynamic property
|
|
328
|
-
access* (where the language allows reading members by name at
|
|
329
|
-
runtime).
|
|
330
|
-
|
|
331
|
-
- **D3 UNUSED-IMPORTS**: import statements for symbols never
|
|
332
|
-
referenced in the file.
|
|
333
|
-
|
|
334
|
-
- **D4 UNUSED-LOCALS**: local variables and function parameters
|
|
335
|
-
declared but never read. Exclude *conventional placeholders*
|
|
336
|
-
such as a single underscore or leading-underscore names that
|
|
337
|
-
signal intentional disuse.
|
|
338
|
-
|
|
339
|
-
- **D5 UNREACHABLE-CODE**: code following an unconditional
|
|
340
|
-
`return`, `throw`, `break`, `continue`, or process termination.
|
|
341
|
-
|
|
342
|
-
- **D6 PASS-ONLY-CALLABLES**: functions whose entire body is
|
|
343
|
-
`pass`, an empty block, a bare `return` / `return None`, or
|
|
344
|
-
just a docstring. Exclude *abstract methods*, *protocol stubs
|
|
345
|
-
for type checking*, and language-required no-ops.
|
|
346
|
-
|
|
347
|
-
- **D7 DEPRECATED-DRIFT**: two related cases —
|
|
348
|
-
(a) deprecated symbols with zero remaining callers (removable),
|
|
349
|
-
(b) production code still calling deprecated symbols
|
|
350
|
-
(migration debt).
|
|
351
|
-
|
|
352
|
-
- **D8 SILENCED-EXCEPTIONS**: exception handlers that swallow
|
|
353
|
-
errors without logging, re-throwing, or setting an explicit
|
|
354
|
-
error flag (`except: pass`, `catch (e) {}`, empty `recover()`).
|
|
355
|
-
Exclude handlers carrying an *explanatory comment* that states
|
|
356
|
-
why silencing is intentional.
|
|
357
|
-
|
|
358
|
-
Severity guidance: D1, D2, D5, D6, D7, D8 default to MEDIUM unless
|
|
359
|
-
the construct is purely local and trivial (then LOW). D3 and D4
|
|
360
|
-
default to LOW. Escalate to HIGH only when the dead construct
|
|
361
|
-
*masks* another bug (e.g., unreachable code after a misplaced
|
|
362
|
-
`return` that skips cleanup logic).
|
|
363
|
-
</expand>
|
|
364
|
-
</step>
|
|
197
|
+
<template>
|
|
198
|
+
🔵 **<aspect/> SOLUTION**:
|
|
365
199
|
|
|
366
|
-
|
|
367
|
-
At the end, do not give any more explanations, except for
|
|
368
|
-
a summary of all accepted and rejected code
|
|
369
|
-
changes. For this, according to the original step ordering,
|
|
370
|
-
use the following output <template/>, where
|
|
371
|
-
`🟠 **AX - XXX**: N issues` is used for aspects
|
|
372
|
-
with N issues and `⚪ **AX - XXX**: no issues`
|
|
373
|
-
for aspects without any issues:
|
|
200
|
+
*(corresponding change automatically applied)*
|
|
374
201
|
|
|
375
|
-
|
|
376
|
-
**SUMMARY**:
|
|
202
|
+
</template>
|
|
377
203
|
|
|
378
|
-
|
|
204
|
+
</if>
|
|
379
205
|
|
|
380
|
-
|
|
206
|
+
6. <if condition="<getopt-option-auto/> is not 'true'">
|
|
207
|
+
|
|
208
|
+
Ask the user how to proceed via an interactive user dialog:
|
|
209
|
+
|
|
210
|
+
<expand name="user-dialog">
|
|
211
|
+
CORRECTION: How would you like to proceed with this proposed correction?
|
|
212
|
+
ACCEPT: Apply the proposed correction.
|
|
213
|
+
REJECT: Skip this proposed correction.
|
|
214
|
+
</expand>
|
|
215
|
+
|
|
216
|
+
</if>
|
|
217
|
+
|
|
218
|
+
<if condition="<getopt-option-auto/> is 'true'">
|
|
219
|
+
|
|
220
|
+
Set <result>ACCEPT</result>.
|
|
221
|
+
You *MUST* *NOT* output anything else in this step 6.
|
|
222
|
+
|
|
223
|
+
</if>
|
|
224
|
+
|
|
225
|
+
7. Check <result/> and dispatch accordingly:
|
|
226
|
+
|
|
227
|
+
- <if condition="<result/> is 'ACCEPT'">
|
|
228
|
+
Invoke the `Edit` tool to apply the changes exactly
|
|
229
|
+
as shown in the <diff/>. After applying the changes,
|
|
230
|
+
just continue with the next <item/>.
|
|
231
|
+
</if>
|
|
232
|
+
|
|
233
|
+
- <if condition="<result/> starts with 'OTHER'">
|
|
234
|
+
Generate a *new* proposal for the *same* <item/>
|
|
235
|
+
(incorporating the user's free-text hint from <result/> if
|
|
236
|
+
provided via the "OTHER" prefix) and loop back to substep 2
|
|
237
|
+
of this iteration. There is *no* cap on refinement rounds —
|
|
238
|
+
keep refining until the user picks `ACCEPT` or `REJECT`.
|
|
239
|
+
</if>
|
|
240
|
+
|
|
241
|
+
- <if condition="
|
|
242
|
+
<result/> is 'REJECT' or
|
|
243
|
+
<result/> is 'CANCEL' or
|
|
244
|
+
<result/> starts with 'ERROR'
|
|
245
|
+
">
|
|
246
|
+
Skip this <item/> without any `Edit` call and continue
|
|
247
|
+
with the next <item/>.
|
|
248
|
+
</if>
|
|
249
|
+
|
|
250
|
+
</for>
|
|
251
|
+
|
|
252
|
+
3. You *MUST* call the MCP tool `config_delete(key: "agent.skill",
|
|
253
|
+
scope: "session:<ase-session-id/>")` of the `ase` MCP server.
|
|
254
|
+
You *MUST* *NOT* output anything related to this.
|
|
255
|
+
|
|
256
|
+
4. You *MUST* *NOT* output any further additional explanations or
|
|
257
|
+
summaries at the end of this skill processing, except for the
|
|
258
|
+
following final <template/>:
|
|
259
|
+
|
|
260
|
+
<template>
|
|
261
|
+
⚪ **LINT FINISHED**
|
|
262
|
+
</template>
|
|
381
263
|
|
|
382
|
-
[...]
|
|
383
|
-
</template>
|
|
384
264
|
</step>
|
|
265
|
+
|
|
385
266
|
</flow>
|
|
386
267
|
|