by skymanbp
Claude Code plugin: universal radial-tree exploration engine. One tree skill + swappable presets (brainstorm / attack / design / code-audit) for divergent ideation, adversarial critique, and design-space exploration. 12 framings × hard-ban-on-incomplete-leaves × stable convergence.
# Add to your Claude Code skills
git clone https://github.com/skymanbp/cc-treeLast scanned: 8/17/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-08-17T04:42:28.539Z",
"npmAuditRan": true,
"pipAuditRan": true,
"promptInjectionRan": true
}cc-tree is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by skymanbp. Claude Code plugin: universal radial-tree exploration engine. One tree skill + swappable presets (brainstorm / attack / design / code-audit) for divergent ideation, adversarial critique, and design-space exploration. 12 framings × hard-ban-on-incomplete-leaves × stable convergence. It has 161 GitHub stars.
Yes. cc-tree passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/skymanbp/cc-tree" and add it to your Claude Code skills directory (see the Installation section above).
cc-tree is primarily written in Python. It is open-source under skymanbp on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh cc-tree against similar tools.
No comments yet. Be the first to share your thoughts!
Language: English (canonical). Chinese:
README.zh.md.
cc-tree is a Claude Code plugin that turns open-ended thinking into a
tree you can audit. One universal radial-tree exploration engine, four
swappable presets: divergent brainstorming, adversarial critique,
design-space exploration, and code audit — same engine, different
vocabulary. It is a disciplined, disk-persisted take on tree-of-thoughts
search: every node is derived in full with file:line or URL evidence,
defer / future-work / TODO / NEEDS-MORE-INFO leaves are hard-banned,
and the run stops on substantive convergence rather than on a node budget.
claude plugin marketplace add skymanbp/cc-tree
claude plugin install cc-tree@cc-tree
Refactor of
sci-paper'sbrainstorm+paper-attack-treeskills, stripped of paper-specific anchors and parameterized via presets.
cc-tree treats any open-ended thinking task as a phylogenetic tree
growing outward from one root. The root is your input — a topic, a
document, a code path, a design prompt. Every node is expanded by the
same 12 framing passes, each child is fully derived and scored, and
only the high-value (advances) leaves get re-expanded, until the tree
reaches substantive convergence rather than an arbitrary count.
Inspired by the radial tree of life. The vocabulary the rest of this README uses is all in this one picture: root (the input at the centre — topic · artifact · code · design), node (one idea / critique / option / finding, each with the same 12-field derivation), depth (the concentric framing-recursion rings; branches stop at different rings because only advances leaves re-expand), width (the terminal leaves, wherever they land — set by convergence, not a hand-picked cap, and never counting a blocked tip until it is completed, per §0.1), and n (total nodes in the tree). Diagram source: tools/gen_radial_tree.py.
the tree grows OUTWARD from one root. a branch can WIN, hit a DEAD END, or
keep BRANCHING and be judged again — no single winner, wins at any depth:
ROOT ──┬── pruned (dead end at depth 1)
├── advances (a win at depth 1)
└── advances ──┬── pruned (this branch keeps going…)
└── advances ──┬── advances (…a deeper win)
└── blocked
each node → 12 framings (§3.A–§3.L) → 12-field derivation → score → verdict;
branches that keep advancing grow deeper; pruned / blocked ones stop.
Five irreducible steps, all specified in docs/ENGINE.md
and binding on every preset.
flowchart LR
R([root<br/>topic · artifact · code · design]) --> F{{12 framing passes<br/>§3.A–§3.L}}
F --> D[per-node 12-field derivation<br/>evidence · no hedging · no defer]
D --> S[score 5 dims → verdict]
S -->|advances| RE((re-expand<br/>this leaf))
RE --> F
S -->|kept / pruned| K[keep in tree,<br/>don't re-expand]
S -->|blocked| B[INCOMPLETE_FORBIDDEN<br/>drive to completion]
B --> D
S --> C{§6 convergence?<br/>6 conditions all true}
C -->|no| RE
C -->|yes| OUT[/final report +<br/>tree.md · tree.json/]
The preset supplies the recipe; the engine enforces that every root field
carries a file:line, URL, or command-output citation. An optional
glossary-grill prelude (§2.0) locks the root's technical noun-phrases to
your project's term sheet before a single branch is generated, so the tree
does not spend a hundred leaves solving the wrong problem.
Each node — root first, then every advances leaf — is put through all 12
framing passes, each of which must yield at least one child. The set is
fixed so that the model cannot quietly skip the uncomfortable angles.
| Pass | What it forces |
|---|---|
| §3.A First-principles | Strip a load-bearing assumption; see what survives |
| §3.B Inversion | Try the negation, the dual, the boundary where it fails |
| §3.C Cross-disciplinary | Transplant tooling from ≥ 3 other fields |
| §3.D Adversarial / red team | The 3 most damaging counter-arguments |
| §3.E Constraint variation | Relax one constraint; tighten another |
| §3.F Scale extrapolation | 1000× / 0.001× / domain boundary |
| §3.G Substitution | Swap a component and observe the change |
| §3.H Office-hours 6Q | YC-style demand-reality interrogation |
| §3.I Contrarian | Which mainstream consensus might be wrong here? |
| §3.J Failure-driven | Turn a concrete present failure into the next question |
| §3.K High-risk asymmetric | Force ≥ 1 low-probability, paradigm-level branch |
| §3.L Meta self-audit | 7-question audit of the model's own blind spots |
A thirteenth pass, §3.X, runs one external cross-check per node
(WebSearch then WebFetch of the actual page) unless --no-online is
set. Full prompts and per-preset examples:
docs/framings.md.
Each child is filled into the preset's 12-field node schema — statement,
parent framing, position, derivation, assumptions, predictions, defense,
alternatives, fix/cost, external check, branch potential, provisional
verdict. Blank, hedged, or deferred fields do not produce a weaker node;
they produce an INCOMPLETE_FORBIDDEN node that blocks termination
until it is driven to completion.
Five preset-declared dimensions, each an integer 0–3, summed to a maximum
of 15. score ≥ 11 (plus any preset-specific gate) → advances and the
leaf is re-expanded; 8–10 → kept; ≤ 7 → pruned; anything dominated
by an unverified claim → blocked. Near-duplicate siblings are merged at
cosine similarity ≥ 0.85 (§5.4) so width means coverage, not repetition.
Six conditions must hold simultaneously: no incomplete node remains;
the advances ratio over the last two rounds has fallen below
--min-novelty-ratio; all 12 framings have fired; every advances leaf
has been re-expanded and yielded nothing further; at least one fully
derived §3.K high-risk branch exists; and no user cap has tripped. If a
cap trips first, the engine reports WIDTH_CAP_REACHED /
DEPTH_CAP_REACHED / ROUNDS_EXHAUSTED — truthfully, never as
CONVERGED — and still completes every in-flight leaf first.
| ad-hoc "brainstorm with me" | cc-tree | |
|---|---|---|
| Coverage | the 3 obvious angles | 12 fixed framings per node, including contrarian / inversion / high-risk |
| Completeness | "we could look at X later" | hard ban on defer / TODO / future-work leaves — every leaf derived with file:line / URL evidence |
| When it stops | when the chat trails off | substantive convergence (6 conditions), not a node count |
| Output | a chat log | tree.md + tree.json + a structured per-preset report on disk |
| Crash safety | scroll back and hope | incremental write per node; re-invoke to resume |
| Reuse | re-prompt from scratch each time | one engine, 4 presets, chainable (brainstorm → design → attack) |
Two reasons, in prose.
Reason 1: the structure repeats. Brainstorming, adversarial review, design exploration, and code audit all share the same skeleton — generate candidates from N framings → derive each one completely → score → recurse on the high-value branches → terminate on stable convergence, not on running out of patience. Coding that skeleton once and parameterizing the rest beats writing four near-duplicate skills.
Reason 2: the failure modes repeat too. Every divergent task LLMs do has the same lazy-equilibrium attractors: defer to future-work, generate near-duplicate branches with synonym swapping, skip the high-risk/contrarian framings, declare convergence at the first slow round. The engine encodes hard bans on all of these (§0.5 forbidden patterns, §F1–§F8), and they apply equally well to brainstorming a research direction and to auditing a Python file.
The full design rationale — including why 12 framings and not 7 or 20,
and how cc-tree differs from academic Tree-of-Thoughts and from agent
loops — is in docs/EVALUATION.md.
--min-frameworks has a