create-agentic-app 1.1.56 → 1.1.57

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 (48) hide show
  1. package/package.json +1 -1
  2. package/template/.agents/skills/security-scanner/SKILL.md +157 -0
  3. package/template/.agents/skills/security-scanner/references/A01-broken-access-control.md +136 -0
  4. package/template/.agents/skills/security-scanner/references/A02-security-misconfiguration.md +130 -0
  5. package/template/.agents/skills/security-scanner/references/A03-software-supply-chain-failures.md +117 -0
  6. package/template/.agents/skills/security-scanner/references/A04-cryptographic-failures.md +141 -0
  7. package/template/.agents/skills/security-scanner/references/A05-injection.md +155 -0
  8. package/template/.agents/skills/security-scanner/references/A06-insecure-design.md +145 -0
  9. package/template/.agents/skills/security-scanner/references/A07-authentication-failures.md +150 -0
  10. package/template/.agents/skills/security-scanner/references/A08-software-data-integrity-failures.md +132 -0
  11. package/template/.agents/skills/security-scanner/references/A09-security-logging-alerting-failures.md +130 -0
  12. package/template/.agents/skills/security-scanner/references/A10-mishandling-exceptional-conditions.md +154 -0
  13. package/template/.agents/skills/security-scanner/references/report-template.md +148 -0
  14. package/template/.claude/agents/security-scanner.md +214 -0
  15. package/template/.claude/skills/security-scanner/SKILL.md +157 -0
  16. package/template/.claude/skills/security-scanner/references/A01-broken-access-control.md +136 -0
  17. package/template/.claude/skills/security-scanner/references/A02-security-misconfiguration.md +130 -0
  18. package/template/.claude/skills/security-scanner/references/A03-software-supply-chain-failures.md +117 -0
  19. package/template/.claude/skills/security-scanner/references/A04-cryptographic-failures.md +141 -0
  20. package/template/.claude/skills/security-scanner/references/A05-injection.md +155 -0
  21. package/template/.claude/skills/security-scanner/references/A06-insecure-design.md +145 -0
  22. package/template/.claude/skills/security-scanner/references/A07-authentication-failures.md +150 -0
  23. package/template/.claude/skills/security-scanner/references/A08-software-data-integrity-failures.md +132 -0
  24. package/template/.claude/skills/security-scanner/references/A09-security-logging-alerting-failures.md +130 -0
  25. package/template/.claude/skills/security-scanner/references/A10-mishandling-exceptional-conditions.md +154 -0
  26. package/template/.claude/skills/security-scanner/references/report-template.md +148 -0
  27. package/template/next-env.d.ts +1 -1
  28. package/template/specs/ui-polish-responsive/README.md +59 -0
  29. package/template/specs/ui-polish-responsive/action-required.md +3 -0
  30. package/template/specs/ui-polish-responsive/requirements.md +53 -0
  31. package/template/specs/ui-polish-responsive/tasks/task-01-globals-css.md +144 -0
  32. package/template/specs/ui-polish-responsive/tasks/task-02-layout.md +66 -0
  33. package/template/specs/ui-polish-responsive/tasks/task-03-site-header.md +79 -0
  34. package/template/specs/ui-polish-responsive/tasks/task-04-site-footer.md +63 -0
  35. package/template/specs/ui-polish-responsive/tasks/task-05-home-page.md +215 -0
  36. package/template/specs/ui-polish-responsive/tasks/task-06-dashboard.md +222 -0
  37. package/template/specs/ui-polish-responsive/tasks/task-07-chat-page.md +225 -0
  38. package/template/specs/ui-polish-responsive/tasks/task-08-profile-page.md +192 -0
  39. package/template/specs/ui-polish-responsive/tasks/task-09-auth-pages.md +97 -0
  40. package/template/specs/ui-polish-responsive/tasks/task-10-setup-checklist.md +120 -0
  41. package/template/specs/ui-polish-responsive/tasks/task-11-starter-prompt-modal.md +87 -0
  42. package/template/src/app/globals.css +65 -7
  43. package/template/src/app/layout.tsx +2 -2
  44. package/template/src/app/page.tsx +174 -174
  45. package/template/src/components/setup-checklist.tsx +162 -162
  46. package/template/src/components/site-footer.tsx +2 -2
  47. package/template/src/components/site-header.tsx +3 -3
  48. package/template/src/components/starter-prompt-modal.tsx +202 -202
