| name | stacks-scaffolding |
| description | Use when generating new code with Stacks — buddy make commands, project scaffolding, component/page/store/layout generation, or project templates. Covers buddy make:* commands and STX scaffolding utilities. |
| license | MIT |
| compatibility | Bun >= 1.3.0, TypeScript |
| allowed-tools | Read Edit Write Bash Grep Glob |
Stacks Scaffolding
Key Paths
- Buddy commands:
storage/framework/core/buddy/src/commands/make.ts
- Default templates:
storage/framework/defaults/
- STX scaffolding:
@stacksjs/stx (scaffolding module)
CLI Make Commands
buddy make:component <name>
buddy make:function <name>
buddy make:migration <name>
buddy make:notification <name>
buddy make:factory <name>
buddy make:lang <name>
buddy make:stack <name>
STX Scaffolding API
import { createProject, addComponent, addPage, addStore, addLayout } from '@stacksjs/stx'
Create Project
async function createProject(name: string, options?: CreateProjectOptions): Promise<ScaffoldResult>
interface CreateProjectOptions {
template?: 'default' | 'minimal' | 'full' | 'blog' | 'dashboard' | 'landing'
skipGit?: boolean
skipInstall?: boolean
packageManager?: 'bun' | 'npm' | 'pnpm' | 'yarn'
typescript?: boolean
examples?: boolean
pwa?: boolean
tailwind?: boolean
}
Add Component
async function addComponent(name: string, options?: AddComponentOptions): Promise<ScaffoldResult>
interface AddComponentOptions {
dir?: string
props?: boolean
styles?: boolean
script?: boolean
force?: boolean
}
Add Page
async function addPage(name: string, options?: AddPageOptions): Promise<ScaffoldResult>
interface AddPageOptions {
dir?: string
layout?: string
dynamic?: boolean
loader?: boolean
force?: boolean
}
Add Store
async function addStore(name: string, options?: AddStoreOptions): Promise<ScaffoldResult>
interface AddStoreOptions {
dir?: string
persist?: boolean
actions?: boolean
force?: boolean
}
Add Layout
async function addLayout(name: string, options?: AddLayoutOptions): Promise<ScaffoldResult>
interface AddLayoutOptions {
dir?: string
nav?: boolean
footer?: boolean
force?: boolean
}
Scaffold Result
interface ScaffoldResult {
success: boolean
message: string
files: string[]
errors: string[]
}
Project Templates
| Template | Description |
|---|
default | Standard project with common features |
minimal | Bare minimum setup |
full | All features enabled |
blog | Blog-focused with CMS |
dashboard | Admin dashboard |
landing | Marketing landing page |
Generated File Locations
| Type | Location |
|---|
| Components | resources/components/ |
| Functions | resources/functions/ |
| Migrations | database/migrations/ |
| Notifications | app/Notifications/ |
| Language files | locales/ |
| Layouts | resources/layouts/ |
| Pages | resources/views/ |
| Stores | resources/stores/ |
Default Templates
Templates for generated code are in storage/framework/defaults/:
defaults/components/ — component templates
defaults/models/ — model templates
defaults/app/Middleware/ — middleware templates
defaults/layouts/ — layout templates
defaults/views/ — view templates
Gotchas
- Always use make commands — ensures consistent file structure and naming
- Templates are customizable — modify files in
storage/framework/defaults/ to change scaffolding output
- Run pickier after generating —
bunx --bun pickier . --fix to format generated code
force flag overwrites — without it, existing files are not overwritten
- STX scaffolding vs buddy make —
addComponent() is the programmatic API, buddy make:component is the CLI equivalent