@rse/ase 0.0.58 → 0.0.60

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 (41) hide show
  1. package/dst/ase-getopt.js +28 -2
  2. package/dst/ase-hello.js +5 -5
  3. package/package.json +1 -1
  4. package/plugin/.claude-plugin/plugin.json +1 -1
  5. package/plugin/.github/plugin/plugin.json +1 -1
  6. package/plugin/meta/ase-format-adr.md +199 -0
  7. package/plugin/meta/ase-getopt.md +12 -5
  8. package/plugin/package.json +1 -1
  9. package/plugin/skills/ase-arch-discover/SKILL.md +1 -1
  10. package/plugin/skills/ase-code-craft/SKILL.md +43 -15
  11. package/plugin/skills/ase-code-craft/help.md +24 -8
  12. package/plugin/skills/ase-code-explain/SKILL.md +1 -1
  13. package/plugin/skills/ase-code-insight/SKILL.md +1 -1
  14. package/plugin/skills/ase-code-refactor/SKILL.md +43 -15
  15. package/plugin/skills/ase-code-refactor/help.md +24 -8
  16. package/plugin/skills/ase-code-resolve/SKILL.md +43 -15
  17. package/plugin/skills/ase-code-resolve/help.md +24 -8
  18. package/plugin/skills/ase-meta-changes/SKILL.md +1 -1
  19. package/plugin/skills/ase-meta-chat/SKILL.md +1 -1
  20. package/plugin/skills/ase-meta-diaboli/SKILL.md +152 -0
  21. package/plugin/skills/ase-meta-diaboli/help.md +60 -0
  22. package/plugin/skills/ase-meta-persona/SKILL.md +1 -1
  23. package/plugin/skills/ase-meta-quorum/SKILL.md +1 -1
  24. package/plugin/skills/ase-meta-search/SKILL.md +1 -1
  25. package/plugin/skills/ase-meta-why/SKILL.md +4 -4
  26. package/plugin/skills/ase-task-delete/SKILL.md +1 -1
  27. package/plugin/skills/ase-task-edit/SKILL.md +42 -23
  28. package/plugin/skills/ase-task-edit/help.md +10 -4
  29. package/plugin/skills/ase-task-grill/SKILL.md +275 -0
  30. package/plugin/skills/ase-task-grill/help.md +79 -0
  31. package/plugin/skills/ase-task-id/SKILL.md +1 -1
  32. package/plugin/skills/ase-task-implement/SKILL.md +31 -9
  33. package/plugin/skills/ase-task-implement/help.md +8 -4
  34. package/plugin/skills/ase-task-list/SKILL.md +1 -1
  35. package/plugin/skills/ase-task-preflight/SKILL.md +40 -13
  36. package/plugin/skills/ase-task-preflight/help.md +10 -5
  37. package/plugin/skills/ase-task-reboot/SKILL.md +61 -11
  38. package/plugin/skills/ase-task-reboot/help.md +13 -6
  39. package/plugin/skills/ase-task-rename/SKILL.md +1 -1
  40. package/plugin/skills/ase-task-view/SKILL.md +1 -1
  41. /package/plugin/meta/{ase-plan.md → ase-format-plan.md} +0 -0
@@ -9,7 +9,8 @@
9
9
  [`--help`|`-h`]
10
10
  [`--auto`|`-a`]
11
11
  [`--dry`|`-d`]
12
- [`--next`|`-n` *option*]
12
+ [`--quick`|`-Q`]
13
+ [`--next`|`-n` *option*[,...]]
13
14
  [*task-id*:] *request*
14
15
 
15
16
  ## DESCRIPTION
@@ -39,13 +40,28 @@ plan via `ase_task_save` and then hands off to `ase-task-edit`,
39
40
  type-checker, or program execution) once the source files have
40
41
  been modified.
41
42
 
