@arjunkhera/atlas 0.3.22 → 0.3.25
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/.claude-plugin/plugin.json +1 -1
- package/agents/artifact-renderer.md +2 -0
- package/door/cli.mjs +17 -0
- package/door/lib/design.mjs +199 -7
- package/door/lib/markdown.mjs +33 -5
- package/door/lib/ste.mjs +5 -3
- package/door/lib/view.mjs +46 -0
- package/package.json +2 -1
- package/skills/lead/SKILL.md +1 -0
- package/skills/sdlc-task/SKILL.md +2 -1
- package/skills/sdlc-task/design/README.md +40 -12
- package/skills/sdlc-task/design/parts/problem.md +18 -1
- package/skills/sdlc-task/design/parts/proposal.md +29 -1
- package/skills/sdlc-task/design/parts/states.md +17 -1
- package/skills/sdlc-task/design/parts/stories.md +43 -5
- package/skills/sdlc-task/design/parts/summary.md +2 -1
- package/skills/sdlc-task/design/parts.yaml +12 -0
- package/view/page.html +563 -0
- package/work/lib/questions.mjs +17 -56
- package/work/lib/verb-fields.mjs +3 -3
- package/work/lib/view-rules.mjs +279 -0
|
@@ -8,7 +8,7 @@ Rules:
|
|
|
8
8
|
|
|
9
9
|
1. List the states a thing moves through.
|
|
10
10
|
2. Say what moves it from each state to the next.
|
|
11
|
-
3. Draw it as a state figure.
|
|
11
|
+
3. Draw it as a state figure. The check fails the part with no figure.
|
|
12
12
|
|
|
13
13
|
Example, in a file of its own:
|
|
14
14
|
|
|
@@ -18,6 +18,22 @@ part: states
|
|
|
18
18
|
---
|
|
19
19
|
# States
|
|
20
20
|
|
|
21
|
+
```woodcut wc-state-machine
|
|
22
|
+
{
|
|
23
|
+
"label": "A test run",
|
|
24
|
+
"viewBox": [440, 90],
|
|
25
|
+
"states": [
|
|
26
|
+
{ "id": "waiting", "x": 10, "y": 30, "w": 100, "h": 32, "label": "Waiting" },
|
|
27
|
+
{ "id": "running", "x": 170, "y": 30, "w": 100, "h": 32, "label": "Running" },
|
|
28
|
+
{ "id": "red", "x": 330, "y": 30, "w": 100, "h": 32, "label": "Red", "terminal": true }
|
|
29
|
+
],
|
|
30
|
+
"transitions": [
|
|
31
|
+
{ "id": "start", "path": "M 110 46 L 168 46", "tip": [168, 46], "tipDir": [1, 0], "label": "tests start", "labelAt": [139, 22] },
|
|
32
|
+
{ "id": "fail", "path": "M 270 46 L 328 46", "tip": [328, 46], "tipDir": [1, 0], "label": "a test fails", "labelAt": [299, 22] }
|
|
33
|
+
]
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
21
37
|
| From | Event | To |
|
|
22
38
|
|---|---|---|
|
|
23
39
|
| Waiting | The tests start | Running |
|
|
@@ -6,9 +6,18 @@ Needs: Decide: optional, Flow: needed, Contract: optional, Initiative: none.
|
|
|
6
6
|
|
|
7
7
|
Rules:
|
|
8
8
|
|
|
9
|
-
1. Write
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
1. Write each story under its own heading, with a code, such as `US-1`.
|
|
10
|
+
Put the code in the Key.
|
|
11
|
+
2. Give each story a walkthrough figure. The reader steps through it and
|
|
12
|
+
sees what moves at each step. Use a woodcut figure with a scenario. Give
|
|
13
|
+
each step a title and one or two sentences. A figure of your own also
|
|
14
|
+
counts. The check fails a story with no walkthrough figure.
|
|
15
|
+
3. Give each story a worked example with real values: an `Input:` line, the
|
|
16
|
+
steps, and an `Output:` line. The check fails a story with no worked
|
|
17
|
+
example.
|
|
18
|
+
4. Pick the figure by the question it answers: `wc-sequence` for "in what
|
|
19
|
+
order", `wc-swimlane` for "who does it", `wc-flowchart` for "which
|
|
20
|
+
way", `wc-state-machine` for "what state is it in".
|
|
12
21
|
|
|
13
22
|
Example, in a file of its own:
|
|
14
23
|
|
|
@@ -20,7 +29,36 @@ part: stories
|
|
|
20
29
|
|
|
21
30
|
### US-1: a test goes red
|
|
22
31
|
|
|
23
|
-
|
|
24
|
-
|
|
32
|
+
**Input:** pull request 88 changes `src/pay.mjs`. The test `pay rounds down` fails on it.
|
|
33
|
+
|
|
34
|
+
```woodcut wc-sequence
|
|
35
|
+
{
|
|
36
|
+
"label": "US-1: a test goes red",
|
|
37
|
+
"viewBox": [460, 190],
|
|
38
|
+
"actors": [
|
|
39
|
+
{ "id": "lead", "x": 70, "label": "Lead" },
|
|
40
|
+
{ "id": "gate", "x": 230, "label": "Gate" },
|
|
41
|
+
{ "id": "owner", "x": 390, "label": "Owner" }
|
|
42
|
+
],
|
|
43
|
+
"messages": [
|
|
44
|
+
{ "id": "open", "from": "lead", "to": "gate", "y": 70, "label": "open pull request 88" },
|
|
45
|
+
{ "id": "red", "from": "gate", "to": "lead", "y": 110, "label": "1 test red", "kind": "return" },
|
|
46
|
+
{ "id": "block", "from": "gate", "to": "owner", "y": 150, "label": "merge blocked" }
|
|
47
|
+
],
|
|
48
|
+
"scenarios": [{
|
|
49
|
+
"name": "US-1",
|
|
50
|
+
"steps": [
|
|
51
|
+
{ "title": "The lead opens a pull request", "body": "Pull request 88 changes src/pay.mjs.", "active": ["lead", "open"] },
|
|
52
|
+
{ "title": "The gate runs the tests", "body": "The test pay rounds down fails.", "active": ["gate", "red"] },
|
|
53
|
+
{ "title": "The owner sees the block", "body": "The merge button stays grey and names the failing check.", "active": ["owner", "block"] }
|
|
54
|
+
]
|
|
55
|
+
}]
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
1. The lead opens pull request 88.
|
|
60
|
+
2. The gate runs the tests, and `pay rounds down` goes red.
|
|
25
61
|
3. The merge button stays blocked, and the owner sees the failing check.
|
|
62
|
+
|
|
63
|
+
**Output:** the merge button is grey. The check list shows `pay rounds down: failed`.
|
|
26
64
|
````
|
|
@@ -7,7 +7,8 @@ Needs: Decide: needed, Flow: needed, Contract: needed, Initiative: needed.
|
|
|
7
7
|
Rules:
|
|
8
8
|
|
|
9
9
|
1. Lead with the answer: what changes, for whom, and why now.
|
|
10
|
-
2. Keep it to two short paragraphs and one picture.
|
|
10
|
+
2. Keep it to two short paragraphs and one picture. The check fails a
|
|
11
|
+
Summary with no figure.
|
|
11
12
|
3. A reader who stops here knows the whole design.
|
|
12
13
|
|
|
13
14
|
Example, in a file of its own:
|
|
@@ -12,6 +12,13 @@
|
|
|
12
12
|
# none the kind does not use it
|
|
13
13
|
# shared needed when design.yaml says `shared: true`, optional when not
|
|
14
14
|
#
|
|
15
|
+
# A part may say what picture it needs (owner, 21 October 2026: "any user is
|
|
16
|
+
# a visual person, they need to see things flowing to make sense of it"):
|
|
17
|
+
# picture: one the part holds at least one figure that draws
|
|
18
|
+
# picture: each-story each story holds a walkthrough figure and a worked
|
|
19
|
+
# example, with an Input line and an Output line
|
|
20
|
+
# The check reads it whenever the part is in the folder.
|
|
21
|
+
#
|
|
15
22
|
# A design keeps no state. The tracker parts at the end are read from the
|
|
16
23
|
# tracker at build time. No part file may hold them.
|
|
17
24
|
|
|
@@ -50,6 +57,7 @@ parts:
|
|
|
50
57
|
name: Summary
|
|
51
58
|
group: start
|
|
52
59
|
holds: The answer in a few lines, and one picture.
|
|
60
|
+
picture: one
|
|
53
61
|
decide: needed
|
|
54
62
|
flow: needed
|
|
55
63
|
contract: needed
|
|
@@ -75,6 +83,7 @@ parts:
|
|
|
75
83
|
name: Problem today
|
|
76
84
|
group: decide
|
|
77
85
|
holds: What happens today, with a real example.
|
|
86
|
+
picture: one
|
|
78
87
|
decide: needed
|
|
79
88
|
flow: optional
|
|
80
89
|
contract: optional
|
|
@@ -91,6 +100,7 @@ parts:
|
|
|
91
100
|
name: Proposal
|
|
92
101
|
group: decide
|
|
93
102
|
holds: The option we pick, and how it works.
|
|
103
|
+
picture: one
|
|
94
104
|
decide: needed
|
|
95
105
|
flow: none
|
|
96
106
|
contract: none
|
|
@@ -132,6 +142,7 @@ parts:
|
|
|
132
142
|
name: Stories
|
|
133
143
|
group: flow
|
|
134
144
|
holds: One walkthrough for each story, step by step.
|
|
145
|
+
picture: each-story
|
|
135
146
|
decide: optional
|
|
136
147
|
flow: needed
|
|
137
148
|
contract: optional
|
|
@@ -156,6 +167,7 @@ parts:
|
|
|
156
167
|
name: States
|
|
157
168
|
group: flow
|
|
158
169
|
holds: The states a thing moves through, and what moves it.
|
|
170
|
+
picture: one
|
|
159
171
|
decide: none
|
|
160
172
|
flow: optional
|
|
161
173
|
contract: none
|