change-disposition

Close OpenSpec changes without implementation using superseded, deferred, or rejected markers.

Updated Aug 2, 2026
One-click install
npx skills add https://github.com/leonardoacosta/skills --skill change-disposition-leonardoacosta
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: change-disposition
Source: https://github.com/leonardoacosta/skills/tree/main/leo-core/skills/change-disposition
Command: npx skills add https://github.com/leonardoacosta/skills --skill change-disposition-leonardoacosta

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? OpenSpec proposals sometimes need to be closed without being implemented, but doing so ad hoc risks leaking unmerged spec deltas, losing decision evidence, or leaving dependent proposals pointing at dead changes. This Skill enforces a terminal close-without-implementation workflow that preserves evidence and keeps the main specification tree untouched. ## Core Features & Use Cases - Canonical Disposition Markers: Writes exactly one of SUPERSEDED.md, DEFERRED.md, or REJECTED.md from fixed templates with required lineage fields like superseded-by and reopen-when. - Dependent Sweep and Safe Archival: Searches active proposals for references to the closing change, then archives with openspec archive --skip-specs so no deltas merge into main specs. - Integrity Verification: Fingerprints the main spec tree before and after archival with sha256 digests and stops if anything changed. - Use Case: A proposal for a runtime-neutral distribution cutover is replaced by a new Pi extension program. Use this Skill to record the supersession, flag dependent proposals, and archive the change without touching the spec tree. ## Quick Start Close the OpenSpec change 'complete-runtime-neutral-distribution-cutover' as superseded by 'establish-pi-utility-extension-program' and archive it without merging specs.

Frequently Asked Questions about change-disposition

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I close an OpenSpec change without implementing it?

Write exactly one canonical marker (SUPERSEDED.md, DEFERRED.md, or REJECTED.md) in the active change directory, sweep dependent proposals, then run openspec archive <change-id> --skip-specs -y. Never omit --skip-specs, since normal archival would merge unimplemented deltas into the main specs.

What is the difference between superseded, deferred, and rejected dispositions?

Superseded means a named replacement change now owns the intent and requires a superseded-by field. Deferred means the intent survives but work is parked indefinitely and requires an observable reopen-when condition. Rejected means the work is irrelevant or unjustified and requires a specific rationale.

When should I not use a change disposition?

Stop when any proposed behavior or spec delta has already merged into the main specification tree, since --skip-specs cannot undo merged behavior. Also stop when there is no authorized decision, no real replacement for supersession, no reopen condition for deferral, or a live claim owns the change.

How do I verify an OpenSpec archive did not modify main specifications?

Fingerprint the spec tree before archival with find openspec/specs -type f piped through sha256sum, then recompute the digest after archival and require the two values to match. If the fingerprint changed, stop and follow the repository's explicit recovery process.

Can I use abandoned, cancelled, or wontfix as a disposition marker?

No. Informal terms like abandoned, cancelled, or wontfix must be normalized to whichever of superseded, deferred, or rejected matches the meaning. Marker filenames and fields use only the three canonical dispositions, and files like ABANDONED.md or WONTFIX.md are rejected.