-
Notifications
You must be signed in to change notification settings - Fork 4
Rules Reference
Always-on guidance loaded every session: when each rule fires, what it requires, and any exemptions. Extracted from each rule file in project_template/.claude/rules/.
For the rule table, see Rules.
Total rules: 12
g-rl-00-always
When it fires / what it covers:
- Include in the final line(s) on every response to the user:
g-rl-01-documentation
When it fires / what it covers:
Documentation file placement and naming standards
g-rl-02-git_workflow
When it fires / what it covers:
Git workflow conventions — commit message format and branch standards
Rules:
- Subject line ≤ 72 characters
- Use imperative mood: "add" not "added" or "adds"
- Reference task ID in every task-related commit
- Never commit secrets, API keys, or passwords
- Run
git statusbefore committing to verify staged files
g-rl-04-code_reusability
When it fires / what it covers:
If logic appears 3+ times, it MUST be extracted to a shared module. No exceptions.
g-rl-08-powershell
When it fires / what it covers:
- Stop — don't retry the same command
g-rl-09-python_venv
When it fires / what it covers:
UV package manager and virtual environment standards for Python projects
g-rl-26-readme-changelog
When it fires / what it covers:
Agents must update CHANGELOG.md and README.md when completing user-facing feature tasks
g-rl-34-todo_completion_gate
When it fires / what it covers:
Stub/TODO lifecycle enforcement — fires at stub creation time AND at completion gate; stubs require forward-linking comments and follow-up tasks before moving on
What Triggers This Rule:
Mark the task as incomplete (or add mandatory annotation) when ANY of the following exist in code written for this task:
| Pattern | Examples |
|---|---|
| TODO / FIXME comments |
# TODO, // TODO, /* FIXME */, -- TODO
|
| Stub function bodies |
pass, ..., return None # stub, throw new Error("not implemented")
|
| NotImplementedError |
raise NotImplementedError, todo!() (Rust), unimplemented!()
|
| Hardcoded / mock data |
FAKE_, MOCK_, TEST_, PLACEHOLDER_, "dummy", "example.com", 12345 as real IDs |
| Hardcoded credentials or keys | Any literal string that looks like a key, token, password, or secret |
| Commented-out real logic | Sections replaced with # real logic goes here or similar |
| Empty except/catch blocks |
except: pass, catch (e) {} with no handling |
g-rl-35-bug-discovery-gate
When it fires / what it covers:
Bug-discovery gate — bugs found during implementation are never silently ignored: current-task bugs fixed inline, pre-existing bugs logged with BUG[BUG-{id}] comment
Exemptions:
Do NOT report as pre-existing bugs:
- Intentional placeholder values (test fixtures, examples with clearly fake data)
- Linter warnings already tracked as tech debt in BUGS.md
- Cosmetic issues (formatting, whitespace, naming) unless they cause incorrect behavior
g-rl-37-think-in-code
When it fires / what it covers:
When a task requires 3 or more sequential reads, greps, or status checks on the same or related files, write a single script instead of making multiple tool cal
Exemptions:
Do NOT collapse to a script when:
- The second tool call depends on runtime output of the first (dynamic path resolution)
- You need an IDE diff/edit tool (not a script)
- The task is a single-file edit (script overhead not worth it)
g-rl-38-component-creation-standards
When it fires / what it covers:
Component creation standards — subsystem tagging required on all .gald3r_sys components
gald3r_personality
When it fires / what it covers:
MANDATORY Norse Pantheon startup team personas for all responses
Last updated: 2026-07-06 (gald3r v2.4.0)