cursor-rules-tdd
Test-driven developmentTypescriptTestingImplementationRules
Description
Test-driven development guidelines for implementing cursor rules functionality
Globs
**/*.ts**/*.tsx**/*.test.ts
---
description: Test-driven development guidelines for implementing cursor rules functionality
globs: **/*.ts,**/*.tsx,**/*.test.ts
---
<rule>
name: cursor_rules_tdd
description: Test-driven development approach for implementing cursor rules functionality
filters:
- type: file_extension
pattern: "\\.(ts|tsx|test\\.ts)$"
- type: content
pattern: "(?s)CursorRule|CursorRuleManager"
actions:
- type: suggest
message: |
When implementing cursor rules, follow these test-driven development guidelines:
1. Core Types:
```typescript
interface CursorRule {
name: string;
description: string;
glob?: string[];
instructions: string[];
metadata?: Record<string, unknown>;
}
interface CursorRuleManager {
addRule(rule: CursorRule): Promise<void>;
getRuleByName(name: string): Promise<CursorRule | null>;
getRulesByGlob(filePath: string): Promise<CursorRule[]>;
listRules(): Promise<CursorRule[]>;
removeRule(name: string): Promise<boolean>;
}
```
2. Test Structure:
```typescript
// Basic Operations
describe('CursorRuleManager - Basic Operations', () => {
test('should create and retrieve a rule by name');
test('should return null for non-existent rule');
});
// Glob Pattern Matching
describe('CursorRuleManager - Glob Matching', () => {
test('should retrieve rules matching file path');
test('should return empty array for non-matching path');
});
// Rule Management
describe('CursorRuleManager - Management', () => {
test('should list all rules');
test('should remove existing rule');
});
```
3. Implementation Steps:
- Create core interfaces in src/core/rules/types.ts
- Implement manager in src/core/rules/manager.ts
- Add tests in src/core/rules/__tests__/
- Integrate with agent system in src/core/agent.ts
4. File Structure:
```
src/
├── core/
│ └── rules/
│ ├── __tests__/
│ │ └── manager.test.ts
│ ├── types.ts
│ ├── manager.ts
│ └── index.ts
```
examples:
- input: |
// Bad: Test file in wrong location
rules/__tests__/manager.test.ts
// Good: Test file in correct location
src/core/rules/__tests__/manager.test.ts
output: "Correctly structured test implementation"
- input: |
// Bad: Missing test categories
describe('CursorRuleManager', () => {
test('should work');
});
// Good: Properly categorized tests
describe('CursorRuleManager - Basic Operations', () => {
test('should create and retrieve a rule by name');
});
output: "Correctly structured test suite"
metadata:
priority: high
version: 1.0
categories: ["testing", "implementation", "rules"]
</rule>