SuperAPI AI Directory

issue-pr-lifecycle-agent

Deployment & operations

View repository

Updated 10-16 08:01

About this skill

Issue PR Lifecycle Agent (issue-pr-lifecycle-agent)

Routing Directive: USE ONLY when orchestrating or dry-running the full lifecycle flow (Issue -> Worktree -> PR -> Close resolution). DO NOT USE for individual isolated worktree setup (use issue-worktree-agent instead), task scratchpads (use task-agent instead), or friction logging (use github-issue-agent instead).

The issue-pr-lifecycle-agent skill connects git worktree execution with GitHub CLI operations (gh pr create, gh issue close) into a single, verifiable workflow pipeline.


Safety & Security Contracts

  1. Dry-Run by Default: Execution defaults to dry-run payload generation (--execute flag required for live changes).
  2. Linked Resolution: Automatically appends Closes #NNN to PR bodies to enforce automatic resolution tracking.
  3. Structured Flow: Sequence: Worktree Creation -> PR Submission -> Issue Closure -> Worktree Cleanup.

Usage catalog

Orchestrate End-to-End Lifecycle

  • Helper Script: plugins/dev-utils/skills/issue-pr-lifecycle-agent/scripts/issue_pr_orchestrate.py
  • CLI Usage:
    # Dry-run payload generation for Issue #42:
    python3 plugins/dev-utils/skills/issue-pr-lifecycle-agent/scripts/issue_pr_orchestrate.py --issue 42 --title "Fix login bug" --body "Resolves crash on empty password"
    
    # Live execution of end-to-end lifecycle:
    python3 plugins/dev-utils/skills/issue-pr-lifecycle-agent/scripts/issue_pr_orchestrate.py --issue 42 --title "Fix login bug" --body "Resolves crash on empty password" --execute
    

Python API Interface

from plugins.dev_utils.skills.issue_pr_lifecycle_agent.scripts.issue_pr_orchestrate import (
    orchestrate_lifecycle,
    generate_lifecycle_payload,
)

# Generate dry-run payload
payload = generate_lifecycle_payload(issue_number=42, title="Fix bug", body="Fixes #42")

# Orchestrate lifecycle
res = orchestrate_lifecycle(issue_number=42, title="Fix bug", body="Fixes #42", dry_run=False)