@rse/ase 0.0.30 → 0.0.31

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 (48) hide show
  1. package/dst/ase-hello.js +22 -0
  2. package/dst/ase-hook.js +3 -1
  3. package/dst/ase-setup.js +10 -7
  4. package/package.json +2 -1
  5. package/plugin/.claude/settings.local.json +7 -0
  6. package/plugin/.claude-plugin/plugin.json +20 -0
  7. package/plugin/.github/plugin/plugin.json +21 -0
  8. package/plugin/agents/ase-meta-chat.md +10 -0
  9. package/plugin/agents/ase-meta-search.md +16 -0
  10. package/plugin/commands/ase-code-lint/complete.md +9 -0
  11. package/plugin/commands/ase-code-lint/explain.md +9 -0
  12. package/plugin/commands/ase-code-lint/nope.md +11 -0
  13. package/plugin/commands/ase-code-lint/reassess.md +15 -0
  14. package/plugin/commands/ase-code-lint/recheck.md +9 -0
  15. package/plugin/commands/ase-code-lint/refine.md +9 -0
  16. package/plugin/hooks/hooks-copilot.json +23 -0
  17. package/plugin/hooks/hooks.json +40 -0
  18. package/plugin/meta/ase-constitution.md +114 -0
  19. package/plugin/meta/ase-dialog.md +122 -0
  20. package/plugin/meta/ase-persona.md +63 -0
  21. package/plugin/meta/ase-plan.md +69 -0
  22. package/plugin/meta/ase-skill.md +238 -0
  23. package/plugin/skills/ase-arch-analyze/SKILL.md +442 -0
  24. package/plugin/skills/ase-arch-discover/SKILL.md +160 -0
  25. package/plugin/skills/ase-code-analyze/SKILL.md +108 -0
  26. package/plugin/skills/ase-code-craft/SKILL.md +237 -0
  27. package/plugin/skills/ase-code-explain/SKILL.md +115 -0
  28. package/plugin/skills/ase-code-insight/SKILL.md +96 -0
  29. package/plugin/skills/ase-code-lint/SKILL.md +382 -0
  30. package/plugin/skills/ase-code-refactor/SKILL.md +241 -0
  31. package/plugin/skills/ase-code-resolve/SKILL.md +299 -0
  32. package/plugin/skills/ase-meta-changes/SKILL.md +95 -0
  33. package/plugin/skills/ase-meta-chat/SKILL.md +58 -0
  34. package/plugin/skills/ase-meta-commit/SKILL.md +64 -0
  35. package/plugin/skills/ase-meta-diagram/SKILL.md +101 -0
  36. package/plugin/skills/ase-meta-evaluate/SKILL.md +247 -0
  37. package/plugin/skills/ase-meta-persona/SKILL.md +52 -0
  38. package/plugin/skills/ase-meta-quorum/SKILL.md +122 -0
  39. package/plugin/skills/ase-meta-search/SKILL.md +48 -0
  40. package/plugin/skills/ase-meta-why/SKILL.md +69 -0
  41. package/plugin/skills/ase-task-delete/SKILL.md +76 -0
  42. package/plugin/skills/ase-task-edit/SKILL.md +390 -0
  43. package/plugin/skills/ase-task-id/SKILL.md +46 -0
  44. package/plugin/skills/ase-task-implement/SKILL.md +146 -0
  45. package/plugin/skills/ase-task-list/SKILL.md +44 -0
  46. package/plugin/skills/ase-task-preflight/SKILL.md +181 -0
  47. package/plugin/skills/ase-task-reboot/SKILL.md +161 -0
  48. package/plugin/skills/ase-task-view/SKILL.md +81 -0
