@qvac/skills 0.1.7 → 0.1.9

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/hash.js CHANGED
@@ -1,2 +1,2 @@
1
1
  // Autogenerated by scripts/build.mjs from skills/. Do not edit.
2
- export const SKILLS_HASH = '8ce2fae4970bf369'
2
+ export const SKILLS_HASH = '548f8fbd37914a47'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qvac/skills",
3
- "version": "0.1.7",
3
+ "version": "0.1.9",
4
4
  "description": "Skills for the QV.AC app — the SKILL.md tree plus a content-addressed bundle of it.",
5
5
  "type": "module",
6
6
  "main": "index.js",
@@ -17,12 +17,12 @@ metadata:
17
17
  "provider": "asana",
18
18
  "credentialKey": "asana_mcp_access_token",
19
19
  "description": "Tasks, projects, and comments",
20
- "helpUrl": "https://app.asana.com/0/my-apps",
20
+ "helpUrl": "https://developers.asana.com/docs/integrating-with-asanas-mcp-server",
21
21
  "steps": [
22
22
  "Click Connect and approve access in the browser. Approving grants access to the Asana workspace you allow."
23
23
  ],
24
24
  "configSteps": [
25
- "[Open the Asana developer console](https://app.asana.com/0/my-apps) and create an MCP app",
25
+ "[Create an Asana MCP app](https://developers.asana.com/docs/integrating-with-asanas-mcp-server). External MCP is not the required option.",
26
26
  "In OAuth settings, add the exact redirect URI shown below",
27
27
  "In \"Manage distribution\", allow the workspace you want this connection to access"
28
28
  ],
@@ -3,6 +3,29 @@ name: diagrams
3
3
  description: Draw diagrams in the chat - flowcharts, sequence, state and ER diagrams, Gantt charts, pie charts, mindmaps and timelines - written as Mermaid code blocks the app renders. Use when the user asks to draw, diagram, sketch, chart, plan, visualize, or map a process, flow, schedule, architecture, or relationship.
4
4
  aliases: [diagram, mermaid, flowchart, mindmap]
5
5
  platform: [darwin, linux, win32, ios, android]
6
+ version: 2
7
+ # Tuned on Qwen3.5-2B with an offline eval (33 prompts, mention + prose routes, reasoning on as the app
8
+ # runs it, 12k context, 180 s turn budget), judged by the app's own mermaid parser. QVAC-24436, QVAC-24502.
9
+ # A run passes when the diagram asked for parses and reaches the reply with no tool JSON beside it, or,
10
+ # for the three prompts that want a picture or a plot instead, when no diagram is drawn.
11
+ # v1: router + references/<type>.md, harness 0.2.8. 3 repeats: mention 54/99, prose 20/36, 29 skill calls
12
+ # per run - the 2B loops on the second load (hallucinated files, repeats) until the turn budget ends,
13
+ # and the app shows the raw call or "Diagram unavailable". 71-77% of drawn blocks parsed.
14
+ # v2: every recipe inline, nothing to load. Same harness, 3 repeats: mention 72/99, prose 31/36; 91-97%
15
+ # of drawn blocks parse; context 4156 / 4787 tokens against 5497 / 6317. Skill calls per run 23-35: the
16
+ # model still asks for a body it has, which @qvac/harness answers (a repeat load is acknowledged, not
17
+ # re-run; a misspelt file resolves to its nearest match). With those fixes, 3 repeats: 76/99 and 30/36,
18
+ # ~2 calls per run, context 4002 / 3771.
19
+ # Tried and dropped: the per-type size budgets from the reference files (12 nodes, 8 states, ...).
20
+ # They measured the same (79/99, 33/36 on harness main) but on a phone they cut a 40-node mind map to
21
+ # 10 nodes: the eval scores what parses, not what was left out. The state alias for a spaced name and
22
+ # the gantt `axisFormat` / `excludes weekends` headers from the same files stayed: one clause each.
23
+ # This text, harness main, 3 repeats: mention 84/99, prose 28/36; 93-96% of drawn blocks parse; context
24
+ # 3305 / 3730; ~2 skill calls per run; the ticket prompt 6 of 6.
25
+ # Not fixed. The three route-away prompts (a logo, a photo, a revenue plot) get a diagram 6-9 times
26
+ # in 9 on v2 against 4 in 9 on v1: a page that opens with "draw" draws. Four variants that reworded
27
+ # the "do not load" rule, or cut the recipes to 300 words, measured 25-55% against v1's 55% and were
28
+ # dropped.
6
29
  ---
