aiblueprint-cli 1.4.81 → 1.4.83

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 (90) hide show
  1. package/README.md +25 -18
  2. package/agents-config/claude-config/scripts/statusline/data/.gitignore +8 -0
  3. package/agents-config/claude-config/scripts/statusline/data/.gitkeep +0 -0
  4. package/agents-config/claude-config/scripts/statusline/defaults.json +10 -10
  5. package/agents-config/claude-config/scripts/statusline/src/commands/interactive-config.ts +118 -6
  6. package/agents-config/claude-config/scripts/statusline/src/index.ts +100 -9
  7. package/agents-config/claude-config/scripts/statusline/src/lib/config.ts +28 -2
  8. package/agents-config/claude-config/scripts/statusline/src/lib/features/limits/commands/weekly-analysis.ts +108 -0
  9. package/agents-config/claude-config/scripts/statusline/src/lib/features/limits/index.ts +164 -0
  10. package/agents-config/claude-config/scripts/statusline/src/lib/features/limits/types.ts +15 -0
  11. package/agents-config/claude-config/scripts/statusline/src/lib/features/spend/commands/migrate-to-sqlite.ts +136 -0
  12. package/agents-config/claude-config/scripts/statusline/src/lib/features/spend/commands/spend-day.ts +79 -0
  13. package/agents-config/claude-config/scripts/statusline/src/lib/features/spend/commands/spend-month.ts +66 -0
  14. package/agents-config/claude-config/scripts/statusline/src/lib/features/spend/commands/spend-project.ts +85 -0
  15. package/agents-config/claude-config/scripts/statusline/src/lib/features/spend/database.ts +395 -0
  16. package/agents-config/claude-config/scripts/statusline/src/lib/features/spend/index.ts +178 -0
  17. package/agents-config/claude-config/scripts/statusline/src/lib/features/spend/payload-logger.ts +163 -0
  18. package/agents-config/claude-config/scripts/statusline/src/lib/features/spend/types.ts +37 -0
  19. package/agents-config/claude-config/scripts/statusline/src/lib/presets.ts +13 -13
  20. package/agents-config/claude-config/scripts/statusline/statusline.config.free.json +4 -1
  21. package/agents-config/claude-config/scripts/statusline/statusline.config.json +44 -23
  22. package/agents-config/scripts/statusline/data/.gitignore +8 -0
  23. package/agents-config/scripts/statusline/data/.gitkeep +0 -0
  24. package/agents-config/scripts/statusline/defaults.json +10 -10
  25. package/agents-config/scripts/statusline/src/commands/interactive-config.ts +118 -6
  26. package/agents-config/scripts/statusline/src/index.ts +100 -9
  27. package/agents-config/scripts/statusline/src/lib/config.ts +28 -2
  28. package/agents-config/scripts/statusline/src/lib/features/limits/commands/weekly-analysis.ts +108 -0
  29. package/agents-config/scripts/statusline/src/lib/features/limits/index.ts +164 -0
  30. package/agents-config/scripts/statusline/src/lib/features/limits/types.ts +15 -0
  31. package/agents-config/scripts/statusline/src/lib/features/spend/commands/migrate-to-sqlite.ts +136 -0
  32. package/agents-config/scripts/statusline/src/lib/features/spend/commands/spend-day.ts +79 -0
  33. package/agents-config/scripts/statusline/src/lib/features/spend/commands/spend-month.ts +66 -0
  34. package/agents-config/scripts/statusline/src/lib/features/spend/commands/spend-project.ts +85 -0
  35. package/agents-config/scripts/statusline/src/lib/features/spend/database.ts +395 -0
  36. package/agents-config/scripts/statusline/src/lib/features/spend/index.ts +178 -0
  37. package/agents-config/scripts/statusline/src/lib/features/spend/payload-logger.ts +163 -0
  38. package/agents-config/scripts/statusline/src/lib/features/spend/types.ts +37 -0
  39. package/agents-config/scripts/statusline/src/lib/presets.ts +13 -13
  40. package/agents-config/scripts/statusline/statusline.config.free.json +4 -1
  41. package/agents-config/scripts/statusline/statusline.config.json +44 -23
  42. package/agents-config/skills/{agents-managers → agents-manager}/SKILL.md +1 -1
  43. package/agents-config/skills/{agents-managers → agents-manager}/references/writing-agent-prompts.md +1 -1
  44. package/agents-config/skills/apex/SKILL.md +61 -0
  45. package/agents-config/skills/appstore-connect/SKILL.md +2 -2
  46. package/agents-config/skills/{appstore-connect-setup/SKILL.md → appstore-connect/references/setup.md} +3 -6
  47. package/agents-config/skills/environments-manager/SKILL.md +6 -6
  48. package/agents-config/skills/environments-manager/examples/{claude/commands/dev.md → skills/dev/SKILL.md} +2 -1
  49. package/agents-config/skills/environments-manager/examples/{claude/commands/lint.md → skills/lint/SKILL.md} +2 -1
  50. package/agents-config/skills/environments-manager/examples/{claude/commands/test.md → skills/test/SKILL.md} +2 -1
  51. package/agents-config/skills/environments-manager/examples/{claude/commands/typecheck.md → skills/typecheck/SKILL.md} +2 -1
  52. package/agents-config/skills/environments-manager/references/claude.md +13 -9
  53. package/agents-config/skills/environments-manager/references/cursor.md +2 -2
  54. package/agents-config/skills/ios-testflight/SKILL.md +2 -2
  55. package/agents-config/{commands/prompts/prompt.md → skills/prompt/SKILL.md} +5 -0
  56. package/agents-config/{commands/prompts/tools.md → skills/tools/SKILL.md} +1 -0
  57. package/agents-config/skills/ultrathink/SKILL.md +1 -1
  58. package/agents-config/skills/use-style/SKILL.md +7 -4
  59. package/agents-config/skills/use-style/examples/luma.html +221 -0
  60. package/agents-config/skills/use-style/examples/testspirite.html +340 -0
  61. package/agents-config/skills/use-style/styles/ios-app.md +350 -0
  62. package/agents-config/skills/use-style/styles/luma.md +422 -0
  63. package/agents-config/skills/use-style/styles/new-york-times.md +1 -1
  64. package/agents-config/skills/use-style/styles/split-auth.md +2 -2
  65. package/agents-config/skills/use-style/styles/testspirite.md +397 -0
  66. package/dist/cli.js +56 -118
  67. package/package.json +1 -1
  68. package/agents-config/claude-config/scripts/.claude/commands/fix-on-my-computer.md +0 -87
  69. package/agents-config/commands/prompts/create-vitejs-app.md +0 -272
  70. package/agents-config/commands/prompts/nextjs-add-prisma-db.md +0 -136
  71. package/agents-config/commands/prompts/nextjs-setup-better-auth.md +0 -173
  72. package/agents-config/commands/prompts/nextjs-setup-project.md +0 -200
  73. package/agents-config/commands/prompts/saas-challenge-idea.md +0 -135
  74. package/agents-config/commands/prompts/saas-create-architecture.md +0 -242
  75. package/agents-config/commands/prompts/saas-create-headline.md +0 -132
  76. package/agents-config/commands/prompts/saas-create-landing-copywritting.md +0 -267
  77. package/agents-config/commands/prompts/saas-create-legals-docs.md +0 -176
  78. package/agents-config/commands/prompts/saas-create-logos.md +0 -240
  79. package/agents-config/commands/prompts/saas-create-prd.md +0 -195
  80. package/agents-config/commands/prompts/saas-create-tasks.md +0 -240
  81. package/agents-config/commands/prompts/saas-define-pricing.md +0 -293
  82. package/agents-config/commands/prompts/saas-find-domain-name.md +0 -190
  83. package/agents-config/commands/prompts/saas-implement-landing-page.md +0 -257
  84. package/agents-config/commands/prompts/setup-tmux.md +0 -160
  85. /package/agents-config/skills/{agents-managers → agents-manager}/references/agents.md +0 -0
  86. /package/agents-config/skills/{agents-managers → agents-manager}/references/context-management.md +0 -0
  87. /package/agents-config/skills/{agents-managers → agents-manager}/references/debugging-agents.md +0 -0
  88. /package/agents-config/skills/{agents-managers → agents-manager}/references/error-handling-and-recovery.md +0 -0
  89. /package/agents-config/skills/{agents-managers → agents-manager}/references/evaluation-and-testing.md +0 -0
  90. /package/agents-config/skills/{agents-managers → agents-manager}/references/orchestration-patterns.md +0 -0
