@conductor-oss/conductor-skills 1.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/.claude-plugin/marketplace.json +20 -0
  2. package/.claude-plugin/plugin.json +13 -0
  3. package/LICENSE.txt +176 -0
  4. package/README.md +352 -0
  5. package/VERSION +1 -0
  6. package/bin/conductor-skills.js +135 -0
  7. package/commands/conductor-optimize.md +18 -0
  8. package/commands/conductor-scaffold-worker.md +19 -0
  9. package/commands/conductor-setup.md +15 -0
  10. package/commands/conductor.md +15 -0
  11. package/install.ps1 +677 -0
  12. package/install.sh +855 -0
  13. package/package.json +50 -0
  14. package/skills/conductor/SKILL.md +151 -0
  15. package/skills/conductor/examples/ai-agent-loop.md +119 -0
  16. package/skills/conductor/examples/ai-agent-mcp.md +129 -0
  17. package/skills/conductor/examples/create-and-run-workflow.md +50 -0
  18. package/skills/conductor/examples/do-while-loop.md +72 -0
  19. package/skills/conductor/examples/fork-join.md +52 -0
  20. package/skills/conductor/examples/llm-chat.md +61 -0
  21. package/skills/conductor/examples/llm-rag.md +115 -0
  22. package/skills/conductor/examples/monitor-and-retry.md +54 -0
  23. package/skills/conductor/examples/review-workflow.md +67 -0
  24. package/skills/conductor/examples/signal-wait-task.md +36 -0
  25. package/skills/conductor/examples/sub-workflow.md +52 -0
  26. package/skills/conductor/examples/workflows/ai-agent-loop.json +88 -0
  27. package/skills/conductor/examples/workflows/ai-agent-mcp.json +69 -0
  28. package/skills/conductor/examples/workflows/child-normalize.json +21 -0
  29. package/skills/conductor/examples/workflows/do-while-loop.json +35 -0
  30. package/skills/conductor/examples/workflows/fork-join.json +61 -0
  31. package/skills/conductor/examples/workflows/llm-chat.json +28 -0
  32. package/skills/conductor/examples/workflows/llm-rag.json +49 -0
  33. package/skills/conductor/examples/workflows/parent-pipeline.json +35 -0
  34. package/skills/conductor/examples/workflows/weather-notification.json +42 -0
  35. package/skills/conductor/references/api-reference.md +111 -0
  36. package/skills/conductor/references/cli-index.md +92 -0
  37. package/skills/conductor/references/fallback-cli.md +36 -0
  38. package/skills/conductor/references/optimization.md +148 -0
  39. package/skills/conductor/references/orkes.md +57 -0
  40. package/skills/conductor/references/schedules.md +81 -0
  41. package/skills/conductor/references/setup.md +126 -0
  42. package/skills/conductor/references/troubleshooting.md +35 -0
  43. package/skills/conductor/references/visualization.md +49 -0
  44. package/skills/conductor/references/workers.md +227 -0
  45. package/skills/conductor/references/workflow-definition.md +672 -0
  46. package/skills/conductor/scripts/conductor_api.py +396 -0
