aboutsummaryrefslogtreecommitdiff
path: root/.claude
Commit message (Collapse)AuthorAgeFilesLines
* chore(claude): add patterns-catalog pointer rule from bundleCraig Jennings72 min.1-0/+29
| | | | Synced into .claude/rules/ by the startup language-bundle drift check. Points at the rulesets pattern catalog for interaction-design decisions.
* docs(rules): record auth-source credential cache in live-reload caveatsCraig Jennings4 days1-0/+1
| | | | Updating authinfo.gpg in a running daemon does nothing until auth-source-forget-all-cached clears its two-hour result cache. I added the symptom, cause, and fix to the running-Emacs caveats so the next session reaches for the cache clear instead of re-diagnosing a "key not set" error.
* chore(claude): sync bundle rules and add coverage-summary scriptCraig Jennings5 days3-0/+188
|
* chore(claude): sync rules and hooks with the rulesets bundleCraig Jennings10 days3-0/+60
| | | | Bring .claude/hooks/validate-el.sh and .claude/rules/interaction.md back in line with the shared bundle, and add the new keybinding-display.md rule.
* chore: sync bundled claude rules and git hooksCraig Jennings11 days9-7/+567
| | | | Routine sync of the .claude/rules and git hooks distributed with the language bundle. Adds the cross-project, emacs, interaction, todo-format, triggers, and working-files rules; refreshes the elisp and elisp-testing rules, the elisp validation hook, and the pre-commit hook.
* build: add make benchmark target and skip :perf tests by defaultCraig Jennings2026-05-121-1/+1
| | | | | | `make test', `make coverage', and the editor's PostToolUse test runner all selected `(not (tag :slow))', which let the now-`:perf'-tagged benchmark suite run alongside the unit tests. Each of those three filters now also excludes `:perf', and a new `make benchmark' target runs the benchmark file on its own. `make test-file' and `make test-name' keep their old filters so the suite stays reachable for ad-hoc runs. `COVERAGE_EXCLUDE' loses `test-lorem-optimum-benchmark.el'. The tag filter handles it now, so the only entry left is `test-all-comp-errors.el', which byte-compiles modules and can't run under undercover's instrumentation.
* chore(hooks): eval load-prefer-newer before byte-compile and test runsCraig Jennings2026-05-111-1/+5
| | | | The validate-el.sh hook loaded stale `.elc` files when the matching `.el` was newer (e.g. after a sed-driven rename where the byte-compile hook never fires). `make test` already sets this. The hook didn't, so I added `(setq load-prefer-newer t)` to all three emacs invocations: the parens check, the byte-compile, and the test run.
* chore(hooks): drop PROJECT_ROOT guard from validate-el.shCraig Jennings2026-05-091-7/+0
| | | | The PROJECT_ROOT guard skipped any .el file outside the project on the theory that out-of-tree files are owned by their own project's hooks. In practice, when I edit an .el file in another repo from a Claude session in this one, the other project often doesn't have its own hook running, so the file was getting no validation at all. I dropped the guard so any .el file edited from a Claude session here gets validated, regardless of which repo it lives in.
* chore: symlink claude rules to rulesets canonicalCraig Jennings2026-05-074-385/+4
| | | | | | The .claude/rules/ files (commits.md, testing.md, verification.md) were local copies that drifted from the canonical at ~/code/rulesets. I replaced them with absolute symlinks pointing at the canonical files. This repo now picks up rule updates automatically. The symlinks are absolute. Cloning this repo on a new machine needs ~/code/rulesets at the same path. Otherwise the symlinks dangle.
* chore(hooks): skip out-of-tree .el files in validate-el.shCraig Jennings2026-04-291-0/+7
| | | | This PostToolUse hook validates .el edits via check-parens and byte-compile-file. It was firing on edits to files outside the project root too, which meant byte-compiling without the foreign package's load-path set up and leaving .elc droppings in the wrong tree. Added a four-line PROJECT_ROOT guard so out-of-tree files exit silently.
* chore: sync validate-el.sh JSON channel + pairwise rule from rulesetsCraig Jennings2026-04-192-9/+44
|
* chore: sync testing rules — pyramid, overmocking, ↵Craig Jennings2026-04-192-0/+130
| | | | refactor-for-testability, interactive/internal split
* chore: sync elisp-testing.md (testutil pattern generalized)Craig Jennings2026-04-191-3/+3
|
* chore: sync bundle — add commits.md rule, attribution suppressionCraig Jennings2026-04-192-0/+70
| | | | | | | | | Picks up upstream bundle changes: - New .claude/rules/commits.md: no AI attribution, conventional prefixes. - settings.json: attribution.commit and attribution.pr empty strings (suppresses Claude Code default attribution). - CLAUDE.md: Git Workflow references commits.md instead of the (gitignored) docs/protocols.org.
* chore: sync .claude/ bundle — package-initialize, flat-layout, generic testingCraig Jennings2026-04-193-4/+168
| | | | | | | | | | | | | | | | Re-installed the elisp ruleset from ~/code/rulesets, picking up three upstream bundle fixes: - validate-el.sh now calls (package-initialize) so byte-compile can resolve external packages (dash, etc.) via ~/.emacs.d/elpa/. - validate-el.sh Phase 2 (test runner) now matches any .el file outside tests/, not just modules/*.el. Supports flat-layout projects (Elisp package repos where sources live at project root). - .claude/rules/testing.md is now generic TDD principles (was Python/TS specific); language-specific testing rules live in elisp-testing.md, python-testing.md, etc. elisp-testing.md gained a line referencing testing.md as the base.
* chore: track CLAUDE.md and .claude/ bundle, narrow gitignoreCraig Jennings2026-04-195-0/+344
| | | | | | | | | | | | | | | | | | | | Swap blanket /CLAUDE.md + /.claude/ gitignore rules for personal-only overrides (.claude/settings.local.json, .claude/.cache/). Add the tracked bundle content from ~/code/rulesets install-elisp: - CLAUDE.md (project instructions) - .claude/rules/elisp.md - .claude/rules/elisp-testing.md - .claude/rules/verification.md - .claude/hooks/validate-el.sh (portable via $CLAUDE_PROJECT_DIR) - .claude/settings.json (allowlist + hook wiring) Hooks now use $CLAUDE_PROJECT_DIR with script-relative fallback, so a fresh clone of this repo works on any machine without path edits. Project-local skills under .claude/skills/ were stale DeepSat-flavored copies; deleted and replaced with symlinks into ~/.claude/skills/ via the rulesets repo's global install.
* chore: Move .claude folder to .gitignoreCraig Jennings2025-11-061-25/+0
| | | | | | | | | | | | Removed .claude/ from version control to keep personal Claude Code configuration and custom commands private. The folder remains on disk but is no longer tracked by git. Files removed from tracking: - .claude/commands/wrap-it-up.md (custom command) - .claude/settings.local.json (local settings) The .claude/ folder still exists locally but is now gitignored.
* feat: Add /wrap-it-up slash command and phrase recognitionCraig Jennings2025-11-031-0/+25
Created comprehensive session wrap-up workflow triggered by: - Slash command: /wrap-it-up - Phrases: "let's wrap it up", "that's a wrap", "let's call it a wrap" Workflow: 1. Write session notes to docs/NOTES.org (decisions, work, context) 2. Git commit and push all changes to all remotes 3. Friendly goodbye summary with accomplishments and reminders Added dual documentation: - .claude/commands/wrap-it-up.md for explicit /wrap-it-up command - docs/NOTES.org terminology section for phrase recognition Makes session endings consistent and ensures no work is lost.