Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions .cursor/BUGBOT.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,8 @@ export const handler = (p: FooBarParams) => fooBarLogic(p);

## 3. Testing Checklist

* **Ban on Vitest mocking** (`vi.mock`, `vi.fn`, `vi.spyOn`, `.mock*`) ⇒ critical. Use `createMockExecutor` / `createMockFileSystemExecutor`.
* **External-boundary rule**: Use `createMockExecutor` / `createMockFileSystemExecutor` for command execution and filesystem side effects.
* **Internal mocking is allowed**: `vi.mock`, `vi.fn`, `vi.spyOn`, and `.mock*` are acceptable for internal modules/collaborators.
* Each tool must have tests covering happy-path **and** at least one failure path.
* Avoid the `any` type unless justified with an inline comment.

Expand All @@ -72,8 +73,8 @@ export const handler = (p: FooBarParams) => fooBarLogic(p);

### How Bugbot Can Verify Rules

1. **Mocking violations**: search `*.test.ts` for `vi.` → critical.
2. **DI compliance**: search for direct `child_process` / `fs` imports outside executors.
1. **External-boundary violations**: confirm tests use injected executors/filesystem for external side effects.
2. **DI compliance**: search for direct `child_process` / `fs` imports outside approved patterns.
3. **Docs accuracy**: compare `docs/TOOLS.md` against `src/mcp/tools/**`.
4. **Style**: ensure ESLint and Prettier pass (`npm run lint`, `npm run format:check`).

Expand Down
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

## [Unreleased]

### Added

- Added `xcodebuildmcp init` CLI command to install agent skills, replacing the standalone `install-skill.sh` script. Supports auto-detection of AI clients (Claude Code, Cursor, Codex), `--print` for unsupported clients, and `--uninstall` for removal.

### Changed

