create-modern-react 2.1.2 → 2.1.3

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 (102) hide show
  1. package/README.md +19 -0
  2. package/lib/prompts.js +1 -0
  3. package/lib/setup.js +3 -0
  4. package/package.json +1 -1
  5. package/templates/base/.claude/skills/agent-browser/SKILL.md +356 -0
  6. package/templates/base/.claude/skills/agent-browser/references/authentication.md +188 -0
  7. package/templates/base/.claude/skills/agent-browser/references/proxy-support.md +175 -0
  8. package/templates/base/.claude/skills/agent-browser/references/session-management.md +181 -0
  9. package/templates/base/.claude/skills/agent-browser/references/snapshot-refs.md +186 -0
  10. package/templates/base/.claude/skills/agent-browser/references/video-recording.md +162 -0
  11. package/templates/base/.claude/skills/agent-browser/templates/authenticated-session.sh +91 -0
  12. package/templates/base/.claude/skills/agent-browser/templates/capture-workflow.sh +68 -0
  13. package/templates/base/.claude/skills/agent-browser/templates/form-automation.sh +64 -0
  14. package/templates/base/.claude/skills/autoskill/skill.md +134 -0
  15. package/templates/base/.claude/skills/design-principles/skill.md +237 -0
  16. package/templates/base/.claude/skills/frontend-design/skill.md +42 -0
  17. package/templates/base/.claude/skills/learn-together/skill.md +448 -0
  18. package/templates/base/.claude/skills/question-me/skill.md +175 -0
  19. package/templates/base/.claude/skills/react-best-practices/AGENTS.md +2410 -0
  20. package/templates/base/.claude/skills/react-best-practices/README.md +123 -0
  21. package/templates/base/.claude/skills/react-best-practices/SKILL.md +135 -0
  22. package/templates/base/.claude/skills/react-best-practices/metadata.json +15 -0
  23. package/templates/base/.claude/skills/react-best-practices/rules/_sections.md +46 -0
  24. package/templates/base/.claude/skills/react-best-practices/rules/_template.md +28 -0
  25. package/templates/base/.claude/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  26. package/templates/base/.claude/skills/react-best-practices/rules/advanced-use-latest.md +49 -0
  27. package/templates/base/.claude/skills/react-best-practices/rules/async-api-routes.md +38 -0
  28. package/templates/base/.claude/skills/react-best-practices/rules/async-defer-await.md +80 -0
  29. package/templates/base/.claude/skills/react-best-practices/rules/async-dependencies.md +36 -0
  30. package/templates/base/.claude/skills/react-best-practices/rules/async-parallel.md +28 -0
  31. package/templates/base/.claude/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  32. package/templates/base/.claude/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
  33. package/templates/base/.claude/skills/react-best-practices/rules/bundle-conditional.md +31 -0
  34. package/templates/base/.claude/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  35. package/templates/base/.claude/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  36. package/templates/base/.claude/skills/react-best-practices/rules/bundle-preload.md +50 -0
  37. package/templates/base/.claude/skills/react-best-practices/rules/client-event-listeners.md +74 -0
  38. package/templates/base/.claude/skills/react-best-practices/rules/client-localstorage-schema.md +71 -0
  39. package/templates/base/.claude/skills/react-best-practices/rules/client-passive-event-listeners.md +48 -0
  40. package/templates/base/.claude/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
  41. package/templates/base/.claude/skills/react-best-practices/rules/js-batch-dom-css.md +57 -0
  42. package/templates/base/.claude/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
  43. package/templates/base/.claude/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
  44. package/templates/base/.claude/skills/react-best-practices/rules/js-cache-storage.md +70 -0
  45. package/templates/base/.claude/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
  46. package/templates/base/.claude/skills/react-best-practices/rules/js-early-exit.md +50 -0
  47. package/templates/base/.claude/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
  48. package/templates/base/.claude/skills/react-best-practices/rules/js-index-maps.md +37 -0
  49. package/templates/base/.claude/skills/react-best-practices/rules/js-length-check-first.md +49 -0
  50. package/templates/base/.claude/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
  51. package/templates/base/.claude/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
  52. package/templates/base/.claude/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  53. package/templates/base/.claude/skills/react-best-practices/rules/rendering-activity.md +26 -0
  54. package/templates/base/.claude/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  55. package/templates/base/.claude/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
  56. package/templates/base/.claude/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
  57. package/templates/base/.claude/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  58. package/templates/base/.claude/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  59. package/templates/base/.claude/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
  60. package/templates/base/.claude/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
  61. package/templates/base/.claude/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
  62. package/templates/base/.claude/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
  63. package/templates/base/.claude/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  64. package/templates/base/.claude/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  65. package/templates/base/.claude/skills/react-best-practices/rules/rerender-memo.md +44 -0
  66. package/templates/base/.claude/skills/react-best-practices/rules/rerender-transitions.md +40 -0
  67. package/templates/base/.claude/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
  68. package/templates/base/.claude/skills/react-best-practices/rules/server-cache-lru.md +41 -0
  69. package/templates/base/.claude/skills/react-best-practices/rules/server-cache-react.md +76 -0
  70. package/templates/base/.claude/skills/react-best-practices/rules/server-parallel-fetching.md +83 -0
  71. package/templates/base/.claude/skills/react-best-practices/rules/server-serialization.md +38 -0
  72. package/templates/base/.claude/skills/ui-ux-pro-max/SKILL.md +377 -0
  73. package/templates/base/.claude/skills/ui-ux-pro-max/data/charts.csv +26 -0
  74. package/templates/base/.claude/skills/ui-ux-pro-max/data/colors.csv +97 -0
  75. package/templates/base/.claude/skills/ui-ux-pro-max/data/icons.csv +101 -0
  76. package/templates/base/.claude/skills/ui-ux-pro-max/data/landing.csv +31 -0
  77. package/templates/base/.claude/skills/ui-ux-pro-max/data/products.csv +97 -0
  78. package/templates/base/.claude/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
  79. package/templates/base/.claude/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -0
  80. package/templates/base/.claude/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  81. package/templates/base/.claude/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  82. package/templates/base/.claude/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  83. package/templates/base/.claude/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  84. package/templates/base/.claude/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  85. package/templates/base/.claude/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  86. package/templates/base/.claude/skills/ui-ux-pro-max/data/stacks/react-native.csv +53 -0
  87. package/templates/base/.claude/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
  88. package/templates/base/.claude/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  89. package/templates/base/.claude/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  90. package/templates/base/.claude/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  91. package/templates/base/.claude/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  92. package/templates/base/.claude/skills/ui-ux-pro-max/data/styles.csv +68 -0
  93. package/templates/base/.claude/skills/ui-ux-pro-max/data/typography.csv +58 -0
  94. package/templates/base/.claude/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  95. package/templates/base/.claude/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  96. package/templates/base/.claude/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
  97. package/templates/base/.claude/skills/ui-ux-pro-max/scripts/core.py +253 -0
  98. package/templates/base/.claude/skills/ui-ux-pro-max/scripts/design_system.py +1067 -0
  99. package/templates/base/.claude/skills/ui-ux-pro-max/scripts/search.py +106 -0
  100. package/templates/base/public/robots.txt +2 -0
  101. package/templates/base/public/vite.svg +1 -0
  102. package/templates/base/src/screens/home/index.tsx +15 -2
