@conductor-oss/conductor-skills 1.4.2 → 1.4.3

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.
@@ -12,7 +12,7 @@
12
12
  "name": "conductor",
13
13
  "source": "./",
14
14
  "description": "Create, run, monitor, and manage Conductor workflows and tasks",
15
- "version": "1.4.2",
15
+ "version": "1.4.3",
16
16
  "category": "devops",
17
17
  "tags": ["conductor", "workflow", "orchestration", "microservices"]
18
18
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "conductor",
3
3
  "description": "Create, run, monitor, and manage Conductor workflows and tasks",
4
- "version": "1.4.2",
4
+ "version": "1.4.3",
5
5
  "author": {
6
6
  "name": "Conductor OSS",
7
7
  "email": "conductor-oss@users.noreply.github.com"
package/VERSION CHANGED
@@ -1 +1 @@
1
- 1.4.2
1
+ 1.4.3
package/install.ps1 CHANGED
@@ -18,11 +18,10 @@ param(
18
18
 
19
19
  $ErrorActionPreference = "Stop"
20
20
 
21
- $SCRIPT_VERSION = "1.4.2"
22
- # Per-file fetches are pinned to this version's tag (see install.sh notes).
23
- # main is only used for the "is there a newer release?" check.
24
- $REPO_BASE = "https://raw.githubusercontent.com/conductor-oss/conductor-skills/v$SCRIPT_VERSION"
25
- $REPO_MAIN = "https://raw.githubusercontent.com/conductor-oss/conductor-skills/main"
21
+ $SCRIPT_VERSION = "1.4.3"
22
+ # Per-file fetches and the upgrade-check both read from `main`. Releases are
23
+ # rolled by bumping VERSION on main, not by tagging.
24
+ $REPO_BASE = "https://raw.githubusercontent.com/conductor-oss/conductor-skills/main"
26
25
 
27
26
  # When set, skip the network fetch and copy from this directory instead.
28
27
  # The npm package sets this so the bundled files are used.
@@ -185,7 +184,7 @@ function Fetch-RemoteVersion {
185
184
  return (Get-Content (Join-Path $LOCAL_DIR "VERSION") -Raw).Trim()
186
185
  }
187
186
  try {
188
- $ver = (Invoke-WebRequest -Uri "$REPO_MAIN/VERSION" -UseBasicParsing -ErrorAction Stop).Content.Trim()
187
+ $ver = (Invoke-WebRequest -Uri "$REPO_BASE/VERSION" -UseBasicParsing -ErrorAction Stop).Content.Trim()
189
188
  return $ver
190
189
  } catch { return "" }
191
190
  }
@@ -355,10 +354,11 @@ function Install-ToFile {
355
354
  if ($Prefix) {
356
355
  $tmpFile = [System.IO.Path]::GetTempFileName()
357
356
  ($Prefix + (Get-Content $Assembled -Raw)) | Set-Content -Path $tmpFile -NoNewline
358
- Safe-Write -Target $Target -Source $tmpFile -ForceWrite $ForceWrite
357
+ $result = Safe-Write -Target $Target -Source $tmpFile -ForceWrite $ForceWrite
359
358
  Remove-Item $tmpFile -ErrorAction SilentlyContinue
359
+ return $result
360
360
  } else {
361
- Safe-Write -Target $Target -Source $Assembled -ForceWrite $ForceWrite
361
+ return Safe-Write -Target $Target -Source $Assembled -ForceWrite $ForceWrite
362
362
  }
363
363
  }
364
364
 
@@ -410,29 +410,33 @@ function Install-ForAgent {
410
410
  $installDir = $env:USERPROFILE
411
411
  if ($AgentName -eq "aider") {
412
412
  Install-AiderToDir -SkillDir (Join-Path $installDir ".conductor-skills") -TmpDir $TmpDir -Config (Join-Path $installDir ".aider.conf.yml") -ReadPrefix "$installDir/.conductor-skills/"
413
+ return $true
413
414
  } else {
414
415
  $targetPath = Get-GlobalPath -AgentName $AgentName
415
- Install-ToFile -Target $targetPath -Assembled $Assembled -ForceWrite $ForceWrite
416
+ return Install-ToFile -Target $targetPath -Assembled $Assembled -ForceWrite $ForceWrite
416
417
  }
417
418
  } else {
418
419
  switch ($AgentName) {
419
- "codex" { Install-ToFile -Target (Join-Path $ProjDir "AGENTS.md") -Assembled $Assembled -ForceWrite $ForceWrite }
420
- "gemini" { Install-ToFile -Target (Join-Path $ProjDir "GEMINI.md") -Assembled $Assembled -ForceWrite $ForceWrite }
420
+ "codex" { return Install-ToFile -Target (Join-Path $ProjDir "AGENTS.md") -Assembled $Assembled -ForceWrite $ForceWrite }
421
+ "gemini" { return Install-ToFile -Target (Join-Path $ProjDir "GEMINI.md") -Assembled $Assembled -ForceWrite $ForceWrite }
421
422
  "cursor" {
422
423
  $frontmatter = "---`ndescription: Conductor workflow orchestration - create, run, monitor, and manage workflows`nglobs: `"**/*`"`nalwaysApply: true`n---`n`n"
423
- Install-ToFile -Target (Join-Path $ProjDir ".cursor\rules\conductor.mdc") -Assembled $Assembled -ForceWrite $ForceWrite -Prefix $frontmatter
424
+ return Install-ToFile -Target (Join-Path $ProjDir ".cursor\rules\conductor.mdc") -Assembled $Assembled -ForceWrite $ForceWrite -Prefix $frontmatter
424
425
  }
425
- "windsurf" { Install-ToFile -Target (Join-Path $ProjDir ".windsurfrules") -Assembled $Assembled -ForceWrite $ForceWrite }
426
- "cline" { Install-ToFile -Target (Join-Path $ProjDir ".clinerules") -Assembled $Assembled -ForceWrite $ForceWrite }
427
- "aider" { Install-AiderToDir -SkillDir (Join-Path $ProjDir ".conductor-skills") -TmpDir $TmpDir -Config (Join-Path $ProjDir ".aider.conf.yml") -ReadPrefix ".conductor-skills/" }
428
- "copilot" { Install-ToFile -Target (Join-Path $ProjDir ".github\copilot-instructions.md") -Assembled $Assembled -ForceWrite $ForceWrite }
429
- "amazonq" { Install-ToFile -Target (Join-Path $ProjDir ".amazonq\rules\conductor.md") -Assembled $Assembled -ForceWrite $ForceWrite }
430
- "opencode" { Install-ToFile -Target (Join-Path $ProjDir "AGENTS.md") -Assembled $Assembled -ForceWrite $ForceWrite }
431
- "roo" { Install-ToFile -Target (Join-Path $ProjDir ".roo\rules\conductor.md") -Assembled $Assembled -ForceWrite $ForceWrite }
432
- "amp" { Install-ToFile -Target (Join-Path $ProjDir ".amp\instructions.md") -Assembled $Assembled -ForceWrite $ForceWrite }
426
+ "windsurf" { return Install-ToFile -Target (Join-Path $ProjDir ".windsurfrules") -Assembled $Assembled -ForceWrite $ForceWrite }
427
+ "cline" { return Install-ToFile -Target (Join-Path $ProjDir ".clinerules") -Assembled $Assembled -ForceWrite $ForceWrite }
428
+ "aider" {
429
+ Install-AiderToDir -SkillDir (Join-Path $ProjDir ".conductor-skills") -TmpDir $TmpDir -Config (Join-Path $ProjDir ".aider.conf.yml") -ReadPrefix ".conductor-skills/"
430
+ return $true
431
+ }
432
+ "copilot" { return Install-ToFile -Target (Join-Path $ProjDir ".github\copilot-instructions.md") -Assembled $Assembled -ForceWrite $ForceWrite }
433
+ "amazonq" { return Install-ToFile -Target (Join-Path $ProjDir ".amazonq\rules\conductor.md") -Assembled $Assembled -ForceWrite $ForceWrite }
434
+ "opencode" { return Install-ToFile -Target (Join-Path $ProjDir "AGENTS.md") -Assembled $Assembled -ForceWrite $ForceWrite }
435
+ "roo" { return Install-ToFile -Target (Join-Path $ProjDir ".roo\rules\conductor.md") -Assembled $Assembled -ForceWrite $ForceWrite }
436
+ "amp" { return Install-ToFile -Target (Join-Path $ProjDir ".amp\instructions.md") -Assembled $Assembled -ForceWrite $ForceWrite }
433
437
  }
434
438
  }
435
- return $true
439
+ return $false
436
440
  }
437
441
 
438
442
  # ─────────────────────────────────────────────────────────────────────────────
@@ -638,9 +642,9 @@ try {
638
642
  continue
639
643
  }
640
644
 
641
- # Idempotency check
645
+ # Idempotency check. -Force re-installs; -Upgrade does not (matches -Check).
642
646
  $installedVer = Read-ManifestVersion -ManifestPath $manifest -AgentName $a
643
- if ($installedVer -and ($installedVer -eq $targetVersion) -and !$Force -and !$Upgrade) {
647
+ if ($installedVer -and ($installedVer -eq $targetVersion) -and !$Force) {
644
648
  Write-Ok "$a already at v$installedVer, skipping."
645
649
  $skippedCount++
646
650
  continue
@@ -652,8 +656,13 @@ try {
652
656
  Write-Info "Installing for $a ..."
653
657
  }
654
658
 
659
+ # -Upgrade implies force-overwrite at write-time so the upgrade flow
660
+ # doesn't strand on a Read-Host prompt under non-interactive shells.
661
+ $installForce = [bool]$Force
662
+ if ($Upgrade) { $installForce = $true }
663
+
655
664
  # Perform install
656
- $result = Install-ForAgent -AgentName $a -ProjDir $ProjectDir -IsGlobal $useGlobal -ForceWrite $Force -TmpDir $tmpDir -Assembled $assembled
665
+ $result = Install-ForAgent -AgentName $a -ProjDir $ProjectDir -IsGlobal $useGlobal -ForceWrite $installForce -TmpDir $tmpDir -Assembled $assembled
657
666
  if ($result -ne $false) {
658
667
  $targetPath = if ($useGlobal) { Get-GlobalPath -AgentName $a } else { Get-TargetPath -AgentName $a -ProjDir $ProjectDir }
659
668
  $mode = if ($useGlobal) { "global" } else { "project" }
package/install.sh CHANGED
@@ -7,14 +7,11 @@ set -euo pipefail
7
7
  # https://github.com/conductor-oss/conductor-skills
8
8
  # ─────────────────────────────────────────────────────────────────────────────
9
9
 
10
- VERSION="1.4.2"
11
- # Per-file fetches are pinned to this version's tag so the installer and the
12
- # files it pulls always come from the same release. Pages can serve a cached
13
- # install.sh older than `main`; pinning prevents schema drift.
14
- # `main` is only used for fetch_remote_version (the "is there a newer release?"
15
- # check), never for file content.
16
- REPO_BASE="https://raw.githubusercontent.com/conductor-oss/conductor-skills/v${VERSION}"
17
- REPO_MAIN="https://raw.githubusercontent.com/conductor-oss/conductor-skills/main"
10
+ VERSION="1.4.3"
11
+ # Per-file fetches and the upgrade-check both read from `main`. Releases are
12
+ # rolled by bumping VERSION on main, not by tagging the install scripts ride
13
+ # along with whatever main is serving.
14
+ REPO_BASE="https://raw.githubusercontent.com/conductor-oss/conductor-skills/main"
18
15
 
19
16
  # When set, skip the network fetch and copy from this directory instead.
20
17
  # The npm package sets this so the bundled files are used.
@@ -268,7 +265,7 @@ fetch_remote_version() {
268
265
  return
269
266
  fi
270
267
  local remote_ver
271
- remote_ver=$(curl -sSfL "$REPO_MAIN/VERSION" 2>/dev/null | tr -d '[:space:]') || true
268
+ remote_ver=$(curl -sSfL "$REPO_BASE/VERSION" 2>/dev/null | tr -d '[:space:]') || true
272
269
  echo "$remote_ver"
273
270
  }
274
271
 
@@ -306,8 +303,15 @@ download_files() {
306
303
  dir=$(dirname "$file")
307
304
  mkdir -p "$tmp_dir/$dir"
308
305
  if ! curl -sSfL "$REPO_BASE/$file" -o "$tmp_dir/$file" 2>/dev/null; then
309
- error "Failed to download $file"
310
- error "Check your internet connection and try again."
306
+ local http_code
307
+ http_code=$(curl -sS -o /dev/null -w "%{http_code}" "$REPO_BASE/$file" 2>/dev/null || echo "?")
308
+ error "Failed to download $file (HTTP $http_code from $REPO_BASE)"
309
+ if [ "$http_code" = "404" ]; then
310
+ error "File is missing upstream — likely a release packaging bug."
311
+ error "Please report: https://github.com/conductor-oss/conductor-skills/issues"
312
+ else
313
+ error "Check your internet connection and try again."
314
+ fi
311
315
  # tmp_dir cleanup handled by EXIT trap
312
316
  exit 1
313
317
  fi
@@ -451,8 +455,10 @@ install_to_file() {
451
455
  echo "$prefix"
452
456
  cat "$assembled"
453
457
  } > "$tmp_with_prefix"
454
- safe_write "$target" "$tmp_with_prefix" "$force"
458
+ local rv=0
459
+ safe_write "$target" "$tmp_with_prefix" "$force" || rv=$?
455
460
  rm -f "$tmp_with_prefix"
461
+ return $rv
456
462
  else
457
463
  safe_write "$target" "$assembled" "$force"
458
464
  fi
@@ -809,10 +815,11 @@ main() {
809
815
  continue
810
816
  fi
811
817
 
812
- # Idempotency check
818
+ # Idempotency check. --force re-installs anyway; --upgrade does not (matches
819
+ # --check semantics: "already at latest" should be a no-op).
813
820
  local installed_ver
814
821
  installed_ver=$(read_manifest_version "$manifest" "$a")
815
- if [ -n "$installed_ver" ] && [ "$installed_ver" = "$target_version" ] && [ "$force" != "true" ] && [ "$upgrade" != "true" ]; then
822
+ if [ -n "$installed_ver" ] && [ "$installed_ver" = "$target_version" ] && [ "$force" != "true" ]; then
816
823
  ok "${a} already at v${installed_ver}, skipping."
817
824
  skipped_count=$((skipped_count + 1))
818
825
  continue
@@ -824,8 +831,14 @@ main() {
824
831
  info "Installing for ${BOLD}${a}${NC} ..."
825
832
  fi
826
833
 
834
+ # --upgrade implies force-overwrite at write-time (no `read -r` prompt,
835
+ # which breaks under `curl | bash`). The idempotency check above already
836
+ # gates whether we even reach this point.
837
+ local install_force="$force"
838
+ [ "$upgrade" = "true" ] && install_force="true"
839
+
827
840
  # Perform install
828
- if install_for_agent "$a" "$project_dir" "$use_global" "$force" "$tmp_dir" "$assembled"; then
841
+ if install_for_agent "$a" "$project_dir" "$use_global" "$install_force" "$tmp_dir" "$assembled"; then
829
842
  # Determine target path for manifest
830
843
  local target_path
831
844
  if [ "$use_global" = "true" ]; then
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@conductor-oss/conductor-skills",
3
- "version": "1.4.2",
3
+ "version": "1.4.3",
4
4
  "description": "Conductor workflow orchestration skill for AI coding agents — Claude Code, Cursor, Codex, Gemini, Cline, Copilot, and more.",
5
5
  "bin": {
6
6
  "conductor-skills": "bin/conductor-skills.js"