@rse/ase 0.0.57 → 0.0.59

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 +29 -9
  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 +49 -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 +49 -15
  15. package/plugin/skills/ase-code-refactor/help.md +24 -8
  16. package/plugin/skills/ase-code-resolve/SKILL.md +49 -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 +2 -2
  27. package/plugin/skills/ase-task-edit/SKILL.md +89 -81
  28. package/plugin/skills/ase-task-edit/help.md +19 -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 +41 -9
  33. package/plugin/skills/ase-task-implement/help.md +15 -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
@@ -1,12 +1,12 @@
1
1
  ---
2
2
  name: ase-code-refactor
3
- argument-hint: "[--help|-h] [--auto|-a] [--next|-n <option>] [<task-id>:] <request>"
3
+ argument-hint: "[--help|-h] [--auto|-a] [--dry|-d] [--next|-n <option>[,...]] [<task-id>:] <request>"
4
4
  description: >
5
5
  Refactor Code Base:
6
6
  Use when user wants to refactor the code base.
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,7 +23,7 @@ Refactor Artifacts
23
23
 
24
24
  <expand name="getopt"
25
25
  arg1="ase-code-refactor"
26
- arg2="--auto|-a --next|-n=(none|DONE|EDIT|PREFLIGHT|IMPLEMENT)">
26
+ arg2="--auto|-a --dry|-d --next|-n=(none|DONE|EDIT|PREFLIGHT|IMPLEMENT)...">
27
27
  $ARGUMENTS
28
28
  </expand>
29
29
 
@@ -32,7 +32,7 @@ Refactor Artifacts
32
32
  <request><getopt-arguments/></request>
33
33
  </objective>
34
34
 
35
- @${CLAUDE_SKILL_DIR}/../../meta/ase-plan.md
35
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-format-plan.md
36
36
 
37
37
  Procedure
38
38
  ---------
@@ -161,7 +161,10 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
161
161
 
162
162
  You *MUST* perform the following sub-steps *internally* and *without
163
163
  any output* until and including the recommendation decision. Only
164
- sub-step 4 below is allowed to produce output.
164
+ sub-steps 4-6 below are allowed to produce output, and only if
165
+ <getopt-option-auto/> is equal `false`. If <getopt-option-auto/> is
166
+ equal `true`, *skip* the reporting sub-steps 4-6 entirely (perform
167
+ no output at all) to speed up processing.
165
168
 
166
169
  1. *Propose* corresponding *refactoring approach*, including
167
170
  optionally, some *alternative* refactoring approaches. Do *not*
@@ -252,6 +255,18 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
252
255
  the information from refactoring A<n/> and all derived realization
253
256
  decisions into it. Store the resulting task plan in <content/>.
254
257
 
258
+ If a `CHANGELOG.md` file exists in the project (or in any
259
+ affected sub-package), the plan *MUST* include, as part of its
260
+ `## ※ CHANGES` section, an explicit bullet point describing
261
+ the addition of a corresponding new entry to that `CHANGELOG.md`
262
+ file, aligned with its existing style and conventions.
263
+
264
+ <if condition="<getopt-option-dry/> is equal `true`">
265
+ You *MUST* completely omit the `## ※ VERIFICATION` section
266
+ (including its heading and all of its bullet points) from
267
+ <content/>.
268
+ </if>
269
+
255
270
  You *MUST* *NOT* call `Edit`, `Write`, `NotebookEdit`, or any
256
271
  filesystem-modifying tool during this step.
257
272
 
@@ -273,23 +288,42 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
273
288
 
274
289
  5. Directly pass-through control to the next skill:
275
290
 
276
- 1. <if condition="<getopt-option-next/> is equal `IMPLEMENT`">
277
- Call the tool `Skill(skill: "ase:ase-task-implement")` to
278
- *implement* the freshly composed plan, bypassing `ase-task-edit`.
291
+ Treat <getopt-option-next/> as a comma-separated chronological
292
+ list of pre-selected next-step tokens. *Peek* the *first* token
293
+ as <head/> (or `none` if the list is `none`/empty).
294
+
295
+ 1. <if condition="<head/> is equal `IMPLEMENT`">
296
+ Consume the head: set <getopt-option-next/> to the remaining
297
+ tokens (joined back with `,`, or `none` if empty). Set
298
+ <args></args> (empty).
299
+ <if condition="<getopt-option-next/> is not equal `none`">
300
+ Set <args>--next <getopt-option-next/></args> (forward
301
+ remaining list tokens to the downstream skill).
302
+ </if>
303
+ Call the tool `Skill(skill: "ase:ase-task-implement", args: <args/>)`
304
+ to *implement* the freshly composed plan, bypassing `ase-task-edit`.
279
305
  </if>
