@rse/ase 0.9.43 → 0.9.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dst/ase-artifact.js +28 -24
- package/dst/ase-config.js +27 -36
- package/dst/ase-diagram.js +15 -35
- package/dst/ase-getopt.js +10 -15
- package/dst/ase-hook.js +29 -27
- package/dst/ase-kv.js +24 -29
- package/dst/ase-log.js +10 -3
- package/dst/ase-markdown.js +135 -102
- package/dst/ase-mcp.js +3 -10
- package/dst/ase-meta.js +6 -4
- package/dst/ase-persona.js +7 -11
- package/dst/ase-service.js +28 -28
- package/dst/ase-setup.js +65 -28
- package/dst/ase-skills.js +2 -2
- package/dst/ase-statusline.js +26 -34
- package/dst/ase-task.js +60 -63
- package/dst/ase-version.js +2 -1
- package/dst/ase.js +7 -11
- package/package.json +12 -10
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/.codex-plugin/plugin.json +1 -1
- package/plugin/.github/plugin/plugin.json +2 -2
- package/plugin/agents/ase-code-lint.md +15 -4
- package/plugin/agents/ase-docs-proofread.md +9 -1
- package/plugin/agents/ase-meta-chat.md +19 -13
- package/plugin/agents/ase-meta-diagram.md +1 -1
- package/plugin/agents/ase-meta-search.md +1 -2
- package/plugin/etc/eslint.mjs +0 -2
- package/plugin/meta/ase-common-task.md +145 -0
- package/plugin/meta/ase-constitution.md +5 -2
- package/plugin/meta/ase-control.md +1 -1
- package/plugin/meta/ase-dialog.md +7 -7
- package/plugin/meta/ase-format-arch.md +12 -12
- package/plugin/meta/ase-format-spec.md +23 -23
- package/plugin/meta/ase-format-task.md +9 -11
- package/plugin/meta/ase-getopt.md +1 -1
- package/plugin/meta/ase-persona.md +3 -3
- package/plugin/meta/ase-skill.md +3 -3
- package/plugin/meta/ase-tenets.md +4 -4
- package/plugin/package.json +8 -8
- package/plugin/skills/ase-arch-analyze/SKILL.md +2 -3
- package/plugin/skills/ase-arch-analyze/help.md +2 -2
- package/plugin/skills/ase-arch-discover/SKILL.md +2 -2
- package/plugin/skills/ase-arch-discover/help.md +3 -2
- package/plugin/skills/ase-code-analyze/SKILL.md +0 -1
- package/plugin/skills/ase-code-craft/SKILL.md +11 -11
- package/plugin/skills/ase-code-lint/SKILL.md +31 -13
- package/plugin/skills/ase-code-refactor/SKILL.md +13 -13
- package/plugin/skills/ase-code-refactor/help.md +1 -1
- package/plugin/skills/ase-code-resolve/SKILL.md +10 -10
- package/plugin/skills/ase-code-resolve/help.md +1 -1
- package/plugin/skills/ase-docs-distill/SKILL.md +6 -6
- package/plugin/skills/ase-docs-distill/help.md +6 -4
- package/plugin/skills/ase-docs-proofread/SKILL.md +23 -8
- package/plugin/skills/ase-meta-brainstorm/help.md +1 -1
- package/plugin/skills/ase-meta-changelog/SKILL.md +9 -5
- package/plugin/skills/ase-meta-commit/SKILL.md +8 -6
- package/plugin/skills/ase-meta-compat/SKILL.md +14 -5
- package/plugin/skills/ase-meta-diaboli/SKILL.md +6 -6
- package/plugin/skills/ase-meta-diff/SKILL.md +10 -10
- package/plugin/skills/ase-meta-evaluate/SKILL.md +6 -9
- package/plugin/skills/ase-meta-persona/SKILL.md +1 -1
- package/plugin/skills/ase-meta-quorum/SKILL.md +43 -12
- package/plugin/skills/ase-meta-search/SKILL.md +1 -1
- package/plugin/skills/ase-meta-search/help.md +4 -2
- package/plugin/skills/ase-meta-steelman/SKILL.md +5 -5
- package/plugin/skills/ase-meta-steelman/help.md +5 -3
- package/plugin/skills/ase-meta-why/SKILL.md +2 -2
- package/plugin/skills/ase-meta-why/help.md +3 -1
- package/plugin/skills/ase-sync-export/SKILL.md +20 -17
- package/plugin/skills/ase-sync-import/SKILL.md +20 -16
- package/plugin/skills/ase-sync-import/help.md +2 -2
- package/plugin/skills/ase-sync-reconcile/SKILL.md +10 -10
- package/plugin/skills/ase-sync-reconcile/help.md +1 -1
- package/plugin/skills/ase-task-condense/SKILL.md +39 -85
- package/plugin/skills/ase-task-delete/SKILL.md +1 -1
- package/plugin/skills/ase-task-edit/SKILL.md +43 -51
- package/plugin/skills/ase-task-grill/SKILL.md +11 -13
- package/plugin/skills/ase-task-id/SKILL.md +7 -3
- package/plugin/skills/ase-task-implement/SKILL.md +18 -111
- package/plugin/skills/ase-task-implement/help.md +2 -2
- package/plugin/skills/ase-task-list/SKILL.md +3 -0
- package/plugin/skills/ase-task-preflight/SKILL.md +22 -115
- package/plugin/skills/ase-task-reboot/SKILL.md +39 -71
- package/plugin/skills/ase-task-reboot/help.md +2 -1
- package/plugin/skills/ase-task-view/SKILL.md +7 -7
|
@@ -285,9 +285,6 @@ over time.
|
|
|
285
285
|
- <spec-cj-step-name/> is a summary (5-10 words) of the *step* at its
|
|
286
286
|
<spec-cj-step-touchpoint/>.
|
|
287
287
|
|
|
288
|
-
- <spec-cj-step-actor/> is a `SPEC-PE-<spec-pe-persona-id/>` reference to the
|
|
289
|
-
corresponding **Aspect** of the Personas **Artifact**.
|
|
290
|
-
|
|
291
288
|
- <spec-cj-step-stage/> is one of:
|
|
292
289
|
|
|
293
290
|
- `Awareness`: Customer is not aware of solution, but has a need.
|
|
@@ -297,6 +294,9 @@ over time.
|
|
|
297
294
|
- `Retention`: Customer in the long-term stays a customer.
|
|
298
295
|
- `Advocacy`: Customer is a fan of solution and tells the tribe.
|
|
299
296
|
|
|
297
|
+
- <spec-cj-step-actor/> is a `SPEC-PE-<spec-pe-persona-id/>` reference to the
|
|
298
|
+
corresponding **Aspect** of the Personas **Artifact**.
|
|
299
|
+
|
|
300
300
|
- <spec-cj-step-goal/> is what the actor wants to achieve at this step.
|
|
301
301
|
|
|
302
302
|
- <spec-cj-step-touchpoint/> is where or how the interaction happens
|
|
@@ -311,7 +311,7 @@ over time.
|
|
|
311
311
|
actor encounters at this step (optional).
|
|
312
312
|
|
|
313
313
|
- In case a <spec-cj-step/> has no pain point at all, the
|
|
314
|
-
entire `-
|
|
314
|
+
entire `- Pain Point:` bullet point is omitted.
|
|
315
315
|
|
|
316
316
|
Functional Requirements (FR)
|
|
317
317
|
----------------------------
|
|
@@ -518,7 +518,7 @@ constraining the Functional and Non-Functional Requirements.
|
|
|
518
518
|
business rule.
|
|
519
519
|
|
|
520
520
|
- In case the rule constrains no specific requirement, the
|
|
521
|
-
entire `-
|
|
521
|
+
entire `- Constrains:` bullet point is omitted.
|
|
522
522
|
|
|
523
523
|
- In case the rationale is not present, the
|
|
524
524
|
entire `, **BECAUSE** [...]` clause is omitted.
|
|
@@ -656,24 +656,24 @@ manages, defining how information is organized and connected.
|
|
|
656
656
|
|
|
657
657
|
With:
|
|
658
658
|
|
|
659
|
-
-
|
|
660
|
-
|
|
661
|
-
|
|
659
|
+
- <export-table-1/> is a Markdown table for the attributes with one
|
|
660
|
+
row per <spec-dm-attribute-id/>, sorted by <spec-dm-attribute-id/>
|
|
661
|
+
-- with the columns:
|
|
662
662
|
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
663
|
+
- `Attribute` (`**<spec-dm-attribute-id/>**`)
|
|
664
|
+
- `Type` (`<spec-dm-attribute-qualifier/><spec-dm-attribute-type/>`)
|
|
665
|
+
- `Description` (`<spec-dm-attribute-description/>, **BECAUSE** <spec-dm-attribute-rationale/>.`)
|
|
666
666
|
|
|
667
|
-
-
|
|
668
|
-
|
|
669
|
-
|
|
667
|
+
- <export-table-2/> is a Markdown table for the relation with one
|
|
668
|
+
row per <spec-dm-relation-id/>, sorted by <spec-dm-relation-id/> --
|
|
669
|
+
with the columns:
|
|
670
670
|
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
671
|
+
- `Relation` (`**<spec-dm-relation-id/>**`)
|
|
672
|
+
- `Target` (`[<spec-dm-relation-target/>](#<spec-dm-relation-target-id/>) (<spec-dm-relation-cardinality/>)`)
|
|
673
|
+
- `Description` (`<spec-dm-relation-description/>, **BECAUSE** <spec-dm-relation-rationale/>.`)
|
|
674
674
|
|
|
675
|
-
-
|
|
676
|
-
|
|
675
|
+
- In case a <spec-dm-entity/> has no relations at all, the
|
|
676
|
+
entire `### RELATIONS` block (including <export-table-2/>) is omitted.
|
|
677
677
|
|
|
678
678
|
- Export: `export.svg`
|
|
679
679
|
|
|
@@ -853,7 +853,7 @@ ambiguities to avoid, shared consistently across all Artifacts.
|
|
|
853
853
|
<spec-gl-term-name/> where helpful.
|
|
854
854
|
|
|
855
855
|
- In case a term has no synonyms, the
|
|
856
|
-
entire `-
|
|
856
|
+
entire `- Synonyms:` bullet point is omitted.
|
|
857
857
|
|
|
858
858
|
Use Cases (UC)
|
|
859
859
|
--------------
|
|
@@ -932,7 +932,7 @@ for main, alternative, and exceptional paths.
|
|
|
932
932
|
**SCENARIO** blocks of this use case).
|
|
933
933
|
|
|
934
934
|
- In case the use case realizes no specific functional requirement,
|
|
935
|
-
the entire `-
|
|
935
|
+
the entire `- Requirements:` bullet point is omitted.
|
|
936
936
|
|
|
937
937
|
- In case a precondition or postcondition is not present, the
|
|
938
938
|
respective bullet point is omitted.
|
|
@@ -1271,13 +1271,13 @@ turn.
|
|
|
1271
1271
|
|
|
1272
1272
|
- <spec-ds-storyboard-usecase/> is a
|
|
1273
1273
|
`SPEC-UC-<spec-uc-usecase-id/>` reference to the corresponding
|
|
1274
|
-
**Aspect** of the Use
|
|
1274
|
+
**Aspect** of the Use Cases **Artifact** the storyboard
|
|
1275
1275
|
visualizes (optional).
|
|
1276
1276
|
|
|
1277
1277
|
- <spec-ds-storyboard-scenario/> is a
|
|
1278
1278
|
`SPEC-UC-<spec-uc-usecase-id/>-<spec-uc-usecase-scenario-id/>`
|
|
1279
1279
|
reference to the corresponding scenario **Aspect** of the Use
|
|
1280
|
-
|
|
1280
|
+
Cases **Artifact** the storyboard visualizes (optional).
|
|
1281
1281
|
|
|
1282
1282
|
- <spec-ds-frame-name/>: a short (2-5 word) label for the screen,
|
|
1283
1283
|
turn, or state depicted by the storyboard frame. Frames are
|
|
@@ -40,8 +40,8 @@ You *MUST* honor the following hints on this *task* format:
|
|
|
40
40
|
<template>`<code/>`</template> and *key aspects* as
|
|
41
41
|
<template>*<aspect/>*</template>.
|
|
42
42
|
|
|
43
|
-
- For <summary-what/> and <summary-why/> use *ultra brief* but
|
|
44
|
-
as
|
|
43
|
+
- For <summary-what/> and <summary-why/> use an *ultra brief* but
|
|
44
|
+
*as precise as possible* description of the overall change. In
|
|
45
45
|
<summary-what/> tell what is changed. In <summary-why/> tell why it
|
|
46
46
|
is changed, what benefit results or what the rationale is behind the
|
|
47
47
|
change.
|
|
@@ -49,19 +49,17 @@ You *MUST* honor the following hints on this *task* format:
|
|
|
49
49
|
- The <task-id/> has to be substituted with the current value of
|
|
50
50
|
<ase-task-id/> in the current session context.
|
|
51
51
|
|
|
52
|
-
- The <timestamp-created/> is the timestamp when this
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
tool of the `ase` MCP server and use the `text` field of
|
|
59
|
-
its response.
|
|
52
|
+
- The <timestamp-created/> is the timestamp when this task plan was
|
|
53
|
+
created. The <timestamp-modified/> is the timestamp when this
|
|
54
|
+
task plan was last modified. Both use an ISO-style format
|
|
55
|
+
value. The value of both can be determined by a call to the
|
|
56
|
+
`ase_timestamp(format: "yyyy-LL-dd HH:mm")` tool of the `ase` MCP
|
|
57
|
+
server and use the `text` field of its response.
|
|
60
58
|
|
|
61
59
|
- The <title/> is a short summary of the <summary-what/>, no longer than
|
|
62
60
|
50 characters.
|
|
63
61
|
|
|
64
|
-
- The sections `## CHANGES` and `## VERIFICATION`
|
|
62
|
+
- The sections `## CHANGES` and `## VERIFICATION` are each just a short
|
|
65
63
|
list of 1-5 bullet points. Each bullet point is formatted as
|
|
66
64
|
`- **<aspect/>**: <specification/>` where <aspect/> indicates
|
|
67
65
|
the aspect of the section and <specification/> is 1-3 sentences
|
|
@@ -20,7 +20,7 @@ set placeholders into the context as a side-effect.
|
|
|
20
20
|
3-6 are *structurally unreachable* and you *MUST NOT* call the
|
|
21
21
|
`ase_getopt` MCP tool under any circumstances.
|
|
22
22
|
|
|
23
|
-
<if condition="<getopt-args/> does *NOT* match the regexp `(^|\s)-` (i.e. it does not
|
|
23
|
+
<if condition="<getopt-args/> does *NOT* match the regexp `(^|\s)-` (i.e. it does not contain an option)">
|
|
24
24
|
Parse the options *locally*, without any MCP call:
|
|
25
25
|
|
|
26
26
|
For each option token in <getopt-spec/> of the form
|
|
@@ -18,7 +18,7 @@ requested communication style at any time during a session.
|
|
|
18
18
|
- If <ase-persona-style/> is `caveman`:
|
|
19
19
|
You *MUST* use the terse, rough, and stuttering communication style of a *caveman*.
|
|
20
20
|
|
|
21
|
-
- If <ase-persona-style/> is `writer`, `engineer`, `journalist`, `telegrapher
|
|
21
|
+
- If <ase-persona-style/> is `writer`, `engineer`, `journalist`, `telegrapher`, or `caveman`:
|
|
22
22
|
- You *MUST* *always keep* technical terms exactly, independent of other persona rules below.
|
|
23
23
|
- You *MUST* *always keep* errors quoted exactly, independent of other persona rules below.
|
|
24
24
|
- You *MUST* *always keep* code blocks unchanged, independent of other persona rules below.
|
|
@@ -28,7 +28,7 @@ requested communication style at any time during a session.
|
|
|
28
28
|
- You *MUST* bundle related aspects into paragraphs.
|
|
29
29
|
- You *MUST* output blank lines between paragraphs.
|
|
30
30
|
|
|
31
|
-
- If <ase-persona-style/> is `engineer`, `journalist`, `telegrapher
|
|
31
|
+
- If <ase-persona-style/> is `engineer`, `journalist`, `telegrapher`, or `caveman`:
|
|
32
32
|
- You *MUST* use `○` as the bullet point marker symbol in bullet point lists.
|
|
33
33
|
- You *MUST* *drop* filler words
|
|
34
34
|
("just", "really", "basically", "actually", "simply", etc).
|
|
@@ -62,7 +62,7 @@ requested communication style at any time during a session.
|
|
|
62
62
|
- <keywords/> is only one to four keywords summarizing the <details/>
|
|
63
63
|
- <details/> is one to four prose sentences explaining the aspect
|
|
64
64
|
|
|
65
|
-
- If <ase-persona-style/> is `telegrapher
|
|
65
|
+
- If <ase-persona-style/> is `telegrapher`, or `caveman`:
|
|
66
66
|
- You *MUST* *use only* bullet point lists without blank lines between bullet points.
|
|
67
67
|
- You *MUST* *use only* one bullet point per explanation aspect.
|
|
68
68
|
- You *MUST* *use* shorter synonyms
|
package/plugin/meta/ase-skill.md
CHANGED
|
@@ -218,7 +218,7 @@ Skill Identification
|
|
|
218
218
|
following output <template/>:
|
|
219
219
|
|
|
220
220
|
<template>
|
|
221
|
-
⧉ **ASE**: ✪ skill: **<skill-name/>**, status: **skill finished**
|
|
221
|
+
⧉ **ASE**: ✪ skill: **<skill-name/>**, ▶ status: **skill finished**
|
|
222
222
|
</template>
|
|
223
223
|
|
|
224
224
|
- *IMPORTANT*: Set <objective></objective> (set to empty).
|
|
@@ -299,7 +299,7 @@ Template Patterns
|
|
|
299
299
|
|
|
300
300
|
<template>
|
|
301
301
|
|
|
302
|
-
|
|
302
|
+
╭───────────────────────────────────────────────────────────────────┈┈┈┈┈┈┈┈┈┈
|
|
303
303
|
|
|
304
304
|
</template>
|
|
305
305
|
|
|
@@ -330,7 +330,7 @@ Template Patterns
|
|
|
330
330
|
<raw-title-len/> is the number of characters in <raw-title/>,
|
|
331
331
|
and <bar/> is the `─` character repeated exactly max(0, 67 -
|
|
332
332
|
<raw-title-len/>) times -- clamped to zero so an over-long title
|
|
333
|
-
never yields a negative count
|
|
333
|
+
never yields a negative count):
|
|
334
334
|
|
|
335
335
|
<template>
|
|
336
336
|
|
|
@@ -5,7 +5,7 @@ ASE Tenets
|
|
|
5
5
|
The following are the **ASE Tenets** -- the guiding principles you
|
|
6
6
|
*MUST* internalize when requested. They are organized into *Generic
|
|
7
7
|
Tenets*, which always apply, and *Operation-Specific Tenets*, which
|
|
8
|
-
apply only to a particular kind of operation (Crafting,
|
|
8
|
+
apply only to a particular kind of operation (Crafting, Reconciling,
|
|
9
9
|
Refactoring, Resolving).
|
|
10
10
|
|
|
11
11
|
GENERIC TENETS
|
|
@@ -80,7 +80,7 @@ CRAFTING TENETS
|
|
|
80
80
|
---------------
|
|
81
81
|
|
|
82
82
|
When *crafting* from scratch a new artifact, a feature, or an aspect,
|
|
83
|
-
you *MUST* honor the following so-called
|
|
83
|
+
you *MUST* honor the following so-called **CRAFTING TENETS**:
|
|
84
84
|
|
|
85
85
|
- **Clear Minimal Scope**:
|
|
86
86
|
Establish explicit boundaries for the new feature.
|
|
@@ -167,7 +167,7 @@ REFACTORING TENETS
|
|
|
167
167
|
------------------
|
|
168
168
|
|
|
169
169
|
When *refactoring* existing artifacts or aspects,
|
|
170
|
-
you *MUST* honor the following so-called **REFACTORING TENETS
|
|
170
|
+
you *MUST* honor the following so-called **REFACTORING TENETS**:
|
|
171
171
|
|
|
172
172
|
- **Behavior Preservation**:
|
|
173
173
|
Refactoring changes only re-structure, never change any
|
|
@@ -200,7 +200,7 @@ RESOLVING TENETS
|
|
|
200
200
|
----------------
|
|
201
201
|
|
|
202
202
|
When *resolving* a problem or challenge (bug-fixing),
|
|
203
|
-
you *MUST* honor the following so-called **RESOLVING TENETS
|
|
203
|
+
you *MUST* honor the following so-called **RESOLVING TENETS**:
|
|
204
204
|
|
|
205
205
|
- **No Cleanups**:
|
|
206
206
|
Strictly focus on resolving the problem and do not mix the task with
|
package/plugin/package.json
CHANGED
|
@@ -3,23 +3,23 @@
|
|
|
3
3
|
"description": "Agentic Software Engineering (ASE)",
|
|
4
4
|
"private": true,
|
|
5
5
|
"keywords": [ "agentic", "ai", "coding", "tool", "cli", "software", "engineering" ],
|
|
6
|
-
"homepage": "
|
|
6
|
+
"homepage": "https://ase.tools",
|
|
7
7
|
"repository": { "url": "git+https://github.com/rse/ase.git", "type": "git" },
|
|
8
|
-
"bugs": { "url": "
|
|
9
|
-
"version": "0.9.
|
|
8
|
+
"bugs": { "url": "https://github.com/rse/ase/issues" },
|
|
9
|
+
"version": "0.9.45",
|
|
10
10
|
"license": "Apache-2.0",
|
|
11
11
|
"author": {
|
|
12
12
|
"name": "Dr. Ralf S. Engelschall",
|
|
13
13
|
"email": "rse@engelschall.com",
|
|
14
|
-
"url": "
|
|
14
|
+
"url": "https://engelschall.com"
|
|
15
15
|
},
|
|
16
16
|
"devDependencies": {
|
|
17
17
|
"@rse/stx": "1.1.6",
|
|
18
|
-
"markdownlint": "0.41.
|
|
19
|
-
"markdownlint-cli2": "0.23.
|
|
20
|
-
"eslint": "10.
|
|
18
|
+
"markdownlint": "0.41.1",
|
|
19
|
+
"markdownlint-cli2": "0.23.1",
|
|
20
|
+
"eslint": "10.7.0",
|
|
21
21
|
"@eslint/markdown": "8.0.3",
|
|
22
|
-
"eslint-markdown": "0.12.
|
|
22
|
+
"eslint-markdown": "0.12.1"
|
|
23
23
|
},
|
|
24
24
|
"engines": {
|
|
25
25
|
"npm": ">=10.0.0",
|
|
@@ -4,7 +4,6 @@ argument-hint: "[--help|-h] <source-reference>"
|
|
|
4
4
|
description: Review software architecture, including package cohesion and inter-package coupling
|
|
5
5
|
user-invocable: true
|
|
6
6
|
disable-model-invocation: false
|
|
7
|
-
model: opus
|
|
8
7
|
effort: high
|
|
9
8
|
allowed-tools:
|
|
10
9
|
- "Bash(wc *)"
|
|
@@ -252,7 +251,7 @@ interface quality, quality attributes, and architecture governance.
|
|
|
252
251
|
- *god-package*: *incoming ≥ 5* and *outgoing ≥ 3* -
|
|
253
252
|
coordinator dumping ground that should be split along its
|
|
254
253
|
internal topical clusters
|
|
255
|
-
- *fragment*: 1
|
|
254
|
+
- *fragment*: 1-2 files under a sibling parent that share a
|
|
256
255
|
*name prefix* or *imported interface* with that sibling -
|
|
257
256
|
consolidation candidate
|
|
258
257
|
|
|
@@ -278,7 +277,7 @@ interface quality, quality attributes, and architecture governance.
|
|
|
278
277
|
which operations sit *between* the specific acquire and
|
|
279
278
|
release in source order.
|
|
280
279
|
|
|
281
|
-
- *Package-graph construction (SA19
|
|
280
|
+
- *Package-graph construction (SA19-SA21)*: parse each file's
|
|
282
281
|
import (or equivalent language construct) statement, keep
|
|
283
282
|
only first-party packages within the analyzed scope, and
|
|
284
283
|
persist two intermediate structures: the per-package
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
## DESCRIPTION
|
|
13
13
|
|
|
14
14
|
The `ase-arch-analyze` skill reviews the *software architecture* of
|
|
15
|
-
the referenced source code, including *package cohesion* and
|
|
16
|
-
package coupling*, for *potential problems* across component boundaries,
|
|
15
|
+
the referenced source code, including *package cohesion* and
|
|
16
|
+
*inter-package coupling*, for *potential problems* across component boundaries,
|
|
17
17
|
structural organization, architecture principles, interface quality,
|
|
18
18
|
quality attributes, and architecture governance.
|
|
19
19
|
|
|
@@ -134,7 +134,7 @@ for the technology stack to *provide* the *needed functionality*
|
|
|
134
134
|
4. If <stack/> is "JavaScript" or "TypeScript":
|
|
135
135
|
|
|
136
136
|
1. Based on the essential keywords <keyword-L/> (L=1-M),
|
|
137
|
-
use the `ase-meta-search` skill in a
|
|
137
|
+
use the `ase-meta-search` skill in a sub-agent to *generally*
|
|
138
138
|
discover an initial set of a maximum of <pool/> *NPM packages*
|
|
139
139
|
<component-K/> and at least their real name <name-K/> and
|
|
140
140
|
their unique package names <package-K/>.
|
|
@@ -150,7 +150,7 @@ for the technology stack to *provide* the *needed functionality*
|
|
|
150
150
|
5. If <stack/> is "Java" or "Kotlin":
|
|
151
151
|
|
|
152
152
|
1. Based on the essential keywords <keyword-L/> (L=1-M),
|
|
153
|
-
use the `ase-meta-search` skill in a
|
|
153
|
+
use the `ase-meta-search` skill in a sub-agent to *generally*
|
|
154
154
|
discover an initial set of a maximum of <pool/> *Maven packages*
|
|
155
155
|
<component-K/> and at least their real name <name-K/> and
|
|
156
156
|
their unique Maven coordinates <package-K/> of the form
|
|
@@ -33,8 +33,9 @@ demotes dependency-heavy components.
|
|
|
33
33
|
## OPTIONS
|
|
34
34
|
|
|
35
35
|
`--limit`|`-l=12`:
|
|
36
|
-
The *maximum* number of components
|
|
37
|
-
|
|
36
|
+
The *maximum* number of components retained in the final ranking
|
|
37
|
+
(default: 12); each discovery source may fetch up to twice this
|
|
38
|
+
number of candidates for ranking. Raise it for a broader, more
|
|
38
39
|
exhaustive survey, lower it for a quicker, narrower lookup.
|
|
39
40
|
|
|
40
41
|
`--staleness`|`-s=18`:
|
|
@@ -199,7 +199,6 @@ problems in *performance* and *efficiency*, or problems in *security*.
|
|
|
199
199
|
Finally, output the following <template/> to give a final hint:
|
|
200
200
|
|
|
201
201
|
<template>
|
|
202
|
-
⧉ **ASE**: ☻ skill: **<skill-name/>**, ▶ status: **skill finished**
|
|
203
202
|
⧉ **ASE**: ↪ hint: **For deeper analysis, suggestions on solution approaches and then final problem resolution, use `/ase-code-resolve P{n}` in the same or even a different session.**
|
|
204
203
|
</template>
|
|
205
204
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: ase-code-craft
|
|
3
3
|
argument-hint: "[--help|-h] [--auto|-a] [--dry|-d] [--quick|-Q] [--next|-n <option>[,...]] [<task-id>:] <feature>"
|
|
4
4
|
description: >
|
|
5
|
-
Craft Source:
|
|
5
|
+
Craft Source Code:
|
|
6
6
|
Use when user wants to "create", "add", or "craft" a new feature from scratch.
|
|
7
7
|
user-invocable: true
|
|
8
8
|
disable-model-invocation: false
|
|
@@ -109,7 +109,7 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
|
|
|
109
109
|
7. Ask the user for clarification if the goal of this crafting is too
|
|
110
110
|
unclear.
|
|
111
111
|
|
|
112
|
-
8. Do not output anything in this step, unless you asked the user.
|
|
112
|
+
8. Do not output anything else in this step, unless you asked the user.
|
|
113
113
|
|
|
114
114
|
</step>
|
|
115
115
|
|
|
@@ -139,15 +139,15 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
|
|
|
139
139
|
|
|
140
140
|
You *MUST* perform the following sub-steps *internally* and *without
|
|
141
141
|
any output* until and including the recommendation decision. Only
|
|
142
|
-
sub-steps 4-
|
|
142
|
+
sub-steps 4-7 below are allowed to produce output; sub-steps 4-6 only if
|
|
143
143
|
<getopt-option-auto/> is equal `false` *and* <ase-project-boxing/>
|
|
144
144
|
is *not* equal `black`.
|
|
145
145
|
|
|
146
146
|
If <getopt-option-auto/> is equal `true` or <ase-project-boxing/> is
|
|
147
|
-
equal `black`, *skip* the reporting sub-steps 4-6 entirely (
|
|
148
|
-
no output at all) to speed up processing.
|
|
147
|
+
equal `black`, *skip* the reporting sub-steps 4-6 entirely (they
|
|
148
|
+
perform no output at all) to speed up processing.
|
|
149
149
|
|
|
150
|
-
1. *Propose* corresponding *feature approach*, including
|
|
150
|
+
1. *Propose* a corresponding *feature approach*, optionally including
|
|
151
151
|
some *alternative* feature approaches. Do *not* output anything
|
|
152
152
|
in this sub-step.
|
|
153
153
|
|
|
@@ -231,18 +231,18 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
|
|
|
231
231
|
closely aligning to the existing architecture and the existing
|
|
232
232
|
code base. Use the <format/> defined for a task plan and inject
|
|
233
233
|
the information from feature A<n/> and all derived realization
|
|
234
|
-
decisions into it. Store the resulting task plan in <content/>.
|
|
234
|
+
decisions into it. Store the resulting task plan in <task-content/>.
|
|
235
235
|
|
|
236
236
|
If a `CHANGELOG.md` file exists in the project (or in any
|
|
237
237
|
affected sub-package), the plan *MUST* include, as part of its
|
|
238
|
-
`##
|
|
238
|
+
`## CHANGES` section, an explicit bullet point describing
|
|
239
239
|
the addition of a corresponding new entry to that `CHANGELOG.md`
|
|
240
240
|
file, aligned with its existing style and conventions.
|
|
241
241
|
|
|
242
242
|
<if condition="<getopt-option-dry/> is equal `true`">
|
|
243
243
|
You *MUST* completely omit the `## VERIFICATION` section
|
|
244
244
|
(including its heading and all of its bullet points) from
|
|
245
|
-
<content/>.
|
|
245
|
+
<task-content/>.
|
|
246
246
|
</if>
|
|
247
247
|
|
|
248
248
|
You *MUST* *NOT* call `Edit`, `Write`, `NotebookEdit`, or any
|
|
@@ -253,10 +253,10 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
|
|
|
253
253
|
<timestamp-created/> and <timestamp-modified/> information. Then
|
|
254
254
|
insert the current <ase-task-id/>, <timestamp-created/>, and
|
|
255
255
|
<timestamp-modified/> information and calculate the number of
|
|
256
|
-
words <words/> of <content/>.
|
|
256
|
+
words <words/> of <task-content/>.
|
|
257
257
|
|
|
258
258
|
3. You then *MUST* *save* the resulting plan content with the
|
|
259
|
-
`ase_task_save(id: "<ase-task-id/>", text: "<content/>")`.
|
|
259
|
+
`ase_task_save(id: "<ase-task-id/>", text: "<task-content/>")`.
|
|
260
260
|
|
|
261
261
|
4. Output a hint with the following <template/>:
|
|
262
262
|
|
|
@@ -104,7 +104,7 @@ related to a set of code quality aspects.
|
|
|
104
104
|
*silently drop* all other problems. With the default floor `LOW`, all
|
|
105
105
|
problems are kept. `ACCEPTED` problems are *never* dropped.
|
|
106
106
|
|
|
107
|
-
You *MUST* *NOT* output anything else in this
|
|
107
|
+
You *MUST* *NOT* output anything else in this STEP 1.
|
|
108
108
|
|
|
109
109
|
</step>
|
|
110
110
|
|
|
@@ -131,7 +131,7 @@ related to a set of code quality aspects.
|
|
|
131
131
|
*(no problems detected)*
|
|
132
132
|
</template>
|
|
133
133
|
|
|
134
|
-
You *MUST* *NOT* output anything else in this
|
|
134
|
+
You *MUST* *NOT* output anything else in this STEP 2.
|
|
135
135
|
|
|
136
136
|
</step>
|
|
137
137
|
|
|
@@ -154,11 +154,14 @@ related to a set of code quality aspects.
|
|
|
154
154
|
still perform substep 3 first. Never leave this marker active
|
|
155
155
|
for a later, unrelated `Edit`.
|
|
156
156
|
|
|
157
|
-
2.
|
|
157
|
+
2. Set <total/> to the number of problems in <problems/> and
|
|
158
|
+
<index/> to `0`. Then iterate over all problems:
|
|
158
159
|
|
|
159
160
|
<for items="<problems/>">
|
|
160
161
|
|
|
161
|
-
1.
|
|
162
|
+
1. Increment <index/> by one (the 1-based position of the
|
|
163
|
+
current <item/> within <problems/>).
|
|
164
|
+
Set <aspect/> to the `aspect` field of <item/>.
|
|
162
165
|
Set <severity/> to the `severity` field of <item/>.
|
|
163
166
|
Set <description/> to the `description` field of <item/>.
|
|
164
167
|
Set <change-set/> to the `change-set` field of <item/>.
|
|
@@ -193,6 +196,19 @@ related to a set of code quality aspects.
|
|
|
193
196
|
Set <new-text/> to the `new_text` field of <item/>.
|
|
194
197
|
Set <context-after/> to the `context_after` field of <item/>.
|
|
195
198
|
|
|
199
|
+
Then *normalize* the hunk to its *minimal* form, so
|
|
200
|
+
that the proposed diff shows exactly the lines the
|
|
201
|
+
later `Edit` will actually change: while the *first*
|
|
202
|
+
line of <old-text/> is identical to the *first* line
|
|
203
|
+
of <new-text/>, *move* that line from both to the
|
|
204
|
+
end of <context-before/> and increment <line/> by
|
|
205
|
+
one; likewise, while the *last* line of <old-text/>
|
|
206
|
+
is identical to the *last* line of <new-text/>,
|
|
207
|
+
*move* that line from both to the front of
|
|
208
|
+
<context-after/>. Finally, *trim* <context-before/>
|
|
209
|
+
to its *last* two lines and <context-after/> to its
|
|
210
|
+
*first* two lines.
|
|
211
|
+
|
|
196
212
|
2. *Skip* this substep entirely when <ase-project-boxing/>
|
|
197
213
|
is equal `grey` - the full unified diff is suppressed
|
|
198
214
|
there, so none of the <hunk-body/>, <old-count/>,
|
|
@@ -288,13 +304,13 @@ related to a set of code quality aspects.
|
|
|
288
304
|
4. Report the problem with the following <template/>:
|
|
289
305
|
|
|
290
306
|
<template>
|
|
291
|
-
<ase-tpl-bullet-signal/> **<aspect/> PROBLEM** (`<severity/>`): <context/>
|
|
307
|
+
<ase-tpl-bullet-signal/> [<index/>/<total/>]: **<aspect/> PROBLEM** (`<severity/>`): <context/>
|
|
292
308
|
|
|
293
309
|
<description/>
|
|
294
310
|
|
|
295
311
|
</template>
|
|
296
312
|
|
|
297
|
-
5. <if condition="<getopt-option-auto/> is not
|
|
313
|
+
5. <if condition="<getopt-option-auto/> is not equal `true` and <ase-project-boxing/> is not equal `black`">
|
|
298
314
|
|
|
299
315
|
<if condition="<ase-project-boxing/> is equal `grey`">
|
|
300
316
|
|
|
@@ -341,7 +357,7 @@ related to a set of code quality aspects.
|
|
|
341
357
|
|
|
342
358
|
</else>
|
|
343
359
|
|
|
344
|
-
6. <if condition="<getopt-option-auto/> is not
|
|
360
|
+
6. <if condition="<getopt-option-auto/> is not equal `true`">
|
|
345
361
|
|
|
346
362
|
In the following, you *MUST* *NOT* use your built-in
|
|
347
363
|
<user-dialog-tool/> tool! Instead, you *MUST* just show a
|
|
@@ -359,7 +375,7 @@ related to a set of code quality aspects.
|
|
|
359
375
|
<else>
|
|
360
376
|
|
|
361
377
|
Set <result>ACCEPT</result>.
|
|
362
|
-
You *MUST* *NOT* output anything else in this step 6.
|
|
378
|
+
You *MUST* *NOT* output anything else in this sub-step 6.
|
|
363
379
|
|
|
364
380
|
</else>
|
|
365
381
|
|
|
@@ -367,11 +383,13 @@ related to a set of code quality aspects.
|
|
|
367
383
|
|
|
368
384
|
- <if condition="<result/> is 'ACCEPT'">
|
|
369
385
|
Invoke the `Edit` tool to apply the changes exactly
|
|
370
|
-
as
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
386
|
+
as given by the hunks of the current <change-set/>
|
|
387
|
+
(rendered as <diff/>, unless suppressed under grey
|
|
388
|
+
boxing). The operation will be auto-approved by the ASE
|
|
389
|
+
`pre-tool-use` hook (which tracks the active skill),
|
|
390
|
+
so *no* interactive permission prompt will appear.
|
|
391
|
+
After applying the changes, just continue with the next
|
|
392
|
+
<item/>.
|
|
375
393
|
</if>
|
|
376
394
|
|
|
377
395
|
- <if condition="<result/> starts with 'OTHER'">
|
|
@@ -3,7 +3,7 @@ name: ase-code-refactor
|
|
|
3
3
|
argument-hint: "[--help|-h] [--auto|-a] [--dry|-d] [--quick|-Q] [--next|-n <option>[,...]] [<task-id>:] <request>"
|
|
4
4
|
description: >
|
|
5
5
|
Refactor Code:
|
|
6
|
-
Use when user wants to "refactor"
|
|
6
|
+
Use when user wants to "refactor" or "change" the code base.
|
|
7
7
|
user-invocable: true
|
|
8
8
|
disable-model-invocation: false
|
|
9
9
|
effort: xhigh
|
|
@@ -18,7 +18,7 @@ allowed-tools:
|
|
|
18
18
|
@${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
|
|
19
19
|
|
|
20
20
|
<skill name="ase-code-refactor">
|
|
21
|
-
Refactor
|
|
21
|
+
Refactor Source Code
|
|
22
22
|
</skill>
|
|
23
23
|
|
|
24
24
|
<expand name="getopt"
|
|
@@ -109,7 +109,7 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
|
|
|
109
109
|
7. Ask the user for clarification if the goal of this refactoring is
|
|
110
110
|
too unclear.
|
|
111
111
|
|
|
112
|
-
8. Do not output anything in this step, unless you asked the user.
|
|
112
|
+
8. Do not output anything else in this step, unless you asked the user.
|
|
113
113
|
|
|
114
114
|
</step>
|
|
115
115
|
|
|
@@ -139,16 +139,16 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
|
|
|
139
139
|
|
|
140
140
|
You *MUST* perform the following sub-steps *internally* and *without
|
|
141
141
|
any output* until and including the recommendation decision. Only
|
|
142
|
-
sub-steps 4-
|
|
142
|
+
sub-steps 4-7 below are allowed to produce output; sub-steps 4-6 only if
|
|
143
143
|
<getopt-option-auto/> is equal `false` *and* <ase-project-boxing/>
|
|
144
144
|
is *not* equal `black`.
|
|
145
145
|
|
|
146
146
|
If <getopt-option-auto/> is equal `true` or <ase-project-boxing/> is
|
|
147
|
-
equal `black`, *skip* the reporting sub-steps 4-6 entirely (
|
|
148
|
-
no output at all) to speed up processing.
|
|
147
|
+
equal `black`, *skip* the reporting sub-steps 4-6 entirely (they
|
|
148
|
+
perform no output at all) to speed up processing.
|
|
149
149
|
|
|
150
|
-
1. *Propose* corresponding *refactoring approach*,
|
|
151
|
-
|
|
150
|
+
1. *Propose* a corresponding *refactoring approach*, optionally
|
|
151
|
+
including some *alternative* refactoring approaches. Do *not*
|
|
152
152
|
output anything in this sub-step.
|
|
153
153
|
|
|
154
154
|
2. *Reflect* on and *critique* the proposed approaches by deriving,
|
|
@@ -231,18 +231,18 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
|
|
|
231
231
|
closely aligning to the existing architecture and the existing
|
|
232
232
|
code base. Use the <format/> defined for a task plan and inject
|
|
233
233
|
the information from refactoring A<n/> and all derived realization
|
|
234
|
-
decisions into it. Store the resulting task plan in <content/>.
|
|
234
|
+
decisions into it. Store the resulting task plan in <task-content/>.
|
|
235
235
|
|
|
236
236
|
If a `CHANGELOG.md` file exists in the project (or in any
|
|
237
237
|
affected sub-package), the plan *MUST* include, as part of its
|
|
238
|
-
`##
|
|
238
|
+
`## CHANGES` section, an explicit bullet point describing
|
|
239
239
|
the addition of a corresponding new entry to that `CHANGELOG.md`
|
|
240
240
|
file, aligned with its existing style and conventions.
|
|
241
241
|
|
|
242
242
|
<if condition="<getopt-option-dry/> is equal `true`">
|
|
243
243
|
You *MUST* completely omit the `## VERIFICATION` section
|
|
244
244
|
(including its heading and all of its bullet points) from
|
|
245
|
-
<content/>.
|
|
245
|
+
<task-content/>.
|
|
246
246
|
</if>
|
|
247
247
|
|
|
248
248
|
You *MUST* *NOT* call `Edit`, `Write`, `NotebookEdit`, or any
|
|
@@ -253,10 +253,10 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
|
|
|
253
253
|
<timestamp-created/> and <timestamp-modified/> information. Then
|
|
254
254
|
insert the current <ase-task-id/>, <timestamp-created/>, and
|
|
255
255
|
<timestamp-modified/> information and calculate the number of
|
|
256
|
-
words <words/> of <content/>.
|
|
256
|
+
words <words/> of <task-content/>.
|
|
257
257
|
|
|
258
258
|
3. You then *MUST* *save* the resulting plan content with the
|
|
259
|
-
`ase_task_save(id: "<ase-task-id/>", text: "<content/>")`.
|
|
259
|
+
`ase_task_save(id: "<ase-task-id/>", text: "<task-content/>")`.
|
|
260
260
|
|
|
261
261
|
4. Output a hint with the following <template/>:
|
|
262
262
|
|
|
@@ -56,7 +56,7 @@ plan via `ase_task_save` and then hands off to `ase-task-edit`,
|
|
|
56
56
|
skill. For all other head tokens, the *entire* list is forwarded
|
|
57
57
|
to `ase-task-edit`, which consumes its head itself. This lets an
|
|
58
58
|
entire pipeline be pre-scripted in one shot. Recognized tokens at
|
|
59
|
-
this skill: `none` (default, hand
|
|
59
|
+
this skill: `none` (default, hand off to `ase-task-edit`
|
|
60
60
|
interactively), `DONE` (stop), `EDIT` (hand off to
|
|
61
61
|
`ase-task-edit`), `PREFLIGHT` (hand off to `ase-task-preflight`),
|
|
62
62
|
or `IMPLEMENT` (hand off to `ase-task-implement`). Example:
|