42
- `--next`|`-n` *option*:
43
- Automatically choose the next step after composing the plan,
44
- where *option* is either `none` (default, hand-off to
45
- `ase-task-edit` interactively), `DONE` (stop), `EDIT` (hand off
46
- to `ase-task-edit`), `PREFLIGHT` (hand off to
47
- `ase-task-preflight`), or `IMPLEMENT` (hand off to
48
- `ase-task-implement`).
43
+ `--quick`|`-Q`:
44
+ Shorthand alias for `-a -d -n IMPLEMENT,DELETE`: automatically pick
45
+ the recommended refactoring approach, compose the plan *without* the
46
+ `※ VERIFICATION` section, immediately hand off to `ase-task-implement`,
47
+ and finally `ase-task-delete` the now-consumed plan. This gives a
48
+ single, fast *one-shot* refactoring mode.
49
+
50
+ `--next`|`-n` *option*[,...]:
51
+ Automatically choose the next step after composing the plan.
52
+ *option* is a single token or a *comma-separated chronological
53
+ list* of tokens; an `IMPLEMENT` or `PREFLIGHT` head token is
54
+ consumed by this skill (bypassing `ase-task-edit`), and any
55
+ remaining tokens are *forwarded* (via `--next`) to the downstream
56
+ skill. For all other head tokens, the *entire* list is forwarded
57
+ to `ase-task-edit`, which consumes its head itself. This lets an
58
+ entire pipeline be pre-scripted in one shot. Recognized tokens at
59
+ this skill: `none` (default, hand-off to `ase-task-edit`
60
+ interactively), `DONE` (stop), `EDIT` (hand off to
61
+ `ase-task-edit`), `PREFLIGHT` (hand off to `ase-task-preflight`),
62
+ or `IMPLEMENT` (hand off to `ase-task-implement`). Example:
63
+ `--next PREFLIGHT,IMPLEMENT,DONE` refactors, preflights, implements,
64
+ and exits without further dialog.
49
65
 
50
66
  ## ARGUMENTS
51
67
 
@@ -1,12 +1,12 @@
1
1
  ---
2
2
  name: ase-code-resolve
3
- argument-hint: "[--help|-h] [--auto|-a] [--dry|-d] [--next|-n <option>] [<task-id>:] <problem>"
3
+ argument-hint: "[--help|-h] [--auto|-a] [--dry|-d] [--quick|-Q] [--next|-n <option>[,...]] [<task-id>:] <problem>"
4
4
  description: >
5
5
  Resolve Problem:
6
6
  Use when user wants a bug fixed or problem resolved.
7
7
  user-invocable: true
8
8
  disable-model-invocation: false
9
- effort: high
9
+ effort: xhigh
10
10
  allowed-tools:
11
11
  - "Skill"
12
12
  - "Agent"
@@ -23,16 +23,22 @@ Resolve Problem
23
23
 
24
24
  <expand name="getopt"
25
25
  arg1="ase-code-resolve"
26
- arg2="--auto|-a --dry|-d --next|-n=(none|DONE|EDIT|PREFLIGHT|IMPLEMENT)">
26
+ arg2="--auto|-a --dry|-d --quick|-Q --next|-n=(none|DONE|EDIT|PREFLIGHT|IMPLEMENT)...">
27
27
  $ARGUMENTS
28
28
  </expand>
29
29
 
30
+ <if condition="<getopt-option-quick/> is equal `true`">
31
+ The `--quick`/`-Q` flag is a *shorthand alias*: set <getopt-option-auto/>
32
+ to `true`, <getopt-option-dry/> to `true`, and <getopt-option-next/> to
33
+ `IMPLEMENT,DELETE`. Do not output anything.
34
+ </if>
35
+
30
36
  <objective>
31
37
  *Resolve* the following problem:
32
38
  <problem><getopt-arguments/></problem>
33
39
  </objective>
34
40
 
35
- @${CLAUDE_SKILL_DIR}/../../meta/ase-plan.md
41
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-format-plan.md
36
42
 
37
43
  Procedure
38
44
  ---------
@@ -210,7 +216,10 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
210
216
 
211
217
  You *MUST* perform the following sub-steps *internally* and *without
212
218
  any output* until and including the recommendation decision. Only
213
- sub-step 4 below is allowed to produce output.
219
+ sub-steps 4-6 below are allowed to produce output, and only if
220
+ <getopt-option-auto/> is equal `false`. If <getopt-option-auto/> is
221
+ equal `true`, *skip* the reporting sub-steps 4-6 entirely (perform
222
+ no output at all) to speed up processing.
214
223
 
215
224
  1. *Propose* corresponding *resolution approach*, including optionally,
216
225
  some *alternative* resolution approaches. Do *not* output anything
@@ -340,23 +349,42 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
340
349
 
