Install
$ agentstack add skill-jccidc-plan-enforcer-plan-enforcer-abandon ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Abandon Plan
Retire the active Plan Enforcer plan cleanly. When you are mid-plan and you change your mind, this replaces the multi-step manual dance (hand-write a Decision Log row covering every non-terminal task, rewrite the ledger, move it to the archive dir, fight the schema guard) with a single command.
When to use
Invoke this skill when:
- You are mid-plan and decide to stop working on it entirely.
- A higher-priority pivot has appeared and the current plan is not going to land.
- The plan was misconceived and needs to be abandoned cleanly before a new plan is drafted.
- You want an audit-grade record of why the plan stopped, preserved on disk for future reference.
Skip this skill when the plan is already fully closed (use the normal close flow; abandon refuses on a fully-terminal ledger) or when you only want to reorder remaining tasks (edit the ledger directly; abandon is for ending the plan, not reshaping it).
How it runs
Prefer the installed CLI when available:
plan-enforcer-abandon --reason "scope changed -- pivoting to auth migration"
If the installed wrapper is not on PATH, invoke the CLI directly:
node "$HOME/.claude/skills/plan-enforcer/src/abandon-cli.js" --reason ""
The --reason flag is required. The required reason is sole authorization -- there is no --force flag and no interactive confirm prompt. The reason is the act of abandonment being logged; if you cannot state why, do not abandon.
Exit codes:
0success. Two paths printed to stdout:archive:andreceipt:.2preflight failure. Stderr names the specific reason (no ledger, empty ledger, all rows already terminal, or--reasonmissing).1unexpected failure during transformation, archive, or receipt. Stderr carries the message.
What the command does
In order:
- Preflight. Confirms an active ledger exists, that at least one row is still non-terminal, and that
--reasonis provided. - Mark remaining rows superseded. Every non-terminal task row is flipped to
supersededwith evidenceabandoned:. Already-terminal rows (verified, skipped, blocked) are left unchanged as part of the historical record. - Log the pivot. A new Decision Log row with type
pivotis appended, scoped to the list of T-IDs that were flipped, with reasonPlan abandoned:. - Emit a closure receipt. The shipped receipt pipeline runs against the transformed content. The resulting receipt lands at
.plan-enforcer/proof/closure--.mdand itsPrior closuresection links to any earlier receipt for the same plan-slug, preserving the walkable chain. - Archive the ledger. The full transformed ledger is written to
.plan-enforcer/archive/-.mdwith frontmatter fields describing the close. - Clear the active slot.
.plan-enforcer/ledger.mdand transient sidecar files are removed via the existingcleanupWorkingFileshelper.
After abandonment
The archive file is the audit record. Six months later you can answer "I wonder what that plan was" without git archaeology:
- Open
.plan-enforcer/archive/-.mddirectly. The file is the full human-readable ledger: scoreboard, task table, Decision Log (including the abandonment row), reconciliation history, and frontmatter describing the close. - Run
plan-enforcer-reportwith no arguments for a summary of every archive entry, orplan-enforcer-reportto render a specific archive.
To pick up related work later, draft a new plan via /plan-enforcer-discuss and /plan-enforcer-draft referencing the archive path. There is no "unabandon" command -- the archive is the full history and a new plan is a cleaner restart.
Anti-patterns
- Running
plan-enforcer-abandonwhen you actually want to close the plan normally. A plan that is mostly complete should ride the normal auto-emission path through the plan-close hook; abandon is for stopping work, not for finishing it. - Providing a vague reason.
--reason "done"defeats the purpose; use the reason slot to record the actual pivot context so the audit record is useful to a future reviewer. - Editing the archive file after creation. Archives are point-in-time records; if you need to annotate, open a new plan that references the archive path.
- Using the same reason repeatedly across different abandons. Each reason is its own row in the audit trail; reuse hides the actual history.
See also
plan-enforcer-report-- browse archive entries and render specific archives.plan-enforcer-receipt-- the underlying closure-receipt surface; abandon uses it internally.plan-enforcer-discuss/plan-enforcer-draft-- start a fresh plan after abandonment.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: jccidc
- Source: jccidc/.plan-enforcer
- License: MIT
- Homepage: https://www.jccidc.com/
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.