[object Object]

← back to Cli Printing Press

fix(cli): sync module path with v4 release (#677)

4832173d18b9a20468f2180731f69b1870b4048b · 2026-05-07 08:14:33 -0700 · Trevin Chow

Files touched

Diff

commit 4832173d18b9a20468f2180731f69b1870b4048b
Author: Trevin Chow <trevin@trevinchow.com>
Date:   Thu May 7 08:14:33 2026 -0700

    fix(cli): sync module path with v4 release (#677)
---
 .goreleaser.yaml                                   |  2 +-
 README.md                                          |  4 ++--
 cmd/manifest-gen/main.go                           |  8 +++----
 cmd/printing-press/main.go                         |  2 +-
 ...26-04-26-001-docs-launch-readme-rewrite-plan.md |  2 +-
 go.mod                                             |  2 +-
 internal/authdoctor/classify.go                    |  4 ++--
 internal/authdoctor/classify_test.go               |  4 ++--
 internal/authdoctor/scan.go                        |  2 +-
 internal/authdoctor/scan_test.go                   |  2 +-
 internal/browsersniff/analysis.go                  |  4 ++--
 internal/browsersniff/analysis_test.go             |  2 +-
 internal/browsersniff/fixtures.go                  |  2 +-
 internal/browsersniff/reachability.go              |  2 +-
 internal/browsersniff/schema.go                    |  2 +-
 internal/browsersniff/schema_test.go               |  2 +-
 internal/browsersniff/specgen.go                   |  4 ++--
 internal/browsersniff/specgen_test.go              |  2 +-
 internal/catalog/catalog.go                        |  2 +-
 internal/catalog/catalog_test.go                   |  2 +-
 internal/cli/auth_doctor_cmd.go                    |  2 +-
 internal/cli/browser_sniff.go                      |  4 ++--
 internal/cli/browser_sniff_test.go                 |  4 ++--
 internal/cli/bundle.go                             |  2 +-
 internal/cli/bundle_test.go                        |  2 +-
 internal/cli/catalog.go                            |  4 ++--
 internal/cli/catalog_test.go                       |  2 +-
 internal/cli/crowd_sniff.go                        |  4 ++--
 internal/cli/crowd_sniff_test.go                   |  2 +-
 internal/cli/dogfood.go                            |  2 +-
 internal/cli/dogfood_test.go                       |  2 +-
 internal/cli/emboss.go                             |  4 ++--
 internal/cli/emboss_test.go                        |  2 +-
 internal/cli/exitcodes_pipeline_test.go            |  4 ++--
 internal/cli/generate_test.go                      |  6 ++---
 internal/cli/library.go                            |  4 ++--
 internal/cli/library_test.go                       |  2 +-
 internal/cli/lock.go                               |  2 +-
 internal/cli/lock_test.go                          |  2 +-
 internal/cli/mcp_sync.go                           |  2 +-
 internal/cli/patch_cmd.go                          |  2 +-
 internal/cli/polish.go                             |  2 +-
 internal/cli/probe_reachability.go                 |  2 +-
 internal/cli/public_param_audit.go                 |  8 +++----
 internal/cli/public_param_audit_test.go            |  2 +-
 internal/cli/publish.go                            |  6 ++---
 internal/cli/publish_resolve_test.go               |  2 +-
 internal/cli/publish_test.go                       |  6 ++---
 internal/cli/regen_merge.go                        |  2 +-
 internal/cli/release_test.go                       |  4 ++--
 internal/cli/root.go                               | 28 +++++++++++-----------
 internal/cli/scorecard.go                          |  2 +-
 internal/cli/scorecard_test.go                     |  2 +-
 internal/cli/tools_audit.go                        |  2 +-
 internal/cli/tools_audit_test.go                   |  2 +-
 internal/cli/validate_narrative.go                 |  2 +-
 internal/cli/verify.go                             |  4 ++--
 internal/cli/verify_skill.go                       |  4 ++--
 internal/cli/verify_skill_test.go                  |  2 +-
 internal/cli/vision.go                             |  4 ++--
 internal/cli/vision_test.go                        |  2 +-
 internal/cli/workflow_verify.go                    |  2 +-
 internal/crowdsniff/specgen.go                     |  4 ++--
 internal/crowdsniff/specgen_test.go                |  4 ++--
 internal/discovery/naming.go                       |  2 +-
 internal/docspec/docspec.go                        |  4 ++--
 internal/generator/async_detect.go                 |  2 +-
 internal/generator/async_detect_test.go            |  2 +-
 internal/generator/auth_env_precedence_test.go     |  2 +-
 internal/generator/auth_optional_test.go           |  2 +-
 internal/generator/body_collision_test.go          |  2 +-
 internal/generator/body_map_test.go                |  2 +-
 internal/generator/client_invalidate_cache_test.go |  4 ++--
 internal/generator/cost_throttling_test.go         |  6 ++---
 internal/generator/cursor_param_test.go            |  2 +-
 internal/generator/endpoint_is_write_test.go       |  2 +-
 internal/generator/entity_mapper.go                |  4 ++--
 internal/generator/enum_validation_test.go         |  2 +-
 internal/generator/example_value_test.go           |  2 +-
 internal/generator/first_command_example.go        |  4 ++--
 internal/generator/first_command_example_test.go   |  2 +-
 internal/generator/flag_collision.go               |  2 +-
 internal/generator/flag_collision_test.go          |  2 +-
 internal/generator/freshness_paths_test.go         |  4 ++--
 internal/generator/generator.go                    | 10 ++++----
 internal/generator/generator_test.go               | 10 ++++----
 internal/generator/install_section_test.go         |  2 +-
 internal/generator/json_string_validation_test.go  |  2 +-
 internal/generator/limit_truncation_test.go        |  2 +-
 internal/generator/mcp_warning.go                  |  2 +-
 internal/generator/mcp_warning_test.go             |  2 +-
 internal/generator/plan_generate.go                |  2 +-
 internal/generator/plan_generate_test.go           |  2 +-
 internal/generator/promoted_poststore_test.go      |  4 ++--
 internal/generator/promoted_presence_check_test.go |  2 +-
 internal/generator/readme_test.go                  |  2 +-
 internal/generator/schema_builder.go               |  2 +-
 internal/generator/schema_builder_test.go          |  2 +-
 internal/generator/session_handshake_test.go       |  2 +-
 internal/generator/skill_promoted_paths_test.go    |  2 +-
 internal/generator/skill_test.go                   |  2 +-
 internal/generator/templates_test.go               |  2 +-
 internal/generator/tier_routing_test.go            |  2 +-
 internal/generator/types_keyword_test.go           |  2 +-
 internal/generator/validate.go                     |  4 ++--
 internal/generator/vision_templates.go             |  4 ++--
 internal/graphql/parser.go                         |  4 ++--
 internal/graphql/parser_test.go                    |  2 +-
 internal/llmpolish/polish.go                       |  2 +-
 internal/llmpolish/vision.go                       |  6 ++---
 internal/llmpolish/vision_test.go                  |  4 ++--
 internal/mcpdesc/compose.go                        |  4 ++--
 internal/mcpdesc/compose_test.go                   |  2 +-
 internal/mcpdesc/params.go                         |  4 ++--
 internal/mcpdesc/params_test.go                    |  4 ++--
 internal/mcpoverrides/overrides.go                 |  4 ++--
 internal/mcpoverrides/overrides_test.go            |  2 +-
 internal/narrativecheck/narrativecheck.go          |  2 +-
 internal/openapi/detect.go                         |  2 +-
 internal/openapi/parser.go                         |  4 ++--
 internal/openapi/parser_test.go                    |  6 ++---
 internal/patch/dropins.go                          |  2 +-
 internal/pipeline/climanifest.go                   | 12 +++++-----
 internal/pipeline/climanifest_test.go              |  4 ++--
 internal/pipeline/contracts_test.go                |  8 +++----
 internal/pipeline/dogfood.go                       |  6 ++---
 internal/pipeline/fullrun.go                       |  6 ++---
 internal/pipeline/fullrun_test.go                  |  2 +-
 internal/pipeline/live_check.go                    |  2 +-
 internal/pipeline/lock.go                          |  2 +-
 internal/pipeline/mcp_scoring.go                   |  2 +-
 internal/pipeline/mcp_size.go                      |  2 +-
 internal/pipeline/mcpb_manifest.go                 |  6 ++---
 internal/pipeline/mcpsync/sync.go                  | 14 +++++------
 internal/pipeline/mcpsync/sync_test.go             |  6 ++---
 internal/pipeline/merge.go                         |  2 +-
 internal/pipeline/merge_test.go                    |  2 +-
 internal/pipeline/paths.go                         |  2 +-
 internal/pipeline/public_param_audit.go            |  2 +-
 internal/pipeline/public_param_audit_test.go       |  2 +-
 internal/pipeline/publish.go                       | 14 +++++------
 internal/pipeline/publish_test.go                  |  2 +-
 internal/pipeline/regenmerge/apply.go              |  2 +-
 internal/pipeline/regenmerge/apply_test.go         |  2 +-
 internal/pipeline/renamecli.go                     |  2 +-
 internal/pipeline/renamecli_test.go                |  2 +-
 internal/pipeline/research.go                      |  6 ++---
 internal/pipeline/runtime.go                       |  6 ++---
 internal/pipeline/runtime_commands.go              |  2 +-
 internal/pipeline/runtime_exec.go                  |  2 +-
 internal/pipeline/runtime_structural.go            |  2 +-
 internal/pipeline/runtime_test.go                  |  2 +-
 internal/pipeline/scorecard.go                     |  4 ++--
 internal/pipeline/spec_detect.go                   |  2 +-
 internal/pipeline/state.go                         |  2 +-
 internal/pipeline/toolsmanifest.go                 |  8 +++----
 internal/pipeline/toolsmanifest_test.go            |  4 ++--
 internal/pipeline/verify.go                        |  2 +-
 internal/profiler/profiler.go                      |  4 ++--
 internal/profiler/profiler_test.go                 |  2 +-
 internal/reachability/probe.go                     |  2 +-
 internal/spec/reserved_drift_test.go               |  4 ++--
 internal/spec/spec.go                              |  2 +-
 skills/printing-press-catalog/SKILL.md             |  6 ++---
 skills/printing-press-publish/SKILL.md             |  4 ++--
 skills/printing-press-score/SKILL.md               |  8 +++----
 skills/printing-press/SKILL.md                     |  6 ++---
 skills/printing-press/references/setup-checks.md   |  4 ++--
 168 files changed, 289 insertions(+), 289 deletions(-)

diff --git a/.goreleaser.yaml b/.goreleaser.yaml
index b3b48d7f..1bdea985 100644
--- a/.goreleaser.yaml
+++ b/.goreleaser.yaml
@@ -16,7 +16,7 @@ builds:
     flags:
       - -trimpath
     ldflags:
-      - -s -w -X github.com/mvanhorn/cli-printing-press/v3/internal/version.Version={{.Version}}
+      - -s -w -X github.com/mvanhorn/cli-printing-press/v4/internal/version.Version={{.Version}}
     mod_timestamp: "{{ .CommitTimestamp }}"
 
 archives:
diff --git a/README.md b/README.md
index effe12ea..1b64da6f 100644
--- a/README.md
+++ b/README.md
@@ -29,7 +29,7 @@ The binary alone works (research, generation, verification, scoring) but skips t
 ### 1. Install the binary
 
 ```bash
-go install github.com/mvanhorn/cli-printing-press/v3/cmd/printing-press@latest
+go install github.com/mvanhorn/cli-printing-press/v4/cmd/printing-press@latest
 ```
 
 Verify with `printing-press --version`. If `go install` fails with `410 Gone` or an auth error, see [Troubleshooting](#troubleshooting).
@@ -466,7 +466,7 @@ Each published CLI ships a research manuscript, verification proofs, and a `.pri
 **`go install` returns `410 Gone` or an auth error.** The repo is currently private. Set `GOPRIVATE` so Go fetches directly from GitHub instead of the public module proxy, and ensure you have GitHub access (SSH key or `gh auth login`):
 
 ```bash
-GOPRIVATE=github.com/mvanhorn/* go install github.com/mvanhorn/cli-printing-press/v3/cmd/printing-press@latest
+GOPRIVATE=github.com/mvanhorn/* go install github.com/mvanhorn/cli-printing-press/v4/cmd/printing-press@latest
 ```
 
 After the public launch, the plain command works for everyone.
diff --git a/cmd/manifest-gen/main.go b/cmd/manifest-gen/main.go
index 8e518414..1c2c7ddb 100644
--- a/cmd/manifest-gen/main.go
+++ b/cmd/manifest-gen/main.go
@@ -22,10 +22,10 @@ import (
 	"path/filepath"
 	"strings"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/graphql"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/openapi"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/pipeline"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/graphql"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/openapi"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/pipeline"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 )
 
 func main() {
diff --git a/cmd/printing-press/main.go b/cmd/printing-press/main.go
index ee5583c0..2773fecc 100644
--- a/cmd/printing-press/main.go
+++ b/cmd/printing-press/main.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"os"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/cli"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/cli"
 )
 
 func main() {
diff --git a/docs/plans/2026-04-26-001-docs-launch-readme-rewrite-plan.md b/docs/plans/2026-04-26-001-docs-launch-readme-rewrite-plan.md
index f7daa796..8f45090e 100644
--- a/docs/plans/2026-04-26-001-docs-launch-readme-rewrite-plan.md
+++ b/docs/plans/2026-04-26-001-docs-launch-readme-rewrite-plan.md
@@ -403,7 +403,7 @@ Browse the full catalog of printed CLIs at [printingpress.dev](https://printingp
 Install the binary, then add the Claude Code plugin. Both fit in one paste.
 
 ```bash
-go install github.com/mvanhorn/cli-printing-press/v3/cmd/printing-press@latest
+go install github.com/mvanhorn/cli-printing-press/v4/cmd/printing-press@latest
 ```
 
 ```text
diff --git a/go.mod b/go.mod
index 59cbd27c..ac886e31 100644
--- a/go.mod
+++ b/go.mod
@@ -1,4 +1,4 @@
-module github.com/mvanhorn/cli-printing-press/v3
+module github.com/mvanhorn/cli-printing-press/v4
 
 go 1.26.1
 
diff --git a/internal/authdoctor/classify.go b/internal/authdoctor/classify.go
index 0d80a99f..3ab89e2f 100644
--- a/internal/authdoctor/classify.go
+++ b/internal/authdoctor/classify.go
@@ -7,8 +7,8 @@ import (
 	"sort"
 	"strings"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/pipeline"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/pipeline"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 )
 
 // minLengthByType gives the minimum expected length of a well-formed
diff --git a/internal/authdoctor/classify_test.go b/internal/authdoctor/classify_test.go
index 6120613b..d40bb89b 100644
--- a/internal/authdoctor/classify_test.go
+++ b/internal/authdoctor/classify_test.go
@@ -5,8 +5,8 @@ import (
 	"path/filepath"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/pipeline"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/pipeline"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 )
 
 func envFrom(m map[string]string) getEnv {
diff --git a/internal/authdoctor/scan.go b/internal/authdoctor/scan.go
index 58d598ce..8eed256e 100644
--- a/internal/authdoctor/scan.go
+++ b/internal/authdoctor/scan.go
@@ -15,7 +15,7 @@ import (
 	"path/filepath"
 	"sort"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/pipeline"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/pipeline"
 )
 
 // Scan inspects every installed printed CLI under the published library
diff --git a/internal/authdoctor/scan_test.go b/internal/authdoctor/scan_test.go
index 306e0b0a..0b47b352 100644
--- a/internal/authdoctor/scan_test.go
+++ b/internal/authdoctor/scan_test.go
@@ -6,7 +6,7 @@ import (
 	"path/filepath"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/pipeline"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/pipeline"
 )
 
 func writeManifest(t *testing.T, dir string, m pipeline.ToolsManifest) {
diff --git a/internal/browsersniff/analysis.go b/internal/browsersniff/analysis.go
index 22c3bed2..8e288039 100644
--- a/internal/browsersniff/analysis.go
+++ b/internal/browsersniff/analysis.go
@@ -10,8 +10,8 @@ import (
 	"strings"
 	"time"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/discovery"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/discovery"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 )
 
 const trafficAnalysisVersion = "1"
diff --git a/internal/browsersniff/analysis_test.go b/internal/browsersniff/analysis_test.go
index e41432f0..9408a2cc 100644
--- a/internal/browsersniff/analysis_test.go
+++ b/internal/browsersniff/analysis_test.go
@@ -7,7 +7,7 @@ import (
 	"strings"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/browsersniff/fixtures.go b/internal/browsersniff/fixtures.go
index b0800d4b..c5306995 100644
--- a/internal/browsersniff/fixtures.go
+++ b/internal/browsersniff/fixtures.go
@@ -6,7 +6,7 @@ import (
 	"sort"
 	"strings"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/discovery"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/discovery"
 )
 
 type TestFixture struct {
diff --git a/internal/browsersniff/reachability.go b/internal/browsersniff/reachability.go
index e1f2daee..0509a5fc 100644
--- a/internal/browsersniff/reachability.go
+++ b/internal/browsersniff/reachability.go
@@ -5,7 +5,7 @@ import (
 	"sort"
 	"strings"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 )
 
 func ApplyReachabilityDefaults(apiSpec *spec.APISpec, analysis *TrafficAnalysis) {
diff --git a/internal/browsersniff/schema.go b/internal/browsersniff/schema.go
index 1a66f7ba..72320486 100644
--- a/internal/browsersniff/schema.go
+++ b/internal/browsersniff/schema.go
@@ -10,7 +10,7 @@ import (
 	"strings"
 	"time"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 )
 
 const maxSchemaDepth = 3
diff --git a/internal/browsersniff/schema_test.go b/internal/browsersniff/schema_test.go
index 26079b92..979a5a8f 100644
--- a/internal/browsersniff/schema_test.go
+++ b/internal/browsersniff/schema_test.go
@@ -3,7 +3,7 @@ package browsersniff
 import (
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/assert"
 )
 
diff --git a/internal/browsersniff/specgen.go b/internal/browsersniff/specgen.go
index 337188d1..ca446ecf 100644
--- a/internal/browsersniff/specgen.go
+++ b/internal/browsersniff/specgen.go
@@ -10,8 +10,8 @@ import (
 	"strings"
 	"unicode"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/discovery"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/discovery"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"gopkg.in/yaml.v3"
 )
 
diff --git a/internal/browsersniff/specgen_test.go b/internal/browsersniff/specgen_test.go
index 77e07a03..20950e13 100644
--- a/internal/browsersniff/specgen_test.go
+++ b/internal/browsersniff/specgen_test.go
@@ -5,7 +5,7 @@ import (
 	"path/filepath"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/catalog/catalog.go b/internal/catalog/catalog.go
index a6b98625..85494bfa 100644
--- a/internal/catalog/catalog.go
+++ b/internal/catalog/catalog.go
@@ -9,7 +9,7 @@ import (
 	"sort"
 	"strings"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"gopkg.in/yaml.v3"
 )
 
diff --git a/internal/catalog/catalog_test.go b/internal/catalog/catalog_test.go
index 5168879a..a9b33a53 100644
--- a/internal/catalog/catalog_test.go
+++ b/internal/catalog/catalog_test.go
@@ -4,7 +4,7 @@ import (
 	"testing"
 	"testing/fstest"
 
-	catalogfs "github.com/mvanhorn/cli-printing-press/v3/catalog"
+	catalogfs "github.com/mvanhorn/cli-printing-press/v4/catalog"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/cli/auth_doctor_cmd.go b/internal/cli/auth_doctor_cmd.go
index de34cdce..f85d2801 100644
--- a/internal/cli/auth_doctor_cmd.go
+++ b/internal/cli/auth_doctor_cmd.go
@@ -3,7 +3,7 @@ package cli
 import (
 	"fmt"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/authdoctor"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/authdoctor"
 	"github.com/spf13/cobra"
 )
 
diff --git a/internal/cli/browser_sniff.go b/internal/cli/browser_sniff.go
index 348ee7d6..1b762b11 100644
--- a/internal/cli/browser_sniff.go
+++ b/internal/cli/browser_sniff.go
@@ -8,8 +8,8 @@ import (
 	"path/filepath"
 	"strings"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/browsersniff"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/browsersniff"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/spf13/cobra"
 )
 
diff --git a/internal/cli/browser_sniff_test.go b/internal/cli/browser_sniff_test.go
index e9e33040..d6ac55a3 100644
--- a/internal/cli/browser_sniff_test.go
+++ b/internal/cli/browser_sniff_test.go
@@ -7,8 +7,8 @@ import (
 	"strings"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/browsersniff"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/browsersniff"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/spf13/cobra"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
diff --git a/internal/cli/bundle.go b/internal/cli/bundle.go
index c0388675..8653efe4 100644
--- a/internal/cli/bundle.go
+++ b/internal/cli/bundle.go
@@ -10,7 +10,7 @@ import (
 	"runtime"
 	"strings"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/pipeline"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/pipeline"
 	"github.com/spf13/cobra"
 	"golang.org/x/sync/errgroup"
 )
diff --git a/internal/cli/bundle_test.go b/internal/cli/bundle_test.go
index a410a3a1..64464ecc 100644
--- a/internal/cli/bundle_test.go
+++ b/internal/cli/bundle_test.go
@@ -9,7 +9,7 @@ import (
 	"strings"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/pipeline"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/pipeline"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/cli/catalog.go b/internal/cli/catalog.go
index 817ac132..89728df8 100644
--- a/internal/cli/catalog.go
+++ b/internal/cli/catalog.go
@@ -7,8 +7,8 @@ import (
 	"sort"
 	"strings"
 
-	catalogfs "github.com/mvanhorn/cli-printing-press/v3/catalog"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/catalog"
+	catalogfs "github.com/mvanhorn/cli-printing-press/v4/catalog"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/catalog"
 	"github.com/spf13/cobra"
 )
 
diff --git a/internal/cli/catalog_test.go b/internal/cli/catalog_test.go
index 71fb390b..8ad8b2ae 100644
--- a/internal/cli/catalog_test.go
+++ b/internal/cli/catalog_test.go
@@ -6,7 +6,7 @@ import (
 	"os"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/catalog"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/catalog"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/cli/crowd_sniff.go b/internal/cli/crowd_sniff.go
index 2a27a635..4c786b3d 100644
--- a/internal/cli/crowd_sniff.go
+++ b/internal/cli/crowd_sniff.go
@@ -11,8 +11,8 @@ import (
 	"strings"
 	"sync"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/browsersniff"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/crowdsniff"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/browsersniff"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/crowdsniff"
 	"github.com/spf13/cobra"
 	"golang.org/x/sync/errgroup"
 )
diff --git a/internal/cli/crowd_sniff_test.go b/internal/cli/crowd_sniff_test.go
index 03a66545..4ad7e4a1 100644
--- a/internal/cli/crowd_sniff_test.go
+++ b/internal/cli/crowd_sniff_test.go
@@ -9,7 +9,7 @@ import (
 	"path/filepath"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/crowdsniff"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/crowdsniff"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/cli/dogfood.go b/internal/cli/dogfood.go
index 0a38de88..ff470002 100644
--- a/internal/cli/dogfood.go
+++ b/internal/cli/dogfood.go
@@ -8,7 +8,7 @@ import (
 	"strings"
 	"time"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/pipeline"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/pipeline"
 	"github.com/spf13/cobra"
 )
 
diff --git a/internal/cli/dogfood_test.go b/internal/cli/dogfood_test.go
index 9e316435..96320db0 100644
--- a/internal/cli/dogfood_test.go
+++ b/internal/cli/dogfood_test.go
@@ -7,7 +7,7 @@ import (
 	"runtime"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/pipeline"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/pipeline"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/cli/emboss.go b/internal/cli/emboss.go
index 71fccdc7..75506447 100644
--- a/internal/cli/emboss.go
+++ b/internal/cli/emboss.go
@@ -8,8 +8,8 @@ import (
 	"strings"
 	"time"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/naming"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/pipeline"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/naming"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/pipeline"
 	"github.com/spf13/cobra"
 )
 
diff --git a/internal/cli/emboss_test.go b/internal/cli/emboss_test.go
index 5d54c677..9f414247 100644
--- a/internal/cli/emboss_test.go
+++ b/internal/cli/emboss_test.go
@@ -6,7 +6,7 @@ import (
 	"strings"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/pipeline"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/pipeline"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/cli/exitcodes_pipeline_test.go b/internal/cli/exitcodes_pipeline_test.go
index 2c3b2b21..248ecc5d 100644
--- a/internal/cli/exitcodes_pipeline_test.go
+++ b/internal/cli/exitcodes_pipeline_test.go
@@ -7,8 +7,8 @@ import (
 	"strings"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/cli"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/pipeline"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/cli"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/pipeline"
 )
 
 // TestPrintCmd_AlreadyExists_ExitCode verifies that the "already exists"
diff --git a/internal/cli/generate_test.go b/internal/cli/generate_test.go
index 9098be7f..2c6ee633 100644
--- a/internal/cli/generate_test.go
+++ b/internal/cli/generate_test.go
@@ -8,9 +8,9 @@ import (
 	"path/filepath"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/catalog"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/pipeline"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/catalog"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/pipeline"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/cli/library.go b/internal/cli/library.go
index ad6214b7..5c639bf2 100644
--- a/internal/cli/library.go
+++ b/internal/cli/library.go
@@ -9,8 +9,8 @@ import (
 	"strings"
 	"time"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/naming"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/pipeline"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/naming"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/pipeline"
 	"github.com/spf13/cobra"
 )
 
diff --git a/internal/cli/library_test.go b/internal/cli/library_test.go
index 0990d0e8..65d60fba 100644
--- a/internal/cli/library_test.go
+++ b/internal/cli/library_test.go
@@ -6,7 +6,7 @@ import (
 	"path/filepath"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/pipeline"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/pipeline"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/cli/lock.go b/internal/cli/lock.go
index 953e60c7..430039ca 100644
--- a/internal/cli/lock.go
+++ b/internal/cli/lock.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"os"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/pipeline"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/pipeline"
 	"github.com/spf13/cobra"
 )
 
diff --git a/internal/cli/lock_test.go b/internal/cli/lock_test.go
index bddb1867..c5266afe 100644
--- a/internal/cli/lock_test.go
+++ b/internal/cli/lock_test.go
@@ -7,7 +7,7 @@ import (
 	"path/filepath"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/pipeline"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/pipeline"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/cli/mcp_sync.go b/internal/cli/mcp_sync.go
index fa611a33..7301022c 100644
--- a/internal/cli/mcp_sync.go
+++ b/internal/cli/mcp_sync.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"path/filepath"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/pipeline/mcpsync"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/pipeline/mcpsync"
 	"github.com/spf13/cobra"
 )
 
diff --git a/internal/cli/patch_cmd.go b/internal/cli/patch_cmd.go
index 8f824f59..3c5e82d7 100644
--- a/internal/cli/patch_cmd.go
+++ b/internal/cli/patch_cmd.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"io"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/patch"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/patch"
 	"github.com/spf13/cobra"
 )
 
diff --git a/internal/cli/polish.go b/internal/cli/polish.go
index 8d16d6e7..5f48656b 100644
--- a/internal/cli/polish.go
+++ b/internal/cli/polish.go
@@ -6,7 +6,7 @@ import (
 	"os"
 	"path/filepath"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/pipeline"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/pipeline"
 	"github.com/spf13/cobra"
 )
 
diff --git a/internal/cli/probe_reachability.go b/internal/cli/probe_reachability.go
index f411ba2b..3ac07b9e 100644
--- a/internal/cli/probe_reachability.go
+++ b/internal/cli/probe_reachability.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"time"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/reachability"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/reachability"
 	"github.com/spf13/cobra"
 )
 
diff --git a/internal/cli/public_param_audit.go b/internal/cli/public_param_audit.go
index c809948f..5cb2cefc 100644
--- a/internal/cli/public_param_audit.go
+++ b/internal/cli/public_param_audit.go
@@ -6,10 +6,10 @@ import (
 	"os"
 	"strings"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/graphql"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/openapi"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/pipeline"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/graphql"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/openapi"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/pipeline"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/spf13/cobra"
 )
 
diff --git a/internal/cli/public_param_audit_test.go b/internal/cli/public_param_audit_test.go
index edf9a7cf..9a33ebc4 100644
--- a/internal/cli/public_param_audit_test.go
+++ b/internal/cli/public_param_audit_test.go
@@ -8,7 +8,7 @@ import (
 	"path/filepath"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/pipeline"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/pipeline"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/cli/publish.go b/internal/cli/publish.go
index c07442ab..18e671a4 100644
--- a/internal/cli/publish.go
+++ b/internal/cli/publish.go
@@ -11,9 +11,9 @@ import (
 	"strings"
 	"time"
 
-	catalogpkg "github.com/mvanhorn/cli-printing-press/v3/internal/catalog"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/naming"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/pipeline"
+	catalogpkg "github.com/mvanhorn/cli-printing-press/v4/internal/catalog"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/naming"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/pipeline"
 	"github.com/spf13/cobra"
 )
 
diff --git a/internal/cli/publish_resolve_test.go b/internal/cli/publish_resolve_test.go
index 302fb068..51744d69 100644
--- a/internal/cli/publish_resolve_test.go
+++ b/internal/cli/publish_resolve_test.go
@@ -5,7 +5,7 @@ import (
 	"path/filepath"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/pipeline"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/pipeline"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/cli/publish_test.go b/internal/cli/publish_test.go
index 248958a1..04c787a3 100644
--- a/internal/cli/publish_test.go
+++ b/internal/cli/publish_test.go
@@ -6,9 +6,9 @@ import (
 	"path/filepath"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/generator"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/naming"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/pipeline"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/generator"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/naming"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/pipeline"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/cli/regen_merge.go b/internal/cli/regen_merge.go
index 2d5e8a25..27cba81d 100644
--- a/internal/cli/regen_merge.go
+++ b/internal/cli/regen_merge.go
@@ -6,7 +6,7 @@ import (
 	"io"
 	"path/filepath"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/pipeline/regenmerge"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/pipeline/regenmerge"
 	"github.com/spf13/cobra"
 )
 
diff --git a/internal/cli/release_test.go b/internal/cli/release_test.go
index 4b6779dd..269b703b 100644
--- a/internal/cli/release_test.go
+++ b/internal/cli/release_test.go
@@ -9,7 +9,7 @@ import (
 	"strings"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/version"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/version"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 	"golang.org/x/mod/modfile"
@@ -39,7 +39,7 @@ func TestGoreleaserLdflagsTargetMatchesVersionVar(t *testing.T) {
 
 	ldflags := strings.Join(config.Builds[0].Ldflags, " ")
 	assert.Contains(t, ldflags,
-		"github.com/mvanhorn/cli-printing-press/v3/internal/version.Version",
+		"github.com/mvanhorn/cli-printing-press/v4/internal/version.Version",
 		"goreleaser ldflags must target internal/version.Version")
 }
 
diff --git a/internal/cli/root.go b/internal/cli/root.go
index 55eff172..4e38d79b 100644
--- a/internal/cli/root.go
+++ b/internal/cli/root.go
@@ -14,20 +14,20 @@ import (
 	"strings"
 	"time"
 
-	catalogfs "github.com/mvanhorn/cli-printing-press/v3/catalog"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/artifacts"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/browsersniff"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/catalog"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/docspec"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/generator"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/graphql"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/llm"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/llmpolish"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/naming"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/openapi"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/pipeline"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/version"
+	catalogfs "github.com/mvanhorn/cli-printing-press/v4/catalog"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/artifacts"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/browsersniff"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/catalog"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/docspec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/generator"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/graphql"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/llm"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/llmpolish"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/naming"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/openapi"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/pipeline"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/version"
 	"github.com/spf13/cobra"
 	"gopkg.in/yaml.v3"
 )
diff --git a/internal/cli/scorecard.go b/internal/cli/scorecard.go
index 1a46ef9b..f8d57756 100644
--- a/internal/cli/scorecard.go
+++ b/internal/cli/scorecard.go
@@ -8,7 +8,7 @@ import (
 	"strings"
 	"time"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/pipeline"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/pipeline"
 	"github.com/spf13/cobra"
 )
 
diff --git a/internal/cli/scorecard_test.go b/internal/cli/scorecard_test.go
index 9e121086..cb94bf18 100644
--- a/internal/cli/scorecard_test.go
+++ b/internal/cli/scorecard_test.go
@@ -6,7 +6,7 @@ import (
 	"strings"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/pipeline"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/pipeline"
 	"github.com/stretchr/testify/assert"
 )
 
diff --git a/internal/cli/tools_audit.go b/internal/cli/tools_audit.go
index dec9088d..a58f3fc2 100644
--- a/internal/cli/tools_audit.go
+++ b/internal/cli/tools_audit.go
@@ -13,7 +13,7 @@ import (
 	"strings"
 	"time"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/pipeline"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/pipeline"
 	"github.com/spf13/cobra"
 )
 
diff --git a/internal/cli/tools_audit_test.go b/internal/cli/tools_audit_test.go
index f56e7330..d440d5af 100644
--- a/internal/cli/tools_audit_test.go
+++ b/internal/cli/tools_audit_test.go
@@ -6,7 +6,7 @@ import (
 	"testing"
 	"time"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/pipeline"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/pipeline"
 )
 
 func TestRequiresPreDecisionFields(t *testing.T) {
diff --git a/internal/cli/validate_narrative.go b/internal/cli/validate_narrative.go
index a1f615bd..156bdd44 100644
--- a/internal/cli/validate_narrative.go
+++ b/internal/cli/validate_narrative.go
@@ -9,7 +9,7 @@ import (
 	"os"
 	"os/signal"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/narrativecheck"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/narrativecheck"
 	"github.com/spf13/cobra"
 )
 
diff --git a/internal/cli/verify.go b/internal/cli/verify.go
index f3462bef..ea185e90 100644
--- a/internal/cli/verify.go
+++ b/internal/cli/verify.go
@@ -6,8 +6,8 @@ import (
 	"os"
 	"path/filepath"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/artifacts"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/pipeline"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/artifacts"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/pipeline"
 	"github.com/spf13/cobra"
 )
 
diff --git a/internal/cli/verify_skill.go b/internal/cli/verify_skill.go
index a09282d6..d61d28f5 100644
--- a/internal/cli/verify_skill.go
+++ b/internal/cli/verify_skill.go
@@ -11,8 +11,8 @@ import (
 	"regexp"
 	"strings"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/generator"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/pipeline"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/generator"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/pipeline"
 	"github.com/spf13/cobra"
 )
 
diff --git a/internal/cli/verify_skill_test.go b/internal/cli/verify_skill_test.go
index c7abbd43..72bfe811 100644
--- a/internal/cli/verify_skill_test.go
+++ b/internal/cli/verify_skill_test.go
@@ -8,7 +8,7 @@ import (
 	"strings"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/generator"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/generator"
 	"github.com/stretchr/testify/require"
 )
 
diff --git a/internal/cli/vision.go b/internal/cli/vision.go
index 3678ac72..a1c7da5e 100644
--- a/internal/cli/vision.go
+++ b/internal/cli/vision.go
@@ -6,8 +6,8 @@ import (
 	"os"
 	"path/filepath"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/pipeline"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/vision"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/pipeline"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/vision"
 	"github.com/spf13/cobra"
 )
 
diff --git a/internal/cli/vision_test.go b/internal/cli/vision_test.go
index 9b9c3d0e..16bf85d1 100644
--- a/internal/cli/vision_test.go
+++ b/internal/cli/vision_test.go
@@ -4,7 +4,7 @@ import (
 	"path/filepath"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/pipeline"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/pipeline"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/cli/workflow_verify.go b/internal/cli/workflow_verify.go
index 6d8335e7..ae0672de 100644
--- a/internal/cli/workflow_verify.go
+++ b/internal/cli/workflow_verify.go
@@ -6,7 +6,7 @@ import (
 	"os"
 	"path/filepath"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/pipeline"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/pipeline"
 	"github.com/spf13/cobra"
 )
 
diff --git a/internal/crowdsniff/specgen.go b/internal/crowdsniff/specgen.go
index ed1b5bf2..a893edea 100644
--- a/internal/crowdsniff/specgen.go
+++ b/internal/crowdsniff/specgen.go
@@ -5,8 +5,8 @@ import (
 	"strconv"
 	"strings"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/discovery"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/discovery"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 )
 
 // BuildSpec assembles a valid spec.APISpec from aggregated endpoints.
diff --git a/internal/crowdsniff/specgen_test.go b/internal/crowdsniff/specgen_test.go
index d0689f19..bea2d67d 100644
--- a/internal/crowdsniff/specgen_test.go
+++ b/internal/crowdsniff/specgen_test.go
@@ -3,8 +3,8 @@ package crowdsniff
 import (
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/discovery"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/discovery"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/discovery/naming.go b/internal/discovery/naming.go
index ceace609..bf97b545 100644
--- a/internal/discovery/naming.go
+++ b/internal/discovery/naming.go
@@ -4,7 +4,7 @@ import (
 	"fmt"
 	"strings"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 )
 
 func ResourceKey(path string) (string, string) {
diff --git a/internal/docspec/docspec.go b/internal/docspec/docspec.go
index 6b9d79dc..cd1e84dd 100644
--- a/internal/docspec/docspec.go
+++ b/internal/docspec/docspec.go
@@ -8,8 +8,8 @@ import (
 	"strings"
 	"time"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/llm"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/llm"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 )
 
 var (
diff --git a/internal/generator/async_detect.go b/internal/generator/async_detect.go
index c2d35f74..aa98050c 100644
--- a/internal/generator/async_detect.go
+++ b/internal/generator/async_detect.go
@@ -4,7 +4,7 @@ import (
 	"regexp"
 	"strings"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 )
 
 // AsyncJobInfo describes one async-job endpoint detected from a spec.
diff --git a/internal/generator/async_detect_test.go b/internal/generator/async_detect_test.go
index c394ba4d..f4555823 100644
--- a/internal/generator/async_detect_test.go
+++ b/internal/generator/async_detect_test.go
@@ -3,7 +3,7 @@ package generator
 import (
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/assert"
 )
 
diff --git a/internal/generator/auth_env_precedence_test.go b/internal/generator/auth_env_precedence_test.go
index 2b8921d6..d5ba2a4b 100644
--- a/internal/generator/auth_env_precedence_test.go
+++ b/internal/generator/auth_env_precedence_test.go
@@ -6,7 +6,7 @@ import (
 	"strings"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/generator/auth_optional_test.go b/internal/generator/auth_optional_test.go
index 7b36e3c1..803f3fbe 100644
--- a/internal/generator/auth_optional_test.go
+++ b/internal/generator/auth_optional_test.go
@@ -6,7 +6,7 @@ import (
 	"strings"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/require"
 )
 
diff --git a/internal/generator/body_collision_test.go b/internal/generator/body_collision_test.go
index 44be2943..3f37013e 100644
--- a/internal/generator/body_collision_test.go
+++ b/internal/generator/body_collision_test.go
@@ -9,7 +9,7 @@ import (
 	"strings"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/generator/body_map_test.go b/internal/generator/body_map_test.go
index f5eb408a..adeafb13 100644
--- a/internal/generator/body_map_test.go
+++ b/internal/generator/body_map_test.go
@@ -4,7 +4,7 @@ import (
 	"strings"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 )
 
 // TestBodyMap pins the rendered Go code for each of the three body-param
diff --git a/internal/generator/client_invalidate_cache_test.go b/internal/generator/client_invalidate_cache_test.go
index 17b674ce..f855b640 100644
--- a/internal/generator/client_invalidate_cache_test.go
+++ b/internal/generator/client_invalidate_cache_test.go
@@ -6,8 +6,8 @@ import (
 	"strings"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/naming"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/naming"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/generator/cost_throttling_test.go b/internal/generator/cost_throttling_test.go
index dc7159a7..a5d214d2 100644
--- a/internal/generator/cost_throttling_test.go
+++ b/internal/generator/cost_throttling_test.go
@@ -5,9 +5,9 @@ import (
 	"path/filepath"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/graphql"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/naming"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/graphql"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/naming"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/generator/cursor_param_test.go b/internal/generator/cursor_param_test.go
index 7f8b2711..67233be9 100644
--- a/internal/generator/cursor_param_test.go
+++ b/internal/generator/cursor_param_test.go
@@ -3,7 +3,7 @@ package generator
 import (
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/assert"
 )
 
diff --git a/internal/generator/endpoint_is_write_test.go b/internal/generator/endpoint_is_write_test.go
index 109949d9..baa6af9d 100644
--- a/internal/generator/endpoint_is_write_test.go
+++ b/internal/generator/endpoint_is_write_test.go
@@ -5,7 +5,7 @@ import (
 	"path/filepath"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/generator/entity_mapper.go b/internal/generator/entity_mapper.go
index 4a3e9041..fb37cfcd 100644
--- a/internal/generator/entity_mapper.go
+++ b/internal/generator/entity_mapper.go
@@ -3,8 +3,8 @@ package generator
 import (
 	"strings"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/profiler"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/profiler"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 )
 
 type WorkflowTemplateContext struct {
diff --git a/internal/generator/enum_validation_test.go b/internal/generator/enum_validation_test.go
index 576cfc67..4362c4c2 100644
--- a/internal/generator/enum_validation_test.go
+++ b/internal/generator/enum_validation_test.go
@@ -5,7 +5,7 @@ import (
 	"path/filepath"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/require"
 )
 
diff --git a/internal/generator/example_value_test.go b/internal/generator/example_value_test.go
index b6192eee..5159ac00 100644
--- a/internal/generator/example_value_test.go
+++ b/internal/generator/example_value_test.go
@@ -3,7 +3,7 @@ package generator
 import (
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/assert"
 )
 
diff --git a/internal/generator/first_command_example.go b/internal/generator/first_command_example.go
index cc862bf0..d6b758c4 100644
--- a/internal/generator/first_command_example.go
+++ b/internal/generator/first_command_example.go
@@ -5,8 +5,8 @@ import (
 	"sort"
 	"strings"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/canonicalargs"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/canonicalargs"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 )
 
 // firstCommandExample returns a runnable "resource [endpoint] <pos1> <pos2>..."
diff --git a/internal/generator/first_command_example_test.go b/internal/generator/first_command_example_test.go
index ee8f67ec..f924ff61 100644
--- a/internal/generator/first_command_example_test.go
+++ b/internal/generator/first_command_example_test.go
@@ -3,7 +3,7 @@ package generator
 import (
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/assert"
 )
 
diff --git a/internal/generator/flag_collision.go b/internal/generator/flag_collision.go
index ac748e5f..00bad245 100644
--- a/internal/generator/flag_collision.go
+++ b/internal/generator/flag_collision.go
@@ -4,7 +4,7 @@ import (
 	"fmt"
 	"strings"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 )
 
 // dedupeFlagIdentifiers ensures that no two non-positional params or body
diff --git a/internal/generator/flag_collision_test.go b/internal/generator/flag_collision_test.go
index ee977c4a..aecadf17 100644
--- a/internal/generator/flag_collision_test.go
+++ b/internal/generator/flag_collision_test.go
@@ -9,7 +9,7 @@ import (
 	"strings"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/generator/freshness_paths_test.go b/internal/generator/freshness_paths_test.go
index f17b5c65..e80a833b 100644
--- a/internal/generator/freshness_paths_test.go
+++ b/internal/generator/freshness_paths_test.go
@@ -4,8 +4,8 @@ import (
 	"sort"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/profiler"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/profiler"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/assert"
 )
 
diff --git a/internal/generator/generator.go b/internal/generator/generator.go
index 6797e4ae..3ddebb37 100644
--- a/internal/generator/generator.go
+++ b/internal/generator/generator.go
@@ -16,11 +16,11 @@ import (
 	"time"
 	"unicode"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/browsersniff"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/mcpdesc"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/naming"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/profiler"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/browsersniff"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/mcpdesc"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/naming"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/profiler"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"golang.org/x/text/cases"
 	"golang.org/x/text/language"
 )
diff --git a/internal/generator/generator_test.go b/internal/generator/generator_test.go
index bca6fce8..32b9176e 100644
--- a/internal/generator/generator_test.go
+++ b/internal/generator/generator_test.go
@@ -15,11 +15,11 @@ import (
 	"strings"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/browsersniff"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/graphql"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/naming"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/openapi"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/browsersniff"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/graphql"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/naming"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/openapi"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/generator/install_section_test.go b/internal/generator/install_section_test.go
index 0cb77114..00fb9a9d 100644
--- a/internal/generator/install_section_test.go
+++ b/internal/generator/install_section_test.go
@@ -7,7 +7,7 @@ import (
 	"path/filepath"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/require"
 )
 
diff --git a/internal/generator/json_string_validation_test.go b/internal/generator/json_string_validation_test.go
index 50206210..17fd994c 100644
--- a/internal/generator/json_string_validation_test.go
+++ b/internal/generator/json_string_validation_test.go
@@ -6,7 +6,7 @@ import (
 	"path/filepath"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/require"
 )
 
diff --git a/internal/generator/limit_truncation_test.go b/internal/generator/limit_truncation_test.go
index 220d7dac..1e994c80 100644
--- a/internal/generator/limit_truncation_test.go
+++ b/internal/generator/limit_truncation_test.go
@@ -5,7 +5,7 @@ import (
 	"path/filepath"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/generator/mcp_warning.go b/internal/generator/mcp_warning.go
index 07438b11..2edc5f18 100644
--- a/internal/generator/mcp_warning.go
+++ b/internal/generator/mcp_warning.go
@@ -4,7 +4,7 @@ import (
 	"fmt"
 	"io"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 )
 
 const largeMCPSurfaceWarning = `warning: spec exposes %d MCP endpoint tools (>%d threshold). The default
diff --git a/internal/generator/mcp_warning_test.go b/internal/generator/mcp_warning_test.go
index 9e2cc143..cf011084 100644
--- a/internal/generator/mcp_warning_test.go
+++ b/internal/generator/mcp_warning_test.go
@@ -6,7 +6,7 @@ import (
 	"strings"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 )
 
 func TestWarnUnenrichedLargeMCPSurface(t *testing.T) {
diff --git a/internal/generator/plan_generate.go b/internal/generator/plan_generate.go
index da9976d3..3c2a47df 100644
--- a/internal/generator/plan_generate.go
+++ b/internal/generator/plan_generate.go
@@ -13,7 +13,7 @@ import (
 	"text/template"
 	"time"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/naming"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/naming"
 	"golang.org/x/text/cases"
 	"golang.org/x/text/language"
 )
diff --git a/internal/generator/plan_generate_test.go b/internal/generator/plan_generate_test.go
index 5ee1e42b..056949a4 100644
--- a/internal/generator/plan_generate_test.go
+++ b/internal/generator/plan_generate_test.go
@@ -7,7 +7,7 @@ import (
 	"strings"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/naming"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/naming"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/generator/promoted_poststore_test.go b/internal/generator/promoted_poststore_test.go
index 3c362bba..9b5a463e 100644
--- a/internal/generator/promoted_poststore_test.go
+++ b/internal/generator/promoted_poststore_test.go
@@ -5,8 +5,8 @@ import (
 	"path/filepath"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/naming"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/naming"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/generator/promoted_presence_check_test.go b/internal/generator/promoted_presence_check_test.go
index 5fe880ff..0d0f82a5 100644
--- a/internal/generator/promoted_presence_check_test.go
+++ b/internal/generator/promoted_presence_check_test.go
@@ -5,7 +5,7 @@ import (
 	"path/filepath"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/require"
 )
 
diff --git a/internal/generator/readme_test.go b/internal/generator/readme_test.go
index f2870d17..11a40cf9 100644
--- a/internal/generator/readme_test.go
+++ b/internal/generator/readme_test.go
@@ -6,7 +6,7 @@ import (
 	"strings"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/generator/schema_builder.go b/internal/generator/schema_builder.go
index 93919146..a7113aa0 100644
--- a/internal/generator/schema_builder.go
+++ b/internal/generator/schema_builder.go
@@ -5,7 +5,7 @@ import (
 	"strings"
 	"unicode"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 )
 
 type TableDef struct {
diff --git a/internal/generator/schema_builder_test.go b/internal/generator/schema_builder_test.go
index 5011dc27..9c1618f7 100644
--- a/internal/generator/schema_builder_test.go
+++ b/internal/generator/schema_builder_test.go
@@ -3,7 +3,7 @@ package generator
 import (
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/assert"
 )
 
diff --git a/internal/generator/session_handshake_test.go b/internal/generator/session_handshake_test.go
index 77685c8f..a025202f 100644
--- a/internal/generator/session_handshake_test.go
+++ b/internal/generator/session_handshake_test.go
@@ -6,7 +6,7 @@ import (
 	"strings"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 )
 
 // TestSessionHandshakeGeneration verifies the generator emits a working
diff --git a/internal/generator/skill_promoted_paths_test.go b/internal/generator/skill_promoted_paths_test.go
index e4dabad1..65c9628e 100644
--- a/internal/generator/skill_promoted_paths_test.go
+++ b/internal/generator/skill_promoted_paths_test.go
@@ -8,7 +8,7 @@ import (
 	"strings"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/generator/skill_test.go b/internal/generator/skill_test.go
index 97cd9869..a7a170ae 100644
--- a/internal/generator/skill_test.go
+++ b/internal/generator/skill_test.go
@@ -6,7 +6,7 @@ import (
 	"strings"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 	"gopkg.in/yaml.v3"
diff --git a/internal/generator/templates_test.go b/internal/generator/templates_test.go
index b90e63b5..d3943fc2 100644
--- a/internal/generator/templates_test.go
+++ b/internal/generator/templates_test.go
@@ -7,7 +7,7 @@ import (
 	"strings"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/generator/tier_routing_test.go b/internal/generator/tier_routing_test.go
index 02e3b63c..dae657a6 100644
--- a/internal/generator/tier_routing_test.go
+++ b/internal/generator/tier_routing_test.go
@@ -7,7 +7,7 @@ import (
 	"strings"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/require"
 )
 
diff --git a/internal/generator/types_keyword_test.go b/internal/generator/types_keyword_test.go
index 1a3cedd6..c0897794 100644
--- a/internal/generator/types_keyword_test.go
+++ b/internal/generator/types_keyword_test.go
@@ -7,7 +7,7 @@ import (
 	"path/filepath"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/require"
 )
 
diff --git a/internal/generator/validate.go b/internal/generator/validate.go
index bf716fec..427a84df 100644
--- a/internal/generator/validate.go
+++ b/internal/generator/validate.go
@@ -10,8 +10,8 @@ import (
 	"strings"
 	"time"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/artifacts"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/naming"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/artifacts"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/naming"
 )
 
 type validationGate struct {
diff --git a/internal/generator/vision_templates.go b/internal/generator/vision_templates.go
index e9d78ac1..6664450e 100644
--- a/internal/generator/vision_templates.go
+++ b/internal/generator/vision_templates.go
@@ -4,8 +4,8 @@ import (
 	"sort"
 	"strings"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/vision"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/vision"
 )
 
 // VisionTemplateSet defines which visionary templates to include in generation.
diff --git a/internal/graphql/parser.go b/internal/graphql/parser.go
index 6d894395..21ecef77 100644
--- a/internal/graphql/parser.go
+++ b/internal/graphql/parser.go
@@ -9,8 +9,8 @@ import (
 	"strings"
 	"unicode"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/naming"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/naming"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"golang.org/x/text/cases"
 	"golang.org/x/text/language"
 )
diff --git a/internal/graphql/parser_test.go b/internal/graphql/parser_test.go
index dd2e1df2..35498295 100644
--- a/internal/graphql/parser_test.go
+++ b/internal/graphql/parser_test.go
@@ -3,7 +3,7 @@ package graphql
 import (
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/llmpolish/polish.go b/internal/llmpolish/polish.go
index 6fc7599a..6b95c4f3 100644
--- a/internal/llmpolish/polish.go
+++ b/internal/llmpolish/polish.go
@@ -6,7 +6,7 @@ import (
 	"os"
 	"time"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/llm"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/llm"
 )
 
 // PolishRequest defines what the polish pass needs.
diff --git a/internal/llmpolish/vision.go b/internal/llmpolish/vision.go
index 670eaa11..949745da 100644
--- a/internal/llmpolish/vision.go
+++ b/internal/llmpolish/vision.go
@@ -6,9 +6,9 @@ import (
 	"sort"
 	"strings"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/llm"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/profiler"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/llm"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/profiler"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 )
 
 // VisionCustomization holds LLM-generated customizations for vision templates.
diff --git a/internal/llmpolish/vision_test.go b/internal/llmpolish/vision_test.go
index 078e9b06..592194c0 100644
--- a/internal/llmpolish/vision_test.go
+++ b/internal/llmpolish/vision_test.go
@@ -5,8 +5,8 @@ import (
 	"os"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/profiler"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/profiler"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/mcpdesc/compose.go b/internal/mcpdesc/compose.go
index 60b6db5f..97844f57 100644
--- a/internal/mcpdesc/compose.go
+++ b/internal/mcpdesc/compose.go
@@ -17,8 +17,8 @@ import (
 	"fmt"
 	"strings"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/naming"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/naming"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 )
 
 // optionalListMax caps how many optional params Compose lists inline
diff --git a/internal/mcpdesc/compose_test.go b/internal/mcpdesc/compose_test.go
index 00a149a4..6cdb4ff6 100644
--- a/internal/mcpdesc/compose_test.go
+++ b/internal/mcpdesc/compose_test.go
@@ -4,7 +4,7 @@ import (
 	"strings"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/assert"
 )
 
diff --git a/internal/mcpdesc/params.go b/internal/mcpdesc/params.go
index cedfefd5..e44346dd 100644
--- a/internal/mcpdesc/params.go
+++ b/internal/mcpdesc/params.go
@@ -4,8 +4,8 @@ import (
 	"strings"
 	"unicode/utf8"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/naming"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/naming"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 )
 
 const (
diff --git a/internal/mcpdesc/params_test.go b/internal/mcpdesc/params_test.go
index 64aa0f79..4328c9cb 100644
--- a/internal/mcpdesc/params_test.go
+++ b/internal/mcpdesc/params_test.go
@@ -5,8 +5,8 @@ import (
 	"testing"
 	"unicode/utf8"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/naming"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/naming"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/assert"
 )
 
diff --git a/internal/mcpoverrides/overrides.go b/internal/mcpoverrides/overrides.go
index 38f1b129..397ab671 100644
--- a/internal/mcpoverrides/overrides.go
+++ b/internal/mcpoverrides/overrides.go
@@ -18,8 +18,8 @@ import (
 	"os"
 	"path/filepath"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/naming"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/naming"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 )
 
 // Filename is the per-CLI override file name. Lives at the cli-dir
diff --git a/internal/mcpoverrides/overrides_test.go b/internal/mcpoverrides/overrides_test.go
index a32082c6..ee26f983 100644
--- a/internal/mcpoverrides/overrides_test.go
+++ b/internal/mcpoverrides/overrides_test.go
@@ -6,7 +6,7 @@ import (
 	"sort"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 )
 
 func TestLoad_FileAbsentReturnsEmpty(t *testing.T) {
diff --git a/internal/narrativecheck/narrativecheck.go b/internal/narrativecheck/narrativecheck.go
index ea15068b..fd3c65d5 100644
--- a/internal/narrativecheck/narrativecheck.go
+++ b/internal/narrativecheck/narrativecheck.go
@@ -20,7 +20,7 @@ import (
 	"os/exec"
 	"strings"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/shellargs"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/shellargs"
 )
 
 // Section names the narrative section a command lives in. Matches the
diff --git a/internal/openapi/detect.go b/internal/openapi/detect.go
index ecfb3dcd..6d6080a4 100644
--- a/internal/openapi/detect.go
+++ b/internal/openapi/detect.go
@@ -3,7 +3,7 @@ package openapi
 import (
 	"bytes"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/graphql"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/graphql"
 )
 
 func IsOpenAPI(data []byte) bool {
diff --git a/internal/openapi/parser.go b/internal/openapi/parser.go
index 7f070103..ffabd4f0 100644
--- a/internal/openapi/parser.go
+++ b/internal/openapi/parser.go
@@ -15,8 +15,8 @@ import (
 	"unicode"
 
 	"github.com/getkin/kin-openapi/openapi3"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/naming"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/naming"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"golang.org/x/text/cases"
 	"golang.org/x/text/language"
 )
diff --git a/internal/openapi/parser_test.go b/internal/openapi/parser_test.go
index 51cc29e2..e351ec82 100644
--- a/internal/openapi/parser_test.go
+++ b/internal/openapi/parser_test.go
@@ -11,9 +11,9 @@ import (
 	"testing"
 
 	"github.com/getkin/kin-openapi/openapi3"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/generator"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/naming"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/generator"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/naming"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/patch/dropins.go b/internal/patch/dropins.go
index 74692304..55c00f50 100644
--- a/internal/patch/dropins.go
+++ b/internal/patch/dropins.go
@@ -10,7 +10,7 @@ import (
 	"text/template"
 	"time"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/generator"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/generator"
 )
 
 // dropin describes one file the patcher creates from a template.
diff --git a/internal/pipeline/climanifest.go b/internal/pipeline/climanifest.go
index 8b507307..56a0970c 100644
--- a/internal/pipeline/climanifest.go
+++ b/internal/pipeline/climanifest.go
@@ -14,12 +14,12 @@ import (
 	"strings"
 	"time"
 
-	"github.com/mvanhorn/cli-printing-press/v3/catalog"
-	catalogpkg "github.com/mvanhorn/cli-printing-press/v3/internal/catalog"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/naming"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/openapi"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/version"
+	"github.com/mvanhorn/cli-printing-press/v4/catalog"
+	catalogpkg "github.com/mvanhorn/cli-printing-press/v4/internal/catalog"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/naming"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/openapi"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/version"
 )
 
 // CLIManifestFilename is the name of the manifest file written to each
diff --git a/internal/pipeline/climanifest_test.go b/internal/pipeline/climanifest_test.go
index 0dfa5202..d062b738 100644
--- a/internal/pipeline/climanifest_test.go
+++ b/internal/pipeline/climanifest_test.go
@@ -9,8 +9,8 @@ import (
 	"testing"
 	"time"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/version"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/version"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/pipeline/contracts_test.go b/internal/pipeline/contracts_test.go
index 478732c1..33222f9d 100644
--- a/internal/pipeline/contracts_test.go
+++ b/internal/pipeline/contracts_test.go
@@ -7,10 +7,10 @@ import (
 	"strings"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/generator"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/naming"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/openapi"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/generator"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/naming"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/openapi"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/pipeline/dogfood.go b/internal/pipeline/dogfood.go
index de676721..55916af0 100644
--- a/internal/pipeline/dogfood.go
+++ b/internal/pipeline/dogfood.go
@@ -14,9 +14,9 @@ import (
 	"strings"
 	"time"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/naming"
-	openapiparser "github.com/mvanhorn/cli-printing-press/v3/internal/openapi"
-	apispec "github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/naming"
+	openapiparser "github.com/mvanhorn/cli-printing-press/v4/internal/openapi"
+	apispec "github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"gopkg.in/yaml.v3"
 )
 
diff --git a/internal/pipeline/fullrun.go b/internal/pipeline/fullrun.go
index e22a1e81..35c82d28 100644
--- a/internal/pipeline/fullrun.go
+++ b/internal/pipeline/fullrun.go
@@ -11,9 +11,9 @@ import (
 	"strings"
 	"time"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/artifacts"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/llmpolish"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/naming"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/artifacts"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/llmpolish"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/naming"
 	"gopkg.in/yaml.v3"
 )
 
diff --git a/internal/pipeline/fullrun_test.go b/internal/pipeline/fullrun_test.go
index c1ae6a47..2cb4d11e 100644
--- a/internal/pipeline/fullrun_test.go
+++ b/internal/pipeline/fullrun_test.go
@@ -9,7 +9,7 @@ import (
 	"testing"
 	"time"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/llmpolish"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/llmpolish"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/pipeline/live_check.go b/internal/pipeline/live_check.go
index d2e25ecd..8efd41db 100644
--- a/internal/pipeline/live_check.go
+++ b/internal/pipeline/live_check.go
@@ -16,7 +16,7 @@ import (
 	"time"
 	"unicode"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/shellargs"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/shellargs"
 )
 
 // LiveStatus is the outcome of one feature's live check.
diff --git a/internal/pipeline/lock.go b/internal/pipeline/lock.go
index 8cd8b08a..e30352e1 100644
--- a/internal/pipeline/lock.go
+++ b/internal/pipeline/lock.go
@@ -7,7 +7,7 @@ import (
 	"path/filepath"
 	"time"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/naming"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/naming"
 )
 
 const (
diff --git a/internal/pipeline/mcp_scoring.go b/internal/pipeline/mcp_scoring.go
index d75a95f2..71560e40 100644
--- a/internal/pipeline/mcp_scoring.go
+++ b/internal/pipeline/mcp_scoring.go
@@ -5,7 +5,7 @@ import (
 	"path/filepath"
 	"strings"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/naming"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/naming"
 )
 
 // Thresholds for the tool-design dimension. Intent-grouping is only worth
diff --git a/internal/pipeline/mcp_size.go b/internal/pipeline/mcp_size.go
index 44b3b30e..af1a86cc 100644
--- a/internal/pipeline/mcp_size.go
+++ b/internal/pipeline/mcp_size.go
@@ -10,7 +10,7 @@ import (
 	"sort"
 	"strings"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/naming"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/naming"
 )
 
 // MCPTokenEstimate reports the approximate token weight of a generated MCP
diff --git a/internal/pipeline/mcpb_manifest.go b/internal/pipeline/mcpb_manifest.go
index 43599578..4ed2f57e 100644
--- a/internal/pipeline/mcpb_manifest.go
+++ b/internal/pipeline/mcpb_manifest.go
@@ -8,9 +8,9 @@ import (
 	"path/filepath"
 	"strings"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/naming"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/version"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/naming"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/version"
 )
 
 // MCPB-bundle constants. Promoted from string literals so a typo here can't
diff --git a/internal/pipeline/mcpsync/sync.go b/internal/pipeline/mcpsync/sync.go
index 33752e74..2bc691e1 100644
--- a/internal/pipeline/mcpsync/sync.go
+++ b/internal/pipeline/mcpsync/sync.go
@@ -10,13 +10,13 @@ import (
 	"regexp"
 	"strings"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/generator"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/graphql"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/mcpoverrides"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/naming"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/openapi"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/pipeline"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/generator"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/graphql"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/mcpoverrides"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/naming"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/openapi"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/pipeline"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"golang.org/x/mod/modfile"
 	"golang.org/x/mod/semver"
 )
diff --git a/internal/pipeline/mcpsync/sync_test.go b/internal/pipeline/mcpsync/sync_test.go
index ac458241..89af5da9 100644
--- a/internal/pipeline/mcpsync/sync_test.go
+++ b/internal/pipeline/mcpsync/sync_test.go
@@ -7,9 +7,9 @@ import (
 	"regexp"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/generator"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/pipeline"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/generator"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/pipeline"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 	"gopkg.in/yaml.v3"
diff --git a/internal/pipeline/merge.go b/internal/pipeline/merge.go
index f04ac96c..497e8f52 100644
--- a/internal/pipeline/merge.go
+++ b/internal/pipeline/merge.go
@@ -3,7 +3,7 @@ package pipeline
 import (
 	"fmt"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 )
 
 // MergeOverlay applies an overlay onto an APISpec, modifying it in place.
diff --git a/internal/pipeline/merge_test.go b/internal/pipeline/merge_test.go
index db5a65e5..826c4806 100644
--- a/internal/pipeline/merge_test.go
+++ b/internal/pipeline/merge_test.go
@@ -3,7 +3,7 @@ package pipeline
 import (
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/pipeline/paths.go b/internal/pipeline/paths.go
index 12c5895b..85001fa5 100644
--- a/internal/pipeline/paths.go
+++ b/internal/pipeline/paths.go
@@ -7,7 +7,7 @@ import (
 	"path/filepath"
 	"strings"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/naming"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/naming"
 )
 
 func PressHome() string {
diff --git a/internal/pipeline/public_param_audit.go b/internal/pipeline/public_param_audit.go
index 699f4229..b113d3c3 100644
--- a/internal/pipeline/public_param_audit.go
+++ b/internal/pipeline/public_param_audit.go
@@ -5,7 +5,7 @@ import (
 	"strings"
 	"unicode/utf8"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 )
 
 const (
diff --git a/internal/pipeline/public_param_audit_test.go b/internal/pipeline/public_param_audit_test.go
index b2537b90..05a16601 100644
--- a/internal/pipeline/public_param_audit_test.go
+++ b/internal/pipeline/public_param_audit_test.go
@@ -3,7 +3,7 @@ package pipeline
 import (
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/pipeline/publish.go b/internal/pipeline/publish.go
index 30f0c6ef..ecf0bd87 100644
--- a/internal/pipeline/publish.go
+++ b/internal/pipeline/publish.go
@@ -11,13 +11,13 @@ import (
 	"strings"
 	"time"
 
-	"github.com/mvanhorn/cli-printing-press/v3/catalog"
-	catalogpkg "github.com/mvanhorn/cli-printing-press/v3/internal/catalog"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/graphql"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/naming"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/openapi"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/version"
+	"github.com/mvanhorn/cli-printing-press/v4/catalog"
+	catalogpkg "github.com/mvanhorn/cli-printing-press/v4/internal/catalog"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/graphql"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/naming"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/openapi"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/version"
 )
 
 type RunManifest struct {
diff --git a/internal/pipeline/publish_test.go b/internal/pipeline/publish_test.go
index 7632b653..6baf6d6b 100644
--- a/internal/pipeline/publish_test.go
+++ b/internal/pipeline/publish_test.go
@@ -6,7 +6,7 @@ import (
 	"path/filepath"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/pipeline/regenmerge/apply.go b/internal/pipeline/regenmerge/apply.go
index c2fb4910..97fbcf25 100644
--- a/internal/pipeline/regenmerge/apply.go
+++ b/internal/pipeline/regenmerge/apply.go
@@ -15,7 +15,7 @@ import (
 	"github.com/dave/dst/decorator"
 	"golang.org/x/mod/modfile"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/pipeline"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/pipeline"
 )
 
 // Apply executes a MergeReport's plan against the published CLI directory,
diff --git a/internal/pipeline/regenmerge/apply_test.go b/internal/pipeline/regenmerge/apply_test.go
index f0cdc67f..3d4e2eed 100644
--- a/internal/pipeline/regenmerge/apply_test.go
+++ b/internal/pipeline/regenmerge/apply_test.go
@@ -10,7 +10,7 @@ import (
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/pipeline"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/pipeline"
 )
 
 // TestApplyPostmanExploreFixture exercises the full Apply flow against the
diff --git a/internal/pipeline/renamecli.go b/internal/pipeline/renamecli.go
index c6ac1028..ab6a670d 100644
--- a/internal/pipeline/renamecli.go
+++ b/internal/pipeline/renamecli.go
@@ -7,7 +7,7 @@ import (
 	"path/filepath"
 	"strings"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/naming"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/naming"
 )
 
 // renameExtensions lists file extensions walked during CLI rename.
diff --git a/internal/pipeline/renamecli_test.go b/internal/pipeline/renamecli_test.go
index 5a78545f..ce8b786c 100644
--- a/internal/pipeline/renamecli_test.go
+++ b/internal/pipeline/renamecli_test.go
@@ -6,7 +6,7 @@ import (
 	"path/filepath"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/naming"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/naming"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/pipeline/research.go b/internal/pipeline/research.go
index 93741ac7..99cb275f 100644
--- a/internal/pipeline/research.go
+++ b/internal/pipeline/research.go
@@ -14,9 +14,9 @@ import (
 	"strings"
 	"time"
 
-	catalogfs "github.com/mvanhorn/cli-printing-press/v3/catalog"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/catalog"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/llm"
+	catalogfs "github.com/mvanhorn/cli-printing-press/v4/catalog"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/catalog"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/llm"
 )
 
 // ResearchResult holds the output of the research phase.
diff --git a/internal/pipeline/runtime.go b/internal/pipeline/runtime.go
index a4284982..0ef18a73 100644
--- a/internal/pipeline/runtime.go
+++ b/internal/pipeline/runtime.go
@@ -11,9 +11,9 @@ import (
 	"strings"
 	"time"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/artifacts"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/naming"
-	apispec "github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/artifacts"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/naming"
+	apispec "github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 )
 
 // VerifyConfig configures a runtime verification run.
diff --git a/internal/pipeline/runtime_commands.go b/internal/pipeline/runtime_commands.go
index 8abae637..5c1d666c 100644
--- a/internal/pipeline/runtime_commands.go
+++ b/internal/pipeline/runtime_commands.go
@@ -10,7 +10,7 @@ import (
 	"strings"
 	"time"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/canonicalargs"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/canonicalargs"
 )
 
 func discoverCommands(dir string, binaryPath string) []discoveredCommand {
diff --git a/internal/pipeline/runtime_exec.go b/internal/pipeline/runtime_exec.go
index d85539cc..3d3155e2 100644
--- a/internal/pipeline/runtime_exec.go
+++ b/internal/pipeline/runtime_exec.go
@@ -9,7 +9,7 @@ import (
 	"sort"
 	"time"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/naming"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/naming"
 )
 
 func buildCLI(dir string) (string, error) {
diff --git a/internal/pipeline/runtime_structural.go b/internal/pipeline/runtime_structural.go
index 5cc77fda..c57e6e66 100644
--- a/internal/pipeline/runtime_structural.go
+++ b/internal/pipeline/runtime_structural.go
@@ -5,7 +5,7 @@ import (
 	"os"
 	"time"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/artifacts"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/artifacts"
 )
 
 // runStructuralVerify runs spec-independent verification: build, --help,
diff --git a/internal/pipeline/runtime_test.go b/internal/pipeline/runtime_test.go
index ad87b4e0..f4c13bbc 100644
--- a/internal/pipeline/runtime_test.go
+++ b/internal/pipeline/runtime_test.go
@@ -7,7 +7,7 @@ import (
 	"path/filepath"
 	"testing"
 
-	apispec "github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	apispec "github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/pipeline/scorecard.go b/internal/pipeline/scorecard.go
index 90ef439f..a9033592 100644
--- a/internal/pipeline/scorecard.go
+++ b/internal/pipeline/scorecard.go
@@ -11,8 +11,8 @@ import (
 	"strconv"
 	"strings"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/naming"
-	apispec "github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/naming"
+	apispec "github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"gopkg.in/yaml.v3"
 )
 
diff --git a/internal/pipeline/spec_detect.go b/internal/pipeline/spec_detect.go
index 9ca4c0df..936c25a5 100644
--- a/internal/pipeline/spec_detect.go
+++ b/internal/pipeline/spec_detect.go
@@ -7,7 +7,7 @@ import (
 	"slices"
 	"strings"
 
-	apispec "github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	apispec "github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 )
 
 // isInternalYAMLSpec returns true if data looks like an internal YAML spec
diff --git a/internal/pipeline/state.go b/internal/pipeline/state.go
index 3beb6381..f8d86838 100644
--- a/internal/pipeline/state.go
+++ b/internal/pipeline/state.go
@@ -8,7 +8,7 @@ import (
 	"path/filepath"
 	"time"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/naming"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/naming"
 )
 
 // Phase names in execution order.
diff --git a/internal/pipeline/toolsmanifest.go b/internal/pipeline/toolsmanifest.go
index 6d3dee12..d187eeaf 100644
--- a/internal/pipeline/toolsmanifest.go
+++ b/internal/pipeline/toolsmanifest.go
@@ -10,10 +10,10 @@ import (
 	"sort"
 	"strings"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/mcpdesc"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/mcpoverrides"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/naming"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/mcpdesc"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/mcpoverrides"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/naming"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 )
 
 // ToolsManifestFilename is the name of the tools manifest file written to each
diff --git a/internal/pipeline/toolsmanifest_test.go b/internal/pipeline/toolsmanifest_test.go
index 5ef75214..76b13a6b 100644
--- a/internal/pipeline/toolsmanifest_test.go
+++ b/internal/pipeline/toolsmanifest_test.go
@@ -6,8 +6,8 @@ import (
 	"path/filepath"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/naming"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/naming"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/pipeline/verify.go b/internal/pipeline/verify.go
index 7ac7a00c..d8cc6f4f 100644
--- a/internal/pipeline/verify.go
+++ b/internal/pipeline/verify.go
@@ -11,7 +11,7 @@ import (
 	"time"
 	"unicode"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/artifacts"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/artifacts"
 )
 
 type Verifier struct {
diff --git a/internal/profiler/profiler.go b/internal/profiler/profiler.go
index 3eff13f1..43b9c017 100644
--- a/internal/profiler/profiler.go
+++ b/internal/profiler/profiler.go
@@ -5,8 +5,8 @@ import (
 	"sort"
 	"strings"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/vision"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/vision"
 )
 
 type DomainArchetype string
diff --git a/internal/profiler/profiler_test.go b/internal/profiler/profiler_test.go
index b10cf0dc..c305ab39 100644
--- a/internal/profiler/profiler_test.go
+++ b/internal/profiler/profiler_test.go
@@ -3,7 +3,7 @@ package profiler
 import (
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 )
diff --git a/internal/reachability/probe.go b/internal/reachability/probe.go
index 96984922..3b0d5e34 100644
--- a/internal/reachability/probe.go
+++ b/internal/reachability/probe.go
@@ -10,7 +10,7 @@ import (
 	"time"
 
 	"github.com/enetx/surf"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/version"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/version"
 )
 
 const (
diff --git a/internal/spec/reserved_drift_test.go b/internal/spec/reserved_drift_test.go
index 4f76d2f4..39f5cb66 100644
--- a/internal/spec/reserved_drift_test.go
+++ b/internal/spec/reserved_drift_test.go
@@ -9,8 +9,8 @@ import (
 	"sync"
 	"testing"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/cli"
-	"github.com/mvanhorn/cli-printing-press/v3/internal/spec"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/cli"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/spec"
 )
 
 // templateRoot resolves to internal/generator/templates from this test's
diff --git a/internal/spec/spec.go b/internal/spec/spec.go
index bd966de0..e9095023 100644
--- a/internal/spec/spec.go
+++ b/internal/spec/spec.go
@@ -10,7 +10,7 @@ import (
 	"strings"
 	"unicode"
 
-	"github.com/mvanhorn/cli-printing-press/v3/internal/naming"
+	"github.com/mvanhorn/cli-printing-press/v4/internal/naming"
 	"gopkg.in/yaml.v3"
 )
 
diff --git a/skills/printing-press-catalog/SKILL.md b/skills/printing-press-catalog/SKILL.md
index 64513077..661dbb09 100644
--- a/skills/printing-press-catalog/SKILL.md
+++ b/skills/printing-press-catalog/SKILL.md
@@ -31,7 +31,7 @@ Browse and install pre-built Go CLIs for popular APIs.
 ## Prerequisites
 
 - Go 1.21+ installed
-- `printing-press` binary on PATH (install with `go install github.com/mvanhorn/cli-printing-press/v3/cmd/printing-press@latest`)
+- `printing-press` binary on PATH (install with `go install github.com/mvanhorn/cli-printing-press/v4/cmd/printing-press@latest`)
 
 ## Setup
 
@@ -55,7 +55,7 @@ elif ! command -v printing-press >/dev/null 2>&1; then
     echo "Add GOPATH/bin to your PATH:  export PATH=\"\$HOME/go/bin:\$PATH\""
   else
     echo "printing-press binary not found."
-    echo "Install with:  go install github.com/mvanhorn/cli-printing-press/v3/cmd/printing-press@latest"
+    echo "Install with:  go install github.com/mvanhorn/cli-printing-press/v4/cmd/printing-press@latest"
   fi
   return 1 2>/dev/null || exit 1
 fi
@@ -74,7 +74,7 @@ mkdir -p "$PRESS_RUNSTATE" "$PRESS_LIBRARY"
 ```
 <!-- PRESS_SETUP_CONTRACT_END -->
 
-After running the setup contract, check binary version compatibility. Read the `min-binary-version` field from this skill's YAML frontmatter. Run `printing-press version --json` and parse the version from the output. Compare it to `min-binary-version` using semver rules. If the installed binary is older than the minimum, warn the user: "printing-press binary vX.Y.Z is older than the minimum required vA.B.C. Run `go install github.com/mvanhorn/cli-printing-press/v3/cmd/printing-press@latest` to update." Continue anyway but surface the warning prominently.
+After running the setup contract, check binary version compatibility. Read the `min-binary-version` field from this skill's YAML frontmatter. Run `printing-press version --json` and parse the version from the output. Compare it to `min-binary-version` using semver rules. If the installed binary is older than the minimum, warn the user: "printing-press binary vX.Y.Z is older than the minimum required vA.B.C. Run `go install github.com/mvanhorn/cli-printing-press/v4/cmd/printing-press@latest` to update." Continue anyway but surface the warning prominently.
 
 Generated CLIs are published to `$PRESS_LIBRARY/`, not to the repo.
 
diff --git a/skills/printing-press-publish/SKILL.md b/skills/printing-press-publish/SKILL.md
index 16131f7f..0d8c128e 100644
--- a/skills/printing-press-publish/SKILL.md
+++ b/skills/printing-press-publish/SKILL.md
@@ -52,7 +52,7 @@ elif ! command -v printing-press >/dev/null 2>&1; then
     echo "Add GOPATH/bin to your PATH:  export PATH=\"\$HOME/go/bin:\$PATH\""
   else
     echo "printing-press binary not found."
-    echo "Install with:  go install github.com/mvanhorn/cli-printing-press/v3/cmd/printing-press@latest"
+    echo "Install with:  go install github.com/mvanhorn/cli-printing-press/v4/cmd/printing-press@latest"
   fi
   return 1 2>/dev/null || exit 1
 fi
@@ -73,7 +73,7 @@ mkdir -p "$PRESS_RUNSTATE" "$PRESS_LIBRARY" "$PRESS_MANUSCRIPTS" "$PRESS_CURRENT
 ```
 <!-- PRESS_SETUP_CONTRACT_END -->
 
-After running the setup contract, check binary version compatibility. Read the `min-binary-version` field from this skill's YAML frontmatter. Run `printing-press version --json` and parse the version from the output. Compare it to `min-binary-version` using semver rules. If the installed binary is older than the minimum, warn the user: "printing-press binary vX.Y.Z is older than the minimum required vA.B.C. Run `go install github.com/mvanhorn/cli-printing-press/v3/cmd/printing-press@latest` to update." Continue anyway but surface the warning prominently.
+After running the setup contract, check binary version compatibility. Read the `min-binary-version` field from this skill's YAML frontmatter. Run `printing-press version --json` and parse the version from the output. Compare it to `min-binary-version` using semver rules. If the installed binary is older than the minimum, warn the user: "printing-press binary vX.Y.Z is older than the minimum required vA.B.C. Run `go install github.com/mvanhorn/cli-printing-press/v4/cmd/printing-press@latest` to update." Continue anyway but surface the warning prominently.
 
 ## Configuration
 
diff --git a/skills/printing-press-score/SKILL.md b/skills/printing-press-score/SKILL.md
index c5eeda5d..9af4c181 100644
--- a/skills/printing-press-score/SKILL.md
+++ b/skills/printing-press-score/SKILL.md
@@ -27,7 +27,7 @@ Score generated CLIs against the Steinberger bar. Supports rescoring, scoring by
 ## Prerequisites
 
 - Go 1.21+ installed
-- `printing-press` binary on PATH (install with `go install github.com/mvanhorn/cli-printing-press/v3/cmd/printing-press@latest`)
+- `printing-press` binary on PATH (install with `go install github.com/mvanhorn/cli-printing-press/v4/cmd/printing-press@latest`)
 
 ## Step 0: Setup
 
@@ -51,7 +51,7 @@ elif ! command -v printing-press >/dev/null 2>&1; then
     echo "Add GOPATH/bin to your PATH:  export PATH=\"\$HOME/go/bin:\$PATH\""
   else
     echo "printing-press binary not found."
-    echo "Install with:  go install github.com/mvanhorn/cli-printing-press/v3/cmd/printing-press@latest"
+    echo "Install with:  go install github.com/mvanhorn/cli-printing-press/v4/cmd/printing-press@latest"
   fi
   return 1 2>/dev/null || exit 1
 fi
@@ -72,7 +72,7 @@ mkdir -p "$PRESS_RUNSTATE" "$PRESS_LIBRARY" "$PRESS_MANUSCRIPTS" "$PRESS_CURRENT
 ```
 <!-- PRESS_SETUP_CONTRACT_END -->
 
-After running the setup contract, check binary version compatibility. Read the `min-binary-version` field from this skill's YAML frontmatter. Run `printing-press version --json` and parse the version from the output. Compare it to `min-binary-version` using semver rules. If the installed binary is older than the minimum, warn the user: "printing-press binary vX.Y.Z is older than the minimum required vA.B.C. Run `go install github.com/mvanhorn/cli-printing-press/v3/cmd/printing-press@latest` to update." Continue anyway but surface the warning prominently.
+After running the setup contract, check binary version compatibility. Read the `min-binary-version` field from this skill's YAML frontmatter. Run `printing-press version --json` and parse the version from the output. Compare it to `min-binary-version` using semver rules. If the installed binary is older than the minimum, warn the user: "printing-press binary vX.Y.Z is older than the minimum required vA.B.C. Run `go install github.com/mvanhorn/cli-printing-press/v4/cmd/printing-press@latest` to update." Continue anyway but surface the warning prominently.
 
 Current-run state is resolved from `$PRESS_RUNSTATE`. Published CLIs are resolved from `$PRESS_LIBRARY`. Archived manuscripts are resolved from `$PRESS_MANUSCRIPTS`.
 
@@ -271,7 +271,7 @@ Domain Correctness (Tier 2)
 
 ## Error Handling
 
-- If the printing-press binary is not on PATH → show install instructions: `go install github.com/mvanhorn/cli-printing-press/v3/cmd/printing-press@latest`
+- If the printing-press binary is not on PATH → show install instructions: `go install github.com/mvanhorn/cli-printing-press/v4/cmd/printing-press@latest`
 - If the scorecard command fails → report the error with the full stderr output
 - If a CLI directory doesn't exist → report which name couldn't be resolved
 - If JSON parsing fails → show the raw output and report the parsing error
diff --git a/skills/printing-press/SKILL.md b/skills/printing-press/SKILL.md
index c81b84a5..cba74130 100644
--- a/skills/printing-press/SKILL.md
+++ b/skills/printing-press/SKILL.md
@@ -143,12 +143,12 @@ elif ! command -v printing-press >/dev/null 2>&1; then
     echo ""
     if command -v go >/dev/null 2>&1; then
       echo "Install it in your terminal:"
-      echo "  GOPRIVATE=github.com/mvanhorn/* go install github.com/mvanhorn/cli-printing-press/v3/cmd/printing-press@latest"
+      echo "  GOPRIVATE=github.com/mvanhorn/* go install github.com/mvanhorn/cli-printing-press/v4/cmd/printing-press@latest"
       echo ""
       echo "(GOPRIVATE is required while the repo is private. The plain command works after the public launch.)"
     else
       echo "Go 1.22+ is also not installed. Install Go from https://go.dev/dl/, then:"
-      echo "  GOPRIVATE=github.com/mvanhorn/* go install github.com/mvanhorn/cli-printing-press/v3/cmd/printing-press@latest"
+      echo "  GOPRIVATE=github.com/mvanhorn/* go install github.com/mvanhorn/cli-printing-press/v4/cmd/printing-press@latest"
     fi
     echo ""
     echo "Verify with: printing-press --version"
@@ -190,7 +190,7 @@ fi
 
 if [ "$_should_check" = "true" ] && command -v go >/dev/null 2>&1; then
   _installed=$(printing-press version --json 2>/dev/null | sed -nE 's/.*"version"[[:space:]]*:[[:space:]]*"([^"]+)".*/\1/p')
-  _latest=$(GOPRIVATE=github.com/mvanhorn/* go list -m -versions github.com/mvanhorn/cli-printing-press/v3 2>/dev/null | awk '{print $NF}' | sed 's/^v//')
+  _latest=$(GOPRIVATE=github.com/mvanhorn/* go list -m -versions github.com/mvanhorn/cli-printing-press/v4 2>/dev/null | awk '{print $NF}' | sed 's/^v//')
 
   if [ -n "$_installed" ] && [ -n "$_latest" ] && [ "$_installed" != "$_latest" ]; then
     # sort -V is not fully semver-aware: it ranks "3.0.0-rc1" above "3.0.0" instead of below.
diff --git a/skills/printing-press/references/setup-checks.md b/skills/printing-press/references/setup-checks.md
index 0b10a179..944fd811 100644
--- a/skills/printing-press/references/setup-checks.md
+++ b/skills/printing-press/references/setup-checks.md
@@ -31,7 +31,7 @@ Then ask the user via `AskUserQuestion` before continuing setup:
 If the user picks **Yes**, run:
 
 ```bash
-GOPRIVATE=github.com/mvanhorn/* go install github.com/mvanhorn/cli-printing-press/v3/cmd/printing-press@latest
+GOPRIVATE=github.com/mvanhorn/* go install github.com/mvanhorn/cli-printing-press/v4/cmd/printing-press@latest
 ```
 
 After it completes, confirm with `printing-press version --json` and tell the user `"Upgraded to v<new>."` Then continue setup.
@@ -46,6 +46,6 @@ Check binary version compatibility against the skill's declared minimum. Read th
 
 If the installed binary is older than the minimum, warn the user:
 
-> "printing-press binary vX.Y.Z is older than the minimum required vA.B.C. Run `go install github.com/mvanhorn/cli-printing-press/v3/cmd/printing-press@latest` to update."
+> "printing-press binary vX.Y.Z is older than the minimum required vA.B.C. Run `go install github.com/mvanhorn/cli-printing-press/v4/cmd/printing-press@latest` to update."
 
 Continue anyway but surface the warning prominently. (Note: if the user just declined the optional upgrade in section 2, they may still pass min-version compatibility here — that's fine. The two checks have different bars.)

← 92940bd7 chore(main): release 4.0.0 (#649)  ·  back to Cli Printing Press  ·  chore(main): release 4.0.1 (#678) 2ceed889 →