---
slug: "hal-9000"
source_type: "readme"
source_url: "https://cdn.jsdelivr.net/gh/vinta/hal-9000@main/README.md"
repo: "https://github.com/vinta/hal-9000"
source_file: "README.md"
branch: "main"
---
# HAL 9000

![HAL 9000](https://raw.githubusercontent.com/vinta/hal-9000/main/assets/hal-9000.jpg "HAL 9000")

Opinionated macOS development environment automation 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:

- [Agent Skills](https://github.com/vinta/hal-9000/tree/HEAD/skills/hal-skills)
- [Claude Code](https://github.com/vinta/hal-9000/blob/HEAD/dotfiles/.claude) / [Plugins](https://github.com/vinta/hal-9000/tree/HEAD/plugins) / [Rules](https://github.com/vinta/hal-9000/tree/HEAD/dotfiles/.claude/rules) / [Statusline](https://github.com/vinta/hal-9000/tree/HEAD/plugins/hal-statusline)
- [Codex](https://github.com/vinta/hal-9000/blob/HEAD/dotfiles/.codex)
- [Python](https://github.com/vinta/hal-9000/blob/HEAD/playbooks/roles/python/tasks/main.yml)
- [Node.js](https://github.com/vinta/hal-9000/blob/HEAD/playbooks/roles/node/tasks/main.yml)
- [Bun](https://github.com/vinta/hal-9000/blob/HEAD/playbooks/roles/bun/tasks/main.yml)
- [Solidity](https://github.com/vinta/hal-9000/blob/HEAD/playbooks/roles/solidity/tasks/main.yml)
- [Docker](https://github.com/vinta/hal-9000/blob/HEAD/playbooks/roles/docker/tasks/main.yml) (OrbStack)
- [Kubernetes](https://github.com/vinta/hal-9000/blob/HEAD/playbooks/roles/kubernetes/tasks/main.yml)
- [Amazon Web Services](https://github.com/vinta/hal-9000/blob/HEAD/playbooks/roles/aws/tasks/main.yml)
- [Google Cloud](https://github.com/vinta/hal-9000/blob/HEAD/playbooks/roles/gcp/tasks/main.yml)

```bash
curl -sL https://raw.githubusercontent.com/vinta/hal-9000/main/bin/open-the-pod-bay-doors | bash
```

## Components

If you prefer only using some of them:

### Claude Code Plugin: `hal-skills`

- [commit](https://github.com/vinta/hal-9000/blob/HEAD/skills/hal-skills/commit/SKILL.md): Creates clean, atomic git commits with conventional messages
- [best-practices](https://github.com/vinta/hal-9000/blob/HEAD/skills/hal-skills/best-practices/SKILL.md): Researches current best practices from docs and the web before you code
- [simple-english](https://github.com/vinta/hal-9000/blob/HEAD/skills/hal-skills/simple-english/SKILL.md): Rewrites technical writing in Global English, clear for a global audience
- [magi](https://github.com/vinta/hal-9000/tree/HEAD/skills/hal-skills/magi): Multi-model brainstorming with Claude, Codex, and Gemini
- [refactor-claude-md](https://github.com/vinta/hal-9000/blob/HEAD/skills/hal-skills/refactor-claude-md/SKILL.md): Refactors a CLAUDE.md toward progressive disclosure
- [refactor-agents-md](https://github.com/vinta/hal-9000/blob/HEAD/skills/hal-skills/refactor-agents-md/SKILL.md): Refactors an AGENTS.md toward progressive disclosure

```bash
/plugin marketplace add vinta/hal-9000
/plugin install hal-skills@hal-9000
```

If you want to use them in Codex:

```bash
npx skills add vinta/hal-9000
```

### Claude Code Plugin: `hal-voice`

- [hal-voice](https://github.com/vinta/hal-9000/tree/HEAD/plugins/hal-voice): Play HAL 9000 voice clips on Claude Code hook events

```bash
/plugin marketplace add vinta/hal-9000
/plugin install hal-voice@hal-9000
```

### Claude Code Statusline

- [hal-statusline](https://github.com/vinta/hal-9000/tree/HEAD/plugins/hal-statusline): Show the current model, directory, and git branch in [statusline](https://code.claude.com/docs/en/statusline). Plus **a grammar check on every prompt you type**, with explanations in Traditional Chinese

```bash
curl -sL https://raw.githubusercontent.com/vinta/hal-9000/main/scripts/install-hal-statusline.sh | bash
```

### CLI: `hal`

```bash
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 copy ~/.config/ghostty/config     # Copy file into dotfiles/ (no symlink)
hal sync                              # Sync all links and copies
hal backup                            # Back up live data to Dropbox
hal restore                           # Restore live data from Dropbox (overwrites local)
hal open-the-pod-bay-doors            # Open the pod bay doors, please, HAL
```

## Development

```bash
make install                          # Install dev dependencies and pre-commit hooks
make test                             # Run tests
make hal-completion                   # Regenerate zsh completion after modifying bin/hal
hal sync                              # Update local completion
```

## Demo

<video src="https://github.com/user-attachments/assets/e86ead6d-189b-4361-a98b-4453ac0e8c25" width="800" height="450"></video>
