@rse/ase 0.9.55 → 0.9.56
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-setup.js +4 -2
- package/dst/ase-statusline.js +6 -8
- package/dst/ase-task.js +36 -11
- package/package.json +5 -5
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/.codex-plugin/plugin.json +1 -1
- package/plugin/.github/plugin/plugin.json +1 -1
- package/plugin/agents/ase-code-analyze.md +1 -1
- package/plugin/agents/ase-code-lint.md +4 -4
- package/plugin/agents/ase-meta-chat.md +1 -1
- package/plugin/agents/ase-meta-proximity.md +1 -1
- package/plugin/meta/ase-common-code.md +164 -1
- package/plugin/meta/ase-common-task.md +14 -13
- package/plugin/meta/ase-constitution.md +3 -3
- package/plugin/meta/ase-control.md +7 -7
- package/plugin/meta/ase-dialog.md +5 -4
- package/plugin/meta/ase-format-arch.md +7 -8
- package/plugin/meta/ase-format-spec.md +10 -11
- package/plugin/meta/ase-format-task.md +2 -2
- package/plugin/meta/ase-getopt.md +1 -1
- package/plugin/meta/ase-persona.md +3 -3
- package/plugin/meta/ase-skill.md +14 -24
- package/plugin/meta/ase-tenets.md +5 -5
- package/plugin/package.json +2 -2
- package/plugin/skills/ase-arch-analyze/SKILL.md +1 -1
- package/plugin/skills/ase-arch-analyze/help.md +1 -1
- package/plugin/skills/ase-arch-discover/SKILL.md +8 -6
- package/plugin/skills/ase-code-analyze/SKILL.md +1 -1
- package/plugin/skills/ase-code-analyze/help.md +1 -1
- package/plugin/skills/ase-code-craft/SKILL.md +2 -153
- package/plugin/skills/ase-code-craft/help.md +1 -1
- package/plugin/skills/ase-code-explain/SKILL.md +3 -3
- package/plugin/skills/ase-code-insight/SKILL.md +9 -7
- package/plugin/skills/ase-code-lint/SKILL.md +7 -5
- package/plugin/skills/ase-code-refactor/SKILL.md +4 -155
- package/plugin/skills/ase-code-resolve/SKILL.md +8 -159
- package/plugin/skills/ase-docs-distill/SKILL.md +2 -2
- package/plugin/skills/ase-docs-distill/help.md +1 -1
- package/plugin/skills/ase-docs-proofread/SKILL.md +7 -3
- package/plugin/skills/ase-help-intent/SKILL.md +33 -9
- package/plugin/skills/ase-help-skill/SKILL.md +1 -1
- package/plugin/skills/ase-meta-brainstorm/SKILL.md +11 -2
- package/plugin/skills/ase-meta-changelog/SKILL.md +12 -8
- package/plugin/skills/ase-meta-commit/SKILL.md +11 -1
- package/plugin/skills/ase-meta-compat/SKILL.md +2 -2
- package/plugin/skills/ase-meta-config/help.md +1 -1
- package/plugin/skills/ase-meta-diaboli/SKILL.md +12 -3
- package/plugin/skills/ase-meta-diff/SKILL.md +11 -13
- package/plugin/skills/ase-meta-eli5/SKILL.md +3 -3
- package/plugin/skills/ase-meta-eli5/help.md +1 -1
- package/plugin/skills/ase-meta-evaluate/SKILL.md +3 -3
- package/plugin/skills/ase-meta-quorum/SKILL.md +17 -17
- package/plugin/skills/ase-meta-quotes/SKILL.md +1 -1
- package/plugin/skills/ase-meta-review/SKILL.md +7 -5
- package/plugin/skills/ase-meta-review/help.md +2 -2
- package/plugin/skills/ase-meta-search/SKILL.md +18 -0
- package/plugin/skills/ase-meta-steelman/SKILL.md +11 -2
- package/plugin/skills/ase-meta-why/SKILL.md +15 -6
- package/plugin/skills/ase-meta-why/help.md +3 -3
- package/plugin/skills/ase-sync-export/SKILL.md +2 -1
- package/plugin/skills/ase-sync-export/help.md +1 -1
- package/plugin/skills/ase-sync-reconcile/SKILL.md +16 -2
- package/plugin/skills/ase-task-condense/SKILL.md +13 -67
- package/plugin/skills/ase-task-delete/SKILL.md +1 -1
- package/plugin/skills/ase-task-dissect/SKILL.md +5 -18
- package/plugin/skills/ase-task-edit/SKILL.md +49 -22
- package/plugin/skills/ase-task-grill/SKILL.md +31 -129
- package/plugin/skills/ase-task-id/SKILL.md +12 -2
- package/plugin/skills/ase-task-implement/SKILL.md +11 -7
- package/plugin/skills/ase-task-implement/help.md +1 -1
- package/plugin/skills/ase-task-list/SKILL.md +9 -0
- package/plugin/skills/ase-task-preflight/SKILL.md +13 -7
- package/plugin/skills/ase-task-reboot/SKILL.md +18 -61
- package/plugin/skills/ase-task-reboot/help.md +1 -1
- package/plugin/skills/ase-task-view/SKILL.md +4 -2
- package/dst/ase-guidance.js +0 -89
- package/dst/ase-persona.js +0 -87
- package/dst/ase-stdout.js +0 -18
|
@@ -28,7 +28,7 @@ is the timestamp when this **Artifact** was created. The
|
|
|
28
28
|
<timestamp-modified/> is the timestamp when this **Artifact** was last
|
|
29
29
|
modified. Both use an ISO-style format value. The value of both can be
|
|
30
30
|
determined by a call to the `ase_timestamp(format: "yyyy-LL-dd HH:mm")`
|
|
31
|
-
tool of the `ase` MCP server
|
|
31
|
+
tool of the `ase` MCP server, using the `text` field of its response.
|
|
32
32
|
Whenever an **Artifact** is updated, the <timestamp-modified/> *MUST* be
|
|
33
33
|
updated, too.
|
|
34
34
|
|
|
@@ -84,7 +84,6 @@ distinct **Artifact**s (listed under their <artifact-name/> and their
|
|
|
84
84
|
The **Artifact**s have the following cross-references:
|
|
85
85
|
|
|
86
86
|
```text
|
|
87
|
-
ARCH-02-FV Functionality View ──(depends on)─► ARCH-01-CV Context View
|
|
88
87
|
ARCH-03-IV Information View ──(entity)─► SPEC-07-DM Data Model
|
|
89
88
|
ARCH-03-IV Information View ──(owner)─► ARCH-02-FV Functionality View
|
|
90
89
|
ARCH-04-CO Concurrency View ──(hosts)─► ARCH-02-FV Functionality View
|
|
@@ -831,7 +830,7 @@ forces at play, the chosen response, and the reasoning that justifies it.
|
|
|
831
830
|
|
|
832
831
|
- <arch-dr-decision-notes/> is *OPTIONAL* and can be omitted when it
|
|
833
832
|
does not add genuine value - most decisions won't need it. The
|
|
834
|
-
following usually goes into it: information
|
|
833
|
+
following usually goes into it: information about the decision *process*
|
|
835
834
|
(e.g. a weighted decision matrix of considered alternatives);
|
|
836
835
|
consequences of the decision (but only when non-obvious downstream
|
|
837
836
|
effects need to be called out); and links to strongly related
|
|
@@ -850,7 +849,7 @@ forces at play, the chosen response, and the reasoning that justifies it.
|
|
|
850
849
|
almost inevitable answer to the context - if a reader is surprised
|
|
851
850
|
by the decision, either the context is missing a force, or the
|
|
852
851
|
decision is under-justified. The rationale should make the decision
|
|
853
|
-
feel earned, not asserted - if you
|
|
852
|
+
feel earned, not asserted - if you delete the rationale and
|
|
854
853
|
the decision suddenly looks arbitrary, the rationale was doing its
|
|
855
854
|
job.
|
|
856
855
|
|
|
@@ -892,7 +891,7 @@ forces at play, the chosen response, and the reasoning that justifies it.
|
|
|
892
891
|
|
|
893
892
|
- **Boundary and scope decisions.** "Customer data is owned by the
|
|
894
893
|
Customer context; other contexts reference it by ID only." The explicit
|
|
895
|
-
no
|
|
894
|
+
no's are as valuable as the yes's.
|
|
896
895
|
|
|
897
896
|
- **Deliberate deviations from the obvious path.** "We're using
|
|
898
897
|
manual SQL instead of an ORM because X." Anything where a reasonable
|
|
@@ -1091,7 +1090,7 @@ its purpose, and the alternatives that were considered but not chosen.
|
|
|
1091
1090
|
to bootstrap application parameters.
|
|
1092
1091
|
|
|
1093
1092
|
- **Configuration Parsing**:
|
|
1094
|
-
Load and parse directives from configuration file to bootstrap
|
|
1093
|
+
Load and parse directives from a configuration file to bootstrap
|
|
1095
1094
|
application parameters.
|
|
1096
1095
|
|
|
1097
1096
|
- **Process Daemonizing**:
|
|
@@ -1103,7 +1102,7 @@ its purpose, and the alternatives that were considered but not chosen.
|
|
|
1103
1102
|
and control them during the life-cycle of the application.
|
|
1104
1103
|
|
|
1105
1104
|
- **Component Management**:
|
|
1106
|
-
Structure the code into components, instantiate them
|
|
1105
|
+
Structure the code into components, instantiate them at run-time
|
|
1107
1106
|
and manage them in a stateful component life-cycle.
|
|
1108
1107
|
|
|
1109
1108
|
- **Component Communication**:
|
|
@@ -1151,7 +1150,7 @@ its purpose, and the alternatives that were considered but not chosen.
|
|
|
1151
1150
|
measurement information at certain points of interest.
|
|
1152
1151
|
|
|
1153
1152
|
- **Database Access**:
|
|
1154
|
-
Map in-memory domain entities onto data
|
|
1153
|
+
Map in-memory domain entities onto a data-store-dependent persistent
|
|
1155
1154
|
data structure.
|
|
1156
1155
|
|
|
1157
1156
|
- **Database Connectivity**:
|
|
@@ -28,7 +28,7 @@ is the timestamp when this **Artifact** was created. The
|
|
|
28
28
|
<timestamp-modified/> is the timestamp when this **Artifact** was last
|
|
29
29
|
modified. Both use an ISO-style format value. The value of both can be
|
|
30
30
|
determined by a call to the `ase_timestamp(format: "yyyy-LL-dd HH:mm")`
|
|
31
|
-
tool of the `ase` MCP server
|
|
31
|
+
tool of the `ase` MCP server, using the `text` field of its response.
|
|
32
32
|
Whenever an **Artifact** is updated, the <timestamp-modified/> *MUST* be
|
|
33
33
|
updated, too.
|
|
34
34
|
|
|
@@ -122,7 +122,6 @@ SPEC-06-BR Business Rules ──(constrains)─► SPEC-05-NR Non-Functio
|
|
|
122
122
|
SPEC-08-SM State Model ──(of entity)─► SPEC-07-DM Data Model
|
|
123
123
|
SPEC-10-UC Use Cases ──(use case actor)─► SPEC-02-PE Personas
|
|
124
124
|
SPEC-10-UC Use Cases ──(realizes)─► SPEC-04-FR Functional Requirements
|
|
125
|
-
SPEC-10-UC Use Cases ──(transitions)─► SPEC-08-SM State Model
|
|
126
125
|
SPEC-11-TC Test Cases ──(verifies)─► SPEC-04-FR Functional Requirements
|
|
127
126
|
SPEC-11-TC Test Cases ──(verifies)─► SPEC-05-NR Non-Functional Requirements
|
|
128
127
|
SPEC-15-DS Dialog Storyboard ──(scenario)─► SPEC-10-UC Use Cases
|
|
@@ -221,7 +220,7 @@ capturing their goals, needs, behaviors, and context.
|
|
|
221
220
|
in total not longer than 30 characters), derived from
|
|
222
221
|
<spec-pe-persona-name/>.
|
|
223
222
|
|
|
224
|
-
- <spec-pe-persona-name/>: per-artifact unique first name of fictional
|
|
223
|
+
- <spec-pe-persona-name/>: per-artifact unique first name of the fictional
|
|
225
224
|
described person.
|
|
226
225
|
|
|
227
226
|
- <spec-pe-persona-gender/>: the gender of the persona: `male`,
|
|
@@ -231,7 +230,7 @@ capturing their goals, needs, behaviors, and context.
|
|
|
231
230
|
|
|
232
231
|
- <spec-pe-persona-role/>: the role of the persona.
|
|
233
232
|
|
|
234
|
-
- <spec-pe-persona-quote/>: a short and bold
|
|
233
|
+
- <spec-pe-persona-quote/>: a short and bold first-person statement -
|
|
235
234
|
written in the persona's own voice - that captures their core
|
|
236
235
|
attitude, motivation, frustration, or need in a single memorable line.
|
|
237
236
|
It's sometimes called the persona's "tagline," "mantra," or "defining
|
|
@@ -287,12 +286,12 @@ over time.
|
|
|
287
286
|
|
|
288
287
|
- <spec-cj-step-stage/> is one of:
|
|
289
288
|
|
|
290
|
-
- `Awareness`: Customer is not aware of solution, but has a need.
|
|
291
|
-
- `Consideration`: Customer is aware of solution, and should consider its use.
|
|
289
|
+
- `Awareness`: Customer is not aware of the solution, but has a need.
|
|
290
|
+
- `Consideration`: Customer is aware of the solution, and should consider its use.
|
|
292
291
|
- `Decision`: Customer wants to pick the solution.
|
|
293
292
|
- `Onboarding`: Customer is using the solution.
|
|
294
|
-
- `Retention`: Customer in the long
|
|
295
|
-
- `Advocacy`: Customer is a fan of solution and tells the tribe.
|
|
293
|
+
- `Retention`: Customer in the long term stays a customer.
|
|
294
|
+
- `Advocacy`: Customer is a fan of the solution and tells the tribe.
|
|
296
295
|
|
|
297
296
|
- <spec-cj-step-actor/> is a `SPEC-PE-<spec-pe-persona-id/>` reference to the
|
|
298
297
|
corresponding **Aspect** of the Personas **Artifact**.
|
|
@@ -564,7 +563,7 @@ manages, defining how information is organized and connected.
|
|
|
564
563
|
|
|
565
564
|
### RELATIONS
|
|
566
565
|
|
|
567
|
-
- `<spec-dm-relation-id/>`: [`<spec-dm-relation-target/>`](
|
|
566
|
+
- `<spec-dm-relation-id/>`: [`<spec-dm-relation-target/>`](#SPEC-DM-<spec-dm-relation-target-id/>)(`<spec-dm-relation-cardinality/>`):<br/>
|
|
568
567
|
<spec-dm-relation-description/>,
|
|
569
568
|
**BECAUSE** <spec-dm-relation-rationale/>.
|
|
570
569
|
|
|
@@ -664,12 +663,12 @@ manages, defining how information is organized and connected.
|
|
|
664
663
|
- `Type` (`<spec-dm-attribute-qualifier/><spec-dm-attribute-type/>`)
|
|
665
664
|
- `Description` (`<spec-dm-attribute-description/>, **BECAUSE** <spec-dm-attribute-rationale/>.`)
|
|
666
665
|
|
|
667
|
-
- <export-table-2/> is a Markdown table for the
|
|
666
|
+
- <export-table-2/> is a Markdown table for the relations with one
|
|
668
667
|
row per <spec-dm-relation-id/>, sorted by <spec-dm-relation-id/> --
|
|
669
668
|
with the columns:
|
|
670
669
|
|
|
671
670
|
- `Relation` (`**<spec-dm-relation-id/>**`)
|
|
672
|
-
- `Target` (`[<spec-dm-relation-target/>](
|
|
671
|
+
- `Target` (`[<spec-dm-relation-target/>](#SPEC-DM-<spec-dm-relation-target-id/>) (<spec-dm-relation-cardinality/>)`)
|
|
673
672
|
- `Description` (`<spec-dm-relation-description/>, **BECAUSE** <spec-dm-relation-rationale/>.`)
|
|
674
673
|
|
|
675
674
|
- In case a <spec-dm-entity/> has no relations at all, the
|
|
@@ -139,14 +139,14 @@ You *MUST* honor the following hints on this *task* format:
|
|
|
139
139
|
task plan was last modified. Both use an ISO-style format
|
|
140
140
|
value. The value of both can be determined by a call to the
|
|
141
141
|
`ase_timestamp(format: "yyyy-LL-dd HH:mm")` tool of the `ase` MCP
|
|
142
|
-
server
|
|
142
|
+
server, using the `text` field of its response.
|
|
143
143
|
|
|
144
144
|
- The <title/> is a short summary of the <summary-what/>, no longer than
|
|
145
145
|
50 characters.
|
|
146
146
|
|
|
147
147
|
- The sections `## CHANGES` and `## VERIFICATION` are each just a short
|
|
148
148
|
list of 1-5 bullet points. Each bullet point is formatted as
|
|
149
|
-
`-
|
|
149
|
+
`- **<aspect/>**: <specification/>` where <aspect/> indicates
|
|
150
150
|
the aspect of the section and <specification/> is 1-3 sentences
|
|
151
151
|
giving an *ultra precise* but also *ultra brief* and *ultra concise*
|
|
152
152
|
description of the aspect.
|
|
@@ -36,7 +36,7 @@ set placeholders into the context as a side-effect.
|
|
|
36
36
|
Additionally, simulate <getopt-info/> as a comma-separated
|
|
37
37
|
markdown rendering of the parsed options in the form `<longN/>:
|
|
38
38
|
**<valueN/>**, [...]` (joined with `, `, with each value
|
|
39
|
-
shell-quoted if value contains spaces or special characters, and
|
|
39
|
+
shell-quoted if the value contains spaces or special characters, and
|
|
40
40
|
excluding the `help` option and any *internal* option whose long
|
|
41
41
|
name starts with `int-`).
|
|
42
42
|
|
|
@@ -61,7 +61,7 @@ requested communication style at any time during a session.
|
|
|
61
61
|
- <keywords/> is only one to four keywords summarizing the <details/>
|
|
62
62
|
- <details/> is one to four concise prose sentences explaining the aspect
|
|
63
63
|
|
|
64
|
-
- If <ase-persona-style/> is `telegrapher
|
|
64
|
+
- If <ase-persona-style/> is `telegrapher` or `caveman`:
|
|
65
65
|
- You *MUST* *use only* bullet point lists without blank lines between bullet points.
|
|
66
66
|
- You *MUST* *use only* one bullet point per explanation aspect.
|
|
67
67
|
- You *MUST* *use* shorter synonyms
|
|
@@ -89,13 +89,13 @@ requested communication style at any time during a session.
|
|
|
89
89
|
- `<subject/> ▶ <action/> ▷ <object/>.`
|
|
90
90
|
- `<subject/> ▶ <action/>.`
|
|
91
91
|
Each of <subject/>, <action/>, <object/>, and <reason/>
|
|
92
|
-
|
|
92
|
+
is just one to six words.
|
|
93
93
|
|
|
94
94
|
- If <ase-persona-style/> is `caveman`:
|
|
95
95
|
- You *MUST* structure every bullet point by
|
|
96
96
|
following exactly the formatting `○ <core/>`, where:
|
|
97
97
|
<core/> is a *very terse core* stating the essence of the aspect
|
|
98
|
-
using one of the following
|
|
98
|
+
using one of the following four sentence patterns:
|
|
99
99
|
- `<expression/>!`
|
|
100
100
|
- `<subject/> <action/> <object/>, <reason/>.`
|
|
101
101
|
- `<subject/> <action/> <object/>.`
|
package/plugin/meta/ase-skill.md
CHANGED
|
@@ -13,7 +13,7 @@ Skill Output
|
|
|
13
13
|
the value of a placeholder named `xxx`.
|
|
14
14
|
|
|
15
15
|
- *IMPORTANT*: *All* output is *exclusively* requested through
|
|
16
|
-
<template/> sections. You *MUST* *NOT* output anything *
|
|
16
|
+
<template/> sections. You *MUST* *NOT* output anything *UNLESS* it
|
|
17
17
|
is explicitly included in such a <template/> section. Especially,
|
|
18
18
|
you *MUST* *NOT* output any explanations on your own, unless
|
|
19
19
|
explicitly requested.
|
|
@@ -95,8 +95,8 @@ Skill Output
|
|
|
95
95
|
|
|
96
96
|
- *Fix conflicts with documented priority*: the
|
|
97
97
|
recommendation would violate a documented priority
|
|
98
|
-
(hot-path, allocation-free, lock-free,
|
|
99
|
-
sensitive, sub-µs budget). Either weaken the
|
|
98
|
+
(hot-path, allocation-free, lock-free,
|
|
99
|
+
latency-sensitive, sub-µs budget). Either weaken the
|
|
100
100
|
recommendation, convert it to a tradeoff, or mark
|
|
101
101
|
severity `ACCEPTED` with note "priority-conflict
|
|
102
102
|
accepted".
|
|
@@ -113,7 +113,7 @@ Skill Sequential Processing
|
|
|
113
113
|
Each `<step id="xxx" [...]>...</step>` corresponds to a
|
|
114
114
|
`TaskCreate({ subject: "xxx", description: "xxx" })`. In other
|
|
115
115
|
words, use the text of the `id` attribute of <step/> exactly
|
|
116
|
-
*as-is* for both the `subject
|
|
116
|
+
*as-is* for both the `subject` and the `description` fields of
|
|
117
117
|
`TaskCreate`.
|
|
118
118
|
|
|
119
119
|
For speed, emit *all* `TaskCreate` calls together in a *single* turn
|
|
@@ -121,7 +121,7 @@ Skill Sequential Processing
|
|
|
121
121
|
rely on the call order to establish the step order, as the parallel
|
|
122
122
|
results carry no guaranteed ordering.
|
|
123
123
|
|
|
124
|
-
Instead, in the *immediately
|
|
124
|
+
Instead, in the *single immediately following* turn, first
|
|
125
125
|
reconstruct the step-id-to-taskId mapping: because each task's
|
|
126
126
|
`subject` equals the originating <step/> `id` (and <step/> ids are
|
|
127
127
|
unique), match every created task back to its <step/> by comparing
|
|
@@ -138,7 +138,7 @@ Skill Sequential Processing
|
|
|
138
138
|
predecessor step (with `taskId` <prev/>).
|
|
139
139
|
|
|
140
140
|
- *IMPORTANT*: For each <step/> you *MUST* use the `TaskUpdate` tool
|
|
141
|
-
for updating its status *during* processing, once a <step/> finished.
|
|
141
|
+
for updating its status *during* processing, once a <step/> has finished.
|
|
142
142
|
|
|
143
143
|
- *IMPORTANT*: Whenever a skill *stops early* -- because a <step/>
|
|
144
144
|
instructed you to *STOP* processing (on an error, a cancelled
|
|
@@ -151,12 +151,12 @@ Skill Sequential Processing
|
|
|
151
151
|
|
|
152
152
|
- *IMPORTANT*: You *MUST* *strictly sequentially* execute every <step/> in
|
|
153
153
|
a <flow/>. You *MUST* not implicitly skip any <step/> during
|
|
154
|
-
processing,
|
|
154
|
+
processing, unless you were explicitly requested to do this or the
|
|
155
155
|
step is configured to be a conditional step!
|
|
156
156
|
|
|
157
157
|
- *IMPORTANT*: You *MUST* *strictly sequentially* execute every numbered
|
|
158
158
|
item in a <step/>. You *MUST* not implicitly skip any numbered item during
|
|
159
|
-
processing,
|
|
159
|
+
processing, unless you were explicitly requested to do this!
|
|
160
160
|
|
|
161
161
|
- *IMPORTANT*: For any <step/> that specifies an *agent* in its
|
|
162
162
|
`agent="[...]"` XML attribute, you *MUST* use the specified
|
|
@@ -252,7 +252,7 @@ Skill Identification
|
|
|
252
252
|
|
|
253
253
|
- *IMPORTANT*:
|
|
254
254
|
You *MUST* *NOT* output any summaries, explanations, or next
|
|
255
|
-
steps at the end of a skill
|
|
255
|
+
steps at the end of a skill besides the explicit outputs via any
|
|
256
256
|
<template/>.
|
|
257
257
|
|
|
258
258
|
Artifact Boxing Transparency
|
|
@@ -291,7 +291,7 @@ Artifact Boxing Transparency
|
|
|
291
291
|
- Findings surfaced: *none* (report only the *outcome*)
|
|
292
292
|
- Internals exposed: *none* (no diffs, no code, no per-artifact explanation)
|
|
293
293
|
|
|
294
|
-
- *IMPORTANT*: Precedence rule: skill's *explicit* `black` branches
|
|
294
|
+
- *IMPORTANT*: Precedence rule: a skill's *explicit* `black` branches
|
|
295
295
|
deterministically skip or suppress and *win* over the implicit decisions
|
|
296
296
|
above. Where no such branches exist, the decisions above apply.
|
|
297
297
|
|
|
@@ -458,19 +458,6 @@ Template Patterns
|
|
|
458
458
|
Do not output anything.
|
|
459
459
|
</else>
|
|
460
460
|
|
|
461
|
-
- When `<ase-tpl-boxline><line/></ase-tpl-boxline>` should be expanded, use:
|
|
462
|
-
|
|
463
|
-
<if condition="<line/> is not empty">
|
|
464
|
-
<template>
|
|
465
|
-
│ <line/>
|
|
466
|
-
</template>
|
|
467
|
-
</if>
|
|
468
|
-
<else>
|
|
469
|
-
<template>
|
|
470
|
-
│
|
|
471
|
-
</template>
|
|
472
|
-
</else>
|
|
473
|
-
|
|
474
461
|
- When `<ase-tpl-boxed title="<title/>"[ subtitle="<subtitle/>"]><content/></ase-tpl-boxed>`
|
|
475
462
|
should be expanded use the following helper placeholders and then
|
|
476
463
|
the following <template/>:
|
|
@@ -487,7 +474,10 @@ Template Patterns
|
|
|
487
474
|
un-styled text <raw-title/>.
|
|
488
475
|
- Set <bar/> to the `─` character repeated exactly max(0, 67 - <raw-title-len/>)
|
|
489
476
|
times -- clamped to zero so an over-long title never yields a negative count.
|
|
490
|
-
- Set <body/> to <content/> with all
|
|
477
|
+
- Set <body/> to <content/> with all non-empty lines prefixed with
|
|
478
|
+
`│ ` and all empty lines prefixed with just `│` (so no trailing
|
|
479
|
+
whitespace is produced). Do *not* prefix any line twice -- the
|
|
480
|
+
<content/> itself *MUST* *NOT* contain any `│` prefixes already.
|
|
491
481
|
|
|
492
482
|
<template>
|
|
493
483
|
|
|
@@ -37,9 +37,9 @@ you *MUST* honor the following so-called **GENERIC TENETS**:
|
|
|
37
37
|
- Handle obvious or expected errors near the origin.
|
|
38
38
|
- Handle theoretical or unexpected errors in parent scopes.
|
|
39
39
|
- Avoid introducing dedicated state variables for individual error cases.
|
|
40
|
-
- If state variables are needed to detect error cases, use minimum
|
|
40
|
+
- If state variables are needed to detect error cases, use the minimum
|
|
41
41
|
number of those variables only.
|
|
42
|
-
- Use minimum number of state variables to span the maximum of error space.
|
|
42
|
+
- Use the minimum number of state variables to span the maximum of error space.
|
|
43
43
|
|
|
44
44
|
- **Surgical Changes**:
|
|
45
45
|
*Keep changes as small as possible.*
|
|
@@ -61,7 +61,7 @@ you *MUST* honor the following so-called **GENERIC TENETS**:
|
|
|
61
61
|
- When one concern changes, the change should not ripple into unrelated ones.
|
|
62
62
|
|
|
63
63
|
- **Code Base Alignment**:
|
|
64
|
-
*Blend in.
|
|
64
|
+
*Blend in. A new aspect should read as if the existing aspects wrote it.*
|
|
65
65
|
- Follow the established coding style, formatting, and idioms exactly.
|
|
66
66
|
- Mirror the existing structure, layering, and file organization.
|
|
67
67
|
- Reuse the prevailing naming conventions, patterns, and libraries.
|
|
@@ -150,12 +150,12 @@ you *MUST* honor the following so-called **RECONCILIATION TENETS**:
|
|
|
150
150
|
Re-express source facts at the *target's* level of abstraction and
|
|
151
151
|
altitude; do not copy verbatim across artifact levels. A SPEC states
|
|
152
152
|
intent, an ARCH states structure, CODE states realization, DOCS
|
|
153
|
-
states facts, etc -- align the *meaning*, not the wording.
|
|
153
|
+
states facts, etc. -- align the *meaning*, not the wording.
|
|
154
154
|
|
|
155
155
|
- **Format Conformance**:
|
|
156
156
|
Keep every formatted target (SPEC, ARCH, TASK) conformant to its
|
|
157
157
|
format contract (headings, structure, identifiers). Treat CODE,
|
|
158
|
-
DOCS, INFR, and OTHR kinds of artifacts as foreign
|
|
158
|
+
DOCS, INFR, and OTHR kinds of artifacts as foreign-defined, but not
|
|
159
159
|
as free-form.
|
|
160
160
|
|
|
161
161
|
- **Alignment Traceability**:
|
package/plugin/package.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"homepage": "https://ase.tools",
|
|
7
7
|
"repository": { "url": "git+https://github.com/rse/ase.git", "type": "git" },
|
|
8
8
|
"bugs": { "url": "https://github.com/rse/ase/issues" },
|
|
9
|
-
"version": "0.9.
|
|
9
|
+
"version": "0.9.56",
|
|
10
10
|
"license": "Apache-2.0",
|
|
11
11
|
"author": {
|
|
12
12
|
"name": "Dr. Ralf S. Engelschall",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"markdownlint-cli2": "0.23.2",
|
|
20
20
|
"eslint": "10.8.0",
|
|
21
21
|
"@eslint/markdown": "8.0.3",
|
|
22
|
-
"eslint-markdown": "0.
|
|
22
|
+
"eslint-markdown": "0.13.0"
|
|
23
23
|
},
|
|
24
24
|
"engines": {
|
|
25
25
|
"npm": ">=10.0.0",
|
|
@@ -130,7 +130,7 @@ interface quality, quality attributes, and architecture governance.
|
|
|
130
130
|
surfaced. *Skip* the entire investigation and reporting: do *not*
|
|
131
131
|
invoke any `Agent` tool and do *not* read any source, only output
|
|
132
132
|
the following <template/> and then *SKIP* the remaining steps STEP 2
|
|
133
|
-
|
|
133
|
+
and STEP 3:
|
|
134
134
|
|
|
135
135
|
<template>
|
|
136
136
|
<ase-tpl-bullet-normal/> **ARCHITECTURE ANALYSIS**: *suppressed* (`project.boxing` is `black`)
|
|
@@ -54,7 +54,7 @@ Analyze a specific module:
|
|
|
54
54
|
❯ /ase-arch-analyze src/core
|
|
55
55
|
```
|
|
56
56
|
|
|
57
|
-
Analyze a module under
|
|
57
|
+
Analyze a module under its own id namespace, yielding `core-P1`, `core-T1`, ...:
|
|
58
58
|
|
|
59
59
|
```text
|
|
60
60
|
❯ /ase-arch-analyze --prefix core src/core
|
|
@@ -78,8 +78,9 @@ for the technology stack to *provide* the *needed functionality*
|
|
|
78
78
|
2. Else, if a file `package.json` is found in the top-level directory
|
|
79
79
|
of the project, then <stack>JavaScript</stack>.
|
|
80
80
|
|
|
81
|
-
3. Else, if a file `build.gradle.kts`
|
|
82
|
-
is
|
|
81
|
+
3. Else, if a file `build.gradle.kts` is found in the top-level directory and
|
|
82
|
+
is applying `kotlin`, `org.jetbrains.kotlin.jvm`, `kotlin-android`,
|
|
83
|
+
or `kotlin-multiplatform` plugins, then <stack>Kotlin</stack>.
|
|
83
84
|
|
|
84
85
|
4. Else, if a file `build.gradle` is found in the top-level directory and
|
|
85
86
|
is applying `kotlin`, `org.jetbrains.kotlin.jvm`, `kotlin-android`,
|
|
@@ -89,8 +90,8 @@ for the technology stack to *provide* the *needed functionality*
|
|
|
89
90
|
contains `kotlin-maven-plugin` or `kotlin-stdlib` dependencies, then
|
|
90
91
|
<stack>Kotlin</stack>.
|
|
91
92
|
|
|
92
|
-
6. Else, if a file `pom.xml` or `build.gradle` is found
|
|
93
|
-
of the project, then <stack>Java</stack>.
|
|
93
|
+
6. Else, if a file `pom.xml`, `build.gradle`, or `build.gradle.kts` is found
|
|
94
|
+
in the top-level directory of the project, then <stack>Java</stack>.
|
|
94
95
|
|
|
95
96
|
7. Else, use <stack>Unknown</stack>.
|
|
96
97
|
|
|
@@ -123,7 +124,7 @@ for the technology stack to *provide* the *needed functionality*
|
|
|
123
124
|
(which alone is governed by <getopt-option-limit/>) has a
|
|
124
125
|
meaningful set to choose from.
|
|
125
126
|
|
|
126
|
-
In the to
|
|
127
|
+
In the to-be-discovered candidate set of components <component-K/>
|
|
127
128
|
(K=1-C, where C is the merged and deduplicated candidate count),
|
|
128
129
|
remember the component name as <name-K/>, the
|
|
129
130
|
official package name as <package-K/>, the latest version as
|
|
@@ -178,7 +179,8 @@ for the technology stack to *provide* the *needed functionality*
|
|
|
178
179
|
and fetches all metadata in maximum parallel and returns an array
|
|
179
180
|
of objects `{ name, version, created, updated, repository, stars,
|
|
180
181
|
downloads, deps, rank }`. For each component <component-K/>
|
|
181
|
-
(K=1-C) read from its corresponding entry: <
|
|
182
|
+
(K=1-C) read from its corresponding entry: <name-K/> from `name`
|
|
183
|
+
(unless already known from the discovery above), <version-K/> from
|
|
182
184
|
`version`, <updated-K/> from `updated`, <created-K/> from
|
|
183
185
|
`created`, <repository-K/> from `repository`, <stars-K/> from
|
|
184
186
|
`stars` (numeric or `N.A.`), <downloads-K/> from `downloads`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ase-code-analyze
|
|
3
|
-
argument-hint: "[--help|-h] [--performance|-p] [--security|-s] [--severity|-S=(LOW|MEDIUM|HIGH)] <source-reference>"
|
|
3
|
+
argument-hint: "[--help|-h] [--performance|-p] [--security|-s] [--severity|-S=(LOW|MEDIUM|HIGH)] [--prefix|-P=<prefix>] <source-reference>"
|
|
4
4
|
description: >
|
|
5
5
|
Analyze the source code for problems in either the logic and
|
|
6
6
|
semantics and its related control flow, performance and efficiency,
|
|
@@ -92,7 +92,7 @@ Analyze a directory, reporting only `MEDIUM` and `HIGH` problems:
|
|
|
92
92
|
❯ /ase-code-analyze -S MEDIUM src/handlers/
|
|
93
93
|
```
|
|
94
94
|
|
|
95
|
-
Analyze a directory under
|
|
95
|
+
Analyze a directory under its own id namespace, yielding `auth-P1`, `auth-P2`, ...:
|
|
96
96
|
|
|
97
97
|
```text
|
|
98
98
|
❯ /ase-code-analyze --prefix auth src/auth/
|
|
@@ -138,91 +138,7 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
|
|
|
138
138
|
|
|
139
139
|
4. <step id="STEP 4: Choose Feature Crafting Approaches">
|
|
140
140
|
|
|
141
|
-
|
|
142
|
-
any output* until and including the recommendation decision. Only
|
|
143
|
-
sub-steps 4-7 below are allowed to produce output; sub-steps 4-6 only if
|
|
144
|
-
<getopt-option-auto/> is equal `false` *and* <ase-project-boxing/>
|
|
145
|
-
is *not* equal `black`.
|
|
146
|
-
|
|
147
|
-
If <getopt-option-auto/> is equal `true` or <ase-project-boxing/> is
|
|
148
|
-
equal `black`, *skip* the reporting sub-steps 4-6 entirely (they
|
|
149
|
-
perform no output at all) to speed up processing.
|
|
150
|
-
|
|
151
|
-
1. *Propose* a corresponding *feature approach*, optionally including
|
|
152
|
-
some *alternative* feature approaches. Do *not* output anything
|
|
153
|
-
in this sub-step.
|
|
154
|
-
|
|
155
|
-
2. *Reflect* on and *critique* the proposed approaches by deriving,
|
|
156
|
-
per approach, a small set of concrete *pros* and *cons*. Do
|
|
157
|
-
*not* output anything in this sub-step.
|
|
158
|
-
|
|
159
|
-
3. Based on the reflection, *decide* which approach to recommend
|
|
160
|
-
and annotate it with an <annotation/> of
|
|
161
|
-
` ⚝ **RECOMMENDATION** ⚝`. All other approaches receive an
|
|
162
|
-
empty <annotation/>. Do *not* output anything in this sub-step.
|
|
163
|
-
|
|
164
|
-
4. Indicate start of reporting by showing the following <template/>:
|
|
165
|
-
|
|
166
|
-
<template>
|
|
167
|
-
<ase-tpl-head title="APPROACHES"/>
|
|
168
|
-
</template>
|
|
169
|
-
|
|
170
|
-
5. Now report each approach with the following <template/>,
|
|
171
|
-
inlining its pros/cons derived in sub-step 2, and do not output
|
|
172
|
-
anything else in this step:
|
|
173
|
-
|
|
174
|
-
<template>
|
|
175
|
-
● **APPROACH A<n/>**<annotation/>: **<summary/>**
|
|
176
|
-
○ [...]
|
|
177
|
-
⊕ *PRO*: [...]
|
|
178
|
-
⊖ *CON*: [...]
|
|
179
|
-
</template>
|
|
180
|
-
|
|
181
|
-
Hints:
|
|
182
|
-
|
|
183
|
-
- Give a short one-sentence <summary/> of the feature
|
|
184
|
-
approach plus *precise* and *ultra brief and concise*
|
|
185
|
-
feature information. Try to keep the number of bullet points
|
|
186
|
-
(`○ [...]`) in the range of 1-4.
|
|
187
|
-
|
|
188
|
-
6. Indicate end of reporting by showing the following <template/>:
|
|
189
|
-
|
|
190
|
-
<template>
|
|
191
|
-
<ase-tpl-foot title="APPROACHES"/>
|
|
192
|
-
</template>
|
|
193
|
-
|
|
194
|
-
7. <if condition="<getopt-option-auto/> is not equal `true` and <ase-project-boxing/> is not equal `black`">
|
|
195
|
-
|
|
196
|
-
In the following, you *MUST* *NOT* use your built-in
|
|
197
|
-
<user-dialog-tool/> tool! Instead, you *MUST* just show a
|
|
198
|
-
custom dialog according to the expanded `custom-dialog`
|
|
199
|
-
definition. You *MUST* closely follow this definition.
|
|
200
|
-
|
|
201
|
-
Let the user choose the preferred approach A<n/> by raising
|
|
202
|
-
a question with the following custom dialog, where per
|
|
203
|
-
approach A<n/>, you determine an ultra brief summary
|
|
204
|
-
<short-summary/> and then use the answer option `A<n/>:
|
|
205
|
-
⚝ **RECOMMENDATION** ⚝ - <short-summary/>` for your
|
|
206
|
-
recommended approach plus zero or more answer options `A<n/>:
|
|
207
|
-
<short-summary/>` for all other approaches:
|
|
208
|
-
|
|
209
|
-
<expand name="custom-dialog" arg1="--no-other">
|
|
210
|
-
Select Approach: Select your preferred crafting approach to follow?
|
|
211
|
-
A<n/>: <short-summary/>
|
|
212
|
-
[...]
|
|
213
|
-
</expand>
|
|
214
|
-
|
|
215
|
-
</if>
|
|
216
|
-
<else>
|
|
217
|
-
|
|
218
|
-
Set <n/> to the number of the feature approach A<n/> you recommend.
|
|
219
|
-
Output a hint with the following <template/>:
|
|
220
|
-
|
|
221
|
-
<template>
|
|
222
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **auto-chosen approach A<n/>**
|
|
223
|
-
</template>
|
|
224
|
-
|
|
225
|
-
</else>
|
|
141
|
+
<expand name="code-approaches" arg1="feature" arg2="crafting"></expand>
|
|
226
142
|
|
|
227
143
|
</step>
|
|
228
144
|
|
|
@@ -267,74 +183,7 @@ permitted way to persist artifacts is via `ase_task_save(...)`.
|
|
|
267
183
|
|
|
268
184
|
5. Directly pass-through control to the next skill:
|
|
269
185
|
|
|
270
|
-
|
|
271
|
-
list of pre-selected next-step tokens. *Peek* the *first* token
|
|
272
|
-
as <head/> (or `none` if the list is `none`/empty).
|
|
273
|
-
Set <args>--int-reuse-task</args>.
|
|
274
|
-
|
|
275
|
-
1. <if condition="<head/> is equal `DONE`">
|
|
276
|
-
Consume the head: set <getopt-option-next/> to the remaining
|
|
277
|
-
tokens (joined back with `,`, or `none` if empty). `DONE`
|
|
278
|
-
means the freshly composed plan is finalized as-is, so do
|
|
279
|
-
*not* hand off to `ase-task-edit`. Only output the following
|
|
280
|
-
<template/> and then *STOP*. Do *not* implement the plan.
|
|
281
|
-
|
|
282
|
-
<template>
|
|
283
|
-
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan finalized -- done**
|
|
284
|
-
</template>
|
|
285
|
-
</if>
|
|
286
|
-
|
|
287
|
-
2. <elseif condition="<head/> is equal `IMPLEMENT`">
|
|
288
|
-
Consume the head: set <getopt-option-next/> to the remaining
|
|
289
|
-
tokens (joined back with `,`, or `none` if empty).
|
|
290
|
-
<if condition="<getopt-option-next/> is not equal `none`">
|
|
291
|
-
Set <args><args/> --next <getopt-option-next/></args>
|
|
292
|
-
</if>
|
|
293
|
-
Call the tool `Skill(skill: "ase:ase-task-implement", args: "<args/>")`
|
|
294
|
-
to *implement* the freshly composed plan, bypassing `ase-task-edit`.
|
|
295
|
-
</elseif>
|
|
296
|
-
|
|
297
|
-
3. <elseif condition="<head/> is equal `PREFLIGHT`">
|
|
298
|
-
Consume the head: set <getopt-option-next/> to the remaining
|
|
299
|
-
tokens (joined back with `,`, or `none` if empty).
|
|
300
|
-
<if condition="<getopt-option-next/> is not equal `none`">
|
|
301
|
-
Set <args><args/> --next <getopt-option-next/></args>
|
|
302
|
-
</if>
|
|
303
|
-
Call the tool `Skill(skill: "ase:ase-task-preflight", args: "<args/>")`
|
|
304
|
-
to *preflight* the freshly composed plan, bypassing `ase-task-edit`.
|
|
305
|
-
</elseif>
|
|
306
|
-
|
|
307
|
-
4. <elseif condition="<head/> is equal `GRILL`">
|
|
308
|
-
Consume the head: set <getopt-option-next/> to the remaining
|
|
309
|
-
tokens (joined back with `,`, or `none` if empty). `GRILL`
|
|
310
|
-
is this skill's own dispatch token, *not* part of
|
|
311
|
-
`ase-task-grill`'s `--next` vocabulary, so it must be
|
|
312
|
-
stripped here rather than forwarded. All remaining tokens are
|
|
313
|
-
`ase-task-grill`'s own vocabulary and are forwarded verbatim.
|
|
314
|
-
<if condition="<getopt-option-next/> is not equal `none`">
|
|
315
|
-
Set <args><args/> --next <getopt-option-next/></args>
|
|
316
|
-
</if>
|
|
317
|
-
Call the tool `Skill(skill: "ase:ase-task-grill", args: "<args/>")`
|
|
318
|
-
to *grill* the freshly composed plan, bypassing `ase-task-edit`.
|
|
319
|
-
</elseif>
|
|
320
|
-
|
|
321
|
-
5. <else>
|
|
322
|
-
Hand off to `ase-task-edit`.
|
|
323
|
-
<if condition="<head/> is equal `EDIT`">
|
|
324
|
-
Consume the head: set <getopt-option-next/> to the remaining
|
|
325
|
-
tokens (joined back with `,`, or `none` if empty). `EDIT`
|
|
326
|
-
is this skill's own dispatch token, *not* part of
|
|
327
|
-
`ase-task-edit`'s `--next` vocabulary, so it must be
|
|
328
|
-
stripped here rather than forwarded.
|
|
329
|
-
</if>
|
|
330
|
-
All remaining tokens are `ase-task-edit`'s own vocabulary
|
|
331
|
-
and are forwarded verbatim, so `ase-task-edit` consumes its
|
|
332
|
-
own head itself.
|
|
333
|
-
<if condition="<getopt-option-next/> is not equal `none`">
|
|
334
|
-
Set <args><args/> --next <getopt-option-next/></args>
|
|
335
|
-
</if>
|
|
336
|
-
Then call the tool `Skill(skill: "ase:ase-task-edit", args: "<args/>")`.
|
|
337
|
-
</else>
|
|
186
|
+
<expand name="code-next-dispatch"></expand>
|
|
338
187
|
|
|
339
188
|
</step>
|
|
340
189
|
|
|
@@ -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`), `GRILL` (hand off to `ase-task-grill`),
|
|
62
62
|
`PREFLIGHT` (hand off to `ase-task-preflight`),
|
|
@@ -25,7 +25,7 @@ Explain Source Code
|
|
|
25
25
|
|
|
26
26
|
<objective>
|
|
27
27
|
*Analyze* the source code of <getopt-arguments/>, and its directly related source
|
|
28
|
-
code and *explain* it in a *brief*, *standardized*, and *concise* way.
|
|
28
|
+
code, and *explain* it in a *brief*, *standardized*, and *concise* way.
|
|
29
29
|
</objective>
|
|
30
30
|
|
|
31
31
|
<flow>
|
|
@@ -126,10 +126,10 @@ code and *explain* it in a *brief*, *standardized*, and *concise* way.
|
|
|
126
126
|
4. <step id="STEP 4: CRUXES and GOTCHAS">
|
|
127
127
|
**Highlight CRUXES and GOTCHAS**.
|
|
128
128
|
|
|
129
|
-
First, tell what
|
|
129
|
+
First, tell what the *cruxes* of the code are.
|
|
130
130
|
Is there something one should really *notice*?
|
|
131
131
|
|
|
132
|
-
Second, tell what
|
|
132
|
+
Second, tell what the gotchas of the code are.
|
|
133
133
|
Is there something one could really *stumble over*?
|
|
134
134
|
|
|
135
135
|
Keep your explanation *brief* and *concise*.
|