7
30
 
8
31
  # Diagrams
@@ -15,53 +38,120 @@ never call an image tool, and never deliver it as a PDF or image file.
15
38
 
16
39
  Your reply STARTS with the fence. No preamble, no plan, no "I'll create a
17
40
  diagram showing..." - never announce or describe a diagram instead of drawing
18
- it. Decide the type silently, load its recipe, write the code block, close its
19
- fence, then add one short sentence saying what it shows - after the closing
41
+ it. Decide the type silently, pick its recipe below, write the code block, close
42
+ its fence, then add one short sentence saying what it shows - after the closing
20
43
  fence, never inside it. A complete reply looks like this:
21
44
 
22
45
  ```mermaid
23
46
  flowchart TD
24
- A["User sends a message"] --> B{"Needs a tool?"}
25
- B -->|yes| C["Run the tool"]
26
- B -->|no| D["Answer directly"]
47
+ A["First step"] --> B{"Condition?"}
48
+ B -->|yes| C["Second step"]
49
+ B -->|no| D["Other step"]
27
50
  ```
28
51
 
29
- Flow of a message through the assistant.
30
-
31
- ## Pick the Type, Then Load Its Recipe
32
-
33
- Each type's syntax lives in its own reference file, named by the Mermaid
34
- keyword. Pick the type from the ask, then call the `skill` tool with
35
- `name: "diagrams"` and `file: "references/<type>.md"` in the SAME turn you
36
- draw, BEFORE writing the fence - even when you drew another diagram earlier in
37
- this chat. Copy the recipe's syntax exactly; a diagram written from memory is
38
- the usual cause of a parse error. Each load is a real `skill` tool call -
39
- printing the call as JSON or text in your reply loads nothing. After the load,
40
- reply with the fenced block directly: no further tool calls of any kind.
41
-
42
- | The ask | Type | File |
43
- | ---------------------------------------------------- | ------------------- | --------------------------- |
44
- | steps, decisions, a process, "map / structure this" | `flowchart TD` | `references/flowchart.md` |
45
- | a pipeline left to right | `flowchart LR` | `references/flowchart.md` |
46
- | a family tree, org chart, reporting lines | `flowchart TD` | `references/flowchart.md` |
47
- | who calls whom over time, requests and replies | `sequenceDiagram` | `references/sequence.md` |
48
- | modes and transitions | `stateDiagram-v2` | `references/state.md` |
49
- | tables and their relations | `erDiagram` | `references/er.md` |
50
- | code types, classes, inheritance | `classDiagram` | `references/class.md` |
51
- | a schedule or plan with durations | `gantt` | `references/gantt.md` |
52
- | dated events in order | `timeline` | `references/timeline.md` |
53
- | shares of a whole, percentages | `pie` | `references/pie.md` |
54
- | a brainstorm, idea tree, "mindmap" | `mindmap` | `references/mindmap.md` |
55
-
56
- Use `gitGraph` ONLY when the user names it. Never use experimental or beta
57
- diagram types, and never invent a keyword a recipe does not show.
52
+ One sentence about what it shows. Copy the SHAPE of this block, never its
53
+ words - the labels come from what the user asked about.
54
+
55
+ ## Pick the Type and Draw - Nothing to Load
56
+
57
+ Every recipe is here. Pick the row that fits the ask, copy its shape, draw.
58
+ Do not call any tool: the recipe you need is already on this page.
59
+
60
+ **Steps, a process, a pipeline, an org chart** - `flowchart TD` (top-down) or `flowchart LR`:
61
+ ```mermaid
62
+ flowchart LR
63
+ A["Request"] --> B{"Valid?"}
64
+ B -->|yes| C["Process"]
65
+ B -->|no| D["Reject with error"]
66
+ ```
67
+ Nodes `id["Label"]`, decisions `id{"Question?"}`, arrows always `-->` with `-->|yes|` labels. Ids never reused. Never lowercase `end` - write `"End"`.
68
+
69
+ **Who calls whom over time** - `sequenceDiagram`:
70
+ ```mermaid
71
+ sequenceDiagram
72
+ participant App
73
+ participant Server
74
+ App->>Server: POST /login
75
+ Server-->>App: 200 with token
76
+ ```
77
+ Declare every `participant` first. Call `A->>B: text`, reply `B-->>A: text`. Never `-->` here.
78
+
79
+ **Modes and transitions** - `stateDiagram-v2`:
80
+ ```mermaid
81
+ stateDiagram-v2
82
+ [*] --> Idle
83
+ Idle --> Running : start
84
+ Running --> [*] : shutdown
85
+ ```
86
+ `[*]` starts and ends. `From --> To : label`. State names are single words or `snake_case`; for a spaced name write `state "Waiting for input" as Waiting` once, then `Waiting`.
87
+
88
+ **Tables and relations** - `erDiagram`:
89
+ ```mermaid
90
+ erDiagram
91
+ USER ||--o{ ORDER : "places"
92
+ ORDER ||--|{ LINE_ITEM : "contains"
93
+ ```
94
+ Entities UPPER_CASE. `||--o{` one-to-many, `||--||` one-to-one. Label in plain quotes after the colon.
95
+
96
+ **Classes and inheritance** - `classDiagram`:
97
+ ```mermaid
98
+ classDiagram
99
+ class Animal {
100
+ +String name
101
+ +speak()
102
+ }
103
+ Animal <|-- Dog
104
+ ```
105
+ Members inside `class Name { }`. Inheritance `Parent <|-- Child`. No quotes on class names.
106
+
107
+ **A schedule with durations** - `gantt`:
108
+ ```mermaid
109
+ gantt
110
+ title Delivery
111
+ dateFormat YYYY-MM-DD
112
+ section Planning
113
+ Requirements :a1, 2026-09-01, 5d
114
+ Design :a2, after a1, 7d
115
+ ```
116
+ Headers are only `title`, `dateFormat`, `axisFormat`, `excludes weekends`, `section`. EVERY other line is `Name :id, start, duration`.
117
+
118
+ **Dated events in order** - `timeline`:
119
+ ```mermaid
120
+ timeline
121
+ title Company history
122
+ 2019 : Founded
123
+ 2021 : First release
124
+ 2024 : Series A
125
+ ```
126
+ One `date : event` per line, indented under the title.
127
+
128
+ **Shares of a whole** - `pie`:
129
+ ```mermaid
130
+ pie title Time spent
131
+ "Coding" : 60
132
+ "Review" : 25
133
+ "Meetings" : 15
134
+ ```
135
+ Every slice is `"Label" : number` - quoted label, plain number, no `%`.
136
+
137
+ **A brainstorm or idea tree** - `mindmap`:
138
+ ```mermaid
139
+ mindmap
140
+ root[Launch plan]
141
+ Marketing
142
+ Blog post
143
+ Engineering
144
+ Release build
145
+ ```
146
+ `root[Topic]` once, then plain unquoted text, two more spaces per level. A second line at the root's depth fails.
147
+
148
+ Use `gitGraph` ONLY when the user names it. Never invent a keyword not shown above.
58
149
 
