Tauri desktop application built with Rust (backend) + React + TypeScript (frontend).
src/— React + TypeScript frontendsrc-tauri/— Rust backend (Tauri)src-tauri/src/— Rust source:commands/,services/,models/,state/,error.rs.claude/skills/— AI skills (loaded on demand).memory/— Persistent memory files (written by Mnemosyne)
These rules apply automatically — no need to be asked.
Trigger: Any git operation, commit authoring, branch management, or when a file should be added to .gitignore.
- Always follow Conventional Commits format:
<type>(<scope>): <description> - Always use trunk-based development: branch from
main, short-lived branches only - Always check
git statusbefore committing — update.gitignoreif untracked files should be ignored - Always use
git add -p(interactive staging), never blindgit add . - Delete branches immediately after merge
- Never force push to
main - Commit messages always in English
Trigger: Any bug report, test failure, unexpected behavior, or error encountered.
- NEVER propose a fix before finding the root cause
- Always complete root cause investigation (Phase 1) before attempting any fix
- Symptom fixes are failure — find the actual cause
- No random changes hoping something works
Trigger: Before implementing any new feature, component, or significant behavior change.
- Always explore intent and requirements before writing code
- Ask clarifying questions one at a time
- Propose 2-3 approaches with trade-offs before proceeding
- Present design in sections, check alignment before implementing
Trigger: After completing any task where files were edited and verified (tests pass, diagnostics clean).
- Write a structured memory file to
.memory/directory - Update
.memory/session-summary.mdwith overall progress - Use kebab-case filenames, group related features in subdirectories
- Keep memory files concise: file paths, key decisions, dependencies, next steps
- Update existing memory file if same files were modified (don't create duplicates)
Trigger: Alongside brainstorming when starting a new project or feature set, and alongside mnemosyne when task status changes.
- Always read
.plans/src/data/plan.jsonbefore writing — never overwrite blindly - Update
meta.updatedAton every write - Move tasks between kanban columns as work progresses (
backlog → in_progress → review → done) - Update phase
progress(0–100) based on milestone completion ratio - Add a
sessionLogentry for every significant action - Dev server:
cd .plans && npm run dev→http://localhost:1998
- Use
AppErrorenum withthiserror— neverunwrap()in production paths - Commands are thin wrappers — all business logic in
services/ - All Tauri commands must be
async - Use
#[serde(rename_all = "camelCase")]on structs sent to frontend - Run
cargo clippy -- -D warningsbefore considering Rust work done
- Strict TypeScript — no
as any, no@ts-ignore - Follow existing component patterns in
src/
| Type | Use |
|---|---|
feat |
New feature |
fix |
Bug fix |
refactor |
Code restructure, no behavior change |
chore |
Maintenance, tooling, gitignore |
docs |
Documentation only |
build |
Cargo.toml, package.json changes |
test |
Adding/fixing tests |
perf |
Performance improvement |