skilldrop-cli 0.16.22 → 0.16.23

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.
Files changed (30) hide show
  1. package/package.json +1 -1
  2. package/packs/solution-architect/skills/interactive-diagram/SKILL.md +37 -9
  3. package/packs/solution-architect/skills/interactive-diagram/evals/evals.json +90 -0
  4. package/packs/solution-architect/skills/interactive-diagram/evals/files/10/build-4127-timing.json +179 -0
  5. package/packs/solution-architect/skills/interactive-diagram/evals/files/11/src/org/example/greenhouse/AbstractSensor.java +36 -0
  6. package/packs/solution-architect/skills/interactive-diagram/evals/files/11/src/org/example/greenhouse/AlertService.java +15 -0
  7. package/packs/solution-architect/skills/interactive-diagram/evals/files/11/src/org/example/greenhouse/Greenhouse.java +36 -0
  8. package/packs/solution-architect/skills/interactive-diagram/evals/files/11/src/org/example/greenhouse/Sensor.java +10 -0
  9. package/packs/solution-architect/skills/interactive-diagram/evals/files/11/src/org/example/greenhouse/SoilMoistureSensor.java +25 -0
  10. package/packs/solution-architect/skills/interactive-diagram/evals/files/11/src/org/example/greenhouse/TemperatureSensor.java +19 -0
  11. package/packs/solution-architect/skills/interactive-diagram/evals/files/11/src/org/example/greenhouse/Zone.java +26 -0
  12. package/packs/solution-architect/skills/interactive-diagram/evals/files/6/notes.txt +7 -0
  13. package/packs/solution-architect/skills/interactive-diagram/evals/files/6/trace-quote-slow.jsonl +13 -0
  14. package/packs/solution-architect/skills/interactive-diagram/evals/files/7/oncall-notes.md +16 -0
  15. package/packs/solution-architect/skills/interactive-diagram/evals/files/7/system-log.txt +14 -0
  16. package/packs/solution-architect/skills/interactive-diagram/evals/files/8/run-4471.json +151 -0
  17. package/packs/solution-architect/skills/interactive-diagram/evals/files/9/chat-export.txt +16 -0
  18. package/packs/solution-architect/skills/interactive-diagram/evals/files/9/lesson-sync.log +24 -0
  19. package/packs/solution-architect/skills/interactive-diagram/evals/files/9/ticket-8812.csv +6 -0
  20. package/packs/solution-architect/skills/interactive-diagram/examples/checkout-map.html +25 -8
  21. package/packs/solution-architect/skills/interactive-diagram/examples/checkout-trace.html +203 -0
  22. package/packs/solution-architect/skills/interactive-diagram/examples/checkout-trace.json +110 -0
  23. package/packs/solution-architect/skills/interactive-diagram/examples/incident-timeline.html +203 -0
  24. package/packs/solution-architect/skills/interactive-diagram/examples/incident-timeline.json +21 -0
  25. package/packs/solution-architect/skills/interactive-diagram/examples/inputs/incident/oncall-notes.md +14 -0
  26. package/packs/solution-architect/skills/interactive-diagram/examples/inputs/trace/checkout-trace.jsonl +9 -0
  27. package/packs/solution-architect/skills/interactive-diagram/examples/leave-approval.html +25 -8
  28. package/packs/solution-architect/skills/interactive-diagram/manifest.json +2 -2
  29. package/packs/solution-architect/skills/interactive-diagram/reference.md +86 -6
  30. package/packs/solution-architect/skills/interactive-diagram/scripts/build_diagram.py +1025 -102
@@ -7,17 +7,20 @@ file. Nothing in the spec is a coordinate or a colour.
7
7
 
8
8
  | Field | Required | Meaning |
9
9
  |---|---|---|
10
- | `type` | yes | `architecture`, `dataflow`, `workflow`, `lifecycle`, `erd` or `sequence` |
10
+ | `type` | yes | `architecture`, `dataflow`, `workflow`, `lifecycle`, `erd`, `sequence`, `class`, `tree`, `timeline` or `waterfall` |
11
11
  | `title` | yes | What the map shows, in a few words |
12
12
  | `question` | no | The one question the map answers; shown under the title |
13
13
  | `summary` | no | The takeaway in one or two sentences; shown under the question |