- Changed MCP `xcode-ide` integration to expose manifest-managed gateway tools (`xcode_ide_list_tools`, `xcode_ide_call_tool`) while keeping CLI dynamic `xcode_tools_*` behavior unchanged ([#210](https://github.com/getsentry/XcodeBuildMCP/issues/210))
Expand All @@ -12,6 +16,10 @@
- Removed startup dependency on handshake-time Xcode bridge `tools/list` sync for MCP tool registration, preventing bridge list latency from delaying initial connect ([#210](https://github.com/getsentry/XcodeBuildMCP/issues/210))
- Fixed Sentry telemetry scope to capture only internal XcodeBuildMCP runtime failures, removing broad MCP wrapping, PII-heavy tags, and default per-error log capture ([#204](https://github.com/getsentry/XcodeBuildMCP/issues/204))

### Removed

- Removed `scripts/install-skill.sh` in favour of `xcodebuildmcp init`.

## [2.0.7]

### Changed
Expand Down
12 changes: 9 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -300,13 +300,19 @@ XcodeBuildMCP now includes two optional agent skills:
- **CLI Skill**: Primes the agent with instructions on how to navigate the CLI (recommended when using the CLI).


To install, copy and paste the command below into a terminal and follow the on-screen instructions.
To install with a global binary:

```bash
curl -fsSL https://raw.githubusercontent.com/getsentry/XcodeBuildMCP/v2.0.7/scripts/install-skill.sh -o install-skill.sh && bash install-skill.sh
xcodebuildmcp init
```

For further information on how to install the skill, see: [docs/SKILLS.md](docs/SKILLS.md)
Or install directly via npx without a global install:

```bash
npx -y xcodebuildmcp@latest init
```

For further information on installing skills, see: [docs/SKILLS.md](docs/SKILLS.md)

## Notes

Expand Down
10 changes: 8 additions & 2 deletions docs/MIGRATION_V2.md
Original file line number Diff line number Diff line change
Expand Up @@ -229,10 +229,16 @@ v2.0.0 introduces optional skill files that prime your coding agent with usage i
- **CLI Skill** -- strongly recommended when using the CLI with a coding agent.
- **MCP Skill** -- optional when using the MCP server; gives the agent better context on available tools.

Install via the interactive installer:
Install via the built-in CLI command:

```bash
curl -fsSL https://raw.githubusercontent.com/getsentry/XcodeBuildMCP/v2.0.0/scripts/install-skill.sh -o install-skill.sh && bash install-skill.sh
xcodebuildmcp init
```

Or run it via npx without a global install:

```bash
npx -y xcodebuildmcp@latest init
```

See [SKILLS.md](SKILLS.md) for more details.
Expand Down
51 changes: 17 additions & 34 deletions docs/SKILLS.md
Original file line number Diff line number Diff line change
@@ -1,57 +1,40 @@
# XcodeBuildMCP Skill

XcodeBuildMCP now includes two optional agent skills:
XcodeBuildMCP includes two optional agent skills:

- **MCP Skill**: Primes the agent with instructions on how to use the MCP server's tools (optional when using the MCP server).

- **CLI Skill**: Primes the agent with instructions on how to navigate the CLI (recommended when using the CLI).

## Easiest way to install

Install via the interactive installer and follow the on-screen instructions.
## Install

```bash
curl -fsSL https://raw.githubusercontent.com/getsentry/XcodeBuildMCP/v2.0.7/scripts/install-skill.sh -o install-skill.sh && bash install-skill.sh
xcodebuildmcp init
```

## Automated installation

Useful for CI/CD pipelines or for agentic installation. `--skill` should be set to either `mcp` or `cli` to install the appropriate skill.
This auto-detects installed AI clients (Claude Code, Cursor, Codex) and installs the CLI skill.

### Install (Claude Code)
### Options

```bash
curl -fsSL https://raw.githubusercontent.com/getsentry/XcodeBuildMCP/v2.0.7/scripts/install-skill.sh -o install-skill.sh && bash install-skill.sh --claude --remove-conflict --skill <mcp|cli>
xcodebuildmcp init --skill cli # Install CLI skill (default)
xcodebuildmcp init --skill mcp # Install MCP skill
xcodebuildmcp init --client claude # Install to Claude only
xcodebuildmcp init --dest /path/to/dir # Install to custom directory
xcodebuildmcp init --force # Overwrite existing
xcodebuildmcp init --remove-conflict # Auto-remove conflicting variant
xcodebuildmcp init --uninstall # Remove installed skill
```

### Install (Cursor)
## Unsupported Clients

```bash
curl -fsSL https://raw.githubusercontent.com/getsentry/XcodeBuildMCP/v2.0.7/scripts/install-skill.sh -o install-skill.sh && bash install-skill.sh --cursor --remove-conflict --skill <mcp|cli>
```

### Install (Codex CLI)
For clients without a skills directory, print the skill content and pipe it to a file or paste it into your client's instructions area:

```bash
curl -fsSL https://raw.githubusercontent.com/getsentry/XcodeBuildMCP/v2.0.7/scripts/install-skill.sh -o install-skill.sh && bash install-skill.sh --codex --remove-conflict --skill <mcp|cli>
xcodebuildmcp init --print
xcodebuildmcp init --print --skill mcp > my-skill.md
```

### Install (Other Clients)

For other clients if you know the path to the skills directory you can pass the `--dest` flag.

```bash
curl -fsSL https://raw.githubusercontent.com/getsentry/XcodeBuildMCP/v2.0.7/scripts/install-skill.sh -o install-skill.sh && bash install-skill.sh --dest /path/to/skills --remove-conflict --skill <mcp|cli>
```

## Unsupporting Clients

Some MCP clients that do not yet support skills. Use the skill content as a concise, static instruction prompt:

1. Open `skills/xcodebuildmcp[-cli]/SKILL.md`.
2. Copy the body (everything below the YAML frontmatter).
3. Paste it into the client’s global or project-level instructions/rules area.

## Skills

To learn more about skills see: [https://agentskills.io/home](https://agentskills.io/home).
To learn more about skills see: [https://agentskills.io/home](https://agentskills.io/home).
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,8 @@
"build",
"bundled",
"plugins",
"manifests"
"manifests",
"skills"
],
"keywords": [
"xcodebuild",
Expand Down
2 changes: 1 addition & 1 deletion scripts/check-docs-cli-commands.js
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ function extractCommandCandidates(content) {
}

function findInvalidCommands(files, validPairs, validWorkflows) {
const validTopLevel = new Set(['mcp', 'tools', 'daemon']);
const validTopLevel = new Set(['mcp', 'tools', 'daemon', 'init']);
const validDaemonActions = new Set(['status', 'start', 'stop', 'restart', 'list']);
const findings = [];

Expand Down
Loading
Loading