diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json new file mode 100644 index 0000000..3cddaba --- /dev/null +++ b/.claude-plugin/marketplace.json @@ -0,0 +1,35 @@ +{ + "$schema": "https://json.schemastore.org/claude-code-marketplace.json", + "name": "conductor", + "version": "0.1.15", + "description": "Conductor — multi-agent workflow orchestration via YAML", + "owner": { + "name": "Microsoft", + "email": "opensource@microsoft.com" + }, + "metadata": { + "pluginRoot": "./plugins" + }, + "plugins": [ + { + "name": "conductor", + "source": "./conductor", + "description": "Validate, run, and execute Conductor multi-agent YAML workflows. Adds the conductor skill that knows the workflow schema, CLI commands, and execution model.", + "author": { "name": "Microsoft" }, + "homepage": "https://github.com/microsoft/conductor", + "repository": "https://github.com/microsoft/conductor", + "license": "MIT", + "category": "workflow", + "keywords": [ + "workflow", + "orchestration", + "multi-agent", + "yaml", + "copilot", + "claude", + "agents" + ], + "tags": ["agents", "automation", "workflow"] + } + ] +} diff --git a/.github/workflows/validate-plugin.yml b/.github/workflows/validate-plugin.yml new file mode 100644 index 0000000..ccb616b --- /dev/null +++ b/.github/workflows/validate-plugin.yml @@ -0,0 +1,38 @@ +name: validate-plugin + +on: + pull_request: + paths: + - ".claude-plugin/**" + - "plugins/**" + - "pyproject.toml" + - ".github/workflows/validate-plugin.yml" + push: + branches: [main] + paths: + - ".claude-plugin/**" + - "plugins/**" + - "pyproject.toml" + - ".github/workflows/validate-plugin.yml" + +jobs: + validate-json: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Validate marketplace.json and plugin.json are valid JSON + run: | + python -c "import json,sys; json.load(open('.claude-plugin/marketplace.json'))" + python -c "import json,sys; json.load(open('plugins/conductor/.claude-plugin/plugin.json'))" + - name: Verify SKILL.md exists at the expected plugin path + run: | + test -f plugins/conductor/skills/conductor/SKILL.md + echo "OK: plugins/conductor/skills/conductor/SKILL.md is present" + - name: Verify plugin.json and pyproject.toml versions match + run: | + PLUGIN=$(python -c "import json; print(json.load(open('plugins/conductor/.claude-plugin/plugin.json'))['version'])") + PYPROJECT=$(python -c "import tomllib; print(tomllib.load(open('pyproject.toml','rb'))['project']['version'])") + if [ "$PLUGIN" != "$PYPROJECT" ]; then + echo "Version mismatch: plugin.json=$PLUGIN pyproject.toml=$PYPROJECT"; exit 1 + fi + echo "OK: both at version $PLUGIN" diff --git a/README.md b/README.md index b56673f..6175ffb 100644 --- a/README.md +++ b/README.md @@ -115,6 +115,28 @@ conductor run workflow.yaml pip install git+https://github.com/microsoft/conductor.git@v1.0.0 ``` +### Use the Conductor skill in Claude Code or Copilot CLI + +This repo doubles as a single-plugin marketplace that ships the `conductor` +skill from `plugins/conductor/skills/conductor/`. The skill teaches the +assistant the workflow YAML schema, CLI commands, and execution model. + +**Claude Code:** + +```text +/plugin marketplace add microsoft/conductor +/plugin install conductor@conductor +``` + +**GitHub Copilot CLI** (`gh skill` requires GitHub CLI 2.91+, public preview): + +```bash +gh skill install microsoft/conductor conductor +``` + +The plugin ships only markdown — no executables, hooks, or MCP servers — so +trust verification is straightforward. + ## Quick Start ### 1. Create a workflow file diff --git a/plugins/conductor/.claude-plugin/plugin.json b/plugins/conductor/.claude-plugin/plugin.json new file mode 100644 index 0000000..8e64e55 --- /dev/null +++ b/plugins/conductor/.claude-plugin/plugin.json @@ -0,0 +1,17 @@ +{ + "name": "conductor", + "description": "Multi-agent workflow orchestration via YAML. Ships the conductor skill so the assistant can validate, run, debug, and author workflow files for the conductor CLI.", + "version": "0.1.15", + "author": { + "name": "Microsoft" + }, + "homepage": "https://github.com/microsoft/conductor", + "repository": "https://github.com/microsoft/conductor", + "license": "MIT", + "keywords": [ + "workflow", + "orchestration", + "multi-agent", + "yaml" + ] +} diff --git a/plugins/conductor/README.md b/plugins/conductor/README.md new file mode 100644 index 0000000..ab72e45 --- /dev/null +++ b/plugins/conductor/README.md @@ -0,0 +1,37 @@ +# Conductor (Claude Code plugin) + +Bundles the **conductor** skill so Claude Code can validate, run, debug, and author +Conductor multi-agent YAML workflows. + +## What this plugin contains + +- `skills/conductor/SKILL.md` — model-invoked skill describing the workflow schema, + CLI commands, execution model, and authoring guidance. +- `skills/conductor/references/` — supporting reference docs for setup, execution, + authoring, and the YAML schema. + +This plugin ships **only markdown** — no executables, hooks, MCP servers, or +custom agents — so trust verification is straightforward: read the markdown. + +## Install + +Add the marketplace and install the plugin: + +```text +/plugin marketplace add microsoft/conductor +/plugin install conductor@conductor +``` + +## Local development + +If you're hacking on the skill from a clone of `microsoft/conductor`, point Claude +Code at this directory directly: + +```bash +claude --plugin-dir plugins/conductor +``` + +## Use the underlying CLI + +The skill orchestrates the `conductor` Python CLI. Install it separately following +the [main project README](https://github.com/microsoft/conductor#installation). diff --git a/.claude/skills/conductor/SKILL.md b/plugins/conductor/skills/conductor/SKILL.md similarity index 100% rename from .claude/skills/conductor/SKILL.md rename to plugins/conductor/skills/conductor/SKILL.md diff --git a/.claude/skills/conductor/references/authoring.md b/plugins/conductor/skills/conductor/references/authoring.md similarity index 100% rename from .claude/skills/conductor/references/authoring.md rename to plugins/conductor/skills/conductor/references/authoring.md diff --git a/.claude/skills/conductor/references/execution.md b/plugins/conductor/skills/conductor/references/execution.md similarity index 100% rename from .claude/skills/conductor/references/execution.md rename to plugins/conductor/skills/conductor/references/execution.md diff --git a/.claude/skills/conductor/references/setup.md b/plugins/conductor/skills/conductor/references/setup.md similarity index 100% rename from .claude/skills/conductor/references/setup.md rename to plugins/conductor/skills/conductor/references/setup.md diff --git a/.claude/skills/conductor/references/yaml-schema.md b/plugins/conductor/skills/conductor/references/yaml-schema.md similarity index 100% rename from .claude/skills/conductor/references/yaml-schema.md rename to plugins/conductor/skills/conductor/references/yaml-schema.md