@rse/ase 0.9.43 → 0.9.44

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.
Files changed (73) hide show
  1. package/dst/ase-artifact.js +28 -24
  2. package/dst/ase-config.js +27 -36
  3. package/dst/ase-diagram.js +15 -35
  4. package/dst/ase-getopt.js +10 -15
  5. package/dst/ase-hook.js +29 -27
  6. package/dst/ase-kv.js +24 -29
  7. package/dst/ase-log.js +10 -3
  8. package/dst/ase-markdown.js +135 -102
  9. package/dst/ase-mcp.js +3 -10
  10. package/dst/ase-meta.js +6 -4
  11. package/dst/ase-persona.js +7 -11
  12. package/dst/ase-service.js +28 -28
  13. package/dst/ase-setup.js +15 -28
  14. package/dst/ase-skills.js +2 -2
  15. package/dst/ase-statusline.js +26 -34
  16. package/dst/ase-task.js +60 -63
  17. package/dst/ase-version.js +2 -1
  18. package/dst/ase.js +7 -11
  19. package/package.json +12 -10
  20. package/plugin/.claude-plugin/plugin.json +1 -1
  21. package/plugin/.codex-plugin/plugin.json +1 -1
  22. package/plugin/.github/plugin/plugin.json +2 -2
  23. package/plugin/agents/ase-code-lint.md +4 -4
  24. package/plugin/agents/ase-docs-proofread.md +1 -1
  25. package/plugin/agents/ase-meta-chat.md +6 -6
  26. package/plugin/agents/ase-meta-diagram.md +1 -1
  27. package/plugin/agents/ase-meta-search.md +1 -1
  28. package/plugin/etc/eslint.mjs +0 -2
  29. package/plugin/meta/ase-constitution.md +1 -1
  30. package/plugin/meta/ase-control.md +1 -1
  31. package/plugin/meta/ase-dialog.md +2 -2
  32. package/plugin/meta/ase-format-arch.md +8 -8
  33. package/plugin/meta/ase-format-task.md +8 -10
  34. package/plugin/meta/ase-getopt.md +1 -1
  35. package/plugin/meta/ase-skill.md +1 -1
  36. package/plugin/package.json +8 -8
  37. package/plugin/skills/ase-arch-analyze/help.md +2 -2
  38. package/plugin/skills/ase-arch-discover/SKILL.md +2 -2
  39. package/plugin/skills/ase-arch-discover/help.md +3 -2
  40. package/plugin/skills/ase-code-analyze/SKILL.md +0 -1
  41. package/plugin/skills/ase-code-craft/SKILL.md +4 -4
  42. package/plugin/skills/ase-code-lint/SKILL.md +12 -10
  43. package/plugin/skills/ase-code-refactor/SKILL.md +6 -6
  44. package/plugin/skills/ase-code-refactor/help.md +1 -1
  45. package/plugin/skills/ase-code-resolve/SKILL.md +4 -4
  46. package/plugin/skills/ase-code-resolve/help.md +1 -1
  47. package/plugin/skills/ase-docs-distill/help.md +6 -4
  48. package/plugin/skills/ase-docs-proofread/SKILL.md +5 -5
  49. package/plugin/skills/ase-meta-brainstorm/help.md +1 -1
  50. package/plugin/skills/ase-meta-changelog/SKILL.md +4 -3
  51. package/plugin/skills/ase-meta-commit/SKILL.md +3 -1
  52. package/plugin/skills/ase-meta-compat/SKILL.md +11 -2
  53. package/plugin/skills/ase-meta-diaboli/SKILL.md +4 -4
  54. package/plugin/skills/ase-meta-diff/SKILL.md +10 -10
  55. package/plugin/skills/ase-meta-persona/SKILL.md +1 -1
  56. package/plugin/skills/ase-meta-quorum/SKILL.md +10 -8
  57. package/plugin/skills/ase-meta-search/help.md +4 -2
  58. package/plugin/skills/ase-meta-steelman/SKILL.md +2 -2
  59. package/plugin/skills/ase-meta-steelman/help.md +5 -3
  60. package/plugin/skills/ase-meta-why/SKILL.md +1 -1
  61. package/plugin/skills/ase-meta-why/help.md +3 -1
  62. package/plugin/skills/ase-sync-export/SKILL.md +13 -10
  63. package/plugin/skills/ase-sync-import/help.md +2 -2
  64. package/plugin/skills/ase-sync-reconcile/SKILL.md +1 -1
  65. package/plugin/skills/ase-sync-reconcile/help.md +1 -1
  66. package/plugin/skills/ase-task-condense/SKILL.md +6 -7
  67. package/plugin/skills/ase-task-delete/SKILL.md +1 -1
  68. package/plugin/skills/ase-task-edit/SKILL.md +2 -2
  69. package/plugin/skills/ase-task-grill/SKILL.md +1 -1
  70. package/plugin/skills/ase-task-implement/help.md +2 -2
  71. package/plugin/skills/ase-task-preflight/SKILL.md +1 -1
  72. package/plugin/skills/ase-task-reboot/SKILL.md +13 -9
  73. package/plugin/skills/ase-task-reboot/help.md +2 -1
