owflow 0.1.4 → 0.1.6

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 (42) hide show
  1. package/README.md +34 -21
  2. package/dist/__tests__/verify_template.test.js +102 -0
  3. package/dist/agents/task-classifier.md +7 -19
  4. package/dist/commands/diagrams-mermaid.md +37 -0
  5. package/dist/commands/html-renderer.md +37 -0
  6. package/dist/commands/quick-dev.md +48 -6
  7. package/dist/commands/quick-plan.md +39 -4
  8. package/dist/commands/work.md +13 -17
  9. package/dist/index.js +4 -0
  10. package/dist/skills/development/SKILL.md +98 -115
  11. package/dist/skills/diagrams-mermaid/SKILL.md +156 -0
  12. package/dist/skills/diagrams-mermaid/references/reference.md +148 -0
  13. package/dist/skills/flow-init/SKILL.md +15 -0
  14. package/dist/skills/html-renderer/SKILL.md +159 -0
  15. package/dist/skills/html-renderer/references/index.html +318 -0
  16. package/dist/skills/html-renderer/references/styles.css +388 -0
  17. package/dist/skills/html-renderer/references/tokens.json +104 -0
  18. package/dist/skills/migration/SKILL.md +14 -33
  19. package/dist/skills/orchestrator-framework/references/orchestrator-creation-checklist.md +1 -0
  20. package/dist/skills/orchestrator-framework/references/orchestrator-patterns.md +4 -59
  21. package/dist/skills/performance/SKILL.md +14 -30
  22. package/dist/skills/quick-bugfix/SKILL.md +96 -26
  23. package/dist/skills/research/SKILL.md +11 -42
  24. package/dist/templates/orchestrator-state-base.yml +17 -0
  25. package/dist/templates/orchestrator-state-development.yml +94 -0
  26. package/dist/templates/orchestrator-state-migration.yml +55 -0
  27. package/dist/templates/orchestrator-state-performance.yml +53 -0
  28. package/dist/templates/orchestrator-state-research.yml +61 -0
  29. package/dist/templates/quick-bugfix-task.yml +10 -0
  30. package/dist/templates/quick-dev-task.yml +10 -0
  31. package/dist/templates/quick-plan-task.yml +11 -0
  32. package/dist/tools/verify_template.js +61 -0
  33. package/package.json +4 -3
  34. package/dist/agents/ui-mockup-generator.md +0 -369
  35. package/dist/commands/product-design.md +0 -37
  36. package/dist/skills/product-design/SKILL.md +0 -843
  37. package/dist/skills/product-design/references/characteristic-detection.md +0 -92
  38. package/dist/skills/product-design/references/interaction-patterns.md +0 -206
  39. package/dist/skills/product-design/references/visual-companion.md +0 -190
  40. package/dist/skills/product-design/server/index.js +0 -302
  41. package/dist/skills/product-design/server/index.ts +0 -359
  42. package/dist/skills/product-design/server/template.html +0 -256