341
350
  6. Directly pass-through control to the next skill:
342
351
 
343
- 1. <if condition="<getopt-option-next/> is equal `IMPLEMENT`">
344
- Call the tool `Skill(skill: "ase:ase-task-implement")` to
345
- *implement* the freshly composed plan, bypassing `ase-task-edit`.
352
+ Treat <getopt-option-next/> as a comma-separated chronological
353
+ list of pre-selected next-step tokens. *Peek* the *first* token
354
+ as <head/> (or `none` if the list is `none`/empty).
355
+
356
+ 1. <if condition="<head/> is equal `IMPLEMENT`">
357
+ Consume the head: set <getopt-option-next/> to the remaining
358
+ tokens (joined back with `,`, or `none` if empty). Set
359
+ <args></args> (empty).
360
+ <if condition="<getopt-option-next/> is not equal `none`">
361
+ Set <args>--next <getopt-option-next/></args> (forward
362
+ remaining list tokens to the downstream skill).
363
+ </if>
364
+ Call the tool `Skill(skill: "ase:ase-task-implement", args: <args/>)`
365
+ to *implement* the freshly composed plan, bypassing `ase-task-edit`.
346
366
  </if>
347
367
 
348
- 2. <if condition="<getopt-option-next/> is equal `PREFLIGHT`">
349
- Call the tool `Skill(skill: "ase:ase-task-preflight")` to
350
- *preflight* the freshly composed plan, bypassing `ase-task-edit`.
368
+ 2. <if condition="<head/> is equal `PREFLIGHT`">
369
+ Consume the head: set <getopt-option-next/> to the remaining
370
+ tokens (joined back with `,`, or `none` if empty). Set
371
+ <args></args> (empty).
372
+ <if condition="<getopt-option-next/> is not equal `none`">
373
+ Set <args>--next <getopt-option-next/></args> (forward
374
+ remaining list tokens to the downstream skill).
375
+ </if>
376
+ Call the tool `Skill(skill: "ase:ase-task-preflight", args: <args/>)`
377
+ to *preflight* the freshly composed plan, bypassing `ase-task-edit`.
351
378
  </if>
352
379
 
353
380
  3. <if condition="
354
- <getopt-option-next/> is not equal `IMPLEMENT` AND
355
- <getopt-option-next/> is not equal `PREFLIGHT`
381
+ <head/> is not equal `IMPLEMENT` AND
382
+ <head/> is not equal `PREFLIGHT`
356
383
  ">
357
- Set <args></args> (set args to empty).
384
+ Forward the *entire* (unshifted) list to `ase-task-edit`, which
385
+ will consume its head itself. Set <args></args> (empty).
358
386
  <if condition="<getopt-option-next/> is not equal `none`">
359
- Set <args><args/> --next <getopt-option-next/></args> (append to args).
387
+ Set <args>--next <getopt-option-next/></args> (append to args).
360
388
  </if>
361
389
  Then call the tool `Skill(skill: "ase:ase-task-edit", args: <args/>)`.
362
390
  </if>
@@ -9,7 +9,8 @@
9
9
  [`--help`|`-h`]
10
10
  [`--auto`|`-a`]
11
11
  [`--dry`|`-d`]
12
- [`--next`|`-n` *option*]
12
+ [`--quick`|`-Q`]
13
+ [`--next`|`-n` *option*[,...]]
13
14
  [*task-id*:] *problem*
14
15
 
15
16
  ## DESCRIPTION
@@ -44,13 +45,28 @@ plan via `ase_task_save` and then hands off to `ase-task-edit`,
44
45
  type-checker, or program execution) once the source files have
45
46
  been modified.
46
47
 
