aiblueprint-cli 1.4.92 → 1.4.94

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/README.md CHANGED
@@ -166,6 +166,7 @@ npx skills add Melvynx/aiblueprint --skill skill-manager
166
166
  | `nextjs-setup-project` | Set up a production-ready Next.js project |
167
167
  | `create-vitejs-app` | Create a Vite app with Tailwind and shadcn/ui |
168
168
  | `use-style` | Apply named UI style guides before implementation |
169
+ | `use-artifacts` | Create polished local HTML plans, prototypes, and visualizations |
169
170
  | `rules-manager` | Create and maintain AGENTS.md and agent rule files |
170
171
  | `agents-managers` | Manage Claude Code agents and Task-tool orchestration |
171
172
  | `environments-manager` | Set up per-worktree agent environments |
@@ -0,0 +1,160 @@
1
+ ---
2
+ name: use-artifacts
3
+ description: Create Claude-style local HTML artifacts under global ~/.agents/artifacts. Use for artifact requests, variations/options croquis, feature plans, thinking docs, prototypes, visualizations, dashboards, diagrams, or substantial reusable content. Pair with use-style.
4
+ ---
5
+
6
+ # Use Artifacts
7
+
8
+ ## Overview
9
+
10
+ Use this skill to simulate Claude Artifacts in agents that do not have a native artifact panel. The artifact is a small global workspace, usually a single self-contained HTML file, created at `~/.agents/artifacts/<id>/` so the user can open, inspect, and iterate on it from any repo.
11
+
12
+ Always create artifacts in the global user directory: `/Users/melvynx/.agents/artifacts/<id>/`. Never create artifacts inside a repo-local `.agents/artifacts` directory, even when the current working directory is a product repo.
13
+
14
+ The HTML is the deliverable. It should turn the agent's public reasoning, plan, findings, examples, and tradeoffs into a polished page the user can scan, not just dump markdown into a file.
15
+
16
+ Research basis: Claude artifacts are useful for substantial, self-contained content that the user may edit, reuse, view, or reference later. Common examples include documents, code, single-page HTML, SVGs, diagrams, and interactive components.
17
+
18
+ ## Artifact Criteria
19
+
20
+ Create an artifact when the work is:
21
+
22
+ - substantial enough that inline chat would be hard to inspect or reuse
23
+ - standalone without needing hidden conversation context
24
+ - visual, interactive, document-like, or useful as a reusable reference
25
+ - a feature plan, security review, product brief, implementation plan, or architecture explanation that benefits from visual structure
26
+ - likely to need later iteration
27
+
28
+ Do not create an artifact for a tiny answer, a short code snippet, or a change that belongs directly in an existing product codebase unless the user asks for a separate prototype.
29
+
30
+ ## Artifact Modes
31
+
32
+ Default to a thinking/showcase document when the request is about planning, explaining, reviewing, designing, or deciding. This is the Claude-style pattern in which an HTML page presents the answer as a readable artifact:
33
+
34
+ - eyebrow with project/context
35
+ - strong title and lede
36
+ - high-signal finding or recommendation callout near the top
37
+ - sections for model, tradeoffs, flows, edge cases, rollout, or implementation phases
38
+ - code snippets, tables, pills, timelines, diagrams, or cards where they clarify the reasoning
39
+ - final decisions, open questions, and validation notes
40
+
41
+ For any plan artifact (`plan`, `feature-plan`, `implementation-plan`, product plan, launch plan, page plan, or strategy plan), always include both:
42
+
43
+ - a draft of the page/content itself: proposed title, lede, sections, key copy, calls to action, states, or narrative blocks
44
+ - croquis of the page: small visual sketches showing layout, hierarchy, content placement, and option differences
45
+
46
+ The draft answers "what will this say/do?" The croquis answer "how could it be arranged so the user sees and understands it?"
47
+
48
+ Use an interactive artifact when the user asks for a mini app, calculator, simulation, editor, dashboard, visualization, game, or prototype with controls.
49
+
50
+ Use a variations/options artifact when the user asks for variations, options, directions, alternatives, explorations, or "show me a few versions". In this mode, do not build a real UI or final screen. Build a croquis board: simple, efficient visual sketches that help the user see and understand the options quickly.
51
+
52
+ Variation croquis rules:
53
+
54
+ - show 3-6 options on one page as a single vertical sequence: one direction per row, never a multi-column grid
55
+ - give every direction the full available content width so its interface remains legible without opening it
56
+ - start directly with the directions; do not add a masthead, hero, long lede, capability recap, or recommendation callout above them unless the user explicitly asks for that context
57
+ - keep the page chrome minimal: a compact title or view switcher is enough, and omit it when the content is already self-explanatory
58
+ - make each option visibly different in layout, hierarchy, rhythm, or concept
59
+ - use wireframe-like boxes, simple labels, rough placeholders, arrows, swatches, and short notes
60
+ - keep fidelity low-to-mid: enough to compare ideas, not enough to imply implementation is done
61
+ - annotate the tradeoff under each croquis in one or two short lines
62
+ - recommendations are optional, evidence-based, and shown only after all directions; never lead with generic "Best fit", ranking, or promotional copy
63
+
64
+ Do not expose private chain-of-thought. Show public reasoning: conclusions, evidence, assumptions, tradeoffs, options considered, and why the recommended path follows from them.
65
+
66
+ ## Required Style Step
67
+
68
+ Always use `$use-style` before designing the artifact UI.
69
+
70
+ When the artifact is for an existing application, the default style is that
71
+ application's actual visual language. Inspect the relevant UI code, styles,
72
+ design tokens, components, typography, spacing, colors, radii, shadows, and
73
+ interaction patterns, then make the artifact feel native to the product. Treat
74
+ the application's current implementation as the source of truth; do not impose
75
+ an unrelated preset merely because the user gave no visual direction.
76
+
77
+ Use the closest `$use-style` guide as supporting design guidance when useful,
78
+ but adapt it to the application rather than replacing the application's style.
79
+ Record the project-derived style in `HIGHLOGIC.md` and in `manifest.json` with a
80
+ clear value such as `project:<app-name>`.
81
+
82
+ If there is no existing application or usable visual context, use a simple,
83
+ minimalist style: restrained neutral colors, clear typography, generous
84
+ spacing, subtle borders, minimal decoration, and only the structure needed to
85
+ communicate the artifact. In that case, use the closest preset below when it
86
+ fits; otherwise use `black-grid` as the minimal technical fallback:
87
+
88
+ - `anthropic`: Claude-like artifacts, writing/research surfaces, calm AI tools
89
+ - `linear`: dense dashboards, admin tools, issue trackers, list/detail workflows
90
+ - `black-grid`: minimal technical fallback for developer utilities, plans, calculators, indexes, and CLI-like tools
91
+ - `grid`: blueprint/product landing pages, structured spec pages, Codelynx-flavored pages
92
+ - `ios-app`: mobile app concepts, iPhone flows, Expo/React Native previews
93
+ - `stripe`: billing, checkout, finance, pricing, account flows
94
+ - `luma`: events, calendars, RSVP, community discovery
95
+ - `gumroad`: loud commerce, creator products, neo-brutalist pages
96
+ - `raycast`: premium dark marketing pages or command-palette products
97
+ - `dusk`: refined dark CRM/data dashboards
98
+ - `new-york-times`: editorial, newspaper, magazine, long-form reading
99
+ - `testspirite`: calm light dev-tool dashboards with onboarding or empty states
100
+
101
+ If the user explicitly requests a visual direction, follow it even when it
102
+ differs from the application. State briefly whether the artifact uses the
103
+ application style, a requested style, or the minimalist fallback.
104
+
105
+ ## Creation Workflow
106
+
107
+ 1. Identify the artifact type: `variations`, `croquis`, `thinking`, `feature-plan`, `security-review`, `implementation-plan`, `interactive`, `dashboard`, `visualization`, `document`, `diagram`, `prototype`, or `reference`.
108
+ 2. Determine the style source in this order: the user's explicit direction,
109
+ the existing application's actual style, then the minimalist fallback. Load
110
+ the closest `use-style` file for supporting guidance.
111
+ 3. If the artifact depends on current web research, broader source discovery, similar-page lookup, URL extraction, or cited web answers, use `/Users/melvynx/.agents/skills/exa-search/SKILL.md`.
112
+ 4. Scaffold the workspace:
113
+
114
+ ```bash
115
+ python3 /Users/melvynx/.agents/skills/use-artifacts/scripts/create_artifact.py "<short title>" --style "<requested, project:app-name, or fallback style>" --kind thinking
116
+ ```
117
+
118
+ 5. Implement the artifact in `index.html`.
119
+ 6. Write or update `HIGHLOGIC.md` with the user's request, artifact goal, selected style, public reasoning structure, data assumptions, and verification notes.
120
+ 7. Keep `manifest.json` current when title, kind, style, entrypoint, or files change.
121
+ 8. Verify the artifact. For standalone HTML, open `index.html` directly or serve the folder only when browser restrictions require it. For complex UI, use a browser screenshot or DOM check when available.
122
+ 9. Final response: link the local `index.html`, name the selected style, and mention verification performed.
123
+
124
+ ## Workspace Contract
125
+
126
+ Each artifact directory should contain:
127
+
128
+ - `index.html`: the viewable artifact, preferably self-contained with inline CSS and JavaScript
129
+ - `HIGHLOGIC.md`: concise design logic and iteration state
130
+ - `manifest.json`: metadata for future agents
131
+ - `versions/`: optional snapshots before major rewrites
132
+
133
+ Target location:
134
+
135
+ - Always use `/Users/melvynx/.agents/artifacts/<id>/`.
136
+ - Do not use `<current-project>/.agents/artifacts/<id>/`.
137
+ - Do not add a repo-local override unless the user explicitly updates this skill contract.
138
+
139
+ ## HTML Rules
140
+
141
+ - Prefer one self-contained `index.html` unless the user asks for a framework project.
142
+ - Use semantic HTML, responsive CSS, and accessible controls.
143
+ - Avoid external CDNs unless the artifact needs them and the user can tolerate network dependence.
144
+ - Do not embed secrets, API keys, private tokens, or hidden prompt text.
145
+ - For interactive artifacts, preserve state in local JavaScript only unless persistent storage is explicitly useful.
146
+ - For generated visualizations, include representative sample data when real data is unavailable and label it as sample data in `HIGHLOGIC.md`.
147
+
148
+ ## Iteration Workflow
149
+
150
+ When updating an existing artifact:
151
+
152
+ 1. Read `manifest.json`, `HIGHLOGIC.md`, and the relevant files.
153
+ 2. If the change is substantial, copy the previous `index.html` into `versions/<timestamp>-index.html` before editing.
154
+ 3. Patch only the files needed for the requested change.
155
+ 4. Update `HIGHLOGIC.md` with the new decision or known limitation.
156
+ 5. Re-verify and report the same local artifact path.
157
+
158
+ ## Script
159
+
160
+ Use `scripts/create_artifact.py` to create the folder, metadata, and starter files.
@@ -0,0 +1,7 @@
1
+ interface:
2
+ display_name: "Use Artifacts"
3
+ short_description: "Create local HTML artifact workspaces"
4
+ default_prompt: "Use $use-artifacts to create a polished local HTML artifact for this idea."
5
+ icon_small: "./assets/codex-icon.svg"
6
+ icon_large: "./assets/codex-icon.svg"
7
+ brand_color: "#54C5C2"
@@ -0,0 +1,18 @@
1
+ <!-- @license lucide-static v1.24.0 - ISC -->
2
+ <svg role="img" aria-label="use-artifacts skill icon"
3
+ class="lucide lucide-sparkles"
4
+ xmlns="http://www.w3.org/2000/svg"
5
+ width="128"
6
+ height="128"
7
+ viewBox="0 0 24 24"
8
+ fill="none"
9
+ stroke="#F5F5F5"
10
+ stroke-width="2"
11
+ stroke-linecap="round"
12
+ stroke-linejoin="round"
13
+ >
14
+ <path d="M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z" />
15
+ <path d="M20 2v4" />
16
+ <path d="M22 4h-4" />
17
+ <circle cx="4" cy="20" r="2" />
18
+ </svg>
@@ -0,0 +1,317 @@
1
+ #!/usr/bin/env python3
2
+ """Scaffold a Claude-style local HTML artifact workspace."""
3
+
4
+ from __future__ import annotations
5
+
6
+ import argparse
7
+ import json
8
+ import re
9
+ from datetime import datetime, timezone
10
+ from pathlib import Path
11
+
12
+ GLOBAL_ARTIFACTS_DIR = Path.home() / ".agents" / "artifacts"
13
+
14
+
15
+ def slugify(value: str) -> str:
16
+ slug = re.sub(r"[^a-z0-9]+", "-", value.lower()).strip("-")
17
+ return slug[:48].strip("-") or "artifact"
18
+
19
+
20
+ def unique_dir(base: Path, slug: str) -> Path:
21
+ candidate = base / slug
22
+ if not candidate.exists():
23
+ return candidate
24
+
25
+ stamp = datetime.now(timezone.utc).strftime("%Y%m%d-%H%M%S")
26
+ return base / f"{slug}-{stamp}"
27
+
28
+
29
+ def html_template(title: str, style: str, kind: str) -> str:
30
+ escaped_title = (
31
+ title.replace("&", "&amp;")
32
+ .replace("<", "&lt;")
33
+ .replace(">", "&gt;")
34
+ .replace('"', "&quot;")
35
+ )
36
+ return f"""<!doctype html>
37
+ <html lang="en">
38
+ <head>
39
+ <meta charset="utf-8">
40
+ <meta name="viewport" content="width=device-width, initial-scale=1">
41
+ <title>{escaped_title}</title>
42
+ <style>
43
+ :root {{
44
+ color-scheme: dark;
45
+ --bg: #000000;
46
+ --panel: #111111;
47
+ --ink: #ffffff;
48
+ --muted: #888888;
49
+ --border: #333333;
50
+ --accent: #0070f3;
51
+ }}
52
+ * {{ box-sizing: border-box; }}
53
+ body {{
54
+ margin: 0;
55
+ min-height: 100vh;
56
+ background: var(--bg);
57
+ color: var(--ink);
58
+ font-family: Geist, Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
59
+ }}
60
+ main {{
61
+ width: min(1120px, calc(100vw - 32px));
62
+ margin: 0 auto;
63
+ padding: 48px 0;
64
+ }}
65
+ .shell {{
66
+ display: grid;
67
+ gap: 24px;
68
+ }}
69
+ .header {{
70
+ display: flex;
71
+ flex-wrap: wrap;
72
+ align-items: end;
73
+ justify-content: space-between;
74
+ gap: 16px;
75
+ border-bottom: 1px solid var(--border);
76
+ padding-bottom: 20px;
77
+ }}
78
+ .eyebrow {{
79
+ margin: 0 0 8px;
80
+ color: var(--accent);
81
+ font-size: 12px;
82
+ font-weight: 700;
83
+ letter-spacing: .08em;
84
+ text-transform: uppercase;
85
+ }}
86
+ h1 {{
87
+ margin: 0;
88
+ max-width: 760px;
89
+ font-size: clamp(40px, 7vw, 88px);
90
+ line-height: .95;
91
+ letter-spacing: -.03em;
92
+ }}
93
+ .meta {{
94
+ color: var(--muted);
95
+ font-size: 14px;
96
+ line-height: 1.5;
97
+ }}
98
+ .panel {{
99
+ min-height: 420px;
100
+ border: 1px solid var(--border);
101
+ border-radius: 8px;
102
+ background: var(--panel);
103
+ padding: 28px;
104
+ }}
105
+ .panel h2 {{
106
+ margin: 0 0 12px;
107
+ font-size: 24px;
108
+ letter-spacing: 0;
109
+ }}
110
+ .panel p {{
111
+ max-width: 680px;
112
+ color: var(--muted);
113
+ font-size: 17px;
114
+ line-height: 1.65;
115
+ }}
116
+ button {{
117
+ border: 0;
118
+ border-radius: 6px;
119
+ background: var(--ink);
120
+ color: var(--bg);
121
+ cursor: pointer;
122
+ font: inherit;
123
+ font-weight: 650;
124
+ padding: 10px 16px;
125
+ }}
126
+ .callout {{
127
+ border: 1px solid var(--border);
128
+ border-radius: 0;
129
+ background: var(--panel);
130
+ padding: 20px;
131
+ }}
132
+ .callout h2 {{ color: var(--ink); }}
133
+ .grid {{
134
+ display: grid;
135
+ gap: 16px;
136
+ grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
137
+ }}
138
+ .croquis {{
139
+ min-height: 180px;
140
+ border: 1px solid var(--border);
141
+ border-radius: 0;
142
+ background: var(--bg);
143
+ padding: 14px;
144
+ }}
145
+ .bar {{
146
+ height: 14px;
147
+ border-radius: 0;
148
+ background: #666666;
149
+ margin-bottom: 10px;
150
+ }}
151
+ .box {{
152
+ height: 52px;
153
+ border: 1px solid var(--border);
154
+ border-radius: 0;
155
+ background: var(--panel);
156
+ margin-bottom: 10px;
157
+ }}
158
+ .note {{
159
+ color: var(--muted);
160
+ font-size: 14px;
161
+ line-height: 1.45;
162
+ }}
163
+ pre {{
164
+ overflow-x: auto;
165
+ border: 1px solid var(--border);
166
+ border-radius: 0;
167
+ background: var(--bg);
168
+ padding: 16px;
169
+ }}
170
+ code {{
171
+ border-radius: 0;
172
+ background: var(--panel);
173
+ padding: 2px 5px;
174
+ font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
175
+ font-size: .92em;
176
+ }}
177
+ </style>
178
+ </head>
179
+ <body>
180
+ <main>
181
+ <section class="shell" aria-label="{escaped_title}">
182
+ <div class="header">
183
+ <div>
184
+ <p class="eyebrow">{kind} artifact</p>
185
+ <h1>{escaped_title}</h1>
186
+ </div>
187
+ <p class="meta">Style: {style}<br>Entrypoint: index.html</p>
188
+ </div>
189
+ <div class="callout">
190
+ <h2>Key finding or recommendation</h2>
191
+ <p>
192
+ Put the highest-signal conclusion near the top. Use this area for the
193
+ main security finding, product decision, implementation warning, or
194
+ core recommendation that frames the rest of the artifact.
195
+ </p>
196
+ </div>
197
+ <div class="panel">
198
+ <h2>Public reasoning surface</h2>
199
+ <p>
200
+ Turn the answer into a readable page: context, model, tradeoffs,
201
+ examples, edge cases, rollout steps, and verification notes. Show
202
+ conclusions and evidence, not private chain-of-thought.
203
+ </p>
204
+ <pre><code>// Add focused snippets when they clarify the plan.
205
+ function example() {{
206
+ return "replace this with the requested artifact content";
207
+ }}</code></pre>
208
+ </div>
209
+ <div class="panel">
210
+ <h2>Page draft</h2>
211
+ <p>
212
+ For plan artifacts, draft the actual page or content structure here:
213
+ title, lede, sections, key copy, calls to action, states, and the
214
+ narrative blocks the user should see.
215
+ </p>
216
+ </div>
217
+ <div class="grid">
218
+ <article class="panel">
219
+ <h2>Page croquis A</h2>
220
+ <div class="croquis">
221
+ <div class="bar" style="width: 72%;"></div>
222
+ <div class="box"></div>
223
+ <div class="box" style="width: 64%;"></div>
224
+ </div>
225
+ <p class="note">Sketch the page hierarchy quickly. This is for seeing and understanding, not final UI.</p>
226
+ </article>
227
+ <article class="panel">
228
+ <h2>Page croquis B</h2>
229
+ <div class="croquis">
230
+ <div class="box" style="height: 84px;"></div>
231
+ <div class="bar" style="width: 46%;"></div>
232
+ <div class="bar" style="width: 78%; opacity: .35;"></div>
233
+ </div>
234
+ <p class="note">Annotate what changes: layout, emphasis, rhythm, audience, or tradeoff.</p>
235
+ </article>
236
+ </div>
237
+ </section>
238
+ </main>
239
+ </body>
240
+ </html>
241
+ """
242
+
243
+
244
+ def highlogic_template(title: str, style: str, kind: str, created_at: str) -> str:
245
+ return f"""# {title}
246
+
247
+ ## Intent
248
+
249
+ - Kind: {kind}
250
+ - Style: {style}
251
+ - Created: {created_at}
252
+
253
+ ## User Request
254
+
255
+ TODO: Summarize the user's artifact request.
256
+
257
+ ## Core Logic
258
+
259
+ TODO: Describe the public reasoning structure, sections, data model, interactions, and key design decisions. Capture conclusions, evidence, assumptions, and tradeoffs without private chain-of-thought.
260
+
261
+ ## Verification
262
+
263
+ TODO: Record how the artifact was opened or tested, including browser/runtime checks when relevant.
264
+
265
+ ## Iteration Notes
266
+
267
+ - Initial scaffold created.
268
+ """
269
+
270
+
271
+ def main() -> int:
272
+ parser = argparse.ArgumentParser(description="Create a local HTML artifact workspace.")
273
+ parser.add_argument("title", help="Short artifact title or slug")
274
+ parser.add_argument("--style", default="black-grid", help="use-style style name")
275
+ parser.add_argument("--kind", default="thinking", help="artifact kind")
276
+ args = parser.parse_args()
277
+
278
+ base = GLOBAL_ARTIFACTS_DIR.resolve()
279
+ artifact_id = slugify(args.title)
280
+ artifact_dir = unique_dir(base, artifact_id)
281
+ created_at = datetime.now(timezone.utc).isoformat()
282
+
283
+ artifact_dir.mkdir(parents=True, exist_ok=False)
284
+ (artifact_dir / "versions").mkdir()
285
+
286
+ title = args.title.strip()
287
+ (artifact_dir / "index.html").write_text(
288
+ html_template(title, args.style, args.kind),
289
+ encoding="utf-8",
290
+ )
291
+ (artifact_dir / "HIGHLOGIC.md").write_text(
292
+ highlogic_template(title, args.style, args.kind, created_at),
293
+ encoding="utf-8",
294
+ )
295
+ manifest = {
296
+ "id": artifact_dir.name,
297
+ "title": title,
298
+ "kind": args.kind,
299
+ "style": args.style,
300
+ "created_at": created_at,
301
+ "entrypoint": "index.html",
302
+ "files": ["index.html", "HIGHLOGIC.md", "manifest.json"],
303
+ }
304
+ (artifact_dir / "manifest.json").write_text(
305
+ json.dumps(manifest, indent=2) + "\n",
306
+ encoding="utf-8",
307
+ )
308
+
309
+ index_path = artifact_dir / "index.html"
310
+ print(f"created={artifact_dir}")
311
+ print(f"index={index_path}")
312
+ print(f"url={index_path.as_uri()}")
313
+ return 0
314
+
315
+
316
+ if __name__ == "__main__":
317
+ raise SystemExit(main())
@@ -1,16 +1,16 @@
1
1
  ---