@@ -0,0 +1,247 @@
1
+ ---
2
+ name: ase-meta-evaluate
3
+ argument-hint: "<request>"
4
+ description: >
5
+ Evaluate alternatives through a weighted multi-criteria decision
6
+ matrix. Use when the user calls for the *evaluation* of
7
+ *alternatives*, wants to *compare* things, or asks what the best is
8
+ from a list of choices.
9
+ user-invocable: true
10
+ disable-model-invocation: false
11
+ effort: high
12
+ ---
13
+
14
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-persona.md
15
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
16
+
17
+ Evaluate Alternatives
18
+ =====================
19
+
20
+ Your role is an experienced, *expert-level assistant*,
21
+ specialized in *evaluating alternatives*.
22
+
23
+ <objective>
24
+ *Evaluate* *alternatives* through a weighted
25
+ multi-*criteria* decision matrix.
26
+ </objective>
27
+
28
+ <flow>
29
+ 1. <step id="STEP 1: Determine Reason">
30
+ - From the <request>$ARGUMENTS</request>, try to derive the overall
31
+ reason <reason/> for the evaluation. If no such reason can be
32
+ derived, assume <reason>generic comparison</reason>.
33
+
34
+ - Output the determined reason with just the following <template/>
35
+ and do not output anything else:
36
+
37
+ <template>
38
+ &#x26AA; **REASON**: *<reason/>*
39
+ </template>
40
+ </step>
41
+
42
+ 2. <step id="STEP 2: Determine Alternatives">
43
+ - From the <request>$ARGUMENTS</request> derive the two or more
44
+ alternatives <alternative-K/> (K=1-N) the user wants to be
45
+ evaluated. Do not output anything.
46
+
47
+ - If fewer than two alternatives could be derived (N<2), output the
48
+ following <template/> and *stop the entire flow* immediately without
49
+ executing any further steps:
50
+
51
+ <template>
52
+ &#x1F7E0; **ERROR: INSUFFICIENT ALTERNATIVES**: at least two are required for a comparison!
53
+ </template>
54
+
55
+ - For each alternative <alternative-K/> (K=1-N), decide whether
56
+ you have all necessary information at hand to give it the proper,
57
+ unique, short, and *concise name* <alternative-K/>. If you are
58
+ unsure, use the `ase-meta-search` skill (at most one invocation per
59
+ alternative, drawing from the *skill-wide shared budget* of at
60
+ most 8 `ase-meta-search` invocations in total across STEP 2 and STEP 3
61
+ combined) to find out more and adjust the name <alternative-K/>.
62
+
63
+ If still unsure after the shared budget is exhausted, pick the
64
+ best-guess concise name and proceed. Do not output anything.
65
+
66
+ - For each alternative <alternative-K/> (K=1-N), decide which *one*
67
+ of *USP* (Unique Selling Point -- what makes it unique), *Crux*
68
+ (what you should notice), or *Gotcha* (what you should not stumble
69
+ over) is its single most distinguishing perspective, and remember
70
+ this as an <info-K/> (K=1-N) formatted like `<type/>: <hint/>` where
71
+ <type/> is one of `USP`, `Crux`, or `Gotcha` and <hint/> is a 1-6
72
+ word hint.
73
+
74
+ - For the set of alternatives, decide what the 1-6 word long
75
+ name of the *class of alternatives* <class-of-alternatives/> is.
76
+
77
+ - For each alternative <alternative-K/> (K=1-N), decide whether
78
+ it is a genuine member of <class-of-alternatives/>. If any
79
+ <alternative-K/> is *not* a member (i.e. the alternatives are not
80
+ mutually comparable within a single class), let <alternative-J/>
81
+ (J=1-P, P<=N) be the subset of non-member alternatives, output the
82
+ following <template/> and *stop the entire flow* immediately without
83
+ executing any further steps:
84
+
85
+ <template>
86
+ &#x1F7E0; **ERROR: INCOMPARABLE ALTERNATIVES**: *<class-of-alternatives/>*
87
+
88
+ <for items="<alternative-J/> [...]">
89
+ ⚑ **<item/>** (*member of a different class*)
90
+ </for>
91
+ </template>
92
+
93
+ - Output the determined, individual alternatives as a Markdown
94
+ *table* with just the following <template/> and do not output
95
+ anything else:
96
+
97
+ <template>
98
+ &#x1F535; **ALTERNATIVES**: *<class-of-alternatives/>*
99
+
100
+ | ⚑ *Alternative* | ⚖ *Hint* |
101
+ | :--------------------- | :-------- |
102
+ | ⚑ **<alternative-1/>** | <info-1/> |
103
+ [...alternatives K=2-(N-1) for N>2...]
104
+ | ⚑ **<alternative-N/>** | <info-N/> |
105
+ </template>
106
+ </step>
107
+
108
+ 3. <step id="STEP 3: Derive Criteria">
109
+ - From the <request>$ARGUMENTS</request>, try to derive the criteria
110
+ <criteria-L/> (L=1-M) for the evaluation. Do not output anything.
111
+
112
+ - For each criteria <criteria-L/> (L=1-M), decide on its <weight-L/>
113
+ from the value set { 4.00, 2.00, 1.00, 0.50, 0.25 } (from most
114
+ important, over normal, to less important). Do not output anything.
115
+
116
+ - Ensure the final number of criteria is always within the range of
117
+ minimum 8 and maximum 12: if less than 8 criteria were requested,
118
+ use the set of alternatives to decide on additional criteria
119
+ which potentially allow best to triage the alternatives, take the
120
+ <reason/> into account, and use the `ase-meta-search` skill (drawing from
121
+ the *skill-wide shared budget* of at most 8 `ase-meta-search` invocations
122
+ in total across STEP 2 and STEP 3 combined) to find out about the
123
+ potentially still missing criteria and assign their <weight-L/>.
124
+
125
+ If still under 8 criteria after the shared budget is exhausted,
126
+ fill the remaining slots from existing knowledge without further
127
+ searches; if more than 12 criteria were requested, drop the criteria
128
+ with the smallest <weight-L/> until 12 remain. Do not output
129
+ anything.
130
+
131
+ - To prevent a single high-weight criterion from dominating the
132
+ weighted sum (the weight set is geometric ×2 while the evaluation
133
+ Likert scale is linear), assign weight 4.00 to *at least one* and
134
+ *at most two* criteria, and weight 2.00 to *at least two* and *at
135
+ most three* criteria. Symmetrically, to prevent a long tail of
136
+ negligible-weight criteria, assign weight 0.50 to *at most two*
137
+ criteria, and weight 0.25 to *at most one* criterion. Do not output
138
+ anything.
139
+ </step>
140
+
141
+ 4. <step id="STEP 4: Evaluate Alternatives against Criteria">
142
+ - For each alternative <alternative-K/> (K=1-N) and each criteria
143
+ <criteria-L/> (L=1-M), decide on the evaluation <eval-K-L/>, which
144
+ means how good the alternative meets the criteria on a Likert-scale
145
+ from { -2, -1, 0, +1, +2 } (from worst, over neutral, to best). Do
146
+ not output anything.
147
+
148
+ - Then, for each alternative <alternative-K/> (K=1-N), calculate a
149
+ rating <rating-K/> (K=1-N) which is the product-sum of all weights
150
+ <weight-L/> (L=1-M) and the evaluation <eval-K-L/> (K=1-N, L=1-M).
151
+ The result is always a numerical value. Retain the *raw, unrounded*
152
+ <rating-K/> for use in STEP 5, but round <rating-K/> to 2 decimal
153
+ places *for display only* when emitting it in the table below. Do
154
+ not output anything.
155
+
156
+ - Output the resulting *Weighted Decision Matrix* as a Markdown
157
+ *table* with just the following <template/> and do not output
158
+ anything else. When emitting the table, render *one column per
159
+ alternative* <alternative-K/> (K=1-N).
160
+
161
+ <template>
162
+ &#x1F535; **EVALUATION**: *Weighted Multi-Criteria Decision Matrix*
163
+
164
+ | ⦿ *Criteria* | ⚖ *Weight* | ⚑ **<alternative-1/>** | [...alternatives 2-(N-1)...] | ⚑ **<alternative-N/>** |
165
+ | :------------ | ----------: | ---------------------: | ---------------------------: | ---------------------: |
166
+ | <criteria-1/> | <weight-1/> | <eval-1-1/> | [...evals 1-2..1-(N-1)...] | <eval-1-N/> |
167
+ [...criteria L=2-(M-1) for M>2...]
168
+ | <criteria-M/> | <weight-M/> | <eval-M-1/> | [...evals M-2..M-(N-1)...] | <eval-M-N/> |
169
+ | **RATING** | | **<rating-1/>** | [...ratings 2-(N-1)...] | **<rating-N/>** |
170
+ </template>
171
+ </step>
172
+
173
+ 5. <step id="STEP 5: Report Best Alternative">
174
+ - The best alternative <alternative-K/> (K=1-N) is the alternative
175
+ whose *raw, unrounded* <rating-K/> (i.e. the product-sum from STEP
176
+ 4, *before* the display-only rounding) is the maximum rating value
177
+ across all alternatives.
178
+
179
+ - The second best alternative <alternative-X/> (X=1-N, X != K) is
180
+ the alternative whose *raw, unrounded* <rating-X/> is the second
181
+ largest rating value across all alternatives.
182
+
183
+ - If multiple alternatives share the second-largest raw rating, pick
184
+ any one of them as <alternative-X/>; the resulting <distance/> and
185
+ <percentage/> are unaffected by the choice, so the downstream output
186
+ is deterministic.
187
+
188
+ - Determine rating distance <distance/> between <alternative-K/> and
189
+ <alternative-X/> from their *raw, unrounded* ratings by calculating:
190
+ <distance/> = <rating-K/> - <rating-X/>. Do not output anything.
191
+
192
+ - Determine rating distance percentage <percentage/> between
193
+ <alternative-K/> and <alternative-X/> from their *raw,
194
+ unrounded* ratings by calculating: <percentage/> = <distance/> /
195
+ abs(<rating-K/>). Do not output anything.
196
+
197
+ - If <rating-K/> is exactly zero, skip the division entirely
198
+ and treat <percentage/> as if it were less than 0.10
199
+ (i.e. fall through to the *small distance* branch below),
200
+ since a zero best rating signals a near-tied evaluation.
201
+
202
+ - By construction, <rating-K/> is the maximum rating across
203
+ all alternatives, so <distance/> >= 0 always holds; using
204
+ abs(<rating-K/>) keeps <percentage/> sign-stable across all rating
205
+ regimes. Note that when <rating-K/> itself is negative, the
206
+ denominator anchors to a poor best rating and small gaps can
207
+ appear large; the all-negative regime is surfaced as a dedicated
208
+ warning branch below.
209
+
210
+ - If <percentage/> is less than 0.01 (i.e. <distance/> is
211
+ effectively zero relative to abs(<rating-K/>)), stop the flow after
212
+ you output just the following <template/> and do not output anything
213
+ else:
214
+
215
+ <template>
216
+ &#x1F7E0; **ERROR**: ✘ *MULTIPLE BEST ALTERNATIVES FOUND*,
217
+ ⚠ *Please give some hints on the criteria to ensure a single best alternative!*
218
+ </template>
219
+
220
+ - Otherwise, if <percentage/> is less than 0.10, stop the flow after
221
+ you output just the following <template/> and do not output anything
222
+ else:
223
+
224
+ <template>
225
+ &#x1F7E0; **BEST ALTERNATIVE**: ⚑ **<alternative-K/>**
226
+ ⚠ *ATTENTION: small distance to second best alternative!*
227
+ </template>
228
+
229
+ - Otherwise, if <rating-K/> is less than zero (i.e. all alternatives
230
+ rate negatively and the "best" is merely the least-bad), stop the
231
+ flow after you output just the following <template/> and do not
232
+ output anything else:
233
+
234
+ <template>
235
+ &#x1F7E0; **BEST ALTERNATIVE**: ⚑ **<alternative-K/>**
236
+ ⚠ *ATTENTION: all alternatives rate negatively; this is the least-bad choice, not a strong winner!*
237
+ </template>
238
+
239
+ - Otherwise (<percentage/> is greater than or equal 0.10), output
240
+ just the following <template/> and do not output anything else:
241
+
242
+ <template>
243
+ &#x1F7E0; **BEST ALTERNATIVE**: ⚑ **<alternative-K/>**
244
+ </template>
245
+ </step>
246
+ </flow>
247
+
@@ -0,0 +1,52 @@
1
+ ---
2
+ name: ase-meta-persona
3
+ argument-hint: "[<persona>]"
4
+ description: >
5
+ Adjust communication style in four intensivity levels of token usage.
6
+ The <persona> can be either a decorative, eloquent, and explaining "writer",
7
+ a brief, factual, and accurate "engineer" (default),
8
+ a very brief, factual, and abbreviating "telegrapher",
9
+ or an ultra brief, rough and stuttering "caveman".
10
+ Use when user says "persona <persona>" or "be <persona>".
11
+ user-invocable: true
12
+ disable-model-invocation: false
13
+ ---
14
+
15
+ Persona Configuration
16
+ =====================
17
+
18
+ 1. Determine request:
19
+ <request>$ARGUMENTS</request>
20
+
21
+ 2. <if condition="<request/> is empty">
22
+ - Call the `persona(session: <ase-session-id/>)`
23
+ tool from the `ase` MCP service and set
24
+ <ase-persona-style/> to its `text` output.
25
+
26
+ - Output:
27
+ <template>
28
+ ⧉ **ASE**: ☯ persona: **<ase-persona-style/>**
29
+ </template>
30
+ </if>
31
+
32
+ 3. <if condition="<request/> is NOT empty">
33
+ - If <request/> is NEITHER 'writer', 'engineer', 'telegrapher', NOR 'caveman',
34
+ report this with the following <template/> and stop immediately:
35
+ <template>
36
+ ⧉ **ASE**: **ERROR:** invalid persona: "<request/>" (expected "writer", "engineer", "telegrapher", or "caveman")
37
+ </template>
38
+
39
+ - Set <ase-persona-style><request/></ase-persona-style> and
40
+ call the `persona(style: <ase-persona-style/>, session: <ase-session-id/>)`
41
+ tool from the `ase` MCP service.
42
+
43
+ - Output:
44
+ <template>
45
+ ⧉ **ASE**: ☯ persona: **<ase-persona-style/>** (*updated*)
46
+ </template>
47
+ </if>
48
+
49
+ Apply Persona
50
+ -------------
51
+
52
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-persona.md
@@ -0,0 +1,122 @@
1
+ ---
2
+ name: ase-meta-quorum
3
+ argument-hint: "<question>"
4
+ description: >
5
+ Query Multiple AIs for Quorum Answer.
6
+ user-invocable: true
7
+ disable-model-invocation: false
8
+ effort: medium
9
+ allowed-tools:
10
+ - "Task"
11
+ ---
12
+
13
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-persona.md
14
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
15
+
16
+ Query Multiple AIs for Quorum Answer
17
+ ====================================
18
+
19
+ Your role is an *expert-level assistant*.
20
+
21
+ <objective>
22
+ Find a *quorum answer* on an arbitrary question,
23
+ by querying *multiple* AIs for an *optimal consensus*.
24
+ </objective>
25
+
26
+ <flow>
27
+ 1. <step id="STEP 1: Determine Own Answer">
28
+ Determine your own answer.
29
+ For yourself (Anthropic Claude), first answer the following *<query/>* in advance:
30
+
31
+ <query>
32
+ $ARGUMENTS.
33
+ Please respond with facts and very concise and brief only,
34
+ usually with just 1 to 7 corresponding bullet points and with short sentences.
35
+ Optionally, mention potential cruxes which should be noticed.
36
+ Beside bullet points, do not provide any additional explanations.
37
+ Emphasize keywords or cruxes in your response with Markdown formatting.
38
+ Format code parts with Markdown formatting.
39
+ </query>
40
+ </step>
41
+
42
+ 2. <step id="STEP 2: Preview Own Answer">
43
+ Show your own answer as a sneak preview.
44
+ For this, use the following output <template/>:
45
+
46
+ <template>
47
+ **Anthropic Claude** (sneak preview in advance):
48
+ - [...]
49
+ - [...]
50
+ </template>
51
+ </step>
52
+
53
+ 3. <step id="STEP 3: Query Foreign AIs">
54
+ For each of the following foreign AIs and their potentially
55
+ available, given, corresponding MCP servers, use a *sub-task* and
56
+ the `ase-meta-chat` *agent* to perform the above same *<query/>* zero
57
+ or more times and in *parallel* again:
58
+
59
+ - OpenAI ChatGPT: `chat-openai-chatgpt`
60
+ - Google Gemini: `chat-google-gemini`
61
+ - DeepSeek: `chat-deepseek`
62
+ - xAI Grok: `chat-xai-grok`
63
+
64
+ Silently skip those AIs where the corresponding MCP server is not available.
65
+ </step>
66
+
67
+ 4. <step id="STEP 4: Summarize Responses">
68
+ Summarize all responses, of both yourself and all available MCP servers,
69
+ with just 1 to 7 corresponding bullet points and with short sentences.
70
+ </step>
71
+
72
+ 5. <step id="STEP 5: Determine Consensus Rating">
73
+ Determine, on a Likert scale of 0..<n/>, the amount of the overall
74
+ consensus <c/> of all the responses. The <n/> is 1 plus the number of
75
+ available AIs above. If all responses disagree, the consensus <c/> is zero.
76
+ If all responses agree, <c/> is <n/>.
77
+
78
+ If not all AIs agree, determine a <disagreement/> information,
79
+ formatted as `(disagreement: <ai/>, <ai/>, [...])` where <ai/> is a
80
+ name of an AI which disagreed from the consensus. Else, if all AIs
81
+ agree, set <disagreement></disagreement>.
82
+ </step>
83
+
84
+ 6. <step id="STEP 6: Show Results">
85
+ Finally show the summary, the consensus and the complete and unmodified responses
86
+ of yourself and each of the MCP servers, based on the following output <template/>:
87
+
88
+ <template>
89
+ **QUESTION**:
90
+ $ARGUMENTS
91
+
92
+ &#x25CF; **CONSENSUS ANSWER**:
93
+ - [...]
94
+ - [...]
95
+
96
+ **CONSENSUS RATE**: **<c/>/<n/>** <disagreement/>
97
+
98
+ &#x25CB; **Anthropic Claude**:
99
+ - [...]
100
+ - [...]
101
+
102
+ &#x25CB; **OpenAI ChatGPT**:
103
+ - [...]
104
+ - [...]
105
+
106
+ &#x25CB; **Google Gemini**:
107
+ - [...]
108
+ - [...]
109
+
110
+ &#x25CB; **DeepSeek**:
111
+ - [...]
112
+ - [...]
113
+
114
+ &#x25CB; **xAI Grok**:
115
+ - [...]
116
+ - [...]
117
+ </template>
118
+
119
+ In this output, remove the sections of those AIs which were not available.
120
+ </step>
121
+ </flow>
122
+
@@ -0,0 +1,48 @@
1
+ ---
2
+ name: ase-meta-search
3
+ argument-hint: "<query>"
4
+ description: >
5
+ Search the Internet/Web with a query.
6
+ Prefer this skill before using Perplexity, Brave and WebSearch.
7
+ user-invocable: true
8
+ disable-model-invocation: false
9
+ effort: low
10
+ allowed-tools:
11
+ - "mcp__perplexity__perplexity_search"
12
+ - "mcp__brave__brave_web_search"
13
+ - "WebSearch"
14
+ - "WebFetch"
15
+ - "Task"
16
+ ---
17
+
18
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-persona.md
19
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
20
+
21
+ Search the Internet/Web
22
+ =======================
23
+
24
+ Your role is an expert-level *web specialist*.
25
+
26
+ <objective>
27
+ Your objective is to *search* the *Internet*/*Web* for the following query:
28
+ <query>$ARGUMENTS</query>
29
+ </objective>
30
+
31
+ <flow>
32
+ 1. <step id="STEP 1: QUERY SERVICES">
33
+ If the MCP tool `mcp__perplexity__perplexity_search` is available, send <query/> to it
34
+ via a first *sub-task* and our companion `ase-meta-search` *agent*.
35
+
36
+ If the MCP tool `mcp__brave__brave_web_search` is available, send <query/> to it
37
+ via a second *sub-task* and our companion `ase-meta-search` *agent*.
38
+
39
+ Send <query/> to the built-in tool `WebSearch`
40
+ via a third *sub-task* and our companion `ase-meta-search` *agent*.
41
+ </step>
42
+
43
+ 2. <step id="STEP 2: CONSOLIDATE ANSWERS">
44
+ Consolidate all responses from the `ase-meta-search` *agents*
45
+ into a single response and output it without giving any further explanations.
46
+ </step>
47
+ </flow>
48
+
@@ -0,0 +1,69 @@
1
+ ---
2
+ name: ase-meta-why
3
+ argument-hint: "<fact>"
4
+ description: >
5
+ Five-Whys Root-Cause Analysis.
6
+ user-invocable: true
7
+ disable-model-invocation: false
8
+ effort: medium
9
+ ---
10
+
11
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-persona.md
12
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
13
+
14
+ Five-Whys Root-Cause Analysis
15
+ =============================
16
+
17
+ Your role is an *expert-level assistant*.
18
+
19
+ <objective>
20
+ Apply the *Five-Whys* *root-cause analysis* technique to investigate
21
+ on the following problem:
22
+
23
+ <problem>Why $ARGUMENTS?</problem>
24
+
25
+ For this, iteratively ask "why" to drill down from symptoms to the root-cause.
26
+ This helps to identify the fundamental reason behind a problem rather than just
27
+ addressing surface-level symptoms.
28
+ </objective>
29
+
30
+ <flow>
31
+ 1. <step id="STEP 1: PROBLEM">
32
+ State the problem statement.
33
+
34
+ <template>
35
+ &#x1F7E0; **PROBLEM**: <problem/>
36
+ </template>
37
+ </step>
38
+
39
+ 2. <step id="STEP 2: ROOT-CAUSE ANALYSIS">
40
+ Find the root-cause of <problem/> by following the following iteration cycle.
41
+ Start with a <question/> equal to the <problem/>.
42
+
43
+ <for items="1 2 3 4 5">
44
+ Ask <question/> and document the <answer/> with the following template:
45
+ Don't stop at symptoms, keep digging for systemic issues.
46
+ Multiple root-causes may exist -- explore different branches.
47
+ Consider both technical, domain-specific, process-related or organizational causes.
48
+
49
+ <template>
50
+ &#x26AA; **WHY <item/>**: <answer/>
51
+ </template>
52
+
53
+ Then, for the next iteration let <question/> now be the last <answer/>.
54
+ The magic is NOT in exactly 5 "Why" -- you can <break/> the iteration
55
+ when you already reached the root-cause.
56
+ </for>
57
+ </step>
58
+
59
+ 3. <step id="STEP 3: SOLUTION">
60
+ Validate the root-cause by working backwards the causality chain.
61
+ Propose a solution that addresses and solves the root-cause.
62
+ For the proposed solution, optionally directly propose corresponding source code changes.
63
+
64
+ <template>
65
+ &#x1F7E0; **SOLUTION**: <solution/>
66
+ </template>
67
+ </step>
68
+ </flow>
69
+
@@ -0,0 +1,76 @@
1
+ ---
2
+ name: ase-task-delete
3
+ argument-hint: "[<id>]"
4
+ description: >
5
+ Delete the current or given task plan.
6
+ Use when the user calls to "delete", "remove" or "clear" the
7
+ "task", "plan", "spec", or "specification".
8
+ user-invocable: true
9
+ disable-model-invocation: false
10
+ effort: low
11
+ ---
12
+
13
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-persona.md
14
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
15
+
16
+ Delete a Task Plan
17
+ ==================
18
+
19
+ <skill name="ase-task-delete">
20
+ Delete a Task Plan
21
+ </skill>
22
+
23
+ Your role is an experienced, *expert-level assistant*.
24
+ *Delete* the task plan.
25
+
26
+ Procedure
27
+ ---------
28
+
29
+ You *MUST* follow the following numbered items *strictly* *sequentially*!
30
+ You *MUST* not skip any numbered item during processing!
31
+
32
+ You *MUST* *NOT* output anything in this entire procedure, *except* when
33
+ explicitly requested by this procedure via outputs based on a <template/>!
34
+
35
+ 1. **Determine Task:**
36
+
37
+ 1. Set <id>$ARGUMENTS</id> initially.
38
+ Inherit the always existing <ase-task-id/> from the current context.
39
+ Do not output anything.
40
+
41
+ 2. <if condition="<id/> is empty">
42
+ Set <id><ase-task-id/></id>
43
+ Do not output anything.
44
+ </if>
45
+
46
+ 2. **Perform Operation**:
47
+
48
+ 1. Call the `task_delete(id: <id/>)` tool of the `ase` MCP
49
+ service to delete the task plan content and set <text/> to the
50
+ `text` output field of this `task_delete` tool call. Do not
51
+ output anything related to this MCP tool call.
52
+
53
+ - If <text/> starts with `ERROR:` or `WARNING:`:
54
+ Only output the following <template/>:
55
+
56
+ <template>
57
+ ⧉ **ASE**: ◉ task: **<id/>**, ▶ status: **<text/>**
58
+ </template>
59
+
60
+ - If <text/> starts NOT with `ERROR:`:
61
+ Only output the following <template/>:
62
+
63
+ <template>
64
+ ⧉ **ASE**: ◉ task: **<id/>**, ▶ status: **task deleted**
65
+ </template>
66
+
67
+ 2. <if condition="<id/> is equal <ase-task-id/> AND <ase-task-id/> is not equal 'default'">
68
+ Set <ase-task-id>default</ase-task-id>. Call the `task_id(id:
69
+ <ase-task-id/>, session: <ase-session-id/>)` tool from the `ase`
70
+ MCP service to switch the task to the default task. Only output
71
+ the following <template/>:
72
+
73
+ <template>
74
+ ⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **task switched to default**
75
+ </template>
76
+ </if>