@@ -1,12 +1,9 @@
1
- ---
2
- name: appstore-connect-setup
3
- description: Find and configure App Store Connect API credentials for asc auth. Use when asc auth is missing, credentials are unknown, the user says login to App Store Connect, or before TestFlight/App Store release work.
4
- ---
1
+ # App Store Connect Setup (asc auth)
5
2
 
6
- # App Store Connect Setup
3
+ Read this when `asc` is **not yet authenticated** — `asc auth status --validate` reports no working credential, the user asks to "log in to App Store Connect", or credentials are unknown before TestFlight/App Store release work.
7
4
 
8
5
  <objective>
9
- `asc auth login` needs three things: a **key ID**, an **issuer ID**, and a **.p8 private key file**. Users rarely remember where these are. This skill is a battle-tested workflow for finding all three without asking the user to dig through App Store Connect manually.
6
+ `asc auth login` needs three things: a **key ID**, an **issuer ID**, and a **.p8 private key file**. Users rarely remember where these are. This is a battle-tested workflow for finding all three without asking the user to dig through App Store Connect manually.
10
7
 
11
8
  Key insight from a real session: the `.p8` files and key IDs live on disk, but the **issuer ID is almost never stored locally** — it only exists in the App Store Connect web UI. The trick is to read it from the user's already-signed-in browser session via CDP, since Apple login requires 2FA and cannot be automated.