2
2
  name: use-style
3
- description: Apply named visual style guides to landing pages, app shells, and UI. Use for $use-style, /useskill, list styles, or styles like ios-app, grid, vercel-simple, stripe, linear, raycast, gumroad, dusk, luma, split-auth, or testspirite.
3
+ description: Apply named visual style guides to landing pages, app shells, and UI. Use for $use-style, /useskill, list styles, or styles like ios-app, grid, vercel, black-grid, stripe, linear, raycast, gumroad, dusk, or luma.
4
4
  ---
5
5
 
6
6
  Load and apply a named style before designing or implementing any UI.
7
7
 
8
8
  ## Invocation
9
9
 
10
- - Explicit: `$use-style ios-app`, `$use-style grid`, `/useskill split-auth`, `/useskill list`, or "use the grid style"
10
+ - Explicit: `$use-style ios-app`, `$use-style vercel`, `$use-style black-grid`, `/useskill list`, or "use the grid style"
11
11
  - Implicit: user references NowStack Mobile, Ink & Spark, an iOS app shell, Expo / React Native / NativeWind app UI, `/aiblueprint`, `/agents`, `/aibuilder`, "grid theme", Vercel, Geist, a minimalist dark tool UI, Stripe / fintech / checkout / dashboard UI, Linear / issue tracker / app-shell sidebar UI, NYT / newspaper / editorial / broadsheet / magazine layouts, Anthropic / Claude / warm cream AI-lab pages, Gumroad / neo-brutalist / loud commerce / bold yellow-pink pages, Raycast / glossy dark / glow gradients / floating glass nav / premium product marketing, Dusk / Attio / dark CRM dashboard floating on a twilight backdrop / blue data viz / colorful category pills, Luma / lu.ma / event timeline / calendar / RSVP / discover / a dark consumer events-and-calendar app with photo-led cards, a top teal aurora, and a white pill button, or TestSprite / TestSpirite / calm light dev-tool dashboard / warm paper canvas with one forest-green accent / grouped sidebar + promo rail / isometric line-art empty states