59
150
  ## Hard Rules (every type)
60
151
 
61
152
  - One diagram per code block, and the fence language is exactly `mermaid`. The
62
- first line inside the fence is the type keyword from the table. Default to
63
- ONE block; use two only when the recipe's budget forces an overview plus one
64
- detail. Never more than two.
153
+ first line inside the fence is a type keyword from the recipes above. Default to
154
+ ONE block; use two only for an overview plus one detail. Never more than two.
65
155
  - Except in mindmaps, node ids are letters, digits, and underscores, starting
66
156
  with a letter, never reused. Mindmap nodes have no ids.
67
157
  - Except in mindmaps, every label with a space, punctuation, or brackets goes
@@ -93,8 +183,8 @@ diagram types, and never invent a keyword a recipe does not show.
93
183
  ## If the diagram fails
94
184
 
95
185
  When a diagram cannot render, the app sends its parse error back to you once
96
- on its own, and the user may send it again. Re-load the type's recipe and fix
97
- by rewriting the ENTIRE code block, never a partial patch.
186
+ on its own, and the user may send it again. Re-read the type's recipe above and
187
+ fix by rewriting the ENTIRE code block, never a partial patch.
98
188
 
99
189
  | Error contains | Fix |
100
190
  | --- | --- |
@@ -103,5 +193,5 @@ by rewriting the ENTIRE code block, never a partial patch.
103
193
  | `Expecting ...` at a flowchart or sequence label | Put the whole label in double quotes |
