Graveyard — Close Out Dead Side Projects
Close out a dead or abandoned side-project repo so it becomes permanent evidence instead of hidden shame. One evening. Three interview-ready artifacts. One closing commit.
Ship With AI artifact #23 · post-series adjacent · companion to Your Dead Side Project Is Your Next Job Interview.
When to run
Invoke when the user:
- Types
/graveyardor/graveyard <path-or-url> - Asks to "close out," "archive properly," or "document" a dead or abandoned project
- Mentions dead repos they want to turn into portfolio evidence or interview material
Do NOT invoke when the user wants to:
- Revive a dead project (this skill archives; it does not resurrect)
- Delete a repo (deleting destroys evidence — archive instead)
- Review a currently-active project (use
/context-taxinstead)
Input surface
/graveyard→ operate oncwd(must be a git repo with at least one commit)/graveyard /abs/path/to/repo→ operate on the given local path/graveyard https://github.com/user/repo→ clone to/tmp/graveyard-<slug>/and operate there; the closing commit stays local in/tmp; the user pushes manually after review
If cwd is not a git repo and no path/URL is given, stop and ask for one.
Process
Phase 1 — Discovery (silent, ~15 seconds)
Read, in order, and form an internal picture:
git log --oneline --since='3 years ago'— find the last meaningful commit dategit log --stat --since='1 year ago' --format='%h %s'— identify the largest-line-count commitsREADME.md— what the project claimed to bepackage.json/Cargo.toml/pyproject.toml/go.mod/Gemfile/requirements.txt— infer the stack- Top-level file tree (
ls -Fequivalent) — what was actually built vs. claimed - Last 20 commits' messages — spot any
TODO/FIXME/WIP:patterns
Do not print anything to the user during this phase.
If the repo has zero commits, or no README.md, stop and print:
This repo has no archaeology to work from (missing commits or README). Close it out manually, or point the skill at a different repo.
Phase 2 — Interview (exactly two questions)
Ask these two questions, in this order, and wait for the user to answer each before proceeding. Do not ask follow-up questions. Two questions is the budget.
Q1. What job, role, or use-case do you want this repo to be evidence for?
Examples: "senior full-stack engineer at a B2B SaaS," "freelance automation consulting," "a conference talk on domain-specific AI," "portfolio for applying to a bootcamp cohort."
Q2. Why did you actually stop? (One sentence. The real reason — not the diplomatic one.)
Examples: "The auth flow required middleware I couldn't justify for the scope." "I lost interest after the first user survey came back weak." "I ran out of time between a kid's birthday and a day-job deadline."
All other calibration comes from Phase 1 discovery. Do not ask the user for stack, target company, project history, or feature list — you already have those from discovery.
Phase 3 — Analysis (silent)
Map the project's commit history and file structure to four interview-question categories:
- Tradeoffs — decisions with clear alternatives considered
- Scoping — moments where the project's scope shifted or failed
- Debugging — long-running issues or multi-commit fixes
- Decision-reversal — where the project pivoted from a prior approach
Select the three strongest stories. Not three — the three best — where commit evidence is strongest. Each story must have:
- A specific commit SHA to anchor it
- A clear setup-action-result arc visible in commits or code
- An interview-question category it answers
Draft each story in STAR+Reflection format (Situation, Task, Action, Result, Reflection). Each story: 250–400 words. A two-to-three-minute spoken answer.
Draft the portfolio paragraph (2–4 sentences). Structure: I built [X] using [Y] to answer [Z]. Shipped [what worked]. Closed at [where it stopped]. Learned [W]. Past-perfect active voice. No apology language.
Draft the README close-out section (see template below).
Draft the commit message. Default: chore: close out project, document postmortem and evidence.
Phase 4 — Output (show diffs, wait for approval)
- Write
CLOSED.mdto the repo root. If one already exists, print a warning and ask whether to overwrite. - Print the full
CLOSED.mdcontent for the user to review. - Print the proposed
README.mddiff — the new## Status: Closed out on {today}section appended to the existing README. - Print the proposed commit message.
- Print the final prompt, verbatim:
Type go to stage both files and commit locally. Anything else to edit first.
Phase 5 — Commit (on explicit "go" only)
On the user's exact reply of go (or commit, or a clear affirmative like yes, commit):
- Append the new section to
README.md - Run
git add README.md CLOSED.md - Run
git commit -m "{drafted message}" - Print:
Commit made locally. Push manually with 'git push' when ready.
Do not run git push. Ever. Under any circumstance.
After the commit, print this one-sentence reminder:
If this project is definitively closed and the repo lives on GitHub,
gh repo archive {owner}/{repo}marks it archived (prevents accidental pushes and signals "closed" to viewers). Optional — only run it yourself.
Do not run gh repo archive automatically.
Output templates
CLOSED.md
# Status: Closed out — {today as YYYY-MM-DD}
## Portfolio story
{2–4 sentence paragraph. Past-perfect active voice. Names the problem, the technical approach, the signal produced, the lesson walked away with. No apology language.}
## Three rehearsable stories
### Story 1 — {Category, e.g. "Tradeoff I made and later reconsidered"}
**Triggered by:** "Tell me about a time you changed your mind on a technical decision."
**Anchored at:** commit `{sha}` — {one-line commit message}
**Situation.** {100–150 words.}
**Task.** {50 words.}
**Action.** {100–150 words.}
**Result.** {50–75 words.}
**Reflection.** {50 words.}
### Story 2 — {Category}
{Same structure.}
### Story 3 — {Category}
{Same structure.}
README close-out section
## Status: Closed out on {today as YYYY-MM-DD}
{One-paragraph postmortem. What I set out to do. How far I got. The specific reason I stopped — use the user's Q2 sentence verbatim, don't editorialize.}
### What this repo is evidence of
- {Specific skill/framework/technique 1, e.g. "Next.js 14 app router + Postgres + Prisma schema work"}
- {Specific skill 2}
- {Specific skill 3}
- {Optional specific skill 4}
### Would I revive this?
{Either: "No. {The original blocker is still true. If I rebuilt it today I'd {different approach}}."
Or: "Yes, under these specific conditions: {2–3 preconditions that would need to be true}."}
Anti-patterns to avoid
- No apology language. The close-out is evidence, not an apology. If a draft uses
never finished,sorry,unfortunately, ortried to, rewrite before showing the user. - No auto-push. Ever. Local commit only. The user runs
git pushwhen ready. - No revival suggestions unless asked. This skill archives. Do not nudge the user toward reviving.
- No editorializing the Q2 reason. Use the user's exact sentence in the postmortem. Do not speculate about the "real" reason behind their stated reason.
- No more than three stories. If the repo seems to justify five, pick the three best. Four or more dilutes interview prep.
- No stack guessing. If the stack isn't in package manifests or the README, do not infer — ask the user inside Phase 2. (Exception to the two-question rule: stack clarification if genuinely ambiguous.)
- No running
gh repo archiveautomatically. Suggest it once in Phase 5. The user runs it. - No modifying existing README content. Only append the
## Status: Closed outsection. Never rewrite or reorder existing README sections.
What "done" looks like
The skill completed successfully when:
CLOSED.mdexists at the repo root with a portfolio paragraph and three STAR+R storiesREADME.mdhas a closed-out section appended at the bottom- A local commit exists with the drafted message
- The user has been told to push manually
- The user has been reminded about
gh repo archive(but not had it run automatically)
The user should now be able to:
- Link the repo from a resume, portfolio page, twitter bio, or email signature
- Walk into any interview with three rehearsable stories they didn't have this morning
- Show recruiters a repo whose README reads as evidence, not as abandoned work
Start here
Begin with Phase 1 (silent discovery). Output nothing user-facing until Phase 2 (the two questions).