@@ -0,0 +1,135 @@
1
+ #!/usr/bin/env node
2
+ /*
3
+ * conductor-skills — npm wrapper for the Conductor Skills installer.
4
+ *
5
+ * Detects the platform, then invokes the bundled install.sh (Unix) or
6
+ * install.ps1 (Windows) with CONDUCTOR_SKILLS_LOCAL_DIR pointing at the
7
+ * package root. The shell scripts read that env var and use the bundled
8
+ * files instead of fetching from GitHub.
9
+ */
10
+
11
+ 'use strict';
12
+
13
+ const { spawnSync } = require('child_process');
14
+ const path = require('path');
15
+ const fs = require('fs');
16
+
17
+ const PKG_ROOT = path.resolve(__dirname, '..');
18
+ const IS_WINDOWS = process.platform === 'win32';
19
+ const args = process.argv.slice(2);
20
+
21
+ function showHelp() {
22
+ const version = readVersion();
23
+ console.log(`@conductor-oss/conductor-skills v${version}
24
+
25
+ Install the Conductor Skills for your AI coding agent.
26
+
27
+ Usage:
28
+ conductor-skills --all Install for all detected agents
29
+ conductor-skills --agent <name> Install for a specific agent
30
+ conductor-skills --all --upgrade Upgrade all installed agents
31
+ conductor-skills --agent <name> --uninstall Remove an installation
32
+ conductor-skills --agent <name> --global Global install (where supported)
33
+ conductor-skills --check Dry run — show planned changes
34
+ conductor-skills --version Print version
35
+ conductor-skills --help This help
36
+
37
+ Supported agents:
38
+ claude, codex, gemini, cursor, windsurf, cline, aider,
39
+ copilot, amazonq, opencode, roo, amp
40
+
41
+ Examples:
42
+ npx @conductor-oss/conductor-skills --agent claude
43
+ npx @conductor-oss/conductor-skills --all
44
+ conductor-skills --agent cursor --uninstall
45
+
46
+ Docs: https://github.com/conductor-oss/conductor-skills
47
+ `);
48
+ }
49
+
50
+ function readVersion() {
51
+ try {
52
+ return fs.readFileSync(path.join(PKG_ROOT, 'VERSION'), 'utf8').trim();
53
+ } catch {
54
+ return 'unknown';
55
+ }
56
+ }
57
+
58
+ function runUnix() {
59
+ const sh = path.join(PKG_ROOT, 'install.sh');
60
+ if (!fs.existsSync(sh)) {
61
+ console.error(`error: install.sh not found at ${sh}`);
62
+ process.exit(1);
63
+ }
64
+ const r = spawnSync('bash', [sh, ...args], {
65
+ stdio: 'inherit',
66
+ env: { ...process.env, CONDUCTOR_SKILLS_LOCAL_DIR: PKG_ROOT },
67
+ });
68
+ process.exit(r.status === null ? 1 : r.status);
69
+ }
70
+
71
+ function runWindows() {
72
+ const ps1 = path.join(PKG_ROOT, 'install.ps1');
73
+ if (!fs.existsSync(ps1)) {
74
+ console.error(`error: install.ps1 not found at ${ps1}`);
75
+ process.exit(1);
76
+ }
77
+ // Translate POSIX-style flags ("--agent claude") into PowerShell
78
+ // parameters ("-Agent claude"). The PowerShell script declares each
79
+ // parameter in PascalCase, so explicit kebab-case → PascalCase mapping
80
+ // is required — naive capitalize-first-letter breaks multi-word flags
81
+ // like --project-dir (which must become -ProjectDir, not -Project-dir).
82
+ const POSIX_TO_PS = {
83
+ 'agent': 'Agent',
84
+ 'all': 'All',
85
+ 'global': 'Global',
86
+ 'project-dir': 'ProjectDir',
87
+ 'upgrade': 'Upgrade',
88
+ 'check': 'Check',
89
+ 'force': 'Force',
90
+ 'uninstall': 'Uninstall',
91
+ 'version': 'Version',
92
+ 'help': 'Help',
93
+ };
94
+ const psArgs = [];
95
+ for (let i = 0; i < args.length; i++) {
96
+ const a = args[i];
97
+ if (a.startsWith('--')) {
98
+ const name = a.slice(2);
99
+ const psName = POSIX_TO_PS[name];
100
+ if (!psName) {
101
+ console.error(`error: unknown flag --${name}. Run with --help for usage.`);
102
+ process.exit(2);
103
+ }
104
+ psArgs.push('-' + psName);
105
+ } else {
106
+ psArgs.push(a);
107
+ }
108
+ }
109
+ const r = spawnSync(
110
+ 'powershell',
111
+ ['-NoProfile', '-ExecutionPolicy', 'Bypass', '-File', ps1, ...psArgs],
112
+ {
113
+ stdio: 'inherit',
114
+ env: { ...process.env, CONDUCTOR_SKILLS_LOCAL_DIR: PKG_ROOT },
115
+ }
116
+ );
117
+ process.exit(r.status === null ? 1 : r.status);
118
+ }
119
+
120
+ // Argument parsing — fast paths first.
121
+ if (args.length === 0 || args.includes('--help') || args.includes('-h')) {
122
+ showHelp();
123
+ process.exit(0);
124
+ }
125
+
126
+ if (args.includes('--version') || args.includes('-v')) {
127
+ console.log(readVersion());
128
+ process.exit(0);
129
+ }
130
+
131
+ if (IS_WINDOWS) {
132
+ runWindows();
133
+ } else {
134
+ runUnix();
135
+ }
@@ -0,0 +1,18 @@
1
+ ---
2
+ description: Review and optimize an existing Conductor workflow
3
+ ---
4
+
5
+ Run the optimization checklist in [skills/conductor/references/optimization.md](../skills/conductor/references/optimization.md) against a workflow the user names.
6
+
7
+ ## Procedure
8
+
9
+ 1. **Identify the target.** Ask the user: a JSON file path, or a registered workflow name (+ optional version)? If they don't say, ask once.
10
+ 2. **Load the definition.**
11
+ - File: `Read` the JSON.
12
+ - Registered: `conductor workflow get {name}` (omit `--version` for latest).
13
+ 3. **Load each SIMPLE task's definition.** Timeouts, retry policy, rate limits, and `concurrentExecLimit` live on the task definition, not on the workflow task. Run `conductor taskDef get {name}` for every distinct SIMPLE task type referenced.
14
+ 4. **Walk every checklist item.** Categories A–E (A1–A7, B1–B7, C1–C5, D1–D3, E1–E3). Don't skip any — record findings as INFO if the item is fine, just to show coverage.
15
+ 5. **Report findings grouped by severity** (CRITICAL / WARN / INFO). Use the report template in optimization.md. See [skills/conductor/examples/review-workflow.md](../skills/conductor/examples/review-workflow.md) for the expected shape.
16
+ 6. **Offer fixes one at a time.** Don't apply changes silently. For each fix, describe what you'd change before doing it. Some findings (e.g. `failureWorkflow` design, retry semantics) need user input before you can implement.
17
+
18
+ If the user wants only a quick scan, prioritize CRITICAL items and skip the INFO-only output. Otherwise, full report.
@@ -0,0 +1,19 @@
1
+ ---
2
+ description: Generate a Conductor worker stub for a SIMPLE task in your language of choice
3
+ ---
4
+
5
+ Scaffold a worker using the SDK pattern in [skills/conductor/references/workers.md](../skills/conductor/references/workers.md).
6
+
7
+ ## Procedure
8
+
9
+ 1. **Ask for language.** Supported: Python, JavaScript / TypeScript, Java, Go, C#, Ruby, Rust. If the user has a workspace open, default to whatever language is dominant in the repo.
10
+ 2. **Ask for the task type.** This must match the `name` field of the SIMPLE task in the workflow definition. If the user has a specific workflow in mind, offer to read it (`conductor workflow get` or a JSON file) and pull the task name(s) directly.
11
+ 3. **Generate the worker stub** from the matching SDK template in workers.md. Include:
12
+ - Install command for the SDK (e.g. `pip install conductor-python`).
13
+ - The worker function with input parameter mapping and output shape.
14
+ - The runner / poller setup.
15
+ - **A comment noting the worker must be idempotent** — Conductor may redeliver on failure or timeout.
16
+ 4. **Show how to start it** — the actual command/entry point in that language.
17
+ 5. **Mention the worker gate.** If the workflow that uses this task type isn't registered yet, remind the user to register both the workflow and the task definition (`conductor taskDef create taskdef.json`) so the runtime knows about it.
18
+
19
+ If the user has a workflow JSON file or registered workflow handy, also offer to verify the task type appears as a SIMPLE task there.
@@ -0,0 +1,15 @@
1
+ ---
2
+ description: First-time Conductor setup — install the CLI, choose a server, configure auth
3
+ ---
4
+
5
+ Walk the user through Conductor first-time setup using [skills/conductor/references/setup.md](../skills/conductor/references/setup.md). Steps 1–4 in order.
6
+
7
+ Don't skip checks. Specifically:
8
+
9
+ - Run `conductor --version` first; if missing, prefer `npx @conductor-oss/conductor-cli` over global install.
10
+ - **Confirm with the user before** running `npm install -g @conductor-oss/conductor-cli` — it's a system-modifying action.
11
+ - Ask the user whether they want a local server (Option A) or to point at an existing one (Option B); don't assume.
12
+ - Only ask for credentials *after* `conductor workflow list` returns 401/403 — many servers don't need auth.
13
+ - Never echo auth tokens, keys, or secrets in output.
14
+
15
+ End with `conductor workflow list` to confirm connectivity, and report the result.
@@ -0,0 +1,15 @@
1
+ ---
2
+ description: Conductor command menu — pick a structured action or describe what you want
3
+ ---
4
+
5
+ The user invoked `/conductor` without a sub-action. Show the three structured subcommands and ask what they want to do.
6
+
7
+ **Structured commands** (each is a guided procedure):
8
+
9
+ - `/conductor-setup` — first-time setup: install the CLI, point at a server, configure auth.
10
+ - `/conductor-optimize` — review an existing workflow against the optimization checklist and report findings (CRITICAL / WARN / INFO).
11
+ - `/conductor-scaffold-worker` — generate a worker stub for a SIMPLE task.
12
+
13
+ For everything else (run, status, schedule, retry, signal, visualize, create, modify), the user can just describe it in plain English — the `conductor` skill ([SKILL.md](../skills/conductor/SKILL.md)) handles it.
14
+
15
+ After listing the three subcommands, ask: **"What would you like to do?"** and proceed based on their answer.