feat: own the user-only /issue chat command + repo config#9
Merged
Conversation
Adds the `/issue` chat control command — the write the model must NOT do autonomously, so it's a user-only command (like /goal), not an agent tool. The plugin registers it through the host's register_chat_command seam. - gh_issue.py: ported, host-free /issue logic — parse flags (--bug/--feature/ --repo/--label/--dry-run), the gate-conformance check (same body rules the CI issue gate enforces), and `gh issue create`. `run_issue_command(rest, *, default_repo)` is the seam entry (the host already matched the token). - __init__.py: register /issue when the host exposes register_chat_command, GUARDED by hasattr so an older host without the seam still loads the tools and just skips /issue (degrade-safe). The handler closes over the plugin's own configured default repo — no host coupling. - manifest: add github.default_repo + github.repos config (+ settings fields) to route /issue and (later) the console views. Repo resolution: explicit --repo > default_repo > first of repos > GITHUB_DEFAULT_REPO/GH_REPO env > error. - tests: gh_issue parse/gate/file coverage; register wiring incl. the legacy-host (no-seam) degrade path; conftest gains a chat-command-aware + a legacy registry. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
👀 Quinn is reviewing — verdict (PASS / WARN / FAIL) + findings to follow. |
There was a problem hiding this comment.
QA Audit — PR #9 | feat: own the user-only /issue chat command + repo config
VERDICT: WARN (non-terminal CI — test in progress; re-review on terminal-green)
CI Status
- test: ⏳ in_progress
Diff Review
- Adds
/issuechat command viagh_issue.py(258 lines) +__init__.pyregistration wiring (27 lines) + PROTO.md docs hasattr(registry, "register_chat_command")guard ensures degrade-safe loading on legacy hosts — well-designed- Section-detection regexes kept in lockstep with CI gate — correct design for conformance guarantee
- Repo resolution cascade (
--repo>default_repo> env > error) prevents silent misrouting
Observations
- LOW: clawpatch structural review unavailable — repo not in project registry; review based on diff + static analysis only
- Gap: diff truncated at 200/601 lines —
run_issue_command,parse_issue_flags,effective_default_repo, and test files not fully reviewed. Everything in the visible portion is clean. - LOW:
_issue(rest, session_id)in__init__.pydefinessession_idbut never uses it — likely required by the host'sregister_chat_commandhandler contract, but worth confirming if the seam spec mandates it
No unresolved CodeRabbit threads. Visible code is well-structured with clear separation of concerns. Gate-conformance check (>=80 chars, required sections) matches the CI issue gate spec. Awaiting terminal CI for final PASS.
— Quinn, QA Engineer
|
Submitted COMMENT review on #9. |
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.
Re-opened against
main(the original #7 was auto-closed when its stacked base branch was deleted on #6's merge). Rebased onto main — carries only its own commit.What
Brings the
/issuechat control command into the plugin — a user-only command (not an agent tool), owned via protoAgent'sregister_chat_commandseam.gh_issue.py— host-free/issuelogic: flag parsing, the gate-conformance check (matches the CI issue gate),gh issue create.__init__.py— registers/issuewhen the host exposesregister_chat_command,hasattr-guarded so an older host still loads the tools (degrade-safe).github.default_repo+github.reposconfig + settings. Repo resolution: explicit--repo>default_repo> first ofrepos> env > error.Tests
test_gh_issue(parse/gate/file) +test_issue_command(register wiring incl. legacy-host degrade).ruff+pytest -q→ 64 passed.🤖 Generated with Claude Code