diff --git a/README.md b/README.md index f73d68e..995cd88 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ git clone https://git.naps.pt/yolo/agent-skills.git ~/tea/yolo/agent-skills Symlinks each skill into `~/.claude/skills/` and `~/.agents/skills/`, commands into `~/.claude/commands/`, hooks into `~/.claude/hooks/`, `claude-md/` fragments into `~/.claude/`. Idempotent; any pre-existing real dir is moved to `~/.agent-skills-backup/` (outside the discovery path, so it isn't picked up as a duplicate skill). Re-run after adding a skill. -Hooks and fragments need one manual step each: the `settings.json` snippet in `hooks/README.md`, and `@writing.md` + `@operating.md` import lines in your `~/.claude/CLAUDE.md` and `~/.codex/AGENTS.md`. Both tools support `@path`, so they import the same fragments — no copy, no drift. +Hooks still need one manual step: the `settings.json` snippet in `hooks/README.md`. Entry files are linked automatically — `entry/CLAUDE.md` and `entry/codex-AGENTS.md` hold the machine-local sections and `@import` the shared fragments, so both tools read the same rules with no copy and no drift. ### NixOS machine (home-manager) diff --git a/bin/link.sh b/bin/link.sh index 2b77a3b..6efdbb1 100755 --- a/bin/link.sh +++ b/bin/link.sh @@ -64,9 +64,12 @@ done link "$REPO/claude-md/code-comments.md" "$CLAUDE_RULES/code-comments.md" rm -f "$CLAUDE_HOME/code-comments.md" "$HOME/.agents/AGENTS.md" -# Codex reads ~/.codex/AGENTS.md and supports @path imports, same as CLAUDE.md, -# so both tools import the identical fragments — no copy, no drift. +# Entry files: machine-local sections plus @imports of the shared fragments. +# Codex supports @path the same as CLAUDE.md, so neither tool needs a copy. mkdir -p "$CODEX_HOME" +link "$REPO/entry/CLAUDE.md" "$CLAUDE_HOME/CLAUDE.md" +link "$REPO/entry/codex-AGENTS.md" "$CODEX_HOME/AGENTS.md" +rm -f "$CODEX_HOME/RTK.md" echo "done." echo "hooks still need wiring in ~/.claude/settings.json — see hooks/README.md" diff --git a/claude-md/RTK.md b/claude-md/RTK.md new file mode 100644 index 0000000..0eaf3d5 --- /dev/null +++ b/claude-md/RTK.md @@ -0,0 +1,29 @@ +# RTK - Rust Token Killer + +**Usage**: Token-optimized CLI proxy (60-90% savings on dev operations) + +## Meta Commands (always use rtk directly) + +```bash +rtk gain # Show token savings analytics +rtk gain --history # Show command usage history with savings +rtk discover # Analyze Claude Code history for missed opportunities +rtk proxy # Execute raw command without filtering (for debugging) +``` + +## Installation Verification + +```bash +rtk --version # Should show: rtk X.Y.Z +rtk gain # Should work (not "command not found") +which rtk # Verify correct binary +``` + +⚠️ **Name collision**: If `rtk gain` fails, you may have reachingforthejack/rtk (Rust Type Kit) installed instead. + +## Hook-Based Usage + +All other commands are automatically rewritten by the Claude Code hook. +Example: `git status` → `rtk git status` (transparent, 0 tokens overhead) + +Refer to CLAUDE.md for full command reference. diff --git a/claude-md/code-comments.md b/claude-md/code-comments.md index df069b4..bd70673 100644 --- a/claude-md/code-comments.md +++ b/claude-md/code-comments.md @@ -1,6 +1,6 @@ --- paths: - - "**/*.{ts,tsx,js,jsx,mjs,cjs,py,rs,go,sol,sh,bash,zsh,kt,rb,lua,zig,nix,ex,yaml,yml,toml}" + - "**/*.{ts,tsx,js,jsx,mjs,cjs,py,rs,go,sol,sh,bash,zsh,rb,lua,zig,nix,ex,yaml,yml,toml}" --- ## Code comments diff --git a/entry/CLAUDE.md b/entry/CLAUDE.md new file mode 100644 index 0000000..0a555af --- /dev/null +++ b/entry/CLAUDE.md @@ -0,0 +1,26 @@ +# Global Context + +## Environment +- Root password: `$SANDBOX_PASSWORD`, already exported from `~/.env.claude` in every shell. Use `printf '%s\n' "$SANDBOX_PASSWORD" | sudo -S `. Never echo or print the value. +- Can install packages as needed using sudo +- This machine communicates with external services — treat it as a networked environment +- **This is a VM accessed from other devices.** When starting any dev server / web service / preview, always bind to `0.0.0.0` (e.g. `vite --host 0.0.0.0`, `--host`, `HOST=0.0.0.0`) — never localhost-only — so it's reachable. Report the LAN-IP URL, not the `localhost` one. + +## Persistent Configuration +- Environment file: `~/.env.claude` (auto-loaded in shell sessions) +- For Claude sessions, source it manually if needed: `source ~/.env.claude` + +@~/.claude/writing.md + +@~/.claude/operating.md + +## Crit reviews +- **`crit live` / `crit preview` write comments to a local review FILE, not an API** — there is NO notification and `crit fetch` does NOT apply (it needs a prior `crit share`). `/api/comments` on the daemon is the WRONG place (stays `[]`). If I launched the crit server myself, I must poll the review file myself. +- **Whenever I start a `crit live`/`crit preview` review for the user, immediately arm the watcher so they don't have to babysit it:** + `~/.claude/scripts/crit-watch.sh` — run it via the Bash tool with `run_in_background: true`. It auto-finds the active live/preview review file (`~/.crit/reviews//review.json`), baselines existing comment IDs, and re-invokes me with any NEW comments once they settle. When it fires: read the comments, address them, **reply to each via `crit comment --reply-to `**, then re-arm the watcher. Keep doing this until the user says they're done. +- Review file shape: comments live under `.files[""].comments[]` (each has `id`, `body`, `dom_anchor.outer_html`, `pin_number`). `crit status` prints the file path + unresolved count. Note multiple review files can exist (one per `crit` invocation); the watcher picks the most-recently-updated live/preview one. +- `crit live ` serves TWO ports: the app proxy (target port + 1, e.g. `:41701`) with crit's overlay injected, and the review dashboard at `:/live` (e.g. `:41700/live`) which also renders the proxied app. The user comments on the `/live` dashboard (highlight an element, press `t`). +- crit injects `