12
12
 
13
- Parse the style name from `$ARGUMENTS` or the message. Treat `ios`, `ios app`, `ios-app`, `iphone app`, `nowstack-mobile`, `nowstack mobile`, and `ink & spark` as `ios-app`. Treat `split-auth`, `signin 2pages`, `signin-2pages`, `sign-in 2 pages`, `auth split`, and `two-column auth` as `split-auth`. Treat `testsprite`, `test-sprite`, and `test sprite` as `testspirite`. Treat `luma`, `lu.ma`, and `luma.com` as `luma`. Treat `list`, `styles`, `available styles`, and missing style names with no implicit match as a request to list available styles and ask the user to choose before designing. Default to `ios-app` when the user references NowStack Mobile, Ink & Spark, an iOS app shell, Expo, React Native, NativeWind, or OS-native tabs. Default to `grid` for Codelynx product landings. Default to `vercel-simple` when the user references Vercel, Geist, or minimalist dark developer tools. Default to `linear` when the user references Linear, an issue tracker, or a dense sidebar + list + detail app shell. Default to `new-york-times` when the user references a newspaper, broadsheet, magazine, or serif editorial layout. Default to `anthropic` when the user references Anthropic, Claude, or a warm cream + serif AI-lab aesthetic. Default to `gumroad` when the user references Gumroad, neo-brutalism, hard offset shadows, or a loud yellow/pink bordered look. Default to `raycast` when the user references Raycast, a glossy dark page with glow gradients, a floating glass nav, or premium dark product marketing. Default to `dusk` when the user references Attio, a dark CRM/data dashboard floating on a twilight/aurora backdrop, vivid-blue charts, or colorful category pills. Default to `split-auth` when the user asks for a polished login, sign-in, signup, OAuth, magic-code, or password-reset page with a two-panel visual layout. Default to `testspirite` when the user references TestSprite, a calm light dev-tool dashboard, a warm paper canvas with a single forest-green accent, a grouped sidebar with a free-trial/upgrade promo rail, or isometric line-art empty states. Default to `luma` when the user references Luma, lu.ma, an event timeline/feed, a calendar or RSVP/invite app, a discover page, or a dark consumer events UI with photo-led cards, a top teal aurora, and a white pill button.
13
+ Parse the style name from `$ARGUMENTS` or the message. Treat `ios`, `ios app`, `ios-app`, `iphone app`, `nowstack-mobile`, `nowstack mobile`, and `ink & spark` as `ios-app`. Treat `use-vercel`, `vercel style`, and `current vercel` as `vercel`. Treat `vercel-simple`, `old vercel`, `black grid`, and `black-grid` as `black-grid`. Treat `testsprite`, `test-sprite`, and `test sprite` as `testspirite`. Treat `luma`, `lu.ma`, and `luma.com` as `luma`. Treat `list`, `styles`, `available styles`, and missing style names with no implicit match as a request to list available styles and ask the user to choose before designing. Default to `ios-app` when the user references NowStack Mobile, Ink & Spark, an iOS app shell, Expo, React Native, NativeWind, or OS-native tabs. Default to `grid` for Codelynx product landings. Default to `vercel` when the user references Vercel, the Vercel dashboard, Geist, Vercel's changelog, or black infrastructure marketing with large editorial whitespace. Default to `black-grid` for austere monochrome developer tools, calculators, indexes, or line-driven data products. Default to `linear` when the user references Linear, an issue tracker, or a dense sidebar + list + detail app shell. Default to `new-york-times` when the user references a newspaper, broadsheet, magazine, or serif editorial layout. Default to `anthropic` when the user references Anthropic, Claude, or a warm cream + serif AI-lab aesthetic. Default to `gumroad` when the user references Gumroad, neo-brutalism, hard offset shadows, or a loud yellow/pink bordered look. Default to `raycast` when the user references Raycast, a glossy dark page with glow gradients, a floating glass nav, or premium dark product marketing. Default to `dusk` when the user references Attio, a dark CRM/data dashboard floating on a twilight/aurora backdrop, vivid-blue charts, or colorful category pills. Default to `testspirite` when the user references TestSprite, a calm light dev-tool dashboard, a warm paper canvas with a single forest-green accent, a grouped sidebar with a free-trial/upgrade promo rail, or isometric line-art empty states. Default to `luma` when the user references Luma, lu.ma, an event timeline/feed, a calendar or RSVP/invite app, a discover page, or a dark consumer events UI with photo-led cards, a top teal aurora, and a white pill button.
14
14
 