@@ -0,0 +1,106 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ """
4
+ UI/UX Pro Max Search - BM25 search engine for UI/UX style guides
5
+ Usage: python search.py "<query>" [--domain <domain>] [--stack <stack>] [--max-results 3]
6
+ python search.py "<query>" --design-system [-p "Project Name"]
7
+ python search.py "<query>" --design-system --persist [-p "Project Name"] [--page "dashboard"]
8
+
9
+ Domains: style, prompt, color, chart, landing, product, ux, typography
10
+ Stacks: html-tailwind, react, nextjs
11
+
12
+ Persistence (Master + Overrides pattern):
13
+ --persist Save design system to design-system/MASTER.md
14
+ --page Also create a page-specific override file in design-system/pages/
15
+ """
16
+
17
+ import argparse
18
+ from core import CSV_CONFIG, AVAILABLE_STACKS, MAX_RESULTS, search, search_stack
19
+ from design_system import generate_design_system, persist_design_system
20
+
21
+
22
+ def format_output(result):
23
+ """Format results for Claude consumption (token-optimized)"""
24
+ if "error" in result:
25
+ return f"Error: {result['error']}"
26
+
27
+ output = []
28
+ if result.get("stack"):
29
+ output.append(f"## UI Pro Max Stack Guidelines")
30
+ output.append(f"**Stack:** {result['stack']} | **Query:** {result['query']}")
31
+ else:
32
+ output.append(f"## UI Pro Max Search Results")
33
+ output.append(f"**Domain:** {result['domain']} | **Query:** {result['query']}")
34
+ output.append(f"**Source:** {result['file']} | **Found:** {result['count']} results\n")
35
+
36
+ for i, row in enumerate(result['results'], 1):
37
+ output.append(f"### Result {i}")
38
+ for key, value in row.items():
39
+ value_str = str(value)
40
+ if len(value_str) > 300:
41
+ value_str = value_str[:300] + "..."
42
+ output.append(f"- **{key}:** {value_str}")
43
+ output.append("")
44
+
45
+ return "\n".join(output)
46
+
47
+
48
+ if __name__ == "__main__":
49
+ parser = argparse.ArgumentParser(description="UI Pro Max Search")
50
+ parser.add_argument("query", help="Search query")
51
+ parser.add_argument("--domain", "-d", choices=list(CSV_CONFIG.keys()), help="Search domain")
52
+ parser.add_argument("--stack", "-s", choices=AVAILABLE_STACKS, help="Stack-specific search (html-tailwind, react, nextjs)")
53
+ parser.add_argument("--max-results", "-n", type=int, default=MAX_RESULTS, help="Max results (default: 3)")
54
+ parser.add_argument("--json", action="store_true", help="Output as JSON")
55
+ # Design system generation
56
+ parser.add_argument("--design-system", "-ds", action="store_true", help="Generate complete design system recommendation")
57
+ parser.add_argument("--project-name", "-p", type=str, default=None, help="Project name for design system output")
58
+ parser.add_argument("--format", "-f", choices=["ascii", "markdown"], default="ascii", help="Output format for design system")
59
+ # Persistence (Master + Overrides pattern)
60
+ parser.add_argument("--persist", action="store_true", help="Save design system to design-system/MASTER.md (creates hierarchical structure)")
61
+ parser.add_argument("--page", type=str, default=None, help="Create page-specific override file in design-system/pages/")
62
+ parser.add_argument("--output-dir", "-o", type=str, default=None, help="Output directory for persisted files (default: current directory)")
63
+
64
+ args = parser.parse_args()
65
+
66
+ # Design system takes priority
67
+ if args.design_system:
68
+ result = generate_design_system(
69
+ args.query,
70
+ args.project_name,
71
+ args.format,
72
+ persist=args.persist,
73
+ page=args.page,
74
+ output_dir=args.output_dir
75
+ )
76
+ print(result)
77
+
78
+ # Print persistence confirmation
79
+ if args.persist:
80
+ project_slug = args.project_name.lower().replace(' ', '-') if args.project_name else "default"
81
+ print("\n" + "=" * 60)
82
+ print(f"✅ Design system persisted to design-system/{project_slug}/")
83
+ print(f" 📄 design-system/{project_slug}/MASTER.md (Global Source of Truth)")
84
+ if args.page:
85
+ page_filename = args.page.lower().replace(' ', '-')
86
+ print(f" 📄 design-system/{project_slug}/pages/{page_filename}.md (Page Overrides)")
87
+ print("")
88
+ print(f"📖 Usage: When building a page, check design-system/{project_slug}/pages/[page].md first.")
89
+ print(f" If exists, its rules override MASTER.md. Otherwise, use MASTER.md.")
90
+ print("=" * 60)
91
+ # Stack search
92
+ elif args.stack:
93
+ result = search_stack(args.query, args.stack, args.max_results)
94
+ if args.json:
95
+ import json
96
+ print(json.dumps(result, indent=2, ensure_ascii=False))
97
+ else:
98
+ print(format_output(result))
99
+ # Domain search
100
+ else:
101
+ result = search(args.query, args.domain, args.max_results)
102
+ if args.json:
103
+ import json
104
+ print(json.dumps(result, indent=2, ensure_ascii=False))
105
+ else:
106
+ print(format_output(result))
@@ -0,0 +1,2 @@
1
+ User-agent: *
2
+ Allow: /
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFBD4F"></stop><stop offset="100%" stop-color="#FF980E"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
@@ -1,5 +1,5 @@
1
1
  import { useState } from 'react';
