@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
|
@@ -48,96 +48,25 @@ documents.
|
|
|
48
48
|
⚪ **PROOFREADING INVESTIGATION**
|
|
49
49
|
</template>
|
|
50
50
|
|
|
51
|
-
|
|
51
|
+
Dispatch the investigation to a *sub-agent* via the `Agent`
|
|
52
52
|
tool so that *no* investigation details leak into the user-visible
|
|
53
53
|
transcript. The sub-agent performs the silent reading and checking;
|
|
54
54
|
only its final structured return value is consumed here.
|
|
55
55
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
- `subagent_type`: `general-purpose`
|
|
59
|
-
- `description`: `Proofread Investigation`
|
|
60
|
-
- `prompt`: a *self-contained* briefing, instructing the sub-agent to:
|
|
61
|
-
|
|
62
|
-
1. Use the `Read` tool to read all document files referenced
|
|
63
|
-
by <getopt-arguments/>.
|
|
64
|
-
|
|
65
|
-
2. Check the contained texts *only* for the following problem
|
|
66
|
-
types:
|
|
67
|
-
|
|
68
|
-
- **Spelling**
|
|
69
|
-
- **Punctuation**
|
|
70
|
-
- **Grammar**
|
|
71
|
-
|
|
72
|
-
Do *NOT* flag stylistic preferences, Markdown formatting
|
|
73
|
-
choices, code/identifiers, XML/template tags, technical
|
|
74
|
-
terms, intentional capitalization, list/heading style, or
|
|
75
|
-
anything inside fenced code blocks or backtick spans. Be
|
|
76
|
-
conservative — only report clear, objective errors.
|
|
77
|
-
|
|
78
|
-
For each found problem:
|
|
79
|
-
|
|
80
|
-
- Set <type/> to the string `SPELLING`, `PUNCTUATION`, or
|
|
81
|
-
`GRAMMAR`, indicating the problem type.
|
|
82
|
-
|
|
83
|
-
- Set <file/> to the *relative* filename path of the document.
|
|
84
|
-
Set <line/> to the numeric 1-based line number in the
|
|
85
|
-
document.
|
|
86
|
-
|
|
87
|
-
- Set <old-text/> to the lines of the old text which
|
|
88
|
-
should be changed. Set <new-text/> to the lines of the
|
|
89
|
-
new text which will be changed.
|
|
90
|
-
|
|
91
|
-
- Set <description/> to an ultra-brief and concise
|
|
92
|
-
Markdown-formatted description of the problem with
|
|
93
|
-
a hint of what is wrong and why it is wrong. In
|
|
94
|
-
this description, mark up all referenced verbatim
|
|
95
|
-
words <words/> from <old-text/> or <new-text/> as
|
|
96
|
-
quoted strings containing monospaced text with
|
|
97
|
-
Markdown based on the following <template/>:
|
|
98
|
-
<template>"`<words/>`"</template>.
|
|
99
|
-
|
|
100
|
-
- Set <context-before/> to exactly *up to two* lines of
|
|
101
|
-
*unchanged* text context which occurs in the document
|
|
102
|
-
directly *before* <old-text/>, i.e., the lines (<line/> -
|
|
103
|
-
2) and (<line/> - 1). Reduce to just one line (<line/> -
|
|
104
|
-
1) if <old-text/> is the second line of the document. Set
|
|
105
|
-
<context-before/> to empty if <old-text/> is the first line in
|
|
106
|
-
the document.
|
|
107
|
-
|
|
108
|
-
- Set <context-after/> to exactly *up to two* lines of
|
|
109
|
-
*unchanged* text content which occurs in the document
|
|
110
|
-
directly *after* <old-text/> the lines (<line/> + <n/> + 1)
|
|
111
|
-
and (<line/> + <n/> + 2), where <n/> is the number of lines
|
|
112
|
-
in <old-text/>. Reduce to just one line (<line/> + <n/> + 1)
|
|
113
|
-
if <old-text/> is the second-last line of the document. Set
|
|
114
|
-
<context-after/> to empty if <old-text/> is the last line in
|
|
115
|
-
the document.
|
|
116
|
-
|
|
117
|
-
3. Return *exclusively* a single fenced JSON block (no prose,
|
|
118
|
-
no preamble, no summary) of the following shape:
|
|
119
|
-
|
|
120
|
-
```json
|
|
121
|
-
[
|
|
122
|
-
{
|
|
123
|
-
"type": <type/>,
|
|
124
|
-
"file": <file/>,
|
|
125
|
-
"line": <line/>,
|
|
126
|
-
"description": <description/>,
|
|
127
|
-
"context_before": <context-before/>,
|
|
128
|
-
"old_text": <old-text/>,
|
|
129
|
-
"new_text": <new-text/>,
|
|
130
|
-
"context_after": <context-after/>
|
|
131
|
-
},
|
|
132
|
-
[...]
|
|
133
|
-
]
|
|
134
|
-
```
|
|
56
|
+
For this, invoke *exactly once* the tool:
|
|
135
57
|
|
|
136
|
-
|
|
137
|
-
|
|
58
|
+
```text
|
|
59
|
+
Agent(
|
|
60
|
+
name: "ase-docs-proofread",
|
|
61
|
+
description: "Proofread Investigation",
|
|
62
|
+
subagent_type: "ase-docs-proofread",
|
|
63
|
+
mode: "plan",
|
|
64
|
+
prompt: <getopt-arguments/>
|
|
65
|
+
)
|
|
66
|
+
```
|
|
138
67
|
|
|
139
|
-
Parse the
|
|
140
|
-
<problems/> to that list.
|
|
68
|
+
Parse the single result message of the `Agent` tool as a JSON array
|
|
69
|
+
and set <problems/> to that list.
|
|
141
70
|
|
|
142
71
|
You *MUST* *NOT* output anything at all in this step 1 beyond the
|
|
143
72
|
single `Agent` tool invocation.
|
|
@@ -169,11 +98,9 @@ documents.
|
|
|
169
98
|
|
|
170
99
|
3. <step id="STEP 3: Correction">
|
|
171
100
|
|
|
172
|
-
1. You *MUST*
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
"agent.skill", val: "ase-docs-proofread", scope:
|
|
176
|
-
"session:<ase-session-id/>")` of the `ase` service.
|
|
101
|
+
1. You *MUST* call the MCP tool `config_set(key: "agent.skill", val:
|
|
102
|
+
"ase-docs-proofread", scope: "session:<ase-session-id/>")` of the
|
|
103
|
+
`ase` MCP server.
|
|
177
104
|
|
|
178
105
|
2. Iterate over all problems:
|
|
179
106
|
|
|
@@ -230,7 +157,6 @@ documents.
|
|
|
230
157
|
<expand name="user-dialog">
|
|
231
158
|
CORRECTION: How would you like to proceed with this proposed correction?
|
|
232
159
|
ACCEPT: Apply the proposed correction.
|
|
233
|
-
REFINE: Discard this proposed correction and generate a new one.
|
|
234
160
|
REJECT: Skip this proposed correction.
|
|
235
161
|
</expand>
|
|
236
162
|
|
|
@@ -253,15 +179,12 @@ documents.
|
|
|
253
179
|
|
|
254
180
|
</if>
|
|
255
181
|
|
|
256
|
-
- <if condition="
|
|
257
|
-
<result/> starts with 'REFINE' or
|
|
258
|
-
<result/> starts with 'OTHER'
|
|
259
|
-
">
|
|
182
|
+
- <if condition="<result/> starts with 'OTHER'">
|
|
260
183
|
|
|
261
|
-
Generate a *new* proposal for the *same* <item
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
184
|
+
Generate a *new* proposal for the *same* <item/>,
|
|
185
|
+
incorporating the user's free-text hint from <result/>
|
|
186
|
+
after the "OTHER:" prefix, and loop back to substep 2 of
|
|
187
|
+
this iteration. There is *no* cap on refinement rounds —
|
|
265
188
|
keep refining until the user picks `ACCEPT` or `REJECT`.
|
|
266
189
|
|
|
267
190
|
</if>
|
|
@@ -279,13 +202,16 @@ documents.
|
|
|
279
202
|
|
|
280
203
|
</for>
|
|
281
204
|
|
|
282
|
-
3.
|
|
283
|
-
|
|
284
|
-
"agent.skill", scope: "session:<ase-session-id/>")` of the `ase`
|
|
285
|
-
service.
|
|
205
|
+
3. You *MUST* call the MCP tool `config_delete(key: "agent.skill",
|
|
206
|
+
scope: "session:<ase-session-id/>")` of the `ase` MCP server.
|
|
286
207
|
|
|
287
208
|
4. You *MUST* *NOT* output any further additional explanations or
|
|
288
|
-
summaries at the end of this skill processing
|
|
209
|
+
summaries at the end of this skill processing, except for the
|
|
210
|
+
following final <template/>:
|
|
211
|
+
|
|
212
|
+
<template>
|
|
213
|
+
⚪ **PROOFREAD FINISHED**
|
|
214
|
+
</template>
|
|
289
215
|
|
|
290
216
|
</step>
|
|
291
217
|
|
|
@@ -248,7 +248,7 @@ multi-*criteria* decision matrix.
|
|
|
248
248
|
⚠ *ATTENTION: all alternatives rate negatively; this is the least-bad choice, not a strong winner!*
|
|
249
249
|
</template>
|
|
250
250
|
|
|
251
|
-
- Otherwise (<percentage/> is greater than or equal 0.10), output
|
|
251
|
+
- Otherwise (<percentage/> is greater than or equal to 0.10), output
|
|
252
252
|
just the following <template/> and do not output anything else:
|
|
253
253
|
|
|
254
254
|
<template>
|
|
@@ -6,7 +6,7 @@ description: >
|
|
|
6
6
|
The <persona> can be either the decorative, eloquent, and explaining "writer",
|
|
7
7
|
the concise, factual, and accurate "engineer" (default),
|
|
8
8
|
the brief, factual, and abbreviating "telegrapher",
|
|
9
|
-
the terse, rough and stuttering "caveman".
|
|
9
|
+
the terse, rough, and stuttering "caveman".
|
|
10
10
|
Use when user says "persona <persona>" or "be <persona>".
|
|
11
11
|
user-invocable: true
|
|
12
12
|
disable-model-invocation: false
|
|
@@ -81,7 +81,7 @@ by querying *multiple* AIs for an *optimal consensus*.
|
|
|
81
81
|
If all responses disagree, the consensus <c/> is zero.
|
|
82
82
|
If all responses agree, <c/> is <n/>.
|
|
83
83
|
|
|
84
|
-
If not all AIs agree, determine
|
|
84
|
+
If not all AIs agree, determine <disagreement/> information,
|
|
85
85
|
formatted as `(disagreement: <ai/>, <ai/>, [...])` where <ai/> is a
|
|
86
86
|
name of an AI which disagreed with the consensus. Else, if all AIs
|
|
87
87
|
agree, set <disagreement></disagreement>.
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ase-task-rename
|
|
3
|
+
argument-hint: "[<old>] <new>"
|
|
4
|
+
description: >
|
|
5
|
+
Rename the current or given task plan.
|
|
6
|
+
Use when the user calls to "rename", "move" or "relabel" the
|
|
7
|
+
"task", "plan", "spec", or "specification".
|
|
8
|
+
user-invocable: true
|
|
9
|
+
disable-model-invocation: false
|
|
10
|
+
effort: low
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
|
|
14
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
|
|
15
|
+
|
|
16
|
+
Rename a Task Plan
|
|
17
|
+
==================
|
|
18
|
+
|
|
19
|
+
<skill name="ase-task-rename">
|
|
20
|
+
Rename a Task Plan
|
|
21
|
+
</skill>
|
|
22
|
+
|
|
23
|
+
Your role is an experienced, *expert-level assistant*.
|
|
24
|
+
*Rename* the task plan.
|
|
25
|
+
|
|
26
|
+
Procedure
|
|
27
|
+
---------
|
|
28
|
+
|
|
29
|
+
You *MUST* follow the following numbered items *strictly* *sequentially*!
|
|
30
|
+
You *MUST* not skip any numbered item during processing!
|
|
31
|
+
|
|
32
|
+
You *MUST* *NOT* output anything in this entire procedure, *except* when
|
|
33
|
+
explicitly requested by this procedure via outputs based on a <template/>!
|
|
34
|
+
|
|
35
|
+
1. **Determine Task:**
|
|
36
|
+
|
|
37
|
+
1. Parse <arguments>$ARGUMENTS</arguments> into a whitespace-separated
|
|
38
|
+
list of tokens. Inherit the always existing <ase-task-id/> from
|
|
39
|
+
the current context. Do not output anything.
|
|
40
|
+
|
|
41
|
+
2. <if condition="<arguments/> contains two tokens">
|
|
42
|
+
Set <old/> to the first token of <arguments/>.
|
|
43
|
+
Set <new/> to the second token of <arguments/>.
|
|
44
|
+
Do not output anything.
|
|
45
|
+
</if>
|
|
46
|
+
|
|
47
|
+
3. <if condition="<arguments/> contains exactly one token">
|
|
48
|
+
Set <old><ase-task-id/></old>.
|
|
49
|
+
Set <new/> to the single token of <arguments/>.
|
|
50
|
+
Do not output anything.
|
|
51
|
+
</if>
|
|
52
|
+
|
|
53
|
+
4. <if condition="<arguments/> is empty OR contains more than two tokens">
|
|
54
|
+
Only output the following <template/> and then immediately
|
|
55
|
+
*STOP* processing the entire current skill:
|
|
56
|
+
|
|
57
|
+
<template>
|
|
58
|
+
⧉ **ASE**: ☻ skill: **ase-task-rename**, ▶ ERROR: expected `[<old>] <new>` arguments
|
|
59
|
+
</template>
|
|
60
|
+
</if>
|
|
61
|
+
|
|
62
|
+
2. **Perform Operation**:
|
|
63
|
+
|
|
64
|
+
1. Call the `task_rename(old: <old/>, new: <new/>)` tool of the
|
|
65
|
+
`ase` MCP service to rename the task plan and set <text/> to the
|
|
66
|
+
`text` output field of this `task_rename` tool call. Do not
|
|
67
|
+
output anything related to this MCP tool call.
|
|
68
|
+
|
|
69
|
+
- If <text/> starts with `ERROR:` or `WARNING:`:
|
|
70
|
+
Only output the following <template/>:
|
|
71
|
+
|
|
72
|
+
<template>
|
|
73
|
+
⧉ **ASE**: ◉ task: **<old/>**, ▶ status: **<text/>**
|
|
74
|
+
</template>
|
|
75
|
+
|
|
76
|
+
- If <text/> starts NOT with `ERROR:` and NOT with `WARNING:`:
|
|
77
|
+
Only output the following <template/>:
|
|
78
|
+
|
|
79
|
+
<template>
|
|
80
|
+
⧉ **ASE**: ◉ task: **<new/>**, ▶ status: **task renamed**
|
|
81
|
+
</template>
|
|
82
|
+
|
|
83
|
+
2. <if condition="<old/> is equal <ase-task-id/>">
|
|
84
|
+
Set <ase-task-id><new/></ase-task-id>. Call the `task_id(id:
|
|
85
|
+
<ase-task-id/>, session: <ase-session-id/>)` tool from the `ase`
|
|
86
|
+
MCP service to switch the task to the renamed task. Only output
|
|
87
|
+
the following <template/>:
|
|
88
|
+
|
|
89
|
+
<template>
|
|
90
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **task switched**
|
|
91
|
+
</template>
|
|
92
|
+
</if>
|