Files
2025-11-30 09:04:43 +08:00

100 lines
3.2 KiB
Markdown

---
description: Design a single feature with database schema and API endpoints
---
# New Feature Creation
You will guide the user through creating a complete feature design with ERD, DBML, PostgreSQL migration, and API contract.
## Workflow
This command uses an **incremental 4-phase workflow** to create feature documentation step-by-step.
### Interactive Discovery
Ask the user these questions first:
1. **Feature name** (snake_case, e.g., `product_catalog`, `order_management`)
2. **Entities in this feature** (e.g., products, categories, reviews)
3. **For each entity, ask:**
- Attributes with data types
- Required vs optional fields
- Unique constraints
- Relationships to other entities
4. **API endpoints needed** (CRUD, custom actions like approve, cancel, etc.)
5. **Filter/search requirements** (search by name, filter by status, etc.)
6. **Pagination needed?** (yes/no, default page size)
7. **Permissions required** (who can create, read, update, delete)
Present a complete plan and ask for confirmation before proceeding.
### Implementation Phases
After confirmation, execute these phases sequentially (read each phase file when needed):
1. **ERD Generation** - `phases/new-feature/01-feature-erd.md`
2. **DBML Generation** - `phases/new-feature/02-feature-dbml.md`
3. **PostgreSQL Migration** - `phases/new-feature/03-feature-migrations.md`
4. **API Contract** - `phases/new-feature/04-feature-api-contract.md`
After each phase:
- Stop and report what was created
- Ask user to review
- Wait for "continue" before next phase
## Key Implementation Rules
**Database Standards:**
- Read `DATABASE_STANDARDS.md` before starting
- Validate table names (plural, snake_case, no prefixes)
- Validate column names (snake_case, proper foreign key format)
- Ensure all audit trail columns present
- UUID primary keys (VARCHAR 40)
- NO foreign key constraints (only indexes)
**File Naming:**
- ERD: `docs/database/erd/{feature_name}.mmd`
- DBML: `docs/database/dbml/{feature_name}.dbml`
- Migration: `docs/database/migrations/{timestamp}_{feature_name}.sql`
- API: `docs/api/contracts/{feature_name}.md`
## Example Usage
```
User: /venturo-planner:new-feature
Claude: I'll help you design a new feature with database schema and API endpoints.
Let me ask some questions first:
1. What is the name of the feature? (use snake_case)
User: product_catalog
Claude: 2. What entities will this feature contain?
User: products, categories, product_images
Claude: 3. Let's define the 'products' entity.
What attributes should it have?
User: name (required), description (optional), price (required), stock (required), category_id (required), is_active (required)
[Continues through all questions, presents plan, executes phases]
```
## Output Files
- `docs/database/erd/{feature_name}.mmd` - Mermaid ERD
- `docs/database/dbml/{feature_name}.dbml` - DBML schema
- `docs/database/migrations/{timestamp}_{feature_name}.sql` - PostgreSQL migration
- `docs/api/contracts/{feature_name}.md` - API contract
## Integration
After completion:
1. Use DBML and API contract as reference
2. Run `/venturo-go:new-feature` to generate backend
3. Backend generates OpenAPI YAML
4. Run `/venturo-react:new-feature` with OpenAPI to generate frontend