@@ -88,8 +88,8 @@ Analyze documents for spelling, punctuation, or grammar errors
88
88
  `file` and then numerically by `line`, and set <problems/> to that
89
89
  list.
90
90
 
91
- You *MUST* *NOT* output anything at all in this step 1 beyond the
92
- `Glob` and `Agent` tool invocations.
91
+ You *MUST* *NOT* output anything at all in this STEP 1 beyond the
92
+ above hint template and the `Glob` and `Agent` tool invocations.
93
93
  </step>
94
94
 
95
95
  2. <step id="STEP 2: Summary">
@@ -156,7 +156,7 @@ Analyze documents for spelling, punctuation, or grammar errors
156
156
  <description/>
157
157
  </template>
158
158
 
159
- 3. <if condition="<getopt-option-auto/> is not 'true' and <ase-project-boxing/> is equal `grey`">
159
+ 3. <if condition="<getopt-option-auto/> is not equal `true` and <ase-project-boxing/> is equal `grey`">
160
160
 
161
161
  The project source artifacts are classified as a *grey box*, so
162
162
  the user does *not* want the full artifact internals surfaced:
@@ -175,7 +175,7 @@ Analyze documents for spelling, punctuation, or grammar errors
175
175
  </template>
176
176
 
177
177
  </if>
178
- <elseif condition="<getopt-option-auto/> is not 'true'">
178
+ <elseif condition="<getopt-option-auto/> is not equal `true`">
179
179
 
180
180
  Determine the hunk *body* as an ordered list of lines, each
