Repository navigation
feat: add deps plugin surface: triage skill, analyst agent, write guard - #2
Merged
Merged
Conversation
andyhorn
force-pushed
the
feat/deps-triage-plugin-surface
branch
from
October 12, 2026 13:23
67c020c to
78123c3
Compare
andyhorn
added this pull request to stack #4
October 13, 2026 18:23
…, skill Implements PR 2 of the deps plugin plan: gh IO layer with comment upsert planning, the triage.mjs collect/comment CLI, the PreToolUse write guard for deps:update-analyst, the /deps:triage skill, the analyst agent, and the plugin README. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G1oSUnqwgyib756icLxZzz
Reuse the core ANALYST_AGENT constant, take bumps from classify, document the analyst's allowed commands, correct the README bucket rules, and test the gh runner and JSON-lines paths. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G1oSUnqwgyib756icLxZzz
A hook exit code other than 2 is non-blocking, so an exception while evaluating an analyst payload would have let the command run. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G1oSUnqwgyib756icLxZzz
Collect reads open Dependabot alerts once per run and reports when they are unavailable; the analyst now quotes any instructions found in fetched text under Suspicious content instead of silently ignoring them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G1oSUnqwgyib756icLxZzz
andyhorn
force-pushed
the
feat/deps-triage-plugin-surface
branch
from
October 13, 2026 18:29
78123c3 to
ed8eb2a
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
plugins/depsa plugin:/deps:triageskill,deps:update-analystagent (sonnet; Bash, Read), and a plugin-levelPreToolUsehook that keeps the analyst read-only. The skill never merges, approves, or changes repo state; its only write is an opt-in, sanitized, idempotent--comment.scripts/triage.mjs(collect [<pr>]→ JSON,comment --pr N --body-file F) over an injectableghIO layer (lib/io/github.mjs) with preflight (auth, repo resolution, archived, Node ≥ 22), check-context pagination, defined exit codes, and a comment upsert that only ever updates a marker comment authored by the current user.routine= low review effort, not safe), recommended Dependabotcooldown/groupssetup and auto-merge caveats, and limitations.Review notes: findings from a 5-agent review were fixed in place, including a critical one (the guard originally allowed any non-gh/git command). Deferred by decision: trimming unused snapshot query fields (they mirror the captured fixtures), and Renovate PRs stay listed (they surface in
attentionas "not a Dependabot PR", per the plan's limitation). Security detection now reads open Dependabot alerts once per run (gh api …/dependabot/alerts); when alerts are disabled or unreadable the report says so and only thesecuritylabel is used. The analyst reports any instructions found in fetched text under Suspicious content.Plan
docs/plan/2026-10-09-feat-deps-triage-plugin-plan.md— PR 2 of 3 (Plugin surface). Stacked on #1. PR 3 (marketplace listing) follows once the live criteria pass.Test plan
node --test test/deps/*.test.mjs— 319 passclaude --plugin-dir ./plugins/deps plugin details deps→ Skills (1) triage, Agents (1) update-analyst, Hooks (1)claude plugin validate --stricton the marketplace and everyplugins/*/agent_type: "deps:update-analyst"inside the agent andnullon the main thread; exit 2 deniescollectagainst andyhorn/simple_routes: 4 Dependabot PRs, each in one bucket with per-fact evidence and evaluated SHA/deps:triagerun via--plugin-diron andyhorn/simple_routes: 4 PRs bucketed, 4 analyses with quoted changelog items and file:line usages;gh pr viewconfirms 0 comments/reviews, all still opengit log --oneline -3 | uniqwas blocked byguard-analyst.mjswith the allowlist message (the agent refusesgh pr commenton its own, so a non-allowlisted filter was used to exercise the hook)runGuardtest)Dependabot alerts are disabled for this repository. (HTTP 403)and falls back to the labelavailable, 0 openlodash@4.17.15); covered by unit and scenario tests/deps:triage 92 --commenttwice on andyhorn/simple_routes → one marker comment by the viewer (created 23:14:25Z, updated 23:15:45Z on the second run), no raw @mentions (the analysis quoted none, so neutralization is covered by unit tests only)🤖 Generated with Claude Code
https://claude.ai/code/session_01G1oSUnqwgyib756icLxZzz