Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
agentcli-go framework reference for building Go CLI tools. Use when working on agentcli-go itself, scaffolding new CLI projects, adding commands, integrating...
agentcli-go framework reference for building Go CLI tools. Use when working on agentcli-go itself, scaffolding new CLI projects, adding commands, integrating...
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
Shared Go CLI helpers and framework modules. Module: github.com/gh-xj/agentcli-go Repo: github.com/gh-xj/agentcli-go | Versioning: v0.x.y (pre-1.0)
FileExported Symbolslog.goInitLogger() โ zerolog setup, respects -v/--verboseargs.goParseArgs(args), RequireArg(args, name), GetArg(args, name), HasFlag(args, name)exec.goRunCommand(name, args...), RunOsascript(script), Which(bin), CheckDependency(bin)fs.goFileExists(path), EnsureDir(path), GetBaseName(path)core_context.goAppContext{Meta, Values}, NewAppContext(ctx)lifecycle.goHook interface (Preflight, Postflight), RunLifecycle(app, hook, run)errors.goCLIError, ResolveExitCode(err), ExitSuccess, ExitUsagescaffold.goScaffoldNew(baseDir, name, module), ScaffoldAddCommand(rootDir, name, desc, preset), Doctor(rootDir) DoctorReportcobrax/cobrax.goExecute(RootSpec, args) int, NewRoot(RootSpec) *cobra.Command, CommandSpec, RootSpecconfigx/configx.goLoad(Options) map[string]any, Decode[T](raw), NormalizeEnv(prefix, environ)
agentcli new --name my-tool --module github.com/me/my-tool # or programmatically: agentcli.ScaffoldNew(".", "my-tool", "github.com/me/my-tool") Generates: main.go, cmd/root.go, internal/app/, internal/config/, internal/io/, internal/tools/smokecheck/, pkg/version/, test/, Taskfile.yml, README.md
agentcli add command --name sync --preset file-sync agentcli add command --name deploy --desc "run deploy checks" Presets: file-sync, http-client, deploy-helper
agentcli doctor [--dir ./my-tool] # returns DoctorReport JSON with findings
my-tool/ โโโ main.go # os.Exit(cmd.Execute(os.Args[1:])) โโโ cmd/ โ โโโ root.go # cobrax.Execute(RootSpec{...}) โ โโโ <command>.go # func <Name>Command() command โโโ internal/ โ โโโ app/{bootstrap,lifecycle,errors}.go โ โโโ config/{schema,load}.go โ โโโ io/output.go โ โโโ tools/smokecheck/main.go โโโ pkg/version/version.go โโโ test/ โ โโโ e2e/cli_test.go โ โโโ smoke/version.schema.json โโโ Taskfile.yml
// cmd/root.go return cobrax.Execute(cobrax.RootSpec{ Use: "my-tool", Short: "my-tool CLI", Meta: agentcli.AppMeta{Name: "my-tool", Version: version.Version}, Commands: []cobrax.CommandSpec{ {Use: "sync", Short: "sync files", Run: SyncCommand().Run}, }, }, args) Persistent flags auto-wired: --verbose/-v, --config, --json, --no-color Values accessible via app.Values["json"], app.Values["config"], etc.
raw, err := configx.Load(configx.Options{ Defaults: map[string]any{"env": "default"}, FilePath: configPath, // optional JSON file Env: configx.NormalizeEnv("MYTOOL_", os.Environ()), Flags: map[string]string{"env": flagVal}, }) cfg, err := configx.Decode[config.Config](raw) // Precedence: Defaults < File < Env < Flags
TaskPurposetask ciCanonical CI: preflight + lint + test + build + smoke + schema checkstask verifyLocal aggregate (wraps ci)task lintgo vet + golangci-linttask smokeDeterministic smoke tests (subset of unit tests)task schema:checkValidate JSON contracts against schemastask docs:checkEnsure skill docs match CLI help signaturestask fmtFormat all Go files
Flat package โ everything in package agentcli, no sub-packages (except cobrax, configx) Exported only โ all functions PascalCase; this is a library No business logic โ generic utilities only; must be reused across 2+ projects to qualify log.Fatal allowed in RequireArg, CheckDependency (CLI-oriented helpers) Minimal deps โ zerolog, lo, cobra only; justify new additions
Project-specific logic (put that in consuming projects) Adding functions used by only one project
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.