aiblueprint-cli 1.4.81 → 1.4.82

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 (80) hide show
  1. package/README.md +21 -17
  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/SKILL.md +1 -1
  43. package/agents-config/skills/agents-managers/references/writing-agent-prompts.md +1 -1
  44. package/agents-config/{commands/prompts/create-vitejs-app.md → skills/create-vitejs-app/SKILL.md} +2 -1
  45. package/agents-config/skills/environments-manager/SKILL.md +6 -6
  46. package/agents-config/skills/environments-manager/examples/{claude/commands/dev.md → skills/dev/SKILL.md} +2 -1
  47. package/agents-config/skills/environments-manager/examples/{claude/commands/lint.md → skills/lint/SKILL.md} +2 -1
  48. package/agents-config/skills/environments-manager/examples/{claude/commands/test.md → skills/test/SKILL.md} +2 -1
  49. package/agents-config/skills/environments-manager/examples/{claude/commands/typecheck.md → skills/typecheck/SKILL.md} +2 -1
  50. package/agents-config/skills/environments-manager/references/claude.md +13 -9
  51. package/agents-config/skills/environments-manager/references/cursor.md +2 -2
  52. package/agents-config/{commands/prompts/nextjs-add-prisma-db.md → skills/nextjs-add-prisma-db/SKILL.md} +1 -0
  53. package/agents-config/{commands/prompts/nextjs-setup-better-auth.md → skills/nextjs-setup-better-auth/SKILL.md} +1 -0
  54. package/agents-config/{commands/prompts/nextjs-setup-project.md → skills/nextjs-setup-project/SKILL.md} +1 -0
  55. package/agents-config/{commands/prompts/prompt.md → skills/prompt/SKILL.md} +5 -0
  56. package/agents-config/{commands/prompts/saas-challenge-idea.md → skills/saas-challenge-idea/SKILL.md} +1 -0
  57. package/agents-config/{commands/prompts/saas-create-architecture.md → skills/saas-create-architecture/SKILL.md} +1 -0
  58. package/agents-config/{commands/prompts/saas-create-headline.md → skills/saas-create-headline/SKILL.md} +1 -0
  59. package/agents-config/{commands/prompts/saas-create-landing-copywritting.md → skills/saas-create-landing-copywritting/SKILL.md} +1 -0
  60. package/agents-config/{commands/prompts/saas-create-legals-docs.md → skills/saas-create-legals-docs/SKILL.md} +1 -0
  61. package/agents-config/{commands/prompts/saas-create-logos.md → skills/saas-create-logos/SKILL.md} +1 -0
  62. package/agents-config/{commands/prompts/saas-create-prd.md → skills/saas-create-prd/SKILL.md} +4 -3
  63. package/agents-config/{commands/prompts/saas-create-tasks.md → skills/saas-create-tasks/SKILL.md} +1 -0
  64. package/agents-config/{commands/prompts/saas-define-pricing.md → skills/saas-define-pricing/SKILL.md} +1 -0
  65. package/agents-config/{commands/prompts/saas-find-domain-name.md → skills/saas-find-domain-name/SKILL.md} +1 -0
  66. package/agents-config/{commands/prompts/saas-implement-landing-page.md → skills/saas-implement-landing-page/SKILL.md} +1 -0
  67. package/agents-config/{commands/prompts/setup-tmux.md → skills/setup-tmux/SKILL.md} +5 -0
  68. package/agents-config/{commands/prompts/tools.md → skills/tools/SKILL.md} +1 -0
  69. package/agents-config/skills/ultrathink/SKILL.md +1 -1
  70. package/agents-config/skills/use-style/SKILL.md +7 -4
  71. package/agents-config/skills/use-style/examples/luma.html +221 -0
  72. package/agents-config/skills/use-style/examples/testspirite.html +340 -0
  73. package/agents-config/skills/use-style/styles/ios-app.md +350 -0
  74. package/agents-config/skills/use-style/styles/luma.md +422 -0
  75. package/agents-config/skills/use-style/styles/new-york-times.md +1 -1
  76. package/agents-config/skills/use-style/styles/split-auth.md +2 -2
  77. package/agents-config/skills/use-style/styles/testspirite.md +397 -0
  78. package/dist/cli.js +17 -80
  79. package/package.json +1 -1
  80. package/agents-config/claude-config/scripts/.claude/commands/fix-on-my-computer.md +0 -87
