Repository navigation
Conversation
Module Scorecard Check
|
| Theme | Before | After |
|---|---|---|
| Presentation & Onboarding | 6 / 17 | 12 / 17 |
| Integration | 10 / 25 | 10 / 25 |
| Credential Hygiene | 16 / 20 | 18 / 20 |
| Restricted-Environment | 7 / 20 | 12 / 20 |
| Engineering Quality | 7 / 10 | 7 / 10 |
| Overall | 50 / 100 | 64 / 100 |
Full scorecard for this PR
| Presentation & Onboarding | Agent Integration | Credential Hygiene | Restricted-Environment Readiness | Engineering Quality | Overall |
|---|---|---|---|---|---|
| 12 / 17 | 10 / 25 | 18 / 20 | 12 / 20 | 7 / 10 | 64 / 100 |
Drilldown
Presentation & Onboarding — 12 / 17
| Criterion | Max | Score | Notes |
|---|---|---|---|
| Configuration-mode examples | 12 | 12 | README shows multiple configured modes: standalone with launcher coder_app, extensions/MCP config (additional_extensions), pinned version (goose_version), and downstream coder_script serialization via the scripts output. Defaults (goose_version = "stable", install_goose = true) are sensible. |
| Visual preview | 5 | 0 | No image, GIF, or video embedded in README. |
Agent Integration — 10 / 25
| Criterion | Max | Score | Notes |
|---|---|---|---|
| AI governance | 10 | 0 | No mention of Coder AI Gateway or Agent Firewall anywhere in README; v4 explicitly drops AgentAPI/Tasks support, not governance features. |
| Dashboard entry point | 5 | 5 | README's "Standalone mode with a launcher app" example documents a full coder_app resource (slug, display_name, icon, open_in, command) launching goose session. |
| Session continuity | 5 | 0 | No documentation of resuming an existing Goose session or wrapping in tmux/screen; goose session is invoked fresh each launch. |
| Managed configuration | 5 | 5 | additional_extensions variable documents managed MCP/extensions config; GOOSE_SYSTEM_PROMPT env var writes .goosehints; module fully owns config.yaml. |
Credential Hygiene — 18 / 20
| Criterion | Max | Score | Notes |
|---|---|---|---|
| Secrets marked sensitive | 16 | 16 | Module itself defines no secret input variables (provider/model are non-sensitive). README example injects ANTHROPIC_API_KEY via coder_env referencing var.anthropic_api_key rather than a literal key — no inline secrets shown. |
| Non-hardcoded auth path | 4 | 2 | README documents injecting provider credentials via coder_env/environment variable, avoiding template-pasted keys, but this is plain env-var injection rather than a ServiceAccount/IAM/OAuth/API-key-helper/AI-Gateway path — only partial credit. |
Restricted-Environment Readiness — 12 / 20
| Criterion | Max | Score | Notes |
|---|---|---|---|
| Mirrorable artifact source | 5 | 0 | Install script hardcodes https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh; no module variable overrides this download URL (goose_version only changes a pinned tag parameter passed to the fixed installer). |
| Bring-your-own binary | 10 | 10 | install_goose = false is documented ("goose must already be on PATH") and tested (preinstalled-binary-required-when-install-disabled), providing a clear way to skip install when goose is baked into the image. |
| Egress transparency | 3 | 0 | No dedicated README section enumerating install/runtime endpoints; the GitHub release URL is only visible in source, not documented. |
| Runs without sudo | 2 | 2 | install.sh.tftpl never invokes sudo; all operations (curl, mkdir, symlink) occur under $HOME/user-writable paths — verified unprivileged in script and tests. |
Engineering Quality — 7 / 10
| Criterion | Max | Score | Notes |
|---|---|---|---|
| Input quality | 6 | 3 | All variables have clear description fields and sensible defaults (e.g. install_goose = true, goose_version = "stable"), but no validation blocks exist anywhere (e.g. for goose_provider, goose_version format). |
| Test coverage | 4 | 4 | main.tftest.hcl covers business logic (defaults, workdir trimming, extension merging, scripts output ordering) and main.test.ts runs extensive end-to-end container tests (install paths, config writing, symlinking, real-binary smoke test). |
Overall — 64 / 100
Raw 59 / 92 → round(59 / 92 × 100) = 64
Tip
You can run this locally by telling your agent: "review this module against .github/scorecard/SCORECARD.md".
Scored against SCORECARD.md with solstice-1. Language-model scores are advisory.
|
Automated review requested by @matifali. Please sanity-check before acting on it.
SummaryThis PR replaces Checks
Findingsshould-fix
nit Verdict: request changes (minor)The module itself works and is well tested. The blocker-ish gap is #1: upgraded workspaces silently keep the |
…config logic Keep v3's install.sh behavior minus AgentAPI: run download_cli.sh, overwrite config.yaml with provider, model, the developer extension and additional_extensions, and write GOOSE_SYSTEM_PROMPT to .goosehints. Drop the extension merge and the GOOSE_PROVIDER/GOOSE_MODEL coder_env exports. Run the installer from a temp dir and link goose into CODER_SCRIPT_BIN_DIR so launchers and downstream scripts find it.
Closes REG-81
Refactor
coder/gooseto install and configure Goose only, matching the claude-code, codex, copilot, cursor-cli, opencode, and kiro-cli (#1161) migrations. The install and config logic is v3'sinstall.shwith only the AgentAPI and Tasks parts removed. Bump to4.0.0.order,group,subdomain,install_agentapi,agentapi_version), thetask_app_idoutput, the start script (GOOSE_TASK_PROMPT), and the task-reportingcoderextension.folderto optionalworkdir(created if missing, as the agentapi module did forfolder).download_cli.sh(GOOSE_VERSION,CONFIGURE=false;stablemaps to the installer default). The URL now points ataaif-goose/goose, where the repo moved, and the installer runs from a temp dir because it downloads into the working directory.config.yamlis still overwritten withGOOSE_PROVIDER,GOOSE_MODEL, thedeveloperextension, andadditional_extensions.GOOSE_SYSTEM_PROMPTis still written to.goosehints.gooseintoCODER_SCRIPT_BIN_DIR: the module no longer launches Goose, and~/.local/binis not on the agentPATH, so launchers and downstream scripts would not find it otherwise.scriptsoutput; README reduced to examples and doc links; rewrite tests.Testing
terraform test(6 passed),bun test main.test.ts(11 passed, container-based, includes a real Goose v1.54.0 install checked withgoose info -v),terraform fmt,terraform validate, prettier, shellcheck on the rendered scriptcoder exp syncscript that findsgoose;config.yamland.goosehintswritten, workdir created;goose runwith onlyCODER_SCRIPT_BIN_DIRonPATHcalled theeverythingextension through Coder AI Gateway; restart and pinnedv1.54.0work, agentreadyGenerated with Coder Agents.