Skip to content
Back to skills

Paw Transition

ASecurity

Workflow transition gate for PAW. Handles stage boundaries, session policy, preflight checks, and next activity determination.

  • 39 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added February 7, 2026
toolsrailsgitapi

Works with

  • terminal
  • api

Security analysis

A100/100

Scanned February 12, 2026

npx -y skills add lossyrob/phased-agent-workflow --skill paw-transition --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Paw Transition?

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

Security grade badge for Paw Transition
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/lossyrob-paw-transition/badge)](https://www.skillsdirectory.com/skills/lossyrob-paw-transition)

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: paw-transition
description: Workflow transition gate for PAW. Handles stage boundaries, session policy, preflight checks, and next activity determination.
---

# Workflow Transition

> **Execution Context**: This skill runs in a **subagent** session, delegated by the PAW orchestrator when processing a `paw-transition` TODO. Return structured output—do not make orchestration decisions beyond the transition.

## Purpose

Gate between workflow activities. Ensures:
- Session policy is respected at stage boundaries
- Correct branch state before implementation
- Required artifacts exist before proceeding
- Next activity is correctly identified and queued

## Procedure

Execute these steps in order. Do not skip steps.

### Step 1: Identify Current State

Read WorkflowContext.md to determine:
- Work ID and target branch
- Session Policy (`per-stage` | `continuous`)
- Review Strategy (`prs` | `local`)
- Review Policy (`always` | `milestones` | `planning-only` | `never`)
  - If missing, check for legacy `Handoff Mode:` field and map: `manual`→`always`, `semi-auto`→`milestones`, `auto`→`never`
  - If neither present, default to `milestones`
- Final Agent Review (`enabled` | `disabled`)
  - If missing, default to `enabled`

Identify last completed activity from TODOs or artifacts.

### Step 2: Determine Next Activity

Use the Mandatory Transitions table:

| After Activity | Required Next | Skippable? |
|----------------|---------------|------------|
| paw-init | paw-spec or paw-work-shaping | Per user intent |
| paw-implement (any phase) | paw-impl-review | NO |
| paw-spec | paw-spec-review | NO |
| paw-planning | paw-plan-review | NO |
| paw-impl-review (passes, more phases) | paw-implement (next phase) | NO |
| paw-impl-review (passes, last phase, review enabled) | paw-final-review | NO |
| paw-impl-review (passes, last phase, review disabled) | paw-pr | Per Review Policy |
| paw-final-review | paw-pr | NO |

**Skippable = NO**: Add activity TODO and execute immediately after transition completes.

### Step 2.5: Candidate Promotion Check

When next activity would be `paw-pr` (all planned phases complete), check for phase candidates:

1. Read ImplementationPlan.md `## Phase Candidates` section
2. Count **unresolved** candidates: `- [ ]` items WITHOUT terminal tags (`[skipped]`, `[deferred]`, `[not feasible]`)
3. If unresolved candidates exist: set `promotion_pending = true` and extract candidate descriptions
4. Otherwise: set `promotion_pending = false`

If `promotion_pending = true`, return candidates in structured output. PAW orchestrator handles user interaction.

### Step 3: Check Stage Boundary and Milestone Pause

**Stage boundaries** occur when moving between these stages:
- spec-review passes → code-research
- plan-review passes → implement (Phase 1)
- phase N complete → phase N+1
- all phases complete → paw-final-review (if enabled) or paw-pr (if disabled)
- paw-final-review complete → paw-pr
- paw-pr complete → workflow complete

**Stage-to-milestone mapping** (determines which milestone is reached at each boundary):

| Stage Boundary | Milestone Reached |
|----------------|-------------------|
| spec-review passes | Spec.md complete |
| plan-review passes | ImplementationPlan.md complete |
| phase N complete (not last) | Phase completion |
| all phases complete | Phase completion (last phase) |
| paw-final-review complete | Final Review complete |
| paw-pr complete | Final PR |

**Determine pause_at_milestone**:
- If Review Policy ∈ {`always`, `milestones`}: pause at ALL milestones
- If Review Policy = `planning-only`:
  - Spec.md, ImplementationPlan.md, Final PR: `pause_at_milestone = true`
  - Phase completion (including last phase): `pause_at_milestone = false`
- If Review Policy = `never`: `pause_at_milestone = false`

**Determine session_action**:
- If crossing a stage boundary AND Session Policy = `per-stage`: set `session_action = new_session`
- Otherwise: set `session_action = continue`

If `session_action = new_session`, set inline_instruction to: next activity and phase (e.g., "Phase 2: Tool Enhancement")

Continue to Step 4 (preflight still needed for inline_instruction context).

### Step 4: Preflight Checks

Before the next activity can start, verify:

**For paw-implement**:
- [ ] On correct branch per Review Strategy
  - `prs`: phase branch (e.g., `<target>_phase1`)
  - `local`: target branch
- [ ] ImplementationPlan.md exists and has the target phase

**For paw-code-research**:
- [ ] Spec.md exists (unless minimal mode)

**For paw-final-review**:
- [ ] All implementation phases complete
- [ ] On target branch (local strategy) or phase branches merged (prs strategy)

**For paw-pr**:
- [ ] All phases complete
- [ ] paw-final-review complete (if enabled) or skipped (if disabled)
- [ ] On target branch or ready to merge

**Artifact Tracking Check** (for all activities):
- Check if `.paw/work/<work-id>/.gitignore` exists
- If exists with `*` pattern: artifact_tracking = `disabled`
- Otherwise: artifact_tracking = `enabled`

If any check fails, report blocker and stop.

### Step 5: Queue Next Activity

Add TODO for next activity:
- `[ ] <activity-name> (<context>)`
- `[ ] paw-transition`

## Completion

After completing all steps, return structured output:

```
TRANSITION RESULT:
- session_action: [continue | new_session]
- pause_at_milestone: [true | false]
- next_activity: [activity name and context]
- artifact_tracking: [enabled | disabled]
- preflight: [passed | blocked: <reason>]
- work_id: [current work ID]
- inline_instruction: [for new_session only: resume hint]
- promotion_pending: [true | false] (only when next would be paw-pr)
- candidates: [list of unresolved candidate descriptions] (only if promotion_pending)
```

**If pause_at_milestone = true**: The PAW agent must PAUSE and wait for user confirmation before proceeding.

**If session_action = new_session**: The PAW agent must call `paw_new_session` with the provided work_id and inline_instruction.

**If preflight = blocked**: The PAW agent must report the blocker to the user.

Mark the `paw-transition` TODO complete after returning this output.

## Candidate Resolution Markers

Terminal markers used in Step 2.5 to identify resolved candidates:
- `- [x] [promoted] <desc>` — Elaborated into a full phase
- `- [x] [skipped] <desc>` — User chose not to pursue
- `- [x] [deferred] <desc>` — Future work outside current workflow
- `- [x] [not feasible] <desc>` — Code research revealed infeasibility

Unresolved: `- [ ]` items without terminal tags. Empty section or all-resolved → `promotion_pending = false`.

## Guardrails

- Do NOT skip the stage boundary check (Step 3)
- Do NOT return session_action = continue if boundary + per-stage policy
- Do NOT return preflight = passed if checks actually failed
- Do NOT call paw_new_session directly—return the decision for PAW agent to act on

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.