diff --git a/CLAUDE.md b/CLAUDE.md index a0cd478f..d84de75f 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -261,7 +261,7 @@ When changing a crate's public API (new types, new trait impls, new public metho The `toolpath-cli` shim lives **outside** the workspace (`exclude = ["crates/toolpath-cli"]` in the root `Cargo.toml`). Both `toolpath-cli` and `path-cli` produce a binary literally named `path`, and cargo can't write two bin targets to the same workspace `target/debug/path` — so the shim opts out and gets its own `crates/toolpath-cli/target/` (covered by the `crates/*/target` line in `.gitignore`). Practical consequences: `cargo build --workspace`, `cargo test --workspace`, and `cargo run -p toolpath-cli` from the repo root **do not** include the shim. To touch it, use `--manifest-path crates/toolpath-cli/Cargo.toml`. The release script special-cases the shim in `get_version` and `publish` so the workflow is otherwise unchanged. -Build the site after changes: `cd site && pnpm run build` (should produce 11 pages). +Build the site after changes: `cd site && pnpm run build` (should produce 12 pages). ## Things to know diff --git a/site/_includes/base.njk b/site/_includes/base.njk index db00d536..2287dc5f 100644 --- a/site/_includes/base.njk +++ b/site/_includes/base.njk @@ -70,6 +70,7 @@ RFC Crates CLI + Plugin Visualizer FAQ GitHub diff --git a/site/css/style.css b/site/css/style.css index ee3a75af..edcd8793 100644 --- a/site/css/style.css +++ b/site/css/style.css @@ -579,6 +579,53 @@ } } + /* Code spans in headings keep their literal case (slash commands) and + drop the inline-chip background. */ + h1 code, + h2 code, + h3 code { + text-transform: none; + background: none; + padding: 0; + } + + /* --- Plugin page Q&A transcript --- */ + .qa { + font-family: var(--font); + background: var(--bg-surface); + border-left: 3px solid var(--accent); + padding: var(--space-md) 1.25rem; + margin: 1.25rem 0; + } + .qa-q { + font-size: 0.85rem; + font-weight: 600; + color: var(--accent); + margin: 0; + padding-left: 1.4em; + text-indent: -1.4em; + } + .qa-q::before { + content: "> "; + color: var(--text-dim); + } + .qa-a p { + font-size: 0.8rem; + line-height: 1.7; + margin: 0.75rem 0 0; + padding-left: 1.4em; + } + .qa-a p:first-of-type { + text-indent: -1.4em; + } + .qa-a p:first-of-type::before { + content: "⏺ "; + color: var(--accent); + } + .qa-a code { + background: var(--bg-elevated); + } + /* --- Topographic divider --- */ .divider { background: repeating-linear-gradient( diff --git a/site/pages/plugin.md b/site/pages/plugin.md new file mode 100644 index 00000000..cc89188c --- /dev/null +++ b/site/pages/plugin.md @@ -0,0 +1,170 @@ +--- +layout: base.njk +title: Plugin +nav: plugin +permalink: /plugin/ +--- + +# Claude Code Plugin + +## Quick start + +``` +/plugin marketplace add empathic/toolpath +/plugin install path@toolpath +``` + +## `/path:query` — ask your session history anything + +Your session history is sitting on your disk, but all the insights are +obfuscated behind an undocumented format that constantly churns and was +never meant to be read. `/path:query` ingests your sessions into the +stable [Toolpath format](/format/), and plain-English questions become +jq filters over the cache: computed, repeatable answers for a few +kilobytes of context, whatever harness they came from. + +
+

/path:query what did i work on last week?

+
+ +Most of last week went to the **payments service**: migrating off the +legacy webhook handler (Tue–Thu, 640 steps) and two short sessions chasing +a race in the retry queue. Monday was the docs-site redesign; Thursday +afternoon a one-off backfill script. No recorded activity Friday or over +the weekend. + +
+
+ +
+

/path:query which sessions cost me the most tokens this month?

+
+ +The heaviest was Wednesday's session on the import-pipeline bug: roughly +**8.4M tokens** — 7.9M of it cache reads, 61k generated output. Worth +knowing: the top two sessions are segments of the same conversation; +together they're nearly half the month's total. + +
+
+ +
+

/path:query compare my claude and codex usage this month

+
+ +Claude Code carried most of the volume: 9.2M output tokens across 31 +sessions, against Codex's 480k across 7. Codex runs shorter sessions — a +median of 41 steps to Claude's 220 — and spends about 4% of its output on +reasoning. Claude doesn't itemize thinking tokens, so its reasoning share +isn't measurable. + +
+
+ +
+

/path:query what parts of my workflow were inefficient this month?

+
+ +Two things dominate. About a fifth of the month's steps were later +rewound or replaced, concentrated in three sessions that each had to be +substantially redone. And marathon sessions are where the tokens go: the +five sessions over a thousand steps account for nearly half your context +spend — a fresh session per sub-task would be the highest-leverage change. +Tool failures barely register by comparison (2.3% of calls, mostly shell +friction). + +
+
+ +## `/path:share` — publish a session as a link + +Publishes the current session to [Pathbase](https://pathbase.dev) as a +link anyone can open. Name another session in plain words ("the one about +the flaky test") and it finds and shares that one instead. + +
+

/path:share

+
+ +Shared this session: `pathbase.dev/u/you/pathstash/webhook-migration` + +
+
+ +
+

/path:share the session where we fixed the retry queue

+
+ +Found it — Tuesday's session on the retry-queue race. Shared: +`pathbase.dev/u/you/pathstash/retry-queue-race` + +
+
+ +## `/path:link-pr` — attach the session to a pull request + +Ship the _why_ with the diff. Shares the session and appends the link to +your pull request's description, so the review carries the conversation +behind the change: + +
+

/path:link-pr

+
+ +Shared — the session is at +`pathbase.dev/u/you/pathstash/rate-limit-retry` and PR #212's description +now links to it. + +
+
+ +
+

open a pr and link this chat

+
+ +Opened PR #218 for this branch and linked the session in its +description: `pathbase.dev/u/you/pathstash/request-coalescing` + +
+
+ +## `/path:resume` — pick up a shared session anywhere + +Sessions are portable. Point it at a Pathbase URL and it projects the +session into your project, ready to pick up with `/resume` — even if the +session started on another machine, or in a different harness entirely. + +
+

/path:resume pathbase.dev/u/mira/pathstash/retry-queue-race

+
+ +Imported into this project. Run `/resume 7c9e2b41` to pick up where Mira +left off. + +
+
+ +## Installation + +Inside Claude Code: + +``` +/plugin marketplace add empathic/toolpath +/plugin install path@toolpath +``` + +Or from your terminal: + +```bash +claude plugin marketplace add empathic/toolpath +claude plugin install path@toolpath +``` + +The commands run on the `path` binary. On first use the plugin picks up a +`path` already on your `PATH`, or installs one from a GitHub release +(sha256-verified) to `~/.local/bin`. Everything happens locally — sessions +are ingested and queried on your machine, and only `/path:share` and +`/path:link-pr` upload anything, anonymously or +[signed in](https://pathbase.dev). The plugin is +[open source](https://github.com/empathic/toolpath/tree/main/plugins/claude-code), +and the same workflows are available from the [CLI](/cli/) directly.