BMAD-METHOD/docs/explanation/project-context.md

158 lines
6.0 KiB
Markdown

---
title: "Project Context"
description: How project-context.md guides AI agents with your project's rules and preferences
sidebar:
order: 7
---
The `project-context.md` file is your project's implementation guide for AI agents. Similar to a "constitution" in other development systems, it captures the rules, patterns, and preferences that ensure consistent code generation across all workflows.
## What It Does
AI agents make implementation decisions constantly — which patterns to follow, how to structure code, what conventions to use. Without clear guidance, they may:
- Follow generic best practices that don't match your codebase
- Make inconsistent decisions across different stories
- Miss project-specific requirements or constraints
The `project-context.md` file solves this by documenting what agents need to know in a concise, LLM-optimized format.
## How It Works
Every implementation workflow automatically loads `project-context.md` if it exists. The architect workflow also loads it to respect your technical preferences when designing the architecture.
**Loaded by these workflows:**
- `bmad-create-architecture` — respects technical preferences during solutioning
- `bmad-create-story` — informs story creation with project patterns
- `bmad-dev-story` — guides implementation decisions
- `bmad-code-review` — validates against project standards
- `bmad-quick-dev` — applies patterns when implementing tech-specs
- `bmad-sprint-planning`, `bmad-retrospective`, `bmad-correct-course` — provides project-wide context
## When to Create It
The `project-context.md` file is useful at any stage of a project:
| Scenario | When to Create | Purpose |
|----------|----------------|---------|
| **New project, before architecture** | Manually, before `bmad-create-architecture` | Document your technical preferences so the architect respects them |
| **New project, after architecture** | Via `bmad-generate-project-context` or manually | Capture architecture decisions for implementation agents |
| **Existing project** | Via `bmad-generate-project-context` | Discover existing patterns so agents follow established conventions |
| **Quick Flow project** | Before or during `bmad-quick-dev` | Ensure quick implementation respects your patterns |
:::tip[Recommended]
For new projects, create it manually before architecture if you have strong technical preferences. Otherwise, generate it after architecture to capture those decisions.
:::
## What Goes In It
The file has two main sections:
### Technology Stack & Versions
Documents the frameworks, languages, and tools your project uses with specific versions:
```markdown
## Technology Stack & Versions
- Node.js 20.x, TypeScript 5.3, React 18.2
- State: Zustand (not Redux)
- Testing: Vitest, Playwright, MSW
- Styling: Tailwind CSS with custom design tokens
```
### Critical Implementation Rules
Documents patterns and conventions that agents might otherwise miss:
```markdown
## Critical Implementation Rules
**TypeScript Configuration:**
- Strict mode enabled — no `any` types without explicit approval
- Use `interface` for public APIs, `type` for unions/intersections
**Code Organization:**
- Components in `/src/components/` with co-located `.test.tsx`
- Utilities in `/src/lib/` for reusable pure functions
- API calls use the `apiClient` singleton — never fetch directly
**Testing Patterns:**
- Unit tests focus on business logic, not implementation details
- Integration tests use MSW to mock API responses
- E2E tests cover critical user journeys only
**Framework-Specific:**
- All async operations use the `handleError` wrapper for consistent error handling
- Feature flags accessed via `featureFlag()` from `@/lib/flags`
- New routes follow the file-based routing pattern in `/src/app/`
```
Focus on what's **unobvious** — things agents might not infer from reading code snippets. Don't document standard practices that apply universally.
## Creating the File
You have three options:
### Manual Creation
Create the file at `_bmad-output/project-context.md` and add your rules:
```bash
# In your project root
mkdir -p _bmad-output
touch _bmad-output/project-context.md
```
Edit it with your technology stack and implementation rules. The architect and implementation workflows will automatically find and load it.
### Generate After Architecture
Run the `bmad-generate-project-context` workflow after completing your architecture:
```bash
bmad-generate-project-context
```
This scans your architecture document and project files to generate a context file capturing the decisions made.
### Generate for Existing Projects
For existing projects, run `bmad-generate-project-context` to discover existing patterns:
```bash
bmad-generate-project-context
```
The workflow analyzes your codebase to identify conventions, then generates a context file you can review and refine.
## Why It Matters
Without `project-context.md`, agents make assumptions that may not match your project:
| Without Context | With Context |
|----------------|--------------|
| Uses generic patterns | Follows your established conventions |
| Inconsistent style across stories | Consistent implementation |
| May miss project-specific constraints | Respects all technical requirements |
| Each agent decides independently | All agents align with same rules |
This is especially important for:
- **Quick Flow** — skips PRD and architecture, so context file fills the gap
- **Team projects** — ensures all agents follow the same standards
- **Existing projects** — prevents breaking established patterns
## Editing and Updating
The `project-context.md` file is a living document. Update it when:
- Architecture decisions change
- New conventions are established
- Patterns evolve during implementation
- You identify gaps from agent behavior
You can edit it manually at any time, or re-run `bmad-generate-project-context` to update it after significant changes.
:::note[File Location]
The default location is `_bmad-output/project-context.md`. Workflows search for it there, and also check `**/project-context.md` anywhere in your project.
:::