@@ -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
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: nextjs-add-prisma-db
2
3
  description: Setup Prisma ORM with PostgreSQL in a Next.js project with schema, migrations, and seed data
3
4
  ---
4
5
 
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: nextjs-setup-better-auth
2
3
  description: Setup Better Auth with Email OTP authentication and shadcn/ui components in a Next.js project
3
4
  ---
4
5
 
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: nextjs-setup-project
2
3
  description: Setup a complete Next.js project with TypeScript, Tailwind, shadcn/ui, TanStack Query, and theme support
3
4
  ---
4
5
 
@@ -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: saas-challenge-idea
2
3
  description: Challenge and validate a business idea through competitive research and brutally honest market analysis
3
4
  ---
4
5
 
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: saas-create-architecture
2
3
  description: Design technical architecture for a Next.js SaaS application based on PRD requirements
3
4
  ---
4
5
 
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: saas-create-headline
2
3
  description: Generate clickbait headlines that sound too good to be true for your landing page
3
4
  arguments:
4
5
  - name: product-description
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: saas-create-landing-copywritting
2
3
  description: Generate conversion-focused landing page copywriting based on PRD and marketing context
3
4
  ---
4
5
 
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: saas-create-legals-docs
2
3
  description: Generate GDPR-compliant Privacy Policy and Terms of Service based on product and data practices
3
4
  ---
4
5
 
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: saas-create-logos
2
3
  description: Generate 20 abstract SVG logo variations with brainstorming and HTML showcase
3
4
  arguments:
4
5
  - name: app-name
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: saas-create-prd
2
3
  description: Create a lean Product Requirements Document through interactive discovery conversation
3
4
  ---
4
5
 
@@ -155,9 +156,9 @@ Explicitly NOT building in MVP:
155
156
 
156
157
  5. **Suggest next steps**:
157
158
  > "PRD created! Next steps in order:
158
- > 1. `/prompts/saas-create-architecture` - Design technical architecture
159
- > 2. `/prompts/saas-define-pricing` - Define pricing strategy
160
- > 3. `/prompts/saas-create-landing-copy` - Create landing page copy"
159
+ > 1. `saas-create-architecture` skill - Design technical architecture
160
+ > 2. `saas-define-pricing` skill - Define pricing strategy
161
+ > 3. `saas-create-landing-copywritting` skill - Create landing page copy"
161
162
  </process>
162
163
 
163
164
  <constraints>
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: saas-create-tasks
2
3
  description: Generate implementation task files from PRD and Architecture documents
3
4
  ---
4
5
 
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: saas-define-pricing
2
3
  description: Create a data-driven SaaS pricing strategy with competitor research and value-based pricing
3
4
  ---
4
5
 
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: saas-find-domain-name
2
3
  description: Generate and validate domain name options with availability checking for brand and utility domains
3
4
  ---
4
5
 
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: saas-implement-landing-page
2
3
  description: Implement a production-ready landing page from specification using shadcn/ui components
3
4
  ---
4
5
 
@@ -1,3 +1,8 @@
1
+ ---
2
+ name: setup-tmux
3
+ description: Install and configure tmux with Ghostty on macOS using a minimalist keyboard-first setup.
4
+ ---
5
+
1
6
  Install and configure tmux with Ghostty on macOS. This sets up a minimalist tmux with direct keyboard shortcuts (no prefix needed for common actions), auto-naming tabs, session persistence, and a clean status bar.
2
7
 
3
8
  ## Step 1: Install tmux
@@ -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>