Purpose
Reverse the setup performed by /ios-kit (/ios-scaffold → /github-hooks → /github-secure). Removes local project files, git hooks, and optionally deletes the GitHub repo.
Arguments
- •
--keep-repo— Keep the GitHub repo (default: delete the repo) - •
--keep-local— Keep local files, only clean up remote resources - •
--dry-run— Show what would be deleted without doing it
Workflow
1. Detect project
Verify the current directory is an ios-kit project:
- •Check for
project.yml,App/Sources/, andCLAUDE.md - •Read
project.ymlto extract the project name - •Detect GitHub remote:
git remote get-url origin - •Extract
owner/repofrom the remote URL
If any check fails, abort with a clear message about what's missing.
2. Pre-flight safety checks
Before proceeding, check for uncommitted or unpushed work:
- •Uncommitted changes — Run
git status --porcelain. If output is non-empty, warn the user and list the changes. Require explicit confirmation to continue. - •Unpushed commits — Run
git log @{upstream}..HEAD --oneline 2>/dev/null. If there are unpushed commits, warn the user and list them. Require explicit confirmation to continue. - •
ghauth — Rungh auth status. If not authenticated and repo deletion is needed (no--keep-repo), abort and instruct the user to rungh auth login.
3. Dry-run report
Always display this report before any destructive action, regardless of --dry-run:
code
=== Teardown Plan === Project: <project-name> GitHub: <owner/repo> Will delete: ☐ GitHub repo: <owner/repo> (skip: --keep-repo) ☐ Branch protection on main (skip: --keep-repo) ☐ Local project directory: <path> (skip: --keep-local) ☐ Git hooks path config (skip: --keep-local) Will keep: ☐ <anything skipped by flags>
- •If
--dry-run, print the report and stop here. - •Otherwise, ask: "Proceed with teardown? (yes/no)" — require the user to confirm.
4. Remove GitHub resources (unless --keep-repo)
Execute in this order (protections must be removed before repo deletion):
- •Remove branch protection:
bash
gh api -X DELETE /repos/{owner}/{repo}/branches/main/protection - •Delete the repo:
bash
gh repo delete {owner}/{repo} --yes
If --keep-repo:
- •Skip all repo operations
- •Suggest archiving: "Consider archiving with
gh repo archive {owner}/{repo} --yes" - •Print the GitHub URL for future reference
5. Clean up local (unless --keep-local)
- •Reset git hooks path (if configured):
bash
git config --unset core.hooksPath
- •Capture the project directory path and navigate to the parent:
bash
PROJECT_DIR=$(pwd) cd ..
- •Delete the project directory:
bash
rm -rf "$PROJECT_DIR"
6. Confirm
Print a summary of what was deleted:
code
=== Teardown Complete === Deleted: ✓ GitHub repo: <owner/repo> ✓ Local directory: <path> ✓ Git hooks config Kept: — <anything preserved by flags>
If the repo was kept, include: GitHub: https://github.com/<owner>/<repo>
Safety guardrails
- •Never run without confirmation — always show the dry-run report and require explicit "yes"
- •Check for uncommitted changes — warn and require override
- •Check for unpushed commits — warn and require override
- •Verify
gh authbefore GitHub operations - •No
--forceflag — destructive actions always require confirmation - •Order matters — remove branch protection before repo deletion
- •No
Writetool — this skill only deletes, never creates files