codeflash/.claude/rules/language-patterns.md
Kevin Turcios e4b1fb854b chore: rebuild .claude config from scratch
Delete all existing .claude/ tracked files and recreate from scratch,
adapting patterns from codeflash-agent.

Hooks (6, up from 1):
- bash-guard: blocks grep/find/cat in Bash, redirects to dedicated tools
- require-read + track-read: enforces Read-before-Write/Edit
- post-compact: injects git state + project conventions into compaction
- post-edit-lint: runs prek on edited Python files (kept)
- status-line: shows user, area, branch, dirty state

Rules (10, up from 8):
- New: sessions, debugging, github (from codeflash-agent)
- Rewrote: code-style (absorbed source-code), git (added sizing/hygiene)
- Removed: source-code (folded into code-style)

Settings: permissions allowlist, attribution, includeCoAuthoredBy, full
hook wiring, status line, enableAllProjectMcpServers.

.gitignore: whitelist .claude/skills/ for tracking.
2026-04-23 04:31:04 -05:00

753 B

paths
codeflash/languages/**/*.py

Language Support Patterns

  • Current language is a module-level singleton in languages/current.py — use set_current_language() / current_language(), never pass language as a parameter through call chains
  • Use get_language_support(identifier) from languages/registry.py — never import language classes directly
  • New language support classes must use the @register_language decorator
  • languages/__init__.py uses __getattr__ for lazy imports to avoid circular dependencies
  • Prefer LanguageSupport protocol dispatch over is_python()/is_javascript() guards
  • is_javascript() returns True for both JavaScript and TypeScript (still used in ~15 call sites pending migration)