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`.