Conversation
Ship cct as a Claude Code skill so agents auto-discover the tool without the user manually copying SKILL.md into ~/.claude/skills/. The skill content is embedded in the binary; cct skill install creates a symlink at ~/.claude/skills/cct -> ~/.cache/cct/skills/cct, and the live copy auto-syncs from the embedded version on every cct invocation so brew upgrade cct keeps the on-disk skill aligned with the binary. Until installed, every cct invocation prints a one-line install hint to stderr (rate-limited to once per 24h, dismissible via cct skill nudge off). Skill content is reordered by real usage frequency from session history (search > export > info > list) and includes explicit anti-triggers for grep ~/.claude/projects/ and the non-existent cct show. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
SKILL.mdinto~/.claude/skills/cct/. Skill content is embedded in the binary;cct skill installcreates a symlink at~/.claude/skills/cct -> ~/.cache/cct/skills/cct, and the live copy auto-syncs from the embedded version on every cct invocation —brew upgrade cctkeeps the on-disk skill aligned with the binary, no reinstall needed.cct skill install / uninstall / status / nudgesubcommands. Install is idempotent and refuses to overwrite a foreign file or symlink. Uninstall removes only the symlink, preserves the live copy for fast reinstall. Status reports install/sync/nudge state with--jsonfor tooling.cct skill nudge off). Skill content is reordered by real session-history usage frequency (search > export > info > list) with explicit anti-triggers forgrep ~/.claude/projects/and the non-existentcct show. Includesreferences/commands.mdandreferences/search-syntax.mdwith full JSON schemas forstats,list, andsearchso agents stop guessing field names.Test plan
just cipasses (gofumpt + golangci-lint + go test)~/.claude/skills/(no existingcct/entry),cct skill installsucceeds and reportsInstalled cct skill at ~/.claude/skills/cctcct skill statusshowsInstalled: yesandSync: in sync with embedded versionls -la ~/.claude/skills/showscctas a symlink (not a regular directory) pointing at~/.cache/cct/skills/ccthead -4 ~/.claude/skills/cct/SKILL.mdshows thename: cctblockcct skill installa second time is a no-op (idempotent — no error, exit 0)~/.claude/skills/cct/SKILL.mdand confirmcct skill installrefuses with a clear errorcct skill uninstallremoves the symlink;~/.cache/cct/skills/cct/survivescct versionprints the install nudge to stderr; runningcct versionagain immediately is silent (24h rate limit)cct skill nudge offsilences the nudge persistently;cct skill nudge onre-enables;cct skill nudge statusreports current statecct skill status --jsonemits a stable, parseable schema withinstalled,embedded_hash,live_hash,in_sync,nudge_enabled🤖 Generated with Claude Code