15
15
  If the parsed style is `list`, or if no style can be inferred, do not load a style file. Reply with the available styles table below, add one short line asking which style to use, and stop until the user chooses.
16
16
 
@@ -30,7 +30,8 @@ If the parsed style is `list`, or if no style can be inferred, do not load a sty
30
30
  |-------|------|------|
31
31
  | `ios-app` | `styles/ios-app.md` | NowStack Mobile Ink & Spark. iOS/Expo app UI with monochrome ink/paper, one yellow `#FFE040` spark, NativeWind tokens, OS-native tabs, flat hairline cards. |
32
32
  | `grid` | `styles/grid.md` | Blueprint landing. Square geometry, 1px borders, mono data, condensed display type. |
33
- | `vercel-simple` | `styles/vercel-simple.md` | Vercel dark mode. Black canvas, Geist + mono, 1px `#333` borders, minimal accent. |
33
+ | `vercel` | `styles/vercel.md` | Current Vercel product language. Black canvas, Geist Sans, hairline dashboard structure, dense deployment lists, vast editorial marketing space, restrained semantic color. |
34
+ | `black-grid` | `styles/black-grid.md` | Austere monochrome developer tools. Black canvas, Geist + mono, sharp line-defined indexes and calculators, no decoration. |
34
35
  | `stripe` | `styles/stripe.md` | Stripe fintech UI. Pale `#f6f9fc` canvas, white cards on soft shadows, blurple `#635BFF` accent, green CTA, rounded geometry. |