280
306
 
281
- 2. <if condition="<getopt-option-next/> is equal `PREFLIGHT`">
282
- Call the tool `Skill(skill: "ase:ase-task-preflight")` to
283
- *preflight* the freshly composed plan, bypassing `ase-task-edit`.
307
+ 2. <if condition="<head/> is equal `PREFLIGHT`">
308
+ Consume the head: set <getopt-option-next/> to the remaining
309
+ tokens (joined back with `,`, or `none` if empty). Set
310
+ <args></args> (empty).
311
+ <if condition="<getopt-option-next/> is not equal `none`">
312
+ Set <args>--next <getopt-option-next/></args> (forward
313
+ remaining list tokens to the downstream skill).
314
+ </if>
315
+ Call the tool `Skill(skill: "ase:ase-task-preflight", args: <args/>)`
316
+ to *preflight* the freshly composed plan, bypassing `ase-task-edit`.
284
317
  </if>
285
318
 
286
319
  3. <if condition="
287
- <getopt-option-next/> is not equal `IMPLEMENT` AND
288
- <getopt-option-next/> is not equal `PREFLIGHT`
320
+ <head/> is not equal `IMPLEMENT` AND
321
+ <head/> is not equal `PREFLIGHT`
289
322
  ">
290
- Set <args></args> (set args to empty).
323
+ Forward the *entire* (unshifted) list to `ase-task-edit`, which
324
+ will consume its head itself. Set <args></args> (empty).
291
325
  <if condition="<getopt-option-next/> is not equal `none`">
292
- Set <args><args/> --next <getopt-option-next/></args> (append to args).
326
+ Set <args>--next <getopt-option-next/></args> (append to args).
293
327
  </if>
294
328
  Then call the tool `Skill(skill: "ase:ase-task-edit", args: <args/>)`.
295
329
  </if>
@@ -8,7 +8,8 @@
8
8
  `ase-code-refactor`
9
9
  [`--help`|`-h`]
10
10
  [`--auto`|`-a`]
11
- [`--next`|`-n` *option*]
11
+ [`--dry`|`-d`]
12
+ [`--next`|`-n` *option*[,...]]
12
13
  [*task-id*:] *request*
13
14
 
14
15
  ## DESCRIPTION
@@ -31,13 +32,28 @@ plan via `ase_task_save` and then hands off to `ase-task-edit`,
31
32
  Automatically pick the recommended refactoring approach without
32
33
  asking the user via the interactive dialog.
33
34
 
34
- `--next`|`-n` *option*:
35
- Automatically choose the next step after composing the plan,
36
- where *option* is either `none` (default, hand-off to
37
- `ase-task-edit` interactively), `DONE` (stop), `EDIT` (hand off
38
- to `ase-task-edit`), `PREFLIGHT` (hand off to
39
- `ase-task-preflight`), or `IMPLEMENT` (hand off to
40
- `ase-task-implement`).
35
+ `--dry`|`-d`:
36
+ Compose the plan *without* the `※ VERIFICATION` section. When
37
+ `ase-task-implement` later applies such a plan, it strictly skips
38
+ the entire verification phase (no build, tests, linter,
39
+ type-checker, or program execution) once the source files have
40
+ been modified.
41
+
42
+ `--next`|`-n` *option*[,...]:
43
+ Automatically choose the next step after composing the plan.
44
+ *option* is a single token or a *comma-separated chronological
45
+ list* of tokens; an `IMPLEMENT` or `PREFLIGHT` head token is
46
+ consumed by this skill (bypassing `ase-task-edit`), and any
47
+ remaining tokens are *forwarded* (via `--next`) to the downstream
48
+ skill. For all other head tokens, the *entire* list is forwarded
49
+ to `ase-task-edit`, which consumes its head itself. This lets an
50
+ entire pipeline be pre-scripted in one shot. Recognized tokens at
51
+ this skill: `none` (default, hand-off to `ase-task-edit`
52
+ interactively), `DONE` (stop), `EDIT` (hand off to
53
+ `ase-task-edit`), `PREFLIGHT` (hand off to `ase-task-preflight`),
54
+ or `IMPLEMENT` (hand off to `ase-task-implement`). Example:
55
+ `--next PREFLIGHT,IMPLEMENT,DONE` refactors, preflights, implements,
56
+ and exits without further dialog.
41
57
 
