sdd-pr — Create Pull Request

## Slash Command

9 stars

Best use case

sdd-pr — Create Pull Request is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

## Slash Command

Teams using sdd-pr — Create Pull Request should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/sdd-pr/SKILL.md --create-dirs "https://raw.githubusercontent.com/sc30gsw/claude-code-customes/main/sample/harness/next-js-pages/skills/sdd-pr/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/sdd-pr/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How sdd-pr — Create Pull Request Compares

Feature / Agentsdd-pr — Create Pull RequestStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

## Slash Command

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# sdd-pr — Create Pull Request

## Slash Command

```
/sdd-pr <slug>
```

## Purpose

Create a GitHub Pull Request enriched with SDD-specific content: a REQ → TASK → commit traceability table, review summary, and an acceptance-criteria-derived test plan checklist. Delegates the actual PR creation to the project's `git-pr` skill.

---

## Prerequisites

- `sdd-review` has been run: `review.md` must contain a `## Code Review` section.
- The feature branch must be pushed to the remote.
- No unresolved CRITICAL findings in `review.md` (see Warning below).

---

## Input Files

| File                                   | Purpose                                   |
| -------------------------------------- | ----------------------------------------- |
| `.claude/specs/<slug>/requirements.md` | REQ definitions and acceptance criteria   |
| `.claude/specs/<slug>/tasks.md`        | TASK definitions with REQ references      |
| `.claude/specs/<slug>/design.md`       | Architecture summary for PR context       |
| `.claude/specs/<slug>/progress.md`     | Task completion status and mode setting   |
| `.claude/specs/<slug>/review.md`       | Review findings to surface in the PR body |

---

## Mode Behavior

Both `standard` and `auto` modes produce the same PR content.

| Aspect                   | `standard`                             | `auto`                                |
| ------------------------ | -------------------------------------- | ------------------------------------- |
| Before creating PR       | Show draft PR body, wait for `CONFIRM` | Create PR immediately                 |
| If CRITICAL issues exist | Stop and require user decision         | Stop and require user decision (same) |

---

## Steps

### 1. Pre-flight: Check for CRITICAL Issues

Read `.claude/specs/<slug>/review.md`. Search for unchecked CRITICAL findings:

```markdown
### CRITICAL

- [ ] ... ← unchecked = still open
- [x] ... ← checked = resolved
```

If any unchecked CRITICAL findings exist under either `## Code Review` or `## Security Review`, output:

```
WARNING: Open CRITICAL issues found in review.md:
  - [src/features/foo/api/mutations.ts:42] Description of issue

Resolve all CRITICAL issues before creating the PR.
After fixing, re-run /sdd-review <slug> to update review.md.
```

Stop. Do not proceed until the user explicitly confirms they want to continue (exceptional case only, e.g., known false positive).

### 2. Build the Traceability Table

Collect commits on the feature branch that reference task IDs:

```bash
git log main...HEAD --oneline --grep="TASK-"
```

Parse each `### TASK-xxx` block in `tasks.md` for its linked REQ ID (look for `REQ-xxx` references in the task description or metadata).

Build the table:

```markdown
| REQ        | Description                         | Tasks              | Key Commits                              |
| ---------- | ----------------------------------- | ------------------ | ---------------------------------------- |
| REQ-001    | User can log in with email/password | TASK-001, TASK-002 | feat(TASK-001): Create login schema      |
| REQ-002    | Show validation errors inline       | TASK-003           | feat(TASK-003): Add inline error display |
| (Untraced) | —                                   | TASK-012           | feat(TASK-012): Fix loading state        |
```

Tasks with no REQ reference appear in an `(Untraced)` row at the bottom.

### 3. Build the Test Plan Checklist

Extract acceptance criteria from `requirements.md`. Each `### REQ-xxx` section typically contains an "Acceptance Criteria" or "AC" subsection. Convert each criterion into a checklist item:

```markdown
## Test Plan

- [ ] REQ-001: Login with valid credentials redirects to dashboard
- [ ] REQ-001: Login with wrong password shows "メールアドレスまたはパスワードが正しくありません"
- [ ] REQ-002: Empty email field shows inline validation error before submit
- [ ] REQ-002: Invalid email format triggers Valibot error message
- [ ] Regression: pnpm test:run passes (all existing tests green)
- [ ] Build: pnpm check passes (lint + format + tsc)
```

### 4. Build the PR Body Sections

**Review summary** — extract from `review.md`:

```markdown
## Review Summary

| Severity | Code Review | Security Review |
| -------- | ----------- | --------------- |
| CRITICAL | 0 open      | 0 open          |
| HIGH     | 2 open      | 1 open          |
| MEDIUM   | 3 open      | 0 open          |

> Outstanding HIGH issues (must resolve before merge):
>
> - [src/features/foo/components/foo-form.tsx:15] Using relative import path
> - [src/lib/api-client.ts:88] Missing input validation at boundary
```

Count open (unchecked `- [ ]`) vs resolved (checked `- [x]`) findings per severity.

**Spec reference** — link to all spec documents:

