{"_id":"@dhruvtoprani/resurrect","_rev":"4-adf9f87cf108bc8491b3a5c1a35f1c51","name":"@dhruvtoprani/resurrect","dist-tags":{"latest":"0.1.3"},"versions":{"0.1.0":{"name":"@dhruvtoprani/resurrect","version":"0.1.0","keywords":["agent-skill","codex","claude-code","github","repository-analysis","revival","developer-tools"],"license":"MIT","_id":"@dhruvtoprani/resurrect@0.1.0","maintainers":[{"name":"dhruvtoprani","email":"dhruvtoprani26@gmail.com"}],"homepage":"https://github.com/dhruvtoprani/resurrect#readme","bugs":{"url":"https://github.com/dhruvtoprani/resurrect/issues"},"bin":{"resurrect":"bin/resurrect"},"dist":{"shasum":"54d1f39815d93a376352f19545cb5309d8451b00","tarball":"https://registry.npmjs.org/@dhruvtoprani/resurrect/-/resurrect-0.1.0.tgz","fileCount":26,"integrity":"sha512-ZJoI5dhG/WvUBUlPpRdk4GNBcVVOSdw6TmpRp37WfZ5FgqrO3eDhEcSm5VFCCpoBLKMA1088T0KI4niDANo6tg==","signatures":[{"sig":"MEQCIC5++pwuwtlq7PA5Lh1RfRBjEfSWN/OlbHxOHxa5a/hzAiB+PvBJ97anX8abugv92OXEXYYQct5BafPFWzK7BCdOpw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99111},"type":"module","engines":{"node":">=22"},"gitHead":"326879e7d9f90ee22f3b33d815e07f25acd9d97d","scripts":{"demo":"node --experimental-strip-types scripts/resurrect.ts demo","scan":"node --experimental-strip-types scripts/scan-repositories.ts","test":"node --experimental-strip-types scripts/test-resurrect.ts","probe":"node --experimental-strip-types scripts/run-build-probe.ts","intent":"node --experimental-strip-types scripts/infer-intent.ts","public":"node --experimental-strip-types scripts/generate-public-assets.ts","autopsy":"node --experimental-strip-types scripts/classify-autopsy.ts","collect":"node --experimental-strip-types scripts/collect-github-evidence.ts","history":"node --experimental-strip-types scripts/inspect-git-history.ts","artifacts":"node --experimental-strip-types scripts/write-artifacts.ts","citations":"node --experimental-strip-types scripts/build-citations.ts","resurrect":"node --experimental-strip-types scripts/resurrect.ts","unfinished":"node --experimental-strip-types scripts/detect-unfinished-work.ts"},"_npmUser":{"name":"dhruvtoprani","email":"dhruvtoprani26@gmail.com"},"repository":{"url":"git+https://github.com/dhruvtoprani/resurrect.git","type":"git"},"_npmVersion":"11.12.1","description":"Recover dormant repositories into evidence-backed comeback branches.","directories":{},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/resurrect_0.1.0_1784835155165_0.2672986340681185","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@dhruvtoprani/resurrect","version":"0.1.1","keywords":["agent-skill","codex","claude-code","github","repository-analysis","repository-recovery","codebase-modernization","developer-tools","product-decisions","revival"],"license":"MIT","_id":"@dhruvtoprani/resurrect@0.1.1","maintainers":[{"name":"dhruvtoprani","email":"dhruvtoprani26@gmail.com"}],"homepage":"https://github.com/dhruvtoprani/resurrect#readme","bugs":{"url":"https://github.com/dhruvtoprani/resurrect/issues"},"bin":{"resurrect":"bin/resurrect"},"dist":{"shasum":"b5965c732ec54bf19fc229e89942109b7bd13d45","tarball":"https://registry.npmjs.org/@dhruvtoprani/resurrect/-/resurrect-0.1.1.tgz","fileCount":26,"integrity":"sha512-jww3RMxwJX8U5sLcIQORwsVXUesjjS7/3OCxgU3YZc+SfeaaMvINzcVWqX2LxWeWdFUQ4i80LPwIJUDZBUCaEA==","signatures":[{"sig":"MEUCICo5qS2zY/ODaKsUi3npNvilWSBHVhSBXBCu5bz+Nh9FAiEAxhyZOsCBefrRqLeS3iOpzo1s7A4rr9AghgpF5cDreh8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":107340},"type":"module","engines":{"node":">=22"},"gitHead":"3689552ebade5661f38cdcfae7d46a983bb75b74","scripts":{"demo":"node --experimental-strip-types scripts/resurrect.ts demo","scan":"node --experimental-strip-types scripts/scan-repositories.ts","test":"node --experimental-strip-types scripts/test-resurrect.ts","probe":"node --experimental-strip-types scripts/run-build-probe.ts","intent":"node --experimental-strip-types scripts/infer-intent.ts","public":"node --experimental-strip-types scripts/generate-public-assets.ts","autopsy":"node --experimental-strip-types scripts/classify-autopsy.ts","collect":"node --experimental-strip-types scripts/collect-github-evidence.ts","history":"node --experimental-strip-types scripts/inspect-git-history.ts","artifacts":"node --experimental-strip-types scripts/write-artifacts.ts","citations":"node --experimental-strip-types scripts/build-citations.ts","resurrect":"node --experimental-strip-types scripts/resurrect.ts","unfinished":"node --experimental-strip-types scripts/detect-unfinished-work.ts"},"_npmUser":{"name":"dhruvtoprani","email":"dhruvtoprani26@gmail.com"},"repository":{"url":"git+https://github.com/dhruvtoprani/resurrect.git","type":"git"},"_npmVersion":"11.12.1","description":"Agent skill and local CLI for turning abandoned repositories into evidence-backed product decisions and safe comeback branches.","directories":{},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/resurrect_0.1.1_1784835432086_0.693988145792217","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@dhruvtoprani/resurrect","version":"0.1.2","keywords":["agent-skill","codex","claude-code","github","repository-analysis","repository-recovery","codebase-modernization","developer-tools","product-decisions","revival"],"license":"MIT","_id":"@dhruvtoprani/resurrect@0.1.2","maintainers":[{"name":"dhruvtoprani","email":"dhruvtoprani26@gmail.com"}],"homepage":"https://github.com/dhruvtoprani/resurrect#readme","bugs":{"url":"https://github.com/dhruvtoprani/resurrect/issues"},"bin":{"resurrect":"bin/resurrect"},"dist":{"shasum":"9071758f0522942ee879f78e9e8a916e8f2d39e4","tarball":"https://registry.npmjs.org/@dhruvtoprani/resurrect/-/resurrect-0.1.2.tgz","fileCount":26,"integrity":"sha512-kPzp0adWMnlXnA6XVkwS4nFsiae8be3uOV2yqRG1vjESwIEAuEZ1JtvVHKlBzq7or0iA3gSjmhlq1sxtyJ2bcg==","signatures":[{"sig":"MEQCIFbCaBsXWHBcruKW4nGS3TEEMfNC7p+aHbq0/ISbt/jRAiBuauWCxwG6d5bWtTQ2OVaXxdQPm62glr3mmpr+597/lQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108205},"type":"module","engines":{"node":">=22"},"gitHead":"a714ef8b815a871b085ff7096ec789c937d3b269","scripts":{"demo":"node --experimental-strip-types scripts/resurrect.ts demo","scan":"node --experimental-strip-types scripts/scan-repositories.ts","test":"node --experimental-strip-types scripts/test-resurrect.ts","probe":"node --experimental-strip-types scripts/run-build-probe.ts","intent":"node --experimental-strip-types scripts/infer-intent.ts","public":"node --experimental-strip-types scripts/generate-public-assets.ts","autopsy":"node --experimental-strip-types scripts/classify-autopsy.ts","collect":"node --experimental-strip-types scripts/collect-github-evidence.ts","history":"node --experimental-strip-types scripts/inspect-git-history.ts","artifacts":"node --experimental-strip-types scripts/write-artifacts.ts","citations":"node --experimental-strip-types scripts/build-citations.ts","resurrect":"node --experimental-strip-types scripts/resurrect.ts","unfinished":"node --experimental-strip-types scripts/detect-unfinished-work.ts"},"_npmUser":{"name":"dhruvtoprani","email":"dhruvtoprani26@gmail.com"},"repository":{"url":"git+https://github.com/dhruvtoprani/resurrect.git","type":"git"},"_npmVersion":"11.12.1","description":"Agent skill and local CLI for turning abandoned repositories into evidence-backed product decisions and safe comeback branches.","directories":{},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/resurrect_0.1.2_1784835558127_0.2178255675484999","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@dhruvtoprani/resurrect","version":"0.1.3","description":"Agent skill and local CLI for turning abandoned repositories into evidence-backed product decisions and safe comeback branches.","license":"MIT","type":"module","homepage":"https://github.com/dhruvtoprani/resurrect#readme","repository":{"type":"git","url":"git+https://github.com/dhruvtoprani/resurrect.git"},"bugs":{"url":"https://github.com/dhruvtoprani/resurrect/issues"},"publishConfig":{"access":"public"},"keywords":["agent-skill","codex","claude-code","github","repository-analysis","repository-recovery","codebase-modernization","developer-tools","product-decisions","revival"],"bin":{"resurrect":"bin/resurrect"},"engines":{"node":">=22"},"scripts":{"resurrect":"node --experimental-strip-types scripts/resurrect.ts","demo":"node --experimental-strip-types scripts/resurrect.ts demo","scan":"node --experimental-strip-types scripts/scan-repositories.ts","collect":"node --experimental-strip-types scripts/collect-github-evidence.ts","history":"node --experimental-strip-types scripts/inspect-git-history.ts","unfinished":"node --experimental-strip-types scripts/detect-unfinished-work.ts","intent":"node --experimental-strip-types scripts/infer-intent.ts","autopsy":"node --experimental-strip-types scripts/classify-autopsy.ts","citations":"node --experimental-strip-types scripts/build-citations.ts","public":"node --experimental-strip-types scripts/generate-public-assets.ts","probe":"node --experimental-strip-types scripts/run-build-probe.ts","artifacts":"node --experimental-strip-types scripts/write-artifacts.ts","test":"node --experimental-strip-types scripts/test-resurrect.ts"},"gitHead":"0b74d0d032a652d5ecf33d1a3d6b2fc4c1b5b99d","_id":"@dhruvtoprani/resurrect@0.1.3","_nodeVersion":"25.9.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-H+f76vWiH1R4d5dKOh3g/dfh25m/ibK0jmoMIaGtbe9RH5UMSgL/oNSaNdSuRlS61MJRgt0qm27GDjJ8smWiNw==","shasum":"490887ce5185d36e9425ec142495bb97403a2739","tarball":"https://registry.npmjs.org/@dhruvtoprani/resurrect/-/resurrect-0.1.3.tgz","fileCount":26,"unpackedSize":108219,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIB4WL72r3waFjfD+iXg2vzYfXU0JDN5pUi7untVb+8a9AiEAxnfgq7EnEE/W0lgElOOwcFChYSFXdCM97Ng/Y/bbK8I="}]},"_npmUser":{"name":"dhruvtoprani","email":"dhruvtoprani26@gmail.com"},"directories":{},"maintainers":[{"name":"dhruvtoprani","email":"dhruvtoprani26@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/resurrect_0.1.3_1784836078536_0.6397562014985068"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-23T19:32:34.972Z","modified":"2026-07-23T19:47:58.828Z","0.1.0":"2026-07-23T19:32:35.285Z","0.1.1":"2026-07-23T19:37:12.244Z","0.1.2":"2026-07-23T19:39:18.263Z","0.1.3":"2026-07-23T19:47:58.686Z"},"bugs":{"url":"https://github.com/dhruvtoprani/resurrect/issues"},"license":"MIT","homepage":"https://github.com/dhruvtoprani/resurrect#readme","keywords":["agent-skill","codex","claude-code","github","repository-analysis","repository-recovery","codebase-modernization","developer-tools","product-decisions","revival"],"repository":{"type":"git","url":"git+https://github.com/dhruvtoprani/resurrect.git"},"description":"Agent skill and local CLI for turning abandoned repositories into evidence-backed product decisions and safe comeback branches.","maintainers":[{"name":"dhruvtoprani","email":"dhruvtoprani26@gmail.com"}],"readme":"# Resurrect\n\n[![CI](https://img.shields.io/github/actions/workflow/status/dhruvtoprani/resurrect/test.yml?branch=main&style=for-the-badge&label=tests)](https://github.com/dhruvtoprani/resurrect/actions/workflows/test.yml)\n[![Node.js](https://img.shields.io/badge/Node.js-22%2B-5FA04E?style=for-the-badge&logo=nodedotjs&logoColor=white)](https://nodejs.org/)\n[![Agent Skill](https://img.shields.io/badge/Agent_Skill-Codex_%2B_Claude-7C5CFF?style=for-the-badge)](#agent-skill)\n[![License](https://img.shields.io/badge/License-MIT-C7FF3D?style=for-the-badge)](LICENSE)\n\n> **Turn abandoned repositories into evidence-backed product decisions, then prove the decision on a safe comeback branch.**\n\nResurrect is a local-first agent skill and CLI for developers who have old repositories with useful code, unfinished ideas, and no clear next move. It reconstructs the original product intent, diagnoses why progress stopped, measures what has become easier since then, and chooses one explicit verdict: **Revive, Rebuild, Salvage, or Archive**.\n\nIt does not stop at a report. After owner approval, Resurrect creates a dedicated comeback branch and prepares a bounded **Milestone Zero** that can prove whether the project deserves another life.\n\n**Links:** [60-second demo](#60-second-demo) · [Workflow](#workflow) · [Generated artifacts](#generated-artifacts) · [Safety model](#safety-model) · [Agent skill](#agent-skill) · [Development](#development)\n\n---\n\n## 60-Second Demo\n\nRequires Node.js 22 or newer.\n\n```bash\nnpm install -g github:dhruvtoprani/resurrect\nresurrect demo\n```\n\nThe bundled demo creates a synthetic abandoned repository and runs the complete guarded workflow:\n\n```text\nBEFORE\nMissing external service or secret\nUnclear product direction\nNo safe execution plan\n\nVERDICT\nREVIVE\n\nAFTER\nBranch: resurrect/2026-07-23-milestone-zero\nContract: approval-gated\nProof: build and test probe passes\nArtifacts: RESURRECTION.md + .resurrect/\n```\n\nNo account, hosted service, or API key is required for the demo.\n\n---\n\n## The Problem\n\nOld repositories are rarely just “unfinished.” They usually contain a mix of:\n\n- a product idea that may still be valuable\n- code that may or may not be recoverable\n- hidden blockers, dead dependencies, or missing services\n- abandoned branches and partially completed work\n- context that exists only in commit history, issues, and the creator’s memory\n\nA generic “finish this repo” prompt often sends an agent toward the most visible code instead of the most valuable outcome.\n\nResurrect creates a decision gate before execution:\n\n> What is still worth preserving, what changed since the project stalled, and what is the smallest proof that could justify continuing?\n\n---\n\n## Who It Helps\n\n- **Developers** deciding whether an old side project deserves another weekend\n- **Founders** revisiting prototypes that were blocked by cost, timing, or missing infrastructure\n- **Open-source maintainers** separating reusable assets from dead product scope\n- **AI coding-tool users** who want evidence and boundaries before an agent starts rewriting a codebase\n\n---\n\n## Product Principles\n\n1. **Evidence before inference**  \n   Running behavior, source code, git history, issues, and tests outrank README claims or agent guesses.\n\n2. **A verdict, not a vague score**  \n   Every analysis ends in exactly one decision: Revive, Rebuild, Salvage, or Archive.\n\n3. **Approval before execution**  \n   Resurrect will not create a comeback branch until the owner approves the Resurrection Contract.\n\n4. **Proof before ambition**  \n   Milestone Zero is a bounded vertical slice, not a promise to autonomously finish the entire product.\n\n---\n\n## Workflow\n\n```mermaid\nflowchart TD\n    A[Name a dormant repository] --> B[Intake gate]\n    B --> C[Collect repository evidence]\n    C --> D[Probe build and test state]\n    D --> E[Reconstruct original intent]\n    E --> F[Measure the Feasibility Delta]\n    F --> G{Choose one verdict}\n    G -->|Revive| H[Resurrection Contract]\n    G -->|Rebuild| H\n    G -->|Salvage| H\n    G -->|Archive| I[Document the decision and stop]\n    H --> J{Owner approves?}\n    J -->|No| K[Preserve analysis only]\n    J -->|Yes| L[Create resurrect/date-milestone-zero]\n    L --> M[Execute bounded proof]\n    M --> N[Verify and generate shareable artifacts]\n```\n\n### Evidence hierarchy\n\nResurrect ranks evidence in this order:\n\n1. Running behavior and tests\n2. Source code\n3. Git, branch, pull-request, and commit history\n4. Issues and planning documents\n5. README and documentation claims\n6. Agent inference\n\nMajor findings are written with stable citation IDs so another human or agent can trace the decision back to repository evidence.\n\n---\n\n## Verdicts\n\n| Verdict | Use it when | What happens next |\n| --- | --- | --- |\n| **Revive** | The product direction and core architecture still make sense | Repair the earliest blocker and prove a narrow vertical slice |\n| **Rebuild** | The idea is valuable, but the implementation should mostly be replaced | Preserve requirements and useful assets, then define a clean foundation |\n| **Salvage** | The full product should end, but one component deserves to live | Extract the reusable library, dataset, workflow, model, or interface |\n| **Archive** | No valuable outcome justifies more work | Record the evidence, rationale, and reusable lessons without executing |\n\nResurrect deliberately avoids fake “73% complete” estimates. It evaluates separate dimensions such as product clarity, technical recoverability, distinctive assets, current relevance, and weekend shipability.\n\n---\n\n## Generated Artifacts\n\n```text\nrepository-root/\n├── RESURRECTION.md\n└── .resurrect/\n    ├── EVIDENCE.json\n    ├── INTENT_SIGNALS.json\n    ├── AUTOPSY_CLASSIFICATION.json\n    ├── CITATIONS.md\n    ├── CITATIONS.json\n    ├── AUTOPSY.md\n    ├── ORIGINAL_INTENT.md\n    ├── FEASIBILITY_DELTA.md\n    ├── RESURRECTION_CONTRACT.md\n    ├── EXECUTION_PLAN.md\n    ├── CONTEXT.md\n    ├── PR_SUMMARY.md\n    ├── SHARE.md\n    ├── badges/\n    │   ├── verdict.svg\n    │   ├── milestone-zero.svg\n    │   └── branch.svg\n    └── tasks/\n        ├── 001-restore-environment.md\n        ├── 002-remove-dead-scope.md\n        ├── 003-build-vertical-slice.md\n        └── 004-verify-and-deploy.md\n```\n\n`RESURRECTION.md` is the public decision story for humans. `.resurrect/` is the evidence archive and execution context for coding agents.\n\n---\n\n## Quick Start\n\n### Prerequisites\n\n- Node.js 22+\n- Git\n- GitHub CLI (`gh`) only for account-wide repository scanning\n\n### Install from GitHub\n\n```bash\nnpm install -g github:dhruvtoprani/resurrect\n```\n\n### Find dormant repositories\n\n```bash\ngh auth login\nresurrect scan\n```\n\nThe scanner ranks repositories using dormancy, product evidence, language signals, topics, and archive state. It shortlists candidates without cloning them.\n\n### Start with a local project\n\n```bash\nresurrect path/to/old-project\n```\n\nThe intake gate asks only three questions before deep analysis:\n\n1. Do you want to ship the original idea, salvage one asset, modernize the stack, or decide whether to archive?\n2. What do you remember as the reason you stopped?\n3. What time budget should constrain Milestone Zero?\n\nAfter answering:\n\n```bash\nresurrect path/to/old-project --confirmed\n```\n\nReview and approve `.resurrect/RESURRECTION_CONTRACT.md`, then execute from inside the target repository:\n\n```bash\nresurrect execute\n```\n\nResurrect creates a new branch such as:\n\n```text\nresurrect/2026-07-23-milestone-zero\n```\n\n### Inspect a GitHub repository target\n\n```bash\nresurrect owner/repository\n```\n\nRemote targets currently receive a lightweight intake and metadata check. Deep analysis and execution require a local clone so the tool can inspect history, probe the build, and create a safe branch.\n\n---\n\n## Command Reference\n\n| Command | Purpose |\n| --- | --- |\n| `resurrect demo` | Run the bundled end-to-end recovery fixture |\n| `resurrect scan` | Rank dormant repositories in the authenticated GitHub account |\n| `resurrect <project>` | Resolve the target and run the intake gate |\n| `resurrect <project> --confirmed` | Collect evidence and generate the analysis scaffold |\n| `resurrect execute` | Create the approved comeback branch and prepare Milestone Zero |\n| `resurrect pr-summary` | Print a PR-ready summary from the latest evidence |\n\n---\n\n## Agent Skill\n\nThe same workflow can be used as a Codex or Claude Code skill.\n\n- **Codex trigger:** `$resurrect`\n- **Claude Code trigger:** `/resurrect`\n\nCopy this repository into the relevant local skills directory as a folder named `resurrect`. The core operating contract lives in [`SKILL.md`](SKILL.md).\n\nThe division of responsibility is intentional:\n\n- deterministic scripts collect evidence, probe the environment, classify common failure modes, and write artifacts\n- the agent handles product judgment, owner dialogue, external feasibility research, and Milestone Zero implementation\n\n---\n\n## Safety Model\n\nResurrect treats unknown repositories as untrusted code and defaults to non-destructive behavior.\n\n- Never modifies the default branch during diagnosis\n- Never pushes automatically\n- Never deletes branches\n- Blocks execution until the owner approves the contract\n- Refuses to execute from a detached HEAD\n- Blocks dirty working trees unless changes are explicitly allowed\n- Uses dependency-install safeguards and blocks lifecycle scripts by default\n- Redacts likely secrets from captured command output\n- Keeps generated evidence in `.resurrect/`\n\nSee [`SECURITY.md`](SECURITY.md) for the complete operating guidance.\n\n---\n\n## Architecture\n\n| Layer | Responsibility |\n| --- | --- |\n| **Agent skill** | Intake, product reasoning, feasibility research, verdict selection, and bounded execution judgment |\n| **CLI orchestrator** | Target resolution, workflow sequencing, approval gates, and comeback-branch creation |\n| **Evidence collectors** | Git history, unfinished-work signals, repository metadata, citations, and intent signals |\n| **Build probes** | Installation, build, test, and launch-state checks with conservative defaults |\n| **Artifact generators** | Human-readable decision story, agent context, task files, PR summary, and badges |\n\n### Repository layout\n\n```text\n.github/workflows/     CI test workflow\nagents/                Agent interface metadata\nassets/templates/      Generated contract and task templates\nreferences/             Evidence rules, verdict rubric, schemas, and research guidance\nscripts/                CLI, probes, classifiers, collectors, and generators\nSKILL.md                Agent operating contract\nCONTRIBUTING.md         Contribution and design rules\nSECURITY.md             Safety defaults and reporting guidance\n```\n\n---\n\n## Implemented in v0.1\n\n- Account-wide dormant repository scanner using the authenticated GitHub CLI\n- Intake-first target resolution for local paths and `owner/repo` references\n- Git history and unfinished-work inspection\n- Conservative build and test probing\n- Original-intent signal extraction\n- Autopsy classification for common stall patterns\n- Stable evidence citation generation\n- Revive, Rebuild, Salvage, and Archive verdict framework\n- Resurrection Contract with explicit owner approval\n- Safe comeback-branch creation\n- Public `RESURRECTION.md`, PR summary, share copy, badges, and task artifacts\n- Synthetic end-to-end test covering intake, analysis, approval blocking, and branch creation\n\n---\n\n## Development\n\n```bash\ngit clone https://github.com/dhruvtoprani/resurrect.git\ncd resurrect\nnpm test\nnpm run demo\n```\n\nThe test suite creates a temporary abandoned repository fixture, verifies the intake gate, runs analysis, checks generated artifacts, confirms that execution is blocked before approval, creates a comeback branch after approval, and validates the public output.\n\nUseful scripts:\n\n```bash\nnpm run scan\nnpm run history\nnpm run unfinished\nnpm run probe\nnpm run intent\nnpm run autopsy\nnpm run citations\nnpm run public\n```\n\n---\n\n## Roadmap\n\n- Publish `@dhruvtoprani/resurrect` to npm\n- Add optional clone-and-worktree support for remote repository targets\n- Expand build probes beyond the initial Node, Python, and common project signals\n- Add richer branch, issue, and pull-request evidence adapters\n- Publish real-world resurrection case studies\n- Add machine-readable evaluation fixtures for verdict consistency\n\n---\n\n## Contributing\n\nContributions are welcome when they preserve the project’s core rules: evidence-first, local-first, approval-gated, and safe by default. See [`CONTRIBUTING.md`](CONTRIBUTING.md).\n\n## License\n\nMIT\n\n---\n\n## One-Line Pitch\n\n**Resurrect helps developers decide what old code deserves to live, then proves the decision on a safe, bounded comeback branch.**\n","readmeFilename":"README.md"}