Agent skill
add-feature
Scaffold complete feature with types, repository, API routes, components, store actions, and tests. Use when adding major new functionality like water tracking, sleep tracking, etc.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/add-feature
SKILL.md
Add Feature
Scaffold a complete feature including types, database layer, API routes, UI components, state management, and tests.
Usage
When user requests to add a new major feature, ask for:
- Feature name (e.g., "Water Tracking", "Sleep Logging", "Weight Management")
- Feature description (what data it tracks, why it matters)
- Data fields needed (with types and validation rules)
- Dashboard components needed (card, chart, statistics)
- Forms needed (input forms, edit forms)
- Daily summary impact (whether it affects health score, true/false)
Implementation Process
This skill orchestrates the following steps:
Step 1: Create TypeScript Types
Create file: src/lib/types/{featureName}.ts
export interface FeatureEntity {
id: string;
date: string;
field1: string;
field2: number;
createdAt: string;
}
// Validation schema types (for API)
export type FeatureInput = Omit<FeatureEntity, 'id' | 'createdAt'>;
Step 2: Create Repository
Use /generate-repository skill to create:
src/lib/database/repositories/featureRepository.ts- CRUD methods
- Date-based queries
Step 3: Create API Routes
Use /generate-api-route skill to create:
src/app/api/feature/route.ts- POST handler (create)
- DELETE handler (delete)
- Daily summary recalculation (if applicable)
Step 4: Create Store Actions
Use /generate-store-action skill to add to src/lib/store/healthStore.ts:
- State property for feature data
- fetchFeature() action
- addFeature() action
- deleteFeature() action
Step 5: Create Dashboard Card
Use /generate-card skill to create:
src/components/dashboard/{FeatureName}Card.tsx- Display key metrics
- Show trends or statistics
- Optional: Recharts integration
Step 6: Create Input Form
Use /generate-form skill to create:
src/components/forms/{FeatureName}Form.tsx- Form fields for data entry
- Validation logic
- Store action integration
Step 7: Create Tests
Use /generate-test skill to create:
src/__tests__/lib/database/repositories/{FeatureName}.test.tssrc/__tests__/components/forms/{FeatureName}Form.test.tsxsrc/__tests__/app/api/feature/route.test.ts
Step 8: Update Dashboard Layout
Edit: src/app/page.tsx or src/components/layout/MainLayout.tsx
- Import new card component
- Add to dashboard grid
- Position appropriately
Step 9: Update Navigation (if needed)
If feature has dedicated page:
- Create
src/app/feature/page.tsx - Create full page component
- Update navigation in Sidebar
Step 10: Database Schema Update
Add to: src/lib/database/schema.sql
- Create new table
- Define columns with types
- Add indexes for common queries
Full Feature Example: Water Tracking
1. Types (src/lib/types/water.ts)
export interface WaterLog {
id: string;
date: string;
amount: number; // in ml
time: string; // HH:MM format
source: 'water' | 'beverage' | 'food';
createdAt: string;
}
export type WaterInput = Omit<WaterLog, 'id' | 'createdAt'>;
2. Repository → /generate-repository
- Entity: WaterLog
- Table: water_logs
- Methods: addWaterLog, getWaterLogsByDate, deleteWaterLog
3. API Routes → /generate-api-route
- POST /api/water → create water log
- DELETE /api/water?id=X → delete water log
- Daily summary recalculation: YES
4. Store Actions → /generate-store-action
interface HealthState {
waterLogs: WaterLog[];
fetchDailyWaterLogs: (date: string) => Promise<void>;
addWaterLog: (log: WaterInput) => Promise<void>;
deleteWaterLog: (id: string) => Promise<void>;
}
5. Dashboard Card → /generate-card
- Card name: WaterIntakeCard
- Displays: Total ml today, Target vs actual, Timeline of entries
- Icon: Droplets
- Optional chart: Hourly water intake
6. Input Form → /generate-form
- Form name: WaterLogForm
- Fields: Amount (number), Time (time picker), Source (select)
- List: Shows today's water entries with ability to remove
7. Tests → /generate-test
- Repository tests: CRUD operations
- Form tests: Validation, submission
- API tests: POST, DELETE handlers
8. Update Dashboard
Add WaterIntakeCard to dashboard grid
Key Considerations
Database Schema
CREATE TABLE IF NOT EXISTS water_logs (
id TEXT PRIMARY KEY,
date TEXT NOT NULL,
amount INTEGER NOT NULL,
time TEXT NOT NULL,
source TEXT NOT NULL,
created_at TEXT NOT NULL,
UNIQUE(date, time, source)
);
CREATE INDEX idx_water_logs_date ON water_logs(date);
Health Score Integration
If feature impacts health score:
- Update
calculateHealthScore()insrc/lib/utils/healthScoring.ts - Update daily summary calculation in
DailySummaryRepository - Document scoring formula
Migrations
Document any schema changes needed:
- Create migration file or script
- Add instructions to DEVELOPMENT.md
Checklist
Complete feature should have:
- TypeScript types defined
- Database repository with CRUD
- API routes (POST, DELETE, GET)
- Zustand store actions
- Dashboard card component
- Input/edit forms
- Comprehensive tests
- Dashboard integration
- Database schema
- Optional: dedicated page
- Documentation updated (if major feature)
Coordination with Other Skills
This skill uses:
/generate-repository- for data access/generate-api-route- for API endpoints/generate-store-action- for state management/generate-card- for dashboard widgets/generate-form- for data entry/generate-test- for test coverage
Each sub-skill handles a specific layer of the feature.
Best Practices
- Start with types - Define data structure first
- Database first - Create repository before using in API
- API routes next - Implement endpoints before UI
- Store actions - Wire up state management before components
- UI components - Build forms and cards
- Tests throughout - Write tests for each layer
- Integration - Add to dashboard and navigation
- Documentation - Update relevant docs
Output Structure
After using this skill, project structure should look like:
src/
├── lib/
│ ├── types/
│ │ └── waterTracking.ts
│ └── database/repositories/
│ └── waterTrackingRepository.ts
├── app/
│ └── api/
│ └── water/
│ └── route.ts
├── components/
│ ├── dashboard/
│ │ └── WaterIntakeCard.tsx
│ └── forms/
│ └── WaterLogForm.tsx
└── __tests__/
├── lib/
│ └── database/repositories/
│ └── WaterTracking.test.ts
├── components/
│ └── forms/
│ └── WaterLogForm.test.tsx
└── app/
└── api/water/
└── route.test.ts
Implementation Checklist
- Request feature details from user
- Create TypeScript types
- Generate repository
- Generate API routes
- Generate store actions
- Generate dashboard card
- Generate form component
- Generate tests
- Update dashboard integration
- Update navigation (if page)
- Verify TypeScript compilation
- Run tests
- Commit changes with proper messages
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?