internext
What it does: A single-skill Clavain companion plugin whose entire product surface is the next-work SKILL.md: it instructs the agent to gather beads state (bd list/ready/stats, claim checks via bd state, optional cass file-activity warmth), score ready P0-P2 candidates on impact/effort/risk (1-5 each), apply a completion bias (finish in-progress > start new) and a dependency-leverage impact bonus (an item that unblocks 3 others outranks a standalone), respect graduated claim-freshness windows (hot <15m / warm 15-45m / stale >45m), and emit an opinionated recommendation with explicit tradeoff prose. A companion top-skills.py script separately ranks recently-used skills from ~/.claude/audit.log via recency-weighted invocation counts (a fast, no-LLM statistical pass). No MCP server, no hooks, no agents.
Rationale: Mature, tightly-scoped, and genuinely well-reasoned (graduated claim freshness, cass warmth, an explicit two-tier surface separating the heavyweight LLM thinking-pass from the cheap statistical helper). It works and earns a keep on quality. It lands at improve, not keep, for one SOTA-grounded reason: the main skill is a pure full-LLM analytical pass for EVERY ‘what next?’ query, when the mechanical core of prioritization (the impact/effort/risk scoring, dependency-leverage bonus, completion-bias ordering) is deterministic and should run as a no-LLM pre-scorer over bd JSON — a deterministic-skeleton + LLM-island shape, with the frontier model reserved only for the tradeoff narrative. The author already demonstrates this exact instinct in top-skills.py; the main skill just hasn’t been split that way. Secondarily, integration.json promises interstat-based historical effort calibration but the skill body never consumes it, so effort/risk scores are ungrounded LLM guesses with no feedback loop.
SOTA gap: Embedding/deterministic semantic gating as a no-LLM fast path (Select-then-Solve arXiv routing, RAG-MCP, agent-distillation for routine triage): the deterministic parts of scoring should be computed mechanically and reproducibly, reserving the LLM for synthesis only. Compounding gap: no closed-loop calibration of predicted effort/risk against actual outcomes (EvolveR / experience-replay self-improvement: distill past session outcomes into a recalibrated scorer rather than re-guessing each time), and no variance/reliability discipline (Beyond-pass@1) over the recommendation — a deterministic scorer would also make picks auditable and low-variance.
Redundancy: Low. Clean boundaries with adjacent plugins: interphase tracks lifecycle phase/gates (when to transition), not which item to pick; interspect routes/profiles agents, not work items; interpath generates roadmap/PRD artifacts, not session-level next-task picks; intertrack measures feature success metrics, not backlog prioritization. internext uniquely owns ‘which single bead should I touch this session.’ The only soft overlap is with interspect’s scoring machinery and interstat’s effort data — which argues for consuming them (the unrealized integration.json companions), not for merging.
Actions:
- Split the skill into a deterministic pre-scorer + LLM synthesis: add a scripts/score-beads.py that ingests bd JSON (list/ready/stats + bd state claim data) and emits ranked candidates with computed impact/effort/risk, dependency-leverage bonus, and claim-freshness flags; the SKILL.md then only writes the tradeoff narrative around that table. Makes the common case cheap, reproducible, and auditable.
- Wire the promised interstat/cass calibration: feed historical effort (intersearch session duration, interstat token cost, bead lead-time from bd stats) into the effort/risk scoring so estimates are grounded in past outcomes, not pure LLM guesses — closing the integration.json gap.
- Add a lightweight calibration loop (roadmap item INXT-N1): periodically compare predicted effort/risk against actual completion data and surface confidence thresholds, so the scorer self-corrects (experience-replay discipline, no training run).
- Document the deterministic-vs-LLM boundary in CLAUDE.md design decisions so future sessions don’t collapse the two tiers back into one monolithic prompt.