@@ -1,202 +1,202 @@
1
- "use client";
2
-
3
- import { useState } from "react";
4
- import { Copy, Check } from "lucide-react";
5
- import { Button } from "@/components/ui/button";
6
- import {
7
- Dialog,
8
- DialogContent,
9
- DialogDescription,
10
- DialogHeader,
11
- DialogTitle,
12
- DialogTrigger,
13
- } from "@/components/ui/dialog";
14
-
15
- const STARTER_PROMPT = `I'm working with an agentic coding boilerplate project that includes authentication, database integration, and AI capabilities. Here's what's already set up:
16
-
17
- ## Current Agentic Coding Boilerplate Structure
18
- - **Authentication**: Better Auth with Google OAuth integration
19
- - **Database**: Drizzle ORM with PostgreSQL setup
20
- - **AI Integration**: Vercel AI SDK with OpenAI integration
21
- - **UI**: shadcn/ui components with Tailwind CSS
22
- - **Current Routes**:
23
- - \`/\` - Home page with setup instructions and feature overview
24
- - \`/dashboard\` - Protected dashboard page (requires authentication)
25
- - \`/chat\` - AI chat interface (requires OpenAI API key)
26
-
27
- ## Important Context
28
- This is an **agentic coding boilerplate/starter template** - all existing pages and components are meant to be examples and should be **completely replaced** to build the actual AI-powered application.
29
-
30
- ### CRITICAL: You MUST Override All Boilerplate Content
31
- **DO NOT keep any boilerplate components, text, or UI elements unless explicitly requested.** This includes:
32
-
33
- - **Remove all placeholder/demo content** (setup checklists, welcome messages, boilerplate text)
34
- - **Replace the entire navigation structure** - don't keep the existing site header or nav items
35
- - **Override all page content completely** - don't append to existing pages, replace them entirely
36
- - **Remove or replace all example components** (setup-checklist, starter-prompt-modal, etc.)
37
- - **Replace placeholder routes and pages** with the actual application functionality
38
-
39
- ### Required Actions:
40
- 1. **Start Fresh**: Treat existing components as temporary scaffolding to be removed
41
- 2. **Complete Replacement**: Build the new application from scratch using the existing tech stack
42
- 3. **No Hybrid Approach**: Don't try to integrate new features alongside existing boilerplate content
43
- 4. **Clean Slate**: The final application should have NO trace of the original boilerplate UI or content
44
-
45
- The only things to preserve are:
46
- - **All installed libraries and dependencies** (DO NOT uninstall or remove any packages from package.json)
47
- - **Authentication system** (but customize the UI/flow as needed)
48
- - **Database setup and schema** (but modify schema as needed for your use case)
49
- - **Core configuration files** (next.config.ts, tsconfig.json, tailwind.config.ts, etc.)
50
- - **Build and development scripts** (keep all npm/pnpm scripts in package.json)
51
-
52
- ## Tech Stack
53
- - Next.js 16 with App Router
54
- - TypeScript
55
- - Tailwind CSS
56
- - Better Auth for authentication
57
- - Drizzle ORM + PostgreSQL
58
- - Vercel AI SDK
59
- - shadcn/ui components
60
- - Lucide React icons
61
-
62
- ## AI Model Configuration
63
- **IMPORTANT**: When implementing any AI functionality, always use the \`OPENAI_MODEL\` environment variable for the model name instead of hardcoding it:
64
-
65
- \`\`\`typescript
66
- // ✓ Correct - Use environment variable
67
- const model = process.env.OPENAI_MODEL || "gpt-5-mini";
68
- model: openai(model)
69
-
70
- // ✗ Incorrect - Don't hardcode model names
71
- model: openai("gpt-5-mini")
72
- \`\`\`
73
-
74
- This allows for easy model switching without code changes and ensures consistency across the application.
75
-
76
- ## Component Development Guidelines
77
- **Always prioritize shadcn/ui components** when building the application:
78
-
79
- 1. **First Choice**: Use existing shadcn/ui components from the project
80
- 2. **Second Choice**: Install additional shadcn/ui components using \`pnpm dlx shadcn@latest add <component-name>\`
81
- 3. **Last Resort**: Only create custom components or use other libraries if shadcn/ui doesn't provide a suitable option
82
-
83
- The project already includes several shadcn/ui components (button, dialog, avatar, etc.) and follows their design system. Always check the [shadcn/ui documentation](https://ui.shadcn.com/docs/components) for available components before implementing alternatives.
84
-
85
- ## What I Want to Build
86
- [PROJECT_DESCRIPTION]
87
-
88
- ## Request
89
- Please help me transform this boilerplate into my actual application. **You MUST completely replace all existing boilerplate code** to match my project requirements. The current implementation is just temporary scaffolding that should be entirely removed and replaced.
90
-
91
- ## Final Reminder: COMPLETE REPLACEMENT REQUIRED
92
- **⚠️ IMPORTANT**: Do not preserve any of the existing boilerplate UI, components, or content. The user expects a completely fresh application that implements their requirements from scratch. Any remnants of the original boilerplate (like setup checklists, welcome screens, demo content, or placeholder navigation) indicate incomplete implementation.
93
-
94
- **Success Criteria**: The final application should look and function as if it was built from scratch for the specific use case, with no evidence of the original boilerplate template.
95
-
96
- ## Post-Implementation Documentation
97
- After completing the implementation, you MUST document any new features or significant changes in the \`/docs/features/\` directory:
98
-
99
- 1. **Create Feature Documentation**: For each major feature implemented, create a markdown file in \`/docs/features/\` that explains:
100
- - What the feature does
101
- - How it works
102
- - Key components and files involved
103
- - Usage examples
104
- - Any configuration or setup required
105
-
106
- 2. **Update Existing Documentation**: If you modify existing functionality, update the relevant documentation files to reflect the changes.
107
-
108
- 3. **Document Design Decisions**: Include any important architectural or design decisions made during implementation.
109
-
110
- This documentation helps maintain the project and assists future developers working with the codebase.
111
-
112
- Think hard about the solution and implementing the user's requirements.`;
113
-
114
- export function StarterPromptModal() {
115
- const [isOpen, setIsOpen] = useState(false);
116
- const [projectDescription, setProjectDescription] = useState("");
117
- const [copied, setCopied] = useState(false);
118
-
119
- const handleCopy = async () => {
120
- const finalPrompt = projectDescription.trim()
121
- ? STARTER_PROMPT.replace(
122
- "[PROJECT_DESCRIPTION]",
123
- projectDescription.trim()
124
- )
125
- : STARTER_PROMPT.replace("\n[PROJECT_DESCRIPTION]\n", "");
126
-
127
- try {
128
- await navigator.clipboard.writeText(finalPrompt);
129
- setCopied(true);
130
- setTimeout(() => setCopied(false), 2000);
131
- } catch (err) {
132
- console.error("Failed to copy text: ", err);
133
- }
134
- };
135
-
136
- return (
137
- <Dialog open={isOpen} onOpenChange={setIsOpen}>
138
- <DialogTrigger asChild>
139
- <Button size="sm" className="w-full">
140
- <Copy className="w-4 h-4 mr-2" />
141
- Get AI Starter Prompt
142
- </Button>
143
- </DialogTrigger>
144
- <DialogContent className="max-w-2xl">
145
- <DialogHeader>
146
- <DialogTitle>Generate AI Starter Prompt</DialogTitle>
147
- <DialogDescription>
148
- Create a comprehensive prompt to help AI agents create your project
149
- for you.
150
- </DialogDescription>
151
- </DialogHeader>
152
-
153
- <div className="space-y-4">
154
- <div>
155
- <label
156
- htmlFor="project-description"
157
- className="text-sm font-medium mb-2 block"
158
- >
159
- Describe your project (optional)
160
- </label>
161
- <textarea
162
- id="project-description"
163
- placeholder="e.g., A task management app for teams with real-time collaboration, project timelines, and AI-powered task prioritization..."
164
- value={projectDescription}
165
- onChange={(e) => setProjectDescription(e.target.value)}
166
- className="w-full h-24 px-3 py-2 border rounded-md resize-none text-sm"
167
- />
168
- <p className="text-xs text-muted-foreground mt-1">
169
- Optional: Add details about your project to get a more tailored
170
- prompt
171
- </p>
172
- </div>
173
-
174
- <div className="flex gap-2">
175
- <Button onClick={handleCopy} className="flex-1">
176
- {copied ? (
177
- <>
178
- <Check className="w-4 h-4 mr-2" />
179
- Copied!
180
- </>
181
- ) : (
182
- <>
183
- <Copy className="w-4 h-4 mr-2" />
184
- Copy Starter Prompt
185
- </>
186
- )}
187
- </Button>
188
- <Button variant="outline" onClick={() => setIsOpen(false)}>
189
- Cancel
190
- </Button>
191
- </div>
192
-
193
- <div className="text-xs text-muted-foreground border-t pt-3">
194
- <strong>How to use:</strong> Copy this prompt and paste it into
195
- Claude Code, Cursor, or any AI coding assistant to get started with
196
- your project.
197
- </div>
198
- </div>
199
- </DialogContent>
200
- </Dialog>
201
- );
202
- }
1
+ "use client";
2
+
3
+ import { useState } from "react";
4
+ import { Copy, Check } from "lucide-react";
5
+ import { Button } from "@/components/ui/button";
6
+ import {
7
+ Dialog,
8
+ DialogContent,
9
+ DialogDescription,
10
+ DialogHeader,
11
+ DialogTitle,
12
+ DialogTrigger,
13
+ } from "@/components/ui/dialog";
14
+
15
+ const STARTER_PROMPT = `I'm working with an agentic coding boilerplate project that includes authentication, database integration, and AI capabilities. Here's what's already set up:
16
+
17
+ ## Current Agentic Coding Boilerplate Structure
18
+ - **Authentication**: Better Auth with Google OAuth integration
19
+ - **Database**: Drizzle ORM with PostgreSQL setup
20
+ - **AI Integration**: Vercel AI SDK with OpenAI integration
21
+ - **UI**: shadcn/ui components with Tailwind CSS
22
+ - **Current Routes**:
23
+ - \`/\` - Home page with setup instructions and feature overview
24
+ - \`/dashboard\` - Protected dashboard page (requires authentication)
25
+ - \`/chat\` - AI chat interface (requires OpenAI API key)
26
+
27
+ ## Important Context
28
+ This is an **agentic coding boilerplate/starter template** - all existing pages and components are meant to be examples and should be **completely replaced** to build the actual AI-powered application.
29
+
30
+ ### CRITICAL: You MUST Override All Boilerplate Content
31
+ **DO NOT keep any boilerplate components, text, or UI elements unless explicitly requested.** This includes:
32
+
33
+ - **Remove all placeholder/demo content** (setup checklists, welcome messages, boilerplate text)
34
+ - **Replace the entire navigation structure** - don't keep the existing site header or nav items
35
+ - **Override all page content completely** - don't append to existing pages, replace them entirely
36
+ - **Remove or replace all example components** (setup-checklist, starter-prompt-modal, etc.)
37
+ - **Replace placeholder routes and pages** with the actual application functionality
38
+
39
+ ### Required Actions:
40
+ 1. **Start Fresh**: Treat existing components as temporary scaffolding to be removed
41
+ 2. **Complete Replacement**: Build the new application from scratch using the existing tech stack
42
+ 3. **No Hybrid Approach**: Don't try to integrate new features alongside existing boilerplate content
43
+ 4. **Clean Slate**: The final application should have NO trace of the original boilerplate UI or content
44
+
45
+ The only things to preserve are:
46
+ - **All installed libraries and dependencies** (DO NOT uninstall or remove any packages from package.json)
47
+ - **Authentication system** (but customize the UI/flow as needed)
48
+ - **Database setup and schema** (but modify schema as needed for your use case)
49
+ - **Core configuration files** (next.config.ts, tsconfig.json, tailwind.config.ts, etc.)
50
+ - **Build and development scripts** (keep all npm/pnpm scripts in package.json)
51
+
52
+ ## Tech Stack
53
+ - Next.js 16 with App Router
54
+ - TypeScript
55
+ - Tailwind CSS
56
+ - Better Auth for authentication
57
+ - Drizzle ORM + PostgreSQL
58
+ - Vercel AI SDK
59
+ - shadcn/ui components
60
+ - Lucide React icons
61
+
62
+ ## AI Model Configuration
63
+ **IMPORTANT**: When implementing any AI functionality, always use the \`OPENAI_MODEL\` environment variable for the model name instead of hardcoding it:
64
+
65
+ \`\`\`typescript
66
+ // ✓ Correct - Use environment variable
67
+ const model = process.env.OPENAI_MODEL || "gpt-5-mini";
68
+ model: openai(model)
69
+
70
+ // ✗ Incorrect - Don't hardcode model names
71
+ model: openai("gpt-5-mini")
72
+ \`\`\`
73
+
74
+ This allows for easy model switching without code changes and ensures consistency across the application.
75
+
76
+ ## Component Development Guidelines
77
+ **Always prioritize shadcn/ui components** when building the application:
78
+
79
+ 1. **First Choice**: Use existing shadcn/ui components from the project
80
+ 2. **Second Choice**: Install additional shadcn/ui components using \`pnpm dlx shadcn@latest add <component-name>\`
81
+ 3. **Last Resort**: Only create custom components or use other libraries if shadcn/ui doesn't provide a suitable option
82
+
83
+ The project already includes several shadcn/ui components (button, dialog, avatar, etc.) and follows their design system. Always check the [shadcn/ui documentation](https://ui.shadcn.com/docs/components) for available components before implementing alternatives.
84
+
85
+ ## What I Want to Build
86
+ [PROJECT_DESCRIPTION]
87
+
88
+ ## Request
89
+ Please help me transform this boilerplate into my actual application. **You MUST completely replace all existing boilerplate code** to match my project requirements. The current implementation is just temporary scaffolding that should be entirely removed and replaced.
90
+
91
+ ## Final Reminder: COMPLETE REPLACEMENT REQUIRED
92
+ **⚠️ IMPORTANT**: Do not preserve any of the existing boilerplate UI, components, or content. The user expects a completely fresh application that implements their requirements from scratch. Any remnants of the original boilerplate (like setup checklists, welcome screens, demo content, or placeholder navigation) indicate incomplete implementation.
93
+
94
+ **Success Criteria**: The final application should look and function as if it was built from scratch for the specific use case, with no evidence of the original boilerplate template.
95
+
96
+ ## Post-Implementation Documentation
97
+ After completing the implementation, you MUST document any new features or significant changes in the \`/docs/features/\` directory:
98
+
99
+ 1. **Create Feature Documentation**: For each major feature implemented, create a markdown file in \`/docs/features/\` that explains:
100
+ - What the feature does
101
+ - How it works
102
+ - Key components and files involved
103
+ - Usage examples
104
+ - Any configuration or setup required
105
+
106
+ 2. **Update Existing Documentation**: If you modify existing functionality, update the relevant documentation files to reflect the changes.
107
+
108
+ 3. **Document Design Decisions**: Include any important architectural or design decisions made during implementation.
109
+
110
+ This documentation helps maintain the project and assists future developers working with the codebase.
111
+
112
+ Think hard about the solution and implementing the user's requirements.`;
113
+
114
+ export function StarterPromptModal() {
115
+ const [isOpen, setIsOpen] = useState(false);
116
+ const [projectDescription, setProjectDescription] = useState("");
117
+ const [copied, setCopied] = useState(false);
118
+
119
+ const handleCopy = async () => {
120
+ const finalPrompt = projectDescription.trim()
121
+ ? STARTER_PROMPT.replace(
122
+ "[PROJECT_DESCRIPTION]",
123
+ projectDescription.trim()
124
+ )
125
+ : STARTER_PROMPT.replace("\n[PROJECT_DESCRIPTION]\n", "");
126
+
127
+ try {
128
+ await navigator.clipboard.writeText(finalPrompt);
129
+ setCopied(true);
130
+ setTimeout(() => setCopied(false), 2000);
131
+ } catch (err) {
132
+ console.error("Failed to copy text: ", err);
133
+ }
134
+ };
135
+
136
+ return (
137
+ <Dialog open={isOpen} onOpenChange={setIsOpen}>
138
+ <DialogTrigger asChild>
139
+ <Button size="sm" className="w-full">
140
+ <Copy className="w-4 h-4 mr-2" />
141
+ Get AI Starter Prompt
142
+ </Button>
143
+ </DialogTrigger>
144
+ <DialogContent className="max-w-2xl">
145
+ <DialogHeader>
146
+ <DialogTitle>Generate AI Starter Prompt</DialogTitle>
147
+ <DialogDescription>
148
+ Create a comprehensive prompt to help AI agents create your project
149
+ for you.
150
+ </DialogDescription>
151
+ </DialogHeader>
152
+
153
+ <div className="space-y-4">
154
+ <div>
155
+ <label
156
+ htmlFor="project-description"
157
+ className="text-sm font-medium mb-2 block"
158
+ >
159
+ Describe your project (optional)
160
+ </label>
161
+ <textarea
162
+ id="project-description"
163
+ placeholder="e.g., A task management app for teams with real-time collaboration, project timelines, and AI-powered task prioritization..."
164
+ value={projectDescription}
165
+ onChange={(e) => setProjectDescription(e.target.value)}
166
+ className="w-full h-24 px-3 py-2 border rounded-md resize-none text-sm"
167
+ />
168
+ <p className="text-xs text-muted-foreground mt-1">
169
+ Optional: Add details about your project to get a more tailored
170
+ prompt
171
+ </p>
172
+ </div>
173
+
174
+ <div className="flex gap-2">
175
+ <Button onClick={handleCopy} className="flex-1">
176
+ {copied ? (
177
+ <>
178
+ <Check className="w-4 h-4 mr-2" />
179
+ Copied!
180
+ </>
181
+ ) : (
182
+ <>
183
+ <Copy className="w-4 h-4 mr-2" />
184
+ Copy Starter Prompt
185
+ </>
186
+ )}
187
+ </Button>
188
+ <Button variant="outline" onClick={() => setIsOpen(false)}>
189
+ Cancel
190
+ </Button>
191
+ </div>
192
+
193
+ <div className="text-xs text-muted-foreground border-t pt-3">
194
+ <strong>How to use:</strong> Copy this prompt and paste it into
195
+ Claude Code, Cursor, or any AI coding assistant to get started with
196
+ your project.
197
+ </div>
198
+ </div>
199
+ </DialogContent>
200
+ </Dialog>
201
+ );
202
+ }