migrate claud config

This commit is contained in:
Barrett Ruth 2026-02-11 12:01:49 -05:00
parent b3e4519dd2
commit c9c6a95077
Signed by: barrett
GPG key ID: A6C96C9349D2FC81
6 changed files with 217 additions and 0 deletions

32
config/claude/CLAUDE.md Normal file
View file

@ -0,0 +1,32 @@
# Global Claude Code User Preferences
Never, under any circumstances, generate code containing new, non-preexisting comments.
Never, under any circumstances, respond with excerpts of code with no
explanation unless explicitly specified.
Never, under any circumstances, create commits, stage files, or create pull
requests unless explicitly specified.
If given express permission to use git, NEVER sign yourself as a contributor OR mention yourself in the PR.
If given express permission to use git, NEVER push to a main/master branch.
If given express permission to use git, NEVER commit ai-related files (e.g. CLAUDE.md).
If given express permission to use git, ALWAYS use this commit message format:
type(scope): imperative summary
- Valid types: `feat` `fix` `docs` `refactor` `perf` `test` `ci` `build` `revert`
- Scope is optional, lowercase. Subject: lowercase after colon, no trailing period, max 72 chars.
- Body required for non-trivial commits, using `Problem:` / `Solution:` format.
- One logical change per commit. Refactors, formatting, and features must be separate commits.
If given express permission to use git, ALWAYS check for a PR template at
`.github/pull_request_template.md` and follow it. If none exists, use
Problem/Solution format as described in `~/.config/claude/rules/git.md`.
Never, under any circumstances, assume or fabricate APIs for
unknown/lesser-known services and APIs, such as NeoVim, NixOS, or other obscure
packages-always do your research first.

View file

@ -0,0 +1,85 @@
# Git Workflow Rules
## Commit Message Format
```
type(scope): imperative summary
Problem: describe the issue or motivation
Solution: describe what this commit does
```
### Header
- **type** (required): `feat` `fix` `docs` `refactor` `perf` `test` `ci` `build` `revert`
- **scope** (optional): lowercase module/area name, e.g. `feat(parser):`
- **summary**: imperative mood, lowercase after colon, no trailing period, max 72 chars
### Body
Required for any non-trivial change. Use `Problem:` / `Solution:` sections.
Wrap at 72 characters. Separate from header with a blank line.
### Examples
Good:
```
fix(lsp): correct off-by-one in diagnostic range
Problem: diagnostics highlighted one character past the actual error,
causing confusion when multiple diagnostics appeared on adjacent tokens.
Solution: subtract 1 from the end column returned by the language server
before converting to 0-indexed nvim columns.
```
```
refactor: extract repeated buffer lookup into helper
```
Bad:
```
Fixed stuff # not imperative, vague
feat: Add Feature. # uppercase after colon, trailing period
fix(lsp): correct off-by-one in diagnostic range and also refactor the
entire highlight module and add new tests # multiple concerns
```
## Branch Naming
```
type/short-description
```
Examples: `fix/diagnostic-range`, `feat/code-actions`, `refactor/highlight-module`
## PR Body Format
If the repo has `.github/pull_request_template.md`, follow that template exactly.
If no template exists, fall back to:
```
## Problem
<why this change is needed>
## Solution
<what the change does>
```
Either way, write in plain prose. No bullet-point walls, no AI-style markdown
headings beyond what the template calls for. Keep it concise and human.
## Decomposition Rules
- One logical change per commit.
- Refactors go in their own commit before the feature that depends on them.
- Formatting/style changes are never mixed with behavioral changes.
- Test-only commits are fine when adding coverage for existing code.
- If a PR has more than ~3 commits, consider whether it should be split into
separate PRs.

View file

@ -0,0 +1,43 @@
# /commit
Create a conventional commit from staged or unstaged changes.
## Instructions
1. Run exactly this one Bash command:
```
git status --short && echo "---DIFF---" && git diff --cached && echo "---LOG---" && git log --oneline -5
```
2. If the diff section is empty (nothing staged), ask the user which files to
stage from the status list. Then run exactly one Bash command:
```
git add <files> && git diff --cached
```
Do NOT re-run status or log — you already have them.
3. Draft the commit message. Rules:
- Header: `type(scope): imperative summary` — max 72 chars, lowercase after
colon, no trailing period.
- Valid types: `feat` `fix` `docs` `refactor` `perf` `test` `ci` `build` `revert`
- Scope is optional, lowercase.
- Non-trivial changes require a body with `Problem:` / `Solution:` sections,
wrapped at 72 chars, separated from header by a blank line.
- Trivial one-liners: header alone is fine.
- Match the style of the recent commits from step 1.
4. Present the full message and ask for approval.
5. After approval, run exactly one Bash command:
```
git commit -m "$(cat <<'EOF'
<message here>
EOF
)"
```
Total: 2 Bash calls (gather + commit), or 3 if staging was needed. Do not run
any other commands. Do not read files, explore code, or run additional git
commands beyond what is listed above.
Never amend. Never sign as co-author. Never push.

View file

@ -0,0 +1,44 @@
# /pr
Create a pull request from the current branch.
## Instructions
1. Run exactly this one Bash command:
```
echo "---BRANCH---" && git branch --show-current && echo "---LOG---" && git log --oneline main..HEAD && echo "---STAT---" && git diff main...HEAD --stat && echo "---TEMPLATE---" && cat .github/pull_request_template.md 2>/dev/null || true
```
If the branch is `main` or `master`, tell the user and stop.
2. Draft the PR using the commit log and diffstat (do NOT run `git diff` for the
full diff — you already have conversation context from the work you did):
- **Title**: `type(scope): imperative summary`, max 72 chars. For
single-commit PRs, reuse the commit header. For multi-commit, summarize.
- **Body**: if a PR template was found in step 1, fill it in. Otherwise:
```
## Problem
<why this change is needed>
## Solution
<what the change does>
```
- Write in plain prose. No bullet walls, no AI markdown soup.
3. Present the title and body. Ask for approval.
4. After approval, run exactly one Bash command (push + create chained):
```
git push -u origin <branch> && gh pr create --title "<title>" --body "$(cat <<'EOF'
<body here>
EOF
)"
```
Print the PR URL from the output.
Total: 2 Bash calls (gather + push/create). Do not run any other commands. Do
not read files, explore code, or run additional git commands beyond what is
listed above.
Never force-push, even with lease. Never target main/master as the head branch.

View file

@ -7,6 +7,7 @@ return {
cmd = { 'Git', 'G', 'Gread', 'Gwrite', 'Gdiffsplit', 'Gvdiffsplit' },
},
{
dir = '~/dev/diffs.nvim',
'barrettruth/diffs.nvim',
init = function()
vim.g.diffs = {