diff --git a/SECURITY.md b/SECURITY.md
index 8d6ed4d..93f317f 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -13,7 +13,7 @@ Only the latest stable release receives security fixes.
**Do not open a public GitHub issue for security vulnerabilities.**
-Report security issues privately via [GitHub Security Advisories](https://github.com/ezzek/skill-sync/security/advisories/new).
+Report security issues privately via [GitHub Security Advisories](https://github.com/eezzekl/skill-sync/security/advisories/new).
### What to Include
diff --git a/cmd/skill-sync/main.go b/cmd/skill-sync/main.go
index b63928b..e240664 100644
--- a/cmd/skill-sync/main.go
+++ b/cmd/skill-sync/main.go
@@ -3,7 +3,7 @@ package main
import (
"os"
- "github.com/ezzek/skill-sync/internal/cli"
+ "github.com/eezzekl/skill-sync/internal/cli"
)
// version is set at build time via -ldflags "-X main.version=vX.Y.Z"
diff --git a/cmd/skill-sync/module_path_test.go b/cmd/skill-sync/module_path_test.go
new file mode 100644
index 0000000..8780fd9
--- /dev/null
+++ b/cmd/skill-sync/module_path_test.go
@@ -0,0 +1,41 @@
+package main
+
+import (
+ "os"
+ "path/filepath"
+ "strings"
+ "testing"
+)
+
+// canonicalModulePath is the module path that external consumers must be able to
+// resolve, and it has to match the repository URL exactly.
+const canonicalModulePath = "github.com/eezzekl/skill-sync"
+
+// TestGoModDeclaresCanonicalModulePath guards an invariant that neither the
+// compiler nor the rest of the suite can observe. A wrong module path is
+// internally consistent — every import agrees with go.mod — so everything builds
+// and passes while `go install` fails for every consumer resolving the module
+// through the proxy. Only an assertion against the repository URL catches it.
+func TestGoModDeclaresCanonicalModulePath(t *testing.T) {
+ data, err := os.ReadFile(filepath.Join("..", "..", "go.mod"))
+ if err != nil {
+ t.Fatalf("failed to read go.mod: %v", err)
+ }
+
+ var declared string
+ for _, line := range strings.Split(string(data), "\n") {
+ if rest, ok := strings.CutPrefix(strings.TrimSpace(line), "module "); ok {
+ declared = strings.TrimSpace(rest)
+ break
+ }
+ }
+
+ if declared == "" {
+ t.Fatal("go.mod declares no module path")
+ }
+
+ if declared != canonicalModulePath {
+ t.Errorf("go.mod module path mismatch:\n declared: %s\n canonical: %s\n"+
+ "A mismatch breaks `go install` for every consumer.", declared, canonicalModulePath)
+ }
+}
diff --git a/go.mod b/go.mod
index da66ba7..da9d5d1 100644
--- a/go.mod
+++ b/go.mod
@@ -1,4 +1,4 @@
-module github.com/ezzek/skill-sync
+module github.com/eezzekl/skill-sync
go 1.26.1
diff --git a/internal/agent/registry_test.go b/internal/agent/registry_test.go
index 7a70111..d39ce01 100644
--- a/internal/agent/registry_test.go
+++ b/internal/agent/registry_test.go
@@ -5,7 +5,7 @@ import (
"strings"
"testing"
- "github.com/ezzek/skill-sync/internal/agent"
+ "github.com/eezzekl/skill-sync/internal/agent"
)
func TestParseConfig(t *testing.T) {
diff --git a/internal/cli/config.go b/internal/cli/config.go
index dbac125..82ea669 100644
--- a/internal/cli/config.go
+++ b/internal/cli/config.go
@@ -6,8 +6,8 @@ import (
"os"
"path/filepath"
- "github.com/ezzek/skill-sync/internal/agent/discovery"
- "github.com/ezzek/skill-sync/internal/writer"
+ "github.com/eezzekl/skill-sync/internal/agent/discovery"
+ "github.com/eezzekl/skill-sync/internal/writer"
"github.com/spf13/cobra"
"gopkg.in/yaml.v3"
)
diff --git a/internal/cli/import.go b/internal/cli/import.go
index 2c8c0c1..a119c61 100644
--- a/internal/cli/import.go
+++ b/internal/cli/import.go
@@ -6,9 +6,9 @@ import (
"os"
"path/filepath"
- "github.com/ezzek/skill-sync/internal/agent"
- "github.com/ezzek/skill-sync/internal/agent/config_resolver"
- "github.com/ezzek/skill-sync/internal/importer"
+ "github.com/eezzekl/skill-sync/internal/agent"
+ "github.com/eezzekl/skill-sync/internal/agent/config_resolver"
+ "github.com/eezzekl/skill-sync/internal/importer"
"github.com/spf13/cobra"
)
diff --git a/internal/cli/init.go b/internal/cli/init.go
index e7f3519..66d594a 100644
--- a/internal/cli/init.go
+++ b/internal/cli/init.go
@@ -9,8 +9,8 @@ import (
"path/filepath"
"strings"
- "github.com/ezzek/skill-sync/internal/agent/discovery"
- "github.com/ezzek/skill-sync/internal/writer"
+ "github.com/eezzekl/skill-sync/internal/agent/discovery"
+ "github.com/eezzekl/skill-sync/internal/writer"
"github.com/spf13/cobra"
)
diff --git a/internal/cli/root.go b/internal/cli/root.go
index a42f63c..429d4ae 100644
--- a/internal/cli/root.go
+++ b/internal/cli/root.go
@@ -5,9 +5,9 @@ import (
"fmt"
"path/filepath"
- "github.com/ezzek/skill-sync/internal/importer"
- "github.com/ezzek/skill-sync/internal/models"
- "github.com/ezzek/skill-sync/internal/tui"
+ "github.com/eezzekl/skill-sync/internal/importer"
+ "github.com/eezzekl/skill-sync/internal/models"
+ "github.com/eezzekl/skill-sync/internal/tui"
"github.com/spf13/cobra"
)
diff --git a/internal/cli/sync.go b/internal/cli/sync.go
index 2ef75c1..440049f 100644
--- a/internal/cli/sync.go
+++ b/internal/cli/sync.go
@@ -5,12 +5,12 @@ import (
"os"
"sort"
- "github.com/ezzek/skill-sync/internal/agent"
- "github.com/ezzek/skill-sync/internal/agent/config_resolver"
- "github.com/ezzek/skill-sync/internal/agent/discovery"
- "github.com/ezzek/skill-sync/internal/mesh"
- "github.com/ezzek/skill-sync/internal/models"
- internalsync "github.com/ezzek/skill-sync/internal/sync"
+ "github.com/eezzekl/skill-sync/internal/agent"
+ "github.com/eezzekl/skill-sync/internal/agent/config_resolver"
+ "github.com/eezzekl/skill-sync/internal/agent/discovery"
+ "github.com/eezzekl/skill-sync/internal/mesh"
+ "github.com/eezzekl/skill-sync/internal/models"
+ internalsync "github.com/eezzekl/skill-sync/internal/sync"
"github.com/spf13/cobra"
)
diff --git a/internal/cli/sync_test.go b/internal/cli/sync_test.go
index 97cfac3..d7884f5 100644
--- a/internal/cli/sync_test.go
+++ b/internal/cli/sync_test.go
@@ -6,7 +6,7 @@ import (
"strings"
"testing"
- "github.com/ezzek/skill-sync/internal/cli"
+ "github.com/eezzekl/skill-sync/internal/cli"
)
// helper: create a SKILL.md file with given content at
/skills//SKILL.md
diff --git a/internal/cli/verify.go b/internal/cli/verify.go
index 43e794c..4ca5813 100644
--- a/internal/cli/verify.go
+++ b/internal/cli/verify.go
@@ -6,10 +6,10 @@ import (
"os"
"strings"
- "github.com/ezzek/skill-sync/internal/agent"
- "github.com/ezzek/skill-sync/internal/agent/config_resolver"
- "github.com/ezzek/skill-sync/internal/agent/discovery"
- "github.com/ezzek/skill-sync/internal/mesh"
+ "github.com/eezzekl/skill-sync/internal/agent"
+ "github.com/eezzekl/skill-sync/internal/agent/config_resolver"
+ "github.com/eezzekl/skill-sync/internal/agent/discovery"
+ "github.com/eezzekl/skill-sync/internal/mesh"
"github.com/spf13/cobra"
)
diff --git a/internal/cli/verify_test.go b/internal/cli/verify_test.go
index 48de3bd..9dda1f6 100644
--- a/internal/cli/verify_test.go
+++ b/internal/cli/verify_test.go
@@ -7,7 +7,7 @@ import (
"strings"
"testing"
- "github.com/ezzek/skill-sync/internal/cli"
+ "github.com/eezzekl/skill-sync/internal/cli"
)
func TestNewVerifyCmd(t *testing.T) {
diff --git a/internal/importer/importer.go b/internal/importer/importer.go
index 8dc9f15..ca6dac6 100644
--- a/internal/importer/importer.go
+++ b/internal/importer/importer.go
@@ -10,9 +10,9 @@ import (
"strings"
"time"
- "github.com/ezzek/skill-sync/internal/mesh"
- "github.com/ezzek/skill-sync/internal/models"
- "github.com/ezzek/skill-sync/internal/writer"
+ "github.com/eezzekl/skill-sync/internal/mesh"
+ "github.com/eezzekl/skill-sync/internal/models"
+ "github.com/eezzekl/skill-sync/internal/writer"
"gopkg.in/yaml.v3"
)
diff --git a/internal/importer/importer_test.go b/internal/importer/importer_test.go
index 848ad85..204e8bd 100644
--- a/internal/importer/importer_test.go
+++ b/internal/importer/importer_test.go
@@ -9,7 +9,7 @@ import (
"testing"
"time"
- "github.com/ezzek/skill-sync/internal/models"
+ "github.com/eezzekl/skill-sync/internal/models"
)
// makeSkillDir creates a minimal skill directory with a SKILL.md at
diff --git a/internal/mesh/resolver.go b/internal/mesh/resolver.go
index d1c3470..b76f7ae 100644
--- a/internal/mesh/resolver.go
+++ b/internal/mesh/resolver.go
@@ -3,7 +3,7 @@ package mesh
import (
"errors"
- "github.com/ezzek/skill-sync/internal/models"
+ "github.com/eezzekl/skill-sync/internal/models"
)
// Resolver determines the winning skill version.
diff --git a/internal/mesh/resolver_test.go b/internal/mesh/resolver_test.go
index 1b5cdd6..692a491 100644
--- a/internal/mesh/resolver_test.go
+++ b/internal/mesh/resolver_test.go
@@ -4,8 +4,8 @@ import (
"testing"
"time"
- "github.com/ezzek/skill-sync/internal/mesh"
- "github.com/ezzek/skill-sync/internal/models"
+ "github.com/eezzekl/skill-sync/internal/mesh"
+ "github.com/eezzekl/skill-sync/internal/models"
)
func TestResolver_Resolve(t *testing.T) {
diff --git a/internal/mesh/scanner.go b/internal/mesh/scanner.go
index 7e9c48d..214f5c8 100644
--- a/internal/mesh/scanner.go
+++ b/internal/mesh/scanner.go
@@ -9,7 +9,7 @@ import (
"path/filepath"
"strings"
- "github.com/ezzek/skill-sync/internal/models"
+ "github.com/eezzekl/skill-sync/internal/models"
"gopkg.in/yaml.v3"
)
diff --git a/internal/mesh/scanner_test.go b/internal/mesh/scanner_test.go
index 9dc1ad3..fefa291 100644
--- a/internal/mesh/scanner_test.go
+++ b/internal/mesh/scanner_test.go
@@ -7,7 +7,7 @@ import (
"path/filepath"
"testing"
- "github.com/ezzek/skill-sync/internal/mesh"
+ "github.com/eezzekl/skill-sync/internal/mesh"
)
func TestScanner_Scan(t *testing.T) {
diff --git a/internal/sync/engine.go b/internal/sync/engine.go
index e7caecf..a084251 100644
--- a/internal/sync/engine.go
+++ b/internal/sync/engine.go
@@ -6,8 +6,8 @@ import (
"os"
"path/filepath"
- "github.com/ezzek/skill-sync/internal/models"
- "github.com/ezzek/skill-sync/internal/writer"
+ "github.com/eezzekl/skill-sync/internal/models"
+ "github.com/eezzekl/skill-sync/internal/writer"
)
type Engine interface {
diff --git a/internal/sync/engine_test.go b/internal/sync/engine_test.go
index d453903..94c5b83 100644
--- a/internal/sync/engine_test.go
+++ b/internal/sync/engine_test.go
@@ -6,8 +6,8 @@ import (
"runtime"
"testing"
- "github.com/ezzek/skill-sync/internal/models"
- "github.com/ezzek/skill-sync/internal/sync"
+ "github.com/eezzekl/skill-sync/internal/models"
+ "github.com/eezzekl/skill-sync/internal/sync"
)
func TestEngine_Sync(t *testing.T) {
diff --git a/internal/tui/config_view/model.go b/internal/tui/config_view/model.go
index 490cde7..ff9e64e 100644
--- a/internal/tui/config_view/model.go
+++ b/internal/tui/config_view/model.go
@@ -5,8 +5,8 @@ import (
"strings"
tea "github.com/charmbracelet/bubbletea"
- "github.com/ezzek/skill-sync/internal/tui/shared_toggle"
- "github.com/ezzek/skill-sync/internal/tui/styles"
+ "github.com/eezzekl/skill-sync/internal/tui/shared_toggle"
+ "github.com/eezzekl/skill-sync/internal/tui/styles"
)
type UpdateConfigMsg struct {
diff --git a/internal/tui/import_skill_view/model.go b/internal/tui/import_skill_view/model.go
index aae8901..9d82419 100644
--- a/internal/tui/import_skill_view/model.go
+++ b/internal/tui/import_skill_view/model.go
@@ -5,8 +5,8 @@ import (
"strings"
tea "github.com/charmbracelet/bubbletea"
- "github.com/ezzek/skill-sync/internal/importer"
- "github.com/ezzek/skill-sync/internal/tui/styles"
+ "github.com/eezzekl/skill-sync/internal/importer"
+ "github.com/eezzekl/skill-sync/internal/tui/styles"
)
// ConfirmedMsg carries the skill the user selected for import.
diff --git a/internal/tui/import_skill_view/model_test.go b/internal/tui/import_skill_view/model_test.go
index fd0944f..8530b13 100644
--- a/internal/tui/import_skill_view/model_test.go
+++ b/internal/tui/import_skill_view/model_test.go
@@ -9,8 +9,8 @@ import (
tea "github.com/charmbracelet/bubbletea"
"github.com/charmbracelet/x/exp/teatest"
- "github.com/ezzek/skill-sync/internal/importer"
- "github.com/ezzek/skill-sync/internal/models"
+ "github.com/eezzekl/skill-sync/internal/importer"
+ "github.com/eezzekl/skill-sync/internal/models"
)
func makeCandidate(skillID, name, desc string, isConflict bool) importer.SkillCandidate {
diff --git a/internal/tui/import_source_view/model.go b/internal/tui/import_source_view/model.go
index 4f784ab..56b41bf 100644
--- a/internal/tui/import_source_view/model.go
+++ b/internal/tui/import_source_view/model.go
@@ -5,8 +5,8 @@ import (
"strings"
tea "github.com/charmbracelet/bubbletea"
- "github.com/ezzek/skill-sync/internal/tui/shared_toggle"
- "github.com/ezzek/skill-sync/internal/tui/styles"
+ "github.com/eezzekl/skill-sync/internal/tui/shared_toggle"
+ "github.com/eezzekl/skill-sync/internal/tui/styles"
)
// ConfirmedMsg carries the subset of source directories the user kept checked.
diff --git a/internal/tui/init_view/model.go b/internal/tui/init_view/model.go
index cf7f194..ffb7f8d 100644
--- a/internal/tui/init_view/model.go
+++ b/internal/tui/init_view/model.go
@@ -6,8 +6,8 @@ import (
"strings"
tea "github.com/charmbracelet/bubbletea"
- "github.com/ezzek/skill-sync/internal/tui/shared_toggle"
- "github.com/ezzek/skill-sync/internal/tui/styles"
+ "github.com/eezzekl/skill-sync/internal/tui/shared_toggle"
+ "github.com/eezzekl/skill-sync/internal/tui/styles"
)
type InitConfigMsg struct {
diff --git a/internal/tui/menu/model.go b/internal/tui/menu/model.go
index 42c2801..f9a1293 100644
--- a/internal/tui/menu/model.go
+++ b/internal/tui/menu/model.go
@@ -3,7 +3,7 @@ package menu
import (
"github.com/charmbracelet/bubbles/list"
tea "github.com/charmbracelet/bubbletea"
- "github.com/ezzek/skill-sync/internal/tui/styles"
+ "github.com/eezzekl/skill-sync/internal/tui/styles"
)
type MenuSelectionMsg struct {
diff --git a/internal/tui/output_view/model.go b/internal/tui/output_view/model.go
index 6a95567..48b5e7f 100644
--- a/internal/tui/output_view/model.go
+++ b/internal/tui/output_view/model.go
@@ -5,7 +5,7 @@ import (
"strings"
tea "github.com/charmbracelet/bubbletea"
- "github.com/ezzek/skill-sync/internal/tui/styles"
+ "github.com/eezzekl/skill-sync/internal/tui/styles"
)
const maxVisible = 20
diff --git a/internal/tui/program.go b/internal/tui/program.go
index 1edc6a5..352485e 100644
--- a/internal/tui/program.go
+++ b/internal/tui/program.go
@@ -7,19 +7,19 @@ import (
"path/filepath"
tea "github.com/charmbracelet/bubbletea"
- "github.com/ezzek/skill-sync/internal/agent"
- "github.com/ezzek/skill-sync/internal/agent/config_resolver"
- "github.com/ezzek/skill-sync/internal/agent/discovery"
- "github.com/ezzek/skill-sync/internal/importer"
- "github.com/ezzek/skill-sync/internal/models"
- "github.com/ezzek/skill-sync/internal/tui/config_view"
- "github.com/ezzek/skill-sync/internal/tui/import_skill_view"
- "github.com/ezzek/skill-sync/internal/tui/import_source_view"
- "github.com/ezzek/skill-sync/internal/tui/init_view"
- "github.com/ezzek/skill-sync/internal/tui/menu"
- "github.com/ezzek/skill-sync/internal/tui/output_view"
- "github.com/ezzek/skill-sync/internal/tui/sync_select_view"
- "github.com/ezzek/skill-sync/internal/writer"
+ "github.com/eezzekl/skill-sync/internal/agent"
+ "github.com/eezzekl/skill-sync/internal/agent/config_resolver"
+ "github.com/eezzekl/skill-sync/internal/agent/discovery"
+ "github.com/eezzekl/skill-sync/internal/importer"
+ "github.com/eezzekl/skill-sync/internal/models"
+ "github.com/eezzekl/skill-sync/internal/tui/config_view"
+ "github.com/eezzekl/skill-sync/internal/tui/import_skill_view"
+ "github.com/eezzekl/skill-sync/internal/tui/import_source_view"
+ "github.com/eezzekl/skill-sync/internal/tui/init_view"
+ "github.com/eezzekl/skill-sync/internal/tui/menu"
+ "github.com/eezzekl/skill-sync/internal/tui/output_view"
+ "github.com/eezzekl/skill-sync/internal/tui/sync_select_view"
+ "github.com/eezzekl/skill-sync/internal/writer"
"gopkg.in/yaml.v3"
)
diff --git a/internal/tui/program_test.go b/internal/tui/program_test.go
index 6a62295..d21ca38 100644
--- a/internal/tui/program_test.go
+++ b/internal/tui/program_test.go
@@ -4,15 +4,15 @@ import (
"testing"
tea "github.com/charmbracelet/bubbletea"
- "github.com/ezzek/skill-sync/internal/importer"
- "github.com/ezzek/skill-sync/internal/models"
- "github.com/ezzek/skill-sync/internal/tui/config_view"
- "github.com/ezzek/skill-sync/internal/tui/import_skill_view"
- "github.com/ezzek/skill-sync/internal/tui/import_source_view"
- "github.com/ezzek/skill-sync/internal/tui/init_view"
- "github.com/ezzek/skill-sync/internal/tui/menu"
- "github.com/ezzek/skill-sync/internal/tui/output_view"
- "github.com/ezzek/skill-sync/internal/tui/sync_select_view"
+ "github.com/eezzekl/skill-sync/internal/importer"
+ "github.com/eezzekl/skill-sync/internal/models"
+ "github.com/eezzekl/skill-sync/internal/tui/config_view"
+ "github.com/eezzekl/skill-sync/internal/tui/import_skill_view"
+ "github.com/eezzekl/skill-sync/internal/tui/import_source_view"
+ "github.com/eezzekl/skill-sync/internal/tui/init_view"
+ "github.com/eezzekl/skill-sync/internal/tui/menu"
+ "github.com/eezzekl/skill-sync/internal/tui/output_view"
+ "github.com/eezzekl/skill-sync/internal/tui/sync_select_view"
)
func TestRootModelTransitions(t *testing.T) {
diff --git a/internal/tui/shared_toggle/model.go b/internal/tui/shared_toggle/model.go
index c6cab72..4d95167 100644
--- a/internal/tui/shared_toggle/model.go
+++ b/internal/tui/shared_toggle/model.go
@@ -5,7 +5,7 @@ import (
"strings"
tea "github.com/charmbracelet/bubbletea"
- "github.com/ezzek/skill-sync/internal/tui/styles"
+ "github.com/eezzekl/skill-sync/internal/tui/styles"
)
type Item struct {
diff --git a/internal/tui/sync_select_view/model.go b/internal/tui/sync_select_view/model.go
index fc1317b..183a602 100644
--- a/internal/tui/sync_select_view/model.go
+++ b/internal/tui/sync_select_view/model.go
@@ -5,9 +5,9 @@ import (
"strings"
tea "github.com/charmbracelet/bubbletea"
- "github.com/ezzek/skill-sync/internal/models"
- "github.com/ezzek/skill-sync/internal/tui/shared_toggle"
- "github.com/ezzek/skill-sync/internal/tui/styles"
+ "github.com/eezzekl/skill-sync/internal/models"
+ "github.com/eezzekl/skill-sync/internal/tui/shared_toggle"
+ "github.com/eezzekl/skill-sync/internal/tui/styles"
)
// SyncSelectedMsg carries the skill IDs the user confirmed for sync.
diff --git a/internal/tui/sync_select_view/model_test.go b/internal/tui/sync_select_view/model_test.go
index d7d9309..26da643 100644
--- a/internal/tui/sync_select_view/model_test.go
+++ b/internal/tui/sync_select_view/model_test.go
@@ -5,7 +5,7 @@ import (
"testing"
tea "github.com/charmbracelet/bubbletea"
- "github.com/ezzek/skill-sync/internal/models"
+ "github.com/eezzekl/skill-sync/internal/models"
)
func makeSkills(ids ...string) []models.SkillSyncInfo {
diff --git a/odd/tasks/fix-module-path.md b/odd/tasks/fix-module-path.md
new file mode 100644
index 0000000..1cda806
--- /dev/null
+++ b/odd/tasks/fix-module-path.md
@@ -0,0 +1,76 @@
+# Fix the Go module path
+
+## Problem
+
+`go.mod:1` declared `module github.com/ezzek/skill-sync`, but the repository is
+`github.com/eezzekl/skill-sync` — the final `l` was missing. `go install` had
+therefore never worked for any published version:
+
+```
+$ go install github.com/eezzekl/skill-sync/cmd/skill-sync@v1.0.0
+go: github.com/eezzekl/skill-sync/cmd/skill-sync@v1.0.0: version constraints conflict:
+ module declares its path as: github.com/ezzek/skill-sync
+ but was required as: github.com/eezzekl/skill-sync
+```
+
+Present since the initial commit `dac6be6` (`git log -L1,1:go.mod`), so v1.0.0,
+v0.1.0 and v0.2.0 all ship the wrong path. Homebrew, Scoop and direct tarball
+downloads are unaffected: they distribute prebuilt binaries.
+
+`SECURITY.md:16` carries the same typo in the private vulnerability reporting
+URL, which makes that link a 404.
+
+## Why no existing test caught it
+
+The wrong path is internally *consistent*: every import agrees with `go.mod`, so
+the compiler and the entire suite are happy. Only an external consumer resolving
+the module through the proxy observes the mismatch. That is the invariant worth
+pinning with a guard test.
+
+## Testability
+
+This is a build-level identity change, not a behavior change, so most of it is
+verified by compilation plus the existing suite. One part *is* meaningfully
+test-first: a guard asserting that the declared module path equals the canonical
+repository path. That test fails today and would have caught the bug on day one.
+
+## Tasks
+
+- [x] 1. RED: guard test asserting `go.mod` declares the canonical module path.
+- [x] 2. GREEN: rewrite the module path in `go.mod` and all 93 occurrences.
+- [x] 3. Fix the broken `SECURITY.md` advisory URL.
+- [x] 4. Update the import examples in the openspec design/tasks documents.
+- [x] 5. Verify: full suite with `-race`, `go vet`, `gofmt`, cross-compile matrix.
+- [ ] 6. Release `v1.1.0` so the proxy's `@latest` moves off `v1.0.0`.
+
+## Note on `v1.0.0`
+
+Deleting the `v1.0.0` tag cannot fix the version ordering: proxy.golang.org has
+permanently cached `v1.0.0`, `v0.1.0` and `v0.2.0`, and its `@latest` resolves to
+`v1.0.0`. Only publishing a semver-greater tag moves it. Hence `v1.1.0`.
+
+## Evidence
+
+**RED (task 1)** — `go test ./cmd/skill-sync/`:
+
+```
+--- FAIL: TestGoModDeclaresCanonicalModulePath
+ go.mod module path mismatch:
+ declared: github.com/ezzek/skill-sync
+ canonical: github.com/eezzekl/skill-sync
+```
+
+**GREEN** — 35 files rewritten, 0 stale references left in tracked files.
+`go.mod` diff is the single module line; `go.sum` untouched.
+
+- `go test -race ./...` — 19 packages pass, 0 failures
+- `go vet ./...` — clean
+- `gofmt -l` — clean
+- Cross-compile — all 6 GoReleaser targets build
+- `--version` wiring intact (`skill-sync version 1.1.0-rc` from ldflags)
+
+**Process note:** the bulk `sed` also rewrote this document, which quotes the old
+broken path as evidence, leaving self-contradictory text ("declares
+`.../eezzekl/...` but the repository is `.../eezzekl/...` — the final `l` is
+missing"). The evidence block was restored by hand. A blind repository-wide
+replacement will corrupt any document that intentionally quotes the old value.
diff --git a/openspec/changes/skill-import/design.md b/openspec/changes/skill-import/design.md
index 395cc55..2c1a2eb 100644
--- a/openspec/changes/skill-import/design.md
+++ b/openspec/changes/skill-import/design.md
@@ -142,9 +142,9 @@ import (
"strings"
"time"
- "github.com/ezzek/skill-sync/internal/mesh"
- "github.com/ezzek/skill-sync/internal/models"
- "github.com/ezzek/skill-sync/internal/writer"
+ "github.com/eezzekl/skill-sync/internal/mesh"
+ "github.com/eezzekl/skill-sync/internal/models"
+ "github.com/eezzekl/skill-sync/internal/writer"
"gopkg.in/yaml.v3"
)
@@ -442,8 +442,8 @@ import (
"strings"
tea "github.com/charmbracelet/bubbletea"
- "github.com/ezzek/skill-sync/internal/tui/shared_toggle"
- "github.com/ezzek/skill-sync/internal/tui/styles"
+ "github.com/eezzekl/skill-sync/internal/tui/shared_toggle"
+ "github.com/eezzekl/skill-sync/internal/tui/styles"
)
// ConfirmedMsg carries the subset of source directories the user kept checked.
@@ -533,8 +533,8 @@ import (
"strings"
tea "github.com/charmbracelet/bubbletea"
- "github.com/ezzek/skill-sync/internal/importer"
- "github.com/ezzek/skill-sync/internal/tui/styles"
+ "github.com/eezzekl/skill-sync/internal/importer"
+ "github.com/eezzekl/skill-sync/internal/tui/styles"
)
// ConfirmedMsg carries the skill the user selected for import.
@@ -644,9 +644,9 @@ func (m Model) View() string {
### 8.1 New imports
```go
-"github.com/ezzek/skill-sync/internal/importer"
-"github.com/ezzek/skill-sync/internal/tui/import_source_view"
-"github.com/ezzek/skill-sync/internal/tui/import_skill_view"
+"github.com/eezzekl/skill-sync/internal/importer"
+"github.com/eezzekl/skill-sync/internal/tui/import_source_view"
+"github.com/eezzekl/skill-sync/internal/tui/import_skill_view"
```
### 8.2 State constants (add after `stateOutput`)
@@ -812,9 +812,9 @@ import (
"os"
"path/filepath"
- "github.com/ezzek/skill-sync/internal/agent"
- "github.com/ezzek/skill-sync/internal/agent/config_resolver"
- "github.com/ezzek/skill-sync/internal/importer"
+ "github.com/eezzekl/skill-sync/internal/agent"
+ "github.com/eezzekl/skill-sync/internal/agent/config_resolver"
+ "github.com/eezzekl/skill-sync/internal/importer"
"github.com/spf13/cobra"
)
@@ -940,7 +940,7 @@ New imports needed in `root.go`:
"os"
"path/filepath"
"fmt"
-"github.com/ezzek/skill-sync/internal/importer"
+"github.com/eezzekl/skill-sync/internal/importer"
```
---
diff --git a/openspec/changes/skill-import/tasks.md b/openspec/changes/skill-import/tasks.md
index 48ed8b6..b4fbe4c 100644
--- a/openspec/changes/skill-import/tasks.md
+++ b/openspec/changes/skill-import/tasks.md
@@ -236,7 +236,7 @@ GREEN:
**Steps:**
1. Add `cmd.AddCommand(NewImportCmd())` in `NewRootCmd`.
-2. Add `"os"`, `"path/filepath"`, `"fmt"`, `"github.com/ezzek/skill-sync/internal/importer"` imports.
+2. Add `"os"`, `"path/filepath"`, `"fmt"`, `"github.com/eezzekl/skill-sync/internal/importer"` imports.
3. Wire `FindSkillsForImport` and `RunImport` callbacks in the default `RunE` (design §11.2):
- `FindSkillsForImport`: build `importer.New(sources, destRoot)` from `sources` arg + `cwd`; return `FindAllSkills()`.
- `RunImport`: guard `candidate.IsConflict → ErrConflict`; build `importer.New(nil, destRoot)`; call `CopySkill`.