This file guides Claude's automated PR reviews. It supplements the project conventions in CLAUDE.md.
- New IPC channels are defined in
src/shared/ipcChannels.tswith proper types - Main process modules follow the
init()+setupIPC()pattern - React components use shadcn/ui primitives, not raw HTML elements for interactive UI
- Theme tokens used for colors (
bg-primary,text-secondary,border-subtle) — no hardcoded hex/zinc/slate - Zustand stores for global state, TanStack Query hooks for IPC data fetching
- Framer Motion for animations, not raw CSS transitions (unless trivial)
- TypeScript strict mode compliance — no
anytypes without justification - Keyboard shortcuts registered in
src/renderer/lib/shortcuts.ts(single source of truth) npm run checkquality gates (typecheck + lint + test) should pass
- IPC flow:
ipcChannels.tstype → main manager handler →useIpcQuery/useIpcMutationhook - Manager modules:
init()called frommain/index.ts,setupIPC()for channel handlers - Components in
src/renderer/components/, hooks insrc/renderer/hooks/ - Tailwind CSS v4 with theme variables from
src/renderer/styles/globals.css - Conventional Commits in PR title (
feat:,fix:,docs:,refactor:,chore:)
- Minor naming style differences (camelCase vs descriptive — both are fine)
- Comment density — don't require comments on self-evident code
- Test coverage — we don't have coverage thresholds yet
- Formatting — handled by tooling
- Generated files:
.subframe/STRUCTURE.json,.subframe/tasks.json - Lock files:
package-lock.json - Build output:
release/,dist/,out/ - Documentation-only changes to
*.mdfiles (still check for accuracy, but don't block)
When reviewing feature additions, consider:
- Does this enhance the terminal-centric IDE experience?
- Does it work with Claude Code's native features (not replace them)?
- Is it scoped appropriately (not over-engineered)?
- Would it make sense to SubFrame's target users (developers using AI coding tools)?