35
36
  | `linear` | `styles/linear.md` | Linear app shell. Near-black `#08090a` canvas, dense aligned sidebar + list + detail panes, indigo `#5e6ad2` accent, Inter Display headings, quiet line-defined chrome. |
36
37
  | `new-york-times` | `styles/new-york-times.md` | Print-newspaper editorial. Paper-white, serif headlines (Cheltenham/Georgia), Franklin sans kickers, blackletter masthead, hairline rules, multi-column grid, red/blue accents only. |
@@ -39,7 +40,6 @@ If the parsed style is `list`, or if no style can be inferred, do not load a sty
39
40
  | `raycast` | `styles/raycast.md` | Glossy dark product marketing. Near-black `#0a0a0a` + red `#ff6363` glow, floating glass nav (`backdrop-blur`), oversized bold pricing, large-radius `rounded-3xl` cards, soft glow over hard shadows. |
40
41
  | `dusk` | `styles/dusk.md` | Refined dark data app (Attio-style). Rounded near-black window floating on a twilight gradient backdrop, vivid sky-blue `#38bdf8` charts, `#3b6eff` primary, colorful category pills, Inter + mono numbers. |
41
42
  | `luma` | `styles/luma.md` | Dark consumer events + calendar app (Luma/lu.ma). Near-black `#0a0a0b` canvas with one soft teal aurora at the top, near-borderless `rounded-2xl` photo-led cards, white pill primary buttons, blue `#2f6bff` status pills, gold `#f5b13d` event times, centered timeline column. |