@@ -0,0 +1,148 @@
1
+ # Mermaid Diagram Reference
2
+
3
+ Quick reference for selecting and writing diagrams in planning workflows.
4
+
5
+ Hard rule for output artifacts:
6
+ - Every diagram must be emitted only in fenced ` ```mermaid ` blocks.
7
+ - Any other fenced diagram format (for example ` ```c4plantuml ` or ` ```plantuml `) is not allowed.
8
+
9
+ ## Quick Type Selector
10
+
11
+ ```mermaid
12
+ flowchart TD
13
+ inputTask[TaskContext] --> needTime{NeedTimeOrder}
14
+ needTime -->|yes| seq[sequenceDiagram]
15
+ needTime -->|no| needState{NeedStateTransitions}
16
+ needState -->|yes| state[stateDiagram-v2]
17
+ needState -->|no| needArch{NeedArchitectureView}
18
+ needArch -->|yes| c4level{RequiredC4Level}
19
+ c4level -->|system| c4context[C4Context]
20
+ c4level -->|service| c4container[C4Container]
21
+ c4level -->|module| c4component[C4Component]
22
+ needArch -->|no| flow[flowchart]
23
+ ```
24
+
25
+ ## Minimal Templates
26
+
27
+ ### flowchart
28
+
29
+ ```mermaid
30
+ flowchart TD
31
+ start[Start] --> decision{"Condition?"}
32
+ decision -->|"yes"| nextA[PathA]
33
+ decision -->|"no"| nextB[PathB]
34
+ nextA --> done[Done]
35
+ nextB --> done
36
+ ```
37
+
38
+ ### sequenceDiagram
39
+
40
+ ```mermaid
41
+ sequenceDiagram
42
+ participant User
43
+ participant ServiceA
44
+ participant ServiceB
45
+ User->>ServiceA: Request
46
+ alt ValidInput
47
+ ServiceA->>ServiceB: FetchData
48
+ ServiceB-->>ServiceA: Data
49
+ ServiceA-->>User: Success
50
+ else InvalidInput
51
+ ServiceA-->>User: ValidationError
52
+ end
53
+ ```
54
+
55
+ ### stateDiagram-v2
56
+
57
+ ```mermaid
58
+ stateDiagram-v2
59
+ [*] --> Draft
60
+ Draft --> Review: submit
61
+ Review --> Approved: accept
62
+ Review --> Draft: request_changes
63
+ Approved --> [*]
64
+ ```
65
+
66
+ ### C4Context
67
+
68
+ ```mermaid
69
+ C4Context
70
+ Person(user, "User")
71
+ System(targetSystem, "TargetSystem")
72
+ System_Ext(extSystem, "ExternalSystem")
73
+ Rel(user, targetSystem, "Uses")
74
+ Rel(targetSystem, extSystem, "Calls")
75
+ ```
76
+
77
+ ### C4Container
78
+
79
+ ```mermaid
80
+ C4Container
81
+ Person(user, "User")
82
+ System_Boundary(boundary, "TargetSystem") {
83
+ Container(webApp, "WebApp", "React", "UI")
84
+ Container(apiService, "APIService", "Node.js", "Business logic")
85
+ ContainerDb(mainDb, "MainDB", "PostgreSQL", "Persistent storage")
86
+ }
87
+ Rel(user, webApp, "Interacts with")
88
+ Rel(webApp, apiService, "Calls")
89
+ Rel(apiService, mainDb, "Reads/Writes")
90
+ ```
91
+
92
+ ## Anti-Patterns
93
+
94
+ 1. **Domain hallucination (critical)**
95
+ Adding systems/components not present in supplied context.
96
+
97
+ 2. **Abstraction mixing**
98
+ Example: C4 context and function-level call chain in one chart.
99
+
100
+ 3. **Unbounded complexity**
101
+ One giant diagram instead of split views.
102
+
103
+ 4. **Ambiguous naming**
104
+ Non-semantic IDs (`A`, `B`, `step1`) without readable labels.
105
+
106
+ 5. **Sequence misuse**
107
+ Interaction diagram without meaningful order/branches.
108
+
109
+ 6. **Non-Mermaid fenced output (hard failure)**
110
+ Emitting any diagram in a non-`mermaid` fenced block.
111
+
112
+ ## "Bad -> Better" Examples
113
+
114
+ ### Inventing missing context
115
+
116
+ Bad:
117
+ - "Assume we also have Kafka and Redis" (not provided by user/context)
118
+
119
+ Better:
120
+ - "Current context is missing messaging/storage components. Please confirm whether any queue/cache exists."
121
+
122
+ ### Mixed detail levels
123
+
124
+ Bad:
125
+ - One diagram contains external systems, services, and method-level internals.
126
+
127
+ Better:
128
+ - Diagram 1: C4 context/container; Diagram 2: sequence for one critical interaction.
129
+
130
+ ## Parser Safety Notes
131
+
132
+ - Use quoted labels for text with special characters.
133
+ - Avoid fragile IDs and reserved keywords.
134
+ - Prefer clear ASCII names for IDs.
135
+ - Keep one diagram focused on one communication concern.
136
+
137
+ ## Integration Candidates
138
+
139
+ Integrated into:
140
+ - `src/skills/flow-init/SKILL.md` - Phase 6 (architecture and tech-stack doc refinement)
141
+ - `src/skills/development/SKILL.md` - Phase 5 (spec refinement), Phase 7 (plan refinement)
142
+ - `src/skills/research/SKILL.md` - Phase 5 (high-level design refinement)
143
+ - `src/skills/performance/SKILL.md` - Phase 3 (spec refinement), Phase 5 (plan refinement)
144
+ - `src/skills/migration/SKILL.md` - Phase 3 (spec refinement), Phase 4 (plan refinement)
145
+
146
+ Reference files:
147
+ - `src/skills/flow-init/references/architecture-template.md`
148
+ - `src/skills/orchestrator-framework/references/orchestrator-patterns.md`
@@ -146,6 +146,21 @@ Fill templates using:
146
146
 
147
147
  Write each file to `.owflow/docs/project/`.
148
148
 
149
+ **Diagram refinement (content-preserving, do NOT replace prose):**
150
+
151
+ - If Architecture doc is selected and `.owflow/docs/project/architecture.md` exists:
152
+ 1. Invoke Skill tool: `diagrams-mermaid`
153
+ 2. Pass context from analysis + generated architecture content
154
+ 3. Add Mermaid sections that **refine** the document:
155
+ - `## Visual Architecture Context` (prefer `C4Context` or `C4Container`)
156
+ - `## Component Communication Flow` (prefer `sequenceDiagram` or `flowchart`)
157
+ 4. Keep existing architecture narrative intact; diagrams must supplement, not replace sections.
158
+
159
+ - If Tech Stack doc is selected and `.owflow/docs/project/tech-stack.md` exists:
160
+ 1. Invoke Skill tool: `diagrams-mermaid`
161
+ 2. Add one lightweight visual section (e.g., runtime/build dependency flow) only if context is sufficient
162
+ 3. If context is insufficient, keep text-only output and list missing details (no invented dependencies).
163
+
149
164
  ---