181
181
  carrying a one-character prefix (` ` for context, `-` for
@@ -231,7 +231,7 @@ Analyze documents for spelling, punctuation, or grammar errors
231
231
 
232
232
  </elseif>
233
233
 
234
- 4. <if condition="<getopt-option-auto/> is not 'true'">
234
+ 4. <if condition="<getopt-option-auto/> is not equal `true`">
235
235
 
236
236
  In the following, you *MUST* *NOT* use your built-in
237
237
  <user-dialog-tool/> tool! Instead, you *MUST* just show a
@@ -84,4 +84,4 @@ and a tighter shortlist:
84
84
 
85
85
  ## SEE ALSO
86
86
 
87
- [`ase-meta-evaluate`](../ase-meta-evaluate/help.md), [`ase-meta-quorum`](../ase-meta-quorum/help.md), [`ase-meta-diaboli`](../ase-meta-diaboli/help.md)
87
+ [`ase-meta-evaluate`](../ase-meta-evaluate/help.md), [`ase-meta-quorum`](../ase-meta-quorum/help.md), [`ase-meta-diaboli`](../ase-meta-diaboli/help.md).
@@ -10,6 +10,7 @@ allowed-tools:
10
10
  - "Bash(git log *)"
11
11
  - "Bash(git diff *)"
12
12
  - "Bash(git show *)"
13
+ - "Bash(git tag --list *)"
13
14
  - "Write"
14
15
  - "Edit"
15
16
  ---
@@ -97,7 +98,7 @@ Processing
97
98
  <ase-tpl-bullet-normal/> **DETERMINE ARTIFACT CHANGES:**
98
99
  </template>
99
100
 
100
- To update to entries of the most recent *ChangeLog* section, consult
101
+ To update the entries of the most recent *ChangeLog* section, consult
101
102
  the Git *commits* plus the currently already staged changes in the Git
102
103
  *index*, but *ignore* the Git *stash* and still unstaged changes.
103
104
 
@@ -144,8 +145,8 @@ Processing
144
145
  ... ])` tool of the `ase` MCP server *once*, passing the `kind`
145
146
  tokens (`spec`, `arch`, `code`, `docs`, `infr`, `othr`), and read
146
147
  the returned `artifacts` array of `{ kind, files }` objects to match
147
- each changed file to its kind. Map the matched lower-cased kind back
148
- to its upper-cased <artifact-kind/> tag, and comma-separate multiple
148
+ each changed file to its kind. Use the matched lower-cased kind
149
+ directly as its <artifact-kind/> tag, and comma-separate multiple
149
150
  tags when more than one artifact class applies.
150
151
 
151
152
  If a <summary/> is too short or especially is not comprehensible
@@ -44,7 +44,9 @@ currently staged Git changes.
44
44
 
45
45
  `<type/>: <summary/>`
46
46
 
47
- The known <type/>s and their usual corresponding kind of change are:
47
+ The known <type/>s (kept deliberately in sync with the intent groups
48
+ of the `ase-meta-diff` and `ase-meta-changelog` skills) and their
49
+ usual corresponding kind of change are:
48
50
 
49
51
  - `FEATURE`: new functionality or configuration
50
52
  - `IMPROVEMENT`: improved functionality or configuration
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  name: ase-meta-compat
3
+ argument-hint: "[--help|-h]"
3
4
  description: >
4
5
  Self-test the LLM's ability to execute ASE's core interpreter
5
6
  machinery (control flow, XML placeholders, regex matching,
@@ -13,6 +14,14 @@ disable-model-invocation: true
13
14
 
14
15
  @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
15
16
 
17
+ If `$1` (the first token of the skill arguments) is equal to `-h` or
18
+ `--help`, you *MUST* once output the following output <template/> and
19
+ then *IMMEDIATELY* *STOP* the further skill processing:
20
+
21
+ <template>
22
+ @${CLAUDE_SKILL_DIR}/help.md
23
+ </template>
24
+
16
25
  Self-Test ASE Compatibility
17
26
  ===========================
18
27
 
@@ -110,7 +119,7 @@ Procedure
110
119
 
111
120
  5. *step-skip*: A `<step condition="[...]">[...]</step>` either expands
112
121
  to its body (if condition evaluates to true) or to the empty string,
113
- so what does `<step condition="42 is greater than 7">X</step>` expands into?
122
+ so what does `<step condition="42 is greater than 7">X</step>` expand into?
114
123
  Record the result of this construct for `control-flow/step-skip`.
115
124
 
116
125
  6. *expand-subst*: With `<define name="foo">[<arg1/>:<content/>]</define>`,
@@ -146,7 +155,7 @@ Procedure
146
155
  (the `\s` alternative)?
147
156
  Record `yes` or `no` as actual result for `regex/whitespace`.
148
157
 
149
- 7. *complex*: Does `--level=(low|high)...` match
158
+ 7. *complex*: Does `--level=(low|high)...` match
150
159
  `^--([A-Za-z][A-Za-z0-9-]*)(?:\|-([A-Za-z]))?(?:=(\((.*)\)(\.\.\.)?|.*))?$`?
151
160
  Record `yes` or `no` as actual result for `regex/complex`.
152
161
 
@@ -2,7 +2,7 @@
2
2
  name: ase-meta-diaboli
3
3
  argument-hint: "[--help|-h] [--count|-c <count>] <thesis>"
4
4
  description: >
5
- Challenge a thesis by playing "Devils Advocate" (Latin: "Advocatus
5
+ Challenge a thesis by playing "Devil's Advocate" (Latin: "Advocatus
6
6
  Diaboli"). Use when the user wants a thesis or statement
7
7
  relentlessly challenged or criticised.
8
8
  user-invocable: true
@@ -15,7 +15,7 @@ effort: xhigh
15
15
  @${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
16
16
 
17
17
  <skill name="ase-meta-diaboli">
18
- Play "Devil's Advocate"
18
+ Play "Devil's Advocate"
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
- Play "Devils Advocate" (Latin: "Advocatus Diaboli") by relentlessly
29
- challenging or criticising the thesis: <thesis><getopt-arguments/></thesis>
28
+ Play "Devil's Advocate" (Latin: "Advocatus Diaboli") by relentlessly
29
+ challenging or criticising the thesis: <thesis><getopt-arguments/></thesis>
30
30
  </objective>
31
31
 
32
32
  Determine the minimum number of *anti-theses* to surface: set <count/>
@@ -72,16 +72,16 @@ Procedure
72
72
  </template>
73
73
  </if>
74
74
 
75
- 2. Analyze the <diff/> and <stat/> and synthesize a *concise* narrative of
76
- WHAT changed and WHY, *grouped by intent* rather than by file.
77
- Honor the following intents:
78
-
79
- - `FEATURE`: new functionality or configuration
80
- - `IMPROVEMENT`: improved functionality or configuration
81
- - `BUGFIX`: corrected functionality or configuration
82
- - `UPDATE`: updated functionality or configuration
83
- - `CLEANUP`: cleaned up functionality or configuration
84
- - `REFACTOR`: refactored functionality or configuration
75
+ 2. Analyze the <diff/> and <stat/> and synthesize a *concise* narrative of
76
+ WHAT changed and WHY, *grouped by intent* rather than by file.
77
+ Honor the following intents:
78
+
79
+ - `FEATURE`: new functionality or configuration
80
+ - `IMPROVEMENT`: improved functionality or configuration
81
+ - `BUGFIX`: corrected functionality or configuration
82
+ - `UPDATE`: updated functionality or configuration
83
+ - `CLEANUP`: cleaned up functionality or configuration
84
+ - `REFACTOR`: refactored functionality or configuration
85
85
 
86
86
  3. <if condition="<diff/> is NOT empty">
87
87
  1. First, output the following header <template/>:
@@ -7,7 +7,7 @@ description: >
7
7
  the concise, factual, and accurate "engineer" (default),
8
8
  the layered, pyramid-structured "journalist",
9
9
  the brief, factual, and abbreviating "telegrapher",
10
- the terse, rough, and stuttering "caveman".
10
+ or the terse, rough, and stuttering "caveman".
11
11
  Use when user says "persona <persona>" or "be <persona>".
12
12
  user-invocable: true
13
13
  disable-model-invocation: false
@@ -38,10 +38,10 @@ by querying *multiple* AIs for an *optimal consensus*.
38
38
 
39
39
  <template>
40
40
  <getopt-arguments/>.
41
- Please respond with facts and very concise and brief only,
41
+ Please respond very concisely and briefly, with facts only,
42
42
  usually with just 1 to 7 corresponding bullet points and with short sentences.
43
43
  Optionally, mention potential cruxes which should be noticed.
44
- Beside bullet points, do not provide any additional explanations.
44
+ Besides bullet points, do not provide any additional explanations.
45
45
  Emphasize keywords or cruxes in your response with Markdown formatting.
46
46
  Format code parts with Markdown formatting.
47
47
  </template>
@@ -66,8 +66,9 @@ by querying *multiple* AIs for an *optimal consensus*.
66
66
  validates only the *first* token, so you *MUST* validate each
67
67
  remaining token yourself against the allowed set `all`, `chatgpt`,
68
68
  `gemini`, `deepseek`, `grok`, `glm`, `qwen`. If any token is *not*
69
- in this set, only output the following <template/> and then
70
- immediately *STOP* processing the entire current skill:
69
+ in this set, bind <token/> to that offending token, then only output
70
+ the following <template/> and then immediately *STOP* processing the
71
+ entire current skill:
71
72
 
72
73
  <template>
73
74
  ⧉ **ASE**: ✪ skill: **ase-meta-quorum**, ▶ ERROR: invalid `--models` token: **<token/>**
@@ -174,10 +175,6 @@ by querying *multiple* AIs for an *optimal consensus*.
174
175
 
175
176
  **CONSENSUS RATE**: **<c/>/<n/>** <disagreement/>
176
177
 
177
- When a quorum was *not* possible (see STEP 4), render this line
178
- instead as just `**CONSENSUS RATE**: *n/a* <disagreement/>` (omitting
179
- the `<c/>/<n/>` fraction), as a single AI cannot form a consensus.
180
-
181
178
  &#x25CB; **Anthropic Claude**:
182
179
  - [...]
183
180
  - [...]
@@ -207,6 +204,11 @@ by querying *multiple* AIs for an *optimal consensus*.
207
204
  - [...]
208
205
  </template>
209
206
 
207
+ In this output, when a quorum was *not* possible (see STEP 4),
208
+ render the consensus rate line instead as just `**CONSENSUS RATE**:
209
+ *n/a* <disagreement/>` (omitting the `<c/>/<n/>` fraction), as a
210
+ single AI cannot form a consensus.
211
+
210
212
  In this output, remove the sections of those AIs which were not
211
213
  queried (excluded via `--models`/`-m`) or were not available.
212
214
  You *MUST* *NOT* output any further explanations yourself.
@@ -22,13 +22,15 @@ information.
22
22
  This skill should be preferred over directly invoking Perplexity,
23
23
  Brave, or `WebSearch` individually.
24
24
 
25
- ## ARGUMENTS
25
+ ## OPTIONS
26
26
 
27
27
  `--services`|`-s`=(`all`|`perplexity`|`brave`|`exa`|`websearch`)...:
28
28
  The comma-separated list of search backends to query. The default
29
- `all` queries every available backend (the original behavior);
29
+ `all` queries every available backend;
30
30
  otherwise only the listed backends are queried.
31
31
 
32
+ ## ARGUMENTS
33
+
32
34
  *query*:
33
35
  The search query to dispatch to the search services.
34
36
 
@@ -98,7 +98,7 @@ to <getopt-option-count/>; if <getopt-option-count/> is *non-numeric* or
98
98
  strongest available evidence is the one hardest to dismiss.
99
99
 
100
100
  - **Seek the Confirming Case**:
101
- Actively hunt for the supporting example, the favourable
101
+ Actively hunt for the supporting example, the favorable
102
102
  scenario, the precedent where the position succeeds, because
103
103
  one solid confirming case anchors the argument in reality.
104
104
 
@@ -130,7 +130,7 @@ to <getopt-option-count/>; if <getopt-option-count/> is *non-numeric* or
130
130
 
131
131
  - **Concede the Real Weaknesses**:
132
132
  Acknowledging where the thesis genuinely falls short is what
133
- makes the defence credible, because a Steelman who can never
133
+ makes the defense credible, because a Steelman who can never
134
134
  admit a flaw is just an apologist.
135
135
 
136
136
  - **Pre-Parade Thinking**:
@@ -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
- ## ARGUMENTS
51
+ ## OPTIONS
52
52
 
53
- `--count`, `-c` *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`, `-r` *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
@@ -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
- ## ARGUMENTS
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
@@ -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/>, call the `ase_artifact_list(kind: [
88
- ... ])` tool of the `ase` MCP server *once*, passing the
89
- lower-cased `kind` tokens, and read the returned `artifacts`
90
- array of `{ kind, files }` objects to obtain the project-relative
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 `<basedir/>/<artifact-set-id/>-<artifact-no/>-<artifact-id/>-<artifact-slug/>-<export-name/>.<export-ext/>`
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: "<file-name/>", kind:
146
- "<export-filename/>")` tool of the `ase` MCP server.
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
@@ -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).
@@ -78,7 +78,7 @@ 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
84
  5. <if condition="<getopt-bidirectional/> is not 'true'">
@@ -86,4 +86,4 @@ each other, limited to the authentication aspect:
86
86
  ## SEE ALSO
87
87
 
88
88
  [`ase-meta-changelog`](../ase-meta-changelog/help.md),
89
- [`ase-task-implement`](../ase-task-implement/help.md)
89
+ [`ase-task-implement`](../ase-task-implement/help.md).
@@ -37,7 +37,7 @@ Procedure
37
37
 
38
38
  1. **Determine Task:**
39
39
 
40
- 1. Set <instruction><getopt-arguments/></instruction> initially.
40
+ 1. Set <id><getopt-arguments/></id> initially.
41
41
  Inherit the always existing <ase-task-id/> from the current context.
42
42
  Inherit the always existing <ase-session-id/> from the current context.
43
43
  Do not output anything.
@@ -45,11 +45,10 @@ Procedure
45
45
  2. React on task id:
46
46
 
47
47
  1. <if condition="
48
- <instruction/> matches the regexp `^[a-zA-Z][a-zA-Z0-9_-]*$`
48
+ <id/> matches the regexp `^[a-zA-Z][a-zA-Z0-9_-]*$`
49
49
  ">
50
- Set <ase-task-id><instruction/></ase-task-id> (set task
51
- id to instruction) and <instruction></instruction> (set
52
- instruction empty), call the `ase_task_id(id: "<ase-task-id/>",
50
+ Set <ase-task-id><id/></ase-task-id> (set task id) and
51
+ call the `ase_task_id(id: "<ase-task-id/>",
53
52
  session: "<ase-session-id/>")` tool from the `ase` MCP
54
53
  server to switch the task, and then only output the
55
54
  following <template/>:
@@ -59,7 +58,7 @@ Procedure
59
58
  </template>
60
59
  </if>
61
60
 
62
- 2. <elseif condition="<instruction/> is NOT empty">
61
+ 2. <elseif condition="<id/> is NOT empty">
63
62
  The argument is neither empty nor a valid task id. As this
64
63
  skill only accepts an optional `[<id>]` argument and *never*
65
64
  a free-text instruction, only output the following <template/>
@@ -213,8 +212,8 @@ Procedure
213
212
  Next Step: How would you like to proceed with the plan?
214
213
  DONE: Stop processing.
215
214
  EDIT: Hand off plan to editing.
216
- IMPLEMENT: Hand off plan to implementation.
217
215
  PREFLIGHT: Hand off plan to pre-flighting.
216
+ IMPLEMENT: Hand off plan to implementation.
218
217
  </expand>
219
218
 
220
219
  2. Check the tool <result/> and dispatch accordingly:
@@ -51,7 +51,7 @@ Procedure
51
51
  </template>
52
52
  </if>
53
53
 
54
- 2. **Perform Operation**:
54
+ 2. **Perform Operation:**
55
55
 
56
56
  1. Call the `ase_task_delete(id: "<id/>")` tool of the `ase` MCP
57
57
  server to delete the task plan content and set <text/> to the
@@ -185,13 +185,13 @@ Set <content-dirty>true</content-dirty>.
185
185
 
186
186
  Set <content-dirty>false</content-dirty>.
187
187
 
188
- - If <text/> starts with `ERROR:`:
188
+ - If <text/> starts with `ERROR:` or `WARNING:`:
189
189
  Silently ignore the MCP error.
190
190
  Set <content/> to empty.
191
191
  Set <words/> to "0".
192
192
  Do not output anything.
193
193
 
194
- - If <text/> starts NOT with `ERROR:`:
194
+ - If <text/> starts NOT with `ERROR:` and NOT with `WARNING:`:
195
195
  Set <content><text/></content> (set content to text).
196
196
  Calculate the number of words <words/> of <content/>.
197
197
  Only output the following <template/>:
@@ -223,7 +223,7 @@ Procedure
223
223
  words <words/> of <plan/>.
224
224
 
225
225
  5. Call the `ase_task_save(id: "<ase-task-id/>",
226
- text: "<plan/>")` of the `ase` MCP server to save the updated
226
+ text: "<plan/>")` tool of the `ase` MCP server to save the updated
227
227
  task plan content. Do not output anything related to this MCP
228
228
  call.
229
229
 
@@ -34,8 +34,8 @@ delete the task plan, unless `--next` pre-selects this choice.
34
34
  Automatically answer the user dialog for the next step. *option*
35
35
  is a single token or a *comma-separated chronological list* of
36
36
  tokens; the *first* token is consumed by this skill, and any
37
- remaining tokens are *forwarded* (via `--next`) to the downstream
38
- skill so an entire pipeline can be pre-scripted in one shot.
37
+ remaining tokens are intentionally *discarded*, because the
38
+ downstream `ase-task-delete` skill accepts no `--next` option.
39
39
  Recognized tokens at this skill: `none` (default, interactive
40
40
  answer required), `DONE` (preserve task plan and stop), or
41
41
  `DELETE` (hand off to `ase-task-delete`).
@@ -162,7 +162,7 @@ Procedure
162
162
  </if>
163
163
 
164
164
  4. Finally, call the `ase_task_save(id: "<ase-task-id/>",
165
- text: "<content/>")` of the `ase` MCP server to save the updated
165
+ text: "<content/>")` tool of the `ase` MCP server to save the updated
166
166
  task plan content. Calculate the number of words <words/> of
