@rse/ase 0.9.44 → 0.9.46
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-setup.js +50 -0
- package/package.json +3 -3
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/.codex-plugin/plugin.json +1 -1
- package/plugin/.github/plugin/plugin.json +1 -1
- package/plugin/agents/ase-code-lint.md +11 -0
- package/plugin/agents/ase-docs-proofread.md +8 -0
- package/plugin/agents/ase-meta-chat.md +13 -7
- package/plugin/agents/ase-meta-search.md +0 -1
- package/plugin/etc/stx.conf +6 -1
- package/plugin/meta/ase-common-task.md +145 -0
- package/plugin/meta/ase-constitution.md +4 -1
- package/plugin/meta/ase-dialog.md +7 -7
- package/plugin/meta/ase-format-arch.md +4 -4
- package/plugin/meta/ase-format-spec.md +23 -23
- package/plugin/meta/ase-format-task.md +1 -1
- package/plugin/meta/ase-persona.md +3 -3
- package/plugin/meta/ase-skill.md +2 -2
- package/plugin/meta/ase-tenets.md +4 -4
- package/plugin/package.json +1 -1
- package/plugin/skills/ase-arch-analyze/SKILL.md +2 -3
- package/plugin/skills/ase-code-craft/SKILL.md +23 -9
- package/plugin/skills/ase-code-craft/help.md +5 -4
- package/plugin/skills/ase-code-lint/SKILL.md +19 -3
- package/plugin/skills/ase-code-refactor/SKILL.md +23 -9
- package/plugin/skills/ase-code-refactor/help.md +5 -4
- package/plugin/skills/ase-code-resolve/SKILL.md +22 -8
- package/plugin/skills/ase-code-resolve/help.md +6 -5
- package/plugin/skills/ase-docs-distill/SKILL.md +6 -6
- package/plugin/skills/ase-docs-proofread/SKILL.md +18 -3
- package/plugin/skills/ase-meta-changelog/SKILL.md +5 -2
- package/plugin/skills/ase-meta-commit/SKILL.md +4 -4
- package/plugin/skills/ase-meta-compat/SKILL.md +3 -3
- package/plugin/skills/ase-meta-diaboli/SKILL.md +2 -2
- package/plugin/skills/ase-meta-eli5/SKILL.md +116 -0
- package/plugin/skills/ase-meta-eli5/help.md +61 -0
- package/plugin/skills/ase-meta-evaluate/SKILL.md +6 -9
- package/plugin/skills/ase-meta-intent/SKILL.md +157 -0
- package/plugin/skills/ase-meta-intent/help.md +56 -0
- package/plugin/skills/ase-meta-proximity/SKILL.md +224 -0
- package/plugin/skills/ase-meta-proximity/help.md +78 -0
- package/plugin/skills/ase-meta-quorum/SKILL.md +33 -4
- package/plugin/skills/ase-meta-search/SKILL.md +1 -1
- package/plugin/skills/ase-meta-steelman/SKILL.md +3 -3
- package/plugin/skills/ase-meta-why/SKILL.md +1 -1
- package/plugin/skills/ase-sync-export/SKILL.md +7 -7
- package/plugin/skills/ase-sync-import/SKILL.md +20 -16
- package/plugin/skills/ase-sync-reconcile/SKILL.md +9 -9
- package/plugin/skills/ase-task-condense/SKILL.md +34 -79
- package/plugin/skills/ase-task-edit/SKILL.md +41 -49
- package/plugin/skills/ase-task-grill/SKILL.md +10 -12
- package/plugin/skills/ase-task-id/SKILL.md +7 -3
- package/plugin/skills/ase-task-implement/SKILL.md +18 -111
- package/plugin/skills/ase-task-list/SKILL.md +3 -0
- package/plugin/skills/ase-task-preflight/SKILL.md +22 -115
- package/plugin/skills/ase-task-reboot/SKILL.md +27 -63
- package/plugin/skills/ase-task-view/SKILL.md +7 -7
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
|
|
2
|
+
## NAME
|
|
3
|
+
|
|
4
|
+
`ase-meta-proximity` - Determine the Conceptual Proximity of a Topic
|
|
5
|
+
|
|
6
|
+
## SYNOPSIS
|
|
7
|
+
|
|
8
|
+
`ase-meta-proximity`
|
|
9
|
+
[`--help`|`-h`]
|
|
10
|
+
[`--ground`|`-g`]
|
|
11
|
+
[`--loop`|`-l`]
|
|
12
|
+
*topic*
|
|
13
|
+
|
|
14
|
+
## DESCRIPTION
|
|
15
|
+
|
|
16
|
+
The `ase-meta-proximity` skill determines the *conceptual proximity* of
|
|
17
|
+
the supplied *topic* along three dimensions and reports the neighboring
|
|
18
|
+
topics grouped into three labeled sections: *PARENT* (the single broader
|
|
19
|
+
topic that *topic* specializes), *SIBLINGS* (the four most relevant
|
|
20
|
+
topics on the same level, sharing the same parent), and *CHILDREN* (the
|
|
21
|
+
four most relevant narrower topics that specialize *topic*).
|
|
22
|
+
|
|
23
|
+
By default the proximity is derived from model knowledge only. With the
|
|
24
|
+
`--ground`/`-g` option, the skill first searches the Internet/Web for
|
|
25
|
+
facts about the topic via the `ase-meta-search` skill (dispatched in a
|
|
26
|
+
sub-agent, querying all available search backends) and grounds the
|
|
27
|
+
determination in the found facts.
|
|
28
|
+
|
|
29
|
+
Without the `--loop`/`-l` option, the skill determines and prints the
|
|
30
|
+
proximity of the given topic once and then stops. With the `--loop`/`-l`
|
|
31
|
+
option, the skill instead presents the nine neighboring topics in an
|
|
32
|
+
interactive dialog; selecting one of them makes it the new *current
|
|
33
|
+
topic* and restarts the determination from the beginning, so the user
|
|
34
|
+
can *navigate* the topic taxonomy up (parent), sideways (siblings), and
|
|
35
|
+
down (children). Cancelling the dialog exits the loop. When `--loop` is
|
|
36
|
+
combined with `--ground`, each newly selected topic is re-grounded via
|
|
37
|
+
the `ase-meta-search` sub-agent before its proximity is re-determined.
|
|
38
|
+
|
|
39
|
+
## OPTIONS
|
|
40
|
+
|
|
41
|
+
`--ground`|`-g`:
|
|
42
|
+
Ground the determination in Internet/Web facts gathered via the
|
|
43
|
+
`ase-meta-search` skill before determining the proximity. Without
|
|
44
|
+
this option, the determination is derived from model knowledge only.
|
|
45
|
+
When combined with `--loop`, every newly navigated-to topic is
|
|
46
|
+
re-grounded.
|
|
47
|
+
|
|
48
|
+
`--loop`|`-l`:
|
|
49
|
+
Present the neighboring topics in an interactive dialog and, upon
|
|
50
|
+
selection, adopt the picked topic as the new current topic and
|
|
51
|
+
restart the determination. Without this option, the proximity of the
|
|
52
|
+
given topic is printed once and the skill stops.
|
|
53
|
+
|
|
54
|
+
## ARGUMENTS
|
|
55
|
+
|
|
56
|
+
*topic*:
|
|
57
|
+
The topic whose conceptual proximity is to be determined. It may be
|
|
58
|
+
a technical concept, a phenomenon, or any other subject; the skill
|
|
59
|
+
determines its parent, sibling, and child topics.
|
|
60
|
+
|
|
61
|
+
## EXAMPLES
|
|
62
|
+
|
|
63
|
+
Determine the proximity of a topic from model knowledge:
|
|
64
|
+
|
|
65
|
+
```text
|
|
66
|
+
❯ /ase-meta-proximity Fourier transform
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Interactively navigate the conceptual neighborhood, grounded in
|
|
70
|
+
Internet/Web facts:
|
|
71
|
+
|
|
72
|
+
```text
|
|
73
|
+
❯ /ase-meta-proximity --ground --loop Agentic Software Engineering
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## SEE ALSO
|
|
77
|
+
|
|
78
|
+
[`ase-meta-eli5`](../ase-meta-eli5/help.md), [`ase-meta-search`](../ase-meta-search/help.md), [`ase-code-explain`](../ase-code-explain/help.md).
|
|
@@ -2,13 +2,17 @@
|
|
|
2
2
|
name: ase-meta-quorum
|
|
3
3
|
argument-hint: "[--help|-h] [--models|-m <model>[,...]] <question>"
|
|
4
4
|
description: >
|
|
5
|
-
Query
|
|
5
|
+
Query multiple foreign AIs in parallel and synthesize a consensus
|
|
6
|
+
("quorum") answer with a consensus rating. Use when the user wants
|
|
7
|
+
a quorum, a consensus answer, or the opinions of multiple AIs on a
|
|
8
|
+
question.
|
|
6
9
|
user-invocable: true
|
|
7
10
|
disable-model-invocation: false
|
|
8
11
|
effort: high
|
|
9
12
|
allowed-tools:
|
|
10
13
|
- "Agent"
|
|
11
14
|
- "TaskCreate"
|
|
15
|
+
- "TaskUpdate"
|
|
12
16
|
---
|
|
13
17
|
|
|
14
18
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
|
|
@@ -21,7 +25,7 @@ Query Multiple AIs for Quorum Answer
|
|
|
21
25
|
|
|
22
26
|
<expand name="getopt"
|
|
23
27
|
arg1="ase-meta-quorum"
|
|
24
|
-
arg2="--models|-m=(all|chatgpt|gemini|deepseek|grok|glm|qwen)...">
|
|
28
|
+
arg2="--models|-m=(all|chatgpt|gemini|deepseek|grok|glm|qwen|claude|codex|copilot)...">
|
|
25
29
|
$ARGUMENTS
|
|
26
30
|
</expand>
|
|
27
31
|
|
|
@@ -65,7 +69,8 @@ by querying *multiple* AIs for an *optimal consensus*.
|
|
|
65
69
|
as a comma-separated list of model tokens. The getopt parser
|
|
66
70
|
validates only the *first* token, so you *MUST* validate each
|
|
67
71
|
remaining token yourself against the allowed set `all`, `chatgpt`,
|
|
68
|
-
`gemini`, `deepseek`, `grok`, `glm`, `qwen
|
|
72
|
+
`gemini`, `deepseek`, `grok`, `glm`, `qwen`, `claude`, `codex`,
|
|
73
|
+
`copilot`. If any token is *not*
|
|
69
74
|
in this set, bind <token/> to that offending token, then only output
|
|
70
75
|
the following <template/> and then immediately *STOP* processing the
|
|
71
76
|
entire current skill:
|
|
@@ -76,7 +81,10 @@ by querying *multiple* AIs for an *optimal consensus*.
|
|
|
76
81
|
|
|
77
82
|
The default is the single token `all`. If <getopt-option-models/>
|
|
78
83
|
contains the token `all`, you *MUST* treat it as the full list
|
|
79
|
-
`chatgpt,gemini,deepseek,grok,glm,qwen` (all models).
|
|
84
|
+
`chatgpt,gemini,deepseek,grok,glm,qwen` (all API-based models). The
|
|
85
|
+
harness-based models `claude`, `codex`, and `copilot` are *never*
|
|
86
|
+
part of `all` and are queried only when their token is given
|
|
87
|
+
*explicitly* (in addition to `all`, if wished). Anthropic
|
|
80
88
|
Claude (yourself) is *always* included, independent of this option.
|
|
81
89
|
|
|
82
90
|
<define name="agent">
|
|
@@ -116,6 +124,15 @@ by querying *multiple* AIs for an *optimal consensus*.
|
|
|
116
124
|
<if condition="<getopt-option-models/> contains `all` OR <getopt-option-models/> contains `qwen`">
|
|
117
125
|
<expand name="agent" arg1="Alibaba Qwen" arg2="qwen"></expand>
|
|
118
126
|
</if>
|
|
127
|
+
<if condition="<getopt-option-models/> contains `claude`">
|
|
128
|
+
<expand name="agent" arg1="Anthropic Claude (harness)" arg2="claude"></expand>
|
|
129
|
+
</if>
|
|
130
|
+
<if condition="<getopt-option-models/> contains `codex`">
|
|
131
|
+
<expand name="agent" arg1="OpenAI Codex" arg2="codex"></expand>
|
|
132
|
+
</if>
|
|
133
|
+
<if condition="<getopt-option-models/> contains `copilot`">
|
|
134
|
+
<expand name="agent" arg1="GitHub Copilot" arg2="copilot"></expand>
|
|
135
|
+
</if>
|
|
119
136
|
|
|
120
137
|
You *MUST* *NOT* output anything in this step.
|
|
121
138
|
|
|
@@ -202,6 +219,18 @@ by querying *multiple* AIs for an *optimal consensus*.
|
|
|
202
219
|
○ **Alibaba Qwen**:
|
|
203
220
|
- [...]
|
|
204
221
|
- [...]
|
|
222
|
+
|
|
223
|
+
○ **Anthropic Claude (harness)**:
|
|
224
|
+
- [...]
|
|
225
|
+
- [...]
|
|
226
|
+
|
|
227
|
+
○ **OpenAI Codex**:
|
|
228
|
+
- [...]
|
|
229
|
+
- [...]
|
|
230
|
+
|
|
231
|
+
○ **GitHub Copilot**:
|
|
232
|
+
- [...]
|
|
233
|
+
- [...]
|
|
205
234
|
</template>
|
|
206
235
|
|
|
207
236
|
In this output, when a quorum was *not* possible (see STEP 4),
|
|
@@ -109,7 +109,7 @@ Your objective is to *search* the *Internet*/*Web* for the following query:
|
|
|
109
109
|
|
|
110
110
|
2. <step id="STEP 2: Consolidate Search Answers">
|
|
111
111
|
|
|
112
|
-
Consolidate all responses from the `ase:ase-meta-search`
|
|
112
|
+
Consolidate all responses from the `ase:ase-meta-search` agent
|
|
113
113
|
calls above into a single response and output it without giving any
|
|
114
114
|
further explanations.
|
|
115
115
|
|
|
@@ -15,7 +15,7 @@ effort: xhigh
|
|
|
15
15
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
|
|
16
16
|
|
|
17
17
|
<skill name="ase-meta-steelman">
|
|
18
|
-
|
|
18
|
+
Build the "Steelman" Argument
|
|
19
19
|
</skill>
|
|
20
20
|
|
|
21
21
|
<expand name="getopt"
|
|
@@ -25,8 +25,8 @@ effort: xhigh
|
|
|
25
25
|
</expand>
|
|
26
26
|
|
|
27
27
|
<objective>
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
Build the "Steelman" argument by constructing the strongest
|
|
29
|
+
possible case for the thesis: <thesis><getopt-arguments/></thesis>
|
|
30
30
|
</objective>
|
|
31
31
|
|
|
32
32
|
Determine the number of *rounds* to perform: set <rounds/> to
|
|
@@ -47,7 +47,7 @@ addressing surface-level symptoms.
|
|
|
47
47
|
|
|
48
48
|
2. <step id="STEP 2: Root-Cause Analysis">
|
|
49
49
|
|
|
50
|
-
Find the root-cause of <problem/> by following
|
|
50
|
+
Find the root-cause of <problem/> by following this iteration cycle.
|
|
51
51
|
Start with a <question/> set equal to the <problem/>.
|
|
52
52
|
|
|
53
53
|
Determine the *maximum chain length* from <getopt-option-depth/>:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ase-sync-export
|
|
3
|
-
argument-hint: "[--help|-h] [--source|-s <source>[,...]] [<
|
|
3
|
+
argument-hint: "[--help|-h] [--source|-s <source>[,...]] [<hint>]"
|
|
4
4
|
description: >
|
|
5
5
|
Export artifact content into side-by-side, ready-to-consume files,
|
|
6
6
|
one per artifact that declares an export. Use when the user wants to
|
|
@@ -18,7 +18,7 @@ allowed-tools:
|
|
|
18
18
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
|
|
19
19
|
|
|
20
20
|
<skill name="ase-sync-export">
|
|
21
|
-
|
|
21
|
+
Export Artifact Set to Side-by-Side Files
|
|
22
22
|
</skill>
|
|
23
23
|
|
|
24
24
|
<expand name="getopt"
|
|
@@ -28,11 +28,11 @@ allowed-tools:
|
|
|
28
28
|
</expand>
|
|
29
29
|
|
|
30
30
|
<objective>
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
31
|
+
*Export* the *source* artifact kinds (optionally filtered by
|
|
32
|
+
<hint/>) into side-by-side files, by reading the source artifacts
|
|
33
|
+
and materializing, for every artifact that declares an export,
|
|
34
|
+
the corresponding derived file next to the artifact itself.
|
|
35
|
+
<hint><getopt-arguments/></hint>.
|
|
36
36
|
</objective>
|
|
37
37
|
|
|
38
38
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-format-meta.md
|
|
@@ -17,7 +17,7 @@ effort: xhigh
|
|
|
17
17
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
|
|
18
18
|
|
|
19
19
|
<skill name="ase-sync-import">
|
|
20
|
-
|
|
20
|
+
Import Foreign Sources into Artifact Set
|
|
21
21
|
</skill>
|
|
22
22
|
|
|
23
23
|
<expand name="getopt"
|
|
@@ -27,11 +27,11 @@ effort: xhigh
|
|
|
27
27
|
</expand>
|
|
28
28
|
|
|
29
29
|
<objective>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
30
|
+
*Import* the information of the *foreign sources* (named by the
|
|
31
|
+
<hint/>) into the *target* artifact kinds, by reading the foreign
|
|
32
|
+
sources and generating or updating the target artifacts to faithfully
|
|
33
|
+
reflect the imported information:
|
|
34
|
+
<hint><getopt-arguments/></hint>.
|
|
35
35
|
</objective>
|
|
36
36
|
|
|
37
37
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-format-meta.md
|
|
@@ -49,7 +49,7 @@ Procedure
|
|
|
49
49
|
|
|
50
50
|
1. The recognized artifact kinds are the seven tokens `TASK`,
|
|
51
51
|
`SPEC`, `ARCH`, `CODE`, `DOCS`, `INFR`, and `OTHR`. Parse
|
|
52
|
-
<getopt-target/> as the comma-separated <target/> kind list.
|
|
52
|
+
<getopt-option-target/> as the comma-separated <target/> kind list.
|
|
53
53
|
Upper-case and trim every parsed kind token. Do not output
|
|
54
54
|
anything.
|
|
55
55
|
|
|
@@ -111,12 +111,15 @@ Procedure
|
|
|
111
111
|
|
|
112
112
|
3. <step id="STEP 3: Generate or Update Artifacts">
|
|
113
113
|
|
|
114
|
-
1. For all kinds in <target
|
|
115
|
-
... ])` tool of the `ase` MCP server
|
|
116
|
-
lower-cased `kind` tokens, and read the
|
|
117
|
-
array of `{ kind, files }` objects to
|
|
118
|
-
file list per kind.
|
|
119
|
-
|
|
114
|
+
1. For all kinds in <target/> except `TASK`, call the
|
|
115
|
+
`ase_artifact_list(kind: [ ... ])` tool of the `ase` MCP server
|
|
116
|
+
*once*, passing the lower-cased `kind` tokens, and read the
|
|
117
|
+
returned `artifacts` array of `{ kind, files }` objects to
|
|
118
|
+
obtain the project-relative file list per kind. The `TASK` kind
|
|
119
|
+
is *not* resolvable via `ase_artifact_list` (task plans are
|
|
120
|
+
managed by the `ase_task_*` tools), so resolve and read it via
|
|
121
|
+
the `ase_task_id` and `ase_task_load` tools instead. Read all
|
|
122
|
+
*existing* target artifacts to understand their current state.
|
|
120
123
|
|
|
121
124
|
2. Internalize and honor the artifact-format conventions:
|
|
122
125
|
|
|
@@ -136,8 +139,8 @@ Procedure
|
|
|
136
139
|
**ASE Tenets** when generating or updating in the following. Do
|
|
137
140
|
not output anything.
|
|
138
141
|
|
|
139
|
-
4.
|
|
140
|
-
|
|
142
|
+
4. Call the `ase_timestamp(format: "yyyy-LL-dd HH:mm")` tool of the
|
|
143
|
+
`ase` MCP server *once* to find out the current time and store it in
|
|
141
144
|
<timestamp-modified/>.
|
|
142
145
|
|
|
143
146
|
5. *Generate or update* the <target/> artifact files so that they
|
|
@@ -163,7 +166,8 @@ Procedure
|
|
|
163
166
|
abstraction (a SPEC states intent, an ARCH states structure).
|
|
164
167
|
|
|
165
168
|
Apply the generation/update directly to the target artifacts via
|
|
166
|
-
the `Write`/`Edit` tools.
|
|
169
|
+
the `Write`/`Edit` tools. For a `TASK` target, apply it via the
|
|
170
|
+
`ase_task_save` tool instead.
|
|
167
171
|
|
|
168
172
|
6. Report the performed changes with the following <template/>, listing
|
|
169
173
|
one bullet line per generated or updated file (with <file/> its
|
|
@@ -17,7 +17,7 @@ effort: xhigh
|
|
|
17
17
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
|
|
18
18
|
|
|
19
19
|
<skill name="ase-sync-reconcile">
|
|
20
|
-
|
|
20
|
+
Reconcile Artifact Set to Artifact Set
|
|
21
21
|
</skill>
|
|
22
22
|
|
|
23
23
|
<expand name="getopt"
|
|
@@ -27,10 +27,10 @@ effort: xhigh
|
|
|
27
27
|
</expand>
|
|
28
28
|
|
|
29
29
|
<objective>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
*Reconcile* the *target* artifact kinds to *reflect* the *current
|
|
31
|
+
state* of the *source* artifact kinds, by reading the source
|
|
32
|
+
artifacts and aligning the target artifacts accordingly:
|
|
33
|
+
<hint><getopt-arguments/></hint>.
|
|
34
34
|
</objective>
|
|
35
35
|
|
|
36
36
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-format-meta.md
|
|
@@ -48,8 +48,8 @@ Procedure
|
|
|
48
48
|
|
|
49
49
|
1. The recognized artifact kinds are the seven tokens `TASK`,
|
|
50
50
|
`SPEC`, `ARCH`, `CODE`, `DOCS`, `INFR`, and `OTHR`. Parse
|
|
51
|
-
<getopt-target/> as the comma-separated <target/> kind list and
|
|
52
|
-
<getopt-source/> as the comma-separated <source/> kind list.
|
|
51
|
+
<getopt-option-target/> as the comma-separated <target/> kind list and
|
|
52
|
+
<getopt-option-source/> as the comma-separated <source/> kind list.
|
|
53
53
|
Upper-case and trim every parsed kind token. Do not output
|
|
54
54
|
anything.
|
|
55
55
|
|
|
@@ -81,7 +81,7 @@ Procedure
|
|
|
81
81
|
⧉ **ASE**: ☻ skill: **ase-sync-reconcile**, ▶ ERROR: unknown or unsupported artifact kind: **<kind/>**
|
|
82
82
|
</template>
|
|
83
83
|
|
|
84
|
-
5. <if condition="<getopt-bidirectional/> is not 'true'">
|
|
84
|
+
5. <if condition="<getopt-option-bidirectional/> is not 'true'">
|
|
85
85
|
|
|
86
86
|
Remove from <source/> any kind that is also present in <target/>
|
|
87
87
|
(a kind is never its own source).
|
|
@@ -157,7 +157,7 @@ Procedure
|
|
|
157
157
|
the `ase` MCP server to find out the current time and store it in
|
|
158
158
|
<timestamp-modified/>.
|
|
159
159
|
|
|
160
|
-
4. <if condition="<getopt-bidirectional/> is equal 'true'">
|
|
160
|
+
4. <if condition="<getopt-option-bidirectional/> is equal 'true'">
|
|
161
161
|
|
|
162
162
|
*Bidirectionally update* the <target/> and <source/> artifacts
|
|
163
163
|
so that they faithfully *reflect the current state* of each
|
|
@@ -31,10 +31,21 @@ semantics exactly.
|
|
|
31
31
|
</objective>
|
|
32
32
|
|
|
33
33
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-format-task.md
|
|
34
|
+
@${CLAUDE_SKILL_DIR}/../../meta/ase-common-task.md
|
|
34
35
|
|
|
35
36
|
Procedure
|
|
36
37
|
---------
|
|
37
38
|
|
|
39
|
+
<define name="handoff-args">
|
|
40
|
+
Set <args></args> (set args to empty).
|
|
41
|
+
<if condition="the condensed plan was saved via `ase_task_save` in step 3">
|
|
42
|
+
Set <args>--int-reuse-task</args>.
|
|
43
|
+
</if>
|
|
44
|
+
<if condition="<getopt-option-next/> is not equal `none`">
|
|
45
|
+
Set <args><args/> --next <getopt-option-next/></args>
|
|
46
|
+
</if>
|
|
47
|
+
</define>
|
|
48
|
+
|
|
38
49
|
1. **Determine Task:**
|
|
39
50
|
|
|
40
51
|
1. Set <id><getopt-arguments/></id> initially.
|
|
@@ -76,20 +87,21 @@ Procedure
|
|
|
76
87
|
the `text` output field of the `ase_task_load` tool call.
|
|
77
88
|
|
|
78
89
|
- If <text/> starts with `ERROR:` or `WARNING:`:
|
|
79
|
-
|
|
90
|
+
Silently ignore the MCP error.
|
|
91
|
+
Set <task-content></task-content> (set task content to empty).
|
|
80
92
|
Set <words/> to "0".
|
|
81
93
|
|
|
82
94
|
- If <text/> starts NOT with `ERROR:` and NOT with `WARNING:`:
|
|
83
|
-
Set <content><text/></content> (set content to text).
|
|
84
|
-
Calculate the number of words <words/> of <content/>.
|
|
95
|
+
Set <task-content><text/></task-content> (set task content to text).
|
|
96
|
+
Calculate the number of words <words/> of <task-content/>.
|
|
85
97
|
|
|
86
98
|
Set <words-before><words/></words-before> (remember the loaded
|
|
87
99
|
word count for the strictly-smaller check in step 3).
|
|
88
100
|
|
|
89
|
-
<if condition="<content/> contains '⎈ Created: <text/>'">
|
|
101
|
+
<if condition="<task-content/> contains '⎈ Created: <text/>'">
|
|
90
102
|
Set <timestamp-created><text/></timestamp-created> (extract the
|
|
91
103
|
original creation timestamp so it can be re-inserted unchanged
|
|
92
|
-
into the condensed <content/> in step 3).
|
|
104
|
+
into the condensed <task-content/> in step 3).
|
|
93
105
|
</if>
|
|
94
106
|
|
|
95
107
|
Only output the following <template/>:
|
|
@@ -98,7 +110,7 @@ Procedure
|
|
|
98
110
|
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan loaded**
|
|
99
111
|
</template>
|
|
100
112
|
|
|
101
|
-
2. <if condition="<content/> is empty">
|
|
113
|
+
2. <if condition="<task-content/> is empty">
|
|
102
114
|
Complain and tell the user to use the `ase-code-resolve`,
|
|
103
115
|
`ase-code-refactor`, `ase-code-craft`, or `ase-task-edit` skills
|
|
104
116
|
first to create a task plan. Then immediately stop processing
|
|
@@ -107,8 +119,8 @@ Procedure
|
|
|
107
119
|
|
|
108
120
|
3. **Condense Task Plan:**
|
|
109
121
|
|
|
110
|
-
1. *Apply the condense ruleset* to <content/>, producing a shorter
|
|
111
|
-
<content/>. The goal is to make the plan require as *little
|
|
122
|
+
1. *Apply the condense ruleset* to <task-content/>, producing a shorter
|
|
123
|
+
<task-content/>. The goal is to make the plan require as *little
|
|
112
124
|
reading* as possible while all semantics remain *fully preserved
|
|
113
125
|
and unchanged*. Honor the following ruleset *strictly*:
|
|
114
126
|
|
|
@@ -148,25 +160,10 @@ Procedure
|
|
|
148
160
|
longer wording*.
|
|
149
161
|
|
|
150
162
|
2. *Persist only if smaller*: calculate the number of words <words/>
|
|
151
|
-
of the condensed <content/>.
|
|
163
|
+
of the condensed <task-content/>.
|
|
152
164
|
|
|
153
165
|
- <if condition="<words/> is strictly smaller than <words-before/>">
|
|
154
|
-
|
|
155
|
-
ISO-style format, which has to be determined by calling
|
|
156
|
-
the `ase_timestamp(format: "yyyy-LL-dd HH:mm")` tool
|
|
157
|
-
of the `ase` MCP server and use the `text` field of
|
|
158
|
-
its response. Keep the original <timestamp-created/>,
|
|
159
|
-
re-insert the current <ase-task-id/> and the refreshed
|
|
160
|
-
<timestamp-modified/> into <content/>.
|
|
161
|
-
|
|
162
|
-
Call the `ase_task_save(id: "<ase-task-id/>", text:
|
|
163
|
-
"<content/>")` tool of the `ase` MCP server to save the
|
|
164
|
-
condensed task plan content. Do not output anything related
|
|
165
|
-
to this MCP call except the following <template/>:
|
|
166
|
-
|
|
167
|
-
<template>
|
|
168
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan condensed**
|
|
169
|
-
</template>
|
|
166
|
+
<expand name="task-save-content" arg1="plan condensed"></expand>
|
|
170
167
|
</if>
|
|
171
168
|
|
|
172
169
|
- <if condition="<words/> is NOT strictly smaller than <words-before/>">
|
|
@@ -182,39 +179,15 @@ Procedure
|
|
|
182
179
|
|
|
183
180
|
1. *Determine next step*:
|
|
184
181
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
Set <result><head/></result>.
|
|
195
|
-
|
|
196
|
-
- else:
|
|
197
|
-
Only output the following <template/> and then immediately
|
|
198
|
-
*STOP* processing the entire current skill:
|
|
199
|
-
|
|
200
|
-
<template>
|
|
201
|
-
⧉ **ASE**: ☻ skill: **ase-task-condense**, ▶ ERROR: invalid `--next` token: **<head/>**
|
|
202
|
-
</template>
|
|
203
|
-
|
|
204
|
-
- If <getopt-option-next/> is equal to `none`:
|
|
205
|
-
|
|
206
|
-
In the following, you *MUST* *NOT* use your built-in
|
|
207
|
-
<user-dialog-tool/> tool! Instead, you *MUST* just show a
|
|
208
|
-
custom dialog according to the expanded `custom-dialog`
|
|
209
|
-
definition. You *MUST* closely follow this definition:
|
|
210
|
-
|
|
211
|
-
<expand name="custom-dialog" arg1="--no-other">
|
|
212
|
-
Next Step: How would you like to proceed with the plan?
|
|
213
|
-
DONE: Stop processing.
|
|
214
|
-
EDIT: Hand off plan to editing.
|
|
215
|
-
PREFLIGHT: Hand off plan to pre-flighting.
|
|
216
|
-
IMPLEMENT: Hand off plan to implementation.
|
|
217
|
-
</expand>
|
|
182
|
+
<expand name="task-next-select"
|
|
183
|
+
arg1="ase-task-condense"
|
|
184
|
+
arg2="DONE|EDIT|IMPLEMENT|PREFLIGHT">
|
|
185
|
+
Next Step: How would you like to proceed with the plan?
|
|
186
|
+
DONE: Stop processing.
|
|
187
|
+
EDIT: Hand off plan to editing.
|
|
188
|
+
PREFLIGHT: Hand off plan to pre-flighting.
|
|
189
|
+
IMPLEMENT: Hand off plan to implementation.
|
|
190
|
+
</expand>
|
|
218
191
|
|
|
219
192
|
2. Check the tool <result/> and dispatch accordingly:
|
|
220
193
|
|
|
@@ -226,13 +199,7 @@ Procedure
|
|
|
226
199
|
</template>
|
|
227
200
|
|
|
228
201
|
- If <result/> is `EDIT`:
|
|
229
|
-
|
|
230
|
-
<if condition="the condensed plan was saved via `ase_task_save` in step 3">
|
|
231
|
-
Set <args>--int-reuse-task</args>.
|
|
232
|
-
</if>
|
|
233
|
-
<if condition="<getopt-option-next/> is not equal `none`">
|
|
234
|
-
Set <args><args/> --next <getopt-option-next/></args>
|
|
235
|
-
</if>
|
|
202
|
+
<expand name="handoff-args"/>
|
|
236
203
|
Only output the following <template/> and then call the
|
|
237
204
|
tool `Skill(skill: "ase:ase-task-edit", args: "<args/>")`
|
|
238
205
|
to invoke the `ase:ase-task-edit` skill in order to *edit*
|
|
@@ -244,13 +211,7 @@ Procedure
|
|
|
244
211
|
</template>
|
|
245
212
|
|
|
246
213
|
- If <result/> is `IMPLEMENT`:
|
|
247
|
-
|
|
248
|
-
<if condition="the condensed plan was saved via `ase_task_save` in step 3">
|
|
249
|
-
Set <args>--int-reuse-task</args>.
|
|
250
|
-
</if>
|
|
251
|
-
<if condition="<getopt-option-next/> is not equal `none`">
|
|
252
|
-
Set <args><args/> --next <getopt-option-next/></args>
|
|
253
|
-
</if>
|
|
214
|
+
<expand name="handoff-args"/>
|
|
254
215
|
Only output the following <template/> and then call the
|
|
255
216
|
`Skill(skill: "ase:ase-task-implement", args: "<args/>")` tool
|
|
256
217
|
to *apply* the plan.
|
|
@@ -260,13 +221,7 @@ Procedure
|
|
|
260
221
|
</template>
|
|
261
222
|
|
|
262
223
|
- If <result/> is `PREFLIGHT`:
|
|
263
|
-
|
|
264
|
-
<if condition="the condensed plan was saved via `ase_task_save` in step 3">
|
|
265
|
-
Set <args>--int-reuse-task</args>.
|
|
266
|
-
</if>
|
|
267
|
-
<if condition="<getopt-option-next/> is not equal `none`">
|
|
268
|
-
Set <args><args/> --next <getopt-option-next/></args>
|
|
269
|
-
</if>
|
|
224
|
+
<expand name="handoff-args"/>
|
|
270
225
|
Only output the following <template/> and then call the
|
|
271
226
|
`Skill(skill: "ase:ase-task-preflight", args: "<args/>")` tool
|
|
272
227
|
to *apply* the plan.
|