Skip to content

chameleon 4.5.16

Choose a tag to compare

@github-actions github-actions released this 26 Jul 13:21

Added

  • Composing with superpowers is mechanical, not just prose. v4.5.15 stated the contract
    in one paragraph at SessionStart. A paragraph read once does not survive twenty turns, and
    the fact it asks for — put the archetype and canonical witness in the plan — is needed at a
    moment the per-edit advisory cannot reach: by the time an Edit fires, the shape is already
    chosen. Invoking a superpowers skill now injects that skill's own contract AT the call.
    Both invocation paths are covered, because they are different mechanisms: a skill the model
    picks arrives as a Skill tool call (a new PreToolUse hook, matcher Skill), while one the
    user types as /superpowers:<name> is expanded inline and emits no tool call at all (caught
    on UserPromptSubmit). Measured against this machine's own history, 95 of 104 real superpowers
    invocations took the first path and 9 took the second; covering only one would have made the
    composition hold for the model's choices and lapse for the user's. Eleven skills carry an
    entry — a constant directive, plus this repo's archetype → canonical-witness map for the four
    that author a plan, a dispatch brief, or a first failing test. CHAMELEON_PEER_ROUTING=0 now
    disables both surfaces.
  • The per-skill surface needs no detection at all, which makes it the more reliable of the two.
    Claude Code offers a plugin's skills only when that plugin is loaded, so superpowers:<name>
    arriving from the Skill tool IS proof of installation — none of peer_plugins' rungs run, and
    none of their blind spots (a project-level enabledPlugins, an enterprise policy, --settings)
    can produce a wrong answer there.

Fixed

  • A dispatched subagent gets its own first sight of an archetype. "Already shown this
    archetype" is a claim about a context window, and a session stops being one context the moment
    subagents are dispatched — the normal case under superpowers' subagent-driven execution, which
    exists precisely so each task starts clean. Every subagent nonetheless shares the coordinator's
    session id, and the enforcement state holding archetypes_seen is keyed by exactly that, so the
    second and later implementers were told they had seen an archetype they had never seen and got
    the one-line Tier-1 pointer instead of the canonical excerpt. The tier logic inverted precisely
    where context was scarcest: the agent with none got the pointer, the coordinator that had seen
    every excerpt got the full block. The seen-set is now keyed per agent, using the agent_id a
    subagent's tool-call payload carries and the top-level agent's does not. The top-level agent's
    keys are unchanged, so a session's already-persisted state keeps deduping as before.
  • Three claims the routing paragraph made about superpowers were false or mis-scoped, and a
    paragraph that exists to route the model is exactly the wrong place to be confidently wrong.
    /chameleon-pr-review was said to supersede superpowers:requesting-code-review, with "both
    are supersets": that skill's whole point is dispatching a reviewer SUBAGENT so the diff never
    enters the coordinator's window, while pr-review runs its passes in that same context unless
    fan-out is recommended, and its reviewer's "are all tests passing?" is a verdict input a static
    review drops. It is the stronger reviewer, not a superset — and the peer skill stays the right
    tool for a subagent-driven run's final whole-branch review, which is dispatched with a
    review-package path pr-review does not take. Chameleon serves systematic-debugging's Phase 1
    step 5 and Phase 2, not "Phase 1" (steps 1-4 are error reading, reproduction, recent changes,
    and instrumentation, none of which chameleon knows anything about); that step's trace is
    BACKWARD, so it is get_callers, while get_callees is the forward counterpart. And a
    canonical witness is a path: the record carries no line number, so "canonical file:line"
    promised precision that does not exist. The receiving-review supersede claim was verified and
    stands.
  • Three contradictions the paragraph was silent on now have a stated resolution, delivered at the
    skill that hits them. test-driven-development's Iron Law decides WHETHER a test gets written
    and wins outright; chameleon's derived "skip tests where siblings have none" describes what the
    repo does today, which is not a licence to skip a test the user asked for first, and it governs
    SHAPE only. using-git-worktrees asks consent before creating a worktree, which is right when
    the worktree is the model's idea and wrong for /chameleon-deep-work, where invoking the
    command IS the consent. brainstorming's hard gate forbids deep-work as a next skill, the
    direction v4.5.15 did not cover — it ruled out only deep-work → brainstorming.
  • Peer detection reads the config directory actually in force. Both file reads were hardcoded
    to ~/.claude, so a session under CLAUDE_CONFIG_DIR was answered from the developer's real
    config — wrong in both directions: a sandbox with no superpowers inherited the block, and a user
    whose only registry lived in the relocated dir was vetoed by a ~/.claude that had none. An
    unexpanded ${...} placeholder still falls back to ~/.claude.
  • Both detection rungs now test the same marker. Rung 2 required superpowers' bootstrap skill
    while rung 1 accepted any directory that merely existed — and rung 1 is the one that answers on
    every ordinary install, so any plugin named superpowers in any marketplace satisfied it. One
    stat call either way.