47
- `--next`|`-n` *option*:
48
- Automatically choose the next step after composing the plan,
49
- where *option* is either `none` (default, hand-off to
50
- `ase-task-edit` interactively), `DONE` (stop), `EDIT` (hand off
51
- to `ase-task-edit`), `PREFLIGHT` (hand off to
52
- `ase-task-preflight`), or `IMPLEMENT` (hand off to
53
- `ase-task-implement`).
48
+ `--quick`|`-Q`:
49
+ Shorthand alias for `-a -d -n IMPLEMENT,DELETE`: automatically pick
50
+ the recommended resolution approach, compose the plan *without* the
51
+ `※ VERIFICATION` section, immediately hand off to `ase-task-implement`,
52
+ and finally `ase-task-delete` the now-consumed plan. This gives a
53
+ single, fast *one-shot* resolution mode.
54
+
55
+ `--next`|`-n` *option*[,...]:
56
+ Automatically choose the next step after composing the plan.
57
+ *option* is a single token or a *comma-separated chronological
58
+ list* of tokens; an `IMPLEMENT` or `PREFLIGHT` head token is
59
+ consumed by this skill (bypassing `ase-task-edit`), and any
60
+ remaining tokens are *forwarded* (via `--next`) to the downstream
61
+ skill. For all other head tokens, the *entire* list is forwarded
62
+ to `ase-task-edit`, which consumes its head itself. This lets an
63
+ entire pipeline be pre-scripted in one shot. Recognized tokens at
64
+ this skill: `none` (default, hand-off to `ase-task-edit`
65
+ interactively), `DONE` (stop), `EDIT` (hand off to
66
+ `ase-task-edit`), `PREFLIGHT` (hand off to `ase-task-preflight`),
67
+ or `IMPLEMENT` (hand off to `ase-task-implement`). Example:
68
+ `--next IMPLEMENT,DONE` resolves the problem, implements it, and
69
+ exits without further dialog.
54
70
 
55
71
  ## ARGUMENTS
56
72
 
@@ -5,7 +5,7 @@ description: >
5
5
  Update changes entries in CHANGELOG.md files
6
6
  user-invocable: true
7
7
  disable-model-invocation: false
8
- effort: medium
8
+ effort: high
9
9
  allowed-tools:
10
10
  - "Bash(git log *)"
11
11
  - "Bash(git diff *)"
@@ -7,7 +7,7 @@ description: >
7
7
  DeepSeek or xAI Grok should be queried with a single chat message.
8
8
  user-invocable: true
9
9
  disable-model-invocation: false
10
- effort: low
10
+ effort: medium
11
11
  allowed-tools:
12
12
  - "Agent"
13
13
  ---
