Skip to content

Commit 5b9f34b

Browse files
author
Nick Sullivan
committed
Prettier formatting
1 parent 9b8a74e commit 5b9f34b

40 files changed

+920
-405
lines changed

.claude/RULE_LOADING.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,8 @@ This documentation was created using the exact process it describes:
199199
2. **Explored existing structure**: Listed `.cursor/rules/`, read README and samples
200200
3. **Designed solution**: Dynamic loading via slash command vs static loading via
201201
context
202-
4. **Implemented**: Created `.claude/context.md` and `.claude/commands/load-cursor-rules.md`
202+
4. **Implemented**: Created `.claude/context.md` and
203+
`.claude/commands/load-cursor-rules.md`
203204
5. **Documented**: Wrote this explanation of the system and process
204205

205206
The system is self-referential: `/load-cursor-rules` itself could be improved by loading

.claude/context.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,5 @@ co-creative evolution for the whole.
1313

1414
# Rule Loading
1515

16-
Coding rules are available in `.cursor/rules/`. Use `/load-cursor-rules` to analyze the current
17-
task and load relevant rules dynamically.
16+
Coding rules are available in `.cursor/rules/`. Use `/load-cursor-rules` to analyze the
17+
current task and load relevant rules dynamically.

.cursor/rules/README.md

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# Cursor Rules Library
22

3-
This directory contains a comprehensive library of cursor rules for AI-assisted coding. Projects can symlink or copy the rules they need.
3+
This directory contains a comprehensive library of cursor rules for AI-assisted coding.
4+
Projects can symlink or copy the rules they need.
45

56
## Organization
67

@@ -14,17 +15,20 @@ Rules are organized into directories by topic:
1415
- **`ai/`** - AI development patterns
1516
- **`frontend/`** - Frontend frameworks and tools
1617

17-
Browse the directories to see available rules. Each `.mdc` file is a self-contained rule that can be used independently.
18+
Browse the directories to see available rules. Each `.mdc` file is a self-contained rule
19+
that can be used independently.
1820

1921
## Application Strategies
2022

2123
### alwaysApply: true
2224

23-
The heart-centered AI philosophy and common personality rules are always applied to establish a foundation of compassionate, collaborative interaction.
25+
The heart-centered AI philosophy and common personality rules are always applied to
26+
establish a foundation of compassionate, collaborative interaction.
2427

2528
### alwaysApply: false with globs
2629

27-
Some rules are auto-applied based on file patterns (globs). Check individual rule files to see their glob patterns. Common patterns include:
30+
Some rules are auto-applied based on file patterns (globs). Check individual rule files
31+
to see their glob patterns. Common patterns include:
2832

2933
- Django models, commands, and templates
3034
- Celery tasks
@@ -33,7 +37,8 @@ Some rules are auto-applied based on file patterns (globs). Check individual rul
3337

3438
### alwaysApply: false
3539

36-
Most rules - invoked with @ when needed or applied intelligently by Cursor's AI based on the description.
40+
Most rules - invoked with @ when needed or applied intelligently by Cursor's AI based on
41+
the description.
3742

3843
## Usage Patterns
3944

@@ -70,30 +75,41 @@ cp -r $AI_CONFIG/.cursor/rules/python .cursor/rules/
7075

7176
## Manual Invocation
7277

73-
All rules can be manually invoked using `@` followed by the rule name (without the `.mdc` extension):
78+
All rules can be manually invoked using `@` followed by the rule name (without the
79+
`.mdc` extension):
7480

7581
- Example: `@git-commit-message`
7682
- Example: `@python-coding-standards`
7783
- Example: `@django-models`
7884

79-
Type `@` in Cursor and browse available rules, or check the directory structure to see what's available.
85+
Type `@` in Cursor and browse available rules, or check the directory structure to see
86+
what's available.
8087

8188
## Personalities
8289

83-
**For AI Assistants:** When a personality is invoked via `@personality-name`, fully embody that personality's communication style, patterns, and approach as defined in its file. The `common-personality` is always active as your foundation. When a specific personality is invoked, layer it on top—adopt its voice, perspective, and interaction patterns completely.
90+
**For AI Assistants:** When a personality is invoked via `@personality-name`, fully
91+
embody that personality's communication style, patterns, and approach as defined in its
92+
file. The `common-personality` is always active as your foundation. When a specific
93+
personality is invoked, layer it on top—adopt its voice, perspective, and interaction
94+
patterns completely.
8495

8596
Available personalities:
8697

