Skip to content

feat(source-control): ship the pr_open_state default as ready #8655

Description

@kyle-sexton

Refs: #7576
Refs: #7555
Decision: #7555 (comment) (default); unattended runs: owner 2026-10-20, Decision recorded comment on this issue

Agent Brief

Type: Feature
Summary: The source-control plugin's bundled pr_open_state default flips from draft to ready, so a consumer who sets nothing gets ready PRs. A request for a draft still opens a draft. An unattended run follows pr_open_state the same way an attended run does (owner, 2026-10-20).

Problem: The owner chose open-as-ready (Q501), and #7576 records the setting's default as ready, but the plugin still ships draft. Only repositories that set the key, like this one, get ready PRs.

Current behavior:

  • plugins/source-control/.claude-plugin/plugin.json:42-48: pr_open_state "default": "draft", description "draft (default) leaves it for ready to flip later".
  • plugins/source-control/README.md:543 repeats "draft" as the default.
  • plugins/source-control/skills/pull-request/SKILL.md:50: "with none of them set the state is draft; a repository opts into ready. An unattended run leaves a draft whatever the value."
  • plugins/source-control/reference/config-resolution.md:157-176 lists the levels.
  • plugins/source-control/skills/pull-request/evals/evals.json cases at lines 330 and 536 expect draft from the default level.
  • This repository sets pr_open_state: ready (docs/conventions/source-control.yaml:4).

Desired behavior:

  • plugin.json default ready; its description, README.md:543, pull-request/SKILL.md:50 and config-resolution.md say ready is the default and a consumer opts into draft.
  • An unattended run follows the resolved pr_open_state like an attended one: drop "An unattended run leaves a draft whatever the value" from pull-request/SKILL.md:50 and every other place the skill says unattended runs always open a draft (search the pull-request skill's files for it), and open as ready when the value resolves ready. The ready flow's holds still apply (ready --unattended and check-ready-holds.sh).
  • Unchanged: a request for a draft wins over every level; the repository level is read at the base branch.
  • The two default-level eval cases expect ready (create runs the ready phase); the draft-request case still expects draft; an unattended case expects the resolved value.

Key interfaces:

  • Setting pr_open_state (bundled default ready).

Done when:

  • The diff sets "default": "ready" for pr_open_state in plugins/source-control/.claude-plugin/plugin.json and updates the four texts listed (read from the diff).
  • plugins/skill-quality/scripts/check-evals-quality.sh plugins/source-control/skills/pull-request/evals/evals.json exits 0.
  • scripts/check-changelog-fragments.sh --check passes, with one major fragment for source-control (a changed default changes behavior for consumers who set nothing).
  • CI's check-plugins passes on the PR (a PR check; this run does not run it).
  • CI's check-skills passes on the PR (a PR check; this run does not run it).

Out of scope:

Origin:

  • Open every PR as ready: hers (Lauren's opening-a-pr playbook).
  • Draft only as a multi-session container: Matt's (implement-spec); kept by the request level.
  • Bundled default ready: the owner's (Q501), confirmed 2026-10-20 over the h8 relay that it stays draft.

Do not run with: other pull-request skill changes.

Size Small, Complexity Low, Uncertainty Known.


Slice of #7576 (Phase 8, pr-states), filed from the owner's 2026-10-20 disposition round.

Activity

  1. added
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    on Oct 20, 2026
  2. kyle-sexton commented on Oct 20, 2026

    @kyle-sexton
    MemberAuthor

    Decision recorded. The owner answered in the poteto-review session (2026-10-20, question dialog): unattended runs follow pr_open_state like attended ones ("Follow pr_open_state"). This replaces the brief's earlier line that an unattended run always opens a draft. Basis: the owner's Q91 (open as ready). The body is amended: drop the always-draft sentence from pull-request/SKILL.md:50 and its siblings; the ready flow's holds still apply.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    status: readyTriaged, unblocked, and fully specified; eligible to pick up.

    Fields

    No fields configured for Feature.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions