Skip to content
Back to skills

Complete Implementation

ASecurity

Use when all tasks for a feature are marked COMPLETE — runs holistic quality gates including code review, feature verification, integration check, documentation drift audit and update, and context refinement. Creates follow-up plans when issues are found.

  • 67 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 12, 2026
testingpythongobashnodecode-reviewgitbackenddocumentation

Works with

  • terminal
  • cli
  • mcp

Security analysis

A100/100

Pro scans all 7 files and shows the line behind each finding

Scanned September 23, 2026

npx -y skills add Jamie-BitFlight/claude_skills --skill complete-implementation --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Complete Implementation?

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

Security grade badge for Complete Implementation
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/jamie-bitflight-complete-implementation/badge)](https://www.skillsdirectory.com/skills/jamie-bitflight-complete-implementation)

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: complete-implementation
argument-hint: <plan-address-or-item-reference>
user-invocable: true
description: "Use when all tasks for a feature are marked COMPLETE — runs holistic quality gates including code review, feature verification, integration check, documentation drift audit and update, and context refinement. Creates follow-up plans when issues are found."
compatibility: Python 3.11+
metadata:
  version: 2.2.0
  last_updated: '2026-08-30'
---

# Complete Implementation (Quality Gates + Recursion)

<input>
$ARGUMENTS
</input>

Load `dh:dh-cli-usage` before using `<sam_cli/>` below.

The `references/recursive-follow-up-handling.md` file loaded by this skill is a plain file, not
substituted — it shows bare SAM CLI subcommands and args only (e.g. `backlog list --title "..."`),
never the invocation prefix. Prepend `<sam_cli/>` to every one of them.

---

> [!IMPORTANT]
> When provided a process map or Mermaid diagram, treat it as the authoritative procedure. Execute steps in the exact order shown, including branches, decision points, and stop conditions.
> A Mermaid process diagram is an executable instruction set. Follow it exactly as written: respect sequence, conditions, loops, parallel paths, and terminal states. Do not improvise, reorder, or skip steps. If any node is ambiguous or missing required detail, pause and ask a clarifying question before continuing.
> When interacting with a user, report before acting the interpreted path you will follow from the diagram, then execute.

---

## Input Format Detection

Parse `$ARGUMENTS` to determine the input type before proceeding. A plan address is an opaque
logical identifier returned by `sam_plan`; pass it through unchanged.

```mermaid
flowchart TD
    Input["Read $ARGUMENTS"] --> Q2{"starts with '#'?"}
    Q2 -->|Yes| IssueHash["Strip '#' → issue_number<br>→ proceed to 'Resolve Issue'"]
    Q2 -->|No| Q3{"matches ^[0-9]+$ ?"}
    Q3 -->|Yes| IssueBare["issue_number = input<br>→ proceed to 'Resolve Issue'"]
    Q3 -->|No| Q4{"contains '/issues/'?"}
    Q4 -->|Yes| IssueURL["Extract number from URL path<br>→ proceed to 'Resolve Issue'"]
    Q4 -->|No| Q5{"work-item reference?<br>e.g. bd-a3f8"}
    Q5 -->|Yes| IssueBeads["issue_id = input str<br>→ Resolve Issue"]
    Q5 -->|No| Q6{"non-empty string?"}
    Q6 -->|Yes| PlanAddress["PLAN ADDRESS format<br>→ proceed to 'Resolve Plan Address'"]
    Q6 -->|No| Err["ERROR: empty input.<br>Expected: plan address or work-item reference."]
```

---

## Resolve Issue

Entered when input is `#N`, bare `N`, GitHub URL, or another work-item reference such as
`bd-a3f8`. Normalize it to the opaque `{item_ref}` used by the selected backend. Skip for plan
address input.

**Step 1 -- Fetch issue data**:

```bash
<sam_cli/> backlog view --selector "{item_ref}"
```

If the response contains an `error` key:

```text
ERROR: Work item {item_ref} not found. Verify the reference and try again.
```

Stop.

**Step 2 -- Check for linked plan**:

Read the `plan` field from the response.

```mermaid
flowchart TD
    Plan{plan field<br>present and non-empty?}
    Plan -->|Yes| AutoResolve["Read opaque plan address from plan field<br>→ proceed to 'Resolve Plan Address'<br>(existing 7-phase flow)"]
    Plan -->|No| PropFlow["→ proceed to 'Proportional Quality Gates'"]
```

When auto-resolving to the SAM path, output:

```text
Work item {item_ref} has linked plan: {plan_address}
Proceeding with full quality gates.
```

**Step 3 -- Extract context for proportional gates**:

From the `backlog_view` response, extract and store:

- `item_ref`: str (the response's non-empty `issue`; otherwise keep the normalized input selector)
- `title`: str
- `body`: str (full issue body text)
- `labels`: list[str]
- `issue_number`: int or None (GitHub only; used solely for commit-history discovery)

These values are used by the Proportional Quality Gates section below.
Set `{item_slug}` to the lowercase `{item_ref}` with each non-alphanumeric run replaced by one hyphen.

---

## Proportional Quality Gates

Entered only when the work item has no linked plan. Skip this section for plan-address input or when
the work item has a linked plan (auto-resolved to the SAM path).

**Step 1 -- Discover modified files**:

```bash
git log --all --grep="#${issue_number}" --format=%H
```

Run the commit search only when `issue_number` is present. For each commit SHA returned:

```bash
git diff-tree --no-commit-id --name-only -r {sha}
```

Deduplicate the file list. If no commits reference the issue number, fall back to:

```bash
git diff --name-only main...HEAD
```

Store the deduplicated file list as `modified_files`.

If `modified_files` is empty after both strategies:

```text
WARNING: No modified files found for work item {item_ref}.
Code review and test verification will run against the full working tree.
```

**Step 2 -- Extract acceptance criteria from issue body**:

Parse the `body` field for an acceptance criteria section. Search for these markers (case-insensitive, in order):

1. `## Acceptance Criteria` header -- extract all content until next `##` header
2. `**Acceptance Criteria**:` bold marker -- extract all content until next bold marker or `##` header
3. Lines starting with `- [ ]` (unchecked checkboxes) -- collect all such lines

Store as `acceptance_criteria` (string or None). If none found, set to None.

**Step 3 -- Build proportional quality gate plan**:

Create the SAM plan directly with 5 tasks. The documentation pass (T4 Documentation Drift Audit + T5 Documentation Update) is included on this direct/issue-only route exactly as it is on the full SAM path — a feature reached through proportional gates is held to the same documentation standard as one reached through a linked plan:

```text
mcp__plugin_dh_sam__sam_plan(
    config={"action": "create",
            "slug": "pqg-{item_slug}",
            "goal": "Proportional quality gate verification for work item {item_ref}",
            "owner_reference": "{item_ref}",
            "tasks": [
                {"id": "T1", "title": "Code Review",        "agent": "code-reviewer",   "dependencies": [],    "priority": 1, "complexity": "medium",
                 "body": "Review files modified for work item {item_ref}: {modified_files}. Check against acceptance criteria: {acceptance_criteria}"},
                {"id": "T2", "title": "Test Verification",  "agent": "feature-verifier","dependencies": ["T1"],"priority": 1, "complexity": "medium",
                 "body": "Verify work item {item_ref} acceptance criteria are met. Files in scope: {modified_files}"},
                {"id": "T3", "title": "Acceptance Check",   "agent": "integration-checker","dependencies": ["T2"],"priority": 1, "complexity": "low",
                 "body": "Confirm acceptance criteria for work item {item_ref} pass end-to-end: {acceptance_criteria}"},
                {"id": "T4", "title": "Documentation Drift Audit", "agent": "doc-drift-auditor","dependencies": ["T3"],"priority": 1, "complexity": "low",
                 "body": "Audit documentation for drift introduced by work item {item_ref}. item_id={item_ref} (REQUIRED — register the audit-report artifact against it; block if absent). project_root is the repository root (your current working directory). Files in scope: {modified_files}. Report any docs that are now stale, missing, or contradicted by the change."},
                {"id": "T5", "title": "Documentation Update", "agent": "service-docs-maintainer","dependencies": ["T4"],"priority": 1, "complexity": "low",
                 "body": "Update documentation to resolve the drift found in T4 for work item {item_ref}. item_id={item_ref} (read the audit-report artifact registered against it). project_root is the repository root (your current working directory). Files in scope: {modified_files}."}
            ]}
)
```

The `pqg-` prefix (proportional quality gate) distinguishes this plan from full SAM gates. Store
the response's opaque `plan_ref` as `{pqg_plan_address}` and pass it unchanged throughout the
dispatch loop.

**Step 3a -- Put the plan in the ledger**: the dispatch loop opens an attempt per task, and an
attempt is a work-ledger row, so bring the freshly authored plan across before the first dispatch:

```bash
<sam_cli/> plan import --from content --plan-address "{pqg_plan_address}"
```

**Step 4 -- SAM dispatch loop**:

Use the same SAM Dispatch Loop as the full-plan flow (see "SAM Dispatch Loop (Phases T0-T6)" section). The loop operates identically — 5 tasks instead of 7 is the only structural difference. The proportional plan omits T0 (Multi-Perspective Review) and T6 (Context Refinement), but retains the T4/T5 documentation pass.

**Phase-specific post-dispatch actions for proportional gates**:

```mermaid
flowchart TD
    Done{Which task<br>just completed?}
    Done -->|"T1 Code Review"| T1Post["No follow-up extraction<br>(proportional gates do not<br>generate follow-ups)"]
    Done -->|"T2 Test Verification"| T2Post["Check test results in agent output<br>If failures: log but do not block<br>(completion gate handles pass/fail)"]
    Done -->|"T3 Acceptance Check"| T3Post["No post-dispatch action"]
    Done -->|"T4 Drift Audit"| T4Post{"Read the Total findings count<br>from T4's ARTIFACTS return block<br>(full report is in the audit-report artifact)"}
    T4Post -->|"0 findings — no drift"| SkipT5["plan state --address {pqg_plan_address}/T5<br>--new-status skipped --reason 'no drift found in T4'"]
    T4Post -->|"1 or more findings — drift"| T5Ready["T5 remains NOT_STARTED — will be<br>dispatched on next loop iteration"]
    Done -->|"T5 Documentation Update"| T5Post["No post-dispatch action"]
    T1Post --> Continue["Continue loop"]
    T2Post --> Continue
    T3Post --> Continue
    SkipT5 --> Continue
    T5Ready --> Continue
    T5Post --> Continue
```

**Detecting drift in T4 output**: The `@dh:doc-drift-auditor` agent returns a `Total findings: {count}` line in its `ARTIFACTS` block and registers the full drift report as the `audit-report` artifact. No drift = `Total findings: 0` → skip T5. Drift = `Total findings` of 1 or more → dispatch T5. If the count line is absent, read the `audit-report` artifact and treat a non-empty `## Findings by Category` as drift.

**Step 5 -- Completion verification gate**:

Execute the shared procedure in
[./references/completion-verification-gate.md](./references/completion-verification-gate.md) with
`{plan_address}` = `{pqg_plan_address}`, `{gate_name}` = "Proportional Quality Gate Incomplete",
`{resume_arg}` = `{item_ref}`, `{next_step}` = "Step 6".

**Step 6 -- Apply status:verified label**:

On verification success:

```text
mcp__plugin_dh_backlog__backlog_update(selector="{item_ref}", verified=True)
```

Note — the CLI's `backlog update` has no `--verified` flag. This call must stay MCP.

**Beads backend**: No `dh:state:verified` label — skip this call, continue.

On failure (GitHub only), output:

```text
COMPLETION BLOCKED — status:verified label could not be applied.

Error: {error}
Work item: {item_ref}

Fix the error (check backend credentials and access), then re-run /complete-implementation {item_ref}.
```

Stop. Do not proceed to the Final Step commit.

**Step 7 -- No recursive follow-up handling**:

The issue-only path does not produce follow-up plans. Skip directly to "Final Step: Commit and Push Remaining Changes", then "Confirm All Workers Finished", then "Resolve the Issue".

---

## Resolve Plan Address

**Where task state lives**: a plan's authored content — its tasks, their criteria, the plan-level
context — is written and read through the `sam_plan` and `sam_task` operations. Everything about a
task's execution — its status, the attempts opened on it, the sections each attempt appended, the
outcome each closed with — lives in the work ledger and is reached through the `<sam_cli/>`
command's `plan` group. `plan import --from content --plan-address {plan_ref}` moves a plan from
the first into the second, which is what this workflow runs before its first dispatch.

Treat the supplied plan address as opaque. Pass the exact value to every `sam_plan`, `sam_task`,
CLI `--plan-address`, and skill invocation below. Read the plan once with
`plan status --plan-address {plan_address}`; use the plan row's `feature` field as `{slug}`
and its `issue` field as `{item_ref}` when present. Do not derive either value from a path.

---

## Pre-Phase 1: TN Verification Check

Before invoking Phase 1, check for a TN verification report produced by `tn-verification-gate` (which reads the T0 baseline written by `t0-baseline-capture`).

Use the `{slug}` and `{item_ref}` resolved from the plan. When `{item_ref}` is present, read the
TN-verification artifact via `artifact_read(item_id={item_ref}, artifact_type="TN-verification")`.
When it is absent, proceed to Phase 1 because no artifact owner is addressable.

The artifact content contains a list of per-criterion `BookendVerification` records — one per
`acceptance-criteria-structured` entry. There is no top-level `verdict` field. Aggregate the verdict
by scanning all records: the overall result is FAIL if any record has `status: regressed`;
otherwise PASS.

```mermaid
flowchart TD
    Read["artifact_read(item_id={item_ref}, artifact_type='TN-verification')"] --> Exists{Artifact exists?}
    Exists -->|No| Proceed["No structured criteria — proceed to Phase 1"]
    Exists -->|Yes| Scan["Scan all per-criterion records<br>for status: regressed"]
    Scan --> AnyRegressed{Any criterion<br>has status: regressed?}
    AnyRegressed -->|No| Proceed
    AnyRegressed -->|Yes| Stop["STOP — report regressions and block completion"]
    Stop --> Report["Display each criterion with status: regressed<br>Show check_command, T0 stdout, TN stdout<br>Instruct: fix regressions before re-running"]
```

If any criterion has `status: regressed`:

1. List each criterion where `status: regressed` with its `check_command`, T0 captured stdout, and TN captured stdout.
2. Output:

```text
COMPLETION BLOCKED — TN Verification Failed

Regressed criteria:
  {criterion-id}: {description}
    command: {check_command}
    T0 result: exit {code}, stdout: {stdout}
    TN result: exit {code}, stdout: {stdout}

Fix the regressions, then re-run /complete-implementation.
```

3. Stop. Do not proceed to Phase 1.

---

## Pre-Phase 1a: Migration Fidelity Sign-Off

Before proceeding to Artifact Discovery, check for migration signals.

Execute the full gate procedure defined in [./references/migration-fidelity-gate.md](./references/migration-fidelity-gate.md).

**Summary of detection signals** (full evaluable criteria in the reference):

- Issue title or body contains: "migrat", "convert format", "replace .md", "format conversion", "move from", "transition from"
- Any task `acceptance_criteria` field contains: "delete", "remove source", "after migration complete", "drop the source"

If no signal found — skip gate, proceed to Artifact Discovery.

If signal found — confirm all four fidelity items from the reference before proceeding. If any unconfirmed, emit `COMPLETION BLOCKED — Migration Fidelity Gate` (format in reference) and stop.

---

## Pre-Phase: Artifact Discovery

When `{item_ref}` is known, query its artifact manifest to discover all plan artifacts for this feature:

```bash
<sam_cli/> artifact list --item-id "{item_ref}"
```

If the response contains artifacts, pass the manifest and `{item_ref}` to quality gate agents
(Phases T0-T6) so they can retrieve content with `artifact_read`. If the manifest is empty, proceed
without optional artifacts. If the call errors, report the provider error and stop; artifact content
has no second high-level storage route.

---

## Pre-Phase 1b: Process Accumulated Concerns

Execute the full procedure defined in [./references/concerns-processing.md](./references/concerns-processing.md).

**Summary**: Read backlog item → if `## Concerns` has unchecked items, verify each (create backlog item if real; mark unconfirmed if not) → update section → proceed to Quality Gate Plan Creation. If no concerns section, proceed immediately.

---

## Quality Gate Plan Creation

After the pre-phases complete, set up the SAM-enforced quality gate plan.

Use the `{slug}` resolved from the implementation plan's `feature` field.

### Step 1: Check for existing QG plan

```bash
<sam_cli/> plan list --search "qg-{slug}"
```

```mermaid
flowchart TD
    List["sam_plan(config={action:'list', search:'qg-{slug}'})"] --> Found{QG plan found?}
    Found -->|No| Create["sam_plan(config={action:'create', ...})<br>tasks list from phase mapping table"]
    Found -->|Yes| Check{All tasks terminal?}
    Check -->|"Yes — COMPLETE or SKIPPED"| Skip["Skip to Completion Verification Gate"]
    Check -->|"No — tasks remain"| Reset["Reset BLOCKED tasks to NOT_STARTED,<br>resume SAM dispatch loop"]
    Create --> Loop["Enter SAM Dispatch Loop"]
    Reset --> Loop
```

When a QG plan is found, store that list entry's opaque `plan_ref` as `{qg_plan_address}`. Omit
`owner_reference` from the create call below only when `{item_ref}` is absent.

### Step 2: Create QG plan (if not found)

If no QG plan exists, create it directly using the phase mapping table above:

```text
mcp__plugin_dh_sam__sam_plan(
    config={"action": "create",
            "slug": "qg-{slug}",
            "goal": "Quality gate enforcement for {slug}",
            "owner_reference": "{item_ref}",
            "tasks": [
                {"id": "T0", "title": "Multi-Perspective Review", "agent": "task-worker",     "dependencies": [],           "priority": 1, "complexity": "high"},
                {"id": "T1", "title": "Code Review",              "agent": "code-reviewer",   "dependencies": [],           "priority": 1, "complexity": "medium"},
                {"id": "T2", "title": "Feature Verification",     "agent": "feature-verifier","dependencies": ["T1"],       "priority": 1, "complexity": "medium",
                 "body": "Verify goal achievement for {slug} (work item {item_ref}). plan_address={plan_address} (REQUIRED — this is the original feature plan to read for goals, tasks, and artifacts; the address used to dispatch this task is a separate quality-gate plan used only to claim and complete your own task). item_id={item_ref} (needed to read the architect artifact)."},
                {"id": "T3", "title": "Integration Check",        "agent": "integration-checker","dependencies": ["T2"],   "priority": 1, "complexity": "medium",
                 "body": "Verify cross-module integration for {slug} (work item {item_ref}). plan_address={plan_address} (REQUIRED — this is the original feature plan to read for exports, imports, and data flows; the address used to dispatch this task is a separate quality-gate plan used only to claim and complete your own task). item_id={item_ref}."},
                {"id": "T4", "title": "Documentation Drift Audit","agent": "doc-drift-auditor","dependencies": ["T3"],     "priority": 1, "complexity": "low",
                 "body": "Audit documentation for drift in {slug} (work item {item_ref}). item_id={item_ref} (REQUIRED — register the audit-report artifact against it; block if absent). project_root is the repository root (your current working directory)."},
                {"id": "T5", "title": "Documentation Update",     "agent": "service-docs-maintainer","dependencies": ["T4"],"priority": 1, "complexity": "low",
                 "body": "Update documentation to resolve the drift found in T4 for {slug} (work item {item_ref}). item_id={item_ref} (read the audit-report artifact registered against it). project_root is the repository root (your current working directory)."},
                {"id": "T6", "title": "Context Refinement",       "agent": "context-refinement","dependencies": ["T5"],    "priority": 1, "complexity": "medium",
                 "body": "Refine context and audit plan artifacts for {slug} (work item {item_ref}). plan_address={plan_address} (REQUIRED — this is the original feature plan to analyze; the address used to dispatch this task is a separate quality-gate plan used only to claim and complete your own task). item_id={item_ref} (needed only to read and annotate the architect and feature-context artifacts — if empty, skip that part and report it as a gap)."}
            ]}
)
```

Store the response's opaque `plan_ref` as `{qg_plan_address}`. This is the only address used for
subsequent QG plan and task operations.

### Step 2a: Put the QG plan in the ledger

The plan is authored in the content store; the dispatch loop below opens an attempt per task, and
an attempt is a work-ledger row. Bring the plan across once, whether it was just created or found:

```bash
<sam_cli/> plan import --from content --plan-address "{qg_plan_address}"
```

Safe to run when unsure — a plan the ledger already holds answers `exists` and changes nothing.
After it, every `plan` command naming `{qg_plan_address}` reads and writes the ledger.

### Step 3: Reopen blocked tasks (on re-run)

If the QG plan already exists and has blocked tasks, send each back before entering the dispatch
loop. `reclaim` returns the task to `not-started` and records why, in one move:

```bash
<sam_cli/> plan reclaim \
  --address "{qg_plan_address}/{task_id}" --reason rerun \
  --response "{what changed since the block, or what to try differently}"
```

On `attempts-exhausted`, add `--more-attempts` when the block is worth another try; otherwise
`plan state --address "{qg_plan_address}/{task_id}" --new-status skipped --reason "{why}"`.

This allows re-running `complete-implementation` to resume from the blocked phase without re-executing completed phases.

---

## SAM Dispatch Loop (Phases T0-T6)

**Phase task mapping:**

| Task | Phase | Agent |
|------|-------|-------|
| T0 | Multi-Perspective Review | dh:multi-perspective-review (orchestrated) |
| T1 | Code Review | code-reviewer |
| T2 | Feature Verification | feature-verifier |
| T3 | Integration Check | integration-checker |
| T4 | Documentation Drift Audit | doc-drift-auditor |
| T5 | Documentation Update | service-docs-maintainer |
| T6 | Context Refinement | context-refinement |

### Dispatch Loop

Repeat until `plan ready --plan-address "{qg_plan_address}"` returns an empty `items` list:

**1. Get next ready task:**

```bash
<sam_cli/> plan ready --plan-address "{qg_plan_address}"
```

If the result is empty, exit the loop and proceed to Completion Verification Gate.

**2. Dispatch the task:** open the attempt, run the phase, settle the launch, and judge what the
ledger holds. The full step — the T1-T6 delegation, the T0 self-run, and the codes each command may
print — is [qg-dispatch-step.md](./references/qg-dispatch-step.md).

**3. Phase-specific post-dispatch actions:**

After each dispatched phase completes, run the phase-specific processing before running
`plan ready --plan-address "{qg_plan_address}"` again:

```mermaid
flowchart TD
    Done{Which task<br>just completed?}
    Done -->|T0 Multi-Perspective Review| T0Post["Any REJECT — trigger Recursive Follow-up Handling<br>(same path as T1 NEEDS_WORK)."]
    Done -->|T1 Code Review| T1Post["Read code-review artifact.<br>Verdict drives Recursive Follow-up Handling<br>(Step 1 — fix loop or backlog routing)."]
    Done -->|T4 Drift Audit| T4Post{"Read the Total findings count<br>from T4's ARTIFACTS return block<br>(full report is in the audit-report artifact)"}
    T4Post -->|"0 findings — no drift"| SkipT5["plan state --address {qg_plan_address}/T5<br>--new-status skipped --reason 'no drift found in T4'"]
    T4Post -->|"1 or more findings — drift"| T5Ready["T5 remains NOT_STARTED — will be<br>dispatched on next loop iteration"]
    Done -->|T6 Context Refinement| T6Post{"DIVERGENCE_REQUIRING_REVIEW block<br>present in T6 agent output?"}
    T6Post -->|"Yes"| StoreDiv["Store divergence block for final output"]
    T6Post -->|"No"| Continue["No phase-specific action — continue loop"]
    Done -->|"T2, T3, T5"| Continue
    T0Post --> Continue
    T1Post --> Continue
    SkipT5 --> Continue
    T5Ready --> Continue
    StoreDiv --> Continue
```

**Detecting drift in T4 output**: same rule as Proportional Quality Gates Step 4 above.

---

## Completion Verification Gate

After the SAM dispatch loop exits, execute the shared procedure in
[./references/completion-verification-gate.md](./references/completion-verification-gate.md) with
`{plan_address}` = `{qg_plan_address}`, `{gate_name}` = "Quality Gate Incomplete", `{resume_arg}` =
`{plan_address}` (the original feature plan address), `{next_step}` = "Recursive Follow-up
Handling".

---

## Post-Phase-6: Surface Divergence Findings

If the T6 (Context Refinement) sub-agent output contained a `DIVERGENCE_REQUIRING_REVIEW` block (collected in the dispatch loop), include in the final output to the human:

```text
Plan artifacts have intent divergences requiring your review.
See: [annotated artifact types and identifiers from agent output]
Divergences:
  [list from DIVERGENCE_REQUIRING_REVIEW block]
```

This is informational, not blocking. The human reviews at their discretion.
If absent, no additional output is needed — the feature proceeds normally.

---

## Recursive Follow-up Handling

### Constants

`DH_RECURSIVE_REVIEW_TASK_DEPTH = 5`

Maximum number of recursive review-implement-verify cycles permitted within a single
top-level `/complete-implementation` invocation. When `{recursion_depth}` reaches this
value, Guard 1 fires: all remaining in-scope follow-ups are routed to the backlog and
recursion stops.

Initialization: `{recursion_depth}` is set to `0` at skill invocation. It increments by 1
before each call to `Skill(skill="implement-feature")` in the recursion path. A re-run
of `/complete-implementation` on the same plan address starts `{recursion_depth}` at `0`.

After all phases complete, route any follow-up plans created by Phase 1 (code-reviewer) to the
backlog before deciding on recursion. This ensures no follow-up plan is orphaned when the
orchestrator skips recursion.

### Step 1: Detect Follow-up Plans

Resolve `{review_report}` by running
[./references/read-code-review-verdict.md](./references/read-code-review-verdict.md). It derives this
quality-gate plan's own `artifact_id` and matches it exactly, everywhere it looks — `code-review`
holds one entry per reviewed task and this item also holds the feature plan's. When nothing matches
it resets and re-dispatches T1, then blocks. An absent verdict is not a passing verdict.

Check the `verdict` field in the report:

- `PASS` — no blocking findings; skip the entire routing section (no follow-ups to route)
- `NEEDS-WORK` or `FAIL` — extract the "Required changes (blocking)" section; each blocking
  item becomes a follow-up to route. **When "Required changes (blocking)" is non-empty, run the
  fix loop first (max 3 cycles, `{fix_cycle}`=0):** create one task per entry (`agent: dh:task-worker`)
  with `sam_plan(config={"action": "create", "slug": "fix-{slug}-blocking-N", "goal":
  "Resolve blocking review findings", "tasks": [...], "owner_reference": "{item_ref}"})`; store
  its returned `plan_ref`, dispatch via `subagent_type="dh:task-worker"`, then send T1 back with
  `plan reclaim --address "{qg_plan_address}/T1" --reason fixed --response "{what the fix changed}"`
  and dispatch T1 again — `reclaim` returns it to `not-started` and records the response the next
  runner reads first. If verdict is `PASS` or blocking entries empty →
  proceed to Step 2; else `fix_cycle += 1`, repeat or BLOCKED at 3. **On BLOCKED** (exhausted
  or fix task `blocked`): report `COMPLETION BLOCKED — Blocking Code Review Findings Not
  Resolved`, do NOT route to backlog, stop, do not apply `status:verified`.

A `NEEDS-WORK` or `FAIL` report names the follow-up plans the reviewer created. If it names none,
search SAM for plans the reviewer created without recording them in the report:

```bash
<sam_cli/> plan list --search "{slug}-followup"
```

Use the parent plan's resolved `{slug}`.

If the report names no follow-up plan and the SAM search returns empty, skip the entire routing
section — there is nothing to route. Reaching this point requires a verdict that was read; an
unreadable verdict blocks in the procedure above and never arrives here.

**Error handling**: If the SAM fallback returns plans from a different feature slug, filter results
to the parent `{slug}`. Store each retained result's opaque `plan_ref` for follow-up operations.

### Steps 2–5: Route Follow-ups to Backlog

Execute the full follow-up routing procedure defined in [./references/recursive-follow-up-handling.md](./references/recursive-follow-up-handling.md).

**Summary**:
- Step 2: Derive a search slug from each follow-up plan's `feature`; search backlog by title then topic
- Step 3: Classify scope (in-scope vs out-of-scope); route out-of-scope directly to backlog
- Step 4: Link follow-up plan to matched backlog item, or create a new item if no match
- Step 5: Recursion Gate — Guards (depth limit, RT-ICA BLOCKED) then Conditions (slug match + High priority)

---

## Apply status:verified Label

After all phases and follow-up routing complete, apply verified status to the parent work item.

### Step 1: Locate the backlog item

Use the resolved `{item_ref}`. If the plan did not expose an owner reference, search by its
`{slug}` and store the matched item's `issue` as `{item_ref}`:

```bash
<sam_cli/> backlog list --title "{slug}"
```

If zero items match, skip this section — there is no issue to label.

### Step 2: Apply the label

**Beads backend**: No `dh:state:verified` label — skip this step and continue to Final Step.

Call:

```text
mcp__plugin_dh_backlog__backlog_update(selector="{item_ref}", verified=True)
```

**Error handling**: If the call returns an `error` key, output:

```text
COMPLETION BLOCKED — status:verified label could not be applied.

Error: {error}
Backlog item: {item_ref}

Fix the error (check backend credentials and access), then re-run /complete-implementation.
```

Stop. Do not proceed to the Final Step commit.

---

## Final Step: Commit and Push Remaining Changes

Check for uncommitted changes and commit any remaining modifications in a single commit.

```bash
git status
```

**Issue number in commit message**: Read the current work item:

```bash
<sam_cli/> backlog view --selector "{item_ref}"
```

Check the `issue` field on the matching item. If present, append `Fixes #NNN` to the commit message body (NNN = GitHub integer issue number; omit for beads IDs). If no issue number is found, omit it.

Push after committing; skip if the working tree is clean.

---

## Confirm All Workers Finished

After commit+push, confirm every dispatched worker has reached a terminal state — read that
through `plan status --plan-address "{qg_plan_address}"`, never by assuming a silent worker has
finished. Each task row carries `status`, `accepted`, `attempts`, and a `stale` flag saying when a
lease ran out with nobody behind it.
Each worker was dispatched independently and terminates on its own once its task completes; there
is no shared group object to release.

---

## Resolve the Issue

For both PQG and plan-linked paths, use the resolved `{item_ref}`. Skip this step only when the
plan has no owner reference and the fallback lookup in Apply status:verified found no work item.

```bash
<sam_cli/> backlog resolve --selector "{item_ref}" --summary "Implementation complete — AC verified PASS"
```

On failure, read the error text.

When it starts with `Open-PR search failed`, GitHub rejected the token, or a proxy or firewall
blocked the request. Fix the token or the network path, then re-run this step. Resolve through
`/dh:work-backlog-item resolve {item_ref}` instead, which asks the user before it retries with
`force=True`.

When it starts with `Open PRs reference issue`, report the PRs listed in `warnings`. Stop.

For every other error, output `COMPLETION BLOCKED — backlog_resolve failed: {error}`. Stop.

---

## Final Handoff Output

Execute the full procedure defined in [./references/final-handoff.md](./references/final-handoff.md).

Files in this skill

  • SKILL.md31.9 KB
  • references/completion-verification-gate.md1.8 KB
  • references/concerns-processing.md2 KB
  • references/final-handoff.md4.5 KB
  • references/migration-fidelity-gate.md4.2 KB
  • references/read-code-review-verdict.md4.6 KB
  • references/recursive-follow-up-handling.md8.9 KB

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…