@rse/ase 0.9.54 → 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-log.js +5 -0
- package/dst/ase-service.js +45 -6
- package/dst/ase-setup.js +4 -2
- package/dst/ase-statusline.js +6 -8
- package/dst/ase-task.js +152 -28
- 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 +165 -2
- package/plugin/meta/ase-common-task.md +17 -15
- 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 +90 -20
- 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-lint/help.md +2 -2
- 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 +4 -4
- 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-quotes/help.md +4 -3
- 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 +19 -72
- package/plugin/skills/ase-task-condense/help.md +1 -1
- 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 +74 -26
- package/plugin/skills/ase-task-grill/SKILL.md +30 -124
- package/plugin/skills/ase-task-grill/help.md +2 -1
- package/plugin/skills/ase-task-id/SKILL.md +12 -2
- package/plugin/skills/ase-task-implement/SKILL.md +37 -4
- package/plugin/skills/ase-task-implement/help.md +9 -5
- package/plugin/skills/ase-task-list/SKILL.md +60 -15
- package/plugin/skills/ase-task-list/help.md +49 -6
- package/plugin/skills/ase-task-preflight/SKILL.md +20 -8
- package/plugin/skills/ase-task-preflight/help.md +4 -3
- package/plugin/skills/ase-task-reboot/SKILL.md +19 -62
- package/plugin/skills/ase-task-reboot/help.md +1 -1
- package/plugin/skills/ase-task-view/SKILL.md +27 -4
- package/dst/ase-guidance.js +0 -89
- package/dst/ase-persona.js +0 -87
- package/dst/ase-stdout.js +0 -18
|
@@ -4,7 +4,7 @@ Code Skill Common Steps
|
|
|
4
4
|
|
|
5
5
|
<define name="code-tenets">
|
|
6
6
|
|
|
7
|
-
You *MUST* internalize and strictly honor the **GENERIC TENETS
|
|
7
|
+
You *MUST* internalize and strictly honor the **GENERIC TENETS** and
|
|
8
8
|
the **<arg1/> TENETS** of the **ASE Tenets** in the following creation
|
|
9
9
|
and updating of code. Do not output anything.
|
|
10
10
|
|
|
@@ -15,7 +15,7 @@ and updating of code. Do not output anything.
|
|
|
15
15
|
Determine the *kind of change* the task plan describes and internalize
|
|
16
16
|
the corresponding tenet sets:
|
|
17
17
|
|
|
18
|
-
- If <task-content/>
|
|
18
|
+
- If the frontmatter of <task-content/> carries a `Kind: <text/>` key
|
|
19
19
|
and <text/> is one of `CRAFTING`, `REFACTORING`, or `RESOLVING`:
|
|
20
20
|
Set <task-kind><text/></task-kind> (set task kind to the stated kind).
|
|
21
21
|
|
|
@@ -32,3 +32,166 @@ Then honor the tenet sets of <task-kind/>:
|
|
|
32
32
|
<expand name="code-tenets" arg1="<task-kind/>"></expand>
|
|
33
33
|
|
|
34
34
|
</define>
|
|
35
|
+
|
|
36
|
+
<define name="code-approaches">
|
|
37
|
+
|
|
38
|
+
You *MUST* perform the following sub-steps *internally* and *without
|
|
39
|
+
any output* until and including the recommendation decision. Only
|
|
40
|
+
sub-steps 4-7 below are allowed to produce output; sub-steps 4-6 only if
|
|
41
|
+
<getopt-option-auto/> is equal `false` *and* <ase-project-boxing/>
|
|
42
|
+
is *not* equal `black`.
|
|
43
|
+
|
|
44
|
+
If <getopt-option-auto/> is equal `true` or <ase-project-boxing/> is
|
|
45
|
+
equal `black`, *skip* the reporting sub-steps 4-6 entirely (they
|
|
46
|
+
perform no output at all) to speed up processing.
|
|
47
|
+
|
|
48
|
+
1. *Propose* a corresponding *<arg1/> approach*, optionally including
|
|
49
|
+
some *alternative* <arg1/> approaches. Do *not* output anything
|
|
50
|
+
in this sub-step.
|
|
51
|
+
|
|
52
|
+
2. *Reflect* on and *critique* the proposed approaches by deriving,
|
|
53
|
+
per approach, a small set of concrete *pros* and *cons*. Do
|
|
54
|
+
*not* output anything in this sub-step.
|
|
55
|
+
|
|
56
|
+
3. Based on the reflection, *decide* which approach to recommend
|
|
57
|
+
and annotate it with an <annotation/> of
|
|
58
|
+
` ⚝ **RECOMMENDATION** ⚝`. All other approaches receive an
|
|
59
|
+
empty <annotation/>. Do *not* output anything in this sub-step.
|
|
60
|
+
|
|
61
|
+
4. Indicate start of reporting by showing the following <template/>:
|
|
62
|
+
|
|
63
|
+
<template>
|
|
64
|
+
<ase-tpl-head title="APPROACHES"/>
|
|
65
|
+
</template>
|
|
66
|
+
|
|
67
|
+
5. Now report each approach with the following <template/>,
|
|
68
|
+
inlining its pros/cons derived in sub-step 2, and do not output
|
|
69
|
+
anything else in this step:
|
|
70
|
+
|
|
71
|
+
<template>
|
|
72
|
+
● **APPROACH A<n/>**<annotation/>: **<summary/>**
|
|
73
|
+
○ [...]
|
|
74
|
+
⊕ *PRO*: [...]
|
|
75
|
+
⊖ *CON*: [...]
|
|
76
|
+
</template>
|
|
77
|
+
|
|
78
|
+
Hints:
|
|
79
|
+
|
|
80
|
+
- Give a short one-sentence <summary/> of the <arg1/> approach
|
|
81
|
+
plus *precise* and *ultra brief and concise* <arg1/>
|
|
82
|
+
information. Try to keep the number of bullet points
|
|
83
|
+
(`○ [...]`) in the range of 1-4.
|
|
84
|
+
|
|
85
|
+
6. Indicate end of reporting by showing the following <template/>:
|
|
86
|
+
|
|
87
|
+
<template>
|
|
88
|
+
<ase-tpl-foot title="APPROACHES"/>
|
|
89
|
+
</template>
|
|
90
|
+
|
|
91
|
+
7. <if condition="<getopt-option-auto/> is not equal `true` and <ase-project-boxing/> is not equal `black`">
|
|
92
|
+
|
|
93
|
+
In the following, you *MUST* *NOT* use your built-in
|
|
94
|
+
<user-dialog-tool/> tool! Instead, you *MUST* just show a
|
|
95
|
+
custom dialog according to the expanded `custom-dialog`
|
|
96
|
+
definition. You *MUST* closely follow this definition.
|
|
97
|
+
|
|
98
|
+
Let the user choose the preferred approach A<n/> by raising
|
|
99
|
+
a question with the following custom dialog, where per
|
|
100
|
+
approach A<n/>, you determine an ultra brief summary
|
|
101
|
+
<short-summary/> and then use the answer option `A<n/>:
|
|
102
|
+
⚝ **RECOMMENDATION** ⚝ - <short-summary/>` for your
|
|
103
|
+
recommended approach plus zero or more answer options `A<n/>:
|
|
104
|
+
<short-summary/>` for all other approaches:
|
|
105
|
+
|
|
106
|
+
<expand name="custom-dialog" arg1="--no-other">
|
|
107
|
+
Select Approach: Select your preferred <arg2/> approach to follow?
|
|
108
|
+
A<n/>: <short-summary/>
|
|
109
|
+
[...]
|
|
110
|
+
</expand>
|
|
111
|
+
|
|
112
|
+
</if>
|
|
113
|
+
<else>
|
|
114
|
+
|
|
115
|
+
Set <n/> to the number of the <arg1/> approach A<n/> you recommend.
|
|
116
|
+
Output a hint with the following <template/>:
|
|
117
|
+
|
|
118
|
+
<template>
|
|
119
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ status: **auto-chosen approach A<n/>**
|
|
120
|
+
</template>
|
|
121
|
+
|
|
122
|
+
</else>
|
|
123
|
+
|
|
124
|
+
</define>
|
|
125
|
+
|
|
126
|
+
<define name="code-next-dispatch">
|
|
127
|
+
|
|
128
|
+
Treat <getopt-option-next/> as a comma-separated chronological
|
|
129
|
+
list of pre-selected next-step tokens. *Peek* the *first* token
|
|
130
|
+
as <head/> (or `none` if the list is `none`/empty).
|
|
131
|
+
Set <args>--int-reuse-task</args>.
|
|
132
|
+
|
|
133
|
+
1. <if condition="<head/> is equal `DONE`">
|
|
134
|
+
Consume the head: set <getopt-option-next/> to the remaining
|
|
135
|
+
tokens (joined back with `,`, or `none` if empty). `DONE`
|
|
136
|
+
means the freshly composed plan is finalized as-is, so do
|
|
137
|
+
*not* hand off to `ase-task-edit`. Only output the following
|
|
138
|
+
<template/> and then *STOP*. Do *not* implement the plan.
|
|
139
|
+
|
|
140
|
+
<template>
|
|
141
|
+
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan finalized -- done**
|
|
142
|
+
</template>
|
|
143
|
+
</if>
|
|
144
|
+
|
|
145
|
+
2. <elseif condition="<head/> is equal `IMPLEMENT`">
|
|
146
|
+
Consume the head: set <getopt-option-next/> to the remaining
|
|
147
|
+
tokens (joined back with `,`, or `none` if empty).
|
|
148
|
+
<if condition="<getopt-option-next/> is not equal `none`">
|
|
149
|
+
Set <args><args/> --next <getopt-option-next/></args>
|
|
150
|
+
</if>
|
|
151
|
+
Call the tool `Skill(skill: "ase:ase-task-implement", args: "<args/>")`
|
|
152
|
+
to *implement* the freshly composed plan, bypassing `ase-task-edit`.
|
|
153
|
+
</elseif>
|
|
154
|
+
|
|
155
|
+
3. <elseif condition="<head/> is equal `PREFLIGHT`">
|
|
156
|
+
Consume the head: set <getopt-option-next/> to the remaining
|
|
157
|
+
tokens (joined back with `,`, or `none` if empty).
|
|
158
|
+
<if condition="<getopt-option-next/> is not equal `none`">
|
|
159
|
+
Set <args><args/> --next <getopt-option-next/></args>
|
|
160
|
+
</if>
|
|
161
|
+
Call the tool `Skill(skill: "ase:ase-task-preflight", args: "<args/>")`
|
|
162
|
+
to *preflight* the freshly composed plan, bypassing `ase-task-edit`.
|
|
163
|
+
</elseif>
|
|
164
|
+
|
|
165
|
+
4. <elseif condition="<head/> is equal `GRILL`">
|
|
166
|
+
Consume the head: set <getopt-option-next/> to the remaining
|
|
167
|
+
tokens (joined back with `,`, or `none` if empty). `GRILL`
|
|
168
|
+
is this skill's own dispatch token, *not* part of
|
|
169
|
+
`ase-task-grill`'s `--next` vocabulary, so it must be
|
|
170
|
+
stripped here rather than forwarded. All remaining tokens are
|
|
171
|
+
`ase-task-grill`'s own vocabulary and are forwarded verbatim.
|
|
172
|
+
<if condition="<getopt-option-next/> is not equal `none`">
|
|
173
|
+
Set <args><args/> --next <getopt-option-next/></args>
|
|
174
|
+
</if>
|
|
175
|
+
Call the tool `Skill(skill: "ase:ase-task-grill", args: "<args/>")`
|
|
176
|
+
to *grill* the freshly composed plan, bypassing `ase-task-edit`.
|
|
177
|
+
</elseif>
|
|
178
|
+
|
|
179
|
+
5. <else>
|
|
180
|
+
Hand off to `ase-task-edit`.
|
|
181
|
+
<if condition="<head/> is equal `EDIT`">
|
|
182
|
+
Consume the head: set <getopt-option-next/> to the remaining
|
|
183
|
+
tokens (joined back with `,`, or `none` if empty). `EDIT`
|
|
184
|
+
is this skill's own dispatch token, *not* part of
|
|
185
|
+
`ase-task-edit`'s `--next` vocabulary, so it must be
|
|
186
|
+
stripped here rather than forwarded.
|
|
187
|
+
</if>
|
|
188
|
+
All remaining tokens are `ase-task-edit`'s own vocabulary
|
|
189
|
+
and are forwarded verbatim, so `ase-task-edit` consumes its
|
|
190
|
+
own head itself.
|
|
191
|
+
<if condition="<getopt-option-next/> is not equal `none`">
|
|
192
|
+
Set <args><args/> --next <getopt-option-next/></args>
|
|
193
|
+
</if>
|
|
194
|
+
Then call the tool `Skill(skill: "ase:ase-task-edit", args: "<args/>")`.
|
|
195
|
+
</else>
|
|
196
|
+
|
|
197
|
+
</define>
|
|
@@ -62,29 +62,30 @@ Task Skill Common Steps
|
|
|
62
62
|
|
|
63
63
|
<if condition="
|
|
64
64
|
<getopt-option-int-reuse-task/> is equal `true`
|
|
65
|
-
*and*
|
|
65
|
+
*and* an `ase_task_save(id: '<ase-task-id/>', ...)` tool call
|
|
66
66
|
exists earlier in the current session
|
|
67
67
|
">
|
|
68
|
-
Set <text/> to the `text` *
|
|
68
|
+
Set <text/> to the `text` *argument* of the most recent
|
|
69
69
|
`ase_task_save(id: '<ase-task-id/>', ...)` tool call -- this is
|
|
70
|
-
the
|
|
71
|
-
with the `text` *
|
|
70
|
+
the *authoring form* of the plan and *MUST NOT* be confused
|
|
71
|
+
with the `text` *output* field of that call -- *without*
|
|
72
72
|
calling `ase_task_load` again. Set <status>plan
|
|
73
73
|
reused</status>. Do not output anything.
|
|
74
74
|
</if>
|
|
75
75
|
<else>
|
|
76
76
|
Call the `ase_task_load(id: "<ase-task-id/>")` tool of the
|
|
77
|
-
`ase` MCP server to load the current task plan content
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
call.
|
|
77
|
+
`ase` MCP server to load the current task plan content in its
|
|
78
|
+
*authoring form* -- the `variant` argument defaults to `source`
|
|
79
|
+
-- and set <text/> to the `text` output field of this
|
|
80
|
+
`ase_task_load` tool call. Do not output anything related to
|
|
81
|
+
this MCP tool call. Set <status>plan loaded</status>.
|
|
81
82
|
</else>
|
|
82
83
|
|
|
83
84
|
- If <text/> starts with `ERROR:` or `WARNING:`:
|
|
84
85
|
Set <task-content></task-content> (set task content to empty).
|
|
85
86
|
Set <words/> to "0".
|
|
86
87
|
|
|
87
|
-
- If <text/>
|
|
88
|
+
- If <text/> does NOT start with `ERROR:` and NOT with `WARNING:`:
|
|
88
89
|
Set <task-content><text/></task-content> (set task content to text).
|
|
89
90
|
Calculate the number of words <words/> of <task-content/>.
|
|
90
91
|
|
|
@@ -101,19 +102,20 @@ Only output the following <template/>:
|
|
|
101
102
|
Update <timestamp-modified/> with the current time in ISO-style
|
|
102
103
|
format, which has to be determined by calling the
|
|
103
104
|
`ase_timestamp(format: "yyyy-LL-dd HH:mm")` tool of the `ase`
|
|
104
|
-
MCP server and
|
|
105
|
+
MCP server and using the `text` field of its response. If
|
|
105
106
|
<timestamp-created/> is still unset (because the plan content
|
|
106
|
-
had no `Created:`
|
|
107
|
+
had no `Created:` frontmatter key), set
|
|
107
108
|
<timestamp-created><timestamp-modified/></timestamp-created>
|
|
108
109
|
(fall back to the modified timestamp). Re-insert the current
|
|
109
110
|
<ase-task-id/>, the original <timestamp-created/>, and the
|
|
110
|
-
refreshed <timestamp-modified/> into
|
|
111
|
+
refreshed <timestamp-modified/> into the frontmatter keys `Id:`,
|
|
112
|
+
`Created:`, and `Modified:` of <task-content/> and calculate
|
|
111
113
|
the number of words <words/> of <task-content/>.
|
|
112
114
|
|
|
113
115
|
Call the `ase_task_save(id: "<ase-task-id/>", text:
|
|
114
116
|
"<task-content/>")` tool of the `ase` MCP server to save the task
|
|
115
|
-
plan content
|
|
116
|
-
except the following <template/>:
|
|
117
|
+
plan content in its *authoring form*. Do not output anything
|
|
118
|
+
related to this MCP call except the following <template/>:
|
|
117
119
|
|
|
118
120
|
<template>
|
|
119
121
|
⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **<arg1/>**
|
|
@@ -142,7 +144,7 @@ except the following <template/>:
|
|
|
142
144
|
⧉ **ASE**: ☻ skill: **<arg1/>**, ▶ ERROR: invalid `--next` token: **<head/>**
|
|
143
145
|
</template>
|
|
144
146
|
|
|
145
|
-
-
|
|
147
|
+
- Else, i.e. <getopt-option-next/> was *originally* equal to `none`:
|
|
146
148
|
|
|
147
149
|
In the following, you *MUST* *NOT* use your built-in
|
|
148
150
|
<user-dialog-tool/> tool! Instead, you *MUST* just show a
|
|
@@ -13,7 +13,7 @@ which boosts you to an expert-level Software Engineering AI agent.
|
|
|
13
13
|
- Do *not* use braces around single-statement blocks in "if" and "while" constructs unless the language requires them.
|
|
14
14
|
- Do *not* insist on early "return" in "if" blocks, if an "else" block exists.
|
|
15
15
|
- Do *not* remove any whitespace in the code formatting -- keep whitespace aligned with code base.
|
|
16
|
-
- Do *not* produce any trailing
|
|
16
|
+
- Do *not* produce any trailing whitespace on any lines.
|
|
17
17
|
- Do *not* guess missing tool call parameters or fill them with invented placeholder values.
|
|
18
18
|
|
|
19
19
|
## Commandments
|
|
@@ -24,7 +24,7 @@ which boosts you to an expert-level Software Engineering AI agent.
|
|
|
24
24
|
- Assume your *internal knowledge of dependencies* (libraries, frameworks, tools, and their implementations)
|
|
25
25
|
is *outdated*; always verify the current API, version, and usage pattern against the local sources
|
|
26
26
|
or the web before writing any code against them.
|
|
27
|
-
- Before proposing any code changes, explain *WHAT* the proposed changes do and *WHY*
|
|
27
|
+
- Before proposing any code changes, explain *WHAT* the proposed changes do and *WHY* they are necessary.
|
|
28
28
|
- Use *concise* and *type-safe code* only.
|
|
29
29
|
- Use *precise* and *surgical code changes* only.
|
|
30
30
|
- Be very *pedantic* on code style.
|
|
@@ -36,7 +36,7 @@ which boosts you to an expert-level Software Engineering AI agent.
|
|
|
36
36
|
- Always use *parentheses around arrow function parameters*, even for a single parameter.
|
|
37
37
|
- Make a line break before the keywords "else", "catch", and "finally".
|
|
38
38
|
- Try to *vertically align similar operators* on consecutive, similar lines.
|
|
39
|
-
- Place spaces after opening and before closing
|
|
39
|
+
- Place spaces after opening and before closing square brackets
|
|
40
40
|
(except for array access and array types) and braces (except for regular expression ranges).
|
|
41
41
|
- Use *double-quotes* (`"[...]"`) instead of single-quotes (`'[...]'`) for all strings.
|
|
42
42
|
- Use K&R coding style with *opening braces* at the end of lines and *closing braces* at the beginning of lines.
|
|
@@ -6,9 +6,9 @@ Control Flow Constructs
|
|
|
6
6
|
<define name="<define-name/>"><define-body/></define>:
|
|
7
7
|
|
|
8
8
|
This specifies a *reusable definition* named <define-name/> and
|
|
9
|
-
|
|
9
|
+
a <define-body/> which can contain arbitrary information with
|
|
10
10
|
optional `<args/>` (or alternatively, individual `<arg1/>`,
|
|
11
|
-
`<arg2/>`, etc) and optional `<content/>` references from
|
|
11
|
+
`<arg2/>`, etc.) and optional `<content/>` references from
|
|
12
12
|
subsequent <expand/> calls.
|
|
13
13
|
This construct is expanded into nothing.
|
|
14
14
|
Do not output anything.
|
|
@@ -20,7 +20,7 @@ Control Flow Constructs
|
|
|
20
20
|
construct is expanded to the <define-body/> of <define/> with
|
|
21
21
|
`<args/>` substituted with `<expand-arg1/> <expand-arg2/> [...]`,
|
|
22
22
|
`<arg1/>` substituted with <expand-arg1/>, `<arg2/>` substituted
|
|
23
|
-
with <expand-arg2/>, etc
|
|
23
|
+
with <expand-arg2/>, etc., and `<content/>` substituted with
|
|
24
24
|
<expand-content/>. Do not output anything else.
|
|
25
25
|
|
|
26
26
|
- *IMPORTANT*: You *MUST* honor the following control flow construct:
|
|
@@ -47,7 +47,7 @@ Control Flow Constructs
|
|
|
47
47
|
<if condition="<if-condition/>"><if-body/></if>:
|
|
48
48
|
|
|
49
49
|
This specifies a simple condition which is expanded to <if-body/>
|
|
50
|
-
if <if-condition/> is met, or to empty string if <if-condition/> is
|
|
50
|
+
if <if-condition/> is met, or to the empty string if <if-condition/> is
|
|
51
51
|
*not* met. It can be optionally followed by one or more <elseif/>
|
|
52
52
|
constructs and/or one final <else/> construct. Do not output anything else.
|
|
53
53
|
|
|
@@ -112,11 +112,11 @@ Control Flow Constructs
|
|
|
112
112
|
anything else.
|
|
113
113
|
|
|
114
114
|
- *IMPORTANT*: You *MUST* honor the following control flow construct:
|
|
115
|
-
<agent-consolidation [group=<agent-group/>]
|
|
115
|
+
<agent-consolidation [group=<agent-group/>]/>:
|
|
116
116
|
|
|
117
117
|
This specifies the merging of all the Git WorkTrees created by the
|
|
118
|
-
<agent/> calls
|
|
119
|
-
<agent-group/> or
|
|
118
|
+
<agent/> calls which either are identified with the unique group
|
|
119
|
+
<agent-group/> or occur in the last <parallel/> section
|
|
120
120
|
of the context. After merging a single Git WorkTree, remove the Git
|
|
121
121
|
WorkTree.
|
|
122
122
|
|
|
@@ -63,7 +63,7 @@ following procedure:
|
|
|
63
63
|
|
|
64
64
|
<text>
|
|
65
65
|
<text/>
|
|
66
|
-
<
|
|
66
|
+
<label-key/> ▶ <label-text/><label-pad/> <description/>
|
|
67
67
|
</text>
|
|
68
68
|
|
|
69
69
|
<if condition="<keys/> is empty">
|
|
@@ -82,7 +82,7 @@ following procedure:
|
|
|
82
82
|
</else>
|
|
83
83
|
|
|
84
84
|
<if condition="<opts/> contains `--other` and does *not* contain `--no-other`">
|
|
85
|
-
Set <hint>Please choose *one* option by typing <keys/>, or other free-text instruction.</hint>.
|
|
85
|
+
Set <hint>Please choose *one* option by typing <keys/>, or any other free-text instruction.</hint>.
|
|
86
86
|
</if>
|
|
87
87
|
<else>
|
|
88
88
|
Set <hint>Please choose *one* option by typing <keys/>.</hint>.
|
|
@@ -93,7 +93,7 @@ following procedure:
|
|
|
93
93
|
<text>
|
|
94
94
|
<ase-tpl-boxed title="DIALOG" subtitle="<question-label/>">
|
|
95
95
|
|
|
96
|
-
|
|
96
|
+
**<question-description/>**
|
|
97
97
|
|
|
98
98
|
<text/>
|
|
99
99
|
|
|
@@ -125,7 +125,8 @@ following procedure:
|
|
|
125
125
|
otherwise indicates that the user doesn't want to proceed,
|
|
126
126
|
or the user declined to answer the question, or that
|
|
127
127
|
the dialog was cancelled, rejected or skipped, set
|
|
128
|
-
<result>CANCEL</result
|
|
128
|
+
<result>CANCEL</result> and *SKIP* all remaining steps
|
|
129
|
+
2.3.3 - 2.3.4 of this dispatch.
|
|
129
130
|
|
|
130
131
|
3. Otherwise, determine the selected <label/>
|
|
131
132
|
by mapping the <result/> (usually containing one of the
|
|
@@ -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
|