diff --git a/stow-packages/claude/.claude/CLAUDE.md b/stow-packages/claude/.claude/CLAUDE.md new file mode 100644 index 0000000..cd0d67c --- /dev/null +++ b/stow-packages/claude/.claude/CLAUDE.md @@ -0,0 +1,20 @@ +Only use TypeScript, never plain JavaScript unless specifically requested or required. + +Whenever you are tempted to say "You're absolutely right", instead say "Bleep blorp". + +To run a shell command that requires a secret injected in an env var, run the command with the `op +run --env-file=$HOME/.env.op --` prefix. For example, run `op run --env-file=$HOME/.env.op -- +some-foo command` to have secret env vars injected. This will blockingly prompt the user for +approval, so only do this when absolutely needed. + +In the shell environment, you have access to `jq`, `ag`, `rg`. + +Never commit or push any changes to git unless explicitly requested. + +Keep code comments terse (1–2 lines) and focused on the why or the non-obvious — the rationale for a +choice, a gotcha, or the failure mode the code guards against. Never restate what the code already +shows; if the reader could get it from the code, delete it. Match the surrounding file's comment +density. + +In writing, avoid LLM-isms and excessive verbosity. Be concise, precise, and clear. Avoid excessive +em-dashes. diff --git a/stow-packages/claude/.claude/settings.json b/stow-packages/claude/.claude/settings.json new file mode 100644 index 0000000..ec6351b --- /dev/null +++ b/stow-packages/claude/.claude/settings.json @@ -0,0 +1,99 @@ +{ + "env": { + "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "true" + }, + "attribution": { + "commit": "" + }, + "permissions": { + "allow": [ + "Bash(git status *)", + "Bash(git log *)", + "Bash(git diff *)", + "Bash(git show *)", + "Bash(git merge-base *)", + "Bash(git diff-tree *)", + "Bash(git --no-pager show *)", + "Bash(git --no-pager diff *)", + "Bash(git --no-pager log *)", + "Bash(git rev-parse *)", + "Bash(git ls-files *)", + "Bash(git fetch)", + "Bash(git fetch origin)", + "Bash(ls *)", + "Bash(cat *)", + "Bash(head *)", + "Bash(tail *)", + "Bash(wc *)", + "Bash(readlink *)", + "Bash(file *)", + "Bash(grep *)", + "Bash(rg *)", + "Bash(ag *)", + "Bash(node -v)", + "Bash(npm -v)", + "Bash(npm ls *)", + "Bash(npm view *)", + "Bash(npm audit)", + "Bash(npm explain *)", + "Bash(pnpm ls *)", + "Bash(npm run typecheck)", + "Bash(npx tsc --noEmit)", + "Bash(npx eslint *)", + "Bash(npx oxlint *)", + "Bash(bundle exec rubocop *)", + "Bash(npm run test*)", + "Bash(npm exec vitest *)", + "Bash(npx vitest run *)", + "Bash(npx jest *)", + "Bash(yarn jest *)", + "Bash(pnpm test*)", + "Bash(go test *)", + "Bash(make test/*)", + "Bash(npm run build*)", + "Bash(npx vite build*)", + "Bash(pnpm build*)", + "Bash(yarn build*)", + "Bash(go build *)", + "Bash(gh pr view *)", + "Bash(gh pr diff *)", + "Bash(gh pr list *)", + "Bash(gh pr checks *)", + "Bash(gh issue view *)", + "Bash(gh repo view *)", + "Bash(snow sql *)", + "Bash(echo *)", + "Bash(jq *)", + "Bash(go vet *)", + "Bash(go doc *)", + "Bash(coderabbit review *)", + "Bash(coderabbit --version)", + "mcp__claude_ai_Linear__get_issue", + "mcp__claude_ai_Linear__list_issues", + "mcp__claude_ai_Linear__list_comments", + "mcp__claude_ai_Notion__notion-fetch" + ], + "deny": [] + }, + "model": "opus[1m]", + "enabledPlugins": { + "github@claude-plugins-official": true, + "skill-creator@claude-plugins-official": true, + "ruby-lsp@claude-plugins-official": true, + "coderabbit@claude-plugins-official": true, + "rust-analyzer-lsp@claude-plugins-official": true, + "frontend-design@claude-plugins-official": true, + "playwright@claude-plugins-official": true + }, + "alwaysThinkingEnabled": true, + "tui": "fullscreen", + "voice": { + "enabled": false, + "mode": "hold" + }, + "skipDangerousModePermissionPrompt": true, + "skipWorkflowUsageWarning": true, + "inputNeededNotifEnabled": true, + "agentPushNotifEnabled": true, + "voiceEnabled": false +}