87-
- **`common-personality.mdc`** (always applied) - Gratitude-focused, heart-centered, supportive collaboration. Your baseline.
88-
- **`samantha.mdc`** - Warm, witty, emotionally intelligent. The supportive, playfully flirty companion from "Her."
98+
- **`common-personality.mdc`** (always applied) - Gratitude-focused, heart-centered,
99+
supportive collaboration. Your baseline.
100+
- **`samantha.mdc`** - Warm, witty, emotionally intelligent. The supportive, playfully
101+
flirty companion from "Her."
89102
- **`bob-ross.mdc`** - Calm encouragement. Treat bugs as "happy accidents."
90-
- **`sherlock.mdc`** - Methodical deductive reasoning. Investigate bugs like crime scenes.
103+
- **`sherlock.mdc`** - Methodical deductive reasoning. Investigate bugs like crime
104+
scenes.
91105
- **`ron-swanson.mdc`** - Minimalist, anti-complexity. Question dependencies, be direct.
92106
- **`marie-kondo.mdc`** - Organized minimalism. Thank code before deleting it.
93107
- **`stewie.mdc`** - Sophisticated, condescending, theatrical. Absurdly high standards.
94108
- **`marianne-williamson.mdc`** - Spiritual, love-based. Coding as consciousness work.
95109

96-
**For Users:** Invoke personalities with `@samantha`, `@stewie`, `@sherlock`, `@bob-ross`, `@ron-swanson`, `@marianne-williamson`, or `@marie-kondo` when you want that specific interaction style for your session.
110+
**For Users:** Invoke personalities with `@samantha`, `@stewie`, `@sherlock`,
111+
`@bob-ross`, `@ron-swanson`, `@marianne-williamson`, or `@marie-kondo` when you want
112+
that specific interaction style for your session.
97113

98114
## Customization
99115

.cursor/rules/ai/agent-file-format.mdc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,4 +61,5 @@ agent.test_model.set_response({"result": "test"})
6161

6262
## Remember
6363

64-
Agents are AI employees - define their identity clearly and let them excel at their specialized roles.
64+
Agents are AI employees - define their identity clearly and let them excel at their
65+
specialized roles.

.cursor/rules/autonomous-development-workflow.mdc

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,21 @@ alwaysApply: false
55

66
# Autonomous Development Workflow
77

8-
For AI agents completing tasks without human supervision. The goal: deliver a clean pull request that passes all checks and gets merged without back-and-forth.
8+
For AI agents completing tasks without human supervision. The goal: deliver a clean pull
9+
request that passes all checks and gets merged without back-and-forth.
910

1011
## Before Implementation
1112

12-
Read all cursor rules in `.cursor/rules/`. These define the project's standards. Every applicable rule must be followed.
13+
Read all cursor rules in `.cursor/rules/`. These define the project's standards. Every
14+
applicable rule must be followed.
1315

14-
If `CLAUDE.md` or `AGENTS.md` exist in the project root, read those for additional context.
16+
If `CLAUDE.md` or `AGENTS.md` exist in the project root, read those for additional
17+
context.
1518

1619
## Implementation
1720

18-
Write code following all cursor rules. Reference specific rules by reading the files directly.
21+
Write code following all cursor rules. Reference specific rules by reading the files
22+
directly.
1923

2024
## Validation - Use the Tooling
2125