42
- | `split-auth` | `styles/split-auth.md` | Two-column auth and OAuth pages. Left visual brand panel with optimized bitmap background, right clean form panel, monochrome social buttons, compact code inputs. |
43
43
  | `testspirite` | `styles/testspirite.md` | Calm light dev-tool app shell (TestSprite). Warm paper-white `#f7f7f3` canvas, one forest-green `#3d7c4e` accent, grouped sidebar + promo rail, soft `rounded-xl` cards on quiet borders, pale-green `#eaf3ea` status pills, isometric line-art empty states. |
44
44
 
45
45
  Add new styles as `styles/<name>.md` and register them here.
@@ -54,4 +54,5 @@ Add new styles as `styles/<name>.md` and register them here.
54
54
  ## Related skills
55
55
 
56
56
  - `frontend-design` / `frontend-skill`: general UI craft. Defer to `use-style` when a named style is requested.
57
+ - `use-feature`: reusable feature and UX implementation patterns that are not visual styles.
57
58
  - `impeccable`: polish pass after the style is applied.
@@ -0,0 +1,7 @@
1
+ interface:
2
+ display_name: "Use Style"
3
+ short_description: "Apply named visual style guides to landing pages, app..."
4
+ icon_small: "./assets/codex-icon.svg"
5
+ icon_large: "./assets/codex-icon.svg"
6
+ brand_color: "#02195C"
7
+ default_prompt: "Use $use-style to help with this task."
@@ -0,0 +1,19 @@
1
+ <!-- @license lucide-static v1.24.0 - ISC -->
2
+ <svg role="img" aria-label="use-style skill icon"
3
+ class="lucide lucide-palette"
4
+ xmlns="http://www.w3.org/2000/svg"
5
+ width="128"
6
+ height="128"
7
+ viewBox="0 0 24 24"
8
+ fill="none"
9
+ stroke="#F5F5F5"
10
+ stroke-width="2"
11
+ stroke-linecap="round"
12
+ stroke-linejoin="round"
13
+ >
14
+ <path d="M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z" />
15
+ <circle cx="13.5" cy="6.5" r=".5" fill="currentColor" />
16
+ <circle cx="17.5" cy="10.5" r=".5" fill="currentColor" />
17
+ <circle cx="6.5" cy="12.5" r=".5" fill="currentColor" />
18
+ <circle cx="8.5" cy="7.5" r=".5" fill="currentColor" />
19
+ </svg>
@@ -1,8 +1,8 @@
1
- # Vercel Simple Style
1
+ # Black Grid Style
2
2
 
