Repository navigation
Releases: jeffrigby/somepulp-agents
Release list
v3.4.0 — /update-deps for safe two-pass dependency updates
Adds /update-deps, a dependency updater for JavaScript/TypeScript projects — npm, pnpm, and yarn (classic and berry).
v3.4.0 — /update-deps
It snapshots what is outdated, analyzes each pending major in parallel, then puts both passes behind a single approval gate before writing anything. Majors are applied only when proven safe for this codebase; the rest are held back with a specific blocker and a rough migration cost — never "may contain breaking changes".
/update-depsskill — the orchestrator.disable-model-invocation: truesince it mutatespackage.json. It never commits and never auto-reverts: on a verification failure it reports the error, names the packages that were applied, and leaves the tree for you. Modes:minors-only,majors-only,dry-run,sequential.major-upgrade-analyzeragent — one subagent per major. Sources the breaking-change record (Context7 →npm view→ the project's own changelog → web last), checks four hard gates (Node runtime floor, peer deps, ESM-only module format, TypeScript floor), then greps each documented breaking change against real call sites. Returnssafe/safe-with-edits/waitat confidence ≥ 80, with ties breaking towardwait.scripts/dep-outdated.sh— normalizes the package managers into one JSON shape, including the manager-appropriate update, install, and workspace-flag templates so consumers never hardcode a manager's syntax. Read-only.
Monorepo support
npm outdated at a workspace root reports the union across every workspace and names the owner in dependent, so the script reads every workspace manifest and resolves each finding back to the package that declared it. This closes two bugs that only a real monorepo exposed:
- Reading only the root manifest reports a workspace devDependency as a prod dependency.
- A bare
npm install <pkg>@<ver>at a workspace root adds the package to the root manifest as a newdependenciesentry and leaves the owning workspace untouched — silently wrong in two directions at once. Fixed withworkspaceFlagTemplate(npm-w, pnpm--filter, yarn berry'syarn workspacecommand prefix).
Workspace owners match on both the package name and the directory basename, because npm identifies the root package by its directory, not its name.
Coupling resolution
Analyzers judge one package each, so a family locked by exact mutual peer pins — vitest + @vitest/coverage-v8 + @vitest/browser-playwright, say — produces N wait verdicts that all say "cannot move alone". A pass before the plan collapses those into one group, re-derives the verdict with the mutual-pin gate discounted, and applies the group atomically.
Package-manager quirks absorbed
- yarn (classic and berry):
yarn outdatedemits NDJSON on classic and does not exist on berry, so both use read-onlynpm outdated --jsonagainst the installed tree, reported asoutdatedSource: "npm-fallback". - yarn berry:
updateCommandisnullbecauseyarn up '*'resolves to latest and crosses majors; in-range updates go per package with the declared range.
Also
library-modernizernow ends its Library Health section with a/update-depshandoff when it finds major-version drift, mirroring the existing dead-code →/dead-code cleanuppattern. That agent reports drift;/update-depsapplies it.
Known gaps
Yarn is exercised through the npm-fallback resolver against a simulated lockfile, not a real Yarn project. Berry PnP (no node_modules) reports every package as unknown; the skill says so explicitly and points at yarn install --mode=update-lockfile. Python, Rust, and Go are out of scope for this release.
Install / upgrade
/plugin install codebase-health@somepulp-agents # 2.4.0
Full diff: v3.3.0...v3.4.0
v3.3.0 — slash commands migrated to skills, docs alignment
Backfilled release for the v3.3.0 tag.
v3.3.0 — slash commands migrated to skills
- All plugins: Migrated every slash command from
commands/*.mdtoskills/<name>/SKILL.md. Custom commands have been merged into skills upstream — both forms create the same/<name>and behave identically — and the docs now direct new plugins toskills/. Thecommands/directories are gone;/deep-audit,/dead-code,/update-docs,/research, and/official-docsare unchanged for users. Each migrated file gained anamematching its directory and awhen_to_usefield. - codebase-health 2.3.0:
/deep-audit's Stop hook switched fromtype: prompttotype: agentwithtimeout: 120. The hook checks the filesystem for thecode-audit-*.mdreport, which a prompt hook cannot see — it receives only the hook's JSON input. - codebase-health 2.3.0: Added a
## Contentstable of contents to all five skill reference files over 100 lines.
Fixed
dead-code-methodology.mddocumenteddeadcode . --verbose, which is not a deadcode flag; replaced with--count.code-auditingSKILL.md listeddeadcode . --dryas the detection command; detection isdeadcode .(--drypreviews fixes).- CLAUDE.md: Corrected three claims the official docs contradict — the 1,536-character cap is the skill listing cap on
description+when_to_use(subagent descriptions share a ~15,000-token budget);Agentis stripped from a subagent only at the nesting depth limit, andtoolssupportsAgent(type); the subagent tool filter does not apply to skills, which run in the main conversation unless they setcontext: fork.
Install / upgrade
/plugin install codebase-health@somepulp-agents # 2.3.0
/plugin install research-assistant@somepulp-agents # 1.5.0
Full diff: v3.2.1...v3.3.0
v3.2.1 — add code-quality-auditor to the renames map
Adds code-quality-auditor → codebase-health to the marketplace renames map — an early plugin name missed in the v3.2.0 lineage, so installs under that name migrate cleanly too. No plugin content changes.
v3.2.0 — plugin/skill best-practices modernization
Modernizes the whole marketplace against the current official Claude Code plugin, skill, sub-agent, slash-command, and hooks documentation. Versions: marketplace 3.2.0, codebase-health 2.2.0, research-assistant 1.4.0.
Added
- Marketplace: Replaced the dead
$schemaURL inmarketplace.jsonwith the SchemaStore marketplace schema, and added a top-levelrenamesmap recording the plugin lineage (code-auditor→codebase-health,codex-consultant/gemini-consultant→second-opinion,second-opinion→ retired) so old installs migrate cleanly. - All plugins: Added
$schema(SchemaStore plugin-manifest schema) as the first key in eachplugin.json. - codebase-health 2.2.0:
disable-model-invocation: trueon/deep-auditand/update-docsso these resource-intensive commands only run when the user invokes them. - research-assistant 1.4.0:
/researchand/official-docsnow declarecontext: forkandagent:in frontmatter, running directly as their agents in a forked context.
Changed
- All plugins: Trimmed
plugin.jsonmanifests to metadata only — removed the explicitagents,commands, andskillsarrays so default directory auto-discovery applies (explicit arrays replace the default scan, silently dropping newly added files). - codebase-health 2.2.0:
/deep-audithardening — scoped Bash pre-approvals instead of bareBash,Task→Agenttool rename, and a Stop-hookstop_hook_activeloop guard with an explicit{"ok": …}response contract. - codebase-health 2.2.0:
dead-code-cleanupandupdate-docsagents no longer listAskUserQuestion(unavailable inside subagents) — agents return a verified findings report plus a proposed plan, and the wrapper commands gather user approval in the main conversation before applying changes. - codebase-health 2.2.0: Skills reference bundled files via
${CLAUDE_SKILL_DIR}, use use-case-first descriptions with awhen_to_usetrigger-phrase field, anddocs-maintenancepre-approvesEdit/Write. - codebase-health 2.2.0:
dead-code-detect.shemits a single JSON envelope for mixed Node+Python projects with--format json, with graceful fallbacks for invalid knip output and missingjq; documented invocations quote"${CLAUDE_PLUGIN_ROOT}".
Full details in CHANGELOG.md.
v3.1.3 — scope audit Stop hook to /deep-audit runs
Backfilled release — the v3.1.3 tag was also missing and has been created at the release commit.
v3.1.3 — scope the audit Stop hook to /deep-audit runs
Fixed
- codebase-health 2.1.3: The audit-report
Stophook was firing on every turn-end in every session, not just audit runs.- The v3.1.2
hooks.jsonrepair activated a plugin-levelStophook that had silently never loaded (broken since its introduction in v2.2.0). Once loaded, it evaluated "was an audit report created?" at the end of every conversation turn — constantly nagging in sessions where no audit ever ran. - The hook now lives in the
/deep-auditcommand's frontmatter (hooks:field), which scopes it to the skill's lifecycle per the official hooks spec: active only while the command runs, cleaned up when it finishes. - Removed the plugin-level
hooks/hooks.jsonand thehooksentry fromplugin.json. The prompt now also states the approve path explicitly so it cannot re-block in a loop.
- The v3.1.2
Full diff: v3.1.2...v3.1.3
v3.1.2 — plugin manifest repairs, displayNames
Backfilled release — the v3.1.2 tag was also missing and has been created at the release commit.
v3.1.2 — plugin manifest repairs
Fixed
- codebase-health 2.1.2: Two
plugin.jsonbugs that made/doctorreport "skills load failed" and "Hook load failed".skillsentries now point at the skill directories (./skills/code-auditing,./skills/docs-maintenance) rather than theSKILL.mdfiles inside them.hooks/hooks.jsonevents are now nested under the required top-level"hooks"key — theStopevent was previously at the root, failing validation.
- README: Documented the optional AWS Documentation MCP server. The
research-assistantagent already listed its tools, but the README's MCP requirements mentioned only Context7 and Fetch.
Added
- All plugins:
displayName("Codebase Health", "Research Assistant") in plugin manifests and marketplace entries, for friendlier display in the/pluginpicker (Claude Code v2.1.143+; older versions fall back toname).
Changed
- Bumped
research-assistantto 1.3.2 to deliver the manifest metadata to installed users.
Note: repairing the hooks manifest activated a
Stophook that had silently never loaded since v2.2.0 — which then fired on every turn-end in every session. Fixed immediately after in v3.1.3.
Full diff: v3.1.1...v3.1.2
v3.1.1 — orchestrator boundary verification, mandatory skip notes
Backfilled release for the v3.1.1 tag.
v3.1.1 — /deep-audit orchestrator boundary hardening
Follow-up to the PR #8 review of the orchestrator refactor shipped in v3.1.0.
Fixed
- codebase-health 2.1.1: The orchestrator now verifies each specialist's return value against the expected
## <Name> Findingsheading and severity sections (### Critical/### High/### Medium) before pasting it into the report. Empty, missing-heading, or malformed results are recorded under a newSpecialists that failed:line in Notes instead of being silently dropped — a launched specialist is never omitted from the final report. - The dead-code skip note is now mandatory: when
deadis requested (or selected viaall) but no dependency manifest exists, Notes must include an explicitDead code: skipped — no manifestline, regardless of whether other specialists ran. - Added a
### Notessection to thelibrary-modernizerandcode-quality-revieweroutput templates so per-specialist skip-notes (Context7 unavailable, no CLAUDE.md to read conventions from) survive aggregation — closing a parity gap withsecurity-auditorandperformance-analyzer.
Full diff: v3.1.0...v3.1.1
v3.1.0 — deep-audit orchestrator, plugin modernization, second-opinion removal
First release in the 3.x line. Rolls up three unreleased CHANGELOG entries (v3.0.0, v3.0.1, v3.1.0) into a single tag — the v2.2.0 → v3.1.0 jump in the tag history is intentional.
v3.1.0 — /deep-audit orchestrator refactor
- codebase-health 2.1.0: Refactored
/deep-auditfrom a single 360-line monolithic agent into an orchestrator-of-specialists pattern, mirroring the officialpr-review-toolkitplugin.- The
/deep-auditcommand is now the orchestrator: it inspects the project, decides which specialists apply, launches them viaTask(parallel by default; opt-insequential), and aggregates findings intocode-audit-[timestamp].md. - Concerns split across four new specialist agents —
security-auditor,performance-analyzer,library-modernizer,code-quality-reviewer— and the existingdead-code-cleanupis reused in detect-only mode. - Specialists return structured findings blocks (Critical/High/Medium severity, confidence ≥ 80, file:line refs); the orchestrator owns the final report.
- Each specialist's description says "Used by the deep-audit orchestrator. Do not invoke directly." to prevent auto-triggering in normal conversations.
$ARGUMENTSnow supports per-aspect scoping (security,perf,deps,quality,dead,all) plus an optionalsequentialtoken to opt out of parallel execution.
- The
- codebase-health: Removed the monolithic
deep-auditagent (replaced by the orchestrator command + specialists).
v3.0.1 — Plugin modernization fixes
- All agents: Moved
<example>blocks out of the YAMLdescription:scalar into the markdown body. Multi-line examples were being parsed as a single oversizeddescriptionand getting truncated at the 1,536-char auto-routing cap. - Skills: Restored missing
allowed-toolsfrontmatter oncode-auditinganddocs-maintenance. - Skills: Removed non-spec
versionfield (skill version is implied by plugin version). - CLAUDE.md / README.md: Refreshed to remove stale references to the retired
second-opinionplugin and to match the JSON-arraytools:format actually used in agent frontmatter. - Bumped
codebase-healthto 2.0.1 andresearch-assistantto 1.3.1 to deliver the modernization fixes to installed users.
v3.0.0 — BREAKING: removed second-opinion plugin
- The Codex Claude Code plugin now provides built-in second-opinion functionality, and Gemini consultation was rarely used in this configuration. Users wanting external AI consultations should install the Codex plugin directly.
Install / upgrade
/plugin install codebase-health@somepulp-agents # 2.1.0
/plugin install research-assistant@somepulp-agents # 1.3.1
Existing installs of second-opinion, codex-consultant, or gemini-consultant from this marketplace should be removed — those plugins no longer exist here.
Full diff: v2.2.0...v3.1.0
v2.2.0 — skill auto-loading, hooks, read-only research agents
Backfilled release for the v2.2.0 tag.
v2.2.0 — skill auto-loading, hooks, read-only research
Added
- All plugins:
homepageandrepositoryfields inplugin.json. - codebase-health:
skillsfield on agents for automatic skill loading —deep-auditanddead-code-cleanuploadcode-auditing;update-docsloadsdocs-maintenance. - second-opinion:
skillsfield on agents —codex-consultantandgemini-consultantloadai-consultation. - research-assistant:
disallowedTools: Write, Editon agents for read-only safety. - codebase-health: prompt-based
Stophook for audit-report verification. - second-opinion: prompt-based
PreToolUsehook for Bash sandbox safety.
Changed
- research-assistant: Removed the bundled MCP servers (Context7, Fetch) — users commonly install these separately. The plugin now falls back to WebSearch/WebFetch when MCP is unavailable, with installation nudges when the tools are missing.
Removed
- research-assistant:
.mcp.json(Context7 and Fetch no longer bundled).
Note: the plugin-level
Stophook added here silently never loaded, due to a manifest nesting bug fixed in v3.1.2 — and once loaded it fired on every turn, fixed in v3.1.3 by scoping it to/deep-audit's frontmatter.
Full diff: v2.1.0...v2.2.0
v2.1.0 — consolidate consultants into second-opinion
Backfilled release for the v2.1.0 tag.
v2.1.0 — BREAKING: codex-consultant + gemini-consultant → second-opinion
Consolidated the two consultant plugins into a single second-opinion plugin sharing one ai-consultation skill with unified reference documentation.
- Old:
/plugin install codex-consultant@somepulp-agents+/plugin install gemini-consultant@somepulp-agents - New:
/plugin install second-opinion@somepulp-agents
Commands (/codex-opinion, /gemini-opinion) and agents (codex-consultant, gemini-consultant) are unchanged — only the packaging moved.
Removed
codex-consultantplugin (merged intosecond-opinion)gemini-consultantplugin (merged intosecond-opinion)
Note:
second-opinionwas itself retired in v3.0.0 — the Codex Claude Code plugin now provides this functionality. See the v3.1.0 release.
Full diff: v2.0.0...v2.1.0