You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
basectl test <project> delegates to a manifest-declared test command, giving every project in the workspace a consistent test entrypoint. But test is the only such command. A project also needs to run its dev server, linter, formatter, and other recurring commands — and today each of those requires knowing the project's own tooling and working directory.
The vision: any project in the workspace is operable through one consistent control surface:
basectl run bankbuddy dev
basectl run bankbuddy lint
basectl run bankbuddy format
Proposed Manifest Shape
Extend base_manifest.yaml with a commands section:
basectl doctor <project> should validate that declared commands are non-empty strings; it should NOT validate that the binary exists (that is the adapter's job).
basectl run <project> --list provides discoverability without needing to inspect the manifest manually.
This does not replace mise run or just — projects using those tools should declare commands.test: mise run test rather than reimplementing task logic in Base.
Relationship To basectl test
test stays as a first-class manifest field with its own dedicated command (basectl test) for clarity and discoverability. commands is the general slot for everything else. basectl run <project> test should delegate to the test contract rather than a commands.test entry to avoid duplication.
Problem
basectl test <project>delegates to a manifest-declared test command, giving every project in the workspace a consistent test entrypoint. Buttestis the only such command. A project also needs to run its dev server, linter, formatter, and other recurring commands — and today each of those requires knowing the project's own tooling and working directory.The vision: any project in the workspace is operable through one consistent control surface:
Proposed Manifest Shape
Extend
base_manifest.yamlwith acommandssection:Proposed CLI
Design Constraints
commandsmust remain declarative strings, not scripts or shell blocks. This is not a Makefile.basectl test.-- extra argsare appended to the declared command string (same pattern as thebasectl testargs-passthrough issue basectl test should support passing extra arguments to the test command #255).basectl doctor <project>should validate that declared commands are non-empty strings; it should NOT validate that the binary exists (that is the adapter's job).basectl run <project> --listprovides discoverability without needing to inspect the manifest manually.mise runorjust— projects using those tools should declarecommands.test: mise run testrather than reimplementing task logic in Base.Relationship To
basectl testteststays as a first-class manifest field with its own dedicated command (basectl test) for clarity and discoverability.commandsis the general slot for everything else.basectl run <project> testshould delegate to thetestcontract rather than acommands.testentry to avoid duplication.Precondition
commandsis formally added to the schema