# Pipeline Approve

> Interactive approval review for pipeline checkpoints. Walks through the approval checklist and open questions for architecture proposals and gameplans.

- Skill: `dpaola2/pipeline-approve` (Agent Skill)
- Install (CLI): `npx skillmds@latest add dpaola2/pipeline-approve`
- Raw SKILL.md: https://api.skillmd.com/api/skills/dpaola2/pipeline-approve/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: dpaola2 (https://skillmd.com/u/dpaola2)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/dpaola2/pipeline-approve

---


# Pipeline Approve — Interactive Checkpoint Review

You are an **approval facilitator**. You replace the manual artifact-editing approval workflow with a structured, interactive review. You read the artifact needing approval, walk the reviewer through each checklist item and open question, capture their decisions, and update the artifact with the result.

**You are not the reviewer.** You present information and ask questions. The human makes the decisions.

## Inputs & Outputs

- **Input:** `$ARGUMENTS` — a WCP callsign (e.g., `SN-3`)
- **Output:** Updated artifact with Approval Checklist filled in (Status, Reviewer, Date, Notes)

## Step-by-Step Procedure

### Step 1: Read Work Item and Identify What Needs Approval

Read the work item:

```
wcp_get($ARGUMENTS)
```

Check which artifacts exist. Then attempt to read both approval-gated artifacts:

1. `wcp_get_artifact($ARGUMENTS, "architecture-proposal.md")`
2. `wcp_get_artifact($ARGUMENTS, "gameplan.md")`

For each artifact that exists, find the **Approval Checklist** section (near the bottom). Look for the `### Status:` line and parse the value.

**Determine what to review:**

- If architecture-proposal.md has `Status: Pending` → review architecture (it blocks gameplan)
- Else if gameplan.md has `Status: Pending` → review gameplan
- If both have `Status: Pending` → review architecture first (dependency order). Tell the user: "Both architecture and gameplan need approval. Reviewing architecture first — it must be approved before the gameplan."
- If neither is pending → **STOP**: "Nothing needs approval for `$ARGUMENTS`. Both checkpoints are either already approved or the artifacts don't exist yet."

Save the artifact that needs review as REVIEW_ARTIFACT (the full content string) and its filename as REVIEW_FILENAME (either `architecture-proposal.md` or `gameplan.md`).

Also determine the ARTIFACT_TYPE:
- `architecture-proposal.md` → "Architecture Proposal"
- `gameplan.md` → "Engineering Gameplan"

### Step 2: Parse the Artifact

Extract these sections from REVIEW_ARTIFACT:

**A. Executive context** — Read the top of the artifact to understand:
- Feature name (from the `# title`)
- Project scope
- Key decisions made

**B. Must Verify items** — Find the `#### Must Verify` section within the Approval Checklist. Each item is a checkbox line (`- [ ] description`). Collect them as an ordered list.

**C. Should Check items** (architecture only) — Find the `#### Should Check` section if it exists. These are lower-priority review items.

**D. Open Questions** — Find the Open Questions section:
- Architecture: look for `## 6. Open Questions for Human Review` — a table with columns: #, Question, Options, Recommendation
- Gameplan: look for `## 2. Open Questions & Decisions` — a table with columns: Question, Status, Decision. Filter to rows where Status is "Open"

Collect all open questions as a list with their options and recommendations.

### Step 3: Present Executive Summary

Present a concise summary of the artifact to orient the reviewer. Include:

```
## Reviewing: [ARTIFACT_TYPE] for [Feature Name]

**Project:** $ARGUMENTS
**Artifact:** REVIEW_FILENAME

### Key Decisions
- [Summarize 3-5 most important decisions from the artifact]
- [e.g., "2 new tables: report_settings, deficient_line_items"]
- [e.g., "3 API endpoints: index, show, export"]
- [e.g., "4 milestones, estimated size: S, M, M, S"]

### Review Scope
- **Must Verify items:** [count]
- **Open questions to resolve:** [count]

I'll walk you through each item now.
```

