hal-9000
vinta · vinta/hal-9000
An opinionated macOS bootstrap that sets up Claude Code and Codex with skills, plugins, rules, global CLAUDE.md/AGENTS.md and hardened dotfiles.
Opinionated AI coding agent and dev environment automation for macOS
Preview
What you can do with it
- Set up a new Mac with a ready Claude Code and Codex environment
- Borrow its global CLAUDE.md and rules as a starting point
- Reuse its agent skills and statusline plugin
Safety check
Usable, but read the notes first.
- ●Installer downloads a remote script and pipes it to the shell.
README.md
Automated scan of the repo files. Always review code you run.
From the README
HAL 9000
Opinionated AI coding agent and dev environment automation for macOS that dominates your dev setup like cats rule the Internet.
This project is named after Arthur C. Clarke's 2001: A Space Odyssey, a heuristic algorithmic computer designed for sentient processing and total mission control.
Bootstrap
All-in-one command to set up:
- Coding Agents
- Languages
- DevOps
- Docker (OrbStack)
- Kubernetes
- Amazon Web Services
- Google Cloud
curl -sL https://raw.githubusercontent.com/vinta/hal-9000/main/bin/open-the-pod-bay-doors.sh | bash
Components
Dotfiles
Tool configs hardened against supply chain attacks and tuned for better DX:
CLAUDE.md / AGENTS.md
Dogmatic yet meticulously crafted global instructions for agentic coding:
Also see:
Skills
Agentic skills sharpened by daily use:
- commit: Splits your changes into atomic conventional commits, hunk by hunk if needed
- pr: Opens a PR, rewrites a PR, or waits for CI and merges it, in seconds on a cheap model
- difference: A shortcut to answer "what's the difference? pros and cons?" very quickly
- fuck-over-engineering: Ranks what to cut in your codebase, deletes only what you pick
- best-practices: Searches the web for the recommended way and common gotchas
- blindspot: Turns unknown unknowns into known unknowns, then lets you pick where to explore
- simple-english: Rewrites text in Global English: plain words, still native-sounding
- write-like-me: Drafts or rewrites English prose in my own voice at native fluency
- audit-claude-settings: Audits your Claude Code settings against the latest docs
- refactor-claude-md: Refactors a CLAUDE.md so every line earns its always-loaded cost
- refactor-agents-md: Refactors an AGENTS.md the same way, for Codex
- refactor-memory: Prunes stale Claude Code and Codex memories, applies only what you pick
- refactor-skill: Refactors a skill by simplifying it instead of complicating it
# Claude Code
claude plugin marketplace add vinta/hal-9000
claude plugin install hal-skills@hal-9000
# Codex
codex plugin marketplace add vinta/hal-9000
codex plugin add hal-skills@hal-9000
If you want to use them in other coding agents:
npx skills add vinta/hal-9000
Claude Code Plugins / Mods
Plugins that wire their own hooks and run themselves:
- hal-output-styles: Make Claude Code talk like an INTJ
- hal-grammar-check: Grammar-check your prompt as you type, shown above the prompt box
- hal-session-auto-rename: Automatically name each session and rename it as the conversation evolves
- hal-voice: Play HAL 9000 voice clips on Claude Code hook events
claude plugin marketplace add vinta/hal-9000
claude plugin install hal-output-styles@hal-9000
claude plugin install hal-grammar-check@hal-9000
claude plugin install hal-session-auto-rename@hal-9000
claude plugin install hal-voice@hal-9000
Claude Code Statusline
- hal-statusline: Show the current model, directory, git branch, and model usage status in statusline
- Plus a grammar check on every prompt you type, with explanations in Traditional Chinese
curl -sL https://raw.githubusercontent.com/vinta/hal-9000/main/scripts/install-hal-statusline.sh | bash
CLI: hal
hal update # Run all Ansible roles to set up the dev environment
hal update --tags python,node # Run specific Ansible roles
hal link ~/.zshrc # Move file into dotfiles/ and symlink it back
hal unlink ~/.zshrc # Move file back from dotfiles/ and remove the symlink
hal sync # Sync all links
hal sync --force # Same, but replace real directories sitting at link destinations
hal backup # Back up live data to Dropbox
hal backup --prune # Also delete backup files that no longer exist locally, after asking
hal restore # Restore live data from Dropbox (overwrites local)
hal open-the-pod-bay-doors # Open the pod bay doors, please, HAL
Development
make insta