14
- | `direction` | no | `LR` (default, flow left to right) or `TB` (top to bottom). ERD and sequence are always LR |
14
+ | `direction` | no | `LR` (default, flow left to right) or `TB` (top to bottom; the default for `class`). ERD, sequence, tree, timeline and waterfall have their own layouts |
15
+ | `wrap` | no | A long left-to-right flow wraps onto rows, like text, choosing the number that keeps its text largest on a laptop screen. `false` keeps one row; a number sets how many steps go on each row |
15
16
  | `groups` | no | Boxes around parts: `{"id", "label", "parent"}`. `parent` nests a group inside another |
16
- | `nodes` | yes | The parts (for `sequence`, call them `participants`) |
17
+ | `nodes` | yes | The parts. `sequence` may call them `participants`, `timeline` `events`, `waterfall` `spans`, `class` `classes` |
17
18
  | `edges` | no | The connections (for `sequence`, call them `messages`; their order is the order on the page) |
18
19
  | `story` | no | A walkthrough: `[{"text", "nodes": [...], "edges": [...]}]`, three to seven steps |
19
20
  | `frames` | no | Sequence only: `{"kind": "alt\|loop\|opt\|par", "label", "from": <message id>, "to": <message id>}` |
20
21
  | `notes` | no | Lines shown under the text version, such as what was left out |
22
+ | `answers` | no | The person's questions or guesses, answered: `[{"question", "answer", "evidence"}]` (or `"assumed": true`). Shown as a table at the top of the page; evidence is checked like any other |
23
+ | `timezone` | no | Timelines: the zone times are shown in (`UTC`, `-05:00`, `+05:30`). Default: the first event's |
21
24
  | `source_url` | no | Turns file citations into links, e.g. `https://github.com/org/repo/blob/<commit>/` |
22
25
 
23
26
  Ids are unique across groups, nodes and edges. An edge without an `id` is numbered `e1`,
@@ -53,6 +56,9 @@ Kinds:
53
56
  | Dots | `initial`, `final` (lifecycle start and end; the label is hidden unless it differs from the id) |
54
57
  | Document | `document`, `file` |
55
58
  | Table | `table`, `entity`, `view` |
59
+ | Class box | `class`, `interface`, `abstract`, `enum`, `record` (the kind is shown as a stereotype) |
60
+ | Tree items | any box kind, plus `folder`, `module`, `package`, `capability`, `feature`, `team`, `role` |
61
+ | Timeline marks | `event`, `alert`, `change`, `action` (dots), `milestone` (diamond) |
56
62
 
57
63
  ## Edges and messages
58
64
 
@@ -93,14 +99,25 @@ quote that isn't on its lines. Warnings are shown on the page and in the output:
93
99
  kinds, long labels, parts with no connections, more than 36 parts, file citations that
94
100
  weren't checked because `--repo-root` was missing.
95
101
 
102
+ For a waterfall or a timeline the script computes what the data shows and puts it at the top
103
+ of the page under **What it shows**: for a waterfall, the total, what the whole waited on most
104
+ (own work of spans on the critical path), spans that mostly wait on their children, siblings
105
+ that overlap (with the wall-clock time and the misleading sum), and spans that end after their
106
+ parent; for a timeline, the span, the longest quiet stretch, approximate times and the time
107
+ zones the sources used. Warnings about the spec are printed for whoever builds the page, never
108
+ published on it.
109
+
96
110
  `--check` runs the checks and writes nothing. `--json` prints the result as JSON:
97
- `{"ok", "nodes", "edges", "assumed", "file_citations", "verified", "errors", "warnings", "output"}`.
111
+ `{"ok", "nodes", "edges", "assumed", "file_citations", "verified", "errors", "warnings", "output", "reply_first_line"}`.
112
+ A successful build also prints `reply_first_line`: the titled link the reply opens with.
98
113
 
99
114
  ## What the page does
100
115
 
101
116
  - Pan (drag), zoom (scroll, or + and −), Fit.
102
- - Click a part: its note, detail, fields, connections in and out, and its evidence with the
103
- cited lines. From there: what it depends on, what depends on it, its neighbours.
117
+ - Click a part: its note, detail, fields or members, facts (a span's timings, an event's time,
118
+ how much a tree item contains), connections in and out, and its evidence with the cited
119
+ lines. From there: everything it reaches, everything that reaches it, its neighbours (named
120
+ for the diagram: "Everything inside it" on a tree, "What led to it" on a timeline).
104
121
  - Shift-click a second part: the path between them.
