docs(05): capture phase context
Phase 05: CLI Scaffolding - Implementation decisions documented - Phase boundary established
This commit is contained in:
81
.planning/phases/05-cli-scaffolding/05-CONTEXT.md
Normal file
81
.planning/phases/05-cli-scaffolding/05-CONTEXT.md
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
# Phase 5: CLI Scaffolding - Context
|
||||||
|
|
||||||
|
**Gathered:** 2026-02-04
|
||||||
|
**Status:** Ready for planning
|
||||||
|
|
||||||
|
<domain>
|
||||||
|
## Phase Boundary
|
||||||
|
|
||||||
|
Provide developer tools for rapid project setup: commands to scaffold plugins, themes, components, controllers, models, and migrations. Generated scaffolds follow project conventions and are immediately usable.
|
||||||
|
|
||||||
|
</domain>
|
||||||
|
|
||||||
|
<decisions>
|
||||||
|
## Implementation Decisions
|
||||||
|
|
||||||
|
### Command Design
|
||||||
|
- **Structure:** Noun-verb pattern: `summer plugin create`, `summer theme create`, etc.
|
||||||
|
- **Executable name:** `summer`
|
||||||
|
- **Naming format:** Author.Name dot notation for plugins, themes, components
|
||||||
|
- `summer plugin create Acme.Blog`
|
||||||
|
- `summer theme create Acme.Corporate`
|
||||||
|
- `summer component create Acme.Blog MyComponent` (explicit plugin required)
|
||||||
|
- **No shorthand aliases** — keep commands explicit
|
||||||
|
- **--dry-run option** — show what would be created without creating
|
||||||
|
- **No --force option** — error if target exists, user deletes manually
|
||||||
|
- **Version output:** Include Scala/JVM info: `SummerCMS 1.0.0 (Scala 3.x, JVM 21)`
|
||||||
|
- **Color output:** Colors by default, `--no-color` to disable
|
||||||
|
|
||||||
|
### Output & Feedback
|
||||||
|
- **During scaffolding:** Progress bar for larger scaffolds
|
||||||
|
- **After completion:** Actionable next steps (what to edit, what to run)
|
||||||
|
- **Error style:** Concise with suggestion (error message + tip to fix)
|
||||||
|
- **Verbosity:** `-v` for verbose, `-q` for quiet
|
||||||
|
|
||||||
|
### Generated Structure
|
||||||
|
- **Plugin scaffold:** Standard structure — Plugin.scala, manifest, empty directories for models/, controllers/, components/
|
||||||
|
- **Theme scaffold:** Choice via `--template` flag (`--template=blank` or `--template=starter`)
|
||||||
|
- **Component scaffold:** Component class + default partial + component.yaml
|
||||||
|
- **Controller scaffold:** Full backend resource like WinterCMS — controller class, fields.yaml, columns.yaml, view partials
|
||||||
|
- **Model scaffold:** Model class + migration together (like WinterCMS)
|
||||||
|
- **Migration scaffold:** Standalone `summer migration create` command available
|
||||||
|
- **Migration naming:** Timestamp prefix: `20260204_120000_create_posts_table.scala`
|
||||||
|
- **File naming:** PascalCase for Scala classes
|
||||||
|
- **Directory structure:**
|
||||||
|
- Plugins: `plugins/author/pluginname/` (lowercase)
|
||||||
|
- Themes: `themes/author/themename/` (lowercase)
|
||||||
|
- **Inline guidance:** TODO comments showing where to add code
|
||||||
|
|
||||||
|
### Interactive Mode
|
||||||
|
- **Missing args:** Prompt interactively when required arguments missing
|
||||||
|
- **Wizard mode:** `--wizard` flag for guided scaffold creation
|
||||||
|
- **No confirmation:** Create immediately (use `--dry-run` for preview)
|
||||||
|
- **CI environments:** `--no-interaction` flag to disable prompts (error on missing args)
|
||||||
|
|
||||||
|
### Claude's Discretion
|
||||||
|
- Config file detection approach (follow WinterCMS patterns)
|
||||||
|
- Help output format and level of detail
|
||||||
|
- Input validation behavior during prompts
|
||||||
|
- Exact progress bar implementation
|
||||||
|
|
||||||
|
</decisions>
|
||||||
|
|
||||||
|
<specifics>
|
||||||
|
## Specific Ideas
|
||||||
|
|
||||||
|
- "Full backend resource just like WinterCMS" — controller scaffold includes everything needed for admin CRUD
|
||||||
|
- "Model + migration just like WinterCMS" — model scaffolding creates both together
|
||||||
|
|
||||||
|
</specifics>
|
||||||
|
|
||||||
|
<deferred>
|
||||||
|
## Deferred Ideas
|
||||||
|
|
||||||
|
None — discussion stayed within phase scope
|
||||||
|
|
||||||
|
</deferred>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*Phase: 05-cli-scaffolding*
|
||||||
|
*Context gathered: 2026-02-04*
|
||||||
Reference in New Issue
Block a user