Skip to content
Merged
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
8 changes: 4 additions & 4 deletions .agents/plugins/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,10 @@
"category": "Engineering"
},
{
"name": "prep-compact",
"name": "better-compact",
"source": {
"source": "local",
"path": "./plugins/prep-compact"
"path": "./plugins/better-compact"
},
"policy": {
"installation": "AVAILABLE",
Expand All @@ -41,10 +41,10 @@
"category": "Engineering"
},
{
"name": "prep-exit",
"name": "handoff",
"source": {
"source": "local",
"path": "./plugins/prep-exit"
"path": "./plugins/handoff"
},
"policy": {
"installation": "AVAILABLE",
Expand Down
18 changes: 9 additions & 9 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@
{
"name": "cc-wrap-up",
"source": "./plugins/cc-wrap-up",
"description": "Cues a wrap-up at a natural break in a long session, then compacts with prep-compact's message or hands off with prep-exit's resume prompt, with no copy-paste. Reads the context size at no cost and acts only when you press. Claude Code only.",
"version": "1.0.0"
"description": "Cues a wrap-up at a natural break in a long session, then compacts with better-compact's message or hands off with handoff's resume prompt, with no copy-paste. Reads the context size at no cost and acts only when you press or run a skill. Claude Code only.",
"version": "1.1.0"
},
{
"name": "cc-pitstop",
Expand All @@ -64,16 +64,16 @@
"version": "1.0.0"
},
{
"name": "prep-compact",
"source": "./plugins/prep-compact",
"description": "Audit in-flight session state before compaction truncates history, and save what would be lost. Commits real work locally, syncs stale plan and state files, and notes chat-only decisions, asking first only for risky items, then prints a paste-ready /compact message plus a queued follow-up. Portable across SKILL.md-native hosts.",
"version": "1.10.0"
"name": "better-compact",
"source": "./plugins/better-compact",
"description": "A better /compact: audit the session, save what compaction would lose, then compact with a focus message and resume with a follow-up. Commits real work locally, syncs stale state files and notes chat-only decisions, asking only for risky items; compacts in one shot with cc-wrap-up. Portable across SKILL.md-native hosts.",
"version": "2.0.0"
},
{
"name": "prep-exit",
"source": "./plugins/prep-exit",
"name": "handoff",
"source": "./plugins/handoff",
"description": "Save what only the conversation knows before a session ends, so a fresh session can pick up the work. Commits real work locally, syncs state files, writes a handoff note and a memory pointer, and prints a resume prompt; --close instead ties up loose ends for a clean exit. Portable across SKILL.md-native hosts.",
"version": "0.4.0"
"version": "1.0.0"
},
{
"name": "prep-goal",
Expand Down
6 changes: 3 additions & 3 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ plugins/<plugin>/
skills/<skill>/agents/openai.yaml # GENERATED for user-only skills of non-cc- plugins
skills/<skill>/scripts/* # Optional helper scripts the skill calls
hooks/*.sh # Optional event hooks declared in plugin.json (cc- only)
hooks/hooks.json + register.ts # Or a mod: a hooks module Claude Code runs in-process (cc- only, e.g. cc-keepwarm)
hooks/hooks.json + register.ts(x) # Or a mod: a hooks module Claude Code runs in-process (cc- only, e.g. cc-keepwarm)
tests/test-*.sh # Optional offline test suite; tests/live-*.sh spend tokens
scripts/ # sync-codex.sh, bump-plugin.sh, check.py, test-offline.sh
docs/ # Repo notes that never ship, e.g. docs/experiments.md
Expand All @@ -39,7 +39,7 @@ To add, rename or remove a plugin, or to flip its cc- prefix: the dir name, the

## Checks and tests

- `mise run verify` runs sync, fails if a generated file changed, then runs `scripts/check.py`. check.py fails on a broken contract (above), a description over its cap, `when_to_use` on a user-only skill, a cc- feature in an unprefixed plugin, or prep-compact's and prep-exit's `baseline.sh` copies differing (change both together). It warns on a SKILL.md over 100 lines.
- `mise run verify` runs sync, fails if a generated file changed, then runs `scripts/check.py`. check.py fails on a broken contract (above), a description over its cap, `when_to_use` on a user-only skill, a cc- feature in an unprefixed plugin, or better-compact's and handoff's `baseline.sh` copies differing (change both together). It warns on a SKILL.md over 100 lines.
- `mise run test` runs every offline suite (`plugins/*/tests/test-*.sh`). Run the suite of any plugin whose hooks or scripts you touch.
- CI (`.github/workflows/ci.yml`, on macOS because the hooks use BSD `stat` and `date`) runs sync, check.py and the offline suites on every pull request and on main.
- `mise run test:keepwarm`, `mise run test:autotitle`, `mise run test:wrap-up` and `mise run test:dazzle` run the cc-keepwarm, cc-autotitle, cc-wrap-up and cc-dazzle mods' validate and tests through the `claude` CLI, which CI does not have. Run one after touching its mod or upgrading Claude Code.
Expand All @@ -66,7 +66,7 @@ The body is a prompt, not docs: second-person imperative. Keep this file and eve

**Progressive disclosure**: move reference content out of SKILL.md into sibling files (see `plugins/humanize/skills/humanize/references/`). Keep references one level deep: chains of `.md` -> `.md` -> `.md` cause partial reads. Aim for 100 lines or fewer in SKILL.md.

**Helper scripts**: put deterministic logic in `skills/<skill>/scripts/` and have the skill call it (e.g. prep-compact's `scripts/baseline.sh`). Otherwise the model re-interprets the prose on every run.
**Helper scripts**: put deterministic logic in `skills/<skill>/scripts/` and have the skill call it (e.g. better-compact's `scripts/baseline.sh`). Otherwise the model re-interprets the prose on every run.

**Dynamic context injection** (cc- only): `` !`cmd` `` inline or `` ```! `` fenced blocks in the skill body run shell commands, and their output replaces the placeholder before the model reads the skill. Use `${CLAUDE_SKILL_DIR}` for script paths, `$ARGUMENTS` / `$0` for user args.

Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,13 +66,13 @@ Generated from each plugin's `plugin.json` by `scripts/sync-codex.sh`, so do not
| `skill-polish` | any | Post-mortem for any skill: finds friction in a session, traces it to the responsible skill file, and edits that file's source checkout, not the plugin install copy. |
| `cc-keepwarm` | CC only | Keeps Claude Code's prompt cache warm in every session with a silent background ping timed from your last request, and skips the ping once the cache is already gone. |
| `cc-timeline` | CC only | A side pane that draws each Claude Code turn as a timeline: every tool call is a colored bar on the turn's time axis, with subagent calls under their Agent call. |
| `cc-wrap-up` | CC only | Cues a wrap-up at a natural break in a long session, then compacts with prep-compact's message or hands off with prep-exit's resume prompt, with no copy-paste. |
| `cc-wrap-up` | CC only | Cues a wrap-up at a natural break in a long session, then compacts with better-compact's message or hands off with handoff's resume prompt, with no copy-paste. |
| `cc-pitstop` | CC only | Pauses Claude Code before the 5-hour or weekly usage limit, across every session on the machine, and resumes the paused work on its own when the window resets. |
| `cc-quiet-watch` | CC only | Watches long jobs on a timer and asks Haiku only when the output changed. It wakes the session only when the job is done, failed, stuck or needs you. |
| `cc-turn-review` | CC only | After each turn that changes files in a git repo, Haiku checks the diff for over-design and for comment and prose rules, and a band offers to fix what it finds. |
| `cc-changes` | CC only | A side pane that lists every file the Claude Code session created, edited or deleted, with net line counts, and shows a file's diff when you press it. |
| `prep-compact` | any | Audit in-flight session state before compaction truncates history, and save what would be lost. |
| `prep-exit` | any | Save what only the conversation knows before a session ends, so a fresh session can pick up the work. |
| `better-compact` | any | A better /compact: audit the session, save what compaction would lose, then compact with a focus message and resume with a follow-up. |
| `handoff` | any | Save what only the conversation knows before a session ends, so a fresh session can pick up the work. |
| `prep-goal` | any | Interrogate a rough objective into a tight, verifiable /goal completion condition before handing it to an autonomous goal loop. |
| `humanize` | any | Strip AI-writing tells from text. Detects em-dash overuse, AI vocabulary, inflated significance, rule-of-three, sycophancy, compound coinages, and 20+ more patterns. |
| `brainstorming` | any | Design-before-code gate that sizes each request as a spike, a bounded change, or architectural work, and gets approval on a design before any code. |
Expand Down
1 change: 1 addition & 0 deletions docs/experiments.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ Findings that have been verified ourselves, plus tests still pending. Only move
| 32 | A git tree snapshot through a private index and a private object folder is cheap, catches heredoc edits and commits made during the turn, and leaves the repo untouched | **TRUE** | Shell spike, 2026-10-10: `GIT_INDEX_FILE` seeded from the real index, `GIT_OBJECT_DIRECTORY` set to a scratch folder, `GIT_ALTERNATE_OBJECT_DIRECTORIES` set to the repo's objects, then `git add -A` and `git write-tree`. About 30 ms for the first snapshot and 10 to 20 ms after in revelo-pipelines, this repo, one of its worktrees and a knowledge-base repo (130 to 280 tracked files). `git diff-tree -p` of two trees showed a heredoc file and a commit made in between. A `git commit` run under these variables writes its objects into the private folder and leaves HEAD pointing at an object the repo does not have, so cc-turn-review sets them only on its own `$.process.run` calls. In the last 25 transcripts, 20 turns that wrote files touched one repo, 2 touched two and 1 touched five; the write commands outside git went to scratch folders and `~/.claude`. |
| 33 | Haiku 5.5 at low effort can check a turn's diff for over-design and the comment and prose rules | **TRUE** | `claude -p --model claude-haiku-5-5 --effort low` with cc-turn-review's prompt as the system prompt, 2026-10-10. Caught 3 of 3 planted cases: restating comments, a Markdown paragraph wrapped by hand, and a one-value change grown into a policy class, an env var and a parser. On 3 real merged commits: 2 CLEAN, 1 soft over-design finding (a description rewording called "unrelated", because the ask given was only the commit subject). About $0.002 per review at list price, 2 to 8 s. Thinking took up to 1,750 output tokens, so the mod sets `maxTokens` to 4,000. |
| 34 | cc-turn-review works live: snapshots before the first tool call that names a repo, a review after the turn, and a band whose Fix sends the findings back | **TRUE** | Live run in a hot-reloaded session on Claude Code 2.1.295, 2026-10-10. A turn of real edits in this repo's worktree (5 files, 88 changed lines) came back clean, at 7,043 input and 705 output tokens. A planted turn in a scratch repo (a one-value change grown into a policy class with backoff modes, comments that restate the code, a README paragraph wrapped by hand) showed the band with 5 findings, all real: the policy type, the class used once, two restating comments and the wrapped paragraph; one more restating comment was past the cap of 5. Fix sent them as the next prompt. The scratch repo was made in one command and edited in the next, so the snapshot taken before the edit counted it; a repo made and edited in one command is not seen. |
| 35 | A mod can compact from a `turn.complete` hook through `$.clock.after(0, ...)`, and its follow-up runs as the next turn | **TRUE** | cc-wrap-up 1.1.0 live run on Claude Code 2.1.310, Haiku 5.5, 2026-10-27, scratch repo, all installed plugins disabled, better-compact and cc-wrap-up loaded with `--plugin-dir`. `/better-compact` with an uncommitted change committed it, called `ready` with `now: true`, printed the one line the tool result asked for, and ended the turn; the mod compacted with the message ("Conversation compacted") and the follow-up ran as "Prompt from the cc-wrap-up plugin", with no press. A prompt queued during the skill's turn was delivered inside that turn, before `ready` was called: the model folded it into the commit body, and compaction and the follow-up still ran. In the first run Haiku added an unasked design remark after the "Compacting now" line but still set `now`; the steering message kept it as an open caveat. |

## Pending tests

Expand Down
6 changes: 3 additions & 3 deletions mise.toml
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,9 @@ run = "claude plugin validate plugins/cc-wrap-up && claude plugin test plugins/c
description = "Run the cc-dazzle mod tests (needs the claude CLI, so CI does not run them)"
run = "claude plugin validate plugins/cc-dazzle && claude plugin test plugins/cc-dazzle"

[tasks."test:prep-exit"]
description = "Run the prep-exit script checks (handoff.sh and baseline.sh, offline)"
run = "bash plugins/prep-exit/tests/test-prep-exit.sh"
[tasks."test:handoff"]
description = "Run the handoff script checks (handoff.sh and baseline.sh, offline)"
run = "bash plugins/handoff/tests/test-handoff.sh"

[tasks."test:open-pr"]
description = "Run the open-pr body checker tests (offline)"
Expand Down
14 changes: 14 additions & 0 deletions plugins/better-compact/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"name": "better-compact",
"version": "2.0.0",
"description": "A better /compact: audit the session, save what compaction would lose, then compact with a focus message and resume with a follow-up. Commits real work locally, syncs stale state files and notes chat-only decisions, asking only for risky items; compacts in one shot with cc-wrap-up.",
"author": {
"name": "Victor De Simone",
"email": "victorsmoliveira@gmail.com",
"url": "https://github.com/vdsmon"
},
"homepage": "https://github.com/vdsmon/skills",
"repository": "https://github.com/vdsmon/skills",
"license": "MIT",
"skills": "./skills"
}
Loading
Loading