Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
1 change: 1 addition & 0 deletions site/_includes/base.njk
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@
<a href="/rfc/"{% if nav == "rfc" %} aria-current="page"{% endif %}>RFC</a>
<a href="/crates/"{% if nav == "crates" %} aria-current="page"{% endif %}>Crates</a>
<a href="/cli/"{% if nav == "cli" %} aria-current="page"{% endif %}>CLI</a>
<a href="/plugin/"{% if nav == "plugin" %} aria-current="page"{% endif %}>Plugin</a>
<a href="/visualizer/"{% if nav == "visualizer" %} aria-current="page"{% endif %}>Visualizer</a>
<a href="/faq/"{% if nav == "faq" %} aria-current="page"{% endif %}>FAQ</a>
<a href="{{ site.repo }}" class="nav-github">GitHub</a>
Expand Down
23 changes: 23 additions & 0 deletions site/css/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -579,6 +579,29 @@
}
}

/* --- Plugin page Q&A transcript --- */
.qa {
background: var(--bg-surface);
border-left: 3px solid var(--accent);
padding: var(--space-md) 1.25rem;
margin: 1.25rem 0;
}
.qa-q {
font-family: var(--font);
font-size: 0.85rem;
font-weight: 600;
color: var(--accent);
margin: 0;
}
.qa-q::before {
content: "> ";
color: var(--text-dim);
}
.qa-a p {
margin: 0.6rem 0 0;
font-size: 0.95rem;
}

/* --- Topographic divider --- */
.divider {
background: repeating-linear-gradient(
Expand Down
129 changes: 129 additions & 0 deletions site/pages/plugin.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
---
layout: base.njk
title: Plugin
nav: plugin
permalink: /plugin/
---

# Claude Code Plugin

**Ask your session history anything.** The `path` plugin gives Claude Code
four commands over every agent session on your machine — Claude Code, Codex,
Gemini CLI, GitHub Copilot, opencode, Cursor, and Pi. Nothing to configure;
nothing leaves your machine until you share.

```
/plugin marketplace add empathic/toolpath
/plugin install path@toolpath
```

## Your sessions are a dataset

Every session you run is recorded somewhere on disk, in a format you can't
read, by a tool that never looks at it again. `/path:query` turns that
archive into something you can question in plain English.

<div class="qa">
<p class="qa-q">/path:query what did i work on last week?</p>
<div class="qa-a">

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.

</div>
</div>

<div class="qa">
<p class="qa-q">/path:query which sessions cost me the most tokens this month?</p>
<div class="qa-a">

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.

</div>
</div>

<div class="qa">
<p class="qa-q">/path:query what parts of my workflow were inefficient this month?</p>
<div class="qa-a">

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).

</div>
</div>

## Share, link, resume

### /path:share

This conversation, as a link. Publishes the current session to
[Pathbase](https://pathbase.dev). Name another session in plain words
("the one about the flaky test") and it finds and shares that one instead.

<div class="qa">
<p class="qa-q">/path:share the session where we fixed the retry queue</p>
<div class="qa-a">

Found it — Tuesday's session on the retry-queue race. Shared:
`pathbase.dev/u/you/pathstash/retry-queue-race`

</div>
</div>

### /path:link-pr

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. Saying "share this conversation to the PR" is enough
to trigger it:

<div class="qa">
<p class="qa-q">share this conversation to the pr</p>
<div class="qa-a">

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

</div>
</div>

### /path:resume

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.

<div class="qa">
<p class="qa-q">/path:resume pathbase.dev/u/mira/pathstash/retry-queue-race</p>
<div class="qa-a">

Imported into this project. Run `/resume 7c9e2b41` to pick up where Mira
left off.

</div>
</div>

## How it works

On first use the plugin installs the `path` CLI from a GitHub release
(sha256-verified) — or uses the one already on your `PATH`. The CLI reads
each harness's on-disk session format and normalizes it into
[Toolpath documents](/format/) in a local cache; `/path:query` answers
questions from that cache entirely on your machine. Sharing is explicit:
only `/path:share` and `/path:link-pr` upload anything, and you choose
anonymous or [signed-in](https://pathbase.dev) uploads.

The plugin is [open source](https://github.com/empathic/toolpath/tree/main/plugins/claude-code),
and the same commands work against the [CLI](/cli/) directly.
Loading