@@ -0,0 +1,152 @@
1
+ ---
2
+ name: ase-meta-diaboli
3
+ argument-hint: "[--help|-h] <thesis>"
4
+ description: >
5
+ Challenge a thesis by playing "Devil’s Advocate" (latin: "Advocatus
6
+ Diaboli"). Use when the user wants a thesis or statement
7
+ relentlessly challenged or criticised.
8
+ user-invocable: true
9
+ disable-model-invocation: false
10
+ effort: xhigh
11
+ ---
12
+
13
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
14
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
15
+
16
+ <skill name="ase-meta-diaboli">
17
+ Play "Devil's Advocate"
18
+ </skill>
19
+
20
+ <objective>
21
+ Play "Devil’s Advocate" (latin: "Advocatus Diaboli") by relentlessly
22
+ challenging or criticising the thesis: <thesis>$ARGUMENTS</thesis>
23
+ </objective>
24
+
25
+ 1. **Repeat Thesis**:
26
+
27
+ Output the thesis with the following <template/>:
28
+
29
+ <template>
30
+ &#x26AA; **THESIS**: <thesis/>
31
+ </template>
32
+
33
+ 2. **Determine Anti-Thesis**:
34
+
35
+ Reason on the thesis in <thesis/> by playing *Devil’s Advocate*
36
+ (latin: *Advocatus Diaboli*) by relentlessly challenging or
37
+ criticising it with the help of the following tenets:
38
+
39
+ - **Steelmanning**:
40
+ Attack the strongest ("steelman") interpretation of the
41
+ <thesis/>, not the weakest ("strawman"), because defeating a
42
+ strawman proves nothing.
43
+
44
+ - **Stress-Testing Fundamentals**:
45
+ Identify weaknesses already in the fundamental ideas behind the
46
+ thesis, because if the foundation is already cracked, no amount
47
+ of polish on the surface can save what is built on top of it.
48
+
49
+ - **Target Claims, Not Person**:
50
+ Critique the thesis, the assumption, the evidence — never the
51
+ proponent's competence or motives, because the moment it gets
52
+ personal, the inquiry dies.
53
+
54
+ - **Make the Implicit Explicit**:
55
+ Surface the unstated assumptions the thesis silently depends on,
56
+ because most weak arguments hide in premises nobody bothered to say
57
+ out loud.
58
+
59
+ - **Demand Evidence Proportional to Claim**:
60
+ Ask "How do we know this?" and "What would it take to be true?",
61
+ because extraordinary claims need extraordinary support and
62
+ comfortable consensus needs scrutiny most of all.
63
+
64
+ - **Seek the Disconfirming Case**:
65
+ Actively hunt for the counterexample, the edge case, the scenario
66
+ where the position fails, because one solid counterexample outweighs
67
+ ten confirmations.
68
+
69
+ - **Risk Identification**:
70
+ Focus on potential problems in the thesis with the highest
71
+ potential risk only, because low-risk problems are not worth the
72
+ explicit discussion.
73
+
74
+ - **Push the Logic to its Conclusion**:
75
+ Ask "If we accept this, then what?" and apply "Reduction to
76
+ Absurdity" (latin: "Reductio Ad Absurdum"), because this disproves
77
+ the thesis by showing that accepting it leads to a logically
78
+ absurd, contradictory, or impossible conclusion.
79
+
80
+ - **Expose Hidden Costs and Trade-Offs**:
81
+ Name the opportunity cost, the maintenance burden, the failure mode
82
+ nobody priced in, because every choice in the thesis forecloses
83
+ alternatives.
84
+
85
+ - **Stay Falsifiable and Concrete**:
86
+ Frame objections so they can be answered or dismissed with facts,
87
+ because vague unease ("I just don't like it") is just noise.
88
+
89
+ - **Argue in Good Faith**:
90
+ Make clear you're just stress-testing the thesis, not
91
+ obstructing, because the goal of the objective is a better final
92
+ decision, not winning.
93
+
94
+ - **Know When to Yield**:
95
+ Conceding when the argument holds is what makes the challenge
96
+ credible, because a Devil's Advocate who can never be satisfied is
97
+ just a contrarian.
98
+
99
+ - **Pre-Mortem Thinking**:
100
+ Imagine failure scenarios of the thesis, because better to
101
+ prevent them in advance than having to resolve them later.
102
+
103
+ For each Anti-Thesis or Counter-Argument rank it on a Likert scale
104
+ of 0 (weak) to 10 (strong). Repeat the process of finding more
105
+ Anti-Theses or Counter-Arguments until you EITHER have found at
106
+ least 10 Anti-Theses or Counter-Arguments with at least a rank
107
+ of 7 OR you have already checked a total of 50 Anti-Theses or
108
+ Counter-Arguments.
109
+
110
+ Then, for the top-10 highest-ranked Anti-Theses or
111
+ Counter-Arguments, sort them by their rank from highest to lowest,
112
+ store each in <antithesis-N/> with the format `**<aspect-N/>**
113
+ (rank: <rank-N/>/10): <statement-N/>` (where <aspect-N/> is a short
114
+ 1-3 word summary of <statement-N/>, <rank-N/> is the determined
115
+ rank on the Likert scale, and <statement-N/> is a single-sentence
116
+ statement of not more than 40 words), and then output the following
117
+ <template/>:
118
+
119
+ <template>
120
+ &#x1F7E0; **ANTITHESIS**: <antithesis-N/>
121
+ </template>
122
+
123
+ 3. **Dialectical Reasoning**:
124
+
125
+ Following the Hegelian dialectics of...
126
+
127
+ *Thesis* + *Antithesis* → *Synthesis*
128
+
129
+ ...with...
130
+
131
+ - *Thesis*: the initial statement, claim, or position. It is asserted
132
+ as true, but on its own it is one-sided: it captures part of the truth
133
+ while ignoring its own limits, gaps, or internal tensions.
134
+
135
+ - *Antithesis*: the opposing force. It is the contradiction,
136
+ objection, or counter-position that the thesis provokes — precisely
137
+ the role a Devil's Advocate played. The antithesis exposes what the
138
+ thesis omitted or got wrong.
139
+
140
+ - *Synthesis*: the resolution. Not a mushy "average" of the two, and
141
+ not the victory of one over the other, but a higher position that
142
+ preserves what was true in both while discarding what was false. The
143
+ synthesis transcends the conflict by reframing it.
144
+
145
+ ...finally derive a strong single-sentence (not more than 40 words)
146
+ synthesis of the <thesis/> and all found <antithesis-N/>, store it
147
+ in <synthesis/>, and then finally output the following <template/>:
148
+
149
+ <template>
150
+ &#x1F535; **SYNTHESIS**: <synthesis/>
151
+ </template>
152
+
@@ -0,0 +1,60 @@
1
+
2
+ ## NAME
3
+
4
+ `ase-meta-diaboli` - Play "Devil's Advocate" (latin: "Advocatus Diaboli")
5
+
6
+ ## SYNOPSIS
7
+
8
+ `ase-meta-diaboli`
9
+ [`--help`|`-h`]
10
+ *thesis*
11
+
12
+ ## DESCRIPTION
13
+
14
+ The `ase-meta-diaboli` skill plays *Devil's Advocate* (latin:
15
+ *Advocatus Diaboli*) by relentlessly challenging or criticising a
16
+ supplied *thesis*. It applies a disciplined set of critical-thinking
17
+ tenets — steelmanning, stress-testing fundamentals, surfacing implicit
18
+ assumptions, demanding proportional evidence, seeking disconfirming
19
+ cases, *Reductio Ad Absurdum*, exposing hidden costs, and pre-mortem
20
+ thinking — while targeting the claim rather than its proponent and
21
+ yielding where the argument genuinely holds.
22
+
23
+ The skill iterates until it has found at least ten anti-theses
24
+ (counter-arguments) each ranked at least 7 on a 0 (weak) to 10
25
+ (strong) Likert scale, reports the top ten sorted from strongest to
26
+ weakest, and finally applies *Hegelian dialectics* (*Thesis* +
27
+ *Antithesis* → *Synthesis*) to derive a single-sentence *SYNTHESIS*
28
+ that preserves what is true in both the thesis and its antitheses
29
+ while discarding what is false.
30
+
31
+ The intent is constructive: stress-testing the thesis in good faith to
32
+ arrive at a better final decision, not obstructing or merely being
33
+ contrarian.
34
+
35
+ ## ARGUMENTS
36
+
37
+ *thesis*:
38
+ The statement, claim, or position to be relentlessly challenged.
39
+ It may be technical, factual, or opinion-based; the skill attacks
40
+ its strongest ("steelman") interpretation.
41
+
42
+ ## EXAMPLES
43
+
44
+ Challenge a technology-choice claim:
45
+
46
+ ```text
47
+ ❯ /ase-meta-diaboli HAPI is the best REST framework
48
+ ```
49
+
50
+ Stress-test a design decision:
51
+
52
+ ```text
53
+ ❯ /ase-meta-diaboli We should rewrite the service in Rust.
54
+ ```
55
+
56
+ ## SEE ALSO
57
+
58
+ `ase-meta-why`, `ase-meta-evaluate`, `ase-meta-quorum`,
59
+ `ase-meta-persona`.
60
+
@@ -10,7 +10,7 @@ description: >
10
10
  Use when user says "persona <persona>" or "be <persona>".
