4.8 KiB
4.8 KiB
description
| description |
|---|
| Update an existing feature design with schema and API changes |
Update Feature
You will guide the user through updating an existing feature design, regenerating ERD, DBML, PostgreSQL migration, and API contract with changes.
Workflow
This command uses an incremental 5-phase workflow to update feature documentation.
Interactive Discovery
Ask the user these questions first:
- Feature name to update (snake_case, e.g.,
product_catalog) - What needs to be updated?
- Add new entities
- Modify existing entities (add/remove/change columns)
- Add/remove relationships
- Update API endpoints
- Change validation rules
- For entity changes, ask:
- Which entity to modify?
- What columns to add/remove/modify?
- New relationships?
- Index changes?
- For API changes, ask:
- New endpoints needed?
- Modified request/response schemas?
- New filters or parameters?
- Permission changes?
Present a complete change plan and ask for confirmation before proceeding.
Implementation Phases
After confirmation, execute these phases sequentially (read each phase file when needed):
- Load Existing Design -
phases/update-feature/01-load-existing.md - Update ERD -
phases/update-feature/02-update-erd.md - Update DBML -
phases/update-feature/03-update-dbml.md - Generate Migration -
phases/update-feature/04-generate-migration.md - Update API Contract -
phases/update-feature/05-update-api-contract.md
After each phase:
- Stop and report what was updated
- Ask user to review
- Wait for "continue" before next phase
Key Implementation Rules
Database Standards:
- Read
DATABASE_STANDARDS.mdbefore starting - Maintain all audit standards
- UUID primary keys (VARCHAR 40)
- 6 audit trail columns required
- NO foreign key constraints
- Proper indexing
Migration Strategy:
- Create new migration file (don't modify existing)
- Use ALTER TABLE for schema changes
- Add new indexes as needed
- Include rollback instructions in comments
File Naming:
- ERD:
docs/database/erd/{feature_name}.mmd(overwrite) - DBML:
docs/database/dbml/{feature_name}.dbml(overwrite) - Migration:
docs/database/migrations/{timestamp}_update_{feature_name}.sql(new file) - API:
docs/api/contracts/{feature_name}.md(overwrite)
Example Usage
User: /venturo-planner:update-feature
Claude: I'll help you update an existing feature design.
1. Which feature do you want to update?
User: product_catalog
Claude: 2. What changes do you need to make?
- Add new entities
- Modify existing entities
- Update API endpoints
- Other
User: Add a new entity "product_reviews" and add a "rating" column to products
Claude: Let me confirm the changes:
**New Entity:**
- product_reviews (id, product_id, user_id, rating, comment, ...)
**Modified Entity:**
- products: add "average_rating" column (DECIMAL 3,2)
**New Relationships:**
- products ||--o{ product_reviews
- users ||--o{ product_reviews
Proceed with these changes?
[Continues through all phases]
Output Files
docs/database/erd/{feature_name}.mmd- Updated ERDdocs/database/dbml/{feature_name}.dbml- Updated DBMLdocs/database/migrations/{timestamp}_update_{feature_name}.sql- New migrationdocs/api/contracts/{feature_name}.md- Updated API contract
Important Notes
Migration Strategy
DO NOT modify existing migration files! Always create a new migration:
-- Migration: 20250123170000_update_product_catalog.sql
-- Description: Add product_reviews table and average_rating to products
-- Add new table
CREATE TABLE IF NOT EXISTS product_reviews (...);
-- Modify existing table
ALTER TABLE products ADD COLUMN average_rating DECIMAL(3,2);
-- Add new indexes
CREATE INDEX idx_product_reviews_product_id ON product_reviews(product_id);
-- Rollback instructions (commented)
-- DROP TABLE product_reviews;
-- ALTER TABLE products DROP COLUMN average_rating;
Backward Compatibility
Consider backward compatibility:
- Adding columns: Use NULL or DEFAULT values
- Removing columns: Mark as deprecated first
- Changing types: May require data migration
- API changes: Version endpoints if breaking changes
Team Communication
After updating:
- Notify backend team of schema changes
- Notify frontend team of API changes
- Update both teams if breaking changes
- Frontend may need to re-verify against new OpenAPI
Integration
After completion:
- Backend team: Create new migration with
/venturo-go:new-migration - Frontend team: Review API contract changes
- Both teams: Test integration with updated schemas
- Frontend: Re-verify against updated OpenAPI when backend completes