Add .cursor autodevelopment system
4.8 KiB
Component Specification Template
Use this template for each component. Save as components/[##]_[name]/description.md.
# [Component Name]
## 1. High-Level Overview
**Purpose**: [One sentence: what this component does and its role in the system]
**Architectural Pattern**: [e.g., Repository, Event-driven, Pipeline, Facade, etc.]
**Upstream dependencies**: [Components that this component calls or consumes from]
**Downstream consumers**: [Components that call or consume from this component]
## 2. Internal Interfaces
For each interface this component exposes internally:
### Interface: [InterfaceName]
| Method | Input | Output | Async | Error Types |
|--------|-------|--------|-------|-------------|
| `method_name` | `InputDTO` | `OutputDTO` | Yes/No | `ErrorType1`, `ErrorType2` |
**Input DTOs**:
[DTO name]: field_1: type (required/optional) — description field_2: type (required/optional) — description
**Output DTOs**:
[DTO name]: field_1: type — description field_2: type — description
## 3. External API Specification
> Include this section only if the component exposes an external HTTP/gRPC API.
> Skip if the component is internal-only.
| Endpoint | Method | Auth | Rate Limit | Description |
|----------|--------|------|------------|-------------|
| `/api/v1/...` | GET/POST/PUT/DELETE | Required/Public | X req/min | Brief description |
**Request/Response schemas**: define per endpoint using OpenAPI-style notation.
**Example request/response**:
```json
// Request
{ }
// Response
{ }
4. Data Access Patterns
Queries
| Query | Frequency | Hot Path | Index Needed |
|---|---|---|---|
| [describe query] | High/Medium/Low | Yes/No | Yes/No |
Caching Strategy
| Data | Cache Type | TTL | Invalidation |
|---|---|---|---|
| [data item] | In-memory / Redis / None | [duration] | [trigger] |
Storage Estimates
| Table/Collection | Est. Row Count (1yr) | Row Size | Total Size | Growth Rate |
|---|---|---|---|---|
| [table_name] | /month |
Data Management
Seed data: [Required seed data and how to load it]
Rollback: [Rollback procedure for this component's data changes]
5. Implementation Details
Algorithmic Complexity: [Big O for critical methods — only if non-trivial]
State Management: [Local state / Global state / Stateless — explain how state is handled]
Key Dependencies: [External libraries and their purpose]
| Library | Version | Purpose |
|---|---|---|
| [name] | [version] | [why needed] |
Error Handling Strategy:
- [How errors are caught, propagated, and reported]
- [Retry policy if applicable]
- [Circuit breaker if applicable]
6. Extensions and Helpers
List any shared utilities this component needs that should live in a
helpers/folder.
| Helper | Purpose | Used By |
|---|---|---|
| [helper_name] | [what it does] | [list of components] |
7. Caveats & Edge Cases
Known limitations:
- [Limitation 1]
Potential race conditions:
- [Race condition scenario, if any]
Performance bottlenecks:
- [Bottleneck description and mitigation approach]
8. Dependency Graph
Must be implemented after: [list of component numbers/names]
Can be implemented in parallel with: [list of component numbers/names]
Blocks: [list of components that depend on this one]
9. Logging Strategy
| Log Level | When | Example |
|---|---|---|
| ERROR | Unrecoverable failures | Failed to process order {id}: {error} |
| WARN | Recoverable issues | Retry attempt {n} for {operation} |
| INFO | Key business events | Order {id} created by user {uid} |
| DEBUG | Development diagnostics | Query returned {n} rows in {ms}ms |
Log format: [structured JSON / plaintext — match system standard]
Log storage: [stdout / file / centralized logging service]
---
## Guidance Notes
- **Section 3 (External API)**: skip entirely for internal-only components. Include for any component that exposes HTTP endpoints, WebSocket connections, or gRPC services.
- **Section 4 (Storage Estimates)**: critical for components that manage persistent data. Skip for stateless components.
- **Section 5 (Algorithmic Complexity)**: only document if the algorithm is non-trivial (O(n^2) or worse, recursive, etc.). Simple CRUD operations don't need this.
- **Section 6 (Helpers)**: if the helper is used by only one component, keep it inside that component. Only extract to `helpers/` if shared by 2+ components.
- **Section 8 (Dependency Graph)**: this is essential for determining implementation order. Be precise about what "depends on" means — data dependency, API dependency, or shared infrastructure.