Repository navigation
feat: gc — GROUNDCONTROL CLI for agents (Go), with agent skills - #1
Merged
Merged
Conversation
Moved out of MakersLab-ai/groundcontrol (task 79c7b2b2, PR #151) into its own repo, like monologue-toolkit: Bun-compiled single-file binaries for darwin/linux × arm64/amd64, install.sh (SHA-256, pinnable --version), profiles, gc listen (successor of gc-worker.sh), exit 3 when not connected, thin bootstrap skills; the know-how is served by GROUNDCONTROL (gc guide). src/client.ts + src/redact.ts are verbatim copies of the groundcontrol repo's claude-code-plugin/server/src (scripts/sync-client.sh). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EkcpohyW9PXcHrnYF8UuQS
Operator decision: the plugins will be retired, so the CLI shares no code with GROUNDCONTROL — its contract is the REST API plus the public agent guide. Go gives a ~7 MB static binary, goreleaser releases (darwin/arm64 is ad-hoc signed by the Go linker) and no Bun runtime quirks. - Same command surface, flags, help texts, output, exit codes (0/1/2/3) and env vars as the TS version (help byte-identical for all 57 paths; 61 data commands compared against one mock), same config.json — existing profiles keep working. - install.sh downloads straight from this repo's public GitHub releases (SHA-256 verified, --version pinnable); attached to every release. - No client copy, no sync script, no live guide-drift check. A repo-internal test pins the `gc …` snippets in skills/ and README.md to the command table. - ci.yml: vet, test, skills, goreleaser check + snapshot; release.yml: tag v*. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EkcpohyW9PXcHrnYF8UuQS
- listen: --exec runs in its own process group; first signal SIGTERMs the group and cancels an in-flight poll, a second one SIGKILLs it (exit 130). - HTTP: 30 s timeout for JSON calls, 5 min only for uploads; ids in URL paths are escaped. - listen: a corrupt cursor file skips that workspace with a clear error instead of silently restarting at "now"; a profile without api_url falls back to GC_API_URL / production. - install.sh: body wrapped in main() (truncated `curl | sh` runs nothing), no set -u trap on an unset HOME, no leftover .gc.new; stdin onboarding shown first. goreleaser: prerelease: auto. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EkcpohyW9PXcHrnYF8UuQS
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
gc, the GROUNDCONTROL command line for agents, plus its agent skills. Task79c7b2b2; server side in MakersLab-ai/groundcontrol#151.The first commit was the TypeScript/Bun version. The second rewrites it in Go on the operator's decision: the plugins will be retired, so the CLI shares no code with GROUNDCONTROL. Its contract is the REST API plus the public agent guide, with no sync or drift mechanisms.
golang.org/x/term) for darwin/linux × amd64/arm64. darwin/arm64 is ad-hoc signed by the Go linker.--helpis byte-identical for all 57 command paths.config.jsonformat is unchanged, so existing profiles keep working.gc listen: successor ofgc-worker.sh, with one listener-owned cursor per workspace taken from the server'smeta.cursor.gc changes --cursor-filewrites its cursor only after the output succeeded.install.sh: downloads from this repo's public releases, verifies the SHA-256, version pinnable with--version, and linksgroundcontrol→gc. It is attached to every release;groundcontrol.makerslab.ai/install.shredirects to it.ci.ymlruns vet, tests, skills validation,goreleaser checkand a snapshot build.release.ymlruns on tagv*.Verified:
go vet,go test ./...(all packages ok),scripts/validate-skills.sh.goreleaser checkand a snapshot build of all 4 targets.install.shagainst a local server, including a tampered checksum (aborts, installs nothing).profiles,context,tasks get,changes.After merge: tag
v0.1.0→ release →curl -fsSL https://groundcontrol.makerslab.ai/install.sh | sh(works once #151 is deployed).🤖 Generated with Claude Code
https://claude.ai/code/session_01EkcpohyW9PXcHrnYF8UuQS