@rse/ase 0.9.11 → 0.9.13
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-compat.js +68 -0
- package/dst/ase-diagram.js +5 -2
- package/dst/ase-getopt.js +2 -1
- package/dst/ase-hook.js +158 -67
- package/dst/ase-mcp.js +2 -0
- package/dst/ase-persona.js +4 -1
- package/dst/ase-service.js +2 -0
- package/dst/ase-setup.js +52 -23
- package/dst/ase-skills.js +13 -3
- package/dst/ase-statusline.js +9 -5
- package/dst/ase.js +3 -1
- package/package.json +2 -1
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/.codex-plugin/mcp.json +8 -0
- package/plugin/.codex-plugin/plugin.json +17 -0
- package/plugin/.github/plugin/plugin.json +1 -1
- package/plugin/hooks/hooks-codex.json +67 -0
- package/plugin/meta/ase-dialog.md +21 -1
- package/plugin/meta/ase-format-arch.md +26 -9
- package/plugin/meta/ase-format-meta.md +7 -3
- package/plugin/meta/ase-format-spec.md +11 -6
- package/plugin/meta/ase-getopt.md +6 -2
- package/plugin/meta/ase-skill.md +43 -19
- package/plugin/package.json +1 -1
- package/plugin/skills/ase-arch-analyze/SKILL.md +17 -10
- package/plugin/skills/ase-code-craft/SKILL.md +17 -5
- package/plugin/skills/ase-code-explain/SKILL.md +0 -1
- package/plugin/skills/ase-code-insight/SKILL.md +1 -1
- package/plugin/skills/ase-code-lint/SKILL.md +13 -14
- package/plugin/skills/ase-code-refactor/SKILL.md +17 -5
- package/plugin/skills/ase-code-resolve/SKILL.md +18 -5
- package/plugin/skills/ase-docs-proofread/SKILL.md +11 -12
- package/plugin/skills/ase-meta-compat/SKILL.md +278 -0
- package/plugin/skills/ase-meta-compat/help.md +67 -0
- package/plugin/skills/ase-meta-diff/SKILL.md +3 -3
- package/plugin/skills/ase-meta-evaluate/SKILL.md +20 -18
- package/plugin/skills/ase-meta-quorum/SKILL.md +3 -3
- package/plugin/skills/ase-task-condense/SKILL.md +6 -0
- package/plugin/skills/ase-task-edit/SKILL.md +6 -2
- package/plugin/skills/ase-task-grill/SKILL.md +10 -7
- package/plugin/skills/ase-task-id/SKILL.md +3 -3
- package/plugin/skills/ase-task-implement/SKILL.md +6 -2
- package/plugin/skills/ase-task-preflight/SKILL.md +5 -1
- package/plugin/skills/ase-task-rename/SKILL.md +9 -0
package/plugin/meta/ase-skill.md
CHANGED
|
@@ -119,15 +119,25 @@ Skill Sequential Processing
|
|
|
119
119
|
For speed, emit *all* `TaskCreate` calls together in a *single* turn
|
|
120
120
|
(issued in parallel), *not* one-per-turn sequentially. Do *not*
|
|
121
121
|
rely on the call order to establish the step order, as the parallel
|
|
122
|
-
results carry no guaranteed ordering.
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
122
|
+
results carry no guaranteed ordering.
|
|
123
|
+
|
|
124
|
+
Instead, in the *immediately single following* turn, first
|
|
125
|
+
reconstruct the step-id-to-taskId mapping: because each task's
|
|
126
|
+
`subject` equals the originating <step/> `id` (and <step/> ids are
|
|
127
|
+
unique), match every created task back to its <step/> by comparing
|
|
128
|
+
the task's `subject` to the step `id` -- read the ids straight from
|
|
129
|
+
the `TaskCreate` results, or call `TaskList` if the results are
|
|
130
|
+
no longer at hand.
|
|
131
|
+
|
|
132
|
+
Then establish the strict order explicitly by chaining the created
|
|
133
|
+
tasks with `TaskUpdate`: for each <step/> after the first one,
|
|
134
|
+
resolve <this/> and <prev/> to the mapped `taskId` values and
|
|
135
|
+
call `TaskUpdate({ taskId: "<this/>", addBlockedBy: [ "<prev/>" ]
|
|
136
|
+
})` so that every step (with `taskId` <this/>) is blocked by its
|
|
137
|
+
predecessor step (with `taskId` <prev/>).
|
|
128
138
|
|
|
129
139
|
- *IMPORTANT*: For each <step/> you *MUST* use the `TaskUpdate` tool
|
|
130
|
-
for updating its status during processing.
|
|
140
|
+
for updating its status *during* processing, once a <step/> finished.
|
|
131
141
|
|
|
132
142
|
- *IMPORTANT*: You *MUST* sequentially execute every <step/> in
|
|
133
143
|
a <flow/> *EXACTLY* as the instructions specify.
|
|
@@ -172,6 +182,12 @@ MCP Tool Calls
|
|
|
172
182
|
⧉ **ASE**: **ERROR:** MCP tool failed: <info/>
|
|
173
183
|
</template>
|
|
174
184
|
|
|
185
|
+
*EXCEPTION*: this rule does *NOT* apply to the `ase_getopt` tool,
|
|
186
|
+
whose `ERROR:`-prefixed output is *expected* option-parsing
|
|
187
|
+
feedback handled exclusively by step 4 of the `getopt` procedure
|
|
188
|
+
(see `ase-getopt.md`); never emit this generic template for an
|
|
189
|
+
`ase_getopt` response.
|
|
190
|
+
|
|
175
191
|
- Only on a clean response: proceed as the skill instructs.
|
|
176
192
|
|
|
177
193
|
Skill Identification
|
|
@@ -232,9 +248,11 @@ Template Patterns
|
|
|
232
248
|
</template>
|
|
233
249
|
|
|
234
250
|
- When `<ase-tpl-head title="<title/>"/>` should be expanded, use
|
|
235
|
-
(where <title
|
|
236
|
-
|
|
237
|
-
(67 - <title-len/>)
|
|
251
|
+
(where <raw-title/> is the visible un-styled text `⧉ ASE: <title/>`,
|
|
252
|
+
<raw-title-len/> is the number of characters in <raw-title/>, and
|
|
253
|
+
<bar/> is the `─` character repeated exactly (67 - <raw-title-len/>)
|
|
254
|
+
times -- the very same bar-width rule as `<ase-tpl-foot/>` and
|
|
255
|
+
`<ase-tpl-boxed/>`, so equal visible text yields equal total width):
|
|
238
256
|
|
|
239
257
|
<template>
|
|
240
258
|
|
|
@@ -251,9 +269,11 @@ Template Patterns
|
|
|
251
269
|
</template>
|
|
252
270
|
|
|
253
271
|
- When `<ase-tpl-foot title="<title/>"/>` should be expanded, use
|
|
254
|
-
(where <title
|
|
255
|
-
|
|
256
|
-
(67 - <title-len/>)
|
|
272
|
+
(where <raw-title/> is the visible un-styled text `⧉ ASE: <title/>`,
|
|
273
|
+
<raw-title-len/> is the number of characters in <raw-title/>, and
|
|
274
|
+
<bar/> is the `─` character repeated exactly (67 - <raw-title-len/>)
|
|
275
|
+
times -- the very same bar-width rule as `<ase-tpl-head/>` and
|
|
276
|
+
`<ase-tpl-boxed/>`, so equal visible text yields equal total width):
|
|
257
277
|
|
|
258
278
|
<template>
|
|
259
279
|
|
|
@@ -275,19 +295,23 @@ Template Patterns
|
|
|
275
295
|
</else>
|
|
276
296
|
|
|
277
297
|
- When `<ase-tpl-boxed title="<title/>"[ subtitle="<subtitle/>"]><content/></ase-tpl-boxed>`
|
|
278
|
-
should be expanded use the following helper
|
|
298
|
+
should be expanded use the following helper placeholders and then
|
|
299
|
+
the following <template/>:
|
|
279
300
|
|
|
280
301
|
- <if condition="<subtitle/> is not empty">
|
|
281
|
-
Set <raw-title>⧉ ASE: <title/>: <subtitle
|
|
302
|
+
Set <raw-title>⧉ ASE: <title/>: <subtitle/></raw-title>.
|
|
282
303
|
Set <render-title>⧉ ASE: **`<title/>`**: `<subtitle/>`</render-title>.
|
|
283
304
|
</if>
|
|
284
305
|
<else>
|
|
285
|
-
Set <raw-title>⧉ ASE: <title
|
|
306
|
+
Set <raw-title>⧉ ASE: <title/></raw-title>.
|
|
286
307
|
Set <render-title>⧉ ASE: **`<title/>`**</render-title>.
|
|
287
308
|
</else>
|
|
288
|
-
- Set <raw-title-len/> to the number of characters in
|
|
289
|
-
|
|
290
|
-
- Set <
|
|
309
|
+
- Set <raw-title-len/> to the number of characters in the visible
|
|
310
|
+
un-styled text <raw-title/>.
|
|
311
|
+
- Set <bar/> to the `─` character repeated exactly (67 - <raw-title-len/>)
|
|
312
|
+
times -- the very same bar-width rule as `<ase-tpl-head/>` and
|
|
313
|
+
`<ase-tpl-foot/>`, so equal visible text yields equal total width.
|
|
314
|
+
- Set <body/> to <content/> with all line-starts prefixed with `│ `.
|
|
291
315
|
|
|
292
316
|
<template>
|
|
293
317
|
|
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.13",
|
|
10
10
|
"license": "GPL-3.0-only",
|
|
11
11
|
"author": {
|
|
12
12
|
"name": "Dr. Ralf S. Engelschall",
|
|
@@ -375,13 +375,19 @@ interface quality, quality attributes, and architecture governance.
|
|
|
375
375
|
- *Focal aspect*: <focal-aspect/> - <focal-state/>
|
|
376
376
|
- *In tension with*: <partner-list/>
|
|
377
377
|
|
|
378
|
-
**RECOMMENDED**: lean toward *<
|
|
378
|
+
**RECOMMENDED**: lean toward *<lean-toward/>*
|
|
379
379
|
*Reason*: <rationale/>
|
|
380
380
|
*Implies*:
|
|
381
|
-
- <partner-aspect
|
|
382
|
-
-
|
|
381
|
+
- <partner-aspect/>: <partner-implication/>
|
|
382
|
+
- ...
|
|
383
383
|
</template>
|
|
384
384
|
|
|
385
|
+
For each partner in <partner-list/>, repeat the `*Implies*` line,
|
|
386
|
+
set <partner-aspect/> to the partner aspect, and set
|
|
387
|
+
<partner-implication/> to its brief implication. Set <lean-toward/>
|
|
388
|
+
to the aspect direction the recommendation favors (the *focal
|
|
389
|
+
aspect* or the *partners*).
|
|
390
|
+
|
|
385
391
|
Hints:
|
|
386
392
|
|
|
387
393
|
- For the final results, do *not* output anything else,
|
|
@@ -429,13 +435,14 @@ interface quality, quality attributes, and architecture governance.
|
|
|
429
435
|
for the same aspect, and never emit both halves of a
|
|
430
436
|
tension pair as separate PROBLEMs.
|
|
431
437
|
|
|
432
|
-
- *Additionally*,
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
`
|
|
437
|
-
|
|
438
|
-
|
|
438
|
+
- *Additionally*, persist all reported findings in a *single*
|
|
439
|
+
`ase_kv_batch` call to the `ase` MCP server with `transactional`
|
|
440
|
+
set to `true`. The `commands` parameter array of this call
|
|
441
|
+
starts with one `{ command: "clear" }` entry, followed by one
|
|
442
|
+
`{ command: "set", key: "ase-issue-P<n/>", val: "<title/>:
|
|
443
|
+
<description/>" }` entry per reported PROBLEM and one
|
|
444
|
+
`{ command: "set", key: "ase-issue-T<n/>", val: "<title/>:
|
|
445
|
+
<description/>" }` entry per reported TRADEOFF.
|
|
439
446
|
</step>
|
|
440
447
|
|
|
441
448
|
4. <step id="STEP 4: Give Final Hint">
|
|
@@ -249,7 +249,7 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
|
|
|
249
249
|
a question with the following custom dialog, where per
|
|
250
250
|
approach A<n/>, you determine an ultra brief summary
|
|
251
251
|
<short-summary/> and then use the answer option `A<n/>:
|
|
252
|
-
⚝ **RECOMMENDATION**
|
|
252
|
+
⚝ **RECOMMENDATION** ⚝ - <short-summary/>` for your
|
|
253
253
|
recommended approach plus zero or more answer options `A<n/>:
|
|
254
254
|
<short-summary/>` for all other approaches:
|
|
255
255
|
|
|
@@ -319,7 +319,19 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
|
|
|
319
319
|
as <head/> (or `none` if the list is `none`/empty).
|
|
320
320
|
Set <args>--int-reuse-task</args>.
|
|
321
321
|
|
|
322
|
-
1. <if condition="<head/> is equal `
|
|
322
|
+
1. <if condition="<head/> is equal `DONE`">
|
|
323
|
+
Consume the head: set <getopt-option-next/> to the remaining
|
|
324
|
+
tokens (joined back with `,`, or `none` if empty). `DONE`
|
|
325
|
+
means the freshly composed plan is finalized as-is, so do
|
|
326
|
+
*not* hand off to `ase-task-edit`. Only output the following
|
|
327
|
+
<template/> and then *STOP*. Do *not* implement the plan.
|
|
328
|
+
|
|
329
|
+
<template>
|
|
330
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan finalized -- done**
|
|
331
|
+
</template>
|
|
332
|
+
</if>
|
|
333
|
+
|
|
334
|
+
2. <elseif condition="<head/> is equal `IMPLEMENT`">
|
|
323
335
|
Consume the head: set <getopt-option-next/> to the remaining
|
|
324
336
|
tokens (joined back with `,`, or `none` if empty).
|
|
325
337
|
<if condition="<getopt-option-next/> is not equal `none`">
|
|
@@ -327,9 +339,9 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
|
|
|
327
339
|
</if>
|
|
328
340
|
Call the tool `Skill(skill: "ase:ase-task-implement", args: "<args/>")`
|
|
329
341
|
to *implement* the freshly composed plan, bypassing `ase-task-edit`.
|
|
330
|
-
</
|
|
342
|
+
</elseif>
|
|
331
343
|
|
|
332
|
-
|
|
344
|
+
3. <elseif condition="<head/> is equal `PREFLIGHT`">
|
|
333
345
|
Consume the head: set <getopt-option-next/> to the remaining
|
|
334
346
|
tokens (joined back with `,`, or `none` if empty).
|
|
335
347
|
<if condition="<getopt-option-next/> is not equal `none`">
|
|
@@ -339,7 +351,7 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
|
|
|
339
351
|
to *preflight* the freshly composed plan, bypassing `ase-task-edit`.
|
|
340
352
|
</elseif>
|
|
341
353
|
|
|
342
|
-
|
|
354
|
+
4. <else>
|
|
343
355
|
Hand off to `ase-task-edit`.
|
|
344
356
|
<if condition="<head/> is equal `EDIT`">
|
|
345
357
|
Consume the head: set <getopt-option-next/> to the remaining
|
|
@@ -143,13 +143,24 @@ related to a set of code quality aspects.
|
|
|
143
143
|
Set <new-text/> to the `new_text` field of <item/>.
|
|
144
144
|
Set <context-after/> to the `context_after` field of <item/>.
|
|
145
145
|
|
|
146
|
-
2.
|
|
146
|
+
2. Set <old-start/> to the line of the first hunk line, i.e.,
|
|
147
|
+
the line of <context-before/> (one before <line/>).
|
|
148
|
+
Set <new-start/> to the same as <old-start/> (the unchanged
|
|
149
|
+
<context-before/> line shares the same start in both files).
|
|
150
|
+
Set <old-count/> to the total number of old-side hunk lines, i.e.,
|
|
151
|
+
the number of lines in <context-before/>, <old-text/>, and
|
|
152
|
+
<context-after/> combined.
|
|
153
|
+
Set <new-count/> to the total number of new-side hunk lines, i.e.,
|
|
154
|
+
the number of lines in <context-before/>, <new-text/>, and
|
|
155
|
+
<context-after/> combined.
|
|
156
|
+
|
|
157
|
+
3. If <context/> is not empty, set
|
|
147
158
|
<context><context/>,</context> (append a comma).
|
|
148
159
|
Then append the following <template/> to <context/>:
|
|
149
160
|
|
|
150
161
|
<template>`<file/>`:<line/></template>
|
|
151
162
|
|
|
152
|
-
|
|
163
|
+
4. Append the following <template/> to <diff-file/>:
|
|
153
164
|
|
|
154
165
|
<template>
|
|
155
166
|
@@ -<old-start/>,<old-count/> +<new-start/>,<new-count/> @@
|
|
@@ -159,18 +170,6 @@ related to a set of code quality aspects.
|
|
|
159
170
|
<context-after/>
|
|
160
171
|
</template>
|
|
161
172
|
|
|
162
|
-
Hints:
|
|
163
|
-
- The <old-start/> is the line of the first hunk line, i.e.,
|
|
164
|
-
the line of <context-before/> (one before <line/>).
|
|
165
|
-
- The <new-start/> is the same as <old-start/> (the unchanged
|
|
166
|
-
<context-before/> line shares the same start in both files).
|
|
167
|
-
- The <old-count/> is the total number of old-side hunk lines, i.e.,
|
|
168
|
-
the number of lines in <context-before/>, <old-text/>, and
|
|
169
|
-
<context-after/> combined.
|
|
170
|
-
- The <new-count/> is the total number of new-side hunk lines, i.e.,
|
|
171
|
-
the number of lines in <context-before/>, <new-text/>, and
|
|
172
|
-
<context-after/> combined.
|
|
173
|
-
|
|
174
173
|
</for>
|
|
175
174
|
|
|
176
175
|
3. Append <diff-file/> to <diff/>.
|
|
@@ -238,7 +238,7 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
|
|
|
238
238
|
a question with the following custom dialog, where per
|
|
239
239
|
approach A<n/>, you determine an ultra brief summary
|
|
240
240
|
<short-summary/> and then use the answer option `A<n/>:
|
|
241
|
-
⚝ **RECOMMENDATION**
|
|
241
|
+
⚝ **RECOMMENDATION** ⚝ - <short-summary/>` for your
|
|
242
242
|
recommended approach plus zero or more answer options `A<n/>:
|
|
243
243
|
<short-summary/>` for all other approaches:
|
|
244
244
|
|
|
@@ -308,7 +308,19 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
|
|
|
308
308
|
as <head/> (or `none` if the list is `none`/empty).
|
|
309
309
|
Set <args>--int-reuse-task</args>.
|
|
310
310
|
|
|
311
|
-
1. <if condition="<head/> is equal `
|
|
311
|
+
1. <if condition="<head/> is equal `DONE`">
|
|
312
|
+
Consume the head: set <getopt-option-next/> to the remaining
|
|
313
|
+
tokens (joined back with `,`, or `none` if empty). `DONE`
|
|
314
|
+
means the freshly composed plan is finalized as-is, so do
|
|
315
|
+
*not* hand off to `ase-task-edit`. Only output the following
|
|
316
|
+
<template/> and then *STOP*. Do *not* implement the plan.
|
|
317
|
+
|
|
318
|
+
<template>
|
|
319
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan finalized -- done**
|
|
320
|
+
</template>
|
|
321
|
+
</if>
|
|
322
|
+
|
|
323
|
+
2. <elseif condition="<head/> is equal `IMPLEMENT`">
|
|
312
324
|
Consume the head: set <getopt-option-next/> to the remaining
|
|
313
325
|
tokens (joined back with `,`, or `none` if empty).
|
|
314
326
|
<if condition="<getopt-option-next/> is not equal `none`">
|
|
@@ -316,9 +328,9 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
|
|
|
316
328
|
</if>
|
|
317
329
|
Call the tool `Skill(skill: "ase:ase-task-implement", args: "<args/>")`
|
|
318
330
|
to *implement* the freshly composed plan, bypassing `ase-task-edit`.
|
|
319
|
-
</
|
|
331
|
+
</elseif>
|
|
320
332
|
|
|
321
|
-
|
|
333
|
+
3. <elseif condition="<head/> is equal `PREFLIGHT`">
|
|
322
334
|
Consume the head: set <getopt-option-next/> to the remaining
|
|
323
335
|
tokens (joined back with `,`, or `none` if empty).
|
|
324
336
|
<if condition="<getopt-option-next/> is not equal `none`">
|
|
@@ -328,7 +340,7 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
|
|
|
328
340
|
to *preflight* the freshly composed plan, bypassing `ase-task-edit`.
|
|
329
341
|
</elseif>
|
|
330
342
|
|
|
331
|
-
|
|
343
|
+
4. <else>
|
|
332
344
|
Hand off to `ase-task-edit`.
|
|
333
345
|
<if condition="<head/> is equal `EDIT`">
|
|
334
346
|
Consume the head: set <getopt-option-next/> to the remaining
|
|
@@ -71,6 +71,7 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
|
|
|
71
71
|
<problem-id/> and stop processing.
|
|
72
72
|
|
|
73
73
|
2. <if condition="
|
|
74
|
+
<problem-id/> is not set AND
|
|
74
75
|
<problem/> matches the regexp `^[a-zA-Z][a-zA-Z0-9_-]*$`
|
|
75
76
|
">
|
|
76
77
|
Set <ase-task-id><problem/></ase-task-id> (set task id to problem)
|
|
@@ -289,7 +290,7 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
|
|
|
289
290
|
a question with the following custom dialog, where per
|
|
290
291
|
approach A<n/>, you determine an ultra brief summary
|
|
291
292
|
<short-summary/> and then use the answer option `A<n/>:
|
|
292
|
-
⚝ **RECOMMENDATION**
|
|
293
|
+
⚝ **RECOMMENDATION** ⚝ - <short-summary/>` for your
|
|
293
294
|
recommended approach plus zero or more answer options `A<n/>:
|
|
294
295
|
<short-summary/>` for all other approaches:
|
|
295
296
|
|
|
@@ -366,7 +367,19 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
|
|
|
366
367
|
as <head/> (or `none` if the list is `none`/empty).
|
|
367
368
|
Set <args>--int-reuse-task</args>.
|
|
368
369
|
|
|
369
|
-
1. <if condition="<head/> is equal `
|
|
370
|
+
1. <if condition="<head/> is equal `DONE`">
|
|
371
|
+
Consume the head: set <getopt-option-next/> to the remaining
|
|
372
|
+
tokens (joined back with `,`, or `none` if empty). `DONE`
|
|
373
|
+
means the freshly composed plan is finalized as-is, so do
|
|
374
|
+
*not* hand off to `ase-task-edit`. Only output the following
|
|
375
|
+
<template/> and then *STOP*. Do *not* implement the plan.
|
|
376
|
+
|
|
377
|
+
<template>
|
|
378
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan finalized -- done**
|
|
379
|
+
</template>
|
|
380
|
+
</if>
|
|
381
|
+
|
|
382
|
+
2. <elseif condition="<head/> is equal `IMPLEMENT`">
|
|
370
383
|
Consume the head: set <getopt-option-next/> to the remaining
|
|
371
384
|
tokens (joined back with `,`, or `none` if empty).
|
|
372
385
|
<if condition="<getopt-option-next/> is not equal `none`">
|
|
@@ -374,9 +387,9 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
|
|
|
374
387
|
</if>
|
|
375
388
|
Call the tool `Skill(skill: "ase:ase-task-implement", args: "<args/>")`
|
|
376
389
|
to *implement* the freshly composed plan, bypassing `ase-task-edit`.
|
|
377
|
-
</
|
|
390
|
+
</elseif>
|
|
378
391
|
|
|
379
|
-
|
|
392
|
+
3. <elseif condition="<head/> is equal `PREFLIGHT`">
|
|
380
393
|
Consume the head: set <getopt-option-next/> to the remaining
|
|
381
394
|
tokens (joined back with `,`, or `none` if empty).
|
|
382
395
|
<if condition="<getopt-option-next/> is not equal `none`">
|
|
@@ -386,7 +399,7 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
|
|
|
386
399
|
to *preflight* the freshly composed plan, bypassing `ase-task-edit`.
|
|
387
400
|
</elseif>
|
|
388
401
|
|
|
389
|
-
|
|
402
|
+
4. <else>
|
|
390
403
|
Hand off to `ase-task-edit`.
|
|
391
404
|
<if condition="<head/> is equal `EDIT`">
|
|
392
405
|
Consume the head: set <getopt-option-next/> to the remaining
|
|
@@ -119,6 +119,17 @@ Analyze documents for spelling, punctuation, or grammar errors
|
|
|
119
119
|
|
|
120
120
|
3. <if condition="<getopt-option-auto/> is not 'true'">
|
|
121
121
|
|
|
122
|
+
Set <old-start/> to the line of the first hunk line, i.e.,
|
|
123
|
+
the line of <context-before/> (one before <line/>).
|
|
124
|
+
Set <new-start/> to the same as <old-start/> (the unchanged
|
|
125
|
+
<context-before/> line shares the same start in both files).
|
|
126
|
+
Set <old-count/> to the total number of old-side hunk lines, i.e.,
|
|
127
|
+
the number of lines in <context-before/>, <old-text/>, and
|
|
128
|
+
<context-after/> combined.
|
|
129
|
+
Set <new-count/> to the total number of new-side hunk lines, i.e.,
|
|
130
|
+
the number of lines in <context-before/>, <new-text/>, and
|
|
131
|
+
<context-after/> combined.
|
|
132
|
+
|
|
122
133
|
Render the proposed correction as a *unified diff* with *up to
|
|
123
134
|
two* lines of context in a fenced block based on the following <template/>:
|
|
124
135
|
|
|
@@ -138,18 +149,6 @@ Analyze documents for spelling, punctuation, or grammar errors
|
|
|
138
149
|
|
|
139
150
|
</template>
|
|
140
151
|
|
|
141
|
-
Hints:
|
|
142
|
-
- The <old-start/> is the line of the first hunk line, i.e.,
|
|
143
|
-
the line of <context-before/> (one before <line/>).
|
|
144
|
-
- The <new-start/> is the same as <old-start/> (the unchanged
|
|
145
|
-
<context-before/> line shares the same start in both files).
|
|
146
|
-
- The <old-count/> is the total number of old-side hunk lines, i.e.,
|
|
147
|
-
the number of lines in <context-before/>, <old-text/>, and
|
|
148
|
-
<context-after/> combined.
|
|
149
|
-
- The <new-count/> is the total number of new-side hunk lines, i.e.,
|
|
150
|
-
the number of lines in <context-before/>, <new-text/>, and
|
|
151
|
-
<context-after/> combined.
|
|
152
|
-
|
|
153
152
|
</if>
|
|
154
153
|
|
|
155
154
|
4. <if condition="<getopt-option-auto/> is not 'true'">
|