nablr — What SuperClaude Gets Right (Adoption Recommendations)
Adoption Research · Grounded in Source, Not Marketing

What SuperClaude Gets Right — and What nablr Should Steal

Follow-up to nablr vs. SuperClaude Framework · 2026-08-06 · grounded in direct reads of src/nablr/tools/pattern_learner.py, context_graph.py, compliance_remediation.py, tier1_fixer.py, handoff_logger.py, runner/gate.py, prompts/start_agent.py, and the live nablr-reports/ artifacts on disk

Verdict

nablr doesn't need SuperClaude's mechanism — it needs to finish wiring the mechanism it already built. Every high-value idea in SuperClaude (cross-session learning, token-efficient loading, pre-build review) already has a code-level counterpart sitting half-built inside nablr: a pattern-capture tool nobody calls automatically, a context graph that's loaded whole but barely used, a remediation tier system with no memory of its own outcomes, and an FPY metric that was written about in an audit but never instrumented.

The actionable move isn't "import SuperClaude's behavioral modes." It's: close the loops nablr already has open, using the diagnosis SuperClaude's own architecture points at — that eager, uncurated context is the dominant token-and-quality cost, not prompt verbosity.

Scorecard

Pattern learning Orphaned
Storage + retrieval real (pattern_learner.py), zero automatic callers outside manual dispatch. No learning from failures.
Context graph Eager, edgeless
16.5MB / 32,413 nodes / 144 edges (99.6% disconnected). Loaded whole every session to surface ~5-8 nodes.
Remediation tiers Real, verified — no memory
Tier1 genuinely idempotent (before/after ruff counts). No cross-session success/failure trend anywhere.
FPY / token-cost metrics Not implemented
Zero cost/retry fields in handoff_log.jsonl (1,701 real lines). Audit's "FPY" section was aspirational.
Persona rule loading Eager, whole-file
Developer persona: 10 files, ~12.6k tokens, reloaded on every phase transition. No lazy/section loading.

Current state — five subsystems, code-confirmed

Recommendation 1 — Lazy/selective rule loading Highest token impact

Where it comes from: SuperClaude is rebuilding its own loader in v5 specifically because eager-load-all-instructions doesn't scale (GitHub issue #419) — the exact disease confirmed at start_agent.py:106.

What to change: load rule sections by phase-need, not the whole persona bundle. A developer persona doesn't need architecture-review rules until PR-review phase; a scrum_master doesn't need the same intake checklist re-read at every subsequent phase transition it bookends. Split the current whole-file concatenation into phase-tagged sections and only pull what the current phase requires.

Expected effect: cuts a meaningful share of the ~12.6k-token developer payload per activation — and activation repeats across every phase transition in a story, so the saving compounds, not a one-time discount.

Recommendation 2 — Query the context graph, stop loading it whole Second-highest impact

Where it comes from: not a literal SuperClaude feature — but the same lesson their memory delegation (to the Serena MCP server, which is query-on-demand rather than an eager dump) points at. nablr already built the query surface; it just isn't the default path.

What to change: swap format_for_prompt_graph's "load the whole 16.5MB file into memory, BFS in-process" for an indexed/on-disk query using the existing get_related/subgraph/query actions in context_impl.py. Separately: the graph's 99.6% edgeless issue-node pile suggests capturing raw scan findings as graph nodes isn't earning its cost — either start writing real edges (issue → file → decision) or stop dumping issues into the graph and let TECH_DEBT.md carry that data instead.

Expected effect: near-zero session-start IO/memory cost instead of a 16.5MB full-file load for a 5-8 node prompt injection.

Recommendation 3 — Close the pattern-learning loop Directly raises first-pass acceptance

Where it comes from: SuperClaude's "ReflexionMemory" pitch — closing the loop between an error occurring and a future session remembering it. The pitch itself is self-described and unverified in their repo, but the diagnosis is right, and nablr has the storage half of this already built and unused.

What to change: auto-fire capture_pattern when a Tier2/Tier3 remediation halts (compliance_remediation.py's tier dispatch) and when a fix-flow forensic RCA closes, tagged with the triggering rule ID. Then have find_patterns auto-inject its top matches into the developer/architect prompt on activation — today it has zero callers outside the manual MCP dispatch at server.py:1258-1272.

Expected effect: repeat mistakes surface at build-time instead of being rediscovered at the next Tier3 halt or the next audit. This is the most direct lever on first-pass acceptance of anything on this list, because it acts before the code is written rather than after.

Recommendation 4 — Pre-build multi-perspective review Cheapest FPY win

Where it comes from: SuperClaude's "Business Panel" mode — running multiple specialist angles over a plan before committing to it.

What to change: before a spec/design doc is marked ready-for-build, run architect + security_owner + qa_lead perspectives over it as a cheap gate, reusing personas that already exist rather than adding new ones. Nothing about this requires new infrastructure — just an additional review step wired into the existing Specifier→Architect phase boundary.

Expected effect: catching a bad spec at this stage costs one review pass. Catching the same defect at a Tier3 halt costs a full forensic→strategist→developer remediation cycle (nablr's own known worst inefficiency, per the earlier audit's rework-dominates-token-cost finding). This is a cheap trade.

Recommendation 5 — Instrument for FPY, don't just describe it Foundational, not urgent

Where it comes from: steal the practice of publishing cost/efficiency telemetry — not SuperClaude's actual numbers, which are self-reported ("2-3x faster, 30-50% fewer tokens") with no independent verification anywhere in their repo or docs.

What to change: add payload_tokens and retry_count fields to the existing handoff_logger.py:log_event call (:109-139) — same file, same write path, no new subsystem. override_rate_report.py:60-155 is a working template for exactly this shape of longitudinal parse; clone its structure for a real FPY report instead of writing another aspirational doc about one.

Expected effect: turns nablr's own previously-promised STORY-FPY-METRICS-001 from aspirational prose into a computable report, and gives every other recommendation on this page something to be measured against.

What not to adopt

Suggested sequence

Do first — cheap, code-local, no new subsystems

  1. Add payload_tokens/retry_count to handoff_logger.py:log_event (Rec 5) — everything else benefits from having this data flowing before it's needed.
  2. Wire automatic capture_pattern calls on Tier2/Tier3 halts and fix-flow RCA close (Rec 3) — reuses existing storage, just adds callers.

Do next — moderate refactor, high token payoff

  1. Swap context graph's eager whole-file load for the existing query actions (Rec 2).
  2. Split persona rule bundles by phase-need instead of whole-file concatenation (Rec 1).

Do when bandwidth allows

  1. Add pre-build multi-perspective review gate at Specifier→Architect boundary (Rec 4).
  2. Build the real FPY report off the now-instrumented handoff log (depends on step 1 above having run long enough to accumulate data).

Method & caveats

Grounded in a direct source read of five nablr subsystems (pattern_learner.py, context_graph.py + live context_graph.json on disk, compliance_remediation.py + tier1_fixer.py, handoff_logger.py + runner/gate.py, prompts/start_agent.py), plus the earlier comparison research against SuperClaude's public README, install docs, and one third-party critique. All nablr file:line citations and measured artifact sizes (16.5MB graph, 1,701 handoff-log lines, per-persona byte counts) are from direct reads, not the audit report or memory.

Caveats: SuperClaude's own efficiency claims ("2-3x faster," "30-50% fewer tokens") are self-reported by that project with no independent benchmark found — they're cited here only as the stated diagnosis behind their loader rework, not as a number nablr should target. nablr's own artifact sizes are a point-in-time snapshot (2026-08-06) and will drift as the project accumulates more scan/session data.