/insights: HTML-only output, doesn't check installed tooling, and several smaller gripes
Related issues
- #26938 (closed, NOT_PLANNED → inactive) — "consider stronger model or dedup against existing CLAUDE.md". Same problem space as section E below.
- #29919 (closed, dup of #26938) — re-raise of the same.
- #59349 (closed, dup of #29919) — third re-raise; auto-closed by dup-bot.
- #57936 (open) — "Make /insights a first-class workflow primitive (3 asks)". Overlaps section D (HTML-only / iterating with Claude) and section F (output-format option), from a composability-with-wrapper-skills angle.
This issue raises three novel asks (A, B, C) and re-raises three existing asks (D, E, F) — the re-raise is intentional, since the dup-bot has silently closed the dedup-against-installed-config ask three times without it being addressed.
---
A. When friction persists despite existing mechanisms, say so
The worst failure in practice. The report flagged a recurring friction and recommended adding new CLAUDE.md prose to address it — when in fact multiple rules, two plugin-provided skill "Iron Laws", and several memory entries were already targeting that exact antipattern. The friction recurred despite all of them, which is a different finding than "no mechanism exists".
The report should detect this case and label it accordingly — e.g.:
Recurring friction despite existing mechanisms: This is targeted by [list]. The mechanisms exist; the model isn't consistently following them. Adding more textual rules is unlikely to help — consider escalating to a structural mechanism (hook, output gate) or accepting that this friction requires per-turn human-in-the-loop correction.
Without this, the skill produces the worst kind of recommendation: "add to CLAUDE.md what is already in CLAUDE.md (and in rules, and in skills, and in memory)".
B. HTML color combinations are unreadable in some viewers
The .pattern-prompt blocks render as gray-on-near-black in at least one common viewer — likely a dark-mode browser/extension overriding the unset background on <code> elements while the explicit slate color stays. The local CSS uses low-specificity selectors with no explicit background on <code>, so any code { background: ... !important } extension rule wins.
C. Add an option to skip charts
Most of the HTML is bar charts. They age fast — once the user edits the textual recommendations, the charts go out of sync and start misleading. A --no-charts flag (or making charts opt-in) would make the report cleaner for the actionable-findings use case.
---
D. HTML-only output wastes tokens for iterative editing
(Overlaps with #57936 from a different angle — they want structured JSON for composability with wrapper skills; this is about Claude itself iterating on the report inside the conversation.)
The report ships as a single ~30 KB HTML file optimized for visual delivery (gradients, copy buttons, interactive checkboxes). When asked to refine sections of it conversationally, every read pulls in tag/class/CSS/JS overhead — easily 3–5× the equivalent markdown. The skill seems to assume "generate once, user reads it, done" rather than "user collaborates with Claude to iterate on it".
E. Recommendations don't check installed tooling or memory
(Re-raise of #26938 → #29919 → #59349, all closed without being addressed.)
In a mature setup, most of the report's suggestions duplicated what was already installed — custom commands, project skills, configured hooks, plugin-provided skills, persistent memory entries, and CLAUDE.md sections that already encoded the same discipline the report proposed adding.
Before generating recommendations, the skill should enumerate and cross-reference the full layered set:
- Project-scoped:
.claude/rules/,.claude/commands/,.claude/skills/, hooks in.claude/settings.jsonand.claude/settings.local.json. - User-scoped:
~/.claude/rules/,~/.claude/commands/,~/.claude/skills/, hooks in~/.claude/settings.json. - Plugin-provided: skill catalogs of every enabled plugin in
~/.claude/settings.jsonenabledPlugins. - Persistent memory: the user's
MEMORY.mdand the individual entries it indexes.
Items already covered should be filtered out; partially covered ones should explicitly cite what they extend.
F. Add an output-format option
(Overlaps with #57936 from a different angle — they want JSON for programmatic consumption; this asks for markdown for iterative editing.)
--format=md, --format=html, or --format=both. Markdown should be the default when the user is likely to iterate on the report inside Claude Code itself; HTML is the right choice when the report is a one-shot share.
---
Reproduction
Run /insights in a Claude Code session against any project with a non-trivial .claude/ directory and populated persistent memory.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