2
- import { Moon, Sun, Github, Zap } from 'lucide-react';
2
+ import { Moon, Sun, Github, Zap, Bot } from 'lucide-react';
3
3
  import { Button, Card, CardContent, CardHeader, CardTitle } from '~/components/ui';
4
4
  import { useTheme } from '~/providers';
5
5
 
@@ -25,7 +25,7 @@ export default function Home() {
25
25
  create-modern-react
26
26
  </h1>
27
27
  <p className="mt-2 text-muted-foreground">
28
- Production-ready React + TypeScript + Tailwind in seconds
28
+ AI-first React + TypeScript + Tailwind in seconds
29
29
  </p>
30
30
  </div>
31
31
 
@@ -94,6 +94,19 @@ export default function Home() {
94
94
  />
95
95
  </div>
96
96
 
97
+ {/* AI Skills Highlight */}
98
+ <div className="rounded-lg border bg-gradient-to-r from-primary/5 to-primary/10 p-4">
99
+ <div className="flex items-start gap-3">
100
+ <Bot className="h-5 w-5 text-primary mt-0.5" />
101
+ <div>
102
+ <h3 className="font-semibold">Claude Code AI Skills</h3>
103
+ <p className="mt-1 text-sm text-muted-foreground">
104
+ 8 pre-configured skills for React best practices, UI/UX design, browser testing, and spec refinement
105
+ </p>
106
+ </div>
107
+ </div>
108
+ </div>
109
+
97
110
  {/* Footer */}
98
111
  <div className="flex justify-center">
99
112
  <Button variant="outline" asChild>