Skip to content

feat: design provider-agnostic issue-to-PR automation pipeline #1

Description

@ClaudiaFang

Goal

Build a bot that automates the issue-to-PR lifecycle on a GitHub Project (v2) board, and later other trackers, driving multiple possible AI coding agents — not locked to a single vendor.

Pipeline

  1. Issue status → Ready: bot analyzes the requirement and writes a design/plan back to the issue as a comment.
  2. Human reviews and approves the plan.
  3. An AI coding agent clones the repo, creates a git worktree/branch, implements the change, and runs the target repo's tests locally.
  4. Bot opens a PR linked to the issue (Closes #N), moves the issue to Review.
  5. If the human requests changes on the PR, the bot re-invokes the AI agent against the same branch to address feedback.
  6. Human merges the PR → issue auto-closes (native GitHub behavior) → bot reconciles the project board status to Done.

Hard architectural requirement: provider-agnostic

Two integration points must be abstracted behind interfaces from day one, not hard-coded:

  • Tracker provider — GitHub Issues + Projects v2 today, GitLab Issues/Boards as a future provider. Interface covers: watch/poll status transitions, read issue body/comments, post a comment, open a PR/MR linked to an issue, read PR/MR review state, update the project board status field.
  • AI agent provider — Claude Code today, Codex CLI (and others) as future providers. Interface covers: given a repo path + task description + worktree, run the agent and return success/failure + a summary. The "write plan" step and the "implement" step both go through this interface and may use different concrete providers.

No orchestration code may call gh/Octokit or a specific agent CLI directly — only through the provider interfaces (src/providers/tracker/, src/providers/agent/).

Notes

  • Repo is public; secrets (tracker tokens, agent API keys) must never be committed — env vars only, secret-scanning skill guidance applies.
  • Local harness (feature_list.json) already breaks this into 12 trackable sub-features covering both provider interfaces, GitHub + Claude Code concrete implementations, and the orchestration state machine.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions