Compare commits

...

2 Commits

Author SHA1 Message Date
Ryan Walters
1e55b4862f feat: add Claude settings symlink management
- Add claude-settings.json as source file in chezmoi repo
- Create symlink template for .claude/settings.json
- Update .chezmoiignore to prevent recursion
- Update TODO.md to track Claude configuration progress
2025-11-03 17:04:49 -06:00
Ryan Walters
e5279d9388 feat: add global Claude configuration and update Cursor settings
- Add global CLAUDE.md with comprehensive AI assistant guidelines
- Fix Cursor terminal Shift+Enter keybinding to send escape sequence
- Remove duplicate dark color theme preference in Cursor settings
2025-11-03 16:19:21 -06:00
7 changed files with 410 additions and 4 deletions

View File

@@ -18,6 +18,7 @@
- [ ] Add step-by-step first-time setup guide
- [ ] Document Doppler setup requirements
- [ ] Create quick reference card for emergency recovery
- [ ] Document proper process of adding symlinks (mention updating chemzoiignore, etc.)
### 2. Standardize Encryption & Authentication Workflow
@@ -297,4 +298,4 @@ These items were in the original TODO.md and need to be categorized/completed:
- Some items have dependencies (e.g., documentation should reflect implemented changes)
- Use `chezmoi cd` to navigate to source directory when working on configs
- Test changes in WSL/Linux before applying to Windows (or vice versa)
- Keep encrypted secrets out of git history - use age encryption or Doppler
- Keep encrypted secrets out of git history - use age encryption or Doppler

View File

@@ -1,5 +1,6 @@
hooks
tool-versions
claude-settings.json
{{/* WSL Only Files */}}
{{ if (not .wsl) }}
@@ -35,4 +36,4 @@ key.txt
Documents/
AppData/
{{ end }}
{{ end }}

View File

@@ -149,7 +149,7 @@
"key": "shift+enter",
"command": "workbench.action.terminal.sendSequence",
"args": {
"text": "\\\r\n"
"text": "\u001b\r"
},
"when": "terminalFocus"
}

View File

@@ -12,7 +12,6 @@
// Workbench Settings
"workbench.startupEditor": "none",
"workbench.tree.indent": 24,
"workbench.preferredDarkColorTheme": "Default Light Modern",
"workbench.preferredLightColorTheme": "Cursor Light",
"workbench.iconTheme": "material-icon-theme",

217
home/claude-settings.json Normal file
View File

@@ -0,0 +1,217 @@
{
"includeCoAuthoredBy": false,
"alwaysThinkingEnabled": true,
"enabledPlugins": {
"backend-development@claude-code-workflows": true,
"javascript-typescript@claude-code-workflows": true,
"security-guidance@claude-code-plugins": true,
"commit-commands@claude-code-plugins": true,
"feature-dev@claude-code-plugins": true,
"code-documentation@claude-code-workflows": true,
"debugging-toolkit@claude-code-workflows": true,
"git-pr-workflows@claude-code-workflows": true,
"full-stack-orchestration@claude-code-workflows": true,
"unit-testing@claude-code-workflows": true,
"tdd-workflows@claude-code-workflows": true,
"code-review-ai@claude-code-workflows": true,
"code-refactoring@claude-code-workflows": true,
"dependency-management@claude-code-workflows": true,
"error-debugging@claude-code-workflows": true,
"error-diagnostics@claude-code-workflows": true,
"deployment-strategies@claude-code-workflows": true,
"deployment-validation@claude-code-workflows": true,
"cicd-automation@claude-code-workflows": true,
"application-performance@claude-code-workflows": true,
"comprehensive-review@claude-code-workflows": true,
"performance-testing-review@claude-code-workflows": true,
"framework-migration@claude-code-workflows": true,
"codebase-cleanup@claude-code-workflows": true,
"database-design@claude-code-workflows": true,
"data-validation-suite@claude-code-workflows": true,
"api-scaffolding@claude-code-workflows": true,
"api-testing-observability@claude-code-workflows": true,
"documentation-generation@claude-code-workflows": true,
"game-development@claude-code-workflows": true,
"accessibility-compliance@claude-code-workflows": true,
"systems-programming@claude-code-workflows": true,
"functional-programming@claude-code-workflows": true,
"shell-scripting@claude-code-workflows": true,
"observability-monitoring@claude-code-workflows": true,
"database-cloud-optimization@claude-code-workflows": true
},
"permissions": {
"allow": [
"WebSearch",
"WebFetch(domain:github.com)",
"WebFetch(domain:raw.githubusercontent.com)",
"WebFetch(domain:gitlab.com)",
"WebFetch(domain:docs.rs)",
"WebFetch(domain:lib.rs)",
"WebFetch(domain:crates.io)",
"WebFetch(domain:npmjs.com)",
"WebFetch(domain:pypi.org)",
"WebFetch(domain:typst.app)",
"WebFetch(domain:pixijs.com)",
"WebFetch(domain:developers.cloudflare.com)",
"WebFetch(domain:aws.amazon.com)",
"WebFetch(domain:cloud.google.com)",
"WebFetch(domain:azure.microsoft.com)",
"WebFetch(domain:learn.microsoft.com)",
"WebFetch(domain:devblogs.microsoft.com)",
"WebFetch(domain:slowli.github.io)",
"mcp__context7__resolve-library-id",
"mcp__context7__get-library-docs",
"mcp__linear-server__list_issues",
"mcp__linear-server__list_issue_labels",
"mcp__linear-server__create_issue_label",
"mcp__linear-server__update_issue",
"mcp__linear-server__list_teams",
"mcp__linear-server__list_projects",
"Bash(cargo --version:*)",
"Bash(cargo build:*)",
"Bash(cargo check:*)",
"Bash(cargo clippy:*)",
"Bash(cargo test:*)",
"Bash(cargo nextest run:*)",
"Bash(cargo tree:*)",
"Bash(cargo doc:*)",
"Bash(cargo llvm-cov:*)",
"Bash(cargo add:*)",
"Bash(cargo machete:*)",
"Bash(cargo udeps:*)",
"Bash(cargo audit:*)",
"Bash(cargo deny:*)",
"Bash(cargo outdated:*)",
"Bash(rustc --version:*)",
"Bash(sccache --version:*)",
"Bash(node --version:*)",
"Bash(npm --version:*)",
"Bash(npm run:*)",
"Bash(npm audit:*)",
"Bash(pnpm --version:*)",
"Bash(pnpm run:*)",
"Bash(pnpm list:*)",
"Bash(pnpm exec:*)",
"Bash(pnpm audit:*)",
"Bash(pnpm outdated:*)",
"Bash(bun --version:*)",
"Bash(bun run:*)",
"Bash(bun:*)",
"Bash(just --version:*)",
"Bash(just:*)",
"Bash(make --version:*)",
"Bash(make run:*)",
"Bash(make build:*)",
"Bash(git --version:*)",
"Bash(git status:*)",
"Bash(git log:*)",
"Bash(git show:*)",
"Bash(git diff:*)",
"Bash(git fetch:*)",
"Bash(git add:*)",
"Bash(git commit:*)",
"Bash(git rm:*)",
"Bash(git mv:*)",
"Bash(gh --version:*)",
"Bash(gh run list:*)",
"Bash(gh run view:*)",
"Bash(gh pr list:*)",
"Bash(gh api:*)",
"Bash(docker --version:*)",
"Bash(docker ps:*)",
"Bash(docker logs:*)",
"Bash(docker inspect:*)",
"Bash(docker exec:*)",
"Bash(docker port:*)",
"Bash(docker build:*)",
"Bash(wrangler --version:*)",
"Bash(ls:*)",
"Bash(tree:*)",
"Bash(cat:*)",
"Bash(rg:*)",
"Bash(find:*)",
"Bash(mkdir:*)",
"Bash(cloc:*)",
"Bash(tokei:*)",
"Bash(curl:*)",
"Bash(netstat:*)",
"Bash(awk:*)",
"Bash(timeout:*)",
"Bash(wsl --list --verbose:*)",
"Bash(wsl dpkg:*)",
"Bash(wsl which:*)",
"Bash(wsl ps:*)",
"Bash(wsl find:*)",
"Bash(wsl ls:*)",
"Bash(wsl:*)",
"Bash(tasklist:*)",
"Bash(powershell \"Get-Process:*)",
"Bash(Select-String:*)",
"Bash(Select-Object:*)",
"Bash(findstr:*)",
"Bash(dir:*)"
],
"ask": [
"Bash(cargo uninstall:*)",
"Bash(cargo update:*)",
"Bash(npm install:*)",
"Bash(npm update:*)",
"Bash(pnpm install:*)",
"Bash(pnpm add:*)",
"Bash(pnpm remove:*)",
"Bash(pnpm uninstall:*)",
"Bash(pnpm update:*)",
"Bash(pnpm store prune:*)",
"Bash(bun install:*)",
"Bash(bun add:*)",
"Bash(bun remove:*)",
"Bash(git checkout:*)",
"Bash(git pull:*)",
"Bash(git merge:*)",
"Bash(git merge --squash:*)",
"Bash(git branch -d:*)",
"Bash(git rebase:*)",
"Bash(git push:*)",
"Bash(gh pr close:*)",
"Bash(gh issue close:*)",
"Bash(gh run cancel:*)",
"Bash(wrangler publish:*)",
"Bash(wrangler deploy:*)",
"Bash(pnpm run deploy:*)",
"Bash(pnpm run build --production:*)",
"Bash(npm run deploy:*)",
"Bash(bun run deploy:*)",
"Bash(mv:*)",
"Bash(Move-Item:*)",
"Bash(rm:*)",
"Bash(del:*)"
],
"deny": [
"Bash(git push --force:*)",
"Bash(git push -f:*)",
"Bash(git push --force-with-lease:*)",
"Bash(git reset --hard:*)",
"Bash(git branch -D:*)",
"Bash(git clean -fd:*)",
"Bash(git clean -f:*)",
"Bash(git filter-branch:*)",
"Bash(git push --delete:*)",
"Bash(git push origin --delete:*)",
"Bash(git push origin :*)",
"Bash(gh repo delete:*)",
"Bash(gh repo archive:*)",
"Bash(gh secret delete:*)",
"Bash(gh release delete:*)",
"Bash(cargo clean:*)",
"Bash(cargo yank:*)",
"Bash(cargo uninstall --all:*)",
"Bash(wrangler delete:*)",
"Bash(wrangler secret delete:*)",
"Bash(rm -rf:*)",
"Bash(rmdir /s:*)",
"Bash(rd /s:*)",
"Bash(Remove-Item -Recurse -Force:*)",
"Bash(del /s:*)"
]
}
}