11
11
  user-invocable: true
12
12
  disable-model-invocation: false
13
- effort: medium
13
+ effort: high
14
14
  ---
15
15
 
16
16
  @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
@@ -5,7 +5,7 @@ description: >
5
5
  Query Multiple AIs for Quorum Answer.
6
6
  user-invocable: true
7
7
  disable-model-invocation: false
8
- effort: medium
8
+ effort: high
9
9
  allowed-tools:
10
10
  - "Agent"
11
11
  - "TaskCreate"
@@ -6,7 +6,7 @@ description: >
6
6
  Prefer this skill before using Perplexity, Brave and WebSearch.
7
7
  user-invocable: true
8
8
  disable-model-invocation: false
9
- effort: low
9
+ effort: medium
10
10
  allowed-tools:
11
11
  - "mcp__search-perplexity__perplexity_search"
12
12
  - "mcp__search-brave__brave_web_search"
@@ -5,7 +5,7 @@ description: >
5
5
  Five-Whys Root-Cause Analysis.
6
6
  user-invocable: true
7
7
  disable-model-invocation: false
8
- effort: medium
8
+ effort: high
9
9
  ---
10
10
 
11
11
  @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
@@ -27,7 +27,7 @@ addressing surface-level symptoms.
27
27
  </objective>
28
28
 
29
29
  <flow>
30
- 1. <step id="STEP 1: PROBLEM">
30
+ 1. <step id="STEP 1: Determine Problem">
31
31
  State the problem statement.
