{"id":44120080,"url":"https://github.com/xaostech/dev-control","last_synced_at":"2026-07-06T04:00:27.334Z","repository":{"id":328335055,"uuid":"1115152897","full_name":"XAOSTECH/dev-control","owner":"XAOSTECH","description":"A collection of powerful CLI tools, scripts and templates for streamlined Git workflow, repository management, and shell productivity.","archived":false,"fork":false,"pushed_at":"2026-06-30T18:05:43.000Z","size":1991,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-06-30T19:09:38.431Z","etag":null,"topics":["aliases","automation","bash","cli","developer-tools","devops","dotfiles","git","github","github-actions","productivity","repository-management","shell","shell-scripts","submodules","templates","workflow"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/XAOSTECH.png","metadata":{"files":{"readme":"docs/README.md","changelog":"CHANGELOG.md","contributing":"docs/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"docs/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"docs/SECURITY.md","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":"2025-12-12T12:20:13.000Z","updated_at":"2026-06-30T18:05:52.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/XAOSTECH/dev-control","commit_stats":null,"previous_names":["xaoscience/git-control","xaoscience/dev-control","xaostech/dev-control"],"tags_count":25,"template":false,"template_full_name":null,"purl":"pkg:github/XAOSTECH/dev-control","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XAOSTECH%2Fdev-control","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XAOSTECH%2Fdev-control/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XAOSTECH%2Fdev-control/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XAOSTECH%2Fdev-control/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/XAOSTECH","download_url":"https://codeload.github.com/XAOSTECH/dev-control/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XAOSTECH%2Fdev-control/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35177220,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-06T02:00:07.184Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["aliases","automation","bash","cli","developer-tools","devops","dotfiles","git","github","github-actions","productivity","repository-management","shell","shell-scripts","submodules","templates","workflow"],"created_at":"2026-02-08T19:10:14.531Z","updated_at":"2026-07-06T04:00:27.329Z","avatar_url":"https://github.com/XAOSTECH.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dev-Control\n\n\u003c!-- Project Shields/Badges --\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/xaostech/dev-control\"\u003e\n    \u003cimg alt=\"GitHub repo\" src=\"https://img.shields.io/badge/GitHub-xaostech%2Fdev--control-181717?style=for-the-badge\u0026logo=github\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/xaostech/dev-control/releases\"\u003e\n    \u003cimg alt=\"GitHub release\" src=\"https://img.shields.io/github/v/release/xaostech/dev-control?style=for-the-badge\u0026logo=semantic-release\u0026color=blue\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/xaostech/dev-control/blob/main/LICENCE\"\u003e\n    \u003cimg alt=\"Licence\" src=\"https://img.shields.io/github/licence/xaostech/dev-control?style=for-the-badge\u0026color=green\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/xaostech/dev-control/actions/workflows/bash-lint.yml\"\u003e\n    \u003cimg alt=\"CI Status\" src=\"https://github.com/xaostech/dev-control/actions/workflows/bash-lint.yml/badge.svg?branch=Main\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/xaostech/dev-control/issues\"\u003e\n    \u003cimg alt=\"Issues\" src=\"https://img.shields.io/github/issues/xaostech/dev-control?style=flat-square\u0026logo=github\u0026color=yellow\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/xaostech/dev-control/pulls\"\u003e\n    \u003cimg alt=\"Pull Requests\" src=\"https://img.shields.io/github/issues-pr/xaostech/dev-control?style=flat-square\u0026logo=github\u0026color=purple\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/xaostech/dev-control/stargazers\"\u003e\n    \u003cimg alt=\"Stars\" src=\"https://img.shields.io/github/stars/xaostech/dev-control?style=flat-square\u0026logo=github\u0026color=gold\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"Last Commit\" src=\"https://img.shields.io/github/last-commit/xaostech/dev-control?style=flat-square\u0026logo=git\u0026colour=blue\"\u003e\n  \u003cimg alt=\"Shell\" src=\"https://img.shields.io/badge/shell-bash-4EAA25?style=flat-square\u0026logo=gnu-bash\u0026logoColor=white\"\u003e\n  \u003cimg alt=\"Stability\" src=\"https://img.shields.io/badge/stability-experimental-orange?style=flat-square\"\u003e\n  \u003cimg alt=\"Maintenance\" src=\"https://img.shields.io/maintenance/yes/2026?style=flat-square\"\u003e\n\u003c/p\u003e\n\n---\n\n**Dev-Control** is a modular CLI toolkit that automates customising and setting up repos (100% community standards), nested gitmodules, centralised and cleaned up .tmp and .bak folders, nested rootless podman docker containers, vscode mcp-servers, GitHub release (with lib tarbal, re-releases, automated version tagging and signed latest + version tag) and app packages.\n\nThis attempts to make arduous CLI and Git tasks (such as signing woktrees with topology and surgically dropping commits) easy and robust, so you can focus on your code - while, ironically, I focus on optimising this. All functions have a --dry-run option, so test it out and feel free to let me know of any issues or requests! Contributions are also lauded!  \n\n```bash\n# Install\ngit clone https://github.com/xaostech/dev-control.git \u0026\u0026 cd dev-control \u0026\u0026 ./install.sh\n\n# Use\ndc init          # Set up a repo with templates, licence, docs\ndc repo          # Create a GitHub repo from your local project\ndc pr            # Open a pull request in seconds\ndc fix           # Rewrite/sign/clean commit history safely\ndc modules       # Manage nested submodules automatically\ndc licences      # Audit licence compliance across repos\ndc mcp           # Configure AI coding assistants (MCP servers)\ndc contain       # Generate devcontainer.json for VS Code\ndc package       # Build tarballs, Homebrew, Snap, Deb, Nix, Docker\ndca-alias        # Sync (all) new alias and reload bashrc\n\n```\n\n---\n\n## 📋 Table of Contents\n\n- [Why Dev-Control?](#-why-dev-control)\n- [Features at a Glance](#-features-at-a-glance)\n- [Quick Start](#-quick-start)\n- [Core Commands](#-core-commands)\n- [Plugin System](#-plugin-system)\n- [Configuration](#-configuration)\n- [Documentation](#-documentation)\n- [Contributing](#-contributing)\n- [Roadmap](#-roadmap)\n- [Licence](#-licence)\n\n---\n\n## 💡 Why Dev-Control?\n\nManaging modern software projects involves a lot of repetitive housekeeping:\n\n- Initialising repos with consistent templates, licences, and docs\n- Keeping submodules in sync across complex monorepos\n- Rewriting commit history to fix author dates or add GPG signatures\n- Auditing licence compliance when you have dozens of dependencies\n- Making devcontainers with the right mounts and settings and reusable category images\n- Packaging your tool for multiple platforms (Homebrew, Snap, Nix, Docker…)\n\n**Dev-Control bundles all of this into a single, modular CLI.** Each command is designed to be:\n\n| Principle | How |\n|-----------|-----|\n| **Safe** | Dry-run modes, automatic backup bundles, harness wrappers |\n| **Fast** | Batch processing, parallel operations, minimal dependencies |\n| **Extensible** | Plugin system, YAML config, themeable TUI |\n| **Portable** | Pure Bash 4+, no exotic runtime, runs anywhere Git runs |\n\n---\n\n## ✨ Features at a Glance\n\n| Category | What You Get |\n|----------|--------------|\n| **Repo Setup** | Template loading, licence selection, README/CONTRIBUTING/SECURITY scaffolding, GitHub Actions workflows |\n| **Git Ops** | History rewriting with GPG signing, date preservation, conflict auto-resolution, worktree sync |\n| **Submodules** | Auto-generated `.gitmodules`, temp-folder consolidation, symlink pruning |\n| **Licensing** | SPDX detection, compatibility checking, bulk apply, JSON export |\n| **DevEx** | Devcontainer generation, MCP server setup (GitHub, StackOverflow, Firecrawl) |\n| **Packaging** | Tarball + SHA256, Homebrew formula, Snap YAML, Debian `.deb`, Nix flake, Docker + ttyd web terminal |\n| **TUI Themes** | Matrix, Hacker, Cyber aesthetics powered by [Charmbracelet Gum](https://github.com/charmbracelet/gum) |\n\n---\n\n## 🚀 Quick Start\n\n### Prerequisites\n\n- **Bash 4.0+** or Zsh\n- **Git 2.0+**\n- **GitHub CLI** (`gh`) for repo/PR commands\n- Optional: `gum` or `fzf` for interactive TUI; GPG for signing\n\n### Install\n\n```bash\ngit clone https://github.com/xaostech/dev-control.git\ncd dev-control\n./install.sh          # Adds `dc` to your PATH and installs aliases\nsource ~/.bashrc      # Or restart your shell\n```\n\n### Verify\n\n```bash\ndc --version          # Should print v2.x.x\ndc --help             # List all commands\n```\n\n---\n\n## 🔧 Core Commands\n\nBelow is a quick reference. Run `dc \u003ccommand\u003e --help` for full options.\n\n### `dc aliases` — Shell Alias Installer\n\nAdd productivity aliases for Git, Docker, system monitoring, and more.\n\n```bash\ndc alias    # Interactive category selection\nsource ~/.bashrc\n```\n\n#### Example aliases\n\n```bash\ngpf         # git push --force-with-lease\ndca-alias   # Apply and source all aliases\ngcda        # Stage, amend and push with preserved author date\ngcda        # Restore original author date\n```\n\n### `dc init` — Repository Initialisation\n\nPopulate a repo with docs, licence, workflows, and GitHub templates.\n\n```bash\ndc init                     # Interactive mode\ndc init --defaults          # Skip repo owner/slug and bot credentials (envVars) prompts\ndc init -f docs/SECURITY.md # Update a specific file\ndc init --batch /projects/* # Initialise multiple repos\n```\n\n### `dc repo` — Create GitHub Repository\n\nPush your local project to a new GitHub repo in one step. Defaults to repo config generated by dc-init.\n\n```bash\ndc repo                     # Interactive prompts\ndc repo --private --topics cli,bash\n```\n\n### `dc pr` — Pull Request Creator\n\nOpen a PR from your current branch with auto-detected metadata.\n\n```bash\ndc pr                       # Interactive\ndc pr --draft --label bug\n```\n\n### `dc fix` — History Rewriting\n\nSafely rewrite commits—edit messages, sign, fix dates, drop commits.\n\n```bash\ndc fix                                                          # Interactive (last 10 commits)\ndc fix --sign --range HEAD=all                                  # GPG-sign entire branch\ndc fix --dry-run --range main..HEAD                             # Preview changes\ndc fix --restore                                                # Recover from backup bundle\ndc fix --drop hash                                              # Surgically drop commit by hash\ndc fix --sign --atomic-preserve --auto-resolve --range HEAD=5   # Preserve merge topology and autoresolve merge conflicts\n```\n\n### `dc modules` — Submodule Management\n\nAuto-generate `.gitmodules` for nested repos; consolidate temp folders.\n\n```bash\ndc modules /path/to/monorepo\ndc modules --aggressive --dry-run   # Preview symlink + .gitignore changes\n```\n\n### `dc licences` — Licence Auditor\n\nDetect, check compatibility, and apply licences across repos.\n\n```bash\ndc licences                         # Scan current repo\ndc licences --deep                  # Include submodules\ndc licences --check GPL-3.0         # Verify compatibility\ndc licences --apply MIT             # Apply licence template\n```\n\n### `dc mcp` — MCP Server Setup\n\nConfigure Model Context Protocol servers for AI coding assistants.\n\n```bash\ndc mcp                              # Interactive server selection\ndc mcp --test                       # Verify GitHub MCP connection\ndc mcp --create-pat                 # Interactive Github PAT creation\ndc mcp --config                     # Only generate .vscode/mcp.json\n```\n\n### `dc container` — Devcontainer Generator\n\nGenerate a complete `.devcontainer/` setup for VS Code.\n\n```bash\ndc contain                                                        # Interactive\ndc contain --image mcr.microsoft.com/devcontainers/base:ubuntu    \ndc contain --base --dev-tools --defaults \u0026\u0026 \\\n  cd subfolder \u0026\u0026 dc contain --img --dev-tools                    # Use the previous container image (tag=dev-tools) as a base\ndc contain --nest  \u003c\u003c\u003c y                                          # Discover, update and rebuild all containers recursively\ndc contain --nest --regen                                         # Agressively do same (remove config files and containers)\ndc contain --nest --regen .                                       # Include root in same\n```\n\n### `dc package` — Multi-Platform Packaging\n\nBuild distribution packages with a single command.\n\n```bash\ndc package --init                   # Create .dc-package.yaml\ndc package --all                    # Build everything\ndc package --docker --theme cyber   # Docker image with ttyd + theme\n```\n---\n\n## 🔌 Plugin System\n\nExtend Dev-Control with custom commands.\n\n```\nplugins/\n└── my-plugin/\n    ├── plugin.yaml       # name, version, description, commands\n    └── commands/\n        └── greet.sh      # becomes `dc greet`\n```\n\n```bash\ndc plugin list                      # Show installed plugins\ndc plugin install gh:user/repo      # Install from GitHub\ndc plugin remove my-plugin\n```\n\n---\n\n## ⚙️ Configuration\n\nDev-Control uses a layered config system (highest priority first):\n\n1. **Environment variables** (`DC_*`)\n2. **Project config** (`.dc-init.yaml` in repo root)\n3. **Global config** (`~/.config/dev-control/config.yaml`)\n4. **Built-in defaults**\n\nExample `.dc-init.yaml`:\n\n```yaml\nproject-name: my-project\ndefault-licence: MIT\ndefault-branch: main\nauto-sign-commits: true\ngithub-org: my-org\n```\n\nSee [config/example.dc-init.yaml](../config/example.dc-init.yaml) for all options.\n\n---\n\n## 📚 Documentation\n\n| Document | Description |\n|----------|-------------|\n| [Installation Guide](INSTALL.md) | Detailed install \u0026 upgrade instructions |\n| [Contributing](CONTRIBUTING.md) | How to contribute |\n| [Code of Conduct](CODE_OF_CONDUCT.md) | Community guidelines |\n| [Security Policy](SECURITY.md) | Reporting vulnerabilities |\n| [Testing Guide](TESTING.md) | Running and writing tests |\n\n### Script Reference\n\n| Script | Purpose |\n|--------|---------|\n| [dev-control.sh](../scripts/dev-control.sh) | Interactive main menu |\n| [template-loading.sh](../scripts/template-loading.sh) | Template init logic |\n| [fix-history.sh](../scripts/fix-history.sh) | History rewriting engine |\n| [module-nesting.sh](../scripts/module-nesting.sh) | Submodule management |\n| [licences.sh](../scripts/licences.sh) | Licence auditing |\n| [containerise.sh](../scripts/containerise.sh) | Devcontainer generator |\n| [packaging.sh](../scripts/packaging.sh) | Multi-platform packaging |\n| [mcp-setup.sh](../scripts/mcp-setup.sh) | MCP server configuration |\n\n### Shared Libraries\n\nLocated in `scripts/lib/`:\n\n| Library | Purpose |\n|---------|---------|\n| `colours.sh` | ANSI terminal colours |\n| `print.sh` | Formatted output (headers, boxes, spinners) |\n| `config.sh` | YAML config parsing |\n| `tui.sh` | Gum/fzf interactive prompts |\n| `validation.sh` | Input validation |\n| `git/*.sh` | Git utilities (dates, topology, worktrees, etc.) |\n\n---\n\n## 🤝 Contributing\n\nContributions are welcome! Please read [CONTRIBUTING.md](CONTRIBUTING.md) first.\n\n```bash\n# Fork → Clone → Branch → Commit → PR\ngit checkout -b feature/amazing-feature\ngit commit -m \"Add amazing feature\"\ngit push origin feature/amazing-feature\n```\n\n---\n\n## 🗺️ Roadmap\n\n- [x] Unified `dc` CLI with command registry\n- [x] Plugin system with GitHub install support\n- [x] Multi-platform packaging (tarball, Homebrew, Snap, Deb, Nix, Docker)\n- [x] MCP server configuration for AI assistants\n- [x] Licence auditing with SPDX detection\n- [x] Devcontainer generator\n- [ ] Zsh compatibility layer\n- [ ] Fish shell support\n- [ ] GUI wrapper (Bubble Tea / Tauri)\n- [ ] Remote plugin registry\n\nSee [open issues](https://github.com/xaostech/dev-control/issues) for more.\n\n---\n\n## 📄 Licence\n\nGPL-3.0. See [LICENCE](../LICENCE).\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/xaostech\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Made%20with%20%E2%9D%A4%EF%B8%8F%20by-xaostech-red?style=for-the-badge\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#dev-control\"\u003e⬆️ Back to Top\u003c/a\u003e\n\u003c/p\u003e\n\n\u003c!-- TREE-VIZ-START --\u003e\n\n![Git Tree Visualisation](../.github/static/tree-viz/git-tree-mini.svg)\n\n[Full SVG](../.github/static/tree-viz/git-tree.svg) · [Interactive version](../.github/static/tree-viz/git-tree.html) · [View data](../.github/static/tree-viz/git-tree-data.json)\n\n\u003c!-- TREE-VIZ-END --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxaostech%2Fdev-control","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxaostech%2Fdev-control","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxaostech%2Fdev-control/lists"}