@xmindltd/xmind-cli 0.2.1

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 ADDED
@@ -0,0 +1,71 @@
1
+ {
2
+ "name": "@xmindltd/xmind-cli",
3
+ "version": "0.2.1",
4
+ "description": "XMind CLI — Create and edit .xmind files for AI Agents",
5
+ "author": "Xmind Ltd.",
6
+ "license": "MIT",
7
+ "engines": {
8
+ "node": ">=20.0.0"
9
+ },
10
+ "publishConfig": {
11
+ "access": "public"
12
+ },
13
+ "homepage": "https://github.com/xmindltd/xmind-cli",
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "git+https://github.com/xmindltd/xmind-cli.git"
17
+ },
18
+ "keywords": [
19
+ "xmind",
20
+ "mindmap",
21
+ "cli",
22
+ "ai",
23
+ "agent",
24
+ "claude-code",
25
+ "cursor",
26
+ "codex"
27
+ ],
28
+ "type": "commonjs",
29
+ "bin": {
30
+ "xmind": "dist/cli.mjs"
31
+ },
32
+ "scripts": {
33
+ "build": "node build.mjs",
34
+ "build:gated": "XMIND_CLI_GATE_PREMIUM=1 node build.mjs",
35
+ "build:release": "XMIND_CLI_RELEASE=1 node build.mjs && node verify-release-package.mjs",
36
+ "release:prepare": "npm test && npm run pack:release",
37
+ "build:tsup": "tsup",
38
+ "build:tsc": "tsc",
39
+ "dev": "tsc --watch",
40
+ "dev:skill": "node build.mjs && rm -f xmind-file-cli.skill && zip xmind-file-cli.skill SKILL.md && echo '✓ xmind-file-cli.skill rebuilt'",
41
+ "pack:release": "npm run build:release && npm pack",
42
+ "pack:skill:file": "XMIND_CLI_GATE_PREMIUM=1 node build.mjs && rm -rf xmind-cli-*.tgz xmind-file.skill && npm pack && zip -j xmind-file.skill ../../skills/xmind-file/SKILL.md xmind-cli-*.tgz && rm -f xmind-cli-*.tgz && echo '✓ xmind-file.skill packed'",
43
+ "pack:skill": "npm run pack:skill:file",
44
+ "pack:skill:offline": "node pack-offline-skill.mjs",
45
+ "prepublishOnly": "node verify-release-package.mjs",
46
+ "typecheck": "tsc --noEmit",
47
+ "test": "node build.mjs --test-index && node --test"
48
+ },
49
+ "dependencies": {
50
+ "open": "^10.0.0",
51
+ "undici": "^6.27.0"
52
+ },
53
+ "devDependencies": {
54
+ "@types/node": "^20.0.0",
55
+ "@types/uuid": "^9.0.0",
56
+ "@xmindltd/mindmap-tools": "workspace:*",
57
+ "@xmindltd/snowdust": "*",
58
+ "commander": "^12.0.0",
59
+ "esbuild": "^0.27.4",
60
+ "javascript-obfuscator": "^5.4.3",
61
+ "jszip": "^3.10.1",
62
+ "tsup": "^8.5.1",
63
+ "typescript": "^5.3.3",
64
+ "uuid": "^9.0.0"
65
+ },
66
+ "files": [
67
+ "dist",
68
+ "SKILL.md",
69
+ "skills"
70
+ ]
71
+ }
@@ -0,0 +1,47 @@
1
+ # Decoration
2
+
3
+ Optional layer. Non-semantic visual sugar: iconic markers and vibe labels.
4
+
5
+ **Default behavior**: do not decorate. CLI fills in sensible defaults for most decoration concerns. Load this skill only when the user explicitly asks for decorative elements or when the content has a strong visual vibe requirement.
6
+
7
+ ## Iconic markers
8
+
9
+ Decorative icons. Categories include:
10
+
11
+ - `smiley-*` (smile, laugh, cry, etc.)
12
+ - `celebration` (party, gift)
13
+ - `people-*` (different roles)
14
+ - `flag-*` (red, green, blue)
15
+ - `star-*` (red, blue)
16
+ - `symbol-*` (plus, minus, question, exclam)
17
+
18
+ ```json
19
+ {"op": "marker", "topic": "Launch", "marker": "celebration"}
20
+ ```
21
+
22
+ ### Important
23
+
24
+ Do NOT use `flag-*` or `star-*` for status semantics (e.g., `flag-red` for "blocked"). Use `task-overlay` priority / state markers instead. `flag-*` and `star-*` are vibe only.
25
+
26
+ ## Vibe labels
27
+
28
+ Free-text labels for non-structural tagging.
29
+
30
+ ```json
31
+ {"op": "label", "topic": "Idea Pool", "labels": ["brainstorm", "v1"]}
32
+ ```
33
+
34
+ Same `label` op as task-overlay assignee, but used for vibe rather than ownership.
35
+
36
+ ## What decoration does not own
37
+
38
+ Numbering belongs to `visual`, not decoration. Use numbering when sequence,
39
+ rank, or stable outline references help the reader navigate the map. Do not
40
+ use numbering as visual sugar.
41
+
42
+ ## Avoid double decoration
43
+
44
+ - A node already has emphasis (color/font) → don't add iconic marker too
45
+ - A node already has priority/state marker → don't add flag/star too
46
+
47
+ If unsure whether decoration adds value, skip it.
@@ -0,0 +1,160 @@
1
+ # Edit Guide
2
+
3
+ Guide for editing **content and structure** of an existing mindmap. Visual
4
+ restyling (skeleton / color / layout / emphasis) is **not** covered here —
5
+ for that, load `visual/SKILL.md` and walk its pattern catalog on the existing
6
+ content.
7
+
8
+ This guide assumes you have an existing `.xmind` file. To work on a fresh
9
+ generation, use `recipe/<chosen> + visual` instead.
10
+
11
+ ---
12
+
13
+ ## Two separate concerns
14
+
15
+ | Concern | Scope | Skill |
16
+ |---|---|---|
17
+ | **Content / structure edit** | titles, notes, links, hierarchy, missing branches, depth | this guide |
18
+ | **Visual restyle** | skeleton, color, layout, emphasis, boundary, callout, user-provided local image | `visual/SKILL.md` |
19
+
20
+ These are independent — an edit pass may not need any restyle, and a restyle
21
+ may not need any content change. Load only what the user asked for.
22
+
23
+ ---
24
+
25
+ ## Style matching (applies to every dimension)
26
+
27
+ Before changing anything, examine 3-5 existing sibling topics:
28
+
29
+ - Length: short phrases? complete sentences? parenthesized augments?
30
+ - Language: match the user's language; do not switch
31
+ - Format: any examples, data, explanations?
32
+
33
+ **All additions and edits must match existing style.** Do not introduce
34
+ new naming conventions mid-edit.
35
+
36
+ ---
37
+
38
+ ## 4 content / structure dimensions
39
+
40
+ ### 1. Completeness (Review)
41
+
42
+ Find missing dimensions and shallow branches.
43
+
44
+ **Method:**
45
+ 1. Read the whole document; understand the covered domain
46
+ 2. Compare against domain common sense: which dimensions are missing? which are shallow? are proportions balanced?
47
+ 3. If specialized knowledge helps, optionally load: `xmind skill show recipe/<name>`
48
+
49
+ **Output format:**
50
+
51
+ ```
52
+ Coverage analysis:
53
+ ✓ [dimension] — sufficient
54
+ △ [dimension] — shallow
55
+ ✗ [dimension] — missing
56
+ ```
57
+
58
+ **Ops:** `add` to fill missing content, `marker` with `flag-green` to mark
59
+ the newly-added nodes for user review.
60
+
61
+ ### 2. Depth (Expand)
62
+
63
+ Fill in concrete detail on shallow branches. Depth follows the content
64
+ itself — no artificial cap.
65
+
66
+ **Method:**
67
+ 1. Identify branches obviously shallower than their siblings
68
+ 2. Expand by the content's natural hierarchy — as many levels as the concept warrants
69
+ 3. Use `notes` op to attach blockquote-style detail to an existing node
70
+ (instead of always nesting deeper)
71
+
72
+ **Constraint:** Do not modify existing nodes; preserve all current content.
73
+
74
+ **Ops:** `add` for new children, `notes` for inline elaboration on existing nodes.
75
+
76
+ ### 3. Expression (Refine)
77
+
78
+ Unify naming style; improve phrasing.
79
+
80
+ **Method:**
81
+ 1. Identify the style used by the **majority** of nodes as the standard
82
+ 2. Correct the minority that deviates: shorten over-long titles, expand
83
+ over-short ones, make vague titles concrete
84
+
85
+ **Constraint:** Do not change meaning, do not add or remove nodes; unify
86
+ to the majority style.
87
+
88
+ **Ops:** `update` for title edits, `notes` for refining explanations.
89
+
90
+ ### 4. Structure (Restructure)
91
+
92
+ Reorganize the hierarchy.
93
+
94
+ **Method:**
95
+ 1. Identify problems:
96
+ - Too flat (8+ siblings under one parent) → group via a wrapper
97
+ - Misplaced node → move to correct parent
98
+ - Duplicate / overlap → merge or delete
99
+ 2. **Wrapper insertion** (common pattern):
100
+ - `add` a wrapper node as child of the over-flat parent
101
+ - `move` existing siblings into the wrapper
102
+ 3. Single batch ≤ 20 ops; split into multiple batches if larger.
103
+
104
+ **Constraint:** Preserve all content; do not delete or rename unless the
105
+ existing label is clearly wrong.
106
+
107
+ **Ops:** `add`, `move`, `delete` (rare), `update` for rename.
108
+
109
+ ---
110
+
111
+ ## Analysis template
112
+
113
+ Before editing, output a short analysis (≤ 8 lines):
114
+
115
+ ```
116
+ [content] ✓ sufficient / △ missing X / ✗ missing Y
117
+ [depth] ✓ balanced / △ branch X is shallow
118
+ [expression] ✓ unified style / △ partial inconsistency
119
+ [structure] ✓ reasonable / △ branch X too flat / over-deep / misplaced
120
+ ```
121
+
122
+ Then apply all changes in one batch.
123
+
124
+ ---
125
+
126
+ ## Execute
127
+
128
+ ```bash
129
+ cat <<'BATCH' | xmind batch <file>
130
+ [
131
+ {"op": "add", "parent": "Old Parent", "topic": "New Wrapper"},
132
+ {"op": "move", "topics": ["Child A", "Child B"], "parent": "New Wrapper"},
133
+ {"op": "update", "topic": "Vague Title", "title": "Concrete Title"},
134
+ {"op": "notes", "topic": "Concept X", "notes": "Explanation paragraph"},
135
+ {"op": "href", "topic": "External Reference", "href": "https://example.com"},
136
+ {"op": "delete", "topic": "Obsolete Node"},
137
+ {"op": "marker", "topic": "Newly Added", "marker": "flag-green"}
138
+ ]
139
+ BATCH
140
+ ```
141
+
142
+ ### Content / structure ops palette
143
+
144
+ | Op | Effect |
145
+ |---|---|
146
+ | `add` | Add a new child under `parent` |
147
+ | `update` | Rename a topic (change `title`) |
148
+ | `delete` | Remove a topic (and its subtree) |
149
+ | `move` | Reparent a topic; supports `topics: [...]` batch |
150
+ | `notes` | Set / clear blockquote notes (`notes: null` clears) |
151
+ | `href` | Set / clear topic link (`href: null` clears) |
152
+ | `label` | Add labels (tags) on a topic |
153
+ | `todo` | Mark a topic as todo (with optional `due` ISO date) |
154
+ | `marker` | Add a marker (priority / state / iconic icon) |
155
+
156
+ For whole-map theme changes, use the standalone command:
157
+ `xmind theme <file> --skeleton X --color Y`.
158
+
159
+ For visual restyling beyond theme (layout / emphasis / boundary / relation /
160
+ local image attachment / etc.), load `visual/SKILL.md` and follow its planner.
@@ -0,0 +1,63 @@
1
+ {
2
+ "version": "3",
3
+ "recipe": [
4
+ {
5
+ "name": "default",
6
+ "trigger": "General content, no specialized domain. Fallback when no other recipe fits."
7
+ },
8
+ {
9
+ "name": "comparison-decision",
10
+ "trigger": "Option comparison, versus analysis, product/tool selection, buying decisions, vendor evaluation, tradeoff review."
11
+ },
12
+ {
13
+ "name": "lesson-plan",
14
+ "trigger": "Course design, learning path, lesson plan, training program, curriculum."
15
+ },
16
+ {
17
+ "name": "quick-map",
18
+ "trigger": "Fast free-first maps: quick topic overviews, lightweight summaries, checklists, meeting notes, idea inboxes, bug triage, audit lists, quick plans, sorted notes, small resource lists, and short schedules."
19
+ },
20
+ {
21
+ "name": "process-playbook",
22
+ "trigger": "SOPs, workflows, operating manuals, runbooks, troubleshooting flows, onboarding procedures, how-to guidance."
23
+ },
24
+ {
25
+ "name": "swot",
26
+ "trigger": "SWOT analysis, competitive analysis, strategic assessment, four-quadrant framework."
27
+ },
28
+ {
29
+ "name": "timeline-narrative",
30
+ "trigger": "Time-dominant narratives where order explains change: biographies, company histories, product or technology evolution, historical narratives, incident histories, past-to-present timelines."
31
+ }
32
+ ],
33
+ "visual": [
34
+ {
35
+ "name": "visual",
36
+ "trigger": "Visual core: route result, structure card, second look, and anchor planning. Always loaded alongside a recipe."
37
+ }
38
+ ],
39
+ "task-overlay": [
40
+ {
41
+ "name": "task-overlay",
42
+ "trigger": "Project planning, OKR, task management, scheduling, team work breakdown, roadmap, progress tracking. Load when the map represents work to be executed, not just content."
43
+ }
44
+ ],
45
+ "decoration": [
46
+ {
47
+ "name": "decoration",
48
+ "trigger": "Non-semantic visual sugar: iconic markers and vibe labels. Rarely loaded — CLI defaults handle most cases."
49
+ }
50
+ ],
51
+ "edit": [
52
+ {
53
+ "name": "guide",
54
+ "trigger": "Edit, optimize, improve, review, expand, restructure, refine, restyle any existing .xmind."
55
+ }
56
+ ],
57
+ "shared": [
58
+ {
59
+ "name": "markdown-grammar",
60
+ "trigger": "Force-loaded by every entry skill before recipe / visual selection. Markdown ↔ XMind mapping reference."
61
+ }
62
+ ]
63
+ }
@@ -0,0 +1,60 @@
1
+ # Markdown Grammar Reference
2
+
3
+ This is the shared markdown reference for skills that produce or consume XMind
4
+ content. It is loaded before recipe / visual selection.
5
+
6
+ Recipes write content as markdown. Visual / Task-overlay / Decoration changes
7
+ are emitted separately as ops; never encode those semantics in markdown titles.
8
+
9
+ ## Standard CommonMark mapping
10
+
11
+ | Markdown | XMind rendering | Notes |
12
+ |---|---|---|
13
+ | `# Topic` | Root topic | One root per sheet |
14
+ | `## ### ####` | Sub-topic hierarchy | Depth determines tree level |
15
+ | `- leaf` | Leaf topic (no children) | Use sparingly; prefer `####` if it has notes |
16
+ | `> notes` | Topic notes | One or more lines, attached to nearest preceding topic |
17
+ | `**bold**` `*italic*` | Inline strong / emphasis | Renders in notes; in titles may be stripped depending on theme |
18
+ | `[text](url)` | Topic href / link | Whole-title link if title is the link |
19
+ | `![](path)` | Inline image | Use only for user-provided local files; different from a Visual `image` op |
20
+ | `- [ ]` `- [x]` | Task list checkbox | CommonMark checkbox; executable task semantics should use `task-overlay` ops |
21
+ | ``` ``` | Code block | Only valid inside notes (not in title) |
22
+ | `$$...$$` | LaTeX math | Only valid inside notes |
23
+
24
+ ## Root Notes
25
+
26
+ Root notes are valid CommonMark mapping, but generated maps should avoid them by
27
+ default. The root topic is the visual center, and notes there often reduce scan
28
+ quality. Put scope, assumptions, and sources in first-level branches such as
29
+ `Scope` or `Sources` unless the user explicitly asks for root notes or an
30
+ existing map already has them.
31
+
32
+ ## Example
33
+
34
+ ```markdown
35
+ # Quantum Mechanics Intro Course
36
+
37
+ ## Week 1: Wave-Particle Duality
38
+ ### Double-slit experiment
39
+ > Demo + small group discussion.
40
+ > Focus: how observation alters the experimental outcome.
41
+
42
+ ### Historical background
43
+ > From Young's experiment to Davisson-Germer.
44
+
45
+ ## Week 2: Uncertainty Principle
46
+ ### Thought experiment comparison
47
+ - Heisenberg microscope
48
+ - Bohr's response
49
+ ```
50
+
51
+ ## Boundaries
52
+
53
+ - Recipe emits markdown only: titles, hierarchy, notes, links, and inline
54
+ content.
55
+ - Visual emits ops: skeleton choice, color choice, layout, emphasis, relation,
56
+ boundary, callout, summary, numbering, and image attachment.
57
+ - Task-overlay emits ops: priority, owner, due date, todo state, dependency.
58
+ - Decoration emits ops: non-semantic markers and labels.
59
+ - Entry skills own delivery commands such as `xmind create --stdin` and
60
+ `xmind batch`.
@@ -0,0 +1,30 @@
1
+ [
2
+ {
3
+ "name": "default",
4
+ "trigger": "General content, no specialized domain"
5
+ },
6
+ {
7
+ "name": "comparison-decision",
8
+ "trigger": "Option comparison, versus analysis, product/tool selection, decision support"
9
+ },
10
+ {
11
+ "name": "lesson-plan",
12
+ "trigger": "Course design, learning path, lesson plan, training program"
13
+ },
14
+ {
15
+ "name": "quick-map",
16
+ "trigger": "Fast free-first maps: quick topic overviews, lightweight summaries, checklists, meeting notes, idea inboxes, bug triage, audit lists, quick plans, sorted notes, small resource lists, and short schedules"
17
+ },
18
+ {
19
+ "name": "process-playbook",
20
+ "trigger": "SOPs, workflows, operating manuals, runbooks, troubleshooting flows, how-to procedures"
21
+ },
22
+ {
23
+ "name": "swot",
24
+ "trigger": "SWOT analysis, competitive analysis, strategic assessment"
25
+ },
26
+ {
27
+ "name": "timeline-narrative",
28
+ "trigger": "Time-dominant narratives: biographies, histories, product/company/technology evolution, incident histories, past-to-present change"
29
+ }
30
+ ]
@@ -0,0 +1,85 @@
1
+ # Recipe: Quick Map
2
+
3
+ Fast, free-first recipe for quick overviews, lightweight summaries, checklists,
4
+ meeting notes, idea inboxes, bug triage, audits, quick plans, sorted notes,
5
+ small resource lists, and short schedules.
6
+
7
+ Do not use for deep analysis, formal visual showcases, decision support,
8
+ SOP/runbook-level procedures, full lesson plans, or chronology-dominant stories.
9
+
10
+ ## Profile
11
+
12
+ ```json
13
+ {
14
+ "recipe": "quick-map",
15
+ "archetype": "overview|triage|checklist|memo|quick-plan|simple-process|simple-timeline|resource|hierarchy",
16
+ "density": "light|standard",
17
+ "baselinePolicy": "free-first",
18
+ "anchorObligations": {
19
+ "layout": "optional",
20
+ "group": "optional",
21
+ "focus": "optional",
22
+ "image": "none"
23
+ }
24
+ }
25
+ ```
26
+
27
+ ## Density
28
+
29
+ - `light`: 8-25 nodes, depth 1-2.
30
+ - `standard`: 25-45 nodes, depth 2-3.
31
+
32
+ Preserve user-supplied items. Do not expand to default deep floors.
33
+
34
+ ## Modes
35
+
36
+ | Mode | Use When | Structural Type | Free Skeleton |
37
+ |---|---|---|---|
38
+ | overview | quick topic map | radial_overview | MindMap-1 |
39
+ | triage | sort ideas/issues | matrix_board | Matrix-1 |
40
+ | checklist | verify/prepare/audit | matrix_board or radial_overview | Matrix-1 or MindMap-1 |
41
+ | quick-plan | simple action sequence | procedural_flow | LogicChart-1 |
42
+ | simple-process | short how-to | procedural_flow | LogicChart-1 |
43
+ | simple-timeline | short chronology | temporal_axis | Timeline-1 or Timeline-3 |
44
+ | resource | small catalog | radial_overview | MindMap-1 |
45
+ | hierarchy | taxonomy/org outline | hierarchy_tree | OrgChart-1 or TreeChart-1 |
46
+
47
+ For short generic requests, default to overview.
48
+
49
+ ## Fast Path
50
+
51
+ - Load only `markdown-grammar` and `recipe/quick-map` by default.
52
+ - Choose the free skeleton from the mode table.
53
+ - Use `Dawn-#ffffff-MULTI_LINE_COLORS` unless the user gives a theme.
54
+ - Create in one pass and run `xmind validate --quiet`.
55
+ - Skip image search, route cards, skeleton cards, and post-create anchors unless
56
+ validation fails or the user asks.
57
+
58
+ ## Structure Rules
59
+
60
+ - 3-7 root branches.
61
+ - Usually 2-5 children per branch.
62
+ - Prefer visible nodes and concise titles over notes for short facts.
63
+ - Notes are optional and should carry context, caveats, blocked reasons,
64
+ acceptance criteria, or key synthesis.
65
+ - One node = one item, idea, step, or decision.
66
+ - Do not add wrappers only for visual anchors.
67
+
68
+ ## Quick Quality Gate
69
+
70
+ Before create, check that the map is intentionally compact:
71
+
72
+ - It answers the user request without pretending to be a deep analysis.
73
+ - Branches are easy to scan and do not exceed the light/standard density target.
74
+ - User-supplied items are preserved.
75
+ - Any notes are useful context, not hidden structure.
76
+
77
+ ## Overlay Handoff
78
+
79
+ No task overlay by default. Load `task-overlay` when the user asks for owner,
80
+ deadline, progress, priority, dependency, status, roadmap tracking, or assignee.
81
+
82
+ ## Markdown Contract
83
+
84
+ Pure CommonMark only. Match the user's language. No visual or task metadata in
85
+ markdown.
@@ -0,0 +1,65 @@
1
+ # Recipe Contract
2
+
3
+ Shared frame for every `recipe/<name>`. Force-loaded with `markdown-grammar` and
4
+ the chosen recipe during generation. Each recipe fills in its own archetype,
5
+ density, structure rules, semantic signals, anchor seeds, and self-check items;
6
+ this file owns the parts that are identical across recipes so they stay
7
+ consistent instead of drifting per recipe.
8
+
9
+ ## Output Profile
10
+
11
+ Every recipe declares an output profile, kept mentally or in scratch — it is not
12
+ map content. The profile guides drafting and self-checking. Only `structuralType`,
13
+ `toneTag`, and `density` are ever passed to `advise`; the rest is planning state.
14
+
15
+ The chosen recipe defines the profile's values: `recipe`, `archetype` (or
16
+ `rootShape` / `structuralType`), `density`, `semanticSignals`, and, when the
17
+ recipe uses anchors, `anchorObligations`.
18
+
19
+ ## Drafting Discipline
20
+
21
+ - Density floors and planning ranges are drafting aids, not caps. Expand real
22
+ facets, not filler.
23
+ - After a draft passes the route quality gate, do not shrink, trim, or re-note it
24
+ only to match a first-pass planning target. Revise only for real filler,
25
+ duplication, missing required anchor seeds, an explicit user brevity request,
26
+ or a content hierarchy that stays broken after trying viable skeleton
27
+ alternatives.
28
+ - If the recipe's self-check fails, revise the markdown before route advise.
29
+ - A local signal is not the root shape: a timeline branch inside a mixed map does
30
+ not make the root `temporal_axis`, and a resource index inside a lesson does
31
+ not make it `mixed_modular`. Root branches decide the root shape.
32
+
33
+ ## Anchor Seeds
34
+
35
+ When a recipe declares `anchorObligations`, the draft must contain a real seed for
36
+ every required family before route advise. If a family has no honest target,
37
+ revise the draft — do not add empty wrapper branches just to satisfy the
38
+ contract. Each recipe's seed table names its family-specific targets.
39
+
40
+ ## Overlay Handoff Frame
41
+
42
+ Every recipe emits only markdown; task metadata is never written into markdown.
43
+ After the baseline is created, the chosen recipe's Overlay Handoff decides whether
44
+ to load `task-overlay`:
45
+
46
+ - `none`: descriptive or analytical content with no execution tracking.
47
+ - `recommended`: many actionable leaves, or content semantics that imply tracking
48
+ (deadlines, owners, dependencies) even without an explicit request.
49
+ - `required`: the user asks for owners, deadlines, priority, progress, status,
50
+ dependencies, scheduling, roadmap, or task tracking.
51
+
52
+ If `recommended` or `required`, first consider whether a more task-shaped recipe
53
+ fits the request; if the current recipe still fits, create the baseline first,
54
+ then load `task-overlay`. Each recipe's Overlay Handoff adds only its own trigger
55
+ specifics and where to place task metadata.
56
+
57
+ ## Markdown Contract
58
+
59
+ - Standard CommonMark only.
60
+ - Output language matches the user.
61
+ - No skeleton, color, layout, emphasis, image, relation, boundary, summary, task
62
+ metadata, or batch ops in the markdown — those are emitted later as ops.
63
+
64
+ A recipe may add structural conventions (which heading level holds items, etc.)
65
+ in its own Structure Rules, but never op semantics.