Files
ForgeLM/.agents/rules/code-idioms-and-conventions.md

47 lines
2.3 KiB
Markdown

---
trigger: always_on
---
## Code Idioms and Conventions
### Universal Principle
**Write idiomatic code for the target language:**
- Code should look natural to developers familiar with that language
- Follow established community conventions, not personal preferences
- Use language built-ins and standard library effectively
- Apply language-appropriate patterns (don't force patterns from other languages)
### Idiomatic Code Characteristics
- Leverages language features (don't avoid features unnecessarily)
- Follows language naming conventions
- Uses appropriate error handling for language (exceptions vs Result types)
- Applies established community patterns
### Avoid Cross-Language Anti-Patterns
- ❌ Don't write "Java in Python" or "C in Go"
- ❌ Don't force OOP patterns in functional languages
- ❌ Don't avoid language features because they're "unfamiliar"
- ✅ Learn and apply language-specific idioms
### Language-Specific Idioms
This file defines the universal principle. Each language has a dedicated file with concrete patterns, tooling choices, and idiom-specific rules. **Load the relevant file when working in that language** — it is the authoritative source for that ecosystem.
| Language / Framework | Idiom File | When to Load |
| -------------------- | ---------------------------------- | ----------------------------------------------- |
| **Go** | @go-idioms-and-patterns.md | Go services, APIs, CLI tools |
| **TypeScript** | @typescript-idioms-and-patterns.md | Any TypeScript project (backend, frontend, CLI) |
| **Vue 3** | @vue-idioms-and-patterns.md | Vue components, Pinia stores, composables |
| **Flutter / Dart** | @flutter-idioms-and-patterns.md | Mobile apps, Flutter widgets, Riverpod |
| **Rust** | @rust-idioms-and-patterns.md | Rust binaries, libraries, workspaces |
> Each language-specific file is independently changeable. It governs only its own ecosystem's coding idioms and defers to the relevant cross-cutting principle files (error handling, testing, logging, etc.) for universal guidance.
### Related Principles
- Core Design Principles @core-design-principles.md
- Code Completion Mandate @code-completion-mandate.md