Skip to content
Development
Skill

/unharness

Safely leave Citadel using the active adoption receipt. Produces a no-write, reviewable plan, preserves a portable archive, removes only exact owned material, and reports modified or externally registered surfaces as retained or unknown. Legacy installs must be imported before

From plugin
citadel
92248 skills7 agents2 MCP
Install
$ npx -y skills add SethGammon/Citadel --skill unharness --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/unharness

Context preview

The summary Claude sees to decide when to auto-load this skill.

Safely leave Citadel using the active adoption receipt. Produces a no-write, reviewable plan, preserves a portable archive, removes only exact owned material, and reports modified or externally registered surfaces as retained or unknown. Legacy installs must be imported before

SKILL.md

unharness.SKILL.md
name: unharness
license: MIT
description: >-
  Safely leave Citadel using the active adoption receipt. Produces a no-write,
  reviewable plan, preserves a portable archive, removes only exact owned
  material, and reports modified or externally registered surfaces as retained
  or unknown. Legacy installs must be imported before exact leave is claimed.
user-invocable: true
auto-trigger: false
trigger_keywords:
  - unharness
  - remove citadel
  - uninstall citadel
  - clean up citadel
  - remove harness
  - uninstall harness
last-updated: 2026-07-30

/unharness - Receipt-owned exit from Citadel

Orientation

Use this skill when the user wants Citadel removed from a project. Exit is a two-step, receipt-owned operation. A plan never mutates the project. Apply requires the exact saved plan and its confirmation token.

Do not infer ownership from familiar paths. Do not delete `.planning/`, `.citadel/`, runtime settings, hooks, skills, or registrations merely because they look Citadel-related.

Protocol

1. Locate Citadel and inspect adoption authority

Read `.citadel/plugin-root.txt` when present. Otherwise use the directory containing this skill. Check for `.citadel/adoption/active.json`; the adoption planner also checks the private recovery ledger.

2. Create a no-write leave plan

Choose a plan path inside the project, such as `.planning/adoption/leave.plan.json`, and run:

node {citadelRoot}/scripts/adopt.js leave plan \
  --target {projectRoot} \
  --out {planPath} \
  --json

Show the user:

  • exact files that will be removed or restored;
  • modified or ambiguous footprint entries that will be retained;
  • portable archive path;
  • runtime registrations whose removal evidence is `unknown`;
  • the plan digest and confirmation token.

If the result is `NOT_ADOPTED`, stop. Create a conservative legacy inventory:

node {citadelRoot}/scripts/adopt.js import plan {citadelRoot} \
  --target {projectRoot} \
  --out {importPlanPath} \
  --json

Apply that import only after its own explicit approval. Then create a new leave plan from the resulting receipt. Never describe legacy cleanup as exact removal.

3. Obtain explicit approval

Leaving is destructive. Ask the user to approve the displayed plan and exact confirmation token. Do not apply from an unsaved or regenerated plan.

4. Apply and verify

After approval:

node {citadelRoot}/scripts/adopt.js leave apply {planPath} \
  --confirm {confirmationToken} \
  --json

node {citadelRoot}/scripts/adopt.js doctor \
  --target {projectRoot} \
  --json

Doctor may report `not_adopted` after a clean leave. Report the leave receipt, archive path, removed entries, retained conflicts, and every `unknown` unregistration observation. “Citadel removed” is permitted only when the receipt proves every required local and external removal.

Export-only compatibility

When the user explicitly wants a human-readable export without leaving:

node {citadelRoot}/scripts/unharness.js {projectRoot} --export-only

This writes the legacy Markdown archive but does not remove harness material.

Fringe Cases

  • If `.planning/` does not exist, treat it as an empty portable-state set and

show the setup/import hint; do not create it merely to leave.

  • Missing or invalid adoption authority blocks leave. Use `import plan` or

private-ledger recovery; never guess ownership.

  • A changed saved plan, source, target, or pre-image requires a fresh plan.
  • An unavailable runtime unregister API stays `unknown`; report the manual

observation required.

  • If the Citadel root cannot be located, stop with the exact missing path.

Quality gates

  • Planning is read-only unless the user explicitly requests `--out`.
  • Apply consumes the exact saved plan and revalidates source, target, and

pre-images.

  • Modified owned material is retained with an explicit conflict.
  • Shared runtime files restore exact pre-images only while installed bytes

remain exact.

  • Missing receipts, malformed receipts, and unenumerable registrations are

`unknown` or blocked, never successful.

  • The portable archive and private receipt ledger remain available for restore

and recovery.

Exit Protocol

Return the leave operation ID and receipt digest, portable archive path, exact removed/restored counts, retained conflicts, and unknown external removals. State plainly whether exact exit was proved. Do not claim success from a completed command when required removal evidence is missing.

Read more
Ships withcitadel

An open-source operating layer for Claude Code and OpenAI Codex. Citadel routes requests, preserves repository state between sessions, coordinates parallel work, applies repository safeguards, and records evidence and handoffs around the coding agent you

Get the whole plugin

Other skills on citadel.