42
58
  ## ARGUMENTS
43
59
 
@@ -1,12 +1,12 @@
1
1
  ---
2
2
  name: ase-code-resolve
3
- argument-hint: "[--help|-h] [--auto|-a] [--next|-n <option>] [<task-id>:] <problem>"
3
+ argument-hint: "[--help|-h] [--auto|-a] [--dry|-d] [--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,7 +23,7 @@ Resolve Problem
23
23
 
24
24
  <expand name="getopt"
25
25
  arg1="ase-code-resolve"
26
- arg2="--auto|-a --next|-n=(none|DONE|EDIT|PREFLIGHT|IMPLEMENT)">
26
+ arg2="--auto|-a --dry|-d --next|-n=(none|DONE|EDIT|PREFLIGHT|IMPLEMENT)...">
27
27
  $ARGUMENTS
28
28
  </expand>
29
29
 
@@ -32,7 +32,7 @@ Resolve Problem
32
32
  <problem><getopt-arguments/></problem>
33
33
  </objective>
34
34
 
35
- @${CLAUDE_SKILL_DIR}/../../meta/ase-plan.md
35
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-format-plan.md
36
36
 
37
37
  Procedure
38
38
  ---------
@@ -210,7 +210,10 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
210
210
 
211
211
  You *MUST* perform the following sub-steps *internally* and *without
212
212
  any output* until and including the recommendation decision. Only
213
- sub-step 4 below is allowed to produce output.
213
+ sub-steps 4-6 below are allowed to produce output, and only if
214
+ <getopt-option-auto/> is equal `false`. If <getopt-option-auto/> is
215
+ equal `true`, *skip* the reporting sub-steps 4-6 entirely (perform
216
+ no output at all) to speed up processing.
214
217
 
215
218
  1. *Propose* corresponding *resolution approach*, including optionally,
216
219
  some *alternative* resolution approaches. Do *not* output anything
@@ -300,6 +303,18 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
300
303
  the success of the resolution, by using the <format/> defined for a
301
304
  task plan. Store the resulting task plan in <content/>.
302
305
 
306
+ If a `CHANGELOG.md` file exists in the project (or in any
307
+ affected sub-package), the plan *MUST* include, as part of its
308
+ `## ※ CHANGES` section, an explicit bullet point describing
309
+ the addition of a corresponding new entry to that `CHANGELOG.md`
310
+ file, aligned with its existing style and conventions.
311
+
312
+ <if condition="<getopt-option-dry/> is equal `true`">
313
+ You *MUST* completely omit the `## ※ VERIFICATION` section
314
+ (including its heading and all of its bullet points) from
315
+ <content/>.
316
+ </if>
317
+
303
318
  You *MUST* *NOT* call `Edit`, `Write`, `NotebookEdit`, or any
304
319
  filesystem-modifying tool during this step.
305
320
 
@@ -328,23 +343,42 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
328
343
 
329
344
  6. Directly pass-through control to the next skill:
330
345
 
331
- 1. <if condition="<getopt-option-next/> is equal `IMPLEMENT`">
332
- Call the tool `Skill(skill: "ase:ase-task-implement")` to
333
- *implement* the freshly composed plan, bypassing `ase-task-edit`.
346
+ Treat <getopt-option-next/> as a comma-separated chronological
347
+ list of pre-selected next-step tokens. *Peek* the *first* token
348
+ as <head/> (or `none` if the list is `none`/empty).
349
+
350
+ 1. <if condition="<head/> is equal `IMPLEMENT`">
351
+ Consume the head: set <getopt-option-next/> to the remaining
352
+ tokens (joined back with `,`, or `none` if empty). Set
353
+ <args></args> (empty).
354
+ <if condition="<getopt-option-next/> is not equal `none`">
355
+ Set <args>--next <getopt-option-next/></args> (forward
356
+ remaining list tokens to the downstream skill).
357
+ </if>
358
+ Call the tool `Skill(skill: "ase:ase-task-implement", args: <args/>)`
359
+ to *implement* the freshly composed plan, bypassing `ase-task-edit`.
334
360
  </if>
335
361
 