```markdown
## Spec Reference

| Document                | Path                                    |
| ----------------------- | --------------------------------------- |
| Source (Notion archive) | `.claude/specs/<slug>/source-notion.md` |
| Requirements            | `.claude/specs/<slug>/requirements.md`  |
| Design                  | `.claude/specs/<slug>/design.md`        |
| Tasks                   | `.claude/specs/<slug>/tasks.md`         |
| Review                  | `.claude/specs/<slug>/review.md`        |
| Progress                | `.claude/specs/<slug>/progress.md`      |
```

### 5. Invoke `git-pr` Skill

Pass the additional SDD context to the project's `git-pr` skill. The `git-pr` skill handles `git push -u origin <branch>` (if not yet pushed) and `gh pr create`.

The full PR body structure:

```markdown
## Summary

<3-5 bullet points from git-pr — what changed and why>

## Spec Reference

<built in Step 4>

## Traceability

<built in Step 2>

## Review Summary

<built in Step 4>

## Test Plan

<built in Step 3>

🤖 Generated with [Claude Code](https://claude.com/claude-code)
```

If the `git-pr` skill is unavailable, fall back to running `gh pr create` directly:

```bash
gh pr create --title "<feature title>" --body "$(cat <<'EOF'
## Summary
...
EOF
)"
```

### 6. Record the PR URL

After the PR is created, append to `.claude/specs/<slug>/progress.md`:

```markdown
## PR

- URL: https://github.com/enechange/e_value_management_frontend/pull/42
- Created: 2026-05-26
- Status: open
```

Date format: `YYYY-MM-DD`. This entry allows `sdd-workflow` to detect that the PR phase is complete.

---

## Notes

- Notion status update is out of scope — update the Notion card manually after the PR is reviewed and merged.
- The PR body intentionally surfaces open HIGH issues so reviewers are aware; this does not block PR creation.
- Only CRITICAL open issues block PR creation.

---

## Output Files Modified

| File                               | Change                                          |
| ---------------------------------- | ----------------------------------------------- |
| `.claude/specs/<slug>/progress.md` | `## PR` section appended with URL, date, status |
| GitHub                             | New PR created                                  |

---

## Approval Gate

```
== PHASE COMPLETE: sdd-pr ==
Artifact: .claude/specs/<slug>/progress.md
Summary:
- PR created: https://github.com/enechange/e_value_management_frontend/pull/42
- Traceability table: 3 REQs traced across 12 TASKs and 12 commits
- Test plan: 8 checklist items derived from acceptance criteria
- Review summary: 0 CRITICAL, 3 HIGH open (surfaced in PR body for reviewers)
- PR URL recorded in progress.md

⏸ WAITING FOR CONFIRMATION
Type `CONFIRM sdd-workflow` to view final workflow status, or describe changes needed.
```

Related Skills

test

9
from sc30gsw/claude-code-customes

Advanced test implementation command with unit/E2E support, auto-execution, and smart fixing capabilities

serena

9
from sc30gsw/claude-code-customes

Token-efficient Serena MCP command for structured app development and problem-solving

project-guidelines-example

9
from sc30gsw/claude-code-customes

Example project-specific skill template based on a real production application.

notion-bug-pr

9
from sc30gsw/claude-code-customes

Skill that pulls bug tickets (titles containing 「不具合」) from a Notion database, investigates root cause in a GitHub repo, applies fixes, and opens draft PRs. Supports three modes — daily recurring schedule, one-shot at a specific time, or immediate on-demand run. Takes three or four args: Notion database URL, repo path or name, and either HH:MM (daily), "once HH:MM" (one-shot), or "now" (immediate).

graphify

9
from sc30gsw/claude-code-customes

any input (code, docs, papers, images, videos) to knowledge graph. Use when user asks any question about a codebase, documents, or project content - especially if graphify-out/ exists, treat the question as a /graphify query.

chrome

9
from sc30gsw/claude-code-customes

Comprehensive Chrome DevTools development system with native Chrome capabilities for debugging, E2E testing, performance analysis, and browser automation

webapp-testing

9
from sc30gsw/claude-code-customes

Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.

web-design-guidelines

9
from sc30gsw/claude-code-customes

Review UI code for Web Interface Guidelines compliance. Use when asked to "review my UI", "check accessibility", "audit design", "review UX", or "check my site against best practices".

typescript-advanced-types

9
from sc30gsw/claude-code-customes

Master TypeScript's advanced type system including generics, conditional types, mapped types, template literals, and utility types for building type-safe applications. Use when implementing complex type logic, creating reusable type utilities, or ensuring compile-time type safety in TypeScript projects.

tanstack-start

9
from sc30gsw/claude-code-customes

Full-stack React framework powered by TanStack Router with SSR, streaming, server functions, and deployment to any hosting provider.

tanstack-start-server-fn-testing

9
from sc30gsw/claude-code-customes

Unit-test TanStack Start createServerFn handlers via a global vi.mock that combines two patterns from Discussion #2701

tailwind-css-patterns

9
from sc30gsw/claude-code-customes

Provides comprehensive Tailwind CSS utility-first styling patterns including responsive design, layout utilities, flexbox, grid, spacing, typography, colors, and modern CSS best practices. Use when styling React/Vue/Svelte components, building responsive layouts, implementing design systems, or optimizing CSS workflow.