diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 2414488..2451cbc 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -1,7 +1,7 @@ { "$schema": "https://raw.githubusercontent.com/anthropics/claude-code/refs/heads/main/marketplace/marketplace.schema.json", "name": "xcode-build-skills", - "version": "1.0.1", + "version": "1.1.0", "owner": { "name": "Antoine van der Lee", "email": "contact@avanderlee.com" @@ -14,7 +14,7 @@ "name": "xcode-build-skills", "description": "Six Xcode build optimization skills in one plugin: benchmark, compilation analysis, project analysis, SPM build analysis, a recommend-first orchestrator, and a fixer for applying approved changes.", "repository": "https://github.com/AvdLee/Xcode-Build-Optimization-Agent-Skill", - "version": "1.0.1", + "version": "1.1.0", "author": { "name": "Antoine van der Lee", "email": "contact@avanderlee.com" diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 8c6c1ee..e4b5828 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "xcode-build-skills", - "version": "1.0.1", + "version": "1.1.0", "description": "A multi-skill plugin for benchmarking and optimizing Xcode builds, compile hotspots, project settings, and Swift Package Manager dependency overhead.", "author": { "name": "Antoine van der Lee", diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json new file mode 100644 index 0000000..248e4a5 --- /dev/null +++ b/.codex-plugin/plugin.json @@ -0,0 +1,45 @@ +{ + "name": "xcode-build-skills", + "version": "1.1.0", + "description": "A multi-skill plugin for benchmarking and optimizing Xcode builds, compile hotspots, project settings, and Swift Package Manager dependency overhead.", + "author": { + "name": "Antoine van der Lee", + "email": "contact@avanderlee.com", + "url": "https://www.avanderlee.com" + }, + "homepage": "https://github.com/AvdLee/Xcode-Build-Optimization-Agent-Skill", + "repository": "https://github.com/AvdLee/Xcode-Build-Optimization-Agent-Skill", + "license": "MIT", + "keywords": [ + "xcode", + "builds", + "incremental-builds", + "clean-builds", + "swift", + "ios", + "macos", + "spm", + "benchmarking", + "compilation", + "project-settings", + "explicit-modules" + ], + "skills": "./skills/", + "interface": { + "displayName": "Xcode Build Optimization", + "shortDescription": "Speed up your Xcode builds", + "longDescription": "A multi-skill plugin for benchmarking and optimizing Xcode builds, compile hotspots, project settings, and Swift Package Manager dependency overhead.", + "developerName": "Antoine van der Lee", + "category": "Developer Tools", + "websiteURL": "https://github.com/AvdLee/Xcode-Build-Optimization-Agent-Skill", + "defaultPrompt": [ + "Benchmark my Xcode build and find what is slowing it down.", + "Analyze the compile hotspots in this project.", + "Audit my build settings for optimization opportunities." + ], + "brandColor": "#0071E3", + "composerIcon": "./assets/logo-small.png", + "logo": "./assets/logo.png", + "termsOfServiceURL": "https://github.com/AvdLee/Xcode-Build-Optimization-Agent-Skill/blob/main/LICENSE" + } +} diff --git a/.cursor-plugin/plugin.json b/.cursor-plugin/plugin.json index c585193..985a669 100644 --- a/.cursor-plugin/plugin.json +++ b/.cursor-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "xcode-build-skills", - "version": "1.0.0", + "version": "1.1.0", "description": "A multi-skill plugin for benchmarking and optimizing Xcode builds, compile hotspots, project settings, and Swift Package Manager dependency overhead.", "author": { "name": "Antoine van der Lee", @@ -8,7 +8,7 @@ }, "repository": "https://github.com/AvdLee/Xcode-Build-Optimization-Agent-Skill", "license": "MIT", - "logo": "assets/logo.svg", + "logo": "assets/logo.png", "keywords": [ "xcode", "builds", @@ -30,5 +30,6 @@ "skills/spm-build-analysis", "skills/xcode-build-orchestrator", "skills/xcode-build-fixer" - ] + ], + "homepage": "https://github.com/AvdLee/Xcode-Build-Optimization-Agent-Skill" } diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 80e66b3..04befb1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -60,8 +60,11 @@ jobs: - name: Bump plugin manifest version run: | set -euo pipefail - jq --arg version "$VERSION" '.version = $version' .claude-plugin/plugin.json > .claude-plugin/plugin.json.tmp - mv .claude-plugin/plugin.json.tmp .claude-plugin/plugin.json + for manifest in plugin.json .claude-plugin/plugin.json .codex-plugin/plugin.json .cursor-plugin/plugin.json; do + jq --arg version "$VERSION" '.version = $version' "$manifest" > "$manifest.tmp" + mv "$manifest.tmp" "$manifest" + done + sed -i -E "s/^version: \".*\"$/version: \"$VERSION\"/" agents/openai.yaml - name: Bump marketplace version fields run: | @@ -72,13 +75,14 @@ jobs: - name: Commit and push version bump run: | set -euo pipefail - if git diff --quiet .claude-plugin/plugin.json .claude-plugin/marketplace.json; then + version_files="plugin.json .claude-plugin/plugin.json .claude-plugin/marketplace.json .codex-plugin/plugin.json .cursor-plugin/plugin.json agents/openai.yaml" + if git diff --quiet $version_files; then echo "Version already set to $VERSION. Skipping commit." exit 0 fi git config user.name "github-actions[bot]" git config user.email "41898282+github-actions[bot]@users.noreply.github.com" - git add .claude-plugin/plugin.json .claude-plugin/marketplace.json + git add $version_files git commit -m "Bump version to $VERSION" git push diff --git a/INSTALLATION.md b/INSTALLATION.md new file mode 100644 index 0000000..1a6da6d --- /dev/null +++ b/INSTALLATION.md @@ -0,0 +1,73 @@ +# All Installation Options + +The [README](README.md) covers the recommended installation paths: [skills.sh](README.md#option-a-using-skillssh-recommended), the OpenAI Plugins Directory (ChatGPT & Codex), Claude Code, and Cursor. This file lists every other supported client. + +> Note: this plugin contains six skills. The orchestrator (`xcode-build-orchestrator`) depends on the five specialist skills, so install all of them unless you only need a single specialist standalone. + +## pi package manager + +Install via [pi](https://github.com/mariozechner/pi-mono): +```bash +pi install https://github.com/AvdLee/Xcode-Build-Optimization-Agent-Skill +``` + +The skills will be available automatically in pi sessions. + +## Gemini CLI + +Install globally (user-level skills available in all Gemini CLI sessions): +```bash +gemini skills install https://github.com/AvdLee/Xcode-Build-Optimization-Agent-Skill +``` + +Or install at workspace level so the skills are shared with your team via version control: +```bash +gemini skills install https://github.com/AvdLee/Xcode-Build-Optimization-Agent-Skill --scope workspace +``` + +You can verify the installation with: +```bash +gemini skills list +``` + +For more information, see the [Gemini CLI Agent Skills documentation](https://geminicli.com/docs/cli/skills/). + +## Autohand Code + +Install the skills globally: +```bash +git clone https://github.com/AvdLee/Xcode-Build-Optimization-Agent-Skill.git +mkdir -p ~/.autohand/skills +cp -R Xcode-Build-Optimization-Agent-Skill/skills/* ~/.autohand/skills/ +``` + +Or install them only for the current project: +```bash +git clone https://github.com/AvdLee/Xcode-Build-Optimization-Agent-Skill.git +mkdir -p .autohand/skills +cp -R Xcode-Build-Optimization-Agent-Skill/skills/* .autohand/skills/ +``` + +Autohand Code discovers skills from `~/.autohand/skills/` and `.autohand/skills/`. + +## Manual install + +1) **Clone** this repository. +2) **Install or symlink** the skill folders from `skills/` following your tool's official skills installation docs (see links below). Install all six for the full orchestrated workflow. +3) **Use your AI tool** as usual and ask it to benchmark or optimize your Xcode builds. + +> Note: the skill folders moved from the repository root to `skills/` when adopting the Agent Plugins format. Symlinks at the old paths keep existing local clones and scripts working; they will be removed in the next major version. + +### Where to Save Skills + +Follow your tool's official documentation, here are a few popular ones: +- **Codex:** [Where to save skills](https://developers.openai.com/codex/skills/#where-to-save-skills) +- **Claude:** [Using Skills](https://docs.claude.com/en/docs/agents-and-tools/agent-skills/overview) +- **Cursor:** [Plugins documentation](https://cursor.com/docs/plugins) or [Enabling Skills](https://cursor.com/docs/context/skills#enabling-skills) +- **Gemini CLI:** [Agent Skills](https://geminicli.com/docs/cli/skills/) +- **Autohand Code:** `~/.autohand/skills/` or `.autohand/skills/` + +## Trigger the skills + +After installing through any of these options, use the skills in your AI agent, for example: +> Use the xcode build orchestrator skill to benchmark my build and propose optimizations diff --git a/README.md b/README.md index 20b12c7..e0d390f 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,8 @@ Open-source Agent Skills for benchmarking and optimizing Xcode build performance across clean builds, incremental builds, compile hotspots, project settings, and Swift Package Manager overhead. +This repository is packaged as a portable [Agent Plugin](https://agent-plugins.org) (spec 1.0.0): compatible clients discover all six skills automatically from the root `plugin.json` manifest and the `skills/` directory. Client-specific manifests for Claude Code, Cursor, Codex, and pi are included as well. + ## Quick Start Install all six skills (the orchestrator needs the specialist skills to work): @@ -114,7 +116,7 @@ The orchestrator is the recommended starting point -- it coordinates the other f ## Installation Options -### Option A: Using skills.sh +### Option A: Using skills.sh (recommended) Install all six skills (required -- the orchestrator depends on the specialist skills): @@ -130,7 +132,15 @@ npx skills add https://github.com/avdlee/xcode-build-optimization-agent-skill -- Available individual skills: `xcode-build-benchmark`, `xcode-compilation-analyzer`, `xcode-project-analyzer`, `spm-build-analysis`, `xcode-build-orchestrator`, `xcode-build-fixer`. Note that the orchestrator requires all other skills to be installed. -### Option B: Claude Code Plugin +### Option B: ChatGPT & Codex (OpenAI Plugins Directory) + +This plugin is distributed through the universal OpenAI Plugins Directory shared by ChatGPT and Codex: + +1. In the ChatGPT desktop app, select **Codex** (or ChatGPT with **Work** enabled), or use the plugin browser in Codex CLI. +2. Open **Plugins** and search for "Xcode Build Optimization". +3. Install the plugin. All six skills become available in new chats and sessions. + +### Option C: Claude Code Plugin 1. Add the marketplace: @@ -162,38 +172,13 @@ To enable for everyone in a repository, add to your project configuration: } ``` -### Option C: Cursor Plugin (coming soon) - -This repository is packaged for Cursor plugin submission, but the marketplace listing is not live yet. - -Once approved, you'll be able to install it from the Cursor Marketplace. - -### Option D: Codex / OpenAI-compatible tools - -This repository includes an `agents/openai.yaml` manifest. Copy or symlink the skill folders into your Codex skills directory: - -```bash -cp -R skills/ "$CODEX_HOME/skills/" -``` - -See [Codex skills documentation](https://developers.openai.com/codex/skills/#where-to-save-skills) for details on where to save skills. - -### Option E: Using pi package manager - -Install via [pi](https://github.com/mariozechner/pi-mono): -```bash -pi install https://github.com/AvdLee/Xcode-Build-Optimization-Agent-Skill -``` - -The skills will be available automatically in pi sessions. +### Option D: Cursor Plugin -### Option F: Manual Install +Load the plugin from a local clone by placing it in `~/.cursor/plugins/local`, or install it from the Cursor Marketplace once listed. Cursor supports both the portable Agent Plugins manifest (`plugin.json`) and the Cursor Plugin manifest (`.cursor-plugin/plugin.json`) included in this repository. -1. Clone this repository. -2. Install or symlink the specific skill folder from `skills/` that you want. -3. Ask your AI coding tool to use the corresponding skill. +### Using another tool? -Useful docs: [Codex Skills](https://developers.openai.com/codex/skills/#where-to-save-skills) | [Claude Code Agent Skills](https://code.claude.com/en/skills) | [Cursor Skills](https://cursor.com/docs/context/skills#enabling-skills) +See [INSTALLATION.md](INSTALLATION.md) for all other installation options: pi, Gemini CLI, Autohand Code, and manual installation. ## Why Clean And Incremental Builds Both Matter diff --git a/agents/openai.yaml b/agents/openai.yaml index c9d206e..77e01c9 100644 --- a/agents/openai.yaml +++ b/agents/openai.yaml @@ -1,5 +1,5 @@ name: xcode-build-skills -version: "1.0.0" +version: "1.1.0" description: >- A multi-skill plugin for benchmarking and optimizing Xcode builds, compile hotspots, project settings, and Swift Package Manager @@ -9,7 +9,7 @@ author: email: contact@avanderlee.com repository: https://github.com/AvdLee/Xcode-Build-Optimization-Agent-Skill license: MIT -logo: assets/logo.svg +logo: assets/logo.png keywords: - xcode - builds diff --git a/assets/logo-small.png b/assets/logo-small.png new file mode 100644 index 0000000..42fafa5 Binary files /dev/null and b/assets/logo-small.png differ diff --git a/assets/logo.png b/assets/logo.png new file mode 100644 index 0000000..fd8102c Binary files /dev/null and b/assets/logo.png differ diff --git a/plugin.json b/plugin.json new file mode 100644 index 0000000..3cc0e57 --- /dev/null +++ b/plugin.json @@ -0,0 +1,28 @@ +{ + "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json", + "name": "xcode-build-skills", + "version": "1.1.0", + "description": "A multi-skill plugin for benchmarking and optimizing Xcode builds, compile hotspots, project settings, and Swift Package Manager dependency overhead.", + "author": { + "name": "Antoine van der Lee", + "email": "contact@avanderlee.com", + "url": "https://www.avanderlee.com" + }, + "homepage": "https://github.com/AvdLee/Xcode-Build-Optimization-Agent-Skill", + "repository": "https://github.com/AvdLee/Xcode-Build-Optimization-Agent-Skill", + "license": "MIT", + "keywords": [ + "xcode", + "builds", + "incremental-builds", + "clean-builds", + "swift", + "ios", + "macos", + "spm", + "benchmarking", + "compilation", + "project-settings", + "explicit-modules" + ] +} diff --git a/skills/spm-build-analysis/agents/openai.yaml b/skills/spm-build-analysis/agents/openai.yaml new file mode 100644 index 0000000..83409c3 --- /dev/null +++ b/skills/spm-build-analysis/agents/openai.yaml @@ -0,0 +1,4 @@ +interface: + display_name: "SPM Build Analysis" + short_description: "Analyze Swift Package Manager dependencies and plugin overhead that slow builds." + brand_color: "#0071E3" diff --git a/skills/xcode-build-benchmark/agents/openai.yaml b/skills/xcode-build-benchmark/agents/openai.yaml new file mode 100644 index 0000000..89739ba --- /dev/null +++ b/skills/xcode-build-benchmark/agents/openai.yaml @@ -0,0 +1,4 @@ +interface: + display_name: "Xcode Build Benchmark" + short_description: "Repeatable clean and incremental build baselines with timing summaries." + brand_color: "#0071E3" diff --git a/skills/xcode-build-fixer/agents/openai.yaml b/skills/xcode-build-fixer/agents/openai.yaml new file mode 100644 index 0000000..9dd192f --- /dev/null +++ b/skills/xcode-build-fixer/agents/openai.yaml @@ -0,0 +1,4 @@ +interface: + display_name: "Xcode Build Fixer" + short_description: "Apply approved build optimizations and re-benchmark to verify improvement." + brand_color: "#0071E3" diff --git a/skills/xcode-build-orchestrator/agents/openai.yaml b/skills/xcode-build-orchestrator/agents/openai.yaml new file mode 100644 index 0000000..16dcba0 --- /dev/null +++ b/skills/xcode-build-orchestrator/agents/openai.yaml @@ -0,0 +1,4 @@ +interface: + display_name: "Xcode Build Orchestrator" + short_description: "Coordinate benchmarking, analysis, and prioritized build optimizations." + brand_color: "#0071E3" diff --git a/skills/xcode-compilation-analyzer/agents/openai.yaml b/skills/xcode-compilation-analyzer/agents/openai.yaml new file mode 100644 index 0000000..38d5241 --- /dev/null +++ b/skills/xcode-compilation-analyzer/agents/openai.yaml @@ -0,0 +1,4 @@ +interface: + display_name: "Xcode Compilation Analyzer" + short_description: "Find Swift and mixed-language compile hotspots from build timing data." + brand_color: "#0071E3" diff --git a/skills/xcode-project-analyzer/agents/openai.yaml b/skills/xcode-project-analyzer/agents/openai.yaml new file mode 100644 index 0000000..090a3f1 --- /dev/null +++ b/skills/xcode-project-analyzer/agents/openai.yaml @@ -0,0 +1,4 @@ +interface: + display_name: "Xcode Project Analyzer" + short_description: "Audit project configuration, build settings, and script phases for build-time wins." + brand_color: "#0071E3"