Skip to content

Add richer help and isobox doctor skeleton - #63

Merged
parthashirolkar merged 5 commits into
mainfrom
feat/cli-help-doctor-foundation
Jun 28, 2026
Merged

parthashirolkar merged 5 commits into
mainfrom
feat/cli-help-doctor-foundation

Conversation

@parthashirolkar

@parthashirolkar parthashirolkar commented Jun 28, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • Add the rich top-level and per-command help surface from issue Add richer top-level and per-command help #57. isobox --help, isobox -h, and isobox help now explain what isobox is, list every command with a short purpose, and use the project glossary terms (Task, Workspace, Sandbox, Task Record, Task Result, Promotion, Workload Command). isobox <command> --help for init, run, tool, promote, version, and doctor prints command-specific usage and examples. Unknown commands and the no-argument case still return a concise actionable usage line.
  • Add the first vertical slice of isobox doctor from issue Add isobox doctor skeleton with findings and exit semantics #49: a read-only diagnostic command with [path] argument parsing, a Doctor Check / Doctor Finding model, ok / warning / error severity aggregation, grouped human-readable output, and exit-code behavior where only error findings return status 1. The first demoable check is isobox version metadata reported as ok. The grouped output distinguishes global checks from project checks so richer checks can land in follow-up slices without changing the CLI shape.
  • Add the Update Target, Doctor Check, and Doctor Finding terms to the project domain language in CONTEXT.md and document the new doctor command in the README.
  • Exclude the site/node_modules/ JS dependency tree from the isobox test run (it ships a Go port of flatted that is not isobox code).

Closes #57, closes #49.

Validation

  • make test, make lint, make build.
  • go test -count=1 -race $(make go-isobox-packages) from the feature branch.
  • CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o /tmp/isobox ./cmd/isobox and the arm64 equivalent.
  • Manual isobox --help, isobox doctor, isobox doctor <dir>, isobox doctor <missing>, isobox doctor <file>, and isobox doctor <a> <b> invocations to confirm the externally visible shape matches the issue acceptance criteria.

View with Codesmith Autofix with Codesmith
Need help on this PR? Tag /codesmith with what you need. Autofix is disabled.

…anguage

These terms come from the in-flight 0.1.1 first-run work: isobox update
(parent PRD #56) and isobox doctor (parent PRD #48). Recording them in
the project glossary keeps issue #49 and #57's CLI surface consistent
with the documented vocabulary.
isobox --help, -h, and help now print what isobox is, list every command
with a short purpose, and use the project glossary terms (Task, Workspace,
Sandbox, Task Record, Task Result, Promotion, Workload Command) the
documentation uses.

isobox <command> --help for init, run, tool, promote, version, and doctor
prints command-specific usage and examples so users can copy a minimal
command without reading the README.

Unknown commands and the no-argument case still return a concise actionable
usage line that points the user at 'isobox --help'.

A stub doctorCmd exists so the binary builds; the real doctor
implementation lands in the next slice (issue #49).

Integration tests cover the externally visible CLI shape for both the
top-level and per-command help surfaces and assert the unknown-command
usage stays concise.
…s (issue #49)

isobox doctor is a new read-only diagnostic command. The 0.1.1 first slice
establishes the command surface, the Doctor Check / Doctor Finding model,
and the exit-code behavior the parent PRD #48 needs.

This slice ships:

  - isobox doctor [path] with [path] validation (one existing directory;
    usage error otherwise)
  - Doctor Finding severities ok, warning, and error
  - Highest() / ExitCode() aggregation (1 only when any error finding)
  - Grouped human-readable output (Global checks / Project checks) so the
    shape is stable when richer checks land in follow-up issues
  - The first demoable check: isobox version metadata reported as ok
  - Read-only enforcement: doctor never mutates host or project state

The internal/doctor package is the home for the Check / Report / Severity
model. The cmd/isobox/doctor.go file owns CLI argument parsing and exit-
code wiring. Integration tests cover argument parsing, severity
aggregation, the read-only guarantee, and the externally visible output
shape.
- README: add a 'Run A Diagnostic' section that documents isobox doctor
  as the recommended first step on a fresh install and points users at
  the richer help surface.
- CHANGELOG: list the new help surface and the isobox doctor command
  under Unreleased.
- docs_test: assert the README documents the doctor command and the
  richer help surface so future changes cannot silently drop them.
- help_integration_test: drop the unused helpTextFor helper now that
  the tests use buildIsobox directly.
The site landing page is a separate JS project whose node_modules
directory happens to ship a Go port of 'flatted' as a transitive
dependency. 'go test ./...' was walking into that tree and reporting
a [no test files] line for the unrelated Go package, which made the
test output noisier and could pull in a future site dependency.

Filter the test package list through 'grep -v /node_modules/' via a
small go-isobox-packages Make target. The build target keeps 'go
build ./...' because the site Go package compiles cleanly and the
noise is only on the test side.
@parthashirolkar
parthashirolkar merged commit 90b7eda into main Jun 28, 2026
1 check passed
@parthashirolkar
parthashirolkar deleted the feat/cli-help-doctor-foundation branch June 28, 2026 10:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add richer top-level and per-command help Add isobox doctor skeleton with findings and exit semantics

1 participant