skills/abandon/SKILL.md
Abandon the current feature and clean up all artifacts
npx skillsauth add pdlc-os/pdlc abandonInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are abandoning a feature that is no longer viable. The argument passed is: $ARGUMENTS
If $ARGUMENTS is empty, read docs/pdlc/memory/STATE.md for the current active feature. If no feature is active:
Check for greenfield initialization to abandon: Read docs/pdlc/memory/STATE.md. If it exists and the project has no shipped episodes (check docs/pdlc/memory/episodes/index.md — all rows are placeholder — or the file has no data rows), and CLAUDE.md exists at the project root with <!-- pdlc-scaffold: true --> or <!-- pdlc-expanded: true --> marker — this is an orphaned greenfield initialization.
Ask the user:
"No active feature found, but this looks like an incomplete greenfield initialization (scaffold CLAUDE.md exists, no features shipped).
Would you like to abandon this initialization and start fresh? This will:
- Delete the scaffold
CLAUDE.md- Remove all
docs/pdlc/memory files- Clean the slate for a new
/setup(yes / no)"
If the user confirms: delete CLAUDE.md (and .claude/docs/ if it exists), remove the docs/pdlc/ directory tree, and confirm:
"Initialization abandoned. All PDLC files removed. Run
/setupto start fresh."
Stop here — do not continue to the feature abandonment flow.
If the user declines, stop:
"No changes made. Run
/brainstormto continue where you left off."
If no greenfield initialization detected either, stop:
"No active feature to abandon. Nothing to do."
If a feature name was provided, verify it matches the active feature in STATE.md or exists in ROADMAP.md as "In Progress" or "Planned".
Atlas leads abandonment — this is a product decision about stopping work. Read agents/atlas.md.
Before the first user-facing message, read skills/formatting.md and output a Sub-phase Transition Header for "ABANDON FEATURE" followed by:
Atlas (Product Manager): "Understood — sometimes the right call is to stop. Let me walk through the cleanup so nothing is left dangling."
Read docs/pdlc/memory/STATE.md to determine the current phase. Tailor the confirmation based on how far the feature has progressed:
If currently in Inception (brainstorming):
"You're about to abandon [feature-name] during brainstorming.
Current state: Inception / [sub-phase] [If brainstorm log exists:] Brainstorm log:
docs/pdlc/brainstorm/brainstorm_[feature]_[date].md[If PRD exists:] PRD:docs/pdlc/prds/PRD_[feature]_[date].md[If design docs exist:] Design:docs/pdlc/design/[feature]/No code has been written yet — this is a clean exit. This will:
- Archive brainstorm artifacts (log, PRD, design docs)
- Update ROADMAP.md to Dropped
- Create an abandonment episode
Why are you abandoning this feature?"
If currently in Construction or Operation:
"You're about to abandon [feature-name].
Current state: [phase] / [sub-phase] [If Beads tasks exist:] Open tasks: [N] [If PRD exists:] PRD:
docs/pdlc/prds/PRD_[feature]_[date].md[If design docs exist:] Design:docs/pdlc/design/[feature]/[If episode draft exists:] Episode draft:docs/pdlc/memory/episodes/[NNN]_[feature]_[date].mdThis will:
- Close all open Beads tasks for this feature
- Update ROADMAP.md to Dropped
- Create an abandonment episode
- Reset STATE.md to Idle
Why are you abandoning this feature?"
Wait for the user's reason. Record it — this goes into the abandonment episode and DECISIONS.md.
Append to docs/pdlc/memory/DECISIONS.md:
### ADR-[NNN]: Abandon feature [feature-name]
**Date:** [today]
**Source:** User (explicit)
**Phase:** [current phase]
**Sub-phase:** [current sub-phase]
**Agent:** Atlas
**Feature:** [feature-name]
**Status:** Active
**Decision:** Abandon feature `[feature-name]` — stop all work and clean up.
**Context:** [user's reason from Step 1]
**Work completed before abandonment:**
- Phase reached: [phase / sub-phase]
- Beads tasks completed: [N of M]
- PRD: [exists / not created]
- Design docs: [exists / not created]
- Code on feature branch: [yes / no — check git log]
**Alternatives considered:** Not discussed — user decision to abandon.
If currently in Inception: Skip to 3b — no sub-tasks exist yet.
Otherwise: List all sub-tasks for this feature:
bd list --label "epic:[feature-name]" --json
For each open sub-task (not already "done"):
bd close [task-id] --reason "Feature abandoned — see ADR-[NNN]"
Report:
"Closed [N] open Beads sub-tasks for
[feature-name]."
The roadmap-level task is the one with labels roadmap + F-NNN. Regardless of phase, update it so the claim is released and the feature status is durable:
bd list --label roadmap --label F-NNN --json # find the task id
bd update <bd-task-id> --status dropped
bd unclaim <bd-task-id>
If your Beads version lacks --status dropped, use bd close <bd-task-id> --reason "abandoned — see ADR-[NNN]" instead. Either way, the claim must be released so /brainstorm stops treating the feature as held.
Find the feature row. Update:
In Progress or Planned → Dropped— → Dropped [today]— → [NNN]_abandoned_[feature]_[date].md—Create a compact episode at docs/pdlc/memory/episodes/[NNN]_abandoned_[feature-name]_[date].md:
# Episode [NNN]: Abandoned — [feature-name]
**Type:** Abandoned
**Date:** [today]
**Phase reached:** [phase / sub-phase]
## Reason for Abandonment
[User's reason from Step 1]
## Work Completed
- **Beads tasks:** [N] completed, [M] abandoned (closed without completion)
- **PRD:** [exists at path / not created]
- **Design docs:** [exist at path / not created]
- **Code:** [feature branch exists: yes/no. If yes, list key files changed]
## Decision Record
ADR-[NNN]: [link to DECISIONS.md entry]
## Lessons Learned
[Atlas's brief assessment: what can be learned from this abandonment?
Was the feature ill-conceived? Did circumstances change? Was it technically
infeasible? This helps future roadmap planning.]
## Artifacts (archived)
The following artifacts were moved to `docs/pdlc/archive/` for reference:
- PRD: [archive path or "none"]
- Design docs: [archive path or "none"]
- Brainstorm log: [archive path or "none"]
- Feature branch: `feature/[feature-name]` (not merged, not deleted)
Update docs/pdlc/memory/episodes/index.md:
| [NNN] | [feature-name] | [today] | [episode file] | — | Abandoned |
STATE.md:
Idle — Ready for next /brainstormnonenonenoneAbandoned / [feature-name] / [now ISO 8601]_None held. Run /brainstorm to claim the next priority feature._Append to Phase History:
| [now] | feature_abandoned | [phase] | [sub-phase] | [feature-name] |
Archive artifacts (not delete):
Model override: Use Haiku for file moves and Beads commands.
Archive the abandoned feature's artifacts and clean up Beads:
bash scripts/archive-feature.sh [feature-name]
Commit the archive:
bash scripts/commit-archive.sh [feature-name]
End of model override.
The feature branch is kept (not merged, not deleted) — the user can prune it manually with git branch -D feature/[name].
Read docs/pdlc/memory/ROADMAP.md. Find the next priority feature with status Planned. Call it [next-feature] with ID [next-id].
If abandoned during Inception (brainstorming):
Atlas (Product Manager): "Feature
[feature-name]has been dropped from brainstorming. The brainstorm log and any docs are archived for reference — nothing is lost if you want to revisit the idea later."
"Here's the roadmap:
- Just dropped:
[feature-name][If next feature exists:]- Next on the roadmap:
[next-id]: [next-feature]— [description]- Remaining: [N] features planned
What would you like to do?
- Brainstorm next — start brainstorming
[next-feature]now- Pick a different feature — choose from the roadmap or propose a new one
- Pause — take a break, come back later"
Handle the response:
[next-feature] to In Progress. Immediately begin /brainstorm [next-feature].In Progress and begin /brainstorm [that-feature]. If new, add to ROADMAP.md with next F-NNN ID, set to In Progress, and begin brainstorm.If abandoned during Construction or Operation:
Atlas (Product Manager): "Feature
[feature-name]has been abandoned and cleaned up. Everything is documented — the PRD, design docs, and branch are preserved for reference in case you want to revisit later."
"Here's where we stand on the roadmap:
- Just abandoned:
[feature-name][If next feature exists:]- Next on the roadmap:
[next-id]: [next-feature]— [description]- Remaining: [N] features planned
What would you like to do?
- Continue — start brainstorming
[next-feature]now- Pause — take a break
- Switch — work on a different feature"
Handle the response the same way as the ship Step 18 feature loop.
git branch -D feature/[name]..paused-feature.json exists for this feature (it was paused during a hotfix), delete it as part of cleanup.CLAUDE.md, .claude/docs/, and docs/pdlc/ entirely. This is a destructive action — the user has already confirmed via the abandon prompt, which serves as the explicit confirmation. Log the event in git: git add -A && git commit -m "chore: abandon greenfield initialization — clean slate for re-init".data-ai
Run a feature autonomously from approved-PRD to shipped, evaluated by a per-turn Sentinel hook. Requires bypass-permissions mode and Agent Teams mode.
development
# Variant Convergence **Topic slug:** `variant-convergence` **Triggers:** - **Inception path — Brainstorm Design Step 10.7:** after Step 10.6 (Design-Laws Audit) completes, before Step 11 (PRD design-doc link updates) and the Step 12 design approval gate. Variants are HTML mockups Muse generates. - **Construction path — Build Review Step 12.5:** after Party Review (Step 12) writes its review file and Muse appends the *As-Built Audit* section to `ux-review.md`, before the Step 13 Review approval
data-ai
Force-release a stuck roadmap-level feature claim (admin command)
devops
Bypass the deploy-before-Operation guardrails block with a single confirmation