Migrates go.mod + 22 Go imports + README + comments + generated config
templates off the dead github.com/Molecule-AI/ identity onto the vanity
host go.moleculesai.app, owned by us.
Surfaces touched:
- go.mod module declaration: github.com/Molecule-AI/molecule-cli ->
go.moleculesai.app/cli
- Every Go import statement under cmd/ + internal/
- README install section: rewritten to lead with the vanity install
command (the previous text was migration-in-progress hedging)
- Comment URLs in internal/backends/backend.go + internal/cmd/connect.go
(https://github.com/Molecule-AI/molecule-cli/issues/10) -> point at
git.moleculesai.app/molecule-ai/molecule-cli
- Generated config templates in internal/cmd/init.go +
internal/cmd/config.go: header URL updated so new users land on the
live SCM
- Adds internal/lint/import_path_lint_test.go — structural test that
walks every *.go / *.mod / Dockerfile / *.md / *.sh / *.yml in the
module and rejects future references to github.com/Molecule-AI/ or
Molecule-AI/molecule-monorepo. Mutation-tested before commit.
Test plan
- go build ./... clean
- go test ./... green (cmd/molecule + 5 internal packages + new lint
gate, all pass)
- TestNoLegacyGitHubImportPaths fails on injected canary, passes on
clean tree (no tautology)
Open dependency
- go.moleculesai.app responder must be deployed before
'go install go.moleculesai.app/cli/cmd/molecule@latest' works
externally. Internal builds + 'go build ./cmd/molecule' from a fresh
clone work today (self-referential module path).
- Responder code prepared (worker.js, vendor-portable for CF Workers /
Vercel Edge); deploy tracked separately under internal#71 phase 1.
Pairs with parallel migrations of plugin-gh-identity (#3) +
molecule-controlplane + molecule-core under the same internal#71 sweep.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Allows re-scaffolding an existing molecule.yaml without manual deletion.
Exit code 1 preserved for existing file without --force (usage error path).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Go 1.25 resolves "./cmd/molecule" relative to cmd.Dir as an absolute path
under the CWD, producing the doubled "cmd/molecule/cmd/molecule" error.
Building the whole module from the root and relying on the binary name
from -o is the idiomatic Go approach and avoids path arithmetic entirely.
Also tightened error message to match the new command.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
os.Executable() in Go 1.x parallel tests resolves to <TempDir>/0/molecule.test
making path-based traversal from the binary back to the repo root unreliable.
Switch to os.Getwd() which always returns the repo checkout root in CI
(where `go test ./cmd/molecule/...` is invoked), and skip any path arithmetic.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
runtime.GOEXE is not available in Go 1.25 standard library.
Replace with the standard "go" binary name which is on PATH in CI.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
go vet reports: cmd/molecule/molecule_test.go:209:11: undefined: runtime
runtime.GOEXE is used in mol() to find the Go binary for building the
test binary. The runtime package was referenced but not imported.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- workspace.go: remove no-op _ = workspaceID (workspaceID consumed in runHTTP call)
- molecule_test.go: replace hardcoded /workspace/repos/clone-cli path with
dynamic exe-based resolution so tests pass when built by CI
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Wires shell completion for all 4 shells via Cobra's built-in generators.
Covers the remaining item from the implementation status checklist.
Adds:
- internal/cmd/completion.go: cobra.GenXxxCompletion wrappers with
usage examples for each shell
- 5 new integration tests in cmd/molecule/molecule_test.go:
- TestCLI_Completion_Help (4 shells × help flag)
- TestCLI_Completion_GeneratesScript (4 shells × script output)
- TestCLI_Completion_InvalidShell (exit code 2 on bad shell)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
All test.Fatalf messages referenced "mol <subcommand>" but the binary
is now "molecule". Also fix configSet to use os.WriteFile atomic write
instead of viper.WriteConfig (avoids file-permission edge cases).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Rename all user-facing "mol" references to "molecule" to match the
published binary name (binary: molecule in .goreleaser.yaml):
- root.go: Use string, versionInfo, viper config name, flag descriptions
- init.go: section comment, Short, Long, cfgPath, scaffolded message
- config.go: Long description, Shorts, configFile, WriteFile, Stat check
- molecule_test.go: binary name, version output check, mol.yaml → molecule.yaml
Also fix test helper to use runtime.GOEXE instead of hardcoded /tmp/go/bin/go.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
rootCmd.Use was "mol" while .goreleaser.yaml sets binary: "molecule".
Align to "molecule" to match the published binary name, test
invocations, and docs. Also fix test helper to use runtime.GOEXE
instead of hardcoded /tmp/go/bin/go.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add `mol init` command (internal/cmd/init.go): scaffolds mol.yaml
in the current directory with commented config sections and
environment variable documentation. Exits with a clear "next steps"
message. Checks for existing mol.yaml before overwriting.
- Register initCmd in root.go alongside the other command groups.
- Add 2 integration tests: TestCLI_Init (scaffolding + output)
and TestCLI_Init_AlreadyExists (error path).
- Update CLAUDE.md command reference to list mol init and note it
is checked off the stub repo checklist.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add 24 integration tests in cmd/molecule/molecule_test.go covering
all 18 subcommands (workspace, agent, platform, config) including
error paths for not-found and missing-arg cases
- Tests use httptest mock server; binary built per-test with correct
repo root for go build ./cmd/molecule
- Fix release.yml: correct binary name (molecule not molecli), correct
package path (./cmd/molecule not ./cmd/molecli)
- Add test job (go mod tidy + vet + test) to release.yml, runs on
every PR touching Go files
- Release job gated on test job; conditional on v* tag push
- Mark KI-005 resolved in known-issues.md
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>