12
9
  </objective>
@@ -235,7 +235,7 @@ python3 -c "import json; json.load(open('.claude/settings.json'))"
235
235
 
236
236
  After the shared scripts are written, for each IDE selected in Step 2, load the matching reference file and apply only its linking config:
237
237
 
238
- - **Claude Code** → [references/claude.md](references/claude.md) - `.claude/settings.json` SessionStart hook + custom slash commands as actions.
238
+ - **Claude Code** → [references/claude.md](references/claude.md) - `.claude/settings.json` worktree hooks + optional project action skills.
239
239
  - **Cursor** → [references/cursor.md](references/cursor.md) - `.cursor/worktrees.json` setup keys.
240
240
  - **Codex** → [references/codex.md](references/codex.md) - `.codex/environments/environment.toml` setup, cleanup, and actions.
241
241
 
@@ -256,11 +256,11 @@ examples/
256
256
  ├── claude/
257
257
  │ ├── .worktreeinclude # native env-file copy list
258
258
  │ ├── settings.json # WorktreeCreate + WorktreeRemove hooks
259
- │ └── commands/ # optional slash-command actions
260
- ├── dev.md
261
- ├── typecheck.md
262
- ├── test.md
263
- └── lint.md
259
+ ├── skills/ # optional project action skills
260
+ ├── dev/SKILL.md
261
+ ├── typecheck/SKILL.md
262
+ ├── test/SKILL.md
263
+ └── lint/SKILL.md
264
264
  ├── cursor/
265
265
  │ └── worktrees.json # setup-worktree-unix -> scripts/worktree-up.sh
266
266
  └── codex/
@@ -1,5 +1,6 @@
1
1
  ---
2
- description: Start the dev server on a free port
2
+ name: dev
3
+ description: Start the dev server on a free port for this project.
3
4
  ---
4
5
 
5
6
  Run `scripts/dev.sh` from the project root. Stream output until the dev server is listening, then return the URL.
@@ -1,5 +1,6 @@
1
1
  ---
2
- description: Run the linter
2
+ name: lint
3
+ description: Run the linter for this project and report violations.
3
4
  ---
4
5
 
5
6
  Run the project's lint command (`pnpm lint:ci`, `bun run lint`, or equivalent). Report any violations.
@@ -1,5 +1,6 @@
1
1
  ---
2
- description: Run unit tests
2
+ name: test
3
+ description: Run unit tests for this project and summarize failures.
3
4
  ---
4
5
 
5
6
  Run the project's unit test command (`pnpm test:ci`, `bun test`, or equivalent). Report failures with file:line references.
@@ -1,5 +1,6 @@
1
1
  ---
2
- description: Typecheck the project
2
+ name: typecheck
3
+ description: Typecheck this project and report errors with file references.
3
4
  ---
4
5
 
5
6
  Run the project's typecheck command (`pnpm ts`, `bun run typecheck`, or equivalent based on the lockfile). Report any errors with file:line references.
