> ## Documentation Index
> Fetch the complete documentation index at: https://kowshik-93.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Installation

> Every install method and flag, and why Claude Code and Copilot each need their own copy.

## Why two skill directories

Claude Code and Copilot do **not** share a skills directory:

| Host           | Discovers skills in                                                                                                                                |
| -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| Claude Code    | `.claude/skills/<name>/SKILL.md`                                                                                                                   |
| GitHub Copilot | `.github/skills/<name>/SKILL.md` (Copilot's other mode uses `.github/agents/*.agent.md` — shipflow standardizes on the portable `SKILL.md` layout) |

The same portable `SKILL.md` file runs in both — but it has to physically exist in **both**
locations. Project-scope install therefore writes to both by default; that's the one thing every
install method below has in common.

## `npx` (recommended)

Cross-platform, no clone, always the latest published version:

```bash theme={null}
npx shipflow-skills init                 # project scope: both .claude/skills and .github/skills,
                                          # plus .mcp.json + .vscode/mcp.json seeded
npx shipflow-skills init ./path/to/repo  # explicit target dir (default: current directory)
npx shipflow-skills init --global        # personal scope: ~/.claude/skills (Claude Code only)
npx shipflow-skills init --claude-only   # project scope, skip the Copilot (.github/skills) copy
npx shipflow-skills init --no-mcp        # skip seeding .mcp.json / .vscode/mcp.json
```

<Note>
  The npm **package** is `shipflow-skills` (the bare name `shipflow` was already taken) — the
  installed **command** is `shipflow`, since the `bin` field is independent of the package name.
</Note>

MCP config is central to how shipflow reads work items, so `init` seeds it by default rather than
requiring a second flag. `--no-mcp` opts out. `--global` always skips it — there's no target repo
at personal scope to put `.mcp.json` in.

## Bash installer (alternative)

Needs Git Bash or WSL on Windows. Run with your target repo as the working directory:

```bash theme={null}
/path/to/shipflow/install.sh                # both host dirs + MCP config, same defaults as npx
/path/to/shipflow/install.sh --global       # ~/.claude/skills (Claude Code only)
/path/to/shipflow/install.sh --claude-only  # skip the Copilot copy
/path/to/shipflow/install.sh --no-mcp       # skip MCP seeding
```

Both installers are kept behavior-identical on purpose — if you change a flag in one, change it in
the other (`scripts/validate.py` runs both for real and checks the resulting tree matches).

## What gets installed

<AccordionGroup>
  <Accordion title="Skills — 8 SKILL.md files, both host directories">
    `shipflow` (orchestrator), `product-context`, `feature-context`, `feature-plan`,
    `feature-implement`, `feature-tests`, `feature-verify`, `feature-pr`.
  </Accordion>

  <Accordion title="shipflow.config.md — seeded from the pristine example">
    Only created if it doesn't already exist — re-running `init` never overwrites your edits.
  </Accordion>

  <Accordion title="templates/ — the four render targets the skills fill in">
    `context.md`, `plan.md`, `pr-body.md`, `product.md`.
  </Accordion>

  <Accordion title=".mcp.json + .vscode/mcp.json — MCP server placeholders">
    Claude Code reads `.mcp.json` (key `mcpServers`); Copilot reads `.vscode/mcp.json` (key
    `servers`) — different file **and** different top-level key. See
    [Connecting MCP servers](/shipflow/configuration/mcp-setup).
  </Accordion>
</AccordionGroup>

## After installing

1. Add `.shipflow/` to `.gitignore` — it's shipflow's per-work-item scratch space, not meant to be
   committed.
2. Edit `shipflow.config.md` — see [Configuration](/shipflow/configuration/overview).
3. Fill in the MCP server(s) you need — see [Connecting MCP servers](/shipflow/configuration/mcp-setup).
4. Run `/shipflow AB#1234` in Claude Code or Copilot chat.