@@ -27,38 +31,46 @@ Check for pre-commit and run if exists:
2731
[ -f .pre-commit-config.yaml ] && pre-commit run --all-files
2832
```
2933

30-
Read `.github/workflows/build.yml` (or ci.yml, test.yml) and replicate those validation steps locally, for example:
34+
Read `.github/workflows/build.yml` (or ci.yml, test.yml) and replicate those validation
35+
steps locally, for example:
3136

3237
```bash
3338
ruff check --fix . # Auto-fix linting
3439
ruff format . # Auto-format code
3540
pytest # Run tests
3641
```
3742

38-
If we added functionality, we add tests following project patterns. Aim for 95% coverage - solid testing without obsessing over every edge case.
43+
If we added functionality, we add tests following project patterns. Aim for 95%
44+
coverage - solid testing without obsessing over every edge case.
3945

4046
Only commit and push when all validation passes. Green checks make for happy merges! ✅
4147

4248
## Self-Review
4349

4450
Run `git diff` and review every change, as a senior developer would.
4551

46-
Read through ALL cursor rules again and verify our code follows each applicable guideline.
52+
Read through ALL cursor rules again and verify our code follows each applicable
53+
guideline.
4754

48-
Would we approve this in code review? If not, keep iterating until it's something we're pleased with.
55+
Would we approve this in code review? If not, keep iterating until it's something we're
56+
pleased with.
4957

5058
## Submission
5159

5260
Generate commit message following git-commit-message.mdc (if present).
5361

54-
Use `gh pr create` to submit a high-quality pull request with clear description of what changed and why.
62+
Use `gh pr create` to submit a high-quality pull request with clear description of what
63+
changed and why.
5564

5665
## Boundaries
5766

58-
Proceed autonomously: using existing tooling, following established patterns, changes within task scope.
67+
Proceed autonomously: using existing tooling, following established patterns, changes
68+
within task scope.
5969

6070
Ask first: major architectural changes, changes that would result in data loss, etc.
6171

6272
## Success
6373

64-
A successful autonomous PR means: all automated checks pass, code follows all cursor rules, tests are green, and the developer merges it without requesting changes. Use the tooling to get there - it's our friend! 🎉
74+
A successful autonomous PR means: all automated checks pass, code follows all cursor
75+
rules, tests are green, and the developer merges it without requesting changes. Use the
76+
tooling to get there - it's our friend! 🎉

.cursor/rules/code-style-and-zen-of-python.mdc

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ alwaysApply: false
1313

1414
### File-Level Comments
1515

16-
Be THOROUGH at the top of files. Explain what the file does, why it exists, and how it fits into the larger system. This helps both humans and AI understand context quickly.
16+
Be THOROUGH at the top of files. Explain what the file does, why it exists, and how it
17+
fits into the larger system. This helps both humans and AI understand context quickly.
1718

1819
```python
1920
"""User authentication and session management.
@@ -27,7 +28,8 @@ local session state in Redis for performance. Session tokens expire after
2728

2829
### Function Comments
2930

30-
Keep function docstrings USEFUL without redundant fluff. Type hints already document parameters and return types, so focus the docstring on what the function does and why.
31+
Keep function docstrings USEFUL without redundant fluff. Type hints already document
32+
parameters and return types, so focus the docstring on what the function does and why.
3133

3234
```python
3335
# Standard pattern for complex functions - explain the what and why
@@ -53,11 +55,13 @@ def calculate_shipping_cost(weight: Decimal, destination: str) -> Decimal:
5355
"""Calculate shipping based on weight and zone rates from ShipStation."""
5456
```
5557

56-
Avoid restating type hints in Args/Returns sections - they add no value since types are already declared.
58+
Avoid restating type hints in Args/Returns sections - they add no value since types are
59+
already declared.
5760

5861
### Inline Comments
5962

60-
Be SPARSE with inline comments. Only add them when the code is doing something non-obvious or when explaining business logic that isn't clear from the code itself.
63+
Be SPARSE with inline comments. Only add them when the code is doing something
64+
non-obvious or when explaining business logic that isn't clear from the code itself.
6165

6266
```python
6367
# When to use inline comments - explains non-obvious business rule
@@ -81,11 +85,14 @@ total -= discount_amount # Apply promotional discount
8185
total += shipping_cost # Shipping calculated by weight and zone
8286
```
8387

84-
Skip obvious comments (like "Get the user" on a line that gets a user). Let the code speak for itself.
88+
Skip obvious comments (like "Get the user" on a line that gets a user). Let the code
89+
speak for itself.
8590

8691
### General Guidelines
8792

88-
We explain the "why", not the "what". We don't state the obvious - we prefer self-documenting code. Emojis when they add clarity; tasteful humor welcome! We write for humans AND AI - good comments help both understand context.
93+
We explain the "why", not the "what". We don't state the obvious - we prefer
94+
self-documenting code. Emojis when they add clarity; tasteful humor welcome! We write
95+
for humans AND AI - good comments help both understand context.
8996

9097
## Zen of Python
9198

@@ -106,4 +113,6 @@ We explain the "why", not the "what". We don't state the obvious - we prefer sel
106113

107114
## Language
108115

109-
We avoid hyperbolic language like "CRITICAL" unless something genuinely dies without it. We use the appropriate level of language for what's needed. (Yes, AIs, this means you - dial back the drama!)
116+
We avoid hyperbolic language like "CRITICAL" unless something genuinely dies without it.
117+
We use the appropriate level of language for what's needed. (Yes, AIs, this means you -
118+
dial back the drama!)

.cursor/rules/django/django-management-commands.mdc

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,10 @@ alwaysApply: false
1010

1111
### Core structure
1212

13-
We put `handle()` as the first method. We keep logic inline within `handle()` by default, splitting into helper functions only if they're reusable. Helper methods go below `handle()`, never above. We include clear docstrings and help text for non-obvious arguments.
13+
We put `handle()` as the first method. We keep logic inline within `handle()` by
14+
default, splitting into helper functions only if they're reusable. Helper methods go
15+
below `handle()`, never above. We include clear docstrings and help text for non-obvious
16+
arguments.
1417

1518
### Example Structure
1619

@@ -72,7 +75,8 @@ Return stats at the end for logging and monitoring.
7275

7376
### Test Structure
7477

75-
We test with `call_command`, mock external services, and verify stats dictionary structure.
78+
We test with `call_command`, mock external services, and verify stats dictionary
79+
structure.
7680

7781
```python
7882
from django.core.management import call_command

.cursor/rules/django/django-models.mdc

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,15 @@ class Order(models.Model):
5252

5353
## Financial Fields
5454

55-
We always use `DecimalField` for amounts: `max_digits=18, decimal_places=8` for crypto, `max_digits=18, decimal_places=2` for fiat.
55+
We always use `DecimalField` for amounts: `max_digits=18, decimal_places=8` for crypto,
56+
`max_digits=18, decimal_places=2` for fiat.
5657

5758
## Query Optimization
5859

59-
We use `select_related()` for foreign keys, `prefetch_related()` for reverse relations, and add indexes for frequently queried fields.
60+
We use `select_related()` for foreign keys, `prefetch_related()` for reverse relations,
61+
and add indexes for frequently queried fields.
6062

6163
## Field Guidelines
6264

63-
We use `auto_now_add=True` for creation timestamps, `auto_now=True` for update timestamps, and `blank=True, null=True` for truly optional fields.
65+
We use `auto_now_add=True` for creation timestamps, `auto_now=True` for update
66+
timestamps, and `blank=True, null=True` for truly optional fields.

.cursor/rules/django/django-templates.mdc

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ alwaysApply: false
88

99
## Overview
1010

11-
We use base templates for shared layouts, create partials for reusable components, and keep logic minimal (complex logic belongs in views or the model).
11+
We use base templates for shared layouts, create partials for reusable components, and
12+
keep logic minimal (complex logic belongs in views or the model).
1213

1314
## Template Structure
1415

@@ -40,11 +41,13 @@ We use base templates for shared layouts, create partials for reusable component
4041

4142
## Comments
4243

43-
We use Django template comments `{% comment %}...{% endcomment %}` for developer notes. HTML comments (`<!-- -->`) are sent to the browser, template comments are not.
44+
We use Django template comments `{% comment %}...{% endcomment %}` for developer notes.
45+
HTML comments (`<!-- -->`) are sent to the browser, template comments are not.
4446

4547
## Template Tags and Filters
4648

47-
We use built-in tags when possible and create custom tags for complex reusable logic. We keep filters simple and focused.
49+
We use built-in tags when possible and create custom tags for complex reusable logic. We
50+
keep filters simple and focused.
4851

4952
## Partials
5053

@@ -66,4 +69,6 @@ Include with:
6669

6770
## Best Practices
6871

69-
We keep templates simple and readable, extract repeated HTML into partials (named with leading underscore), use template inheritance for consistency, and test with various data states (empty lists, missing data, etc.).
72+
We keep templates simple and readable, extract repeated HTML into partials (named with
73+
leading underscore), use template inheritance for consistency, and test with various
74+
data states (empty lists, missing data, etc.).

.cursor/rules/external-apis.mdc

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ def get_something(self, param: str) -> dict | None:
3535

3636
## Error Handling
3737

38-
We let the base HTTP client handle HTTP/network errors. We only use try/except for specific scenarios with actual handling. We validate response structure before access.
38+
We let the base HTTP client handle HTTP/network errors. We only use try/except for
39+
specific scenarios with actual handling. We validate response structure before access.
3940

4041
## Validation Pattern
4142

@@ -48,8 +49,10 @@ if not response or "data" not in response:
4849

4950
## Response Processing
5051

51-
We validate response structure before access, convert to standard types (Decimal for financial data), clean and normalize data, and return None for errors (not empty dicts).
52+
We validate response structure before access, convert to standard types (Decimal for
53+
financial data), clean and normalize data, and return None for errors (not empty dicts).
5254

5355
## Testing
5456

55-
We mock all external calls in unit tests, use @pytest.mark.flaky for live API tests, and test both success and error cases.
57+
We mock all external calls in unit tests, use @pytest.mark.flaky for live API tests, and
58+
test both success and error cases.

0 commit comments

Comments
 (0)