336
- 2. <if condition="<getopt-option-next/> is equal `PREFLIGHT`">
337
- Call the tool `Skill(skill: "ase:ase-task-preflight")` to
338
- *preflight* the freshly composed plan, bypassing `ase-task-edit`.
362
+ 2. <if condition="<head/> is equal `PREFLIGHT`">
363
+ Consume the head: set <getopt-option-next/> to the remaining
364
+ tokens (joined back with `,`, or `none` if empty). Set
365
+ <args></args> (empty).
366
+ <if condition="<getopt-option-next/> is not equal `none`">
367
+ Set <args>--next <getopt-option-next/></args> (forward
368
+ remaining list tokens to the downstream skill).
369
+ </if>
370
+ Call the tool `Skill(skill: "ase:ase-task-preflight", args: <args/>)`
371
+ to *preflight* the freshly composed plan, bypassing `ase-task-edit`.
339
372
  </if>
340
373
 
341
374
  3. <if condition="
342
- <getopt-option-next/> is not equal `IMPLEMENT` AND
343
- <getopt-option-next/> is not equal `PREFLIGHT`
375
+ <head/> is not equal `IMPLEMENT` AND
376
+ <head/> is not equal `PREFLIGHT`
344
377
  ">
345
- Set <args></args> (set args to empty).
378
+ Forward the *entire* (unshifted) list to `ase-task-edit`, which
379
+ will consume its head itself. Set <args></args> (empty).
346
380
  <if condition="<getopt-option-next/> is not equal `none`">
347
- Set <args><args/> --next <getopt-option-next/></args> (append to args).
381
+ Set <args>--next <getopt-option-next/></args> (append to args).
348
382
  </if>
349
383
  Then call the tool `Skill(skill: "ase:ase-task-edit", args: <args/>)`.
350
384
  </if>
@@ -8,7 +8,8 @@
8
8
  `ase-code-resolve`
9
9
  [`--help`|`-h`]
10
10
  [`--auto`|`-a`]
11
- [`--next`|`-n` *option*]
11
+ [`--dry`|`-d`]
12
+ [`--next`|`-n` *option*[,...]]
12
13
  [*task-id*:] *problem*
13
14
 
14
15
  ## DESCRIPTION
@@ -36,13 +37,28 @@ plan via `ase_task_save` and then hands off to `ase-task-edit`,
36
37
  Automatically pick the recommended resolution approach without
37
38
  asking the user via the interactive dialog.
38
39
 
39
- `--next`|`-n` *option*:
40
- Automatically choose the next step after composing the plan,
41
- where *option* is either `none` (default, hand-off to
42
- `ase-task-edit` interactively), `DONE` (stop), `EDIT` (hand off
43
- to `ase-task-edit`), `PREFLIGHT` (hand off to
44
- `ase-task-preflight`), or `IMPLEMENT` (hand off to
45
- `ase-task-implement`).
40
+ `--dry`|`-d`:
41
+ Compose the plan *without* the `※ VERIFICATION` section. When
42
+ `ase-task-implement` later applies such a plan, it strictly skips
43
+ the entire verification phase (no build, tests, linter,
44
+ type-checker, or program execution) once the source files have
45
+ been modified.
46
+
47
+ `--next`|`-n` *option*[,...]:
48
+ Automatically choose the next step after composing the plan.
49
+ *option* is a single token or a *comma-separated chronological
50
+ list* of tokens; an `IMPLEMENT` or `PREFLIGHT` head token is
51
+ consumed by this skill (bypassing `ase-task-edit`), and any
52
+ remaining tokens are *forwarded* (via `--next`) to the downstream
53
+ skill. For all other head tokens, the *entire* list is forwarded
54
+ to `ase-task-edit`, which consumes its head itself. This lets an
55
+ entire pipeline be pre-scripted in one shot. Recognized tokens at
56
+ this skill: `none` (default, hand-off to `ase-task-edit`
57
+ interactively), `DONE` (stop), `EDIT` (hand off to
58
+ `ase-task-edit`), `PREFLIGHT` (hand off to `ase-task-preflight`),
59
+ or `IMPLEMENT` (hand off to `ase-task-implement`). Example:
60
+ `--next IMPLEMENT,DONE` resolves the problem, implements it, and
61
+ exits without further dialog.
46
62
 
47
63
  ## ARGUMENTS
48
64
 
@@ -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.
@@ -6,8 +6,8 @@ description: >
6
6
  Use when the user calls to "delete", "remove" or "clear" the
7
7
  "task", "plan", "spec", or "specification".
8
8
  user-invocable: true
9
- disable-model-invocation: false
10
- effort: low
9
+ disable-model-invocation: true
10
+ effort: high
11
11
  ---
12
12
 
13
13
  @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md