150
165
 
151
166
  ## PHASE 7: Validate
@@ -0,0 +1,159 @@
1
+ ---
2
+ name: html-renderer
3
+ description: Render a markdown plan, idea, RFC, or design note into a self-contained, share-ready HTML file using the warm editorial visual system bundled under `references/`. Use this skill whenever the user asks to "render", "convert", "turn into HTML", "make a nice HTML version", "share this as a page", or "make this look good" for a markdown file containing a plan, proposal, idea, brief, RFC, design note, or pitch — even if they don't explicitly say "HTML". The output is a single .html file with all CSS inlined, written next to the source .md, that visually matches the reference layout in `references/index.html` and uses tokens from `references/tokens.json`.
4
+ disable-model-invocation: true
5
+ user-invocable: true
6
+ ---
7
+
8
+ # HTML Renderer
9
+
10
+ Turn a markdown plan/idea/RFC into a single self-contained HTML page that follows the warm editorial design system bundled in this skill.
11
+
12
+ ## When to use
13
+
14
+ The user gives you a markdown file (or pastes markdown) describing a plan, idea, proposal, RFC, design note, or brief, and wants a clean HTML representation they can share. Output is *always* a portable single-file `.html` with the stylesheet inlined — no external assets, no JS.
15
+
16
+ This skill is opt-in: it does not auto-trigger. The user invokes it explicitly.
17
+
18
+ ## Inputs and outputs
19
+
20
+ - **Input**: path to a `.md` file (or raw markdown content). If raw markdown is provided, ask for a filename stem.
21
+ - **Output**: write `<source-basename>.html` in the same directory as the source `.md`. If the source is `~/notes/q4-plan.md`, output is `~/notes/q4-plan.html`.
22
+ - **Self-contained**: inline the full stylesheet inside a single `<style>` block in `<head>`. Do not link to external CSS, fonts (use the font stacks already in tokens — they fall back to system fonts), or images that aren't already in the source. The one allowed external script is Mermaid (see "Mermaid diagrams" below), and only when the source contains at least one ` ```mermaid ` fence.
23
+ - **Title**: use the first `# H1` from the markdown as `<title>`; if none, fall back to the file's basename humanized.
24
+
25
+ ## Reference files (read these before writing output)
26
+
27
+ The `references/` folder is the source of truth for the visual system. Read each file once at the start of a rendering task so the output matches:
28
+
29
+ - `references/index.html` — canonical reference page showing every component (heading scale, text block, cards, table, diagram, quote, highlights). Use it as the structural template: the output should look like a variant of this page filled with the user's content.
30
+ - `references/styles.css` — every `hr-*` class definition. **Copy this verbatim into the inlined `<style>` block** of the output. Do not paraphrase, rewrite, or trim it; the classes you emit in the HTML must resolve against these exact rules.
31
+ - `references/tokens.json` — design tokens (colors, spacing, radius, typography). The CSS already consumes these via `:root` variables, so tokens.json is mostly informational — consult it only if the user asks to tweak colors/spacing or when you need to add a new component that should harmonize with existing tokens.
32
+
33
+ Reuse existing classes and tokens before inventing anything. If the user asks for something genuinely new, declare any new CSS variables in `:root` using the same naming pattern, and keep class names prefixed with `hr-`.
34
+
35
+ ## Workflow
36
+
37
+ 1. **Resolve input**: confirm the source markdown path; read the file.
38
+ 2. **Load references**: read `references/index.html` (structure), `references/styles.css` (full CSS to inline), and `references/tokens.json` (only if you need token values).
39
+ 3. **Plan structure**: scan the markdown and decide how to group content into `<section class="hr-section hr-stack">` blocks. Each top-level `##` typically opens a new section.
40
+ 4. **Map elements** using the mapping table below.
41
+ 5. **Assemble** a single HTML document:
42
+ - `<!doctype html>` + `<html lang="en">` + `<head>` with `<meta charset>`, `<meta viewport>`, `<title>`, and a `<style>` block containing the *entire* contents of `references/styles.css`.
43
+ - `<body>` containing `<main class="hr-page">` wrapping the sectioned content.
44
+ 6. **Write** the file as `<basename>.html` next to the source.
45
+ 7. **Verify**: re-open the output and confirm every `class="hr-..."` you emitted exists in the inlined CSS.
46
+
47
+ ## Markdown → HTML mapping
48
+
49
+ | Markdown | HTML |
50
+ |---|---|
51
+ | `# Title` (first one) | `<h1 class="hr-heading-h1">` (also sets `<title>`) |
52
+ | `##`, `###`, `####` | `<h2 class="hr-heading-h2">`, `<h3 class="hr-heading-h3">`, `<h4 class="hr-heading-h4">` |
53
+ | Eyebrow line (italic small intro before H1, e.g. `_Reference Base_`) | `<span class="hr-heading-eyebrow">` |
54
+ | Paragraphs & lists in narrative flow | wrap in `<div class="hr-text-block hr-stack">` |
55
+ | Short summary paragraph right under H1 | `<p class="hr-text-muted">` |
56
+ | Unordered/ordered lists | plain `<ul>`/`<ol>` inside `hr-text-block` |
57
+ | `**bold**` / `*italic*` | `<strong>` / `<em>` |
58
+ | Inline `` `code` `` | `<code>` |
59
+ | Links `[text](url)` | `<a href="url">text</a>` |
60
+ | Horizontal rule `---` | new `<section class="hr-section hr-stack">` (prefer sectioning over `<hr>`) |
61
+ | Tables | `<div class="hr-table-wrap"><table class="hr-table">…</table></div>` |
62
+ | Blockquote `>` | `<blockquote class="hr-quote">`; if the last line starts with `— `, render as `<footer>` |
63
+ | ` ```mermaid ` code fence | `<div class="hr-diagram"><div class="mermaid">…raw mermaid source, **not** HTML-escaped…</div></div>` (also include the Mermaid script described in "Mermaid diagrams" below) |
64
+ | Any other fenced code | `<pre><code>…</code></pre>` (escape `<`, `>`, `&`) |
65
+ | Admonitions — lines starting with `> [!NOTE]`, `> [!WARNING]`, `> [!IMPORTANT]` (GitHub-style) or sections prefixed `**Note:**`, `**Warning:**`, `**Important:**` | `<aside class="hr-highlight hr-highlight-{note\|warning\|important}">` with `<p class="hr-highlight-title">` for the label |
66
+ | Card-like content — a bolded title followed by 1–3 lines, especially in a list of similar items | `<article class="hr-card">` with `<h3 class="hr-card-title">` and `<p class="hr-card-text">`. Wrap multiple cards in `<div class="hr-grid">` (auto-fit). For fixed layouts use `hr-grid-2`, `hr-grid-3`, `hr-grid-4`, `hr-grid-feature` (2fr/1fr/1fr with `hr-card-featured` first), or `hr-grid-sidebar` (2fr/1fr). Mark the most important card as `hr-card-featured`. |
67
+ | Tags / labels (e.g. `[Priority]`, `[Default]`) | `<span class="hr-badge">` |
68
+
69
+ When the markdown is ambiguous (e.g., "is this a card or a paragraph?"), prefer the simpler choice: text block first, cards only when the content is clearly a set of parallel small items.
70
+
71
+ ## Rendering rules
72
+
73
+ 1. Every class you emit must be prefixed `hr-` and must exist in `references/styles.css`. If you need a new one, also add its rule to the inlined `<style>` and (if it relies on a new token) extend `:root`.
74
+ 2. No inline `style="…"` attributes unless the user explicitly asks for a one-off override.
75
+ 3. Favor semantic tags (`section`, `article`, `aside`, `blockquote`, `table`, `figure`) and apply `hr-*` classes on top of them.
76
+ 4. Escape HTML special characters in content (`<`, `>`, `&`) so user prose never breaks the page.
77
+ 5. **Keep the output a single file with zero external dependencies** — it must render correctly when opened directly in a browser. The one exception is the Mermaid CDN script, which is only injected when ` ```mermaid ` fences are present; users will need network access to see those diagrams render (the raw mermaid source remains in the DOM as a graceful fallback).
78
+
79
+ ## Mermaid diagrams
80
+
81
+ When the source markdown contains one or more ` ```mermaid ` fences:
82
+
83
+ 1. Render each fence as:
84
+ ```html
85
+ <div class="hr-diagram">
86
+ <div class="mermaid">
87
+ …raw mermaid source, preserved verbatim, NOT HTML-escaped…
88
+ </div>
89
+ </div>
90
+ ```
91
+ Mermaid replaces the inner text with an SVG at page load, so the content must stay as plain text (do not wrap it in `<pre><code>` and do not escape `<`, `>`, `&` — mermaid needs the original characters).
92
+ 2. Inject the Mermaid script + initializer immediately before `</body>`, exactly once per document:
93
+ ```html
94
+ <script src="https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.min.js"></script>
95
+ <script>
96
+ window.mermaid &&
97
+ mermaid.initialize({ startOnLoad: true, theme: "neutral", securityLevel: "loose" });
98
+ </script>
99
+ ```
100
+ 3. If the markdown has no ` ```mermaid ` fences, **do not** add the script — keep the output fully offline.
101
+
102
+ ## Minimal example
103
+
104
+ Input (`idea.md`):
105
+ ```markdown
106
+ # Lightweight RFC inbox
107
+
108
+ A small daily ritual to capture half-formed ideas without losing them.
109
+
110
+ ## Why
111
+ Ideas evaporate within a day if there's no easy capture path.
112
+
113
+ ## How
114
+ - One markdown file per idea
115
+ - Rendered to HTML on demand for sharing
116
+
117
+ > [!NOTE]
118
+ > This is intentionally low-tech: no database, no auth.
119
+ ```
120
+
121
+ Output (`idea.html`, abbreviated):
122
+ ```html
123
+ <!doctype html>
124
+ <html lang="en">
125
+ <head>
126
+ <meta charset="UTF-8" />
127
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
128
+ <title>Lightweight RFC inbox</title>
129
+ <style>/* entire contents of references/styles.css inlined here */</style>
130
+ </head>
131
+ <body>
132
+ <main class="hr-page">
133
+ <section class="hr-section hr-stack">
134
+ <h1 class="hr-heading-h1">Lightweight RFC inbox</h1>
135
+ <p class="hr-text-muted">A small daily ritual to capture half-formed ideas without losing them.</p>
136
+ </section>
137
+ <section class="hr-section hr-stack">
138
+ <h2 class="hr-heading-h2">Why</h2>
139
+ <div class="hr-text-block hr-stack">
140
+ <p>Ideas evaporate within a day if there's no easy capture path.</p>
141
+ </div>
142
+ </section>
143
+ <section class="hr-section hr-stack">
144
+ <h2 class="hr-heading-h2">How</h2>
145
+ <div class="hr-text-block hr-stack">
146
+ <ul>
147
+ <li>One markdown file per idea</li>
148
+ <li>Rendered to HTML on demand for sharing</li>
149
+ </ul>
150
+ </div>
151
+ <aside class="hr-highlight hr-highlight-note">
152
+ <p class="hr-highlight-title">Note</p>
153
+ <p>This is intentionally low-tech: no database, no auth.</p>
154
+ </aside>
155
+ </section>
156
+ </main>
157
+ </body>
158
+ </html>
159
+ ```
@@ -0,0 +1,318 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>HTML Renderer Reference</title>
7
+ <link rel="stylesheet" href="./styles.css" />
8
+ </head>
9
+ <body>
10
+ <main class="hr-page">
11
+ <section class="hr-section hr-stack">
12
+ <span class="hr-heading-eyebrow">Reference Base</span>
13
+ <h1 class="hr-heading-h1">Warm editorial HTML component reference</h1>
14
+ <p class="hr-text-muted">
15
+ This page demonstrates all required building blocks for markdown to
16
+ HTML output.
17
+ </p>
18
+ </section>
19
+
20
+ <section class="hr-section hr-stack">
21
+ <h2 class="hr-heading-h2">Heading scale</h2>
22
+ <h1 class="hr-heading-h1">H1 Display Headline</h1>
23
+ <h2 class="hr-heading-h2">H2 Section Headline</h2>
24
+ <h3 class="hr-heading-h3">H3 Subsection Headline</h3>
25
+ <h4 class="hr-heading-h4">H4 Utility Headline</h4>
26
+ </section>
27
+
28
+ <section class="hr-section hr-stack">
29
+ <h2 class="hr-heading-h2">Text block</h2>
30
+ <div class="hr-text-block hr-stack">
31
+ <p>
32
+ Text blocks should carry the main narrative, with generous line
33
+ height and warm contrast against the canvas.
34
+ </p>
35
+ <p>
36
+ Lists remain simple and semantic, while styles stay tied to global
37
+ tokens.
38
+ </p>
39
+ <ul>
40
+ <li>Use one visual rhythm across all paragraphs.</li>
41
+ <li>Keep spacing and emphasis token-based.</li>
42
+ <li>Avoid local one-off colors in content blocks.</li>
43
+ </ul>
44
+ </div>
45
+ </section>
46
+
47
+ <section class="hr-section hr-stack">
48
+ <h2 class="hr-heading-h2">Cards</h2>
49
+ <div class="hr-grid">
50
+ <article class="hr-card">
51
+ <h3 class="hr-card-title">Default content card</h3>
52
+ <p class="hr-card-text">
53
+ Standard container for summaries, supporting notes, and grouped
54
+ metadata.
55
+ </p>
56
+ <span class="hr-badge">Default</span>
57
+ </article>
58
+
59
+ <article class="hr-card hr-card-featured">
60
+ <h3 class="hr-card-title">Featured surface card</h3>
61
+ <p class="hr-card-text">
62
+ High-emphasis card for key outcomes, strategic calls to action,
63
+ or highlighted analysis.
64
+ </p>
65
+ <span class="hr-badge">Priority</span>
66
+ </article>
67
+ </div>
68
+ </section>
69
+
70
+ <section class="hr-section hr-stack">
71
+ <h2 class="hr-heading-h2">Table</h2>
72
+ <div class="hr-table-wrap">
73
+ <table class="hr-table">
74
+ <thead>
75
+ <tr>
76
+ <th>Element</th>
77
+ <th>Purpose</th>
78
+ <th>Main token group</th>
79
+ <th>Priority</th>
80
+ </tr>
81
+ </thead>
82
+ <tbody>
83
+ <tr>
84
+ <td>Card</td>
85
+ <td>Grouped content blocks</td>
86
+ <td>surface + radius + spacing</td>
87
+ <td>High</td>
88
+ </tr>
89
+ <tr>
90
+ <td>Quote</td>
91
+ <td>Context and citations</td>
92
+ <td>primary + display typography</td>
93
+ <td>Medium</td>
94
+ </tr>
95
+ <tr>
96
+ <td>Highlight</td>
97
+ <td>Important callouts</td>
98
+ <td>semantic + border accent</td>
99
+ <td>High</td>
100
+ </tr>
101
+ </tbody>
102
+ </table>
103
+ </div>
104
+ </section>
105
+
106
+ <section class="hr-section hr-stack">
107
+ <h2 class="hr-heading-h2">Diagram container</h2>
108
+
109
+ <h3 class="hr-heading-h3">Flowchart</h3>
110
+ <div class="hr-diagram">
111
+ <div class="mermaid">
112
+ flowchart TD
113
+ markdownInput[MarkdownInput] --> semanticParse[SemanticParse]
114
+ semanticParse --> componentSelect[ComponentSelect]
115
+ componentSelect --> tokenBind[TokenBinding]
116
+ tokenBind --> htmlOutput[HtmlOutput]
117
+ </div>
118
+ </div>
119
+
120
+ <h3 class="hr-heading-h3">Sequence diagram</h3>
121
+ <div class="hr-diagram">
122
+ <div class="mermaid">
123
+ sequenceDiagram
124
+ participant U as User
125
+ participant CLI as Copilot CLI
126
+ participant S as html-renderer skill
127
+ participant FS as Filesystem
128
+ U->>CLI: render notes.md
129
+ CLI->>S: invoke skill
130
+ S->>FS: read notes.md + references/
131
+ S->>FS: write notes.html
132
+ S-->>CLI: done
133
+ CLI-->>U: open notes.html
134
+ </div>
135
+ </div>
136
+
137
+ <h3 class="hr-heading-h3">State diagram</h3>
138
+ <div class="hr-diagram">
139
+ <div class="mermaid">
140
+ stateDiagram-v2
141
+ [*] --> Draft
142
+ Draft --> Review: submit
143
+ Review --> Draft: request changes
144
+ Review --> Approved: accept
145
+ Approved --> Published: publish
146
+ Published --> [*]
147
+ </div>
148
+ </div>
149
+
150
+ <h3 class="hr-heading-h3">Entity relationship</h3>
151
+ <div class="hr-diagram">
152
+ <div class="mermaid">
153
+ erDiagram
154
+ AUTHOR ||--o{ DOCUMENT : writes
155
+ DOCUMENT ||--|{ SECTION : contains
156
+ SECTION ||--o{ BLOCK : contains
157
+ AUTHOR {
158
+ string id PK
159
+ string name
160
+ }
161
+ DOCUMENT {
162
+ string id PK
163
+ string title
164
+ string authorId FK
165
+ }
166
+ </div>
167
+ </div>
168
+ </section>
169
+
170
+ <section class="hr-section hr-stack">
171
+ <h2 class="hr-heading-h2">Grid templates</h2>
172
+
173
+ <h3 class="hr-heading-h3">Two columns</h3>
174
+ <div class="hr-grid hr-grid-2">
175
+ <article class="hr-card">
176
+ <h3 class="hr-card-title">Left column</h3>
177
+ <p class="hr-card-text">Equal-width cells. Good for compare/contrast pairs.</p>
178
+ </article>
179
+ <article class="hr-card">
180
+ <h3 class="hr-card-title">Right column</h3>
181
+ <p class="hr-card-text">Stacks to a single column under 720px.</p>
182
+ </article>
183
+ </div>
184
+
185
+ <h3 class="hr-heading-h3">Three columns</h3>
186
+ <div class="hr-grid hr-grid-3">
187
+ <article class="hr-card">
188
+ <h3 class="hr-card-title">Discover</h3>
189
+ <p class="hr-card-text">Frame the problem and surface signals.</p>
190
+ </article>
191
+ <article class="hr-card">
192
+ <h3 class="hr-card-title">Decide</h3>
193
+ <p class="hr-card-text">Pick an approach with a clear rationale.</p>
194
+ </article>
195
+ <article class="hr-card">
196
+ <h3 class="hr-card-title">Deliver</h3>
197
+ <p class="hr-card-text">Ship in small, verifiable steps.</p>
198
+ </article>
199
+ </div>
200
+
201
+ <h3 class="hr-heading-h3">Four columns</h3>
202
+ <div class="hr-grid hr-grid-4">
203
+ <article class="hr-card">
204
+ <h3 class="hr-card-title">Spec</h3>
205
+ <p class="hr-card-text">Define what success looks like.</p>
206
+ </article>
207
+ <article class="hr-card">
208
+ <h3 class="hr-card-title">Plan</h3>
209
+ <p class="hr-card-text">Sequence the work into task groups.</p>
210
+ </article>
211
+ <article class="hr-card">
212
+ <h3 class="hr-card-title">Build</h3>
213
+ <p class="hr-card-text">Implement against the plan.</p>
214
+ </article>
215
+ <article class="hr-card">
216
+ <h3 class="hr-card-title">Verify</h3>
217
+ <p class="hr-card-text">Prove the outcome with tests.</p>
218
+ </article>
219
+ </div>
220
+
221
+ <h3 class="hr-heading-h3">Featured + supporting (2 / 1)</h3>
222
+ <div class="hr-grid hr-grid-feature">
223
+ <article class="hr-card hr-card-featured">
224
+ <h3 class="hr-card-title">Primary outcome</h3>
225
+ <p class="hr-card-text">
226
+ A wide, high-emphasis card that anchors the section while the
227
+ two narrow cards carry supporting detail.
228
+ </p>
229
+ <span class="hr-badge">Priority</span>
230
+ </article>
231
+ <article class="hr-card">
232
+ <h3 class="hr-card-title">Supporting note</h3>
233
+ <p class="hr-card-text">Context that complements the primary outcome.</p>
234
+ </article>
235
+ <article class="hr-card">
236
+ <h3 class="hr-card-title">Supporting note</h3>
237
+ <p class="hr-card-text">Additional context, kept secondary.</p>
238
+ </article>
239
+ </div>
240
+
241
+ <h3 class="hr-heading-h3">Content + sidebar</h3>
242
+ <div class="hr-grid hr-grid-sidebar">
243
+ <article class="hr-card">
244
+ <h3 class="hr-card-title">Main content</h3>
245
+ <p class="hr-card-text">
246
+ A wider primary cell paired with a narrower companion. Use for
247
+ feature descriptions with quick-reference metadata to the side.
248
+ </p>
249
+ </article>
250
+ <aside class="hr-card">
251
+ <h3 class="hr-card-title">At a glance</h3>
252
+ <p class="hr-card-text">Status, owner, last update, links.</p>
253
+ <span class="hr-badge">Meta</span>
254
+ </aside>
255
+ </div>
256
+
257
+ <h3 class="hr-heading-h3">Auto-fit (default)</h3>
258
+ <div class="hr-grid">
259
+ <article class="hr-card">
260
+ <h3 class="hr-card-title">Auto-fit cell</h3>
261
+ <p class="hr-card-text">Reflows from 1 to N columns based on viewport width.</p>
262
+ </article>
263
+ <article class="hr-card">
264
+ <h3 class="hr-card-title">Auto-fit cell</h3>
265
+ <p class="hr-card-text">Each cell respects a 260px minimum.</p>
266
+ </article>
267
+ <article class="hr-card">
268
+ <h3 class="hr-card-title">Auto-fit cell</h3>
269
+ <p class="hr-card-text">Best default when card count is unknown.</p>
270
+ </article>
271
+ </div>
272
+ </section>
273
+
274
+ <section class="hr-section hr-stack">
275
+ <h2 class="hr-heading-h2">Quote</h2>
276
+ <blockquote class="hr-quote">
277
+ <p>
278
+ Great readability comes from predictable rhythm, not from visual
279
+ noise.
280
+ </p>
281
+ <footer>Design rule for long-form interface blocks</footer>
282
+ </blockquote>
283
+ </section>
284
+
285
+ <section class="hr-section hr-stack">
286
+ <h2 class="hr-heading-h2">Important highlights</h2>
287
+
288
+ <aside class="hr-highlight hr-highlight-note">
289
+ <p class="hr-highlight-title">Note</p>
290
+ <p>
291
+ Use this variant for neutral guidance and implementation tips.
292
+ </p>
293
+ </aside>
294
+
295
+ <aside class="hr-highlight hr-highlight-warning">
296
+ <p class="hr-highlight-title">Warning</p>
297
+ <p>
298
+ Use this variant for constraints that may break consistency or
299
+ accessibility.
300
+ </p>
301
+ </aside>
302
+
303
+ <aside class="hr-highlight hr-highlight-important">
304
+ <p class="hr-highlight-title">Important</p>
305
+ <p>
306
+ Use this variant for decisions that affect rendering output and
307
+ shared conventions.
308
+ </p>
309
+ </aside>
310
+ </section>
311
+ </main>
312
+ <script src="https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.min.js"></script>
313
+ <script>
314
+ window.mermaid &&
315
+ mermaid.initialize({ startOnLoad: true, theme: "neutral", securityLevel: "loose" });
316
+ </script>
317
+ </body>
318
+ </html>