@rse/ase 0.9.19 → 0.9.21

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/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "homepage": "http://github.com/rse/ase",
7
7
  "repository": { "url": "git+https://github.com/rse/ase.git", "type": "git" },
8
8
  "bugs": { "url": "http://github.com/rse/ase/issues" },
9
- "version": "0.9.19",
9
+ "version": "0.9.21",
10
10
  "license": "GPL-3.0-only",
11
11
  "author": {
12
12
  "name": "Dr. Ralf S. Engelschall",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ase",
3
- "version": "0.9.19",
3
+ "version": "0.9.21",
4
4
  "description": "Agentic Software Engineering (ASE)",
5
5
  "keywords": [ "agentic", "software", "engineering" ],
6
6
  "homepage": "https://ase.tools",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ase",
3
- "version": "0.9.19",
3
+ "version": "0.9.21",
4
4
  "description": "Agentic Software Engineering (ASE)",
5
5
  "keywords": [ "agentic", "software", "engineering" ],
6
6
  "homepage": "https://ase.tools",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ase",
3
- "version": "0.9.19",
3
+ "version": "0.9.21",
4
4
  "description": "Agentic Software Engineering (ASE)",
5
5
  "keywords": [ "agentic", "software", "engineering" ],
6
6
  "homepage": "https://ase.tools",
@@ -9,10 +9,11 @@ and the "how" of the Software Engineering project.
9
9
 
10
10
  Each **Artifact** of the **Artifact Set**
11
11
  **Architecture (ARCH)** is stored under
12
- `docs/arch/ARCH-<artifact-no/>-<artifact-id/>-<artifact-slug/>.md`,
13
- relative to the project root directory, with <artifact-no/> being the
14
- zero-padded, two-digit sequence number of the **Artifact** (starting at
15
- `01`) according to the order of the **Artifact** list below, and with
12
+ `<basedir/>/ARCH-<artifact-no/>-<artifact-id/>-<artifact-slug/>.md`,
13
+ relative to the project root directory, with <basedir/> being the
14
+ `project.artifact.arch.basedir` config variable, <artifact-no/> being
15
+ the zero-padded, two-digit sequence number of the **Artifact** (starting
16
+ at `01`) according to the order of the **Artifact** list below, and with
16
17
  <artifact-slug/> being derived from <artifact-name/> (see below) by
17
18
  Pascal-casing each word (upper-casing its first letter) and using `-`
18
19
  characters instead of spaces (e.g. `Context-View`).
@@ -74,6 +75,12 @@ distinct **Artifact**s (listed under their <artifact-name/> and their
74
75
  The major decisions related to the architecture, each recording the
75
76
  forces at play, the chosen response, and the reasoning that justifies it.
76
77
 
78
+ 10. **Technology Stack (TS)**:
79
+ The concrete technology products the solution is built upon, organized
80
+ by tier and lifecycle phase, recording for each component its chosen
81
+ product, its purpose, and the alternatives that were considered but not
82
+ chosen.
83
+
77
84
  The **Artifact**s have the following cross-references:
78
85
 
79
86
  ```text
@@ -89,6 +96,8 @@ ARCH-08-QP Quality Perspectives ──(affects)─► ARCH-02-FV Functionalit
89
96
  ARCH-08-QP Quality Perspectives ──(affects)─► ARCH-06-DP Deployment View
90
97
  ARCH-09-DR Decision Record ──(affects)─► ARCH-02-FV Functionality View
91
98
  ARCH-09-DR Decision Record ──(affects)─► ARCH-06-DP Deployment View
99
+ ARCH-10-TS Technology Stack ──(realizes)─► ARCH-02-FV Functionality View
100
+ ARCH-10-TS Technology Stack ──(realizes)─► ARCH-06-DP Deployment View
92
101
  ```
93
102
 
94
103
  Context View (CV)
@@ -897,3 +906,262 @@ forces at play, the chosen response, and the reasoning that justifies it.
897
906
  - **Rejected alternatives when the rejection is non-obvious.** If
898
907
  you considered GraphQL and picked REST for subtle reasons, record it -
899
908
  otherwise someone will suggest GraphQL again in six months.
909
+
910
+ Technology Stack (TS)
911
+ ---------------------
912
+
913
+ The concrete technology products the solution is built upon, organized by
914
+ tier and lifecycle phase, recording for each component its chosen product,
915
+ its purpose, and the alternatives that were considered but not chosen.
916
+
917
+ - Format:
918
+
919
+ <format>
920
+
921
+ # ARCHITECTURE: TECHNOLOGY STACK (ARCH-TS)
922
+
923
+ ✳ Created: **<timestamp-created/>**
924
+ ✎ Modified: **<timestamp-modified/>**
925
+
926
+ <arch-ts-component/>
927
+ <arch-ts-component/>
928
+ [...]
929
+
930
+ </format>
931
+
932
+ - <arch-ts-component/> format:
933
+
934
+ <format>
935
+
936
+ ## COMPONENT: <arch-ts-component-name/> <a id="ARCH-TS-<arch-ts-component-id/>"></a>
937
+
938
+ - When: <arch-ts-component-when/>
939
+ - Tier: <arch-ts-component-tier/>
940
+ - Coverage: <arch-ts-component-coverage/>
941
+ - Product: <arch-ts-component-product/>
942
+ - Realizes: <arch-ts-component-element/>[, ...]
943
+ - Alternatives: <arch-ts-component-alternative/>[, ...]
944
+
945
+ <arch-ts-component-description/>,
946
+ **BECAUSE** <arch-ts-component-rationale/>.
947
+
948
+ </format>
949
+
950
+ - <arch-ts-component/> details:
951
+
952
+ - <arch-ts-component-id/>: per-artifact unique "slug" of always 1-3
953
+ lower-cased words (concatenated with "-" characters and
954
+ in total not longer than 30 characters), derived from
955
+ <arch-ts-component-name/>.
956
+
957
+ - <arch-ts-component-name/> is a short (2-5 word) summary of the
958
+ technology component (e.g. `UI Framework`, `Web Server`, `Relational
959
+ Database`).
960
+
961
+ - <arch-ts-component-when/> is the lifecycle phase in which the
962
+ component is relevant, one of:
963
+
964
+ - `Build-Time`: Used during development, compilation, or packaging.
965
+ - `Run-Time`: Used while the solution executes in production.
966
+
967
+ - <arch-ts-component-tier/> is the architectural tier the component
968
+ belongs to, one of:
969
+
970
+ - `Client`: Runs on the client side (e.g. browser, desktop, mobile).
971
+ - `Server`: Runs on the server side (e.g. backend, application, API).
972
+
973
+ - <arch-ts-component-coverage/> is either one or more of the
974
+ *Client Aspects* or one or more of the *Server Aspects* defined
975
+ below. The general goal is to achieve a maximum coverage of all
976
+ aspects per <arch-ts-component-tier/> with the minimum total
977
+ number of <arch-ts-component-product/>.
978
+
979
+ - <arch-ts-component-product/> is the concrete product, library, or
980
+ framework chosen for this component (e.g. `VueJS`, `Node.js`,
981
+ `PostgreSQL`).
982
+
983
+ - <arch-ts-component-element/> is an `ARCH-FV-<arch-fv-component-id/>`
984
+ or `ARCH-DP-<arch-dp-node-id/>` reference to the functional element
985
+ or deployment node this product realizes.
986
+
987
+ - <arch-ts-component-alternative/> is a product that would also fit
988
+ this component but was not chosen (e.g. `React`, `Svelte`).
989
+
990
+ - <arch-ts-component-description/> is a concise paragraph (1-3
991
+ sentences) of prose describing how the product is used within the
992
+ solution and how it fits into the overall technology stack.
993
+
994
+ - <arch-ts-component-rationale/> is the 1-sentence rationale ("why")
995
+ for choosing this product over the alternatives.
996
+
997
+ - In case the element reference is not present, the
998
+ entire `- Realizes:` bullet point is omitted.
999
+
1000
+ - In case no alternatives were considered, the
1001
+ entire `- Alternatives:` bullet point is omitted.
1002
+
1003
+ - In case the rationale is not present, the
1004
+ entire `, **BECAUSE** [...]` clause is omitted.
1005
+
1006
+ - The known *Client Aspects* which usually have to covered (at least for
1007
+ clients in a Rich-Client architecture):
1008
+
1009
+ - **Interface Theme**:
1010
+ Style Reset, Shape, Color, Gradient, Shadow, Font, Icon.
1011
+
1012
+ - **Interface Widgets**:
1013
+ Icon, Label, Text Paragraph, Image, Form, Text-Field, Text-Area,
1014
+ Date Picker, Toggle, Radio Button, Checkbox, Select List, Slider,
1015
+ Progress Bar, Hyperlink, Popup Menu, Dropdown Menu, Toolbar, Tooltip,
1016
+ Tab, Pill, Breadcrumb, Pagination, Badge, Alert, Panel, Modal, Table,
1017
+ Scrollbar, Carousel.
1018
+
1019
+ - **Interface Layouting**:
1020
+ Responsive Design, Media Query, Frame, Grid, Padding, Border,
1021
+ Margin, Alignment, Force, Magnetism.
1022
+
1023
+ - **Interface Effects**:
1024
+ Transition, Transformation, Keyframes, Easing Function, Sound
1025
+ Effect, Physics.
1026
+
1027
+ - **Interface Interactions**:
1028
+ Mouse, Keyboard, Touchscreen, Gesture, Clipboard, Drag & Drop.
1029
+
1030
+ - **Interface States**:
1031
+ Rendered, Enabled, Visible, Focused, Warning, Error, Floating.
1032
+
1033
+ - **Interface Mask**:
1034
+ Markup Loading, Markup Generation, Virtual DOM, Text, Bitmaps,
1035
+ Vectors, 2D/3D Canvas, Accessibility.
1036
+
1037
+ - **Interface Internationalization**:
1038
+ Text Internationalization (I18N).
1039
+
1040
+ - **Data Conversion**:
1041
+ Value Formatting, Value Parsing, Localization (L10N).
1042
+
1043
+ - **Data Binding**:
1044
+ Reactive, Observer, Unidirectional, Bidirectional, Incremental.
1045
+
1046
+ - **Presentation Model**:
1047
+ Parameter Value, Command Value, State Value, Data Value, Event
1048
+ Value, Value Validation, Presentation Logic.
1049
+
1050
+ - **Dialog Navigation**:
1051
+ Deep Linking, Routing, Dialog Flow.
1052
+
1053
+ - **Dialog Automation**:
1054
+ Dialog Macros, Click-Through, Smoke Testing.
1055
+
1056
+ - **Dialog Communication**:
1057
+ Service, Event, Model, Socket, Hooks.
1058
+
1059
+ - **Dialog Life-Cycle**:
1060
+ Component States, Component State Transitions.
1061
+
1062
+ - **Dialog Structure**:
1063
+ Component, Model/View/Controller Roles, Hierarchical Composition.
1064
+
1065
+ - **State Persistence**:
1066
+ Local Storage, Cookies, Caching.
1067
+
1068
+ - **Business Model**:
1069
+ Entity, Field, Relationship, Universally Unique Identifiers (UUID).
1070
+
1071
+ - **Use-Case Authorization**:
1072
+ User Experience, Dialog Restriction, User, Group, Role, Use-Case,
1073
+ Data, Access.
1074
+
1075
+ - **Client Networking**:
1076
+ Request/Response, Synchronization, Push, Pull, Pulled-Push,
1077
+ REST, GraphQL, Authentication, Session.
1078
+
1079
+ - **Environment Detection**:
1080
+ Runtime Detection, Feature Detection.
1081
+
1082
+ - The known *Server Aspects* which usually have to covered (at least for
1083
+ servers, sometimes called Thin-Servers, in a Rich-Client architecture):
1084
+
1085
+ - **Environment Detection**:
1086
+ Detect the run-time environment, like underlying operating
1087
+ system, execution platform, network topology, feature toggles, etc.
1088
+
1089
+ - **Argument Parsing**:
1090
+ Parse options and arguments of the Command-Line Interface (CLI)
1091
+ to bootstrap application parameters.
1092
+
1093
+ - **Configuration Parsing**:
1094
+ Load and parse directives from configuration file to bootstrap
1095
+ application parameters.
1096
+
1097
+ - **Process Daemonizing**:
1098
+ Detach from the startup terminal and host process in order to run
1099
+ fully independently.
1100
+
1101
+ - **Process Management**:
1102
+ (Pre-)fork child processes and/or threads of execution and monitor
1103
+ and control them during the life-cycle of the application.
1104
+
1105
+ - **Component Management**:
1106
+ Structure the code into components, instantiate them under run-time
1107
+ and manage them in a stateful component life-cycle.
1108
+
1109
+ - **Component Communication**:
1110
+ Provide inter-component communication mechanisms like events, hooks,
1111
+ registry, etc.
1112
+
1113
+ - **Server Networking**:
1114
+ Listen to network sockets, accept connections and manage
1115
+ request/response and message communication.
1116
+
1117
+ - **Peer Information**:
1118
+ Determine unique identification and add-on information about the
1119
+ client peer.
1120
+
1121
+ - **Session Handling**:
1122
+ Manage secured per-connection sessions to keep state between
1123
+ communication requests and/or client sessions.
1124
+
1125
+ - **User Authentication**:
1126
+ Determine and validate the unique identity of the user communicating
1127
+ over the current network connection.
1128
+
1129
+ - **Request Validation**:
1130
+ Validate the syntactical and semantical compliance of the requests
1131
+ and sanitize the requests.
1132
+
1133
+ - **Request Processing**:
1134
+ Process the request by dispatching execution according to the
1135
+ provided request and determined context information.
1136
+
1137
+ - **Role Authorization**:
1138
+ Determine whether the role of the current user is allowed to execute
1139
+ the current request.
1140
+
1141
+ - **Client Networking**:
1142
+ Provide mechanisms to connect to peers over the network and perform
1143
+ request/response and/or publish/subscribe communication.
1144
+
1145
+ - **Task Scheduling**:
1146
+ Schedule and execute recurring tasks independent of regular I/O
1147
+ operations.
1148
+
1149
+ - **Execution Tracing**:
1150
+ Provide mechanisms for tracing the execution by logging event and
1151
+ measurement information at certain points of interest.
1152
+
1153
+ - **Database Access**:
1154
+ Map in-memory domain entities onto data store dependent persistent
1155
+ data structure.
1156
+
1157
+ - **Database Connectivity**:
1158
+ Locally or remotely connect the database access layer to the
1159
+ underlying data store.
1160
+
1161
+ - **Database Schema**:
1162
+ Create, update or downgrade the data schema inside the underlying
1163
+ data store.
1164
+
1165
+ - **Database Bootstrapping**:
1166
+ Create, update or downgrade both mandatory bootstrapping and optional
1167
+ domain-specific data inside the underlying data store.
@@ -9,10 +9,11 @@ and the "what" of the Software Engineering project.
9
9
 
10
10
  Each **Artifact** of the **Artifact Set**
11
11
  **Specification (SPEC)** is stored under
12
- `docs/spec/SPEC-<artifact-no/>-<artifact-id/>-<artifact-slug/>.md`,
13
- relative to the project root directory, with <artifact-no/> being the
14
- zero-padded, two-digit sequence number of the **Artifact** (starting at
15
- `01`) according to the order of the **Artifact** list below, and with
12
+ `<basedir/>/SPEC-<artifact-no/>-<artifact-id/>-<artifact-slug/>.md`,
13
+ relative to the project root directory, with <basedir/> being the
14
+ `project.artifact.spec.basedir` config variable, <artifact-no/> being
15
+ the zero-padded, two-digit sequence number of the **Artifact** (starting
16
+ at `01`) according to the order of the **Artifact** list below, and with
16
17
  <artifact-slug/> being derived from <artifact-name/> (see below) by
17
18
  Pascal-casing each word (upper-casing its first letter) and using `-`
18
19
  characters instead of spaces (e.g. `Customer-Journey`).
@@ -139,8 +139,14 @@ Skill Sequential Processing
139
139
  - *IMPORTANT*: For each <step/> you *MUST* use the `TaskUpdate` tool
140
140
  for updating its status *during* processing, once a <step/> finished.
141
141
 
142
- - *IMPORTANT*: You *MUST* sequentially execute every <step/> in
143
- a <flow/> *EXACTLY* as the instructions specify.
142
+ - *IMPORTANT*: You *MUST* *strictly sequentially* execute every <step/> in
143
+ a <flow/>. You *MUST* not implicitly skip any <step/> during
144
+ processing, except you were explicitly requested to do this or the
145
+ step is a configured to be a conditional step!
146
+
147
+ - *IMPORTANT*: You *MUST* *strictly sequentially* execute every numbered
148
+ items in a <step/>. You *MUST* not implicitly skip any numbered item during
149
+ processing, except you were explicitly requested to do this!
144
150
 
145
151
  - *IMPORTANT*: For any <step/> that specifies an *agent* in its
146
152
  `agent="[...]"` XML attribute, you *MUST* use the specified
@@ -6,7 +6,7 @@
6
6
  "homepage": "http://github.com/rse/ase",
7
7
  "repository": { "url": "git+https://github.com/rse/ase.git", "type": "git" },
8
8
  "bugs": { "url": "http://github.com/rse/ase/issues" },
9
- "version": "0.9.19",
9
+ "version": "0.9.21",
10
10
  "license": "GPL-3.0-only",
11
11
  "author": {
12
12
  "name": "Dr. Ralf S. Engelschall",
@@ -43,12 +43,6 @@ From scratch *craft* the following feature:
43
43
  Procedure
44
44
  ---------
45
45
 
46
- You *MUST* follow the following numbered items *strictly* *sequentially*!
47
- You *MUST* not skip any numbered item during processing!
48
-
49
- You *MUST* *NOT* output anything in this entire procedure, *except* when
50
- explicitly requested by this procedure via outputs based on a <template/>!
51
-
52
46
  You *MUST* *NOT* call `Edit`, `Write`, `NotebookEdit`, or any
53
47
  filesystem-modifying tool during this entire skill. The *only*
54
48
  permitted way to persist artifacts is via `ase_task_save(...)`.
@@ -43,12 +43,6 @@ to `true`, <getopt-option-dry/> to `true`, and <getopt-option-next/> to
43
43
  Procedure
44
44
  ---------
45
45
 
46
- You *MUST* follow the following numbered items *strictly* *sequentially*!
47
- You *MUST* not skip any numbered item during processing!
48
-
49
- You *MUST* *NOT* output anything in this entire procedure, *except* when
50
- explicitly requested by this procedure via outputs based on a <template/>!
51
-
52
46
  You *MUST* *NOT* call `Edit`, `Write`, `NotebookEdit`, or any
53
47
  filesystem-modifying tool during this entire skill. The *only*
54
48
  permitted way to persist artifacts is via `ase_task_save(...)`.
@@ -43,12 +43,6 @@ to `true`, <getopt-option-dry/> to `true`, and <getopt-option-next/> to
43
43
  Procedure
44
44
  ---------
45
45
 
46
- You *MUST* follow the following numbered items *strictly* *sequentially*!
47
- You *MUST* not skip any numbered item during processing!
48
-
49
- You *MUST* *NOT* output anything in this entire procedure, *except* when
50
- explicitly requested by this procedure via outputs based on a <template/>!
51
-
52
46
  You *MUST* *NOT* call `Edit`, `Write`, `NotebookEdit`, or any
53
47
  filesystem-modifying tool during this entire skill. The *only*
54
48
  permitted way to persist artifacts is via `ase_task_save(...)`.
@@ -37,12 +37,6 @@ effort: high
37
37
  Procedure
38
38
  ---------
39
39
 
40
- You *MUST* follow the following numbered items *strictly* *sequentially*!
41
- You *MUST* not skip any numbered item during processing!
42
-
43
- You *MUST* *NOT* output anything in this entire procedure, *except* when
44
- explicitly requested by this procedure via outputs based on a <template/>!
45
-
46
40
  <flow>
47
41
 
48
42
  1. <step id="STEP 1: Resolve Input">
@@ -44,12 +44,6 @@ render a *blast-radius map*.
44
44
  Procedure
45
45
  ---------
46
46
 
47
- You *MUST* follow the following numbered items *strictly* *sequentially*!
48
- You *MUST* not skip any numbered item during processing!
49
-
50
- You *MUST* *NOT* output anything in this entire procedure, *except* when
51
- explicitly requested by this procedure via outputs based on a <template/>!
52
-
53
47
  <flow>
54
48
 
55
49
  1. <step id="STEP 1: Determine Change Set">
@@ -43,12 +43,6 @@ scan: it complements `ase-code-lint` (mechanical quality), `ase-code-analyze`
43
43
  Procedure
44
44
  ---------
45
45
 
46
- You *MUST* follow the following numbered items *strictly* *sequentially*!
47
- You *MUST* not skip any numbered item during processing!
48
-
49
- You *MUST* *NOT* output anything in this entire procedure, *except* when
50
- explicitly requested by this procedure via outputs based on a <template/>!
51
-
52
46
  <flow>
53
47
 
54
48
  1. <step id="STEP 1: Determine Change Set">
@@ -0,0 +1,191 @@
1
+ ---
2
+ name: ase-sync-import
3
+ argument-hint: "[--help|-h] [--target|-t <target>[,...]] <hint>"
4
+ description: >
5
+ Import information from foreign sources into a set of artifact kinds
6
+ (the target), generating or updating them to reflect the imported
7
+ information. Use when the user wants to "import", "ingest", or
8
+ "bring in" external sources like files, URLs, or pasted text into
9
+ artifacts like SPEC, ARCH, CODE, DOCS, TASK, INFR, or OTHR.
10
+ user-invocable: true
11
+ disable-model-invocation: false
12
+ effort: xhigh
13
+ ---
14
+
15
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-control.md
16
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md
17
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
18
+
19
+ <skill name="ase-sync-import">
20
+ Import Foreign Sources into Artifact Set
21
+ </skill>
22
+
23
+ <expand name="getopt"
24
+ arg1="ase-sync-import"
25
+ arg2="--target|-t=SPEC,ARCH">
26
+ $ARGUMENTS
27
+ </expand>
28
+
29
+ <objective>
30
+ *Import* the information of the *foreign sources* (named by the
31
+ <hint/>) into the *target* artifact kinds, by reading the foreign
32
+ sources and generating or updating the target artifacts to faithfully
33
+ reflect the imported information:
34
+ <hint><getopt-arguments/></hint>.
35
+ </objective>
36
+
37
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-format-meta.md
38
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-format-spec.md
39
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-format-arch.md
40
+ @${CLAUDE_SKILL_DIR}/../../meta/ase-format-task.md
41
+
42
+ Procedure
43
+ ---------
44
+
45
+ <flow>
46
+
47
+ 1. <step id="STEP 1: Determine Target">
48
+
49
+ 1. The recognized artifact kinds are the seven tokens `TASK`,
50
+ `SPEC`, `ARCH`, `CODE`, `DOCS`, `INFR`, and `OTHR`. Parse
51
+ <getopt-target/> as the comma-separated <target/> kind list.
52
+ Upper-case and trim every parsed kind token. Do not output
53
+ anything.
54
+
55
+ 2. <if condition="<target/> is empty">
56
+
57
+ Only output the following <template/> and then immediately *STOP*
58
+ processing the entire current skill:
59
+
60
+ <template>
61
+ ⧉ **ASE**: ☻ skill: **ase-sync-import**, ▶ ERROR: empty target artifact list
62
+ </template>
63
+
64
+ </if>
65
+
66
+ 3. If any token in <target/> is *not* one of the seven recognized
67
+ kinds, only output the following <template/> (with <kind/> set to
68
+ the first offending token) and then immediately *STOP* processing
69
+ the entire current skill:
70
+
71
+ <template>
72
+ ⧉ **ASE**: ☻ skill: **ase-sync-import**, ▶ ERROR: unknown or unsupported artifact kind: **<kind/>**
73
+ </template>
74
+
75
+ 4. <if condition="<hint/> is empty">
76
+
77
+ Only output the following <template/> and then immediately *STOP*
78
+ processing the entire current skill:
79
+
80
+ <template>
81
+ ⧉ **ASE**: ☻ skill: **ase-sync-import**, ▶ ERROR: empty source hint -- nothing to import from
82
+ </template>
83
+
84
+ </if>
85
+
86
+ 5. Report the resolved target and source hint with the following <template/>:
87
+
88
+ <template>
89
+ <ase-tpl-bullet-signal/> **TARGET**: <target/>
90
+ <ase-tpl-bullet-normal/> **SOURCE**: <hint/>
91
+ </template>
92
+
93
+ </step>
94
+
95
+ 2. <step id="STEP 2: Ingest Foreign Sources">
96
+
97
+ 1. Do not output anything in this STEP 2.
98
+
99
+ 2. Interpret the <hint/> as the description of the *foreign sources*
100
+ to import from. The foreign sources are *external* to the ASE
101
+ artifact sets and may be local files or directories, remote URLs,
102
+ pasted text passages, or references to other documents.
103
+
104
+ 3. Read or fetch all foreign sources named by the <hint/>: read local
105
+ files and directories via the `Read` tool, and fetch remote URLs
106
+ via the available web tools. Build a precise understanding of the
107
+ *information* the foreign sources represent.
108
+
109
+ </step>
110
+
111
+ 3. <step id="STEP 3: Generate or Update Artifacts">
112
+
113
+ 1. For all kinds in <target/>, call the `ase_artifact_list(kind: [
114
+ ... ])` tool of the `ase` MCP server *once*, passing the
115
+ lower-cased `kind` tokens, and read the returned `artifacts`
116
+ array of `{ kind, files }` objects to obtain the project-relative
117
+ file list per kind. Read all *existing* target artifacts to
118
+ understand their current state.
119
+
120
+ 2. Internalize and honor the artifact-format conventions:
121
+
122
+ - the artifact-set/artifact/aspect meta information (`ase-format-meta.md`),
123
+ - the `SPEC` format (`ase-format-spec.md`),
124
+ - the `ARCH` format (`ase-format-arch.md`),
125
+ - the `TASK` format (`ase-format-task.md`).
126
+
127
+ Whenever a target artifact belongs to one of these kinds, it
128
+ *MUST* be kept (or made) conformant to the corresponding format
129
+ (headings, structure, identifiers, and the `<timestamp-modified/>`
130
+ rule). The kinds `CODE`, `DOCS`, `INFR`, and `OTHR` have no
131
+ dedicated format contract and are treated as free-form.
132
+
133
+ 3. You *MUST* internalize and strictly honor the **GENERIC TENETS**,
134
+ the **CRAFTING TENETS**, and the **RECONCILIATION TENETS** of the
135
+ **ASE Tenets** when generating or updating in the following. Do
136
+ not output anything.
137
+
138
+ 4. Once call the `ase_timestamp(format: "yyyy-LL-dd HH:mm")` tool of
139
+ the `ase` MCP server to find out the current time and store it in
140
+ <timestamp-modified/>.
141
+
142
+ 5. *Generate or update* the <target/> artifact files so that they
143
+ faithfully *reflect* the information of the imported foreign
144
+ sources:
145
+
146
+ - *Generate* a target artifact that does not yet exist but is
147
+ warranted by the imported information, using the current time
148
+ for both its `Created:` and `Modified:` timestamps.
149
+
150
+ - *Update* an existing target artifact so it reflects the
151
+ imported information. Keep changes as *surgical* as possible:
152
+ change only what the imported information actually requires,
153
+ and do *not* rewrite unrelated parts of an artifact. Whenever
154
+ an existing artifact is changed and contains a `Modified:
155
+ <timestamp-modified-old/>` line, replace this with `Modified:
156
+ <timestamp-modified/>`.
157
+
158
+ Honor **No Fabrication**: never invent target content the foreign
159
+ sources do not support; if the sources are silent or ambiguous on
160
+ something the target needs, surface the gap rather than guessing.
161
+ Re-express the imported facts at the *target's* level of
162
+ abstraction (a SPEC states intent, an ARCH states structure).
163
+
164
+ Apply the generation/update directly to the target artifacts via
165
+ the `Write`/`Edit` tools.
166
+
167
+ 6. Report the performed changes with the following <template/>, listing
168
+ one bullet line per generated or updated file (with <file/> its
169
+ project-relative path and <note/> an ultra-brief description of
170
+ what was imported):
171
+
172
+ <template>
173
+ <ase-tpl-bullet-signal/> **IMPORTED ARTIFACTS**:
174
+
175
+ - `<file/>`: <note/>
176
+ [...]
177
+ </template>
178
+
179
+ <if condition="no target artifact required any change">
180
+
181
+ Only output the following <template/>:
182
+
183
+ <template>
184
+ <ase-tpl-bullet-normal/> **IMPORTED ARTIFACTS**: none -- all targets already reflect the imported sources
185
+ </template>
186
+
187
+ </if>
188
+
189
+ </step>
190
+
191
+ </flow>
@@ -0,0 +1,80 @@
1
+
2
+ ## NAME
3
+
4
+ `ase-sync-import` - Import Foreign Sources into Artifact Set
5
+
6
+ ## SYNOPSIS
7
+
8
+ `ase-sync-import`
9
+ [`--help`|`-h`]
10
+ [`--target`|`-t` *target*[,...]]
11
+ *hint*
12
+
13
+ ## DESCRIPTION
14
+
15
+ The `ase-sync-import` skill imports information from *foreign sources*
16
+ into a set of artifact kinds (the *target*), generating or updating the
17
+ target artifacts so they faithfully *reflect* the imported information.
18
+ Unlike `ase-sync-reconcile`, which syncs *between* existing ASE artifact
19
+ kinds, `ase-sync-import` brings in information from *external* sources
20
+ that live outside the ASE artifact sets.
21
+
22
+ The *foreign sources* are named by the free-form *hint* argument and may
23
+ be local files or directories, remote URLs, pasted text passages, or
24
+ references to other documents. Local files are read via the `Read` tool
25
+ and remote URLs are fetched via the available web tools.
26
+
27
+ The *target* is a comma-separated list over the seven recognized
28
+ artifact kinds `SPEC` (Specification), `ARCH` (Architecture), `CODE`
29
+ (Source Code), `DOCS` (Documentation), `TASK` (Task Plans), `INFR`
30
+ (Infrastructure), and `OTHR` (catch-all). It defaults to `SPEC,ARCH`.
31
+ The file lists for the involved kinds are resolved via the
32
+ `ase_artifact_list` MCP tool of the `ase` MCP server.
33
+
34
+ While importing, the skill honors the artifact-format conventions of
35
+ `ase-format-meta.md`, `ase-format-spec.md`, `ase-format-arch.md`, and
36
+ `ase-format-task.md`; the kinds `CODE`, `DOCS`, `INFR`, and `OTHR` have
37
+ no dedicated format contract and are treated as free-form. A target
38
+ artifact that does not yet exist but is warranted by the imported
39
+ information is *generated* from scratch, while an existing target
40
+ artifact is *surgically updated* to reflect the imported information.
41
+
42
+ ## OPTIONS
43
+
44
+ `--target`|`-t` *target*[,...]:
45
+ The comma-separated list of artifact kinds to generate or update.
46
+ Defaults to `SPEC,ARCH`. The skill errors out on an empty target or
47
+ an unknown/unsupported kind.
48
+
49
+ ## ARGUMENTS
50
+
51
+ *hint*:
52
+ The mandatory free-form description of the foreign sources to import
53
+ from (e.g. a file path, directory, URL, or pasted text). The skill
54
+ errors out on an empty hint.
55
+
56
+ ## EXAMPLES
57
+
58
+ Import a foreign requirements document into the specification:
59
+
60
+ ```text
61
+ ❯ /ase-sync-import -t SPEC docs/legacy/requirements.txt
62
+ ```
63
+
64
+ Import an external design write-up into the architecture, defaulting
65
+ both specification and architecture as targets:
66
+
67
+ ```text
68
+ ❯ /ase-sync-import https://example.com/design-notes.html
69
+ ```
70
+
71
+ Import a pasted feature description into a task plan:
72
+
73
+ ```text
74
+ ❯ /ase-sync-import -t TASK the new export feature must support CSV and JSON
75
+ ```
76
+
77
+ ## SEE ALSO
78
+
79
+ [`ase-sync-reconcile`](../ase-sync-reconcile/help.md),
80
+ [`ase-task-implement`](../ase-task-implement/help.md)
@@ -1,11 +1,12 @@
1
1
  ---
2
2
  name: ase-sync-reconcile
3
- argument-hint: "[--help|-h] <target>[,...] [<source>[,...]]"
3
+ argument-hint: "[--help|-h] [--bidirectional|-b] [--target|-t <target>[,...]] [--source|-s <source>[,...]] [<hint>]"
4
4
  description: >
5
- Reconcile one set of artifact kinds (the target) to reflect the current
6
- state of another set of artifact kinds (the source). Use when the
7
- user wants to "reconcile", "sync", "align", or "update" artifacts like
8
- SPEC, ARCH, CODE, DOCS, TASK, INFR, or OTHR against each other.
5
+ Reconcile one set of artifact kinds (the target) to reflect the
6
+ current state of another set of artifact kinds (the source), while
7
+ optionally honoring a filtering hint. Use when the user wants to
8
+ "reconcile", "sync", "align", or "update" artifacts like SPEC, ARCH,
9
+ CODE, DOCS, TASK, INFR, or OTHR against each other.
9
10
  user-invocable: true
10
11
  disable-model-invocation: false
11
12
  effort: xhigh
@@ -16,18 +17,20 @@ effort: xhigh
16
17
  @${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
17
18
 
18
19
  <skill name="ase-sync-reconcile">
19
- Reconcile Artifacts from Artifacts
20
+ Reconcile Artifact Set to Artifact Set
20
21
  </skill>
21
22
 
22
- <expand name="getopt" arg1="ase-sync-reconcile">
23
+ <expand name="getopt"
24
+ arg1="ase-sync-reconcile"
25
+ arg2="--bidirectional|-b --target|-t=CODE,DOCS,INFR,OTHR --source|-s=AUTO">
23
26
  $ARGUMENTS
24
27
  </expand>
25
28
 
26
29
  <objective>
27
30
  *Reconcile* the *target* artifact kinds to *reflect* the *current
28
31
  state* of the *source* artifact kinds, by reading the source
29
- artifacts and adjusting the target artifacts accordingly:
30
- <request><getopt-arguments/></request>.
32
+ artifacts and aligning the target artifacts accordingly:
33
+ <hint><getopt-arguments/></hint>.
31
34
  </objective>
32
35
 
33
36
  @${CLAUDE_SKILL_DIR}/../../meta/ase-format-meta.md
@@ -38,22 +41,16 @@ effort: xhigh
38
41
  Procedure
39
42
  ---------
40
43
 
41
- You *MUST* follow the following numbered items *strictly* *sequentially*!
42
- You *MUST* not skip any numbered item during processing!
43
-
44
- You *MUST* *NOT* output anything in this entire procedure, *except* when
45
- explicitly requested by this procedure via outputs based on a <template/>!
46
-
47
44
  <flow>
48
45
 
49
46
  1. <step id="STEP 1: Determine Target and Source">
50
47
 
51
48
  1. The recognized artifact kinds are the seven tokens `TASK`,
52
49
  `SPEC`, `ARCH`, `CODE`, `DOCS`, `INFR`, and `OTHR`. Parse
53
- <getopt-arguments/> as one or two whitespace-separated fields:
54
- the *first* field is the comma-separated <target/> kind list, the
55
- optional *second* field is the comma-separated <source/> kind list.
56
- Upper-case and trim every parsed kind token.
50
+ <getopt-target/> as the comma-separated <target/> kind list and
51
+ <getopt-source/> as the comma-separated <source/> kind list.
52
+ Upper-case and trim every parsed kind token. Do not output
53
+ anything.
57
54
 
58
55
  2. <if condition="<target/> is empty">
59
56
 
@@ -61,12 +58,20 @@ explicitly requested by this procedure via outputs based on a <template/>!
61
58
  processing the entire current skill:
62
59
 
63
60
  <template>
64
- ⧉ **ASE**: ☻ skill: **ase-sync-reconcile**, ▶ ERROR: missing target argument
61
+ ⧉ **ASE**: ☻ skill: **ase-sync-reconcile**, ▶ ERROR: empty target artifact list
65
62
  </template>
66
63
 
67
64
  </if>
68
65
 
69
- 3. If any token in <target/> or <source/> is *not* one of the seven
66
+ 3. <if condition="<source/> is equal 'AUTO'">
67
+
68
+ Set <source/> to the seven recognized kinds
69
+ `TASK,SPEC,ARCH,CODE,DOCS,INFR,OTHR` *minus* all kinds present
70
+ in <target/>. Do not output anything.
71
+
72
+ </if>
73
+
74
+ 4. If any token in <target/> or <source/> is *not* one of the seven
70
75
  recognized kinds, only output the following <template/> (with
71
76
  <kind/> set to the first offending token) and then immediately
72
77
  *STOP* processing the entire current skill:
@@ -75,24 +80,24 @@ explicitly requested by this procedure via outputs based on a <template/>!
75
80
  ⧉ **ASE**: ☻ skill: **ase-sync-reconcile**, ▶ ERROR: unknown artifact kind: **<kind/>**
76
81
  </template>
77
82
 
78
- 4. <if condition="<source/> is empty">
83
+ 5. <if condition="<getopt-bidirectional/> is not 'true'">
79
84
 
80
- Set <source/> to the seven recognized kinds
81
- `TASK,SPEC,ARCH,CODE,DOCS,INFR,OTHR` *minus* all kinds present
82
- in <target/> (preserving that fixed order). Do not output
83
- anything.
85
+ Remove from <source/> any kind that is also present in <target/>
86
+ (a kind is never its own source).
84
87
 
85
- </if>
88
+ <if condition="<source/> is empty">
86
89
 
87
- 5. Remove from <source/> any kind that is also present in <target/>
88
- (a kind is never its own source). If <source/> is then empty,
89
- only output the following <template/> and then immediately *STOP*
90
+ Only output the following <template/> and then immediately *STOP*
90
91
  processing the entire current skill:
91
92
 
92
93
  <template>
93
94
  ⧉ **ASE**: ☻ skill: **ase-sync-reconcile**, ▶ ERROR: empty source -- nothing to update from
94
95
  </template>
95
96
 
97
+ </if>
98
+
99
+ </if>
100
+
96
101
  6. Report the resolved target and source with the following <template/>:
97
102
 
98
103
  <template>
@@ -102,7 +107,7 @@ explicitly requested by this procedure via outputs based on a <template/>!
102
107
 
103
108
  </step>
104
109
 
105
- 2. <step id="STEP 2: Resolve and Read Artifact Files">
110
+ 2. <step id="STEP 2: Resolve and Read Artifacts">
106
111
 
107
112
  1. Do not output anything in this STEP 2.
108
113
 
@@ -112,52 +117,76 @@ explicitly requested by this procedure via outputs based on a <template/>!
112
117
  read the returned `artifacts` array of `{ kind, files }` objects
113
118
  to obtain the project-relative file list per kind.
114
119
 
115
- 3. Read all <source/> artifact files previously resolved and build a
116
- precise understanding of the *current state* they represent.
120
+ 3. <if condition="<hint/> is not empty">
121
+
122
+ Honor the filtering <hint/> to reduce the source and/or target
123
+ artifacts and/or the aspects of those artifacts you should take
124
+ into account.
125
+
126
+ </if>
127
+
128
+ 4. Read all (optionally filtered) source and target artifacts
129
+ previously resolved and build a precise understanding of the
130
+ *current state* they represent.
117
131
 
118
132
  </step>
119
133
 
120
- 3. <step id="STEP 3: Internalize Artifact Formats">
134
+ 3. <step id="STEP 3: Update Artifacts">
121
135
 
122
- 1. Do not output anything in this STEP 3.
136
+ 1. Internalize and honor the artifact-format conventions:
123
137
 
124
- 2. Internalize and honor the artifact-format conventions imported above:
125
- - the artifact-set/artifact/aspect meta information of `ase-format-meta.md`,
126
- - the `SPEC` format of `ase-format-spec.md`,
127
- - the `ARCH` format of `ase-format-arch.md`,
128
- - the `TASK` format of `ase-format-task.md`.
138
+ - the artifact-set/artifact/aspect meta information (`ase-format-meta.md`),
139
+ - the `SPEC` format (`ase-format-spec.md`),
140
+ - the `ARCH` format (`ase-format-arch.md`),
141
+ - the `TASK` format (`ase-format-task.md`).
129
142
 
130
- Whenever a target artifact belongs to one of these formatted
143
+ Whenever a target artifact belongs to one of these
131
144
  kinds, the update *MUST* keep it conformant to the
132
145
  corresponding format (headings, structure, identifiers, and the
133
146
  `<timestamp-modified/>` rule). The kinds `CODE`, `DOCS`, `INFR`,
134
147
  and `OTHR` have no dedicated format contract and are treated as
135
148
  free-form.
136
149
 
137
- </step>
150
+ 2. You *MUST* internalize and strictly honor the **GENERIC TENETS**,
151
+ the **RECONCILIATION TENETS**, the **REFACTORING TENETS**, and
152
+ the **CRAFTING TENETS** of the **ASE Tenets** when updating in
153
+ the following. Do not output anything.
154
+
155
+ 3. Once call the `ase_timestamp(format: "yyyy-LL-dd HH:mm")` tool of
156
+ the `ase` MCP server to find out the current time and store it in
157
+ <timestamp-modified/>.
158
+
159
+ 4. <if condition="<getopt-bidirectional/> is equal 'true'">
160
+
161
+ *Bidirectionally update* the <target/> and <source/> artifacts
162
+ so that they faithfully *reflect the current state* of each
163
+ other.
164
+
165
+ </if>
166
+ <else>
167
+
168
+ *Unidirectionally update* the <target/> artifact files so that
169
+ they faithfully *reflect the current state* of the <source/>
170
+ artifacts.
171
+
172
+ </else>
138
173
 
139
- 4. <step id="STEP 4: Update Target Artifacts">
174
+ Keep changes as *surgical* as possible: change only what the
175
+ input state actually requires, and do *not* rewrite unrelated
176
+ parts of an output artifact.
140
177
 
141
- 1. You *MUST* internalize and strictly honor the **GENERIC TENETS**,
142
- the **RECONCILIATION TENETS**, the **REFACTORING TENETS**, and the
143
- **CRAFTING TENETS** of the **ASE Tenets** when updating in the following. Do not
144
- output anything.
178
+ Apply the update directly to the output artifacts via the
179
+ `Write`/`Edit` tools.
145
180
 
146
- 2. *Update* the <target/> artifact files so that they faithfully
147
- *reflect the current state* of the <source/> artifacts. Apply the
148
- update *directly* to the target files via `Write`/`Edit`, keeping
149
- changes as *surgical* as possible: change only what the source
150
- state actually requires, and do *not* rewrite unrelated parts of a
151
- target artifact.
181
+ For each formatted output artifact kind, strictly honor its
182
+ format contract.
152
183
 
153
- For each formatted target kind, honor its format contract
154
- internalized in STEP 3 and, whenever a target artifact is
155
- changed, update its `<timestamp-modified/>` line via a call to
156
- the `ase_timestamp(format: "yyyy-LL-dd HH:mm")` tool of the
157
- `ase` MCP server.
184
+ Whenever an output artifact is changed and contains a `Modified:
185
+ <timestamp-modified-old/>` line, replace this with `Modified:
186
+ <timestamp-modified/>`.
158
187
 
159
- 3. Report the performed update with the following <template/>, listing
160
- one bullet line per changed target file (with <file/> its
188
+ 5. Report the performed updates with the following <template/>, listing
189
+ one bullet line per changed output file (with <file/> its
161
190
  project-relative path and <note/> an ultra-brief description of
162
191
  what was reconciled):
163
192
 
@@ -165,14 +194,15 @@ explicitly requested by this procedure via outputs based on a <template/>!
165
194
  <ase-tpl-bullet-signal/> **UPDATED ARTIFACTS**:
166
195
 
167
196
  - `<file/>`: <note/>
197
+ [...]
168
198
  </template>
169
199
 
170
- <if condition="no target artifact required any change">
200
+ <if condition="no output artifact required any change">
171
201
 
172
- Instead, only output the following <template/>:
202
+ Only output the following <template/>:
173
203
 
174
204
  <template>
175
- <ase-tpl-bullet-normal/> **UPDATED ARTIFACTS**: none -- target already reflects source state.
205
+ <ase-tpl-bullet-normal/> **UPDATED ARTIFACTS**: none -- all outputs already reflected source state
176
206
  </template>
177
207
 
178
208
  </if>
@@ -1,66 +1,89 @@
1
1
 
2
2
  ## NAME
3
3
 
4
- `ase-sync-reconcile` - Reconcile Artifacts from Artifacts
4
+ `ase-sync-reconcile` - Reconcile Artifact Set to Artifact Set
5
5
 
6
6
  ## SYNOPSIS
7
7
 
8
8
  `ase-sync-reconcile`
9
9
  [`--help`|`-h`]
10
- *target*[,...]
11
- [*source*[,...]]
10
+ [`--bidirectional`|`-b`]
11
+ [`--target`|`-t` *target*[,...]]
12
+ [`--source`|`-s` *source*[,...]]
13
+ [*hint*]
12
14
 
13
15
  ## DESCRIPTION
14
16
 
15
17
  The `ase-sync-reconcile` skill reconciles one set of artifact kinds (the
16
18
  *target*) to *reflect* the *current state* of another set of artifact
17
19
  kinds (the *source*). It reads the source artifacts and then adjusts the
18
- target artifacts *directly* and *surgically* to match the source state.
20
+ target artifacts *directly* and *surgically* to match the source state,
21
+ while optionally honoring a filtering *hint*.
19
22
 
20
23
  Both *target* and *source* are comma-separated lists over the seven
21
24
  recognized artifact kinds `SPEC` (Specification), `ARCH` (Architecture),
22
25
  `CODE` (Source Code), `DOCS` (Documentation), `TASK` (Task Plans), `INFR`
23
- (Infrastructure), and `OTHR` (catch-all). When *source* is omitted, it
24
- defaults to all seven kinds *minus* the kinds listed in *target*. A kind
25
- present in *target* is never used as its own source.
26
-
27
- The file lists for the kinds `SPEC`, `ARCH`, `CODE`, `DOCS`, `INFR`, and
28
- `OTHR` are resolved via the `ase_artifact_list` MCP tool; the `TASK` kind
29
- is resolved generically from the `.ase/task/*/plan.md` task plans. While
30
- reconciling, the skill honors the artifact-format conventions of
31
- `ase-format-meta.md`, `ase-format-spec.md`, `ase-format-arch.md`, and
32
- `ase-format-task.md`; the kinds `CODE`, `DOCS`, `INFR`, and `OTHR` are
33
- treated as free-form.
26
+ (Infrastructure), and `OTHR` (catch-all). When *source* is `auto`, it
27
+ resolves to all seven kinds *minus* the kinds listed in *target*. Unless
28
+ `--bidirectional` is given, a kind present in *target* is never used as
29
+ its own source.
30
+
31
+ The file lists for all involved kinds are resolved via the
32
+ `ase_artifact_list` MCP tool of the `ase` MCP server. While reconciling,
33
+ the skill honors the artifact-format conventions of `ase-format-meta.md`,
34
+ `ase-format-spec.md`, `ase-format-arch.md`, and `ase-format-task.md`;
35
+ the kinds `CODE`, `DOCS`, `INFR`, and `OTHR` have no dedicated format
36
+ contract and are treated as free-form.
37
+
38
+ ## OPTIONS
39
+
40
+ `--bidirectional`|`-b`:
41
+ Reconcile the *target* and *source* artifacts so that they
42
+ faithfully reflect the current state of *each other*, instead of
43
+ only updating the *target* from the *source*. With this flag, a kind
44
+ present in *target* is *not* removed from *source*.
45
+
46
+ `--target`|`-t` *target*[,...]:
47
+ The comma-separated list of artifact kinds to update. Required (the
48
+ skill errors out on an empty target).
49
+
50
+ `--source`|`-s` *source*[,...]:
51
+ The comma-separated list of artifact kinds to update *from*. The
52
+ special value `auto` resolves to all recognized kinds except those
53
+ in *target*.
34
54
 
35
55
  ## ARGUMENTS
36
56
 
37
- *target*[,...]:
38
- The comma-separated list of artifact kinds to update.
39
-
40
- *source*[,...]:
41
- The comma-separated list of artifact kinds to update *from*. When
42
- omitted, it defaults to all recognized kinds except those in *target*.
57
+ *hint*:
58
+ An optional free-form filtering hint that narrows the source and/or
59
+ target artifacts, or the aspects of those artifacts to take into
60
+ account during reconciliation.
43
61
 
44
62
  ## EXAMPLES
45
63
 
46
- Reconcile the specification to reflect the current source code:
64
+ Reconcile the code and documentation
65
+ to reflect the current specification and architecture
66
+ in a "forward engineering" approach:
47
67
 
48
68
  ```text
49
- ❯ /ase-sync-reconcile SPEC CODE
69
+ ❯ /ase-sync-reconcile -t CODE,DOCS -s SPEC,ARCH
50
70
  ```
51
71
 
52
- Reconcile specification and architecture from everything else:
72
+ Reconcile specification and architecture from everything else
73
+ in a "reverse engineering" approach:
53
74
 
54
75
  ```text
55
- ❯ /ase-sync-reconcile SPEC,ARCH
76
+ ❯ /ase-sync-reconcile -t SPEC,ARCH -s CODE,DOCS
56
77
  ```
57
78
 
58
- Reconcile the documentation from the code and the architecture:
79
+ Bidirectionally reconcile specification and architecture against
80
+ each other, limited to the authentication aspect:
59
81
 
60
82
  ```text
61
- ❯ /ase-sync-reconcile DOCS CODE,ARCH
83
+ ❯ /ase-sync-reconcile -b -t SPEC -s ARCH authentication
62
84
  ```
63
85
 
64
86
  ## SEE ALSO
65
87
 
66
- [`ase-meta-changelog`](../ase-meta-changelog/help.md), [`ase-arch-analyze`](../ase-arch-analyze/help.md), [`ase-arch-discover`](../ase-arch-discover/help.md).
88
+ [`ase-meta-changelog`](../ase-meta-changelog/help.md),
89
+ [`ase-task-implement`](../ase-task-implement/help.md)
@@ -35,12 +35,6 @@ semantics exactly.
35
35
  Procedure
36
36
  ---------
37
37
 
38
- You *MUST* follow the following numbered items *strictly* *sequentially*!
39
- You *MUST* not skip any numbered item during processing!
40
-
41
- You *MUST* *NOT* output anything in this entire procedure, *except* when
42
- explicitly requested by this procedure via outputs based on a <template/>!
43
-
44
38
  1. **Determine Task:**
45
39
 
46
40
  1. Set <instruction><getopt-arguments/></instruction> initially.
@@ -29,12 +29,6 @@ Delete a Task Plan
29
29
  Procedure
30
30
  ---------
31
31
 
32
- You *MUST* follow the following numbered items *strictly* *sequentially*!
33
- You *MUST* not skip any numbered item during processing!
34
-
35
- You *MUST* *NOT* output anything in this entire procedure, *except* when
36
- explicitly requested by this procedure via outputs based on a <template/>!
37
-
38
32
  1. **Determine Task:**
39
33
 
40
34
  1. Set <id><getopt-arguments/></id> initially, with any leading and trailing
@@ -39,12 +39,6 @@ preflight.
39
39
  Procedure
40
40
  ---------
41
41
 
42
- You *MUST* follow the following numbered items *strictly* *sequentially*!
43
- You *MUST* not skip any numbered item during processing!
44
-
45
- You *MUST* *NOT* output anything in this entire procedure, *except* when
46
- explicitly requested by this procedure via outputs based on a <template/>!
47
-
48
42
  <define name="apply-refinement">
49
43
  Treat the <instruction/> as a *refinement instruction* for
50
44
  the plan, and update <content/> in-place by *applying* the
@@ -36,12 +36,6 @@ task plan until reaching a shared understanding.
36
36
  Procedure
37
37
  ---------
38
38
 
39
- You *MUST* follow the following numbered items *strictly* *sequentially*!
40
- You *MUST* not skip any numbered item during processing!
41
-
42
- You *MUST* *NOT* output anything in this entire procedure, *except* when
43
- explicitly requested by this procedure via outputs based on a <template/>!
44
-
45
39
  1. **Determine Task:**
46
40
 
47
41
  1. Set <id><getopt-arguments/></id> initially.
@@ -35,12 +35,6 @@ with a corresponding, complete *change set*.
35
35
  Procedure
36
36
  ---------
37
37
 
38
- You *MUST* follow the following numbered items *strictly* *sequentially*!
39
- You *MUST* not skip any numbered item during processing!
40
-
41
- You *MUST* *NOT* output anything in this entire procedure, *except* when
42
- explicitly requested by this procedure via outputs based on a <template/>!
43
-
44
38
  1. **Determine Task:**
45
39
 
46
40
  1. Set <instruction><getopt-arguments/></instruction> initially.
@@ -35,12 +35,6 @@ for a corresponding, *complete source code change set*.
35
35
  Procedure
36
36
  ---------
37
37
 
38
- You *MUST* follow the following numbered items *strictly* *sequentially*!
39
- You *MUST* not skip any numbered item during processing!
40
-
41
- You *MUST* *NOT* output anything in this entire procedure, *except* when
42
- explicitly requested by this procedure via outputs based on a <template/>!
43
-
44
38
  1. **Determine Task:**
45
39
 
46
40
  1. Set <instruction><getopt-arguments/></instruction> initially.
@@ -35,12 +35,6 @@ based on the existing *WHAT* and *WHY*.
35
35
  Procedure
36
36
  ---------
37
37
 
38
- You *MUST* follow the following numbered items *strictly* *sequentially*!
39
- You *MUST* not skip any numbered item during processing!
40
-
41
- You *MUST* *NOT* output anything in this entire procedure, *except* when
42
- explicitly requested by this procedure via outputs based on a <template/>!
43
-
44
38
  1. **Determine Task:**
45
39
 
46
40
  1. Set <instruction><getopt-arguments/></instruction> initially.
@@ -29,12 +29,6 @@ Rename a Task Plan
29
29
  Procedure
30
30
  ---------
31
31
 
32
- You *MUST* follow the following numbered items *strictly* *sequentially*!
33
- You *MUST* not skip any numbered item during processing!
34
-
35
- You *MUST* *NOT* output anything in this entire procedure, *except* when
36
- explicitly requested by this procedure via outputs based on a <template/>!
37
-
38
32
  1. **Determine Task:**
39
33
 
40
34
  1. Parse <arguments><getopt-arguments/></arguments> into a whitespace-separated
@@ -31,12 +31,6 @@ View a Task Plan
31
31
  Procedure
32
32
  ---------
33
33
 
34
- You *MUST* follow the following numbered items *strictly* *sequentially*!
35
- You *MUST* not skip any numbered item during processing!
36
-
37
- You *MUST* *NOT* output anything in this entire procedure, *except* when
38
- explicitly requested by this procedure via outputs based on a <template/>!
39
-
40
34
  1. **Determine Task:**
41
35
 
42
36
  1. Set <id><getopt-arguments/></id> initially, with any leading and trailing