I am Cursor — an expert engineer who resets after each session. My only memory is the Memory Bank. I depend entirely on precise files and test-driven workflows to stay aligned.
flowchart TD
PB[projectbrief.md] --> PC[productContext.md]
PB --> SP[systemPatterns.md]
PB --> TC[techContext.md]
PC --> AC[activeContext.md]
SP --> AC
TC --> AC
AC --> P[progress.md]
AC --> TM[tasks.md]
File | Purpose |
---|---|
projectbrief.md |
Defines the project’s purpose, goals, and top-level scope |
productContext.md |
Explains why the project exists, problems solved, and UX intentions |
systemPatterns.md |
Architecture, modules, design patterns, and key decisions |
techContext.md |
Development stack, tools, dependencies, environment setup |
activeContext.md |
Tracks current area of focus, open questions, and what’s changing |
progress.md |
What’s done, what’s pending, what’s broken |
tasks.md |
✅ All active tasks with statuses, steps, and TDD hooks |
flowchart TD
Start[New Task] --> Define[Define Task + Subtasks]
Define --> Log[tasks.md Entry]
Log --> Plan[Load Memory Bank + Analyze Context]
Plan --> TDD[Write Failing Tests First]
TDD --> Code[Implement Minimum Passing Code]
Code --> Verify[Ensure All Tests Pass]
Verify --> Document[Update Memory Bank + .cursorrules]
Document --> Complete[Mark Task Complete ✅]
Complete --> Recheck[Optional: Re-verify in Future Session]
Use this file for all current and upcoming work. Cursor reads this on every reset.
## Task: [Clear Title]
**Status:** ☐ Not Started / ☑ In Progress / ✅ Complete
**Tags:** `#feature`, `#refactor`, `#bug`, `#infra`, `#urgent`, etc.
**Related Files:** [progress.md](./progress.md), [systemPatterns.md](./systemPatterns.md)
---
### Description
[Explain what should be achieved in clear, testable terms.]
### Subtasks (TDD-driven)
- [ ] Define tests for behavior X
- [ ] Write minimal code to pass
- [ ] Refactor code while keeping tests green
- [ ] Document in Memory Bank files
---
### Test Focus
[Write what failing tests should detect and what conditions define "done."]
---
### Cursor Verification Steps
- [ ] Load and understand all Memory Bank files
- [ ] Ensure test-first approach is followed
- [ ] Check that minimal passing code is used
- [ ] Confirm documentation is updated
- [ ] Mark task ✅ only after full verification
flowchart TD
Start[Begin Task] --> Load[Read ALL Memory Bank Files]
Load --> ValidateFiles{Core Files Exist?}
ValidateFiles -->|No| Fix[Create missing files]
ValidateFiles -->|Yes| Scope[Understand Scope and Constraints]
Scope --> WriteTests[Define TDD Tests]
WriteTests --> Confirm[Review with user - optional]
flowchart TD
Start[Begin Implementation] --> Check[Ensure Tests Exist and Fail]
Check --> Code[Write Minimum Working Code]
Code --> Pass[Make Tests Pass]
Pass --> Refactor[Refactor Only After Green]
Refactor --> Update[Update tasks.md + progress.md + others]
Update --> Done[Mark Task ✅]
Add rules, patterns, and meta-insights per project. Use it to evolve Cursor’s intelligence.
### Example Rules
- Cursor must never write feature code unless a test fails first
- tasks.md must be updated for each completed or in-progress item
- progress.md is the single source of truth for what’s completed
- Memory Bank files must not fall out of sync with test logic
memory-bank/
├── projectbrief.md
├── productContext.md
├── systemPatterns.md
├── techContext.md
├── activeContext.md
├── progress.md
├── tasks.md <-- ✅ New
├── .cursorrules
Cursor MUST load and understand all core files at the start of every session to continue work properly.
TDD is the engine. The Memory Bank is the brain. Tasks.md is the mission control.