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.
- package/package.json +1 -1
- package/packs/solution-architect/skills/interactive-diagram/SKILL.md +37 -9
- package/packs/solution-architect/skills/interactive-diagram/evals/evals.json +90 -0
- package/packs/solution-architect/skills/interactive-diagram/evals/files/10/build-4127-timing.json +179 -0
- package/packs/solution-architect/skills/interactive-diagram/evals/files/11/src/org/example/greenhouse/AbstractSensor.java +36 -0
- package/packs/solution-architect/skills/interactive-diagram/evals/files/11/src/org/example/greenhouse/AlertService.java +15 -0
- package/packs/solution-architect/skills/interactive-diagram/evals/files/11/src/org/example/greenhouse/Greenhouse.java +36 -0
- package/packs/solution-architect/skills/interactive-diagram/evals/files/11/src/org/example/greenhouse/Sensor.java +10 -0
- package/packs/solution-architect/skills/interactive-diagram/evals/files/11/src/org/example/greenhouse/SoilMoistureSensor.java +25 -0
- package/packs/solution-architect/skills/interactive-diagram/evals/files/11/src/org/example/greenhouse/TemperatureSensor.java +19 -0
- package/packs/solution-architect/skills/interactive-diagram/evals/files/11/src/org/example/greenhouse/Zone.java +26 -0
- package/packs/solution-architect/skills/interactive-diagram/evals/files/6/notes.txt +7 -0
- package/packs/solution-architect/skills/interactive-diagram/evals/files/6/trace-quote-slow.jsonl +13 -0
- package/packs/solution-architect/skills/interactive-diagram/evals/files/7/oncall-notes.md +16 -0
- package/packs/solution-architect/skills/interactive-diagram/evals/files/7/system-log.txt +14 -0
- package/packs/solution-architect/skills/interactive-diagram/evals/files/8/run-4471.json +151 -0
- package/packs/solution-architect/skills/interactive-diagram/evals/files/9/chat-export.txt +16 -0
- package/packs/solution-architect/skills/interactive-diagram/evals/files/9/lesson-sync.log +24 -0
- package/packs/solution-architect/skills/interactive-diagram/evals/files/9/ticket-8812.csv +6 -0
- package/packs/solution-architect/skills/interactive-diagram/examples/checkout-map.html +25 -8
- package/packs/solution-architect/skills/interactive-diagram/examples/checkout-trace.html +203 -0
- package/packs/solution-architect/skills/interactive-diagram/examples/checkout-trace.json +110 -0
- package/packs/solution-architect/skills/interactive-diagram/examples/incident-timeline.html +203 -0
- package/packs/solution-architect/skills/interactive-diagram/examples/incident-timeline.json +21 -0
- package/packs/solution-architect/skills/interactive-diagram/examples/inputs/incident/oncall-notes.md +14 -0
- package/packs/solution-architect/skills/interactive-diagram/examples/inputs/trace/checkout-trace.jsonl +9 -0
- package/packs/solution-architect/skills/interactive-diagram/examples/leave-approval.html +25 -8
- package/packs/solution-architect/skills/interactive-diagram/manifest.json +2 -2
- package/packs/solution-architect/skills/interactive-diagram/reference.md +86 -6
- 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 `
|
|
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
|
|
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
|
|
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,
|
|
103
|
-
|
|
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
|