- Python 52.1%
- Shell 47.9%
|
|
||
|---|---|---|
| .claude | ||
| .github/workflows | ||
| tests | ||
| .gitignore | ||
| install.sh | ||
| LICENSE | ||
| README.md | ||
| settings.global.json | ||
dotagents
My shared Claude Code configuration: skills, slash commands, subagents, and
hooks I reuse across projects, plus a small house style. One repo, symlinked
into the global ~/.claude so it applies everywhere.
What is in here
.claude/
CLAUDE.md global house style (short, universal rules)
skills/ on-demand capabilities and house-style specs
commands/ custom slash commands (/<name>)
agents/ custom subagents
hooks/ PreToolUse lint scripts (python3)
settings.global.json house preferences merged into ~/.claude/settings.json
install.sh link components + merge settings; also `enable-hooks`
tests/ bash tests for the hooks + a repo-wide ASCII self-lint
Global vs opt-in
- Global (always available):
skills/,commands/,agents/, and the houseCLAUDE.md. These are advisory or on-demand, so applying them everywhere is harmless. - Opt-in per project: the lint hooks. Their scripts are linked globally so
they have a stable path (
$HOME/.claude/hooks/...), but they only fire in a project whose.claude/settings.jsonactivates them. This keeps other people's repos (and ones that legitimately need unicode or different commit styles) free of the enforcement.
Install
git clone https://github.com/timcane/dotagents
cd dotagents
./install.sh
install.sh is idempotent. It:
- symlinks
skills/,commands/,agents/,hooks/, andCLAUDE.mdinto~/.claude(override the location withCLAUDE_CONFIG_DIR); - backs up anything already at those paths to
~/.claude/backups/dotagents-<ts>/before replacing it; - merges
settings.global.jsoninto~/.claude/settings.json(preserving your existing keys such asthemeandenabledPlugins).
Enable the lint hooks in a project
From inside the project you want to lint:
~/path/to/dotagents/install.sh enable-hooks
This merges the opt-in hook block into that project's .claude/settings.json,
pointing at the globally linked scripts. Re-running is safe (it will not add
duplicates).
Hooks
ascii-only-lint.py- blocks Write/Edit/MultiEdit content containing non-ASCII bytes. Pairs with theascii-onlyskill.git-message-lint.py- blocksgit commit/gh pr create|editmessages that break the house style (non-Conventional subject, over 72 chars, prose-paragraph bodies, AI attribution footer). Pairs with thecommit-styleandpr-styleskills.
House style
The global CLAUDE.md carries the short, universal defaults (Conventional
Commits, terse PR descriptions, no AI attribution footer). The detailed specs and
examples live in the commit-style, pr-style, compose-style, and ascii-only
skills. A repo's own conventions override these where they conflict; ASCII-only is
opt-in, never forced globally.
Tests
bash tests/run.sh
Runs the hook tests and the repo-wide ASCII self-lint. CI (GitHub Actions) runs the same on every push and pull request.
Credits
The grill-me skill is adapted from Matt Pocock's version; see
.claude/skills/grill-me/CREDITS.md.
License
MIT - see LICENSE.