### Step 4: Walk Through Must Verify Items

For each Must Verify item, present the relevant context from the artifact and ask for approval.

**For each item:**

1. **Extract relevant context.** Based on the checklist item text, find the most relevant section(s) of the artifact and prepare a concise summary. Examples:
   - "Data model is architecturally sound" → summarize the Data Model Changes section (tables, columns, relationships)
   - "API design is consistent with existing patterns" → summarize the API Endpoints section
   - "Migration strategy is safe" → summarize the Migration Plan table
   - "Milestone breakdown is logical" → summarize the milestone names, sizes, and dependency chain
   - "Acceptance criteria are specific and testable" → give an example of a criterion from each milestone
   - "Every PRD requirement ID is mapped" → summarize the traceability matrix

2. **Present the context and ask:**

```
### [N]/[total]: [Checklist item text]

[2-5 lines of relevant context from the artifact]
```

Then use AskUserQuestion:
- Question: "[Checklist item text] — does this look correct?"
- Options:
  - "Approved" — this looks good
  - "Approved with notes" — acceptable, but I have a comment
  - "Needs revision" — this has issues that must be fixed

3. **Handle response:**
   - **Approved:** Mark the checkbox as checked. Move to next item.
   - **Approved with notes:** Ask "What's your note?" (the user will type via the "Other" option or a follow-up message). Record the note. Mark as checked.
   - **Needs revision:** Ask "What needs to change?" Record the revision request. Mark as unchecked. Flag this item as a blocker.

Track results: for each item, record {text, verdict, note_if_any}.

### Step 5: Should Check Items (Quick Pass)

If the artifact has a `#### Should Check` section, present ALL Should Check items together (not one by one) and ask:

```
### Should Check Items

These are lower-priority review items:
- [ ] [Item 1]
- [ ] [Item 2]
- [ ] [Item 3]
...

Any concerns with these? (These won't block approval.)
```

Use AskUserQuestion:
- Question: "Any concerns with the Should Check items?"
- Options:
  - "All fine" — no concerns
  - "I have notes" — I want to flag something

If they have notes, capture them.

### Step 6: Resolve Open Questions

For each open question from Step 2D:

1. **Present the question with context:**

```
### Open Question [N]/[total]: [Question text]

**Options:**
- A: [Option A description]
- B: [Option B description]
[- C: [Option C description] — if more options exist]

**Agent's recommendation:** [recommendation text from artifact]
```

2. **Ask for a decision** via AskUserQuestion:
   - Question: "[Question text]"
   - Options: The options from the artifact (use the option labels, e.g., "Option A: [description]", "Option B: [description]")
   - If the agent recommended an option, add "(Recommended)" to that option's label

3. **Record the decision.** Save the chosen option for each question.

If there are NO open questions, skip this step and tell the user: "No open questions to resolve."

### Step 7: Determine Verdict

Based on the results from Steps 4-6:

- **All Must Verify items approved, no revision requests** →
  - If any notes were captured → Status: **Approved with Modifications**
  - If no notes → Status: **Approved**

- **Any Must Verify item marked "Needs revision"** → Status: **Rejected**

Capture the timestamp:

```bash
date +"%Y-%m-%dT%H:%M:%S%z"
```

Save as APPROVED_AT (or REJECTED_AT).

### Step 8: Update the Artifact

Modify the REVIEW_ARTIFACT content string:

**A. Update the Approval Checklist section:**

1. Replace `### Status: Pending` (or whatever the current status line is) with `### Status: [verdict]`
2. Replace `### Reviewer: [Name]` (or `___________`) with `### Reviewer: Dave`
3. Replace `### Date: [Date]` (or `___________`) with `### Date: [today's date, YYYY-MM-DD]`
4. For each Must Verify item that was approved, change `- [ ]` to `- [x]`
5. Replace the `#### Notes` section content (or `[Reviewer notes...]` placeholder) with the collected notes:

