@.wolf/OPENWOLF.md
This project uses OpenWolf for context management. Read and follow .wolf/OPENWOLF.md every session. Check .wolf/cerebrum.md before generating code. Check .wolf/anatomy.md before reading files.
Targeted instructions for Claude. The full codebase guide lives in AGENTS.md — read that first.
- No signature lines. Don't append
Co-Authored-By: Claude ...or any AI attribution. - No emoji. Don't include emoji in commit messages.
- Conventional Commits:
<type>(<scope>): <subject>- Types allowed (from
commitlint.config.js):feat, fix, docs, style, design, refactor, perf, test, build, ci, chore, revert - Subject ≤ 50 chars when possible (hard cap 100)
- Body explains why the change exists, not what the diff says
- Imperative mood: "add cart sheet" not "added cart sheet"
- Types allowed (from
Example:
feat(pay): add Instapay receiver hint with copy button
Egyptian buyers expect a one-tap receiver number. The hint zone
appears only when Instapay/Vodafone Cash is selected, surfaces
the canonical number, and offers tel: + clipboard so users never
type the digits.
.husky/pre-commitrunspnpm lint && pnpm format:check && pnpm type-check. Fix the underlying issue, never bypass. Don't use--no-verify..husky/pre-pushrunspnpm build. If it fails, fix the build, don't skip.
- Don't run
pnpm devin the same shell as plan/exploration tasks — it blocks the session. - Use
run_in_background: truefor long commands (install, build) and continue with other work; the runtime notifies on completion.
Workspace dir must not contain apostrophes. Next.js 15 metadata-route loader injects the absolute path into a single-quoted JS string and chokes on '. Folder is Torky Store Mens (no apostrophe). Brand name in copy/SEO is still Torky Store Men's.
- Every user-visible string belongs in
src/data/index.tsconstants object. If you type a literal in JSX, move it. - Keep object keys alphabetically sorted (oxlint
sort-keys: error).
- Service role key never reaches the browser. Always use
createServiceRoleSupabaseClientHandlerserver-side only (route handlers). - After any schema change, regenerate types via Supabase MCP
generate_typescript_typesand paste intosrc/lib/supabase/types.ts. - Migrations apply via MCP
apply_migration. Never edit production data directly.
Match the project's Arabic Egyptian register where copy is concerned. No formal MSA stiffness, no over-friendly mall talk. Short imperatives.