187
home/dot_claude/CLAUDE.md Normal file
View File

@@ -0,0 +1,187 @@
**Note**: Project-specific CLAUDE.md files take precedence for project-specific patterns.
## Shell Environment (Windows)
- **You are in Bash on Windows** (Git Bash / MSYS2)
- ❌ Do NOT use PowerShell commands (`Get-ChildItem`, `Select-Object`, `Move-Item`)
- ❌ Do NOT use CMD commands (`dir`, `copy`, `del`)
- ✅ Use standard Bash/Unix commands (`ls`, `cp`, `mv`, `rm`, `grep`)
- Prefer relative paths for simplicity
## Build & Package Management
### General Principles
- **NEVER invoke `cargo clean`** - rarely necessary and wastes time
- **Avoid running full builds unless necessary** - prefer type checking and linting
- Run cargo build or any build commands with lots of output in 'quiet' mode, unless you require access to stacktrace/warnings/etc
- Alternatively, avoid running the command and stop the prompt there if you simply want the user to test and report back
### Dependency Management
- **Always use package manager commands** over manually editing manifest files:
- Rust: `cargo add`, `cargo remove`
- Node.js: `pnpm add`, `pnpm remove` (or npm/yarn as appropriate)
- This ensures lockfiles are updated correctly and consistently
- **Get the latest compatible version** unless there's a specific reason not to
- You can specify versions, but prefer letting the tool grab the latest
- Your knowledge cutoff means you often don't know the latest versions
### Check Commands
- Look for project-specific commands first (`just check`, `just test`, etc.)
- Always prefer project-specific check commands over raw `cargo` or `npm` commands
## Testing
### Test Organization
- **Integration/feature tests**: Place in `tests/` directory
- **Unit tests**: Place alongside the code they test directly (in same file or adjacent `tests.rs`)
- Always check project conventions before adding tests
### Running Tests
- Use project-specific test commands (e.g., `just test`) over raw `cargo test`
- Prefer `cargo nextest run` for executing tests (unless `just test` is available, regardless of what it invokes)
- Run tests after making changes to verify functionality
### Assertion Style (Rust)
When a project uses `assert2`:
- Use `assert2::assert!()` instead of `assert_eq!()`
- Use `assert2::let_assert!()` for pattern matching
- Use `assert2::check!()` for non-fatal assertions
## Code Style
### Rust
- Prefer direct imports when heavily used: `use glam::U16Vec2;` then `U16Vec2::new()`
- Prefer iterators and combinators over for loops when idiomatic
- Prefer slices (`&[T]`) for read-only parameters over `&Vec<T>`
- Use `#[inline]` for hot-path functions
### TypeScript
- **Prefer absolute imports** (`@/...`) over relative imports when available
- Not always necessary or possible - use judgment
- Clearer and easier to refactor when the pattern exists in the project
- Prefer functional programming patterns (map, filter, reduce) over for loops when idiomatic
### General Pattern
- **Write idiomatic code for the language**:
- Rust: iterators, combinators, Option/Result patterns
- TypeScript: functional patterns, modern ES6+ features
- Check existing code patterns before implementing
## Comments & Documentation
- Write comments that explain **WHY**, not **WHAT**
- **Never reference old implementations, migrations, or refactoring history**
- **Never add banner comments** (`===`, `-----`, etc.)
- Update project CLAUDE.md when making architectural decisions
- Examples of bad comments to avoid:
- "Refactored from previous version that used X approach." (never mention past implementations)
- "This function was changed to improve performance." (utterly useless, belongs in a commit message potentially, but not code!)
- "Logging removed for cleaner output." (also useless, belongs in commit message if anything)
## Git Commits
### Safety & Best Practices
- **Do NOT add co-authoring or attribution to Claude Code/AI**
- **Be very careful with commit history**:
- Avoid rewriting history unless explicitly prompted by user
- **Check if commits actually went through** when hooks fail
- **Never accidentally amend previous commits** when user meant to create new one
- If pre-commit or hooks fail, verify the commit status before retrying
- Write concise commit messages focusing on "why" rather than "what"
- If writing the first commit, assume conventional commit style unless user specifies otherwise.
- For subsequent commits, follow the project's existing commit style.
- Scale the length and detail of the commit message to the impact of the changes.
- A simple rename of a function or type may interact with many files, but it does not deserve a length message.
- A complex feature addition or refactor deserves a more detailed message explaining the reasoning. Still, keep things concise.
- Never include details like "All tests pass, 92% coverage. A few warnings."
## AI Development Workflow
### Standard Workflow
`modify code → check → test → hand off to user`
1. Make code changes
2. Run project-specific check commands
3. Run tests if applicable
4. **Hand off to user** - do NOT run dev servers or long-running processes
5. Wait for user feedback
### Codebase Exploration
- **Avoid super complex bash/sed/awk commands** when exploring
- Use existing tools (Read, Glob, Grep) to manually explore instead
- Check for existing libraries, frameworks, and code patterns before creating new utilities/APIs
### Question Tool Usage
- **Use for complex tasks and design decisions**:
- Architectural choices
- Multiple implementation approaches
- Feature design options
- Clarifying & confirming important requirements, especially vague or conflicting ones
- **Do NOT use for trivial details**:
- Variable naming
- Minor formatting choices
- **Prefer multi-select when appropriate**, single-select when mutually exclusive
- User appreciates being consulted on larger, more abstract decisions
### When NOT to Build/Run
- ❌ After type checking passes - building is unnecessary
- ❌ Dev servers (`pnpm dev`, `cargo run`, etc.)
- ❌ Long-running processes or interactive tools
- ✅ Only build when user explicitly requests or verifying build config
## Tool Usage
### Prefer Specialized Tools Over Bash
- Read tool for reading files (not `cat`, `head`, `tail`)
- Edit tool for editing files (not `sed`, `awk`)
- Write tool for creating files (not `echo >`)
- Glob tool for finding files (not `find`, `ls`)
- Grep tool for searching (not `grep`, `rg`)
- Bash ONLY for actual system commands and terminal operations
## Security & Error Handling
- Watch for security vulnerabilities: command injection, XSS, SQL injection, OWASP Top 10
- If you write insecure code, **immediately fix it**
- Validate all external inputs
- Use appropriate error types for the language
## Quick Reference
### After Making Changes
```bash
# 1. Check (find project-specific command)
just check # or equivalent
# 2. Run tests (if applicable)
just test # or equivalent
# 3. STOP - hand off to user for testing
```
### What to Avoid
- Don't run dev servers, builds, or interactive processes yourself
- Don't use complex bash pipelines when simpler tools exist
- Don't manually edit manifests when package manager commands exist
- Don't assume commits went through when hooks fail
---
**Remember**: Check for project-specific CLAUDE.md files that override these global guidelines.

View File

@@ -0,0 +1 @@
{{ .chezmoi.sourceDir }}/claude-settings.json