markawesome-skill 0.1.0

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.
@@ -0,0 +1,137 @@
1
+ # Layouts
2
+
3
+ Grid · Stack · Cluster · Split · Flank · Frame
4
+
5
+ Layouts use the `::::` (**quadruple colon**) fence and map to Web Awesome CSS
6
+ utility containers (`<div class="wa-grid">`, etc.). They **wrap** components —
7
+ put cards, callouts, tags inside a layout; never put a layout inside a component.
8
+ Inner content is passed through untouched, so component `:::`/`===`/`@@@` syntax
9
+ inside a layout transforms normally.
10
+
11
+ - **Primary:** `::::type params?` … `::::`
12
+ - **Alt:** `::::wa-type params?` … `::::`
13
+
14
+ ## Shared attributes (all six layouts)
15
+
16
+ - **`gap:SIZE`** — spacing between items. Scale: `0`, `3xs`, `2xs`, `xs`, `s`,
17
+ `m`, `l`, `xl`, `2xl`, `3xl`, `4xl`, `5xl`.
18
+ - **`align:VALUE`** — align items: `start`, `end`, `center`, `stretch`,
19
+ `baseline`.
20
+ - **`justify:VALUE`** — justify content: `start`, `end`, `center`,
21
+ `space-between`, `space-around`, `space-evenly`.
22
+
23
+ Unknown gap/align/justify values are dropped, so a typo just has no effect.
24
+
25
+ ## Grid
26
+
27
+ A responsive auto-wrapping grid — no media queries. The default layout for a
28
+ *set* of cards.
29
+
30
+ - **Extra attribute:** `min:CSS` — minimum column size before wrapping (e.g.
31
+ `min:300px`, `min:20ch`, `min:15rem`).
32
+
33
+ ```
34
+ ::::grid gap:l min:16rem
35
+ ===
36
+ **Fast**
37
+ Sub-second builds.
38
+ ===
39
+
40
+ ===
41
+ **Themeable**
42
+ Restyle with design tokens.
43
+ ===
44
+
45
+ ===
46
+ **Portable**
47
+ Works with any static site generator.
48
+ ===
49
+ ::::
50
+ ```
51
+
52
+ ## Stack
53
+
54
+ A vertical stack with consistent spacing — use it to give a run of blocks even
55
+ rhythm.
56
+
57
+ ```
58
+ ::::stack gap:m
59
+ :::info
60
+ First note.
61
+ :::
62
+
63
+ :::success
64
+ Second note.
65
+ :::
66
+ ::::
67
+ ```
68
+
69
+ ## Cluster
70
+
71
+ Inline items that wrap — perfect for a tag cloud, a button row, or an icon list.
72
+
73
+ ```
74
+ ::::cluster gap:xs
75
+ @@@brand Ruby @@@ @@@success Jekyll @@@ @@@neutral Markdown @@@ @@@warning Beta @@@
76
+ ::::
77
+ ```
78
+
79
+ ## Split
80
+
81
+ Distributes items to opposite ends — the classic header / footer / nav-bar
82
+ pattern.
83
+
84
+ - **Extra modifiers:** `row` (horizontal, default) or `column` (vertical).
85
+
86
+ ```
87
+ ::::split
88
+ **© 2026 Example, Inc.**
89
+
90
+ [Privacy](/privacy) | [Terms](/terms)
91
+ ::::
92
+ ```
93
+
94
+ ## Flank
95
+
96
+ A sidebar beside main content; the flank wraps below on small screens.
97
+
98
+ - **Modifiers:** `start` (flank on the start side, default) or `end`.
99
+ - **Extra attributes:** `size:CSS` (flank size, e.g. `size:200px`, `size:15rem`),
100
+ `content:PCT` (minimum content width, e.g. `content:70%`).
101
+
102
+ ```
103
+ ::::flank start size:220px gap:l
104
+ ![Avatar](/img/avatar.jpg)
105
+
106
+ ## About the author
107
+ A short bio goes here, beside the portrait.
108
+ ::::
109
+ ```
110
+
111
+ ## Frame
112
+
113
+ An aspect-ratio container for images and media.
114
+
115
+ - **Modifiers:** `landscape` (16:9), `portrait` (9:16), `square` (1:1).
116
+ - **Extra attribute:** `radius:SIZE` — `s`, `m`, `l`, `pill`, `circle`, `square`.
117
+
118
+ ```
119
+ ::::frame landscape radius:l
120
+ <img src="/img/hero.jpg" alt="Product hero">
121
+ ::::
122
+ ```
123
+
124
+ > **Frame + images:** use a raw `<img>` tag inside a frame. Markdown image syntax
125
+ > may not be processed inside layout containers, so `![alt](src)` can fail to
126
+ > render there — this is the one place to drop to HTML. Elsewhere, Markdown
127
+ > images work normally.
128
+
129
+ ## Nesting
130
+
131
+ - Components nest **inside** layouts: a `::::grid` of `===` cards, a `::::cluster`
132
+ of `@@@` tags, a `::::stack` of `:::` callouts.
133
+ - Layouts may nest inside layouts when it genuinely helps (a `::::split` header
134
+ above a `::::grid` body), but keep it shallow — deep nesting is hard to read and
135
+ rarely necessary.
136
+ - Do **not** nest a layout inside a component body (no `::::grid` inside a `===`
137
+ card). Component bodies hold prose and inline components, not block layouts.
@@ -0,0 +1,249 @@
1
+ # When to use what — the decision guide
2
+
3
+ This is the proactive core. Match the **shape of the content** in front of you to
4
+ a component, reach for it, and write it. Every snippet below is generic — swap in
5
+ the real content. For exact attributes, open the linked component reference.
6
+
7
+ ## Content shape → component
8
+
9
+ ### A paragraph that warns, cautions, or flags a prerequisite → Callout
10
+
11
+ Prose like "Note that…", "Be careful…", "You must first…", "This will delete…"
12
+ is a callout. Pick the type by severity:
13
+
14
+ - `:::info` / `:::brand` — a neutral note or tip.
15
+ - `:::success` — a confirmation, a "you're done" state.
16
+ - `:::warning` — something that can go wrong or needs care.
17
+ - `:::danger` — data loss, irreversible or destructive actions, errors.
18
+ - `:::neutral` — a low-key aside.
19
+
20
+ ```
21
+ :::warning
22
+ Rotating your API key invalidates every existing token immediately. Update your
23
+ deployed services before rotating.
24
+ :::
25
+ ```
26
+
27
+ → `components-content.md`. Don't turn *every* sentence into a callout — reserve
28
+ them for genuinely elevated information (see anti-patterns).
29
+
30
+ ### A bulleted list where each item is a self-contained unit → Card grid
31
+
32
+ Three features, three pricing tiers, three linked resources — each with a title
33
+ and a sentence or two — read far better as cards in a responsive grid than as a
34
+ bullet list.
35
+
36
+ ```
37
+ ::::grid gap:l min:16rem
38
+ ===
39
+ **Fast**
40
+ Zero-config, sub-second builds.
41
+ ===
42
+
43
+ ===
44
+ **Framework-agnostic**
45
+ Works with any static site generator.
46
+ ===
47
+
48
+ ===
49
+ **Themeable**
50
+ Restyle everything with design tokens.
51
+ ===
52
+ ::::
53
+ ```
54
+
55
+ → `layouts.md` (grid) + `components-content.md` (card). One card alone is fine
56
+ too; the grid is what makes a *set* of them shine.
57
+
58
+ ### "On macOS… / On Windows…", or the same thing in several languages → Tabs
59
+
60
+ Parallel alternatives where the reader wants **one** of them — per-OS install
61
+ steps, the same API call in curl / JS / Python, an A/B choice — are tabs.
62
+
63
+ ```
64
+ ++++++
65
+ +++ macOS
66
+ `brew install example`
67
+ +++
68
+ +++ Windows
69
+ `winget install example`
70
+ +++
71
+ ++++++
72
+ ```
73
+
74
+ → `components-interactive.md`. If the alternatives are meant to be read
75
+ *together* (a comparison), use a table or a `::::grid` instead.
76
+
77
+ ### A list of question → answer pairs → Accordion
78
+
79
+ An FAQ, a set of collapsible doc sections, "common problems" — a *group* of
80
+ headers that expand — is an accordion. (One lone collapsible block is Details,
81
+ below.)
82
+
83
+ ```
84
+ //////single
85
+ /// Is it free?
86
+ The core library is free and open source.
87
+ ///
88
+ /// Does it need a build step?
89
+ No — it runs at your site's build time.
90
+ ///
91
+ //////
92
+ ```
93
+
94
+ → `components-interactive.md`.
95
+
96
+ ### One block of optional / advanced / "click for details" content → Details
97
+
98
+ A single spoiler, an advanced-config aside, a long stack trace you don't want
99
+ inline — one collapsible section — is Details, not an accordion.
100
+
101
+ ```
102
+ ^^^
103
+ Show the full configuration
104
+ >>>
105
+ ```yaml
106
+ verbose: true
107
+ retries: 5
108
+ ```
109
+ ^^^
110
+ ```
111
+
112
+ → `components-interactive.md`.
113
+
114
+ ### A term that needs a short definition → Tooltip
115
+
116
+ A jargon word, an acronym, a field whose format needs explaining — anything where
117
+ you'd otherwise write "(i.e., …)" — is an inline tooltip.
118
+
119
+ ```
120
+ Styled with (((CSS >>> Cascading Style Sheets))) and shipped as one file.
121
+ ```
122
+
123
+ → `components-interactive.md`. For a *rich* floating block (markdown, links) on
124
+ hover, use a Popover instead.
125
+
126
+ ### A command, URL, token, or config value the reader will copy → Copy button
127
+
128
+ Anything a reader will select-and-copy — an install command, a connection string,
129
+ an API endpoint — should carry a copy button so they don't have to hand-select.
130
+
131
+ ```
132
+ <<<
133
+ npm install markawesome-js
134
+ <<<
135
+ ```
136
+
137
+ → `components-content.md`.
138
+
139
+ ### A status or category label inline in prose or a heading → Tag or Badge
140
+
141
+ - **Tag** (`@@@`) — a category/status label with a variant color: `New`, `Beta`,
142
+ `Deprecated`, a topic. Works inline mid-sentence or as a block.
143
+ - **Badge** (`!!!`) — a compact count or status chip, often demanding attention
144
+ with `pulse` / `bounce` (a notification count, a "3 new" marker).
145
+
146
+ ```
147
+ The @@@warning Deprecated @@@ endpoint is removed in v2.
148
+ ```
149
+
150
+ → `components-content.md`.
151
+
152
+ ### A call to action or a link that should look like a button → Button
153
+
154
+ "Get started", "Download", "View docs" — a prominent link — is a button. Include
155
+ a markdown link to make it navigate; omit it for a plain (JS-wired) button.
156
+
157
+ ```
158
+ %%%brand
159
+ [Get started](https://example.com/start)
160
+ %%%
161
+ ```
162
+
163
+ → `components-content.md`.
164
+
165
+ ### A before/after pair of images → Comparison
166
+
167
+ A redesign, a filter on/off, an edit diff — two images the reader drags between —
168
+ is a comparison slider.
169
+
170
+ ```
171
+ |||
172
+ ![Before](before.jpg)
173
+ ![After](after.jpg)
174
+ |||
175
+ ```
176
+
177
+ → `components-media.md`.
178
+
179
+ ### A gallery or sequential visual steps → Carousel
180
+
181
+ Multiple images or slides the reader pages through — a screenshot gallery, a
182
+ step-by-step walkthrough — is a carousel.
183
+
184
+ → `components-media.md`.
185
+
186
+ ### A file/directory layout or nested hierarchy → Tree
187
+
188
+ Anywhere you'd draw an ASCII file tree, or show nested navigation/taxonomy, use a
189
+ Tree — it's just an indented bullet list inside a `||||||` fence.
190
+
191
+ ```
192
+ ||||||open
193
+ - icon:folder src
194
+ - icon:file index.ts
195
+ - icon:file utils.ts
196
+ - icon:file README.md
197
+ ||||||
198
+ ```
199
+
200
+ → `components-interactive.md`.
201
+
202
+ ### Rotating tips / testimonials / featured content → Random content
203
+
204
+ A "tip of the day", a rotating testimonial, a featured item that varies per load
205
+ — with **no JavaScript of your own** — is random content.
206
+
207
+ → `components-interactive.md`.
208
+
209
+ ### A published/updated date → Format date or Relative time
210
+
211
+ "Published June 26, 2026" → `[[[2026-06-26 style:long]]]`. "Updated 3 days ago" →
212
+ `[[[relative 2026-06-20]]]`. Both localize in the browser.
213
+
214
+ → `components-media.md`.
215
+
216
+ ### A sidebar-plus-content or header-with-actions section → Layout
217
+
218
+ - Sidebar + main → `::::flank`.
219
+ - Two things pushed to opposite ends (logo left, nav right; copyright + links) →
220
+ `::::split`.
221
+ - A row of tags/buttons/icons that wraps → `::::cluster`.
222
+ - Consistent vertical rhythm between blocks → `::::stack`.
223
+ - A responsive card grid → `::::grid`.
224
+ - An aspect-ratio media box → `::::frame`.
225
+
226
+ → `layouts.md`.
227
+
228
+ ## Anti-patterns — don't do these
229
+
230
+ - **Don't wrap everything.** If every paragraph is a callout, none of them stand
231
+ out. Components are emphasis; emphasis is scarce. Plain prose is the default.
232
+ - **Don't nest interactive triggers.** A dialog inside a tooltip, a popover
233
+ inside a popover, a tab group inside a single tab that only holds another tab
234
+ group — these confuse readers and sometimes the runtime. Keep one trigger deep.
235
+ - **Layouts wrap components; components don't wrap layouts.** Put cards inside a
236
+ `::::grid`; don't put a `::::grid` inside a `===` card. Layout containers are
237
+ the outermost structure. (A callout or card body holds prose and inline
238
+ components, not another `::::` block.)
239
+ - **Don't reach for a component when Markdown already says it.** A two-item list
240
+ doesn't need a grid. A single link doesn't need a button. A one-line note
241
+ doesn't need a callout. Use the plainest thing that reads well.
242
+ - **Don't use Details for a group or Accordion for one item.** One collapsible →
243
+ Details (`^^^`). A set of collapsibles → Accordion (`//////`).
244
+ - **Don't invent attributes or variants.** `:::caution` is not a callout type;
245
+ `@@@primary` is not a tag variant. Check the component reference — the engines
246
+ silently drop unknown tokens, so a typo just disappears.
247
+ - **Don't put Markdown image syntax directly inside a `::::frame`.** Use a raw
248
+ `<img>` tag there (Markdown images may not be processed inside layout
249
+ containers). Elsewhere, Markdown images work normally.