From citadel
Detects repository directory conventions, audits file placement, and moves files with import-path updates. Never changes code inside files.
How this skill is triggered — by the user, by Claude, or both
Slash command
/citadel:organizeThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
**Use when:** Deciding where a file belongs, auditing file placement against the project's conventions, running a naming-convention sweep, or moving files so the tree matches the declared layout.
Use when: Deciding where a file belongs, auditing file placement against the project's conventions, running a naming-convention sweep, or moving files so the tree matches the declared layout.
Don't use when: You want a structural map of code relationships (use /map), you want to change code inside files (use /refactor), you need disk or artifact cleanup (use /houseclean), or you need a single known move executed (use /refactor move).
/organize changes where files live and what they are named. Changing code structure within files (extract, inline, split functions or components, rename symbols) is /refactor. The only in-file edits /organize makes are import-path updates forced by a move or rename. If an audit reveals a file that should be split or merged, recommend /refactor; do not do it here.
| Command | Behavior |
|---|---|
/organize | Detect convention, audit placement, propose and execute a move plan |
/organize --audit | Check current files against the manifest, report violations only |
/organize --show | Display the current organization manifest |
/organize --lock | Set locked: true so the enforcement hook blocks violations |
/organize --unlock | Set locked: false so enforcement is advisory |
/organize where does {file} go | Single placement decision, no full audit |
Read .claude/harness.json. If an organization key exists, use its convention and placement rules; on bare /organize, ask whether to audit, adjust the rules, or reconfigure. If no key exists, continue to Step 2.
Use the Glob tool (not find or Get-ChildItem) to discover directories. Filter out node_modules, .git, .planning, .citadel, .claude, dist, build, __pycache__, .next, target, .venv, venv. Cap at 200 directories; if larger, scan only the top 3 levels.
Convention signals:
src/components/, src/hooks/, src/utils/ -> layer-basedsrc/features/auth/, src/features/dashboard/ -> feature-basedsrc/auth/components/, src/auth/hooks/ -> hybridsrc/ with no subdirectories -> flatRecord: convention, confidence (high/medium/low), roots with purposes, anomalies.
Check every source file against the placement rules (manifest if present, detected convention otherwise). Also check naming: files or directories that break the dominant casing or suffix pattern of their siblings.
=== Structure Audit: {project} ===
Convention: {convention} ({confidence})
Compliant: {N}/{M} source files
Violations:
{current_path} -> {expected_path} ({rule broken})
Naming:
{path}: {issue}
For each violation, build a move plan before touching anything: source path -> destination path, every importer whose import path must change, and barrel/index files that need re-exports updated. Moves and renames only; never delete files with content. Present the plan and wait for confirmation.
Execute confirmed moves, update all import paths referencing moved files, update barrels, then run the project's typecheck command (from harness.json). Zero new errors allowed. If a move fails typecheck for reasons beyond import paths, revert that single move and flag the file instead of editing its code.
On first run or reconfigure, write the organization key to harness.json. Read-modify-write: preserve all other keys, and preserve any existing dynamic/cleanupPolicy entries this skill no longer manages.
{
"organization": {
"convention": "layer",
"roots": { "src": { "purpose": "application source" } },
"placement": [
{ "glob": "*.test.{ts,tsx}", "rule": "colocated", "target": null, "reason": "tests live next to source" }
],
"locked": false
}
}
Rule types: colocated, sibling-dir, root-dir, within-root. Set locked: false initially; /organize --lock turns on blocking enforcement via the organize-enforce hook.
protectedFiles: if protected files conflict with placement rules, warn and ask which takes precedence.Disclosure: "Auditing repository structure. Moves execute only after you confirm the plan."
Reversibility: amber -- file moves and import-path updates; undo with git checkout -- . before commit or git revert after.
Trust gates: Any: detect and audit. Familiar (5+ sessions): confirmed move plans execute autonomously.
organization---HANDOFF---
- Structure: {convention}; {compliant}/{total} files compliant after changes
- Moves: {N} files moved, {M} import paths updated, 0 in-file refactors
- Deferred to /refactor: {split/extract recommendations, or "none"}
- Enforcement: {"advisory (unlocked)" | "blocking (locked)"}
- Reversibility: amber -- undo moves with git checkout/revert
---
npx claudepluginhub sethgammon/citadel --plugin citadelRestructures messy projects into conventional file layouts for detected frameworks. Detects file types, plans moves with import updates, executes, and verifies.
Enforces file organization standards from CLAUDE.md/PROJECT.md with auto-fix on file create/move and directory create events.
Organizes project files into conventional directories, updates stale READMEs, cleans configuration drift, and archives deprecated items without changing code logic.