@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.
@@ -48,96 +48,25 @@ documents.
48
48
  ⚪ **PROOFREADING INVESTIGATION**
49
49
  </template>
50
50
 
51
- Then dispatch the investigation to a *sub-agent* via the `Agent`
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
- Invoke the `Agent` tool *exactly once* with:
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
- 4. You *MUST* *NOT* propose, apply, or render any document
137
- changes itself.
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 JSON array from the sub-agent's return value and set
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* activate the auto-approve gate for the `Edit` tool
173
- by setting the session-scoped `agent.skill` configuration value
174
- to this skill's name via the MCP tool call `config_set(key:
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
- (incorporating the user's free-text hint from <result/> if
263
- provided via the "OTHER" prefix) and loop back to substep 2
264
- of this iteration. There is *no* cap on refinement rounds —
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. After the iteration has finished, you *MUST* clear the auto-approve
283
- gate via the call MCP tool call `config_delete(key:
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
+ &#x26AA; **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 a <disagreement/> information,
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>