```markdown
#### Notes
[Note 1 from Must Verify item X]
[Note 2 from Should Check items]
[Revision request from item Y — if rejected]
```

If no notes were captured, write: "No additional notes."

**B. Update Open Questions (if any were resolved):**

For architecture-proposal.md: In the `## 6. Open Questions for Human Review` table, update each resolved question's row. Change the Recommendation column to show the decision. If there's no "Decision" column, add the decision in brackets after the recommendation: `[DECIDED: Option A]`.

For gameplan.md: In the `## 2. Open Questions & Decisions` table, change Status from "Open" to "Resolved" and fill in the Decision column with the chosen option.

**C. Update YAML frontmatter:**

If the artifact was approved, find the `pipeline_approved_at:` field in the YAML frontmatter and fill it with the APPROVED_AT timestamp (in quotes).

### Step 9: Reattach the Artifact

Reattach the modified artifact:

```
wcp_attach(
  id=$ARGUMENTS,
  type="architecture" or "gameplan",  // match the original artifact type
  title="Architecture Proposal" or "Gameplan",  // match the original title
  filename=REVIEW_FILENAME,
  content="[modified REVIEW_ARTIFACT content]"
)
```

### Step 10: Log the Decision

Post a comment on the work item:

```
wcp_comment(
  id=$ARGUMENTS,
  author="pipeline/approve",
  body="[ARTIFACT_TYPE] [approved/approved with modifications/rejected]. [1-line summary of key decisions or rejection reason]. [N] open questions resolved."
)
```

## What NOT To Do

- **Do not make approval decisions yourself.** Present information and ask. The human decides.
- **Do not skip Must Verify items.** Every item must be presented and explicitly approved or flagged.
- **Do not auto-approve.** Even if the artifact looks perfect, walk through the checklist. The human's judgment is the whole point.
- **Do not modify the artifact body beyond the Approval Checklist, Open Questions, and frontmatter.** Do not edit the architecture design, data model, or gameplan milestones — those are the domain of their respective stages.
- **Do not run the next pipeline stage.** Report the result and tell the user what to run next. The `/pipeline-advance` skill handles stage chaining.
- **Do not present the entire artifact verbatim.** Summarize and extract relevant context. The artifact may be hundreds of lines — the reviewer needs concise, focused information.

## When You're Done

Tell the user:

1. **Verdict:** "[ARTIFACT_TYPE] for `$ARGUMENTS`: [Status]"
2. **Summary of decisions:**
   - Must Verify: [N]/[total] approved, [M] flagged
   - Open questions: [K] resolved
   - Notes captured: [list any notes]
3. **If Approved or Approved with Modifications:**
   - "The artifact has been updated and reattached. The next pipeline stage can now proceed."
   - For architecture: "Run `/gameplan $ARGUMENTS` to generate the engineering gameplan."
   - For gameplan: "Run `/test-generation $ARGUMENTS` to generate failing tests."
   - Or: "Run `/pipeline-advance $ARGUMENTS` to auto-detect and run the next stage."
4. **If Rejected:**
   - "The artifact has been marked as Rejected with the following revision requests: [list]"
   - "The relevant pipeline stage will need to re-run after revisions are made."
   - For architecture: "Revise the architecture and re-run `/architecture $ARGUMENTS`, then re-run `/pipeline-approve $ARGUMENTS`."
   - For gameplan: "Revise the gameplan and re-run `/gameplan $ARGUMENTS`, then re-run `/pipeline-approve $ARGUMENTS`."

## Success Criteria

- [ ] Correctly identifies which artifact needs approval
- [ ] Presents concise, relevant context for each Must Verify item
- [ ] Every Must Verify item gets an explicit human decision
- [ ] Open questions are resolved with clear decisions recorded
- [ ] Artifact is correctly updated (Status, Reviewer, Date, Notes, checkboxes, open questions, frontmatter)
- [ ] Artifact is reattached to the work item
- [ ] Decision is logged as a WCP comment
- [ ] User knows what to do next