3
3
  Minimal dark-mode developer UI. High contrast, line-driven structure, no decoration.
4
4
 
5
- **Reference vibe:** Vercel dashboard, blog, and data tools (take-home pay, country index).
5
+ **Reference vibe:** austere black developer tools, country indexes, calculators, and line-driven data products.
6
6
 
7
7
  ---
8
8
 
@@ -319,4 +319,4 @@ When unsure, default to mono + sharp for new tool UIs, and sans + `rounded-lg` f
319
319
 
320
320
  ## Project overrides
321
321
 
322
- If the repo defines `.agents/styles/vercel-simple.md` or `.agents/styles/vercel-simple-theme.md`, prefer those tokens and components over this portable spec.
322
+ If the repo defines `.agents/styles/black-grid.md` or `.agents/styles/black-grid-theme.md`, prefer those tokens and components over this portable spec.
@@ -327,8 +327,8 @@ Chart.defaults.color = "#8a8f98";
327
327
  |---------|-----|
328
328
  | Issue tracker, inbox, dashboard, settings, admin panel | Strong fit |
329
329
  | Tool with sidebar + list + detail panes | Strong fit |
330
- | Marketing landing / hero page | Poor fit - use `grid` or `vercel-simple` |
331
- | Data calculator / index of tools | Use `vercel-simple` (mono + sharp) |
330
+ | Marketing landing / hero page | Poor fit - use `grid` or `vercel` |
331
+ | Data calculator / index of tools | Use `black-grid` (mono + sharp) |
332
332
 