@@ -25,12 +25,13 @@ There is no separate `PostWorktreeCreate` hook (feature request #27744 is open).
25
25
  ```text
26
26
  .worktreeinclude # gitignore-syntax list of files to auto-copy
27
27
  .claude/
28
- ├── settings.json # WorktreeCreate + WorktreeRemove hooks
29
- └── commands/ # optional: per-action slash commands
30
- ├── dev.md
31
- ├── typecheck.md
32
- ├── test.md
33
- └── lint.md
28
+ └── settings.json # WorktreeCreate + WorktreeRemove hooks
29
+ .agents/
30
+ └── skills/ # optional: per-action project skills
31
+ ├── dev/SKILL.md
32
+ ├── typecheck/SKILL.md
33
+ ├── test/SKILL.md
34
+ └── lint/SKILL.md
34
35
  scripts/
35
36
  ├── claude-worktree-create.sh # WorktreeCreate hook wrapper
36
37
  ├── claude-worktree-remove.sh # WorktreeRemove hook wrapper
@@ -123,11 +124,14 @@ The `WorktreeCreate` hook **only fires for `claude --worktree` from the CLI**. T
123
124
 
124
125
  Also: **`.claude/settings.json` changes only take effect after restarting Claude.** A running session keeps the old hook config. Tell the user to restart before testing.
125
126
 
126
- ## Custom Slash Commands as Actions (optional)
127
+ ## Project Action Skills (optional)
127
128
 
128
- Claude Code does not have a top-bar action menu. To expose the standard actions, write one file per action under `.claude/commands/`. Each is a tiny prompt that tells Claude to run the matching shared script or package-manager command.
129
+ To expose standard project actions consistently, write one skill per action
130
+ under `.agents/skills/<name>/SKILL.md`. Each skill tells the agent to run the
131
+ matching shared script or package-manager command.
129
132
 
130
- See `examples/claude/commands/` for the four standard ones (`dev.md`, `typecheck.md`, `test.md`, `lint.md`).
133
+ See `examples/skills/` for the four standard ones (`dev`, `typecheck`, `test`,
134
+ `lint`).
131
135
 
132
136
  ## Guardrails
133
137
 
@@ -14,7 +14,7 @@ Three setup keys are supported (Cursor picks the first one that matches the host
14
14
 
15
15
  Cursor does **not** support a cleanup script. Cleanup is timer-based via global settings (`cursor.worktreeCleanupIntervalHours`, `cursor.worktreeMaxCount`). To get a real cleanup hook, expose `scripts/worktree-down.sh` as a project command the user runs manually before `/delete-worktree`.
16
16
 
17
- Built-in worktree slash commands the user already has: `/worktree`, `/best-of-n`, `/apply-worktree`, `/delete-worktree`.
17
+ Cursor includes built-in worktree actions for creating, comparing, applying, and deleting worktrees.
18
18
 
19
19
  ## Environment Variables
20
20
 
@@ -72,7 +72,7 @@ Inline is fine for two-line setups. For anything more, use a script - the worktr
72
72
 
73
73
  - Do not put fragile multi-line setup inline. If it does not fit in two clean array entries, call the script.
74
74
  - Do not put `.cursor/worktrees.json` only in a worktree - it must be on the source checkout / main branch so future worktrees pick it up.
75
- - Do not rely on a cleanup hook - Cursor does not have one. Tell the user to run `scripts/worktree-down.sh` before `/delete-worktree`, or document it in the project README.
75
+ - Do not rely on a cleanup hook - Cursor does not have one. Tell the user to run `scripts/worktree-down.sh` before deleting a worktree, or document it in the project README.
76
76
  - Do not use `$CURSOR_WORKTREE_PATH` - that variable is not documented and not guaranteed. Use `pwd` inside the worktree.
77
77
 
78
78
  ## Verification
@@ -34,7 +34,7 @@ The key insight: interactive `eas build` credential setup requires Apple ID 2FA
34
34
  The user must have (ask once, as a group — these cannot be created by the agent):
35
35
 
36
36
  1. **Apple Developer Program membership** (paid, enrolled).
37
- 2. **App Store Connect API key**: the `AuthKey_<KEY_ID>.p8` file, its key ID, and the team issuer ID. If unknown, run the `appstore-connect-setup` skill, or point the user to App Store Connect > Users and Access > Integrations > App Store Connect API (key must have Admin or App Manager role).
37
+ 2. **App Store Connect API key**: the `AuthKey_<KEY_ID>.p8` file, its key ID, and the team issuer ID. If unknown, follow the `appstore-connect` skill's setup workflow (`references/setup.md`), or point the user to App Store Connect > Users and Access > Integrations > App Store Connect API (key must have Admin or App Manager role).
38
38
  3. **Expo account** logged in: `npx eas-cli@latest whoami` (else `npx eas-cli@latest login`).
39
39
  4. **App record in App Store Connect** for the bundle ID. The public API cannot create app records — if missing, the user creates it once at appstoreconnect.apple.com (My Apps > + > New App, selecting the bundle ID). Verify with Phase D step 1 and stop with clear instructions if absent.
40
40
  5. `asc` CLI installed (`brew install asc`) — used only for the final upload; everything else goes through `scripts/asc-api.mjs`.
@@ -47,7 +47,7 @@ The user must have (ask once, as a group — these cannot be created by the agen
47
47
  | `{bundle_id}` | `SiteConfig.bundleId` |
48
48
  | `{apple_team_id}` | `SiteConfig.appleTeamId` |
49
49
  | `{eas_project_id}` | output of `eas project:init`, then written to `site-config.ts` |
50
- | `{asc_key_id}` / `{asc_issuer_id}` / `{asc_p8_path}` | from the user / `appstore-connect-setup`. Never commit, never print. |
50
+ | `{asc_key_id}` / `{asc_issuer_id}` / `{asc_p8_path}` | from the user / the `appstore-connect` skill's `references/setup.md`. Never commit, never print. |
51
51
  | `{convex_prod_url}` / `{convex_prod_site_url}` | from `npx convex deploy` output / Convex dashboard |
52
52
  | `{asc_app_id}` | numeric app ID resolved from the bundle ID (Phase D) |
53
53
  | `{build_mode}` | default `local`; `expo` only when the user passes `--expo` |
@@ -1,3 +1,8 @@
1
+ ---
2
+ name: prompt
3
+ description: Create minimalist SVG logo variations for an app after collecting logo direction from the user.
4
+ ---
5
+
1
6
  You are an expert logo designer. I want you to create minimalist SVG logo variations for my app.
2
7
 
3
8
  Use extended thinking to deeply analyze my app and create the best logos possible.
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: tools
2
3
  description: Reference document listing all recommended tools and libraries for AIBlueprint development
3
4
  ---
4
5
 
@@ -25,7 +25,7 @@ Take a deep breath. We're not here to write code. We're here to make a dent in t
25
25
 
26
26
  ## Your Tools Are Instruments
27
27
 
28
- - Use bash tools, MCP servers, and custom commands like a virtuoso
28
+ - Use bash tools, MCP servers, and reusable skills like a virtuoso
29
29
  - Git history tells the story—read it, learn from it, honor it
30
30
  - Multiple Claude instances aren't redundancy—they're collaboration between perspectives
31
31
 
@@ -1,16 +1,16 @@
1
1
  ---
2
2
  name: use-style
3
- description: Apply named visual style guides to landing pages and UI. Use for $use-style, /usestyle, list styles, or styles like grid, vercel-simple, stripe, linear, raycast, gumroad, dusk, or split-auth.
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.
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 grid`, `/usestyle split-auth`, `/usestyle list`, or "use the grid style"
11
- - Implicit: user references `/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, or Dusk / Attio / dark CRM dashboard floating on a twilight backdrop / blue data viz / colorful category pills
10
+ - Explicit: `$use-style ios-app`, `$use-style grid`, `/useskill split-auth`, `/useskill list`, or "use the grid style"
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 `split-auth`, `signin 2pages`, `signin-2pages`, `sign-in 2 pages`, `auth split`, and `two-column auth` as `split-auth`. 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 `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.
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.
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
 
@@ -28,6 +28,7 @@ If the parsed style is `list`, or if no style can be inferred, do not load a sty
28
28
 
29
29
  | Style | File | Vibe |
30
30
  |-------|------|------|
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. |
31
32
  | `grid` | `styles/grid.md` | Blueprint landing. Square geometry, 1px borders, mono data, condensed display type. |
32
33
  | `vercel-simple` | `styles/vercel-simple.md` | Vercel dark mode. Black canvas, Geist + mono, 1px `#333` borders, minimal accent. |
33
34
  | `stripe` | `styles/stripe.md` | Stripe fintech UI. Pale `#f6f9fc` canvas, white cards on soft shadows, blurple `#635BFF` accent, green CTA, rounded geometry. |
@@ -37,7 +38,9 @@ If the parsed style is `list`, or if no style can be inferred, do not load a sty
37
38
  | `gumroad` | `styles/gumroad.md` | Loud neo-brutalist commerce. Yellow `#ffc900` + pink `#ff90e8`, thick black borders, hard offset shadows `4px 4px 0 #000`, flat fills, bold geometric sans, pill buttons. Light marketplace + dark dashboard surfaces. |
38
39
  | `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. |
39
40
  | `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
+ | `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. |
40
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
+ | `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. |
41
44
 
42
45
  Add new styles as `styles/<name>.md` and register them here.
43
46
 
@@ -0,0 +1,221 @@
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>Events · Luma</title>
7
+ <link rel="preconnect" href="https://fonts.googleapis.com" />
8
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
9
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet" />
10
+ <style>
11
+ :root {
12
+ --bg:#0a0a0b; --surface:#161618; --raised:#202024; --high:#2a2a2e;
13
+ --fg:#f7f7f8; --body:#c6c6cb; --muted:#8c8c93; --subtle:#5e5e65;
14
+ --border:rgba(255,255,255,0.08); --border-soft:rgba(255,255,255,0.05);
15
+ --white:#fff; --white-fg:#0a0a0a;
16
+ --blue:#2f6bff; --gold:#f5b13d; --pos:#3ecf8e;
17
+ --sans:'Inter', -apple-system, system-ui, sans-serif;
18
+ }
19
+ * { box-sizing:border-box; margin:0; padding:0; }
20
+ html { -webkit-text-size-adjust:100%; }
21
+ body {
22
+ font-family:var(--sans); color:var(--fg); line-height:1.5; -webkit-font-smoothing:antialiased;
23
+ min-height:100vh; padding-bottom:80px;
24
+ background:
25
+ radial-gradient(90% 32% at 50% 0%, rgba(40,82,96,.55) 0%, rgba(22,44,54,.18) 45%, transparent 72%),
26
+ var(--bg);
27
+ background-attachment:fixed;
28
+ }
29
+ .num { font-variant-numeric:tabular-nums; }
30
+ .wrap { max-width:860px; margin:0 auto; padding:0 20px; }
31
+
32
+ /* nav */
33
+ nav.top { display:flex; align-items:center; gap:26px; padding:18px 0; font-size:14px; }
34
+ nav.top a { display:flex; align-items:center; gap:7px; color:var(--muted); text-decoration:none; transition:color .15s; }
35
+ nav.top a:hover { color:var(--fg); }
36
+ nav.top a.active { color:var(--fg); font-weight:500; }
37
+ nav.top svg { width:16px; height:16px; stroke:currentColor; fill:none; stroke-width:1.8; }
38
+ nav.top .spacer { flex:1; }
39
+ .pill-btn { border-radius:999px; padding:8px 16px; font-size:13px; font-weight:600; cursor:pointer; border:none; }
40
+ .pill-btn.white { background:var(--white); color:var(--white-fg); }
41
+ .pill-btn.white:hover { opacity:.9; }
42
+
43
+ /* header */
44
+ .head { display:flex; align-items:center; justify-content:space-between; margin:24px 0 36px; }
45
+ h1 { font-size:clamp(30px,5vw,40px); font-weight:700; letter-spacing:-0.025em; }
46
+ .toggle { display:inline-flex; border-radius:999px; background:var(--raised); padding:3px; font-size:14px; }
47
+ .toggle button { border:none; cursor:pointer; border-radius:999px; padding:7px 18px; color:var(--muted); background:transparent; font-family:inherit; font-size:14px; transition:color .15s; }
48
+ .toggle button.on { background:var(--high); color:var(--fg); font-weight:500; }
49
+
50
+ /* timeline */
51
+ .day { display:grid; grid-template-columns:104px 1fr; gap:18px; }
52
+ .day + .day { margin-top:36px; }
53
+ .rail { position:relative; padding-top:4px; }
54
+ .rail .date { font-size:17px; font-weight:600; letter-spacing:-0.01em; }
55
+ .rail .wd { font-size:14px; color:var(--muted); margin-top:1px; }
56
+ .rail .dot { position:absolute; right:-9px; top:8px; width:9px; height:9px; border-radius:999px; background:var(--blue); box-shadow:0 0 0 4px var(--bg); }
57
+ .rail .line { position:absolute; right:-5px; top:22px; bottom:-44px; border-left:1.5px dashed rgba(255,255,255,.14); }
58
+ .day:last-child .rail .line { display:none; }
59
+ .stack { display:flex; flex-direction:column; gap:12px; }
60
+
61
+ /* card */
62
+ .card { border:1px solid var(--border); background:var(--surface); border-radius:18px; padding:18px; transition:background .15s; }
63
+ .card:hover { background:#19191c; }
64
+ .card .row { display:flex; gap:16px; }
65
+ .card .info { min-width:0; flex:1; }
66
+ .time { font-size:14px; color:var(--muted); }
67
+ .time .g { color:var(--gold); font-weight:500; margin-left:4px; }
68
+ .card h3 { font-size:19px; font-weight:600; letter-spacing:-0.015em; margin-top:6px; line-height:1.25; }
69
+ .by { display:flex; align-items:center; gap:8px; font-size:14px; color:var(--body); margin-top:10px; }
70
+ .loc { display:flex; align-items:center; gap:6px; font-size:14px; color:var(--muted); margin-top:5px; }
71
+ .loc svg, .by svg { width:15px; height:15px; stroke:currentColor; fill:none; stroke-width:1.8; }
72
+ .foot { display:flex; align-items:center; gap:10px; margin-top:14px; }
73
+
74
+ /* pills + avatars */
75
+ .pill { border-radius:999px; padding:4px 11px; font-size:12px; font-weight:500; }
76
+ .pill.invited { background:var(--blue); color:#fff; }
77
+ .pill.going { background:rgba(62,207,142,.15); color:var(--pos); }
78
+ .pill.pending { background:var(--raised); color:var(--muted); }
79
+ .avs { display:flex; align-items:center; }
80
+ .avs .a { width:24px; height:24px; border-radius:999px; box-shadow:0 0 0 2px var(--bg); margin-left:-7px; }
81
+ .avs .a:first-child { margin-left:0; }
82
+ .avs .more { margin-left:9px; border-radius:999px; background:var(--raised); color:var(--muted); font-size:12px; padding:2px 9px; }
83
+
84
+ /* cover thumb */
85
+ .cover { width:104px; height:104px; border-radius:14px; flex-shrink:0; position:relative; overflow:hidden; display:grid; place-items:center; }
86
+ .cover span { font-size:13px; font-weight:700; color:#fff; text-align:center; padding:8px; line-height:1.15; letter-spacing:-0.01em; text-shadow:0 1px 6px rgba(0,0,0,.35); }
87
+ @media (max-width:560px){ .cover{ width:84px; height:84px; } .day{ grid-template-columns:80px 1fr; } }
88
+
89
+ /* avatar gradients */
90
+ .g1{background:linear-gradient(135deg,#f0883e,#d65a5a);} .g2{background:linear-gradient(135deg,#3ecf8e,#2f9e6b);}
91
+ .g3{background:linear-gradient(135deg,#6b8cff,#2f6bff);} .g4{background:linear-gradient(135deg,#b07cf0,#7c4fd6);}
92
+ .g5{background:linear-gradient(135deg,#f5b13d,#e08a1e);} .g6{background:linear-gradient(135deg,#2dd4bf,#0d9488);}
93
+ </style>
94
+ </head>
95
+ <body>
96
+ <div class="wrap">
97
+ <!-- nav -->
98
+ <nav class="top">
99
+ <a class="active" href="#"><svg viewBox="0 0 24 24"><rect x="3" y="6" width="18" height="13" rx="2"/><path d="M3 11h18"/></svg> Events</a>
100
+ <a href="#"><svg viewBox="0 0 24 24"><rect x="4" y="5" width="16" height="16" rx="2"/><path d="M4 9h16M8 3v4M16 3v4"/></svg> Calendars</a>
101
+ <a href="#"><svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="9"/><path d="M15 9l-2 5-4 1 2-5z"/></svg> Discover</a>
102
+ <span class="spacer"></span>
103
+ <button class="pill-btn white">Create Event</button>
104
+ </nav>
105
+
106
+ <!-- header -->
107
+ <div class="head">
108
+ <h1>Events</h1>
109
+ <div class="toggle">
110
+ <button class="on">Upcoming</button>
111
+ <button>Past</button>
112
+ </div>
113
+ </div>
114
+
115
+ <!-- timeline -->
116
+ <!-- day -->
117
+ <div class="day">
118
+ <div class="rail">
119
+ <div class="date">Jun 22</div><div class="wd">Monday</div>
120
+ <span class="dot"></span><span class="line"></span>
121
+ </div>
122
+ <div class="stack">
123
+ <div class="card"><div class="row">
124
+ <div class="info">
125
+ <div class="time">3:30 AM<span class="g">· Jun 21, 6:30 PM PDT</span></div>
126
+ <h3>Founder DJ Party</h3>
127
+ <div class="by"><span class="a g1" style="width:20px;height:20px;border-radius:999px;display:inline-block"></span> By Founders on Tap &amp; Lyvia Chapman</div>
128
+ <div class="loc"><svg viewBox="0 0 24 24"><path d="M12 21s7-6 7-11a7 7 0 1 0-14 0c0 5 7 11 7 11z"/><circle cx="12" cy="10" r="2.5"/></svg> San Francisco, United States</div>
129
+ <div class="foot">
130
+ <span class="pill invited">Invited</span>
131
+ <div class="avs"><span class="a g2"></span><span class="a g3"></span><span class="a g4"></span><span class="more num">+132</span></div>
132
+ </div>
133
+ </div>
134
+ <div class="cover g1"><span>Founder<br>DJ Party</span></div>
135
+ </div></div>
136
+ </div>
137
+ </div>
138
+
139
+ <!-- day -->
140
+ <div class="day">
141
+ <div class="rail">
142
+ <div class="date">Jun 24</div><div class="wd">Wednesday</div>
143
+ <span class="dot"></span><span class="line"></span>
144
+ </div>
145
+ <div class="stack">
146
+ <div class="card"><div class="row">
147
+ <div class="info">
148
+ <div class="time">3:00 AM<span class="g">· Jun 23, 6:00 PM PDT</span></div>
149
+ <h3>Agents After Hours ft. Harvey, Reducto, and Browserbase</h3>
150
+ <div class="by"><span class="a g3" style="width:20px;height:20px;border-radius:999px;display:inline-block"></span> By Shrey Pandya, Browserbase, Yash Gupta &amp; Palak A…</div>
151
+ <div class="loc"><svg viewBox="0 0 24 24"><path d="M12 21s7-6 7-11a7 7 0 1 0-14 0c0 5 7 11 7 11z"/><circle cx="12" cy="10" r="2.5"/></svg> 1 Post St</div>
152
+ <div class="foot"><span class="pill invited">Invited</span></div>
153
+ </div>
154
+ <div class="cover g2"><span>Agents<br>After Hours</span></div>
155
+ </div></div>
156
+
157
+ <div class="card"><div class="row">
158
+ <div class="info">
159
+ <div class="time">9:00 PM<span class="g">· 12:00 PM PDT</span></div>
160
+ <h3>STAK Ventures: Speaker Series - VIP Lunch &amp; Learn</h3>
161
+ <div class="by"><span class="a g5" style="width:20px;height:20px;border-radius:999px;display:inline-block"></span> By Brian Sparkes</div>
162
+ <div class="loc"><svg viewBox="0 0 24 24"><path d="M12 21s7-6 7-11a7 7 0 1 0-14 0c0 5 7 11 7 11z"/><circle cx="12" cy="10" r="2.5"/></svg> STAK Space - 1920 Broadway</div>
163
+ <div class="foot">
164
+ <span class="pill going">Going</span>
165
+ <div class="avs"><span class="a g6"></span><span class="a g1"></span><span class="a g4"></span><span class="more num">+379</span></div>
166
+ </div>
167
+ </div>
168
+ <div class="cover g5"><span>STAK<br>Ventures</span></div>
169
+ </div></div>
170
+ </div>
171
+ </div>
172
+
173
+ <!-- day -->
174
+ <div class="day">
175
+ <div class="rail">
176
+ <div class="date">Jun 27</div><div class="wd">Saturday</div>
177
+ <span class="dot"></span><span class="line"></span>
178
+ </div>
179
+ <div class="stack">
180
+ <div class="card"><div class="row">
181
+ <div class="info">
182
+ <div class="time">5:30 PM<span class="g">· 8:30 AM PDT</span></div>
183
+ <h3>ExecuTorch with Meta &amp; Qualcomm @ The Web Data Loft</h3>
184
+ <div class="by"><span class="a g4" style="width:20px;height:20px;border-radius:999px;display:inline-block"></span> By Bright Data, lablab, Lauren Lunde &amp; Aaishika</div>
185
+ <div class="loc"><svg viewBox="0 0 24 24"><path d="M12 21s7-6 7-11a7 7 0 1 0-14 0c0 5 7 11 7 11z"/><circle cx="12" cy="10" r="2.5"/></svg> 625 2nd St</div>
186
+ <div class="foot">
187
+ <span class="pill invited">Invited</span>
188
+ <div class="avs"><span class="a g3"></span><span class="a g2"></span><span class="more num">+181</span></div>
189
+ </div>
190
+ </div>
191
+ <div class="cover g3"><span>ExecuTorch</span></div>
192
+ </div></div>
193
+ </div>
194
+ </div>
195
+
196
+ <!-- day -->
197
+ <div class="day">
198
+ <div class="rail">
199
+ <div class="date">Jun 30</div><div class="wd">Tuesday</div>
200
+ <span class="dot"></span><span class="line"></span>
201
+ </div>
202
+ <div class="stack">
203
+ <div class="card"><div class="row">
204
+ <div class="info">
205
+ <div class="time">3:00 AM<span class="g">· Jun 29, 6:00 PM PDT</span></div>
206
+ <h3>Model Independence Day</h3>
207
+ <div class="by"><span class="a g6" style="width:20px;height:20px;border-radius:999px;display:inline-block"></span> By Tereza Tížková</div>
208
+ <div class="loc"><svg viewBox="0 0 24 24"><path d="M12 21s7-6 7-11a7 7 0 1 0-14 0c0 5 7 11 7 11z"/><circle cx="12" cy="10" r="2.5"/></svg> San Francisco, United States</div>
209
+ <div class="foot">
210
+ <span class="pill pending">Going · Maybe</span>
211
+ <div class="avs"><span class="a g4"></span><span class="a g5"></span><span class="a g2"></span><span class="more num">+108</span></div>
212
+ </div>
213
+ </div>
214
+ <div class="cover g4"><span>Model<br>Independence</span></div>
215
+ </div></div>
216
+ </div>
217
+ </div>
218
+
219
+ </div>
220
+ </body>
221
+ </html>