Use when the user wants to extract shareable know-how (tacit knowledge) from their local LLM-CLI conversation history across tools (Claude Code, Codex, Copilot CLI, etc.) and produce one anonymized one-page report. Triggers — "collect tacit knowledge", "know-how report", "extract know-how from my conversation history", "summarize what I've learned across projects".
How this skill is triggered — by the user, by Claude, or both
Slash command
/collect-tacit-knowledge:collect-tacit-knowledgeThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Mines transferable know-how from local LLM-CLI logs and produces ONE anonymized, shareable
references/extraction-prompt.mdreferences/report-template.mdscripts/ctk/__init__.pyscripts/ctk/base.pyscripts/ctk/collect.pyscripts/ctk/model.pyscripts/ctk/providers/__init__.pyscripts/ctk/providers/aider.pyscripts/ctk/providers/antigravity.pyscripts/ctk/providers/claude_code.pyscripts/ctk/providers/codex.pyscripts/ctk/providers/copilot_cli.pyscripts/ctk/providers/crush.pyscripts/ctk/providers/cursor.pyscripts/ctk/providers/factory.pyscripts/ctk/providers/gemini.pyscripts/ctk/providers/hermes.pyscripts/ctk/providers/kimi.pyscripts/ctk/providers/openclaw.pyscripts/ctk/providers/opencode.pyMines transferable know-how from local LLM-CLI logs and produces ONE anonymized, shareable markdown report. Read-only on all logs. Privacy is non-negotiable (3-layer defense).
python3 on PATH. No pip install needed.
All scripts/references below are addressed via ${CLAUDE_SKILL_DIR}, which resolves to this
skill's own directory at runtime regardless of the user's working directory (works at personal,
project, and plugin scope). Use it verbatim — do NOT assume the cwd is the skill folder.
all — every detected toolcurrent — sessions in the current project (--project "$(pwd)")selected — run python ${CLAUDE_SKILL_DIR}/scripts/normalize.py --list-projects, show the list, let them pickdirectory / substring scope — add --project-contains "<substr>" (e.g. a parent
dir like projects/acme) to any mode to keep only projects whose path matches.python ${CLAUDE_SKILL_DIR}/scripts/normalize.py --mode <mode> [--project P] --count-only
Show the user the session count + providers. If large (e.g. >40), offer to narrow scope.
Proceed only on confirmation.python ${CLAUDE_SKILL_DIR}/scripts/normalize.py --mode <mode> [--project P] --out .ctk-work/sessions
This also writes .ctk-work/sessions/_manifest.json — one entry per session with
{file, provider, project, started_at, turns, bytes}. Read it first to plan Map/Reduce.${CLAUDE_SKILL_DIR}/references/extraction-prompt.md as the contract and
superpowers:dispatching-parallel-agents. Plan from the manifest:
turns, minimum 3, with NO
fixed upper cap. A 1300-turn session should yield ~20–30 candidates, not the same ~10 as
a 30-turn one — do NOT flatten large/old sessions to a small fixed cap.turns > 400 or bytes > 250_000), and
instruct that agent to read the file in turn-range chunks so nothing is truncated.project and every time bucket (group started_at by quarter) must have
at least one extraction agent. Don't let the most-active repo crowd others out.${CLAUDE_SKILL_DIR}/references/report-template.md per category. Bullets
are abstracted claims + evidence signal. No raw quotes, no secrets, no external client names.
Internal product/repo names MAY appear as context (see privacy tiers below).
{provider_summary} line, state coverage: distinct projects and the date span
(e.g. "6 repos · 2026-03 to 2026-06"), so recency/coverage skew is visible to the reader.python ${CLAUDE_SKILL_DIR}/scripts/sanitize.py <report> [--known-names names.txt].
The scan always runs (catches emails/IPs/keys/username-paths). --known-names is OPT-IN
force-masking: for the default internal audience you usually don't need it; supply a names
file (company/product/any sensitive names) only when sharing the report EXTERNALLY/OSS.
If findings > 0, re-run with --mask and re-review until clean (exit 0). IPs/hostnames in
conversation text are only caught here, so the gate is mandatory. Then read the report
yourself and confirm it's safe for the intended audience.<project>/tacit-knowledge.md)
and print it. Clean up the temporary .ctk-work/ directory (it holds normalized conversation data).Always block (non-negotiable, enforced mechanically + in extraction):
--known-names.
Encrypted/undocumented sources are skipped by their adapters; do not try to decrypt.Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub honeymaro/agent-skills --plugin collect-tacit-knowledge