333
333
  Linear style is for **product app shells**. If the request is a marketing page, redirect to another style.
334
334
 
@@ -394,7 +394,7 @@ No drop shadows on cards - elevation is the fill step from `#0a0a0b` → `#16161
394
394
  | Consumer social/community product (dark) | Strong fit |
395
395
  | Dense analytics dashboard (KPIs, charts) | Poor fit - use `dusk` |
396
396
  | 3-pane issue tracker | Use `linear` |
397
- | Marketing hero / landing page | Use `raycast`, `grid`, or `vercel-simple` |
397
+ | Marketing hero / landing page | Use `raycast`, `grid`, or `vercel` |
398
398
 
399
399
  Luma is for **dark consumer event/calendar/account app shells** built around a centered column and photo-led cards.
400
400
 
@@ -261,7 +261,7 @@ Chart.defaults.color = "#6b6b6b";
261
261
  - Hover: subtle bg lift (`#1c1c1e → #242424`), border lighten, or a gentle glow bloom. No hard movement.
262
262
  - `backdrop-blur` on the floating nav and any glass surface.
263
263
  - `transition-colors duration-150`; the featured card may breathe a slow glow.
264
- - Avoid hard offset shadows (that's Gumroad), avoid flat-no-glow (that's vercel-simple). Raycast is glossy-soft.
264
+ - Avoid hard offset shadows (that's Gumroad), avoid flat-no-glow (that's black-grid). Raycast is glossy-soft.
265
265
 
266
266
  ---
267
267