Skip to content
Back to skills

Ddw Create Pr

ASecurity

Opens a Pull Request with a standard format and AI attribution labels, or records why one is not possible in this repo. Trigger: /ddw-create-pr, during DDW's CLOSEOUT phase.

  • 13 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 12, 2026
ai-agentsgoshellbashgitsecurity

Works with

  • claude code
  • cli

Security analysis

A100/100

Scanned October 12, 2026

npx -y skills add DiluxOne/dilux-agentic-workflow --skill ddw-create-pr --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ddw Create Pr?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Ddw Create Pr
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/diluxone-ddw-create-pr/badge)](https://www.skillsdirectory.com/skills/diluxone-ddw-create-pr)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: ddw-create-pr
description: >
  Opens a Pull Request with a standard format and AI attribution labels, or records why one is not
  possible in this repo.
  Trigger: /ddw-create-pr, during DDW's CLOSEOUT phase.
---

# Skill: /ddw-create-pr

## Description
Opens a Pull Request with a standard format and AI attribution labels. If this repo cannot host a
PR, records why — so the closeout is never blocked by something outside the user's control.

## Inputs
- The current branch and the base branch.
- The branch's commits.
- `.ddw-state.json` for ticket, tier and gates.
- `.ddw/rules/commits.instructions.md` for the format.

## Step 0: Can this repo host a PR? (check FIRST)

Before writing anything, check the preconditions — in this order, stopping at the first that fails:

```bash
git remote                     # is there a remote at all?
git remote get-url origin      # where does it point?
command -v gh                  # is the GitHub CLI installed?
gh auth status                 # is it authenticated?
```

**If they all pass** → continue with the normal protocol.

**If any fails**, do NOT invent an alternative and do NOT fail silently. Report exactly what is
missing and offer the options:

```
┌─────────────────────────────────────────────────────────┐
│  /ddw-create-pr — A PR is not possible here              │
├─────────────────────────────────────────────────────────┤
│                                                          │
│  Reason: [no remote configured / gh not installed /      │
│           not authenticated / the remote is not GitHub]  │
│                                                          │
│  What do you want to do?                                 │
│    1. Push the branch and open the PR yourself (I will   │
│       print the title and body for you to paste)         │
│    2. Record that a PR does not apply to this repo and   │
│       close the ticket                                   │
│    3. Stop here — I will fix it and you re-run this      │
│                                                          │
└─────────────────────────────────────────────────────────┘
```

- **Option 1 or 2** → mark `gates.pr = true` with the reason recorded in the closeout summary. The
  gate means *"the PR step was completed"*, and completing it in a repo that cannot host one means
  recording why, out loud. This is what keeps a local-only repo from getting stuck in CLOSEOUT
  forever.
  **Then CLOSEOUT's step 4 still runs.** No PR means nothing is going to merge this branch on its
  own, which is exactly when "where does this land?" has to be answered rather than assumed.
- **Option 3** → do not set the gate. The ticket stays in CLOSEOUT, which is correct: the user asked
  to stop.

> This is not a loophole. `CLOSEOUT → IDLE` demands the `pr` gate precisely so that nobody closes a
> ticket while quietly skipping the review step. Announcing "there is no remote, so there is no PR"
> in front of the user is a decision they took; silently omitting it is the thing being prevented.

## Execution Protocol

1. Run `git status`, `git diff <base>...HEAD`, `git log <base>...HEAD`.
2. Analyze ALL the branch's commits, not just the last one.
3. Check the GitHub labels exist:
   - `AI-assisted` (color `#1D76DB`)
   - `AI-full` (color `#7057FF`)
   - If they do not exist → create them with `gh label create`.
4. Write the PR title and body.
5. Present them to the user for approval.
6. Only after approval → save the body to `.ddw-work/pr-body.md` **with the Write
   tool** (never a shell heredoc — a file written through the shell is a file no
   hook saw happen), then create it with
   `gh pr create --label <AI-assisted|AI-full> --body-file .ddw-work/pr-body.md`.
7. Return the PR's URL.

## PR Format

```
Title: [ticket] <short description> (< 70 characters)

Body:
## Ticket
[ticket]

## Summary
- [bullet 1 with the main changes]
- [bullet 2]

## Changes
[Detailed list grouped by area]

## Tests
- Tests run: X passed, Y total
- Coverage: XX% lines, XX% branches (if available)

## Security
- SAST: PASSED ([date])

## Attribution
[AI-assisted | AI-full]: [description of the level of human supervision]
```

## Rules

- Title ≤ 70 characters.
- Create the PR **ready for review — NOT a draft**. Every gate is already green by the time this
  skill runs; a draft PR is one nobody can approve or merge, and the closeout's very next step asks
  whether this PR waits for feedback or merges now. Use `--draft` only if the user asks for it.
- The body travels by file: `.ddw-work/pr-body.md`, written with the Write tool — NEVER a shell
  heredoc — and passed with `--body-file`.
- ALWAYS include the `AI-assisted` or `AI-full` label with `--label`.
- ALWAYS include the Attribution section in the body.
- NEVER create a PR without the user's confirmation.
- NEVER merge automatically.
- NEVER include `🤖 Generated with Claude Code` or similar footers in the body. Attribution is done
  exclusively through the `## Attribution` section and the GitHub label.

## Output Format

```
┌─────────────────────────────────────────────────────────┐
│  /ddw-create-pr — Created ✓                              │
├─────────────────────────────────────────────────────────┤
│                                                          │
│  PR: #[number]                                           │
│  URL: [url]                                              │
│  Title: [title]                                          │
│  Label: [AI-assisted | AI-full]                          │
│  Status: Open — ready for review                         │
│                                                          │
└─────────────────────────────────────────────────────────┘
```

## Updating .ddw-state.json
- `gates.pr` → `true` once the PR is created, or once the user chooses option 1 or 2 above. The
  CLOSEOUT closeout requires this gate before it will reset to IDLE.

## Language

Write the PR's title and body in the language the user is working in, keeping the section headings
as specified above.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.