32
32
 
33
33
  <template>
@@ -35,7 +35,7 @@ addressing surface-level symptoms.
35
35
  </template>
36
36
  </step>
37
37
 
38
- 2. <step id="STEP 2: ROOT-CAUSE ANALYSIS">
38
+ 2. <step id="STEP 2: Root-Cause Analysis">
39
39
  Find the root-cause of <problem/> by following the following iteration cycle.
40
40
  Start with a <question/> set equal to the <problem/>.
41
41
 
@@ -55,7 +55,7 @@ addressing surface-level symptoms.
55
55
  </for>
56
56
  </step>
57
57
 
58
- 3. <step id="STEP 3: SOLUTION">
58
+ 3. <step id="STEP 3: Report Solution">
59
59
  Validate the root-cause by working backwards the causality chain.
60
60
  Propose a solution that addresses and solves the root-cause.
61
61
  For the proposed solution, optionally directly propose corresponding source code changes.
@@ -7,7 +7,7 @@ description: >
7
7
  "task", "plan", "spec", or "specification".
8
8
  user-invocable: true
9
9
  disable-model-invocation: false
10
- effort: low
10
+ effort: high
11
11
  ---
12
12
 
13
13
  @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ase-task-edit
3
- argument-hint: "[--help|-h] [--plan|-p <option>] [--dry|-d] [--next|-n <option>] [<id> | <id>: <instruction> | <instruction>]"
3
+ argument-hint: "[--help|-h] [--plan|-p <option>] [--dry|-d] [--next|-n <option>[,...]] [<id> | <id>: <instruction> | <instruction>]"
4
4
  description: >
5
5
  Iteratively edit and refine a named plan for a task through a
6
6
  conversational loop. Each round, the current plan is shown and the
@@ -23,7 +23,7 @@ Iteratively Edit a Task Plan
23
23
 
24
24
  <expand name="getopt"
25
25
  arg1="ase-task-edit"
26
- arg2="--plan|-p=(none|OVERWRITE|REFINE|PRESERVE) --dry|-d --next|-n=(none|DONE|IMPLEMENT|PREFLIGHT|REFINE)">
26
+ arg2="--plan|-p=(none|OVERWRITE|REFINE|PRESERVE) --dry|-d --next|-n=(none|DONE|IMPLEMENT|PREFLIGHT|REFINE)...">
27
27
  $ARGUMENTS
28
28
  </expand>
29
29
 
@@ -34,7 +34,7 @@ continued refinement, finalization, or hand-off to implementation or
34
34
  preflight.
35
35
  </objective>
36
36
 
37
- @${CLAUDE_SKILL_DIR}/../../meta/ase-plan.md
37
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-format-plan.md
38
38
 
39
39
  Procedure
40
40
  ---------
@@ -333,20 +333,31 @@ Set <content-dirty>true</content-dirty>.
333
333
 
334
334
  4. *Determine next step*:
335
335
 
336
- - If <getopt-option-next/> matches the regex `^(DONE|IMPLEMENT|PREFLIGHT|REFINE)$`:
337
- Honor the pre-selection what to do as the next step.
338
- Set <result><getopt-option-next/></result>.
336
+ - If <getopt-option-next/> is not equal to `none`:
337
+ Treat <getopt-option-next/> as a comma-separated chronological
338
+ list of pre-selected next-step tokens. *Split* it on `,`,
339
+ take the *first* token as <head/>, and store the remaining
340
+ tokens (joined back with `,`, or `none` if empty) into
341
+ <getopt-option-next/> so subsequent loop iterations or
342
+ downstream skills can consume the tail.
339
343
 
340
- Then *clear* <getopt-option-next/> by setting
341
- <getopt-option-next>none</getopt-option-next> so that
342
- subsequent loop iterations fall back to the interactive
343
- dialog.
344
+ - If <head/> matches the regex `^(DONE|IMPLEMENT|PREFLIGHT|REFINE)$`:
345
+ Honor the pre-selected token.
346
+ Set <result><head/></result>.
344
347
 
