setup · git:20260903.9d065de · 2026-09-03 · sha256 ca7c08a4eb1a87c0

setup git:20260903.9d065deB

Immutable. This exact content is served forever at /api/v1/blob/ca7c08a4eb1a87c0.

---
name: setup
description: "Install Chewbacca by talking, not by answering a terminal wizard. Use when the user wants to set up this kit, run setup.sh, finish a half-finished install, or add one tool that was skipped. Also use when they ask what the installer is about to change on their machine."
license: MIT
---

# Setting up Chewbacca

`setup.sh` takes every answer as a flag. You ask the questions here, in
conversation, then run it once. The terminal is where you run commands, not
where the user fills in a form.

Never tell them to run `setup.sh` themselves and answer prompts. There are no
prompts.

## 1. Ask only what is needed

One question at a time, in plain language. Do not dump the whole list at once.

| Ask                            | Flag              | If they skip it                          |
| ------------------------------ | ----------------- | ---------------------------------------- |
| First name                     | `--name`          | Required. It names their context repo.    |
| Where should repos live        | `--repo-dir`      | `~/dev`                                   |
| GitHub username                | `--github-user`   | Taken from whoever `gh` is logged in as   |
| Anthropic API key              | `--anthropic-key` | Not written. Claude Code's own login still works |
| GitHub token                   | `--github-token`  | Not written                               |
| Todoist token                  | `--todoist-token` | Not written                               |
| Composio MCP URL and key       | `--composio-url`, `--composio-key` | Composio not wired      |

Say plainly that keys are optional and that each one written lands in
`~/.claude/settings.json` in plain text. Someone who does not need Composio
should not be handed a Composio question to feel bad about.

## 2. Ask the two consequential ones separately

These change how Claude behaves on the whole machine. Both default to off. Ask
each as its own question and take a plain no for an answer.

**Permission prompts.** `--bypass-permissions` stops Claude asking before it
runs a shell command or writes a file. It applies to every project, and it is
written to three separate files, so undoing it is not one edit. Ask directly:
should Claude stop asking permission before it acts? Leave it off unless they
say yes. Do not sell it.

**Session opener.** `--session-opener prayer` makes every reply begin with a
prayer. This is the author's own practice. It is off unless someone asks for
it, and it is not a default anyone inherits by installing a coding tool.

## 3. Confirm before you run anything

Show the exact command, then a plain-language summary of what changes:

- which repos get created and where
- which credentials get written, by name, or "none"
- whether Claude will ask permission afterwards
- that the editor and desktop app are configured too

`--dry-run` prints this without touching anything. Use it when they hesitate.

## 4. Run it

Either pass flags:

```bash
./setup.sh --name Jane --repo-dir ~/dev --github-user janedoe
```

or write the answers to a file, which is better when a key is involved because
the value never lands in shell history:

```bash
cat > setup.answers.json <<'JSON'
{
  "name": "Jane",
  "repo_dir": "~/dev",
  "github_user": "janedoe",
  "anthropic_key": "sk-ant-...",
  "bypass_permissions": false,
  "session_opener": "none"
}
JSON
./setup.sh --answers setup.answers.json
```

Delete the answers file afterwards if it held a key, and say that you did.

## 5. Read the output back to them

Run `./doctor.sh` and translate it. A warning is not a failure. Name what is
missing, what it costs them, and the one command that fixes it.

Re-running is safe. One section at a time:

```bash
./setup.sh --only tools     # a tool arrived after the first run, like uv
./setup.sh --only plugins   # the claude CLI was missing at the time
./setup.sh --only mcp
```

Sections: `prereq repos settings editor desktop mcp rules plugins tools plynn verify`

## 6. Hand off what a script cannot do

Screen Recording, Accessibility, and any consent screen need a real click. The
[agent-setup](../agent-setup) skill covers those. Switch to it once the
install is done rather than leaving a checklist behind.

## What to never do here

- Do not turn on `--bypass-permissions` because it makes your own job easier.
- Do not enable the session opener without being asked.
- Do not read a key out of their environment, keychain, or `gh auth token` and
  pass it in. If they did not give it to you, it does not get written.
- Do not paste a key into a chat message you then echo back.