105
122
  - Find a part by name, note or column.
106
123
  - Walk through: the story, step by step (← and →); a sequence walks its messages in order.
@@ -118,6 +135,69 @@ connections only in the newer are marked added, those only in the older are draw
118
135
  through as removed, and a part whose label, kind, group or note changed is marked changed.
119
136
  Connections match on their ends and label.
120
137
 
138
+ ## Class diagrams
139
+
140
+ `classes` (or `nodes`) take `members`: `{"name": "charge(amount)", "type": "Receipt", "visibility": "+"}`
141
+ (`+`, `-`, `#`, `~`, or `public`, `private`, `protected`, `package`). Each relation in `edges`
142
+ (or `relations`) has a `kind`:
143
+
144
+ | `kind` | `from` → `to` | Drawn as |
145
+ |---|---|---|
146
+ | `inherits` | child → parent | solid line, hollow triangle at the parent |
147
+ | `implements` | class → interface | dashed line, hollow triangle at the interface |
148
+ | `composition` | whole → part | filled diamond at the whole |
149
+ | `aggregation` | whole → part | hollow diamond at the whole |
150
+ | `association` | one → the other it holds | solid line, open arrow |
151
+ | `dependency` | user → used | dashed line, open arrow |
152
+
153
+ Parents and interfaces are placed above what extends them.
154
+
155
+ ## Trees
156
+
157
+ Each item names its `parent` (the top item has none; several top items make a forest). Edges
158
+ are not used: the lines come from the parents. The page shows how many items each one
159
+ contains, and "Everything inside it" highlights a subtree.
160
+
161
+ ```json
162
+ {"type": "tree", "title": "What the payments service is made of",
163
+ "nodes": [{"id": "root", "label": "payments/", "kind": "folder", "evidence": ["payments/README.md"]},
164
+ {"id": "api", "label": "api/", "kind": "folder", "parent": "root", "evidence": ["payments/api/__init__.py"]}]}
165
+ ```
166
+
167
+ ## Timelines
168
+
169
+ Each event has `at`, and optionally `end` (drawn as a bar) and `lane` (a group id, or any
170
+ name). Times are dates or date-times (`2026-10-03`, `2026-10-03T09:12`, with or without an
171
+ offset), times of day (`09:12`), or plain numbers, but all the same way in one spec. The axis
172
+ is to scale, except that a quiet stretch longer than about a third of the whole is shortened
173
+ and marked with how long it was, so a burst of events stays readable. `edges` between events
174
+ (`caused`, `detected`) are drawn as straight links; mark them assumed unless something shows
175
+ the link. The walkthrough steps through the events in time order.
176
+
177
+ ```json
178
+ {"type": "timeline", "title": "Payment outage, 3 October",
179
+ "groups": [{"id": "alerts", "label": "Monitoring"}],
180
+ "events": [{"id": "a1", "label": "Card error rate above 5%", "at": "2026-10-03T09:19", "lane": "alerts",
181
+ "kind": "alert", "evidence": ["incident.md:12"]}]}
182
+ ```
183
+
184
+ ## Waterfalls
185
+
186
+ Each span has `start` and either `end` or `duration`, and optionally `parent`, `service` (sets
187
+ its colour) and `status` (`error` outlines it red). Numbers are in `unit` (default `ms`);
188
+ date-times work too. The page marks the critical path (the span that finished last, the one
189
+ that finished last before that one started, and so on, inside each span), and each span's
190
+ panel gives its start, duration, share of the whole and the time not covered by a child span.
191
+ A span that runs outside its parent is a warning, because clocks on two machines disagree or
192
+ the parent is wrong. The walkthrough follows the critical path.
193
+
194
+ ```json
195
+ {"type": "waterfall", "title": "Where a slow checkout spent its time", "unit": "ms",
196
+ "spans": [{"id": "root", "label": "POST /checkout", "start": 0, "end": 1840, "service": "api", "evidence": ["trace-7f3a.json"]},
197
+ {"id": "pay", "label": "stripe.PaymentIntent.create", "start": 430, "duration": 1190, "parent": "root",
198
+ "service": "stripe", "evidence": ["trace-7f3a.json"]}]}
199
+ ```
200
+
121
201
  ## Sequence example
122
202
 
123
203
  ```json