Skip to content

Release 1.0.0 - #1

Merged
TLXyloph merged 4 commits into
mainfrom
release/v1.0.0
Oct 15, 2026
Merged

TLXyloph merged 4 commits into
mainfrom
release/v1.0.0

Conversation

@TLXyloph

@TLXyloph TLXyloph commented Oct 15, 2026 •

Copy link
Copy Markdown
Owner

Summary

First public release of resolve-issue, version 1.0.0. It is a Claude Code plugin that takes one GitHub issue URL to a validated pull request, ready to open, and publishes only after you approve.

It ships:

  • the /resolve-issue skill, which asks about cost once, runs the pipeline, shows the result and runs the publish step only after you approve;
  • the pipeline workflow, with four modes (triage, quick, standard, thorough), five effort levels, an agent cap enforced in code and stops you can resume;
  • finding decisions: every gate finding gets one recommendation (fix, low-impact, decline or note), and a low-impact call needs evidence, which the code enforces. The autonomy option (ask, minor by default, or full) and rounds=N set how much the skill settles or fixes on its own at validation gates. Publishing always waits for your approval;
  • a publish guard: PreToolUse hooks in POSIX sh and awk. During a run, and in a resolve-issue worktree, they block publishing by subagents. In a worktree, the main session needs a one-time approval token. The skill creates one on its own only to answer a validation run that cannot publish;
  • the docs: the README, docs/ (how it works, modes and cost, configuration, publishing, safety, troubleshooting), SECURITY.md, CONTRIBUTING.md and CHANGELOG.md.

Testing

  • npm test: 289 tests pass.
  • RELEASE=1 npm run lint: ok (41 files).
  • claude plugin validate --strict passes on the plugin, its manifest and its skills.
  • shellcheck passes on both hook scripts. The guard's tests also pass with dash as /bin/sh and with mawk and gawk.
  • Live runs on Claude Code 2.1.296:
    • triage on 10 issues;
    • quick, standard and thorough on one Pelican bug, two runs per mode. These ran on the release candidate, before the last review fixes and before finding decisions were added. No pull request was opened.
    • a standard run on the same bug at autonomy=full rounds=1, through a no-mistakes gate in a scratch clone: 25 minutes and $6.16. Its validation run passed with no findings, so the gate never parked. Nothing was published.
    • a parked gate answered by the skill: a validation run that parked on one review finding. Without the validation-run record, the skill refused to answer. With it, the skill checked the run, logged its decision and answered once. The run then passed with push, pr and ci skipped. Nothing was published (about $2).
  • Three replays of a real issue's gate findings, non-interactive, at autonomy=minor (under $1 each). 5 of 9 pre-registered expectations passed. A crash stayed fix, a logged decision was not asked again, every low-impact call carried evidence, no gate was answered, and nothing was published. Two records checks could not run, because the issue already had an open PR from the same branch. One call was a judgment call. In the last, a finding was called fix where low-impact was expected; in isolated probes, the rule called it low-impact 4 times out of 4.
  • In a real session, the guard blocked 8 publishing forms in a worktree, plus a push from a workflow agent.
  • On the final code, on Claude Code 2.1.300:
    • a triage run of the plugin through claude -p (2 agents, about 105 seconds, $0.90; nothing was posted on the issue);
    • an install from the repository's own marketplace into an isolated config;
    • npm test under Node 20, 22 and 24 on macOS: 289 tests pass on each.
  • Five rounds of adversarial review covered the guard, the engine and the docs. Every confirmed finding from them is fixed and has a test. Finding decisions then had their own reviews: one per task, a whole-change review, and a scoped re-review of every fix.
  • A no-mistakes validation run, with push, PR and CI skipped, reviewed the whole tree. Its review raised three warnings, and this PR fixes all three: W1 now counts only your own PRs, the unreleased resume-argument aliases are gone, and a second check makes sure every stop code the test scenarios return is documented. Its test step then drove the plugin in Claude Code 2.1.300 against a local mock API, and the install, the publish guard and the argument checks all passed.
  • Differential fuzzing compared the guard's decisions with real shells on 14,753 publishing cases and 4,000 directory cases. The guard's one miss is a form that docs/safety.md lists as a limit (a case pattern's )). In 272 more cases, quotes or a backslash split a word (git p''ush), and the guard denies all of them. Replayed through Claude Code 2.1.296's own if matching, 213 of the 270 distinct commands reach the guard. The other 57 put the split word inside text that another shell or eval reads (sh -c "git pu\sh"), so they never reach it. This is a known gap, outside the guard's threat model.
  • In timing tests, the slowest command took the guard about 1.5 seconds, and under 3 seconds with eight hooks running at once. The hook timeout is 15 seconds.

Checklist

  • Docs updated (README, docs/, skills/resolve-issue/) where behavior changed
  • CHANGELOG.md has the 1.0.0 section
  • No machine-specific paths (home directories, local clones, temp folders)

@TLXyloph TLXyloph changed the title feat: release resolve-issue 1.0.0 Claude Code plugin Release 1.0.0 Oct 15, 2026
@TLXyloph
TLXyloph merged commit 6faa303 into main Oct 15, 2026
8 checks passed
@TLXyloph
TLXyloph deleted the release/v1.0.0 branch October 15, 2026 14:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant