Skip to content

Add project memory (CLAUDE.md + imported .claude/memory/MEMORY.md) - #22

Open
CallumHoward wants to merge 2 commits into
mainfrom
claude/project-memory
Open

CallumHoward wants to merge 2 commits into
mainfrom
claude/project-memory

Conversation

@CallumHoward

@CallumHoward CallumHoward commented Jun 8, 2026 •

Copy link
Copy Markdown
Owner

Adds committed Claude Code project memory.

  • CLAUDE.md (root, auto-loaded): pnpm-only policy, oxc toolchain and command table, enforced TS/filename conventions, working agreements.
  • .claude/rules/conventions.md: decision log so agents don't re-litigate choices (oxc migration, oxlint jsPlugins gotchas, filename-rule hybrid, accepted check-file lint-perf cost, Stylelint/Tailwind, Fallow, CI/hooks). Rules without paths: frontmatter auto-load.
  • .gitignore: un-ignore .claude/rules/.

This uses CLAUDE.md plus .claude/rules/ rather than .claude/memory/MEMORY.md, because that path belongs to Claude Code's machine-local auto memory, not committed files.

Before merging

The content predates #78, #82 and #85 and needs a refresh: typechecking is now tsc (TypeScript 7 via @typescript/native, with typescript aliased to @typescript/typescript6), and the React Compiler rules now come from native oxlint react/*, with react-hooks-js only for unported rules. The React Compiler itself now builds via oxc-transform-react instead of Babel.

.claude/** is in oxfmt ignorePatterns; CLAUDE.md passes format:check.

https://claude.ai/code/session_01Jw19mDiCUF334Q4Srmr3Ce

Persistent Claude Code project memory capturing the toolchain and conventions:

- CLAUDE.md (root, auto-loaded): pnpm-only policy, oxc toolchain + commands,
  the enforced filename/TS conventions, and working agreements. @imports the
  detailed memory.
- .claude/memory/MEMORY.md: the rationale/decisions log (oxc migration, oxlint
  jsPlugins gotchas, filename-rule hybrid, the accepted check-file lint-perf
  trade-off, stylelint/Tailwind specifics, Fallow setup, CI/hooks).
- .gitignore: un-ignore .claude/memory/ so it's committed.

Note: .claude/memory/MEMORY.md is auto-loaded only because CLAUDE.md @imports
it (that path otherwise refers to Claude Code's machine-local auto-memory, not
a committed location). .claude/** stays in oxfmt ignorePatterns so the memory
file isn't reformatted.

https://claude.ai/code/session_01Jw19mDiCUF334Q4Srmr3Ce
The .claude/memory/MEMORY.md path is reserved for Claude Code's machine-local
auto-memory (Claude-maintained, not committed) — committing a hand-authored
file there was a deviation, and it only loaded via an @import.

Switch to the officially recommended committed-memory structure: CLAUDE.md
(root, auto-loaded, the de-facto root — manual memory has no index file) plus
.claude/rules/ (rules without paths: frontmatter auto-load at startup). No
@import needed.

- Move .claude/memory/MEMORY.md -> .claude/rules/conventions.md
- CLAUDE.md: drop the @import; point to .claude/rules/
- .gitignore: un-ignore .claude/rules/ instead of .claude/memory/

https://claude.ai/code/session_01Jw19mDiCUF334Q4Srmr3Ce
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants