{"id":46720580,"url":"https://github.com/armgabrielyan/deadbranch","last_synced_at":"2026-03-09T12:07:15.792Z","repository":{"id":335923520,"uuid":"1147103920","full_name":"armgabrielyan/deadbranch","owner":"armgabrielyan","description":"Clean up stale git branches safely.","archived":false,"fork":false,"pushed_at":"2026-03-09T10:05:01.000Z","size":8103,"stargazers_count":14,"open_issues_count":0,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-09T10:08:03.368Z","etag":null,"topics":["branch","cleanup","cli","git","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/armgabrielyan.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-01T07:39:14.000Z","updated_at":"2026-03-09T10:05:04.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/armgabrielyan/deadbranch","commit_stats":null,"previous_names":["armgabrielyan/deadbranch"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/armgabrielyan/deadbranch","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/armgabrielyan%2Fdeadbranch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/armgabrielyan%2Fdeadbranch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/armgabrielyan%2Fdeadbranch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/armgabrielyan%2Fdeadbranch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/armgabrielyan","download_url":"https://codeload.github.com/armgabrielyan/deadbranch/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/armgabrielyan%2Fdeadbranch/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30294827,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-09T11:12:22.024Z","status":"ssl_error","status_checked_at":"2026-03-09T11:10:54.577Z","response_time":61,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["branch","cleanup","cli","git","rust"],"created_at":"2026-03-09T12:07:14.233Z","updated_at":"2026-03-09T12:07:15.780Z","avatar_url":"https://github.com/armgabrielyan.png","language":"Rust","funding_links":[],"categories":["Development tools","cli","💻 Apps"],"sub_categories":["Workflow Automation","⌨️ Development Tools"],"readme":"# deadbranch\n\n[![crates.io](https://img.shields.io/crates/v/deadbranch.svg)](https://crates.io/crates/deadbranch)\n[![crates.io downloads](https://img.shields.io/crates/d/deadbranch.svg)](https://crates.io/crates/deadbranch)\n[![npm version](https://img.shields.io/npm/v/deadbranch)](https://www.npmjs.com/package/deadbranch)\n[![npm downloads](https://img.shields.io/npm/dm/deadbranch)](https://www.npmjs.com/package/deadbranch)\n[![CI](https://github.com/armgabrielyan/deadbranch/actions/workflows/ci.yml/badge.svg)](https://github.com/armgabrielyan/deadbranch/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n\n**Clean up stale git branches safely.**\n\n## Table of Contents\n\n- [Demo](#demo)\n- [Features](#-features)\n- [Installation](#-installation)\n  - [Quick Install (macOS/Linux)](#-quick-install-macoslinux)\n  - [Homebrew (macOS/Linux)](#-homebrew-macoslinux)\n  - [npm/npx](#-npmnpx)\n  - [Cargo (from source)](#-cargo-from-source)\n  - [Manual Download](#️-manual-download)\n  - [Build from Source](#-build-from-source)\n- [Shell Completions](#-shell-completions)\n- [Quick Start](#-quick-start)\n- [Usage](#️-usage)\n  - [List Stale Branches](#-list-stale-branches)\n  - [Delete Stale Branches](#️-delete-stale-branches)\n  - [Interactive Mode](#️-interactive-mode)\n  - [Dry Run Mode](#-dry-run-mode)\n  - [Configuration](#️-configuration)\n  - [Backup Management](#-backup-management)\n  - [Branch Statistics](#-branch-statistics)\n- [Safety Features](#️-safety-features)\n- [Restoring Deleted Branches](#️-restoring-deleted-branches)\n- [Pattern Matching](#-pattern-matching)\n- [Requirements](#-requirements)\n- [Roadmap](#️-roadmap)\n- [License](#-license)\n- [Contributing](#-contributing)\n\n`deadbranch` helps you identify and remove old, unused git branches that clutter your repository. It's designed to be **safe by default** — protecting important branches and requiring explicit confirmation before any deletion.\n\n## Demo\n\n![deadbranch list](https://raw.githubusercontent.com/armgabrielyan/deadbranch/main/demo/list.gif)\n\n## ✨ Features\n\n- 🔍 **List stale branches** — Find branches older than N days (default: 30)\n- 🔒 **Safe deletion** — Only deletes merged branches by default\n- 🛡️ **Protected branches** — Never touches `main`, `master`, `develop`, `staging`, or `production`\n- 🚧 **WIP detection** — Automatically excludes `wip/*` and `draft/*` branches\n- 💾 **Backup creation** — Saves deleted branch SHAs for easy restoration\n- 👁️ **Dry-run mode** — Preview what would be deleted without making changes\n- 🌐 **Local \u0026 remote** — Works with both local and remote branches\n- 🖥️ **Interactive TUI mode** — Full-screen TUI with Vim navigation, fuzzy search, visual range selection, and 6-column sorting\n\n## 📦 Installation\n\n### ⚡ Quick Install (macOS/Linux)\n\n```bash\ncurl -sSf https://raw.githubusercontent.com/armgabrielyan/deadbranch/main/install.sh | sh\n```\n\n### 🍺 Homebrew (macOS/Linux)\n\n```bash\nbrew install armgabrielyan/tap/deadbranch\n```\n\n### 📦 npm/npx\n\n```bash\n# Install globally\nnpm install -g deadbranch\n\n# Or run directly\nnpx deadbranch list\n```\n\n### 🦀 Cargo (from source)\n\n```bash\ncargo install deadbranch\n```\n\n### ⬇️ Manual Download\n\nDownload pre-built binaries from the [GitHub Releases](https://github.com/armgabrielyan/deadbranch/releases) page.\n\n| Platform | Architecture | Download |\n|----------|--------------|----------|\n| Linux | x86_64 (glibc) | `deadbranch-VERSION-x86_64-unknown-linux-gnu.tar.gz` |\n| Linux | x86_64 (musl/static) | `deadbranch-VERSION-x86_64-unknown-linux-musl.tar.gz` |\n| Linux | ARM64 | `deadbranch-VERSION-aarch64-unknown-linux-gnu.tar.gz` |\n| macOS | Intel | `deadbranch-VERSION-x86_64-apple-darwin.tar.gz` |\n| macOS | Apple Silicon | `deadbranch-VERSION-aarch64-apple-darwin.tar.gz` |\n| Windows | x86_64 | `deadbranch-VERSION-x86_64-pc-windows-msvc.zip` |\n\n### 🔨 Build from Source\n\n```bash\ngit clone https://github.com/armgabrielyan/deadbranch\ncd deadbranch\ncargo build --release\n# Binary will be at target/release/deadbranch\n```\n\n## 🐚 Shell Completions\n\n`deadbranch` can generate tab-completion scripts for bash, zsh, and fish.\n\n### Bash\n\n```bash\nmkdir -p ~/.local/share/bash-completion/completions\ndeadbranch completions bash \u003e ~/.local/share/bash-completion/completions/deadbranch\n```\n\nRequires bash-completion 2.x to be active. On macOS without Homebrew's bash, source the file manually in `~/.bash_profile`:\n\n```bash\nsource ~/.local/share/bash-completion/completions/deadbranch\n```\n\n### Zsh\n\n```bash\nmkdir -p ~/.zfunc\ndeadbranch completions zsh \u003e ~/.zfunc/_deadbranch\n```\n\nThen add the following to your `~/.zshrc` **before** the `compinit` call (or add it if you don't have one):\n\n```zsh\nfpath=(~/.zfunc $fpath)\nautoload -Uz compinit \u0026\u0026 compinit\n```\n\nReload your shell or run `exec zsh` to activate.\n\n### Fish\n\n```bash\nmkdir -p ~/.config/fish/completions\ndeadbranch completions fish \u003e ~/.config/fish/completions/deadbranch.fish\n```\n\nFish auto-loads completions from this directory — no extra configuration needed.\n\n## 🚀 Quick Start\n\n```bash\n# List all stale branches (older than 30 days)\ndeadbranch list\n\n# List branches older than 60 days\ndeadbranch list --days 60\n\n# Preview what would be deleted\ndeadbranch clean --dry-run\n\n# Delete merged stale branches (with confirmation)\ndeadbranch clean\n\n# Delete only local branches\ndeadbranch clean --local\n\n# Show branch health overview\ndeadbranch stats\n```\n\n## 🛠️ Usage\n\n### 📋 List Stale Branches\n\n![deadbranch list](https://raw.githubusercontent.com/armgabrielyan/deadbranch/main/demo/list.gif)\n\n```bash\ndeadbranch list [OPTIONS]\n```\n\n| Option | Description |\n|--------|-------------|\n| `-d, --days \u003cN\u003e` | Only show branches older than N days (default: 30) |\n| `--local` | Only show local branches |\n| `--remote` | Only show remote branches |\n| `--merged` | Only show merged branches |\n\n**Example output:**\n\n```\nℹ Using 'main' as the default branch for merge detection\n\nLocal Branches:\n┌────┬──────────────────────┬─────────┬────────┬───────┬──────────────┬──────────────┐\n│ #  │ Branch               │ Age     │ Status │ Type  │ Last Commit  │ Author       │\n├────┼──────────────────────┼─────────┼────────┼───────┼──────────────┼──────────────┤\n│ 1  │ feature/old-api      │ 154d    │ merged │ local │ 2024-09-01   │ Jane Doe     │\n│ 2  │ bugfix/header-issue  │ 89d     │ merged │ local │ 2024-11-03   │ John Smith   │\n└────┴──────────────────────┴─────────┴────────┴───────┴──────────────┴──────────────┘\n\nRemote Branches:\n┌────┬─────────────────────────────────┬─────────┬────────┬────────┬──────────────┬──────────────┐\n│ #  │ Branch                          │ Age     │ Status │ Type   │ Last Commit  │ Author       │\n├────┼─────────────────────────────────┼─────────┼────────┼────────┼──────────────┼──────────────┤\n│ 1  │ origin/feature/deprecated       │ 203d    │ merged │ remote │ 2024-07-15   │ Jane Doe     │\n└────┴─────────────────────────────────┴─────────┴────────┴────────┴──────────────┴──────────────┘\n```\n\n### 🗑️ Delete Stale Branches\n\n![deadbranch clean](https://raw.githubusercontent.com/armgabrielyan/deadbranch/main/demo/clean.gif)\n\n```bash\ndeadbranch clean [OPTIONS]\n```\n\n| Option | Description |\n|--------|-------------|\n| `-d, --days \u003cN\u003e` | Only delete branches older than N days (default: 30) |\n| `--merged` | Only delete merged branches (this is the default) |\n| `--force` | Force delete unmerged branches (dangerous!) |\n| `--dry-run` | Show what would be deleted without doing it |\n| `--local` | Only delete local branches |\n| `--remote` | Only delete remote branches |\n| `-y, --yes` | Skip confirmation prompts (useful for scripts) |\n\n**Safety features:**\n- Only deletes **merged** branches by default\n- Requires `--force` to delete unmerged branches\n- Shows confirmation prompt before deletion\n- Extra confirmation for remote branches\n- Creates backup file with branch SHAs\n\n**Example:**\n\n```bash\n$ deadbranch clean\n\nLocal Branches to Delete:\n┌────┬──────────────────────┬─────────┬────────┬───────┬──────────────┬──────────────┐\n│ #  │ Branch               │ Age     │ Status │ Type  │ Last Commit  │ Author       │\n├────┼──────────────────────┼─────────┼────────┼───────┼──────────────┼──────────────┤\n│ 1  │ feature/old-api      │ 154d    │ merged │ local │ 2024-09-01   │ Jane Doe     │\n│ 2  │ bugfix/header-issue  │ 89d     │ merged │ local │ 2024-11-03   │ John Smith   │\n└────┴──────────────────────┴─────────┴────────┴───────┴──────────────┴──────────────┘\n\nDelete 2 local branches? [y/N] y\n\nDeleting local branches...\n  ✓ feature/old-api\n  ✓ bugfix/header-issue\n\n✓ Deleted 2 local branches\n  ↪ Backup: ~/.deadbranch/backups/my-repo/backup-20250201-143022.txt\n```\n\n### 🖥️ Interactive Mode\n\n![deadbranch interactive](https://raw.githubusercontent.com/armgabrielyan/deadbranch/main/demo/interactive.gif)\n\nOpen a full-screen TUI for browsing, filtering, and selecting branches to delete:\n\n```bash\ndeadbranch clean -i [OPTIONS]\n```\n\n| Option | Description |\n|--------|-------------|\n| `-i, --interactive` | Open interactive TUI for branch selection |\n| `-d, --days \u003cN\u003e` | Pre-filter to branches older than N days |\n| `--merged` | Start with merged-only filter active |\n| `--force` | Unlock unmerged branches for selection |\n| `--local` | Start with local-only filter active |\n| `--remote` | Start with remote-only filter active |\n\n**Key bindings:**\n\n| Key | Action |\n|-----|--------|\n| `j`/`↓`, `k`/`↑` | Navigate down/up |\n| `gg`, `G` | Jump to top/bottom |\n| `Ctrl+d`/`Ctrl+u` | Half-page down/up |\n| `Ctrl+f`/`Ctrl+b` | Full-page down/up |\n| Mouse scroll | Scroll up/down |\n| `Space` | Toggle selection |\n| `V` | Visual range select (Vim-style) |\n| `a` | Select all merged |\n| `A` | Select all (requires `--force`) |\n| `n` | Deselect all |\n| `i` | Invert selection |\n| `d` | Delete selected |\n| `/` | Fuzzy search by branch name |\n| `s` | Cycle sort (age → branch → status → type → date → author) |\n| `S` | Reverse sort direction |\n| `m` | Toggle merged-only filter |\n| `l` | Toggle local-only filter |\n| `R` | Toggle remote-only filter |\n| `?` | Help |\n| `q`/`Esc` | Quit |\n\n**TUI features:**\n\n- **Vim-style navigation** — `gg`/`G` jump, `Ctrl+d`/`Ctrl+u` page scrolling, relative line numbers\n- **Visual range selection** — Press `V` to anchor, move cursor to extend range, `Space` to toggle\n- **Fuzzy search** — `/` opens search with matched characters highlighted\n- **Age coloring** — Green (\u003c30d), yellow (31–90d), red (\u003e90d)\n- **Sections** — Merged and unmerged branches are visually grouped with section headers\n- **Progressive deletion** — Live progress bar during batch deletion\n- **Smart confirmation** — Simple confirm for safe deletions, typed `yes` for risky ones (unmerged/remote)\n\n**Note:** `-i` cannot be combined with `-y` (skip confirmation) or `--dry-run`.\n\n### 🔍 Dry Run Mode\n\nPreview deletions without making any changes:\n\n```bash\n$ deadbranch clean --dry-run\n\nLocal Branches to Delete:\n┌────┬──────────────────────┬─────────┬────────┬───────┬──────────────┬──────────────┐\n│ #  │ Branch               │ Age     │ Status │ Type  │ Last Commit  │ Author       │\n├────┼──────────────────────┼─────────┼────────┼───────┼──────────────┼──────────────┤\n│ 1  │ feature/old-api      │ 154d    │ merged │ local │ 2024-09-01   │ Jane Doe     │\n└────┴──────────────────────┴─────────┴────────┴───────┴──────────────┴──────────────┘\n\n[DRY RUN] Commands that would be executed:\n  git branch -d feature/old-api\n\nNo branches were actually deleted.\n```\n\n### ⚙️ Configuration\n\n![deadbranch config](https://raw.githubusercontent.com/armgabrielyan/deadbranch/main/demo/config.gif)\n\n`deadbranch` stores its configuration in `~/.deadbranch/config.toml`.\n\n```bash\n# Show current configuration\ndeadbranch config show\n\n# Set default age threshold\ndeadbranch config set days 45\n\n# Set default branch for merge detection\ndeadbranch config set default-branch main\n\n# Set protected branches\ndeadbranch config set protected-branches main master develop\n\n# Set exclude patterns\ndeadbranch config set exclude-patterns \"wip/*\" \"draft/*\" \"temp/*\"\n\n# Open config in your editor\ndeadbranch config edit\n\n# Reset to defaults\ndeadbranch config reset\n```\n\n**Default configuration:**\n\n```toml\n[general]\ndefault_days = 30\n\n[branches]\nprotected = [\"main\", \"master\", \"develop\", \"staging\", \"production\"]\nexclude_patterns = [\"wip/*\", \"draft/*\", \"*/wip\", \"*/draft\"]\n```\n\n#### Config keys\n\n| Key | Aliases | Description |\n|-----|---------|-------------|\n| `days` | `default-days`, `general.default-days` | Default age threshold in days |\n| `default-branch` | `branches.default-branch` | Branch used for merge detection (auto-detected if unset) |\n| `protected-branches` | `branches.protected` | Branches that are never deleted |\n| `exclude-patterns` | `branches.exclude-patterns` | Glob patterns for branches to skip |\n\n### 💾 Backup Management\n\n![deadbranch backup](https://raw.githubusercontent.com/armgabrielyan/deadbranch/main/demo/backup.gif)\n\nEvery `deadbranch clean` run automatically creates a backup. Use `deadbranch backup` to manage those backups.\n\n#### List backups\n\n```bash\n# Show a summary of all repositories with backups\ndeadbranch backup list\n\n# Show backups for the current repository\ndeadbranch backup list --current\n\n# Show backups for a specific repository\ndeadbranch backup list --repo my-repo\n```\n\n#### Restore a deleted branch\n\n```bash\n# Restore from the most recent backup\ndeadbranch backup restore feature/old-api\n\n# Restore from a specific backup file\ndeadbranch backup restore feature/old-api --from backup-20250201-143022.txt\n\n# Restore with a different name\ndeadbranch backup restore feature/old-api --as feature/recovered\n\n# Overwrite an existing branch\ndeadbranch backup restore feature/old-api --force\n```\n\n#### Backup statistics\n\n```bash\n# Show storage usage per repository and overall\ndeadbranch backup stats\n```\n\n#### Clean up old backups\n\n```bash\n# Keep the 10 most recent backups for the current repo (default)\ndeadbranch backup clean --current\n\n# Keep only the 3 most recent backups\ndeadbranch backup clean --current --keep 3\n\n# Preview what would be removed\ndeadbranch backup clean --current --dry-run\n\n# Skip confirmation prompt\ndeadbranch backup clean --current --yes\n\n# Clean backups for a specific repository by name\ndeadbranch backup clean --repo my-repo\n```\n\n### 📊 Branch Statistics\n\n![deadbranch stats](https://raw.githubusercontent.com/armgabrielyan/deadbranch/main/demo/stats.gif)\n\nGet a health overview of all branches in your repository:\n\n```bash\ndeadbranch stats [OPTIONS]\n```\n\n| Option | Description |\n|--------|-------------|\n| `-d, --days \u003cN\u003e` | Age threshold for \"stale\" classification (default: from config or 30) |\n\n**Example output:**\n\n```\nℹ Using 'main' as the default branch for merge detection\n\nRepository Statistics:\n┌────────────────┬───────┬───────┬────────┐\n│ Category       │ Total │ Local │ Remote │\n├────────────────┼───────┼───────┼────────┤\n│ All branches   │ 12    │ 7     │ 5      │\n│ Merged         │ 8     │ 5     │ 3      │\n│ Unmerged       │ 4     │ 2     │ 2      │\n│ Stale (\u003e30d)   │ 6     │ 4     │ 2      │\n│ Safe to delete │ 5     │ 3     │ 2      │\n└────────────────┴───────┴───────┴────────┘\n\nAge Distribution:\n┌─────────────┬───────┬────────┐\n│ Age Range   │ Count │ Status │\n├─────────────┼───────┼────────┤\n│ \u003c 7 days    │ 2     │ fresh  │\n│ 7–30 days   │ 4     │ fresh  │\n│ 30–90 days  │ 3     │ stale  │\n│ \u003e 90 days   │ 3     │ stale  │\n└─────────────┴───────┴────────┘\n\n💡 Run 'deadbranch clean' to remove 5 safe-to-delete branches\n```\n\nStats cover all visible branches (respecting protected and exclude patterns) regardless of age, so `--days` only shifts the stale/safe-to-delete threshold — it doesn't hide branches.\n\n## 🛡️ Safety Features\n\n`deadbranch` is designed to prevent accidental data loss:\n\n| Feature | Description |\n|---------|-------------|\n| **Merged-only default** | Only deletes branches already merged to main/master |\n| **Protected branches** | Never deletes main, master, develop, staging, production |\n| **Current branch** | Never deletes the branch you're currently on |\n| **WIP detection** | Excludes branches matching `wip/*`, `draft/*`, etc. |\n| **Confirmation prompts** | Always asks before deleting |\n| **Remote warning** | Extra confirmation for remote deletions |\n| **Backup files** | Saves SHA of every deleted branch for restoration |\n| **Dry-run mode** | Preview changes without risk |\n\n## ♻️ Restoring Deleted Branches\n\nEvery deletion creates a backup file at `~/.deadbranch/backups/\u003crepo\u003e/backup-\u003ctimestamp\u003e.txt`.\n\nThe backup contains git commands to restore each branch:\n\n```bash\n# From the backup file:\ngit branch feature/old-api abc1234def5678\ngit branch bugfix/header-issue 987654fedcba\n```\n\nYou can restore branches manually by running those commands, or use the `deadbranch backup restore` command.\n\n## 🔤 Pattern Matching\n\nExclude patterns support glob-style wildcards:\n\n| Pattern | Matches |\n|---------|---------|\n| `wip/*` | `wip/experiment`, `wip/test` |\n| `*/draft` | `feature/draft`, `bugfix/draft` |\n| `feature/*/temp` | `feature/foo/temp`, `feature/bar/temp` |\n| `*test*` | `test`, `testing`, `my-test-branch` |\n\n## 📋 Requirements\n\n- Git (installed and accessible in PATH)\n- A git repository (run from within a repo)\n\n## 🗺️ Roadmap\n\n- [x] 🖥️ Interactive TUI mode\n- [ ] 👤 `--only-mine` flag for personal branches\n- [ ] 🔗 GitHub/GitLab PR detection\n- [ ] 📊 Multiple output formats (JSON, CSV)\n- [ ] 📁 Per-repo configuration\n\n## ⭐ Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=armgabrielyan/deadbranch\u0026type=Date)](https://star-history.com/#armgabrielyan/deadbranch\u0026Date)\n\n## 📄 License\n\nMIT License — see [LICENSE](LICENSE) for details.\n\n## 🤝 Contributing\n\nContributions are welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup, commit message conventions, testing requirements, and how to submit a pull request.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farmgabrielyan%2Fdeadbranch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farmgabrielyan%2Fdeadbranch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farmgabrielyan%2Fdeadbranch/lists"}