Enable three new notifiers for the chat-box project: - methodology-reminder: context-sensitive TDD/Type-Driven/SOLID prompts by file type - memory-reminder: prompts knowledge graph updates on significant file changes - commit-reminder: reminds to log decisions before git commits 💘 Generated with Crush Assisted-by: Crush:deepseek-v4-flash |
||
|---|---|---|
| .githooks | ||
| .memory | ||
| hooks@d0675d0282 | ||
| skills@7d58b51bb9 | ||
| .env.example | ||
| .gitattributes | ||
| .gitignore | ||
| .gitmodules | ||
| AGENTS.md | ||
| CHANGELOG.md | ||
| crush-config-info.md | ||
| crush.linux.json | ||
| crush.termux.json | ||
| crush.windows.json | ||
| notifications.json | ||
| opencode.linux.json | ||
| opencode.windows.json | ||
| README.md | ||
| setup-termux.sh | ||
| setup.ps1 | ||
| setup.sh | ||
| tui.json | ||
Crush Global Configuration
Centralized Crush config with versioned skills, hooks, platform-specific configs (symlinked), and tooling for Windows and Linux.
Structure
crush-config/
├── crush.json # Local symlink → crush.windows.json or crush.linux.json (not tracked)
├── crush.windows.json # Windows config — edit this on Windows
├── crush.linux.json # Linux config — edit this on Linux
├── AGENTS.md # Full documentation for AI agents
├── .gitattributes # Forces LF line endings for .sh files (Windows compat)
├── .githooks/
│ └── pre-commit # Git hook: verifies crush.json is a symlink
├── .gitignore
├── .gitmodules
├── .env # (gitignored) — DEEPSEEK_API_KEY and other secrets
├── .memory/ # Memory MCP server persistence
├── setup.ps1 # Windows bootstrap
├── setup.sh # Linux bootstrap
├── hooks/ # Submodule → forge.redwizard.party/RedWizard/custom-hooks
│ ├── .gitattributes # LF line endings for .sh files
│ ├── rtk-rewrite.sh # PreToolUse: rewrites bash via rtk (token savings)
│ ├── no-rm-rf.sh # PreToolUse: blocks destructive rm with git backup info
│ ├── commit-reminder.sh # PreToolUse: reminds agent to commit crush.json
│ ├── forgejo-push-reminder.sh# PreToolUse: retry advice on git push flake
│ ├── submodule-watch.sh # PreToolUse: submodule commit workflow reminder
│ └── skill-context-injector.sh# PreToolUse: injects context when loading crush-config skill
└── skills/ # Submodule → forge.redwizard.party/RedWizard/custom-skills
└── skills/
└── standard-ebooks/ # Standard Ebooks production workflow
Initial Setup on a New Machine
Prerequisites
- Git
- Crush installed
DEEPSEEK_API_KEYenv var set (create a.envfile from.env.exampleor set it directly)
Windows
git clone --recurse-submodules https://forge.redwizard.party/RedWizard/crush-config.git C:\crush-config
cd C:\crush-config
.\setup.ps1
Linux
sudo mkdir -p /opt/crush-config
sudo chown $(whoami):$(id -gn) /opt/crush-config
git clone --recurse-submodules https://forge.redwizard.party/RedWizard/crush-config.git /opt/crush-config
cd /opt/crush-config && chmod +x setup.sh && ./setup.sh
Restart your terminal. Crush now reads from this config.
If you already cloned without --recurse-submodules
git submodule update --init --recursive
Platform-Specific Configs
| File | Target | CRUSH_GLOBAL_CONFIG value | Symlink |
|---|---|---|---|
crush.windows.json |
Windows | C:\crush-config\crush.windows.json |
crush.json → crush.windows.json |
crush.linux.json |
Linux | /opt/crush-config/crush.linux.json |
crush.json → crush.linux.json |
crush.json is a local symlink — it points to the current platform's config file. Platform configs are maintained independently so they can diverge as needed. When you edit crush.json through Crush, you're transparently editing the platform file for your OS. Only commit the platform file for your operating system (e.g., crush.windows.json on Windows).
Git Hooks
Pre-commit (./.githooks/pre-commit)
Verifies that crush.json is a symlink (not a regular file). Warns if crush.json is a regular file. Does not sync or transform configs — platform files are maintained independently.
Crush PreToolUse Hooks
Six hooks run inside Crush before tool calls. They live in the hooks/ submodule:
| Hook | Trigger | Purpose |
|---|---|---|
rtk-rewrite.sh |
bash |
Rewrites commands via rtk rewrite for token savings |
no-rm-rf.sh |
bash |
Blocks destructive rm commands with git backup info |
commit-reminder.sh |
edit|write |
Reminds to update CHANGELOG.md/README.md, then commit+push — fires for any file in main repo or submodules |
forgejo-push-reminder.sh |
bash |
Advises retry on git push auth flake |
submodule-watch.sh |
edit|write |
Reminds agent to commit/push submodule changes |
skill-context-injector.sh |
view |
When loading the crush-config skill, injects pointers to AGENTS.md, README.md, CHANGELOG.md |
All hooks use Crush's exit-code protocol — they never block, only inject context or rewrite input.
Line Ending Strategy
Windows Git with core.autocrlf=true converts LF→CRLF on checkout, which breaks bash scripts. The .gitattributes files (superproject and hooks submodule) force *.sh text eol=lf to prevent this.
Updating Submodules
# Pull latest from all submodules
git submodule update --remote --merge
# Commit the updated submodule pointers
git add skills hooks
git commit -m "Update submodules to latest"
Agent Workflow (for AI Agents)
Whenever the platform config is modified, the agent MUST commit and push before concluding:
git add crush.windows.json # or crush.linux.json
# Also update CHANGELOG.md and README.md if needed
git commit -m "description of change"
git push
Never stage crush.json — it's a local symlink, not tracked in git.
The pre-commit hook only verifies the symlink exists; no auto-generation happens.