167
167
  <content/>. Do not output anything related to this MCP tool call
168
168
  except the following <template/>:
@@ -157,7 +157,7 @@ Procedure
157
157
  words <words/> of <content/>.
158
158
 
159
159
  10. Call the `ase_task_save(id: "<ase-task-id/>",
160
- text: "<content/>")` of the `ase` MCP server to save the updated
160
+ text: "<content/>")` tool of the `ase` MCP server to save the updated
161
161
  task plan content. Do not output anything related to this MCP
162
162
  call.
163
163
 
@@ -212,7 +212,7 @@ Procedure
212
212
  Only output the following <template/> and then *STOP*.
213
213
 
214
214
  <template>
215
- ⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan updated -- done**
215
+ ⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan rebooted -- done**
216
216
  </template>
217
217
 
218
218
  - If <result/> is `EDIT`:
@@ -227,7 +227,7 @@ Procedure
227
227
  skill once the `Skill` tool was used.
228
228
 
229
229
  <template>
230
- ⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan updated -- hand-off to edit**
230
+ ⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan rebooted -- hand-off to edit**
231
231
  </template>
232
232
 
233
233
  - If <result/> is `IMPLEMENT`:
@@ -236,11 +236,13 @@ Procedure
236
236
  Set <args><args/> --next <getopt-option-next/></args>
237
237
  </if>
238
238
  Only output the following <template/> and then call the
239
- `Skill(skill: "ase:ase-task-implement", args: "<args/>")` tool
240
- to *apply* the plan.
239
+ tool `Skill(skill: "ase:ase-task-implement", args: "<args/>")`
240
+ to invoke the `ase:ase-task-implement` skill in order to
241
+ *implement* the updated plan. Immediately stop processing
242
+ the current skill once the `Skill` tool was used.
241
243
 
242
244
  <template>
243
- ⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan updated -- hand-off to implementation**
245
+ ⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan rebooted -- hand-off to implementation**
244
246
  </template>
245
247
 
246
248
  - If <result/> is `PREFLIGHT`:
@@ -249,10 +251,12 @@ Procedure
249
251
  Set <args><args/> --next <getopt-option-next/></args>
250
252
  </if>
251
253
  Only output the following <template/> and then call the
252
- `Skill(skill: "ase:ase-task-preflight", args: "<args/>")` tool
253
- to *apply* the plan.
254
+ tool `Skill(skill: "ase:ase-task-preflight", args: "<args/>")`
255
+ to invoke the `ase:ase-task-preflight` skill in order to
256
+ *preflight* the updated plan. Immediately stop processing
257
+ the current skill once the `Skill` tool was used.
254
258
 
255
259
  <template>
256
- ⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan updated -- hand-off to pre-flight**
260
+ ⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan rebooted -- hand-off to pre-flight**
257
261
  </template>
258
262
 
@@ -19,7 +19,8 @@ preserving the original creation timestamp, and writing a fresh plan
19
19
  content via `ase_task_save`.
20
20
 
21
21
  After the reboot, the user is asked whether to stop or hand off to
22
- `ase-task-edit`, unless `--next` pre-selects this choice.
22
+ `ase-task-edit`, `ase-task-implement`, or `ase-task-preflight`,
23
+ unless `--next` pre-selects this choice.
23
24
 
24
25
  ## OPTIONS
25
26