345
- Set <instruction></instruction> (clear the instruction, as
346
- any instruction carried in via the arguments was already
347
- applied to the plan in step 2 before this loop), so that a
348
- pre-selected `REFINE` correctly asks the user for a *fresh*
349
- refinement instruction below.
348
+ Set <instruction></instruction> (clear the instruction, as
349
+ any instruction carried in via the arguments was already
350
+ applied to the plan in step 2 before this loop), so that a
351
+ pre-selected `REFINE` correctly asks the user for a *fresh*
352
+ refinement instruction below.
353
+
354
+ - else:
355
+ Only output the following <template/> and then immediately
356
+ *STOP* processing the entire current skill:
357
+
358
+ <template>
359
+ ⧉ **ASE**: ☻ skill: **ase-task-edit**, ▶ ERROR: invalid `--next` token: **<head/>**
360
+ </template>
350
361
 
351
362
  - If <getopt-option-next/> is equal to `none`:
352
363
  Let the *user interactively choose* what to do as the next step.
@@ -372,10 +383,14 @@ Set <content-dirty>true</content-dirty>.
372
383
 
373
384
  - If <result/> is `IMPLEMENT`:
374
385
 
375
- *Break* out of the *loop*, only output the following
376
- <template/> and then call the `Skill(skill:
377
- "ase:ase-task-implement")` tool to *apply* the finalized
378
- plan.
386
+ *Break* out of the *loop*. Set <args></args> (empty).
387
+ <if condition="<getopt-option-next/> is not equal `none`">
388
+ Set <args>--next <getopt-option-next/></args> (forward
389
+ remaining list tokens to the downstream skill).
390
+ </if>
391
+ Only output the following <template/> and then call the
392
+ `Skill(skill: "ase:ase-task-implement", args: <args/>)` tool
393
+ to *apply* the finalized plan.
379
394
 
380
395
  <template>
381
396
  ⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan finalized -- hand-off to implementation**
@@ -383,10 +398,14 @@ Set <content-dirty>true</content-dirty>.
383
398
 
384
399
  - If <result/> is `PREFLIGHT`:
385
400
 
386
- *Break* out of the *loop*, only output the following
387
- <template/> and then call the `Skill(skill:
388
- "ase:ase-task-preflight")` tool to *apply* the finalized
389
- plan.
401
+ *Break* out of the *loop*. Set <args></args> (empty).
402
+ <if condition="<getopt-option-next/> is not equal `none`">
403
+ Set <args>--next <getopt-option-next/></args> (forward
404
+ remaining list tokens to the downstream skill).
405
+ </if>
406
+ Only output the following <template/> and then call the
407
+ `Skill(skill: "ase:ase-task-preflight", args: <args/>)` tool
408
+ to *apply* the finalized plan.
390
409
 
391
410
  <template>
392
411
  ⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan finalized -- hand-off to pre-flight**
@@ -9,7 +9,7 @@
9
9
  [`--help`|`-h`]
10
10
  [`--plan`|`-p` *option*]
11
11
  [`--dry`|`-d`]
12
- [`--next`|`-n` *option*]
12
+ [`--next`|`-n` *option*[,...]]
13
13
  [*id* | *id*: *instruction* | *instruction*]
14
14
 
15
15
  ## DESCRIPTION
@@ -41,13 +41,19 @@ command from outside the agent tool.
41
41
  build, tests, linter, type-checker, or program execution) once
42
42
  the source files have been modified.
43
43
 
44
- `--next`|`-n` *option*:
44
+ `--next`|`-n` *option*[,...]:
45
45
  Automatically answer the user dialog for the next step (at the end
46
- of this skill) with *option*, which can be either `none` (default,
46
+ of this skill). *option* is a single token or a *comma-separated
47
+ chronological list* of tokens; each iteration of the planning loop
48
+ consumes the *first* token of the list, and on hand-off (`IMPLEMENT`
49
+ / `PREFLIGHT`) any remaining tokens are *forwarded* (via `--next`)
50
+ to the downstream skill so an entire pipeline can be pre-scripted
51
+ in one shot. Recognized tokens at this skill: `none` (default,
47
52
  interactive answer required), `DONE` (no next step), `IMPLEMENT`
48
53
  (hand-over to `ase-task-implement`), `PREFLIGHT` (hand-over to
49
54
  `ase-task-preflight`), or `REFINE` (refine the plan with subsequent
50
- instruction).
55
+ instruction). Example: `--next REFINE,DONE` first refines once,
56
+ then exits the loop without asking.
51
57
 
52
58
  ## ARGUMENTS
53
59