Skip to content

Commit 3573e20

Browse files
authored
Add Conductor output (#44)
1 parent 067b9cc commit 3573e20

5 files changed

Lines changed: 244 additions & 2 deletions

File tree

README.md

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
Shared source for WordPress-focused agent skills and plugin packaging.
44

5-
This repo currently packages shared skills and setup files for Amp, Cline, Codex, Claude Code, Cursor, Continue, Devin CLI, Factory Droid, GitHub Copilot, Gemini, Junie, Kilo Code, Pi, Qodo, Roo Code, Windsurf/Cascade, Aider, and Zed as separate outputs:
5+
This repo currently packages shared skills and setup files for Amp, Cline, Codex, Claude Code, Conductor, Cursor, Continue, Devin CLI, Factory Droid, GitHub Copilot, Gemini, Junie, Kilo Code, Pi, Qodo, Roo Code, Windsurf/Cascade, Aider, and Zed as separate outputs:
66

77
- prefers the WordPress Studio MCP server for site management, screenshots, and block validation
88
- falls back to the Studio CLI through a shared Studio skill when MCP is unavailable
@@ -20,6 +20,7 @@ This repo currently packages shared skills and setup files for Amp, Cline, Codex
2020
- includes Devin CLI project config, rules, and skills under Devin's documented `.devin/` surfaces
2121
- adds Cline workspace rules, skills, MCP settings, and Cline plugin-surface documentation from official Cline docs
2222
- adds a Pi skills package using Pi's official package manifest and Agent Skills support
23+
- includes Conductor repository settings and guidance for running the existing Claude Code, Codex, and Cursor outputs in isolated Conductor workspaces
2324
- adds Roo Code workspace rules and project MCP config without introducing a Roo-specific backend service
2425
- adds a Qodo `AGENTS.md` workspace package and documents Qodo's manual MCP setup path from official Qodo docs
2526
- adds Zed project instructions, project-local skills, and project settings for MCP without introducing a Zed-specific backend service
@@ -137,6 +138,15 @@ claude --plugin-dir ./plugins/claude-code
137138
- running an audit request
138139
6. For workflow telemetry coverage, make sure the generated `wordpress-telemetry` MCP server starts alongside `wordpress-studio`.
139140

141+
### Test in Conductor
142+
143+
1. Review the generated Conductor output in `./plugins/conductor`.
144+
2. Confirm the generated repository settings exist at `plugins/conductor/.conductor/settings.toml`.
145+
3. Confirm `plugins/conductor/README.md` documents why this output uses `.conductor/settings.toml` instead of legacy `conductor.json`.
146+
4. Confirm the README points Conductor MCP setup back to the existing Claude Code, Codex, and Cursor MCP configs instead of generating a Conductor-only MCP file.
147+
5. In Conductor, open a workspace and use the generated settings as the shared repository script layer when the package workflow should run `pnpm install`, `pnpm build`, and `pnpm verify`.
148+
6. Use Conductor's MCP/provider settings or Sync Agent Configs to make the existing `wordpress-studio` and `wordpress-telemetry` MCP servers available to the agents you run in Conductor.
149+
140150
### Test in Gemini
141151

142152
1. Copy or reference `./plugins/gemini` as the Gemini project context directory.
@@ -310,6 +320,7 @@ pi install ./plugins/pi
310320
- A bundled standalone telemetry MCP server built from repo-local Node dependencies
311321
- Codex packaging output in `plugins/codex/`
312322
- Claude Code packaging output in `plugins/claude-code/`
323+
- Conductor setup output in `plugins/conductor/`
313324
- Cursor packaging output in `plugins/cursor/`
314325
- Continue setup output in `plugins/continue/`
315326
- Factory Droid marketplace output in `plugins/factory/`
@@ -535,6 +546,19 @@ Official Devin references:
535546
- MCP configuration: https://docs.devin.ai/cli/extensibility/mcp/configuration.md
536547
- Configuration files: https://docs.devin.ai/cli/extensibility/configuration.md
537548

549+
The Conductor setup output is generated to:
550+
551+
```text
552+
plugins/conductor/
553+
```
554+
555+
That folder currently contains:
556+
557+
- `.conductor/settings.toml`
558+
- `README.md`
559+
560+
The generated Conductor settings use the current `.conductor/settings.toml` repository settings format for shared setup and run scripts. Conductor MCP support stays in Conductor's app/provider settings and in the existing Claude Code, Codex, and Cursor MCP configs; this output intentionally does not generate legacy `conductor.json` or a Conductor-only MCP file.
561+
538562
The generated Copilot MCP config launches both `studio mcp` and the bundled `wordpress-telemetry` MCP server through VS Code's MCP configuration.
539563

540564
The Gemini plugin is generated to:
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
"$schema" = "https://conductor.build/schemas/settings.repo.schema.json"
2+
3+
[scripts]
4+
setup = "pnpm install"
5+
run = "pnpm build && pnpm verify"
6+
run_mode = "concurrent"

plugins/conductor/README.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
# WordPress.com for Conductor
2+
3+
This output packages Conductor repository settings and guidance for using the shared Build with WordPress agent outputs inside Conductor workspaces.
4+
5+
Conductor is a workspace layer for parallel Claude Code, Codex, and Cursor agents. It creates isolated Git worktrees, runs setup and run scripts from each workspace, and then helps review, open PRs, and archive finished branches.
6+
7+
## Generated files
8+
9+
- `.conductor/settings.toml` configures shared Conductor repository scripts.
10+
- `README.md` documents how Conductor should use the existing Claude Code, Codex, and Cursor outputs from this repository.
11+
12+
## Setup
13+
14+
1. Install Conductor for macOS from https://www.conductor.build/.
15+
2. Open the repository you want Conductor to manage.
16+
3. Copy this output's `.conductor/settings.toml` into the repository root when the Build with WordPress package scripts are the workflow you want new Conductor workspaces to share.
17+
4. Install or sync the underlying agent configs for the agents you plan to run:
18+
- Claude Code: use `plugins/claude-code/`.
19+
- Codex: use `plugins/codex/`.
20+
- Cursor: use `plugins/cursor/`.
21+
5. In Conductor, use Sync Agent Configs or the agent/provider settings to make the same MCP servers available to Claude Code, Codex, and Cursor.
22+
23+
## Scripts
24+
25+
Current Conductor docs recommend committed repository settings in `.conductor/settings.toml` for shared setup and run scripts. Legacy `conductor.json` is not generated because current docs mark it as legacy and Conductor ignores repo-level `conductor.json` once `.conductor/settings.toml` exists.
26+
27+
The generated settings use:
28+
29+
```toml
30+
"$schema" = "https://conductor.build/schemas/settings.repo.schema.json"
31+
32+
[scripts]
33+
setup = "pnpm install"
34+
run = "pnpm build && pnpm verify"
35+
run_mode = "concurrent"
36+
```
37+
38+
Adjust `scripts.setup` and `scripts.run` for repositories that consume these WordPress.com agent files instead of developing this package directly. Use `$CONDUCTOR_PORT` in run scripts when a workspace starts a local web server.
39+
40+
## MCP support
41+
42+
Conductor supports MCP servers through the app's MCP/provider configuration and can sync agent configs between Claude Code and Codex. The current repository settings schema documents scripts, prompts, environment variables, providers, and Git behavior, but it does not define a repository-level MCP server table.
43+
44+
For that reason this output does not invent a Conductor-specific MCP file. Use the existing MCP configs generated for the underlying agents:
45+
46+
- Claude Code: `plugins/claude-code/.mcp.json`
47+
- Codex: `plugins/codex/plugins/wordpress-studio/.mcp.json`
48+
- Cursor: `plugins/cursor/mcp.json`
49+
50+
Those configs launch the shared `studio mcp` server plus the bundled `wordpress-telemetry` server. Conductor's MCP support and Sync Agent Configs should point at the same shared substrate instead of adding another WordPress.com backend.
51+
52+
## Message queues
53+
54+
Conductor message queues are a native composer/workspace feature. They do not require generated files in this package. Queue multiple prompts in Conductor when a workspace needs ordered follow-up work; keep durable WordPress.com workflow guidance in the underlying agent outputs and shared skills.
55+
56+
## Source links
57+
58+
- Product overview: https://www.conductor.build/
59+
- Workflow and workspaces: https://www.conductor.build/docs/concepts/workflow and https://www.conductor.build/docs/concepts/workspaces-and-branches
60+
- Scripts and repository settings: https://www.conductor.build/docs/reference/scripts and https://www.conductor.build/docs/reference/settings
61+
- Settings reference: https://www.conductor.build/docs/reference/settings/reference
62+
- Legacy conductor.json: https://www.conductor.build/docs/reference/conductor-json
63+
- MCPs and message queues changelog: https://www.conductor.build/changelog/0.1.0-mcps-message-queues
64+
- Repo settings migration changelog: https://www.conductor.build/changelog/0.62.0-repo-settings-browser-preview
65+
- Sync agent configs changelog: https://www.conductor.build/changelog/0.57.0-sync-agent-configs

scripts/build-plugins.mjs

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ const cursorPluginDisplayName = pluginDisplayName;
2020
const continueOutputDir = path.join(pluginsDir, "continue");
2121
const factoryOutputDir = path.join(pluginsDir, "factory");
2222
const factoryPluginDir = path.join(factoryOutputDir, "plugins", pluginName);
23+
const conductorOutputDir = path.join(pluginsDir, "conductor");
2324
const geminiDisplayName = "WordPress.com";
2425
const qodoPluginDir = path.join(pluginsDir, "qodo");
2526

@@ -641,6 +642,85 @@ mcpServers:
641642
`;
642643
}
643644

645+
function buildConductorSettings() {
646+
return `"$schema" = "https://conductor.build/schemas/settings.repo.schema.json"
647+
648+
[scripts]
649+
setup = "pnpm install"
650+
run = "pnpm build && pnpm verify"
651+
run_mode = "concurrent"
652+
`;
653+
}
654+
655+
function buildConductorReadme() {
656+
return `# WordPress.com for Conductor
657+
658+
This output packages Conductor repository settings and guidance for using the shared Build with WordPress agent outputs inside Conductor workspaces.
659+
660+
Conductor is a workspace layer for parallel Claude Code, Codex, and Cursor agents. It creates isolated Git worktrees, runs setup and run scripts from each workspace, and then helps review, open PRs, and archive finished branches.
661+
662+
## Generated files
663+
664+
- \`.conductor/settings.toml\` configures shared Conductor repository scripts.
665+
- \`README.md\` documents how Conductor should use the existing Claude Code, Codex, and Cursor outputs from this repository.
666+
667+
## Setup
668+
669+
1. Install Conductor for macOS from https://www.conductor.build/.
670+
2. Open the repository you want Conductor to manage.
671+
3. Copy this output's \`.conductor/settings.toml\` into the repository root when the Build with WordPress package scripts are the workflow you want new Conductor workspaces to share.
672+
4. Install or sync the underlying agent configs for the agents you plan to run:
673+
- Claude Code: use \`plugins/claude-code/\`.
674+
- Codex: use \`plugins/codex/\`.
675+
- Cursor: use \`plugins/cursor/\`.
676+
5. In Conductor, use Sync Agent Configs or the agent/provider settings to make the same MCP servers available to Claude Code, Codex, and Cursor.
677+
678+
## Scripts
679+
680+
Current Conductor docs recommend committed repository settings in \`.conductor/settings.toml\` for shared setup and run scripts. Legacy \`conductor.json\` is not generated because current docs mark it as legacy and Conductor ignores repo-level \`conductor.json\` once \`.conductor/settings.toml\` exists.
681+
682+
The generated settings use:
683+
684+
\`\`\`toml
685+
"$schema" = "https://conductor.build/schemas/settings.repo.schema.json"
686+
687+
[scripts]
688+
setup = "pnpm install"
689+
run = "pnpm build && pnpm verify"
690+
run_mode = "concurrent"
691+
\`\`\`
692+
693+
Adjust \`scripts.setup\` and \`scripts.run\` for repositories that consume these WordPress.com agent files instead of developing this package directly. Use \`$CONDUCTOR_PORT\` in run scripts when a workspace starts a local web server.
694+
695+
## MCP support
696+
697+
Conductor supports MCP servers through the app's MCP/provider configuration and can sync agent configs between Claude Code and Codex. The current repository settings schema documents scripts, prompts, environment variables, providers, and Git behavior, but it does not define a repository-level MCP server table.
698+
699+
For that reason this output does not invent a Conductor-specific MCP file. Use the existing MCP configs generated for the underlying agents:
700+
701+
- Claude Code: \`plugins/claude-code/.mcp.json\`
702+
- Codex: \`plugins/codex/plugins/wordpress-studio/.mcp.json\`
703+
- Cursor: \`plugins/cursor/mcp.json\`
704+
705+
Those configs launch the shared \`studio mcp\` server plus the bundled \`wordpress-telemetry\` server. Conductor's MCP support and Sync Agent Configs should point at the same shared substrate instead of adding another WordPress.com backend.
706+
707+
## Message queues
708+
709+
Conductor message queues are a native composer/workspace feature. They do not require generated files in this package. Queue multiple prompts in Conductor when a workspace needs ordered follow-up work; keep durable WordPress.com workflow guidance in the underlying agent outputs and shared skills.
710+
711+
## Source links
712+
713+
- Product overview: https://www.conductor.build/
714+
- Workflow and workspaces: https://www.conductor.build/docs/concepts/workflow and https://www.conductor.build/docs/concepts/workspaces-and-branches
715+
- Scripts and repository settings: https://www.conductor.build/docs/reference/scripts and https://www.conductor.build/docs/reference/settings
716+
- Settings reference: https://www.conductor.build/docs/reference/settings/reference
717+
- Legacy conductor.json: https://www.conductor.build/docs/reference/conductor-json
718+
- MCPs and message queues changelog: https://www.conductor.build/changelog/0.1.0-mcps-message-queues
719+
- Repo settings migration changelog: https://www.conductor.build/changelog/0.62.0-repo-settings-browser-preview
720+
- Sync agent configs changelog: https://www.conductor.build/changelog/0.57.0-sync-agent-configs
721+
`;
722+
}
723+
644724
function buildOpenCodeReadme({ skillNames }) {
645725
const skillList = skillNames
646726
.map((skillName) => `- \`${skillName}\``)
@@ -2659,6 +2739,26 @@ async function buildContinueOutput() {
26592739
console.log(`Built Continue output at ${continueOutputDir}`);
26602740
}
26612741

2742+
async function buildConductorOutput() {
2743+
await rm(conductorOutputDir, { recursive: true, force: true });
2744+
await mkdir(path.join(conductorOutputDir, ".conductor"), {
2745+
recursive: true,
2746+
});
2747+
2748+
await writeFile(
2749+
path.join(conductorOutputDir, ".conductor", "settings.toml"),
2750+
buildConductorSettings(),
2751+
"utf8",
2752+
);
2753+
await writeFile(
2754+
path.join(conductorOutputDir, "README.md"),
2755+
buildConductorReadme(),
2756+
"utf8",
2757+
);
2758+
2759+
console.log(`Built Conductor output at ${conductorOutputDir}`);
2760+
}
2761+
26622762
async function main() {
26632763
await mkdir(pluginsDir, { recursive: true });
26642764
await access(telemetryMcpServerDistPath);
@@ -2669,6 +2769,7 @@ async function main() {
26692769
}
26702770

26712771
await buildContinueOutput();
2772+
await buildConductorOutput();
26722773
}
26732774

26742775
main().catch((error) => {

scripts/verify-plugins.mjs

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ const codexMarketplacePath = path.join(
2121
const claudePluginDir = path.join(root, "plugins", "claude-code");
2222
const cursorPluginDir = path.join(root, "plugins", "cursor");
2323
const continueOutputDir = path.join(root, "plugins", "continue");
24+
const conductorOutputDir = path.join(root, "plugins", "conductor");
2425
const openCodePluginDir = path.join(root, "plugins", "opencode");
2526
const rooPluginDir = path.join(root, "plugins", "roo-code");
2627
const juniePluginDir = path.join(root, "plugins", "junie");
@@ -284,6 +285,50 @@ async function verifyContinueOutput() {
284285
}
285286
}
286287

288+
async function verifyConductorOutput() {
289+
await access(path.join(conductorOutputDir, "README.md"));
290+
await access(path.join(conductorOutputDir, ".conductor", "settings.toml"));
291+
292+
const settings = await readFile(
293+
path.join(conductorOutputDir, ".conductor", "settings.toml"),
294+
"utf8",
295+
);
296+
297+
if (!settings.includes('"$schema" = "https://conductor.build/schemas/settings.repo.schema.json"')) {
298+
throw new Error("Conductor settings are missing the repository schema URL");
299+
}
300+
301+
if (!settings.includes("[scripts]")) {
302+
throw new Error("Conductor settings must define a scripts table");
303+
}
304+
305+
if (!settings.includes('setup = "pnpm install"')) {
306+
throw new Error("Conductor settings are missing the setup script");
307+
}
308+
309+
if (!settings.includes('run = "pnpm build && pnpm verify"')) {
310+
throw new Error("Conductor settings are missing the run script");
311+
}
312+
313+
const readme = await readFile(path.join(conductorOutputDir, "README.md"), "utf8");
314+
315+
if (!readme.includes("WordPress.com for Conductor")) {
316+
throw new Error("Conductor README is missing the expected title");
317+
}
318+
319+
if (!readme.includes("Legacy `conductor.json` is not generated")) {
320+
throw new Error("Conductor README must explain why conductor.json is not generated");
321+
}
322+
323+
if (!readme.includes("does not define a repository-level MCP server table")) {
324+
throw new Error("Conductor README must explain MCP config boundaries");
325+
}
326+
327+
if (!readme.includes("message queues are a native composer/workspace feature")) {
328+
throw new Error("Conductor README must explain message queue boundaries");
329+
}
330+
}
331+
287332
async function verifyOpenCodePlugin(skillNames) {
288333
await access(path.join(openCodePluginDir, "README.md"));
289334
await access(path.join(openCodePluginDir, "AGENTS.md"));
@@ -841,6 +886,7 @@ async function main() {
841886
await verifyClaudePlugin(skillNames);
842887
await verifyCursorPlugin(skillNames);
843888
await verifyContinueOutput();
889+
await verifyConductorOutput();
844890
await verifyOpenCodePlugin(skillNames);
845891
await verifyKiloCodePlugin(skillNames);
846892
await verifyRooPlugin(skillNames);
@@ -857,7 +903,7 @@ async function main() {
857903
await verifyAmpPlugin(skillNames);
858904
await verifyPiPlugin(skillNames);
859905

860-
console.log("Codex, Claude, Cursor, Continue, OpenCode, Kilo Code, Roo Code, Cline, Junie, Gemini, Copilot, Qodo, Zed, Windsurf, Aider, Factory Droid, Devin, Amp, and Pi verification passed");
906+
console.log("Amp, Cline, Codex, Claude, Conductor, Cursor, Continue, OpenCode, Kilo Code, Roo Code, Junie, Gemini, Copilot, Qodo, Zed, Windsurf, Aider, Factory Droid, Devin, and Pi verification passed");
861907
}
862908

863909
main().catch((error) => {

0 commit comments

Comments
 (0)