104
194
  | `got 'end'` | Rename the node label to `"End"` |
105
195
  | `Maximum text size` or edge limit | Shrink the diagram or split it in two |
106
- | `No diagram type detected` | Start the fence with one type keyword from the table |
196
+ | `No diagram type detected` | Start the fence with one type keyword from the recipes above |
107
197
  | `Duplicate id` | Give every node a fresh unique id |
@@ -4,6 +4,10 @@ description: Create, edit, or read Excel spreadsheets (.xlsx) with openpyxl —
4
4
  aliases: [xlsx, spreadsheet, workbook]
5
5
  tools: [exec(python)]
6
6
  platform: [darwin, linux, win32]
7
+ # Routing tuned on Qwen3.5-4B for QVAC-24106 ("@excel embed this image into a spreadsheet" after a
8
+ # generate_image turn). The bullet list sent 13/14 runs to edit.md, and 6/14 ended with no image in
9
+ # a workbook, most by asking the user to attach one. As a request -> file table: 5/5 to create.md and
10
+ # 5/5 embedded the image; "add a fourth row" to a workbook built in the chat still loads edit.md, 3/3.
7
11
  metadata:
8
12
  {
9
13
  "openclaw":
@@ -32,17 +36,20 @@ copy its recipe and change the content:
32
36
  Each load is a real `skill` tool call — printing the call as JSON or text in
33
37
  your reply loads nothing.
34
38
 
35
- - **Creating a new workbook** (no existing file involved, including one that embeds
36
- an image): call the `skill` tool with `name: "excel"` and
37
- `file: "references/create.md"`.
38
- - **Editing an attached workbook** (change cells, add/insert/delete rows, columns or
39
- sheets, or embed an image into one that already exists): call the `skill` tool with
40
- `name: "excel"` and `file: "references/edit.md"`.
41
- - **Answering from an attached workbook** (a summary, a question answered,
42
- values pulled into the chat — the deliverable is your reply, not a file): call
43
- the `skill` tool with `name: "excel"` and `file: "references/read.md"`.
44
- - **Read then build** (e.g. "summarize this workbook into a new file"): load
45
- `references/read.md` and the create or edit file — the read call runs first.
39
+ Pick the file by whether an `.xlsx` is already in this chat:
40
+
41
+ | The request | Load |
42
+ | ----------------------------------------------------------------------------------- | ----------------------------------------------- |
43
+ | "make a spreadsheet of …", "embed this image into a spreadsheet" — no `.xlsx` yet | `references/create.md` |
44
+ | "add a row", "change B2", "add this image to my budget.xlsx" — an `.xlsx` is here | `references/edit.md` |
45
+ | "what is the total in this sheet?", "summarize this workbook" — the answer is a reply | `references/read.md` |
46
+ | "summarize this workbook into a new file" | `references/read.md` first, then create or edit |
47
+
48
+ Load it with the `skill` tool: `name: "excel"` and that `file`.
49
+
50
+ **An image this chat generated is already attached.** A `generate_image` result in
51
+ any earlier turn is the image "this image" means, and its `attachmentId` stages it.
52
+ Never ask the user to attach an image the conversation already has.
46
53
 
47
54
  Never write the Python from memory. The recipes carry required patterns (the
48
55
  fill-in template, staging rules, guard asserts) that fail in non-obvious ways
@@ -6,6 +6,10 @@ rows, columns, or sheets. Stage the workbook as an input, modify it, and save
6
6
  under a **new** output name such as `revised.xlsx` — never overwrite the staged
7
7
  input.
8
8
 
9
+ **No `.xlsx` in this chat means this is not an edit.** "Put this image in a
10
+ spreadsheet" with no workbook to open is a CREATE: load `references/create.md` and
11
+ build a new one. Never ask the user to attach a workbook they did not mention.
12
+
9
13
  Macro-enabled files (`.xlsm`) can be staged as inputs and read, but this
10
14
  runtime cannot deliver `.xlsm` back — macros never survive. Save the edit as
11
15
  `.xlsx` and tell the user the macros were not preserved.
@@ -43,7 +43,6 @@ metadata:
43
43
  "authUrl": "https://accounts.google.com/o/oauth2/v2/auth",
44
44
  "tokenUrl": "https://oauth2.googleapis.com/token",
45
45
  "tokenAuth": "secret-in-body",
46
- "port": 18978,
47
46
  "scopes": [
48
47
  "https://www.googleapis.com/auth/gmail.modify"
49
48
  ],
@@ -43,7 +43,6 @@ metadata:
43
43
  "authUrl": "https://accounts.google.com/o/oauth2/v2/auth",
44
44
  "tokenUrl": "https://oauth2.googleapis.com/token",
45
45
  "tokenAuth": "secret-in-body",
46
- "port": 18978,
47
46
  "scopes": [
48
47
  "https://www.googleapis.com/auth/calendar"
49
48
  ],
@@ -42,7 +42,6 @@ metadata:
42
42
  "authUrl": "https://accounts.google.com/o/oauth2/v2/auth",
43
43
  "tokenUrl": "https://oauth2.googleapis.com/token",
44
44
  "tokenAuth": "secret-in-body",
45
- "port": 18978,
46
45
  "scopes": [
47
46
  "https://www.googleapis.com/auth/documents",
48
47
  "https://www.googleapis.com/auth/drive"
@@ -42,7 +42,6 @@ metadata:
42
42
  "authUrl": "https://accounts.google.com/o/oauth2/v2/auth",
43
43
  "tokenUrl": "https://oauth2.googleapis.com/token",
44
44
  "tokenAuth": "secret-in-body",
45
- "port": 18978,
46
45
  "scopes": [
47
46
  "https://www.googleapis.com/auth/drive"
48
47
  ],
@@ -43,7 +43,6 @@ metadata:
43
43
  "authUrl": "https://accounts.google.com/o/oauth2/v2/auth",
44
44
  "tokenUrl": "https://oauth2.googleapis.com/token",
45
45
  "tokenAuth": "secret-in-body",
46
- "port": 18978,
47
46
  "scopes": [
48
47
  "https://www.googleapis.com/auth/spreadsheets",
49
48
  "https://www.googleapis.com/auth/drive"
@@ -1,29 +0,0 @@
1
- # Class Diagram
2
-
3
- For code types: classes, their members, inheritance.
4
-
5
- Budget: 7 classes.
6
-
7
- ```mermaid
8
- classDiagram
9
- class Animal {
10
- +String name
11
- +speak()
12
- }
13
- Animal <|-- Dog
14
- ```
15
-
16
- Rules:
17
-
18
- - Members go inside `class Name { }`, one per line, `+` public and `-`
19
- private, methods end with `()`.
20
- - Inheritance is `Parent <|-- Child`; composition `Whole *-- Part`;
21
- association `A --> B`.
22
- - Class names are single tokens; no quotes, no `classDef` lines.
23
-
24
- ## Now draw
25
-
26
- This recipe is all you need. Your next output is the reply itself: one fenced
27
- Mermaid code block (fence language `mermaid`), then one sentence. Do not call
28
- any tool - not `exec`, not `skill` again, not an image tool. A tool call here
29
- means the diagram was never drawn.
@@ -1,27 +0,0 @@
1
- # ER Diagram
2
-
3
- For tables and their relations.
4
-
5
- Budget: 8 entities.
6
-
7
- ```mermaid
8
- erDiagram
9
- USER ||--o{ ORDER : "places"
10
- ORDER ||--|{ LINE_ITEM : "contains"
11
- ```
12
-
13
- Rules:
14
-
15
- - Entities are UPPER_CASE single tokens.
16
- - `||--o{` reads "one to zero-or-many"; `||--|{` "one to one-or-many";
17
- `||--||` "one to one".
18
- - The relationship label follows the colon in plain double quotes typed directly (no backslash in front).
19
- - Attributes are optional; if used, list them inside `ENTITY { string name }`
20
- blocks with one `type name` per line.
21
-
22
- ## Now draw
23
-
24
- This recipe is all you need. Your next output is the reply itself: one fenced
25
- Mermaid code block (fence language `mermaid`), then one sentence. Do not call
26
- any tool - not `exec`, not `skill` again, not an image tool. A tool call here
27
- means the diagram was never drawn.
@@ -1,33 +0,0 @@
1
- # Flowchart
2
-
3
- For steps, decisions, processes, pipelines, and any "map this / structure
4
- this" ask - also family trees, org charts, and reporting lines. `flowchart TD`
5
- reads top-down; `flowchart LR` left-to-right for a pipeline.
6
-
7
- Budget: 12 nodes and 16 edges. Over budget, simplify; if the detail is
8
- essential, one overview block plus one detail block, never more.
9
-
10
- ```mermaid
11
- flowchart LR
12
- A["Request"] --> B{"Valid?"}
13
- B -->|yes| C["Process"]
14
- B -->|no| D["Reject with error"]
15
- C --> E["Respond"]
16
- ```
17
-
18
- Rules:
19
-
20
- - Nodes are `id["Label"]`; decisions are `id{"Question?"}` diamonds.
21
- - Arrows are always `-->`; the label form is `-->|yes|`. Never `->>` here.
22
- - Ids: letters, digits, underscores, starting with a letter, never reused.
23
- - Every label goes in plain double quotes `"`, 40 characters or
24
- fewer, `<br/>` for a line break. Never write lowercase `end` - use `"End"`.
25
- - One node per person or concept, details inside its label; no separate nodes
26
- for dates, roles, counts, or statuses.
27
-
28
- ## Now draw
29
-
30
- This recipe is all you need. Your next output is the reply itself: one fenced
31
- Mermaid code block (fence language `mermaid`), then one sentence. Do not call
32
- any tool - not `exec`, not `skill` again, not an image tool. A tool call here
33
- means the diagram was never drawn.
@@ -1,38 +0,0 @@
1
- # Gantt Chart
2
-
3
- For a schedule or plan with durations.
4
-
5
- Budget: 12 tasks across 4 sections.
6
-
7
- ```mermaid
8
- gantt
9
- title MVP delivery
10
- dateFormat YYYY-MM-DD
11
- excludes weekends
12
- section Planning
13
- Requirements :a1, 2026-09-01, 5d
14
- Design :a2, after a1, 7d
15
- section Build
16
- Core platform :b1, after a2, 21d
17
- API :b2, after a2, 17d
18
- section Launch
19
- Release :c1, after b1, 2d
20
- ```
21
-
22
- Rules:
23
-
24
- - The only header lines are `title`, `dateFormat YYYY-MM-DD`, `axisFormat`,
25
- `excludes weekends`, and `section Name`. Nothing else is a header.
26
- - EVERY other line is a task and must be `Name :id, start, duration` - start
27
- is a date or `after otherId`, duration is like `5d` or `2w`. A line that is
28
- not one of these fails with `Expecting 'taskData'`.
29
- - No colons inside task names, no quotes, no arrows.
30
- - Ids are unique short tokens (`a1`, `b2`); `after` may name several ids
31
- separated by spaces.
32
-
33
- ## Now draw
34
-
35
- This recipe is all you need. Your next output is the reply itself: one fenced
36
- Mermaid code block (fence language `mermaid`), then one sentence. Do not call
37
- any tool - not `exec`, not `skill` again, not an image tool. A tool call here
38
- means the diagram was never drawn.
@@ -1,35 +0,0 @@
1
- # Mindmap
2
-
3
- For a brainstorm or idea tree around one topic. Not for people in a hierarchy
4
- - that is a `flowchart TD`.
5
-
6
- Budget: 3 levels, 10 nodes, 2-4 balanced top-level branches.
7
-
8
- ```mermaid
9
- mindmap
10
- root[Launch plan]
11
- Marketing
12
- Blog post
13
- Social campaign
14
- Engineering
15
- Release build
16
- Monitoring
17
- ```
18
-
19
- Rules:
20
-
21
- - The first line is `mindmap`; the second is the rectangular `root[Topic]`.
22
- - One node per line, two more spaces of indentation per level; the tree shape
23
- comes only from indentation. Every line after `root[...]` is indented deeper
24
- than the root - a line at the root's indentation is a second root and fails
25
- with `There can be only one root`.
26
- - Labels are unquoted plain text with no ids, no quotes, no arrows,
27
- no brackets except the `root[...]` form.
28
- - One node per item with its details in that node; no attribute leaves.
29
-
30
- ## Now draw
31
-
32
- This recipe is all you need. Your next output is the reply itself: one fenced
33
- Mermaid code block (fence language `mermaid`), then one sentence. Do not call
34
- any tool - not `exec`, not `skill` again, not an image tool. A tool call here
35
- means the diagram was never drawn.
@@ -1,27 +0,0 @@
1
- # Pie Chart
2
-
3
- For shares of a whole: hours in a day, budget split, percentages.
4
-
5
- Budget: 8 slices; combine the remainder as `"Other"`.
6
-
7
- ```mermaid
8
- pie title Time spent
9
- "Coding" : 60
10
- "Review" : 25
11
- "Meetings" : 15
12
- ```
13
-
14
- Rules:
15
-
16
- - The first line is `pie title Your title` (or just `pie`).
17
- - Every slice is `"Label" : number` - the label in plain double quotes typed
18
- directly (never unquoted, never with a backslash in front), then a
19
- space-colon-space, then a plain number with no unit or `%` sign.
20
- - One slice per line; values need not add up to 100.
21
-
22
- ## Now draw
23
-
24
- This recipe is all you need. Your next output is the reply itself: one fenced
25
- Mermaid code block (fence language `mermaid`), then one sentence. Do not call
26
- any tool - not `exec`, not `skill` again, not an image tool. A tool call here
27
- means the diagram was never drawn.
@@ -1,32 +0,0 @@
1
- # Sequence Diagram
2
-
3
- For who calls whom over time: requests and replies between an app, a server,
4
- a browser, a service.
5
-
6
- Budget: 5 participants and 12 messages.
7
-
8
- ```mermaid
9
- sequenceDiagram
10
- participant App
11
- participant Server
12
- App->>Server: POST /login
13
- Server-->>App: 200 with token
14
- Note over App: stores the token
15
- ```
16
-
17
- Rules:
18
-
19
- - Declare every `participant` first, as a bare name without quotes.
20
- - A call is `A->>B: message`; a reply is `B-->>A: message`. Never use the
21
- flowchart `-->` arrow here.
22
- - A note is `Note over A: text` (or `Note over A,B: text`).
23
- - Message text follows the colon unquoted; keep it short. No backslashes anywhere.
24
- - No ids, no brackets, no `end` except to close a Mermaid `loop`/`alt` block
25
- you opened.
26
-
27
- ## Now draw
28
-
29
- This recipe is all you need. Your next output is the reply itself: one fenced
30
- Mermaid code block (fence language `mermaid`), then one sentence. Do not call
31
- any tool - not `exec`, not `skill` again, not an image tool. A tool call here
32
- means the diagram was never drawn.
@@ -1,30 +0,0 @@
1
- # State Diagram
2
-
3
- For modes and transitions: a device, a job, a session moving between states.
4
-
5
- Budget: 8 states.
6
-
7
- ```mermaid
8
- stateDiagram-v2
9
- [*] --> Idle
10
- Idle --> Running : start
11
- Running --> Idle : stop
12
- Running --> [*] : shutdown
13
- ```
14
-
15
- Rules:
16
-
17
- - The first line is exactly `stateDiagram-v2`.
18
- - `[*]` is both the start and the end marker.
19
- - A transition is `From --> To : label`; the label is optional and follows a
20
- colon, unquoted.
21
- - State names are single words or `snake_case`; for a spaced display name use
22
- `state "Waiting for input" as Waiting` once, then `Waiting` everywhere.
23
- - No backslashes, no `classDef`, no `%%` lines.
24
-
25
- ## Now draw
26
-
27
- This recipe is all you need. Your next output is the reply itself: one fenced
28
- Mermaid code block (fence language `mermaid`), then one sentence. Do not call
29
- any tool - not `exec`, not `skill` again, not an image tool. A tool call here
30
- means the diagram was never drawn.
@@ -1,28 +0,0 @@
1
- # Timeline
2
-
3
- For dated events in order: a history, a roadmap already dated.
4
-
5
- Budget: 8 events.
6
-
7
- ```mermaid
8
- timeline
9
- title Product history
10
- 2024 : Prototype
11
- 2025 : Public beta : First paying customers
12
- 2026 : Version 1.0
13
- ```
14
-
15
- Rules:
16
-
17
- - `title` first, then one line per period as `period : event`, with another
18
- ` : event` for each extra event in the same period.
19
- - Periods are years, dates, or short phase names; events are short unquoted
20
- text.
21
- - No arrows, no ids, no quotes.
22
-
23
- ## Now draw
24
-
25
- This recipe is all you need. Your next output is the reply itself: one fenced
26
- Mermaid code block (fence language `mermaid`), then one sentence. Do not call
27
- any tool - not `exec`, not `skill` again, not an image tool. A tool call here
28
- means the diagram was never drawn.