@rse/ase 0.9.43 → 0.9.45
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-artifact.js +28 -24
- package/dst/ase-config.js +27 -36
- package/dst/ase-diagram.js +15 -35
- package/dst/ase-getopt.js +10 -15
- package/dst/ase-hook.js +29 -27
- package/dst/ase-kv.js +24 -29
- package/dst/ase-log.js +10 -3
- package/dst/ase-markdown.js +135 -102
- package/dst/ase-mcp.js +3 -10
- package/dst/ase-meta.js +6 -4
- package/dst/ase-persona.js +7 -11
- package/dst/ase-service.js +28 -28
- package/dst/ase-setup.js +65 -28
- package/dst/ase-skills.js +2 -2
- package/dst/ase-statusline.js +26 -34
- package/dst/ase-task.js +60 -63
- package/dst/ase-version.js +2 -1
- package/dst/ase.js +7 -11
- package/package.json +12 -10
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/.codex-plugin/plugin.json +1 -1
- package/plugin/.github/plugin/plugin.json +2 -2
- package/plugin/agents/ase-code-lint.md +15 -4
- package/plugin/agents/ase-docs-proofread.md +9 -1
- package/plugin/agents/ase-meta-chat.md +19 -13
- package/plugin/agents/ase-meta-diagram.md +1 -1
- package/plugin/agents/ase-meta-search.md +1 -2
- package/plugin/etc/eslint.mjs +0 -2
- package/plugin/meta/ase-common-task.md +145 -0
- package/plugin/meta/ase-constitution.md +5 -2
- package/plugin/meta/ase-control.md +1 -1
- package/plugin/meta/ase-dialog.md +7 -7
- package/plugin/meta/ase-format-arch.md +12 -12
- package/plugin/meta/ase-format-spec.md +23 -23
- package/plugin/meta/ase-format-task.md +9 -11
- package/plugin/meta/ase-getopt.md +1 -1
- package/plugin/meta/ase-persona.md +3 -3
- package/plugin/meta/ase-skill.md +3 -3
- package/plugin/meta/ase-tenets.md +4 -4
- package/plugin/package.json +8 -8
- package/plugin/skills/ase-arch-analyze/SKILL.md +2 -3
- package/plugin/skills/ase-arch-analyze/help.md +2 -2
- package/plugin/skills/ase-arch-discover/SKILL.md +2 -2
- package/plugin/skills/ase-arch-discover/help.md +3 -2
- package/plugin/skills/ase-code-analyze/SKILL.md +0 -1
- package/plugin/skills/ase-code-craft/SKILL.md +11 -11
- package/plugin/skills/ase-code-lint/SKILL.md +31 -13
- package/plugin/skills/ase-code-refactor/SKILL.md +13 -13
- package/plugin/skills/ase-code-refactor/help.md +1 -1
- package/plugin/skills/ase-code-resolve/SKILL.md +10 -10
- package/plugin/skills/ase-code-resolve/help.md +1 -1
- package/plugin/skills/ase-docs-distill/SKILL.md +6 -6
- package/plugin/skills/ase-docs-distill/help.md +6 -4
- package/plugin/skills/ase-docs-proofread/SKILL.md +23 -8
- package/plugin/skills/ase-meta-brainstorm/help.md +1 -1
- package/plugin/skills/ase-meta-changelog/SKILL.md +9 -5
- package/plugin/skills/ase-meta-commit/SKILL.md +8 -6
- package/plugin/skills/ase-meta-compat/SKILL.md +14 -5
- package/plugin/skills/ase-meta-diaboli/SKILL.md +6 -6
- package/plugin/skills/ase-meta-diff/SKILL.md +10 -10
- package/plugin/skills/ase-meta-evaluate/SKILL.md +6 -9
- package/plugin/skills/ase-meta-persona/SKILL.md +1 -1
- package/plugin/skills/ase-meta-quorum/SKILL.md +43 -12
- package/plugin/skills/ase-meta-search/SKILL.md +1 -1
- package/plugin/skills/ase-meta-search/help.md +4 -2
- package/plugin/skills/ase-meta-steelman/SKILL.md +5 -5
- package/plugin/skills/ase-meta-steelman/help.md +5 -3
- package/plugin/skills/ase-meta-why/SKILL.md +2 -2
- package/plugin/skills/ase-meta-why/help.md +3 -1
- package/plugin/skills/ase-sync-export/SKILL.md +20 -17
- package/plugin/skills/ase-sync-import/SKILL.md +20 -16
- package/plugin/skills/ase-sync-import/help.md +2 -2
- package/plugin/skills/ase-sync-reconcile/SKILL.md +10 -10
- package/plugin/skills/ase-sync-reconcile/help.md +1 -1
- package/plugin/skills/ase-task-condense/SKILL.md +39 -85
- package/plugin/skills/ase-task-delete/SKILL.md +1 -1
- package/plugin/skills/ase-task-edit/SKILL.md +43 -51
- package/plugin/skills/ase-task-grill/SKILL.md +11 -13
- 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-implement/help.md +2 -2
- 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 +39 -71
- package/plugin/skills/ase-task-reboot/help.md +2 -1
- package/plugin/skills/ase-task-view/SKILL.md +7 -7
|
@@ -48,19 +48,21 @@ The intent is constructive: building the best honest case for the
|
|
|
48
48
|
thesis to arrive at a better final decision, not overselling or merely
|
|
49
49
|
cheerleading.
|
|
50
50
|
|
|
51
|
-
##
|
|
51
|
+
## OPTIONS
|
|
52
52
|
|
|
53
|
-
`--count
|
|
53
|
+
`--count`|`-c` *count*:
|
|
54
54
|
Surface at least *count* strong pro-theses (default *10*) per defense
|
|
55
55
|
pass before sorting and reporting the top *count* and deriving the
|
|
56
56
|
*FORTIFICATION*. An invalid or non-positive *count* reverts to the
|
|
57
57
|
default *10*.
|
|
58
58
|
|
|
59
|
-
`--rounds
|
|
59
|
+
`--rounds`|`-r` *rounds*:
|
|
60
60
|
Run *rounds* iterative defense rounds (default *1*), feeding each
|
|
61
61
|
round's *FORTIFICATION* in as the next round's *thesis*. An invalid
|
|
62
62
|
or non-positive *rounds* reverts to the default *1*.
|
|
63
63
|
|
|
64
|
+
## ARGUMENTS
|
|
65
|
+
|
|
64
66
|
*thesis*:
|
|
65
67
|
The statement, claim, or position to be charitably strengthened.
|
|
66
68
|
It may be technical, factual, or opinion-based; the skill defends
|
|
@@ -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/>:
|
|
@@ -66,7 +66,7 @@ addressing surface-level symptoms.
|
|
|
66
66
|
|
|
67
67
|
<while condition="<n/> is less than or equal to <depth/>">
|
|
68
68
|
|
|
69
|
-
Ask <question/> and document the answer in <answer/> with the following template
|
|
69
|
+
Ask <question/> and document the answer in <answer/> with the following template.
|
|
70
70
|
Don't stop at symptoms, keep digging for systemic issues.
|
|
71
71
|
Consider technical, domain-specific, process-related, or organizational causes.
|
|
72
72
|
|
|
@@ -29,7 +29,7 @@ wrong sub-cause. After identifying (and validating) the root cause it
|
|
|
29
29
|
proposes a *SOLUTION* that addresses it, optionally including concrete
|
|
30
30
|
source code changes.
|
|
31
31
|
|
|
32
|
-
##
|
|
32
|
+
## OPTIONS
|
|
33
33
|
|
|
34
34
|
`--depth`|`-d` *N*:
|
|
35
35
|
The *maximum* number of "why" iterations (the Five-Whys chain
|
|
@@ -49,6 +49,8 @@ source code changes.
|
|
|
49
49
|
single, but better-justified, root-cause. A non-numeric or non-positive
|
|
50
50
|
value falls back to the default.
|
|
51
51
|
|
|
52
|
+
## ARGUMENTS
|
|
53
|
+
|
|
52
54
|
*fact*:
|
|
53
55
|
The observed *fact* (symptom, problem, or surprising outcome)
|
|
54
56
|
whose root cause should be investigated. The skill implicitly
|
|
@@ -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
|
|
@@ -48,7 +48,7 @@ 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-source/> as the comma-separated <source/> kind list.
|
|
51
|
+
<getopt-option-source/> as the comma-separated <source/> kind list.
|
|
52
52
|
Upper-case and trim every parsed kind token. Do not output
|
|
53
53
|
anything.
|
|
54
54
|
|
|
@@ -84,11 +84,13 @@ Procedure
|
|
|
84
84
|
|
|
85
85
|
1. Do not output anything in this STEP 2.
|
|
86
86
|
|
|
87
|
-
2. For all kinds in <source
|
|
88
|
-
... ])` tool of the `ase` MCP server
|
|
89
|
-
lower-cased `kind` tokens, and read the
|
|
90
|
-
array of `{ kind, files }` objects to obtain
|
|
91
|
-
file list per kind.
|
|
87
|
+
2. For all kinds in <source/> except `TASK`, call the
|
|
88
|
+
`ase_artifact_list(kind: [ ... ])` tool of the `ase` MCP server
|
|
89
|
+
*once*, passing the lower-cased `kind` tokens, and read the
|
|
90
|
+
returned `artifacts` array of `{ kind, files }` objects to obtain
|
|
91
|
+
the project-relative file list per kind. The `TASK` kind is *not*
|
|
92
|
+
resolvable via `ase_artifact_list` (task plans are managed by the
|
|
93
|
+
`ase_task_*` tools) and declares no export, so *silently skip* it.
|
|
92
94
|
|
|
93
95
|
3. <if condition="<hint/> is not empty">
|
|
94
96
|
|
|
@@ -139,11 +141,12 @@ Procedure
|
|
|
139
141
|
|
|
140
142
|
- *Determine* the side-by-side target file name
|
|
141
143
|
<export-filename/>
|
|
142
|
-
as `<
|
|
144
|
+
as `<artifact-set-id/>-<artifact-no/>-<artifact-id/>-<artifact-slug/>-<export-name/>.<export-ext/>`
|
|
143
145
|
and resolve it to a project-relative path inside the
|
|
144
|
-
artifact's own base directory by calling the
|
|
145
|
-
`ase_artifact_name(filename: "<
|
|
146
|
-
"<
|
|
146
|
+
artifact's own base directory (`<basedir/>`) by calling the
|
|
147
|
+
`ase_artifact_name(filename: "<export-filename/>", kind:
|
|
148
|
+
"<artifact-kind/>")` tool of the `ase` MCP server, with
|
|
149
|
+
<artifact-kind/> the artifact's own lower-cased kind.
|
|
147
150
|
|
|
148
151
|
- *Write* the derived rendering to that resolved path via the
|
|
149
152
|
`Write` tool, overwriting any pre-existing export file of the
|
|
@@ -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
|
|
@@ -61,7 +61,7 @@ Import a foreign requirements document into the specification:
|
|
|
61
61
|
❯ /ase-sync-import -t SPEC docs/legacy/requirements.txt
|
|
62
62
|
```
|
|
63
63
|
|
|
64
|
-
Import an external design write-up into the architecture, defaulting
|
|
64
|
+
Import an external design write-up into the architecture, defaulting to
|
|
65
65
|
both specification and architecture as targets:
|
|
66
66
|
|
|
67
67
|
```text
|
|
@@ -78,4 +78,4 @@ Import a pasted feature description into a task plan:
|
|
|
78
78
|
|
|
79
79
|
[`ase-sync-reconcile`](../ase-sync-reconcile/help.md),
|
|
80
80
|
[`ase-sync-export`](../ase-sync-export/help.md),
|
|
81
|
-
[`ase-task-implement`](../ase-task-implement/help.md)
|
|
81
|
+
[`ase-task-implement`](../ase-task-implement/help.md).
|
|
@@ -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
|
|
|
@@ -78,10 +78,10 @@ Procedure
|
|
|
78
78
|
*STOP* processing the entire current skill:
|
|
79
79
|
|
|
80
80
|
<template>
|
|
81
|
-
⧉ **ASE**: ☻ skill: **ase-sync-reconcile**, ▶ ERROR: unknown artifact kind: **<kind/>**
|
|
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,13 +31,24 @@ 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
|
-
1. Set <
|
|
51
|
+
1. Set <id><getopt-arguments/></id> initially.
|
|
41
52
|
Inherit the always existing <ase-task-id/> from the current context.
|
|
42
53
|
Inherit the always existing <ase-session-id/> from the current context.
|
|
43
54
|
Do not output anything.
|
|
@@ -45,11 +56,10 @@ Procedure
|
|
|
45
56
|
2. React on task id:
|
|
46
57
|
|
|
47
58
|
1. <if condition="
|
|
48
|
-
<
|
|
59
|
+
<id/> matches the regexp `^[a-zA-Z][a-zA-Z0-9_-]*$`
|
|
49
60
|
">
|
|
50
|
-
Set <ase-task-id><
|
|
51
|
-
|
|
52
|
-
instruction empty), call the `ase_task_id(id: "<ase-task-id/>",
|
|
61
|
+
Set <ase-task-id><id/></ase-task-id> (set task id) and
|
|
62
|
+
call the `ase_task_id(id: "<ase-task-id/>",
|
|
53
63
|
session: "<ase-session-id/>")` tool from the `ase` MCP
|
|
54
64
|
server to switch the task, and then only output the
|
|
55
65
|
following <template/>:
|
|
@@ -59,7 +69,7 @@ Procedure
|
|
|
59
69
|
</template>
|
|
60
70
|
</if>
|
|
61
71
|
|
|
62
|
-
2. <elseif condition="<
|
|
72
|
+
2. <elseif condition="<id/> is NOT empty">
|
|
63
73
|
The argument is neither empty nor a valid task id. As this
|
|
64
74
|
skill only accepts an optional `[<id>]` argument and *never*
|
|
65
75
|
a free-text instruction, only output the following <template/>
|
|
@@ -77,20 +87,21 @@ Procedure
|
|
|
77
87
|
the `text` output field of the `ase_task_load` tool call.
|
|
78
88
|
|
|
79
89
|
- If <text/> starts with `ERROR:` or `WARNING:`:
|
|
80
|
-
|
|
90
|
+
Silently ignore the MCP error.
|
|
91
|
+
Set <task-content></task-content> (set task content to empty).
|
|
81
92
|
Set <words/> to "0".
|
|
82
93
|
|
|
83
94
|
- If <text/> starts NOT with `ERROR:` and NOT with `WARNING:`:
|
|
84
|
-
Set <content><text/></content> (set content to text).
|
|
85
|
-
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/>.
|
|
86
97
|
|
|
87
98
|
Set <words-before><words/></words-before> (remember the loaded
|
|
88
99
|
word count for the strictly-smaller check in step 3).
|
|
89
100
|
|
|
90
|
-
<if condition="<content/> contains '⎈ Created: <text/>'">
|
|
101
|
+
<if condition="<task-content/> contains '⎈ Created: <text/>'">
|
|
91
102
|
Set <timestamp-created><text/></timestamp-created> (extract the
|
|
92
103
|
original creation timestamp so it can be re-inserted unchanged
|
|
93
|
-
into the condensed <content/> in step 3).
|
|
104
|
+
into the condensed <task-content/> in step 3).
|
|
94
105
|
</if>
|
|
95
106
|
|
|
96
107
|
Only output the following <template/>:
|
|
@@ -99,7 +110,7 @@ Procedure
|
|
|
99
110
|
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan loaded**
|
|
100
111
|
</template>
|
|
101
112
|
|
|
102
|
-
2. <if condition="<content/> is empty">
|
|
113
|
+
2. <if condition="<task-content/> is empty">
|
|
103
114
|
Complain and tell the user to use the `ase-code-resolve`,
|
|
104
115
|
`ase-code-refactor`, `ase-code-craft`, or `ase-task-edit` skills
|
|
105
116
|
first to create a task plan. Then immediately stop processing
|
|
@@ -108,8 +119,8 @@ Procedure
|
|
|
108
119
|
|
|
109
120
|
3. **Condense Task Plan:**
|
|
110
121
|
|
|
111
|
-
1. *Apply the condense ruleset* to <content/>, producing a shorter
|
|
112
|
-
<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
|
|
113
124
|
reading* as possible while all semantics remain *fully preserved
|
|
114
125
|
and unchanged*. Honor the following ruleset *strictly*:
|
|
115
126
|
|
|
@@ -149,25 +160,10 @@ Procedure
|
|
|
149
160
|
longer wording*.
|
|
150
161
|
|
|
151
162
|
2. *Persist only if smaller*: calculate the number of words <words/>
|
|
152
|
-
of the condensed <content/>.
|
|
163
|
+
of the condensed <task-content/>.
|
|
153
164
|
|
|
154
165
|
- <if condition="<words/> is strictly smaller than <words-before/>">
|
|
155
|
-
|
|
156
|
-
ISO-style format, which has to be determined by calling
|
|
157
|
-
the `ase_timestamp(format: "yyyy-LL-dd HH:mm")` tool
|
|
158
|
-
of the `ase` MCP server and use the `text` field of
|
|
159
|
-
its response. Keep the original <timestamp-created/>,
|
|
160
|
-
re-insert the current <ase-task-id/> and the refreshed
|
|
161
|
-
<timestamp-modified/> into <content/>.
|
|
162
|
-
|
|
163
|
-
Call the `ase_task_save(id: "<ase-task-id/>", text:
|
|
164
|
-
"<content/>")` tool of the `ase` MCP server to save the
|
|
165
|
-
condensed task plan content. Do not output anything related
|
|
166
|
-
to this MCP call except the following <template/>:
|
|
167
|
-
|
|
168
|
-
<template>
|
|
169
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan condensed**
|
|
170
|
-
</template>
|
|
166
|
+
<expand name="task-save-content" arg1="plan condensed"></expand>
|
|
171
167
|
</if>
|
|
172
168
|
|
|
173
169
|
- <if condition="<words/> is NOT strictly smaller than <words-before/>">
|
|
@@ -183,39 +179,15 @@ Procedure
|
|
|
183
179
|
|
|
184
180
|
1. *Determine next step*:
|
|
185
181
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
Set <result><head/></result>.
|
|
196
|
-
|
|
197
|
-
- else:
|
|
198
|
-
Only output the following <template/> and then immediately
|
|
199
|
-
*STOP* processing the entire current skill:
|
|
200
|
-
|
|
201
|
-
<template>
|
|
202
|
-
⧉ **ASE**: ☻ skill: **ase-task-condense**, ▶ ERROR: invalid `--next` token: **<head/>**
|
|
203
|
-
</template>
|
|
204
|
-
|
|
205
|
-
- If <getopt-option-next/> is equal to `none`:
|
|
206
|
-
|
|
207
|
-
In the following, you *MUST* *NOT* use your built-in
|
|
208
|
-
<user-dialog-tool/> tool! Instead, you *MUST* just show a
|
|
209
|
-
custom dialog according to the expanded `custom-dialog`
|
|
210
|
-
definition. You *MUST* closely follow this definition:
|
|
211
|
-
|
|
212
|
-
<expand name="custom-dialog" arg1="--no-other">
|
|
213
|
-
Next Step: How would you like to proceed with the plan?
|
|
214
|
-
DONE: Stop processing.
|
|
215
|
-
EDIT: Hand off plan to editing.
|
|
216
|
-
IMPLEMENT: Hand off plan to implementation.
|
|
217
|
-
PREFLIGHT: Hand off plan to pre-flighting.
|
|
218
|
-
</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>
|
|
219
191
|
|
|
220
192
|
2. Check the tool <result/> and dispatch accordingly:
|
|
221
193
|
|
|
@@ -227,13 +199,7 @@ Procedure
|
|
|
227
199
|
</template>
|
|
228
200
|
|
|
229
201
|
- If <result/> is `EDIT`:
|
|
230
|
-
|
|
231
|
-
<if condition="the condensed plan was saved via `ase_task_save` in step 3">
|
|
232
|
-
Set <args>--int-reuse-task</args>.
|
|
233
|
-
</if>
|
|
234
|
-
<if condition="<getopt-option-next/> is not equal `none`">
|
|
235
|
-
Set <args><args/> --next <getopt-option-next/></args>
|
|
236
|
-
</if>
|
|
202
|
+
<expand name="handoff-args"/>
|
|
237
203
|
Only output the following <template/> and then call the
|
|
238
204
|
tool `Skill(skill: "ase:ase-task-edit", args: "<args/>")`
|
|
239
205
|
to invoke the `ase:ase-task-edit` skill in order to *edit*
|
|
@@ -245,13 +211,7 @@ Procedure
|
|
|
245
211
|
</template>
|
|
246
212
|
|
|
247
213
|
- If <result/> is `IMPLEMENT`:
|
|
248
|
-
|
|
249
|
-
<if condition="the condensed plan was saved via `ase_task_save` in step 3">
|
|
250
|
-
Set <args>--int-reuse-task</args>.
|
|
251
|
-
</if>
|
|
252
|
-
<if condition="<getopt-option-next/> is not equal `none`">
|
|
253
|
-
Set <args><args/> --next <getopt-option-next/></args>
|
|
254
|
-
</if>
|
|
214
|
+
<expand name="handoff-args"/>
|
|
255
215
|
Only output the following <template/> and then call the
|
|
256
216
|
`Skill(skill: "ase:ase-task-implement", args: "<args/>")` tool
|
|
257
217
|
to *apply* the plan.
|
|
@@ -261,13 +221,7 @@ Procedure
|
|
|
261
221
|
</template>
|
|
262
222
|
|
|
263
223
|
- If <result/> is `PREFLIGHT`:
|
|
264
|
-
|
|
265
|
-
<if condition="the condensed plan was saved via `ase_task_save` in step 3">
|
|
266
|
-
Set <args>--int-reuse-task</args>.
|
|
267
|
-
</if>
|
|
268
|
-
<if condition="<getopt-option-next/> is not equal `none`">
|
|
269
|
-
Set <args><args/> --next <getopt-option-next/></args>
|
|
270
|
-
</if>
|
|
224
|
+
<expand name="handoff-args"/>
|
|
271
225
|
Only output the following <template/> and then call the
|
|
272
226
|
`Skill(skill: "ase:ase-task-preflight", args: "<args/>")` tool
|
|
273
227
|
to *apply* the plan.
|