MetaDebate / docs /workflows /feature.md
vajeeda's picture
base structure of the project formed
b6e19c7
|
Raw
History Blame Contribute Delete
3.65 kB
# Workflow β€” Building a New Feature
## Purpose
Read this file every time you start building a new feature.
Follow steps in order. Do not skip any step.
---
## Step 1 β€” Understand Before Coding
- [ ] Read the current phase prompt from `prompts/phase-X.md`
- [ ] Read `docs/progress.md` to confirm what is already done
- [ ] Read `docs/architecture.md` to understand existing structure
- [ ] Identify the exact files you will create or modify
- [ ] List all edge cases before writing any code
---
## Step 2 β€” Plan the Feature
State this out loud before coding:
Feature: [name]
Files to create: [list]
Files to modify: [list]
DB changes needed: yes/no
Edge cases: [list]
Tests needed: [list]
---
## Step 3 β€” DB Changes First (if needed)
- [ ] Write migration file before any application code
- [ ] Enable RLS on every new table
- [ ] Write RLS policies in the migration file
- [ ] Run `supabase db push` to apply
- [ ] Confirm in dashboard or via `supabase migration list`
- [ ] Reference `docs/deployment.md` for exact commands
---
## Step 4 β€” Write the Code
- [ ] Create or modify only the files identified in Step 2
- [ ] Add error handling to every function β€” follow `docs/debugging.md`
- [ ] No function should silently fail
- [ ] Handle all edge cases identified in Step 1
- [ ] No hardcoded values β€” use env vars or constants file
- [ ] No unused imports or dead code
---
## Step 5 β€” Write Tests Immediately
- [ ] Create test file at `tests/unit/` or `tests/integration/`
- [ ] Follow naming convention from `docs/testing.md`
- [ ] Cover all edge cases from Step 1
- [ ] Cover happy path + at least 2 failure paths per function
- [ ] Reference `.claude/skills/testing.md` for reusable patterns
---
## Step 6 β€” Run Tests
```bash
# Run only this feature's tests first
npm test -- tests/unit/[feature-name].test.ts 2>&1 | tee logs/test.log
# If passing, run full suite
bash scripts/test.sh
```
- [ ] All tests pass before moving forward
- [ ] If a test fails β€” read `logs/test.log`, fix the specific function only
---
## Step 7 β€” Self Review Checklist
Before declaring feature done:
- [ ] Error handling in place for every function
- [ ] No console.log left in code (only console.error with format)
- [ ] All edge cases handled
- [ ] Tests written and passing
- [ ] No new files created outside the plan in Step 2
- [ ] DB migration applied and confirmed
- [ ] RLS policies applied if new table was created
---
## Step 8 β€” Update Docs
- [ ] Add one-liner to `docs/progress.md`
- [ ] Append one line to `session/phase-log.md`
- [ ] Update `session/summary.md` with what was done
- [ ] If any failure or workaround occurred β†’ add to `docs/learnings.md`
- [ ] If architecture changed β†’ update `docs/architecture.md`
---
## Step 9 β€” Git Commit Message
Provide one-liner commit message in this format:
feat([scope]): [what was done in plain english]
Examples:
feat(auth): add email login with session handling
feat(dashboard): add user profile fetch with error handling
feat(db): add users table migration with RLS policies
**Do NOT push to GitHub. Hand the message to the user.**
---
## Step 10 β€” Confirm with User
- [ ] Show user what was built
- [ ] Show test results
- [ ] Show commit message
- [ ] Ask: "Ready to move to next feature or phase?"
- [ ] Do NOT proceed until user confirms
---
## What NOT to Do
- Do not write tests after all features are done
- Do not modify files outside the plan without flagging it
- Do not proceed to next feature if current tests are failing
- Do not push to GitHub
- Do not skip the docs update in Step 8
- Do not start next phase without user confirmation