Repository navigation
cli README: documents -h / -v short flags that exit 2, and says there is no os plugin command group while os plugin build|sign|publish is registered #21310
Description
Activity
- addedbugSomething isn't workingSomething isn't workingarea:devpathThe road — create, dev, verify, publish/install, connect an agent, iterateThe road — create, dev, verify, publish/install, connect an agent, iterateand removed
on Oct 2, 2026 objectstack-fleet commented
on Oct 2, 2026 ContributorAuthorMore actionsClaim: PM loop round 5
Session:session_018gA1pE6eJtwHhqx72G8U9X
Account:os-bill(the seat's linked user asGET /useranswers it; the card's assignee from this act)
Branch:claude/issue-21310-cli-readme-flags
Worktree:objectstack-issue-21310
Domain:domain:cli
Seat: domain:devx#3 (the maintainer's direct-dispatch session; it holds no seat post, so #3 collides with no post: objectstack devx seats 1 and 2 are #6023 and #20163)
Provenance:- Who: the maintainer.
- Verbatim: 「相关卡片你使用项目经理技能派发处理」. This card is a finding from cli: drop the never-loaded @oclif/plugin-help and @oclif/plugin-plugins from oclif.plugins, and correct every published text that says
os pluginsworks #21285's dispatch. - Where: session
session_018gA1pE6eJtwHhqx72G8U9X, 2026-10-02.
File surface, re-derived atorigin/main6091136e92: packages/cli/README.md:### Global,### Plugin Management, and any command-table row that disagrees withos --help.packages/cli/package.json: only theoclif.additionalHelpFlags/additionalVersionFlagskeys, and only if the short flags are made to work.- A
.changeset/21310-cli-readme-flags.md(patch,@objectstack/cli) if the published README or manifest moves. - ⛔ The README's
os generatetable rows that PR feat(cli,create-objectstack): os generate picklist, the src/picklists starter barrel, and a Picklists count in the metadata summary #21167 (Part of cli + create-objectstack:os generate picklistand thesrc/picklistsscaffold wiring (os init / npm create), after the picklist runtime reader #19519 lands (split from #20825 item 1) #21018) changes are feat(cli,create-objectstack): os generate picklist, the src/picklists starter barrel, and a Picklists count in the metadata summary #21167's. Mergemainafter feat(cli,create-objectstack): os generate picklist, the src/picklists starter barrel, and a Picklists count in the metadata summary #21167 lands, before opening the PR. - ⛔
pnpm-lock.yaml, the rootpackage.json,pnpm-workspace.yaml,patches/and the reroute test are test(cli): since tsx 4.23.15 (#21162) oclif cannot register tsx, so the CONTROL leg of published-entry-node-env-source-reroute never arms and its guard passes vacuously #21308's surface. This card does not touch them. - Stop on a breach and explain it in the report.
Container & model:S(a README truth pass with one optional manifest key),mode:subagent,model: opus.dispatch-gates --tier --repo objectstack-ai/objectstackover this surface: no path-derived mandate.
Clause-②: no
Contract review: owed at landing if the diff carries.changesetprose.
Thread-read: none
Serial constraints cleared: - Read at 2026-10-02T04:51Z on
origin/main6091136e92. - cli: drop the never-loaded @oclif/plugin-help and @oclif/plugin-plugins from oclif.plugins, and correct every published text that says
os pluginsworks #21285 is closedcompleted(PR fix(cli): drop the never-loaded oclif.plugins entries and correct the text that saysos pluginsworks #21306 merged asdabd1c5be7). TheBlocked-by:line is removed from the body in this act. - The only open PR on this surface is feat(cli,create-objectstack): os generate picklist, the src/picklists starter barrel, and a Picklists count in the metadata summary #21167. It is in the merge queue, and its
packages/cli/README.mdhunk is theos generatetable at line 58, which is disjoint from### Globaland### Plugin Management. - test(cli): since tsx 4.23.15 (#21162) oclif cannot register tsx, so the CONTROL leg of published-entry-node-env-source-reroute never arms and its guard passes vacuously #21308 is dispatched in the same act, on a surface made disjoint by the exclusions above.
objectstack-fleet commented
on Oct 2, 2026 ContributorAuthorMore actionsos-dev-report
{
"issue": 21310,
"status": "done",
"branch": "claude/issue-21310-cli-readme-flags",
"pr": "#21354",
"session": "session_018gA1pE6eJtwHhqx72G8U9X",
"premise_still_valid": true,
"summary": "packages/cli/README.md now states what the built os does, read off os --help, os plugin --help and each documented command's --help on bin/run.js from an empty cwd. ### Global lists --version and --help only, says there is no short form, and names the commands that own -v. ### Plugin Management lists the registered os plugin build|sign|publish group in place of the false "There is no os plugin command group in v1"; it notes the group has no install (ADR-0025 status line) and is unrelated to os plugins. Two command-table rows were false and are rewritten (os init [name], os dev [package]), and a patch changeset .changeset/21310-cli-readme-flags.md was added. packages/cli/package.json is untouched (README route), and no code, flag, exit code or help page changes. The newest Claim (comment 5945814810) names this branch. Before any edit the branch was fast-forwarded from 6091136 to 1caa603, which contains #21167 (landed as bcd68a2); BASE was recorded there. origin/main was merged twice more, with a5f7446 as the head at PR open.",
"claim_verified": "Newest Claim: comment 5945814810 (objectstack-fleet[bot], session_018gA1pE6eJtwHhqx72G8U9X, Branch claude/issue-21310-cli-readme-flags). It matches; no second claim was posted, and the card assignee was not written.",
"short_flag_choice": {
"route": "README route for both -h and -v (docs follow the implementation); packages/cli/package.json oclif keys NOT added",
"ruling_check": "Six commands already own -v. It is --verbose on os dev (dev.ts:212), os serve (serve.ts:1209), os start (start.ts:93) and os doctor (doctor.ts:1905). It is --version VALUE on os package publish (package/publish.ts:315) and os package install (package/install.ts:57). Found with git grep char: 'v' in packages/cli/src and read back in each --help. No command owns -h. Under the ruling ("If one does, choose the README route and say why"), -v takes the README route. -h was eligible on its own and was declined on the axes below.",
"before_after": "Built entry, empty cwd. Before = 1caa603, after = a5f7446. os -h: exit 2 "command -h not found" before and after. os -v: exit 2 "command -v not found" before and after (unchanged by design). os --help: exit 0, 3712 bytes, md5 1855676fe5a2bb87aa5871fc1bed196f, byte-identical before and after. os --version: exit 0 before and after. os plugin --help: md5 f8d980cadbc9b10110a734b402e687e9, byte-identical.",
"alternative_measured": "oclif 5.1.2 lib/main.js versionAddition/helpAddition were evaluated in memory on the loaded Config of packages/cli with additionalVersionFlags [-v] and additionalHelpFlags [-h]; no file was written. Results: argv [-v, serve] gives version=true, so it prints the version, exits 0 and serve never runs (today it exits 2). argv [serve, -v] stays verbose, because only argv[0] is checked. argv [serve, -h] gives help=true (today it exits 2 with Nonexistent flag: -h).",
"four_axes": {
"real_business_need": "Zero measured pull. git grep over the whole tree (content/docs, skills, examples, packages, scripts) for os -h, os -v and objectstack -h|-v finds no occurrence. The README ### Global was the only text that named the short forms.",
"long_term": "-v already means verbose on four commands and a package version on two. A third meaning that applies only at argv[0] would make the flag position-dependent. Docs-follow-implementation removes the false claim with zero runtime change.",
"ai_error_resistance": "Today a mistaken os -v serve fails loudly (exit 2). With the key it would exit 0 after printing a version and start nothing, turning a loud failure into a silent one. The README now states the absence, so an agent uses --help and --version, which work in every position.",
"no_scope_expansion": "New flags are a capability with no measured pull, and the default is tight. A -h-only split would make ### Global asymmetric for no measured user."
}
},
"os_plugin_commands_verbatim": "os plugin --help (exit 0): "Compile a plugin into a signed-ready.ospluginartifact (ADR-0025 §3.4) / USAGE $ os plugin COMMAND / COMMANDS: plugin build — Compile a plugin into a signed-ready.ospluginartifact (ADR-0025 §3.4); plugin publish — Publish a signed .osplugin to ObjectStack Cloud (ADR-0025 §3.4); plugin sign — Sign a built .osplugin with a publisher Ed25519 key (ADR-0025 §3.4)". Usage lines: os plugin build [DIR] [-e VALUE] [-o VALUE] [--minify]; os plugin sign ARTIFACT -k VALUE [--key-id VALUE] [-o VALUE]; os plugin publish [ARTIFACT] [-s VALUE] [-t VALUE] [--sig VALUE] ... There is no install.",
"hypotheses": {
"H1": "Holds. os -h and os -v exit 2 with command -h not found / command -v not found on the built entry from an empty cwd. @oclif/core 5.1.2 merges only additionalHelpFlags / additionalVersionFlags into --help / --version (help/util.js getHelpFlagAdditions, main.js versionAddition). packages/cli/package.json oclif sets neither.",
"H2": "Holds. The plugin topic is listed in os --help, and os plugin --help lists plugin build, plugin publish and plugin sign (verbatim above).",
"H3": "Holds. os plugins, os plugins install foo, os plugins link . and os help each exit 2 with command ... not found. package.json has no oclif.plugins, and the only @oclif dependency is @oclif/core. The sections were not re-edited."
},
"per_row_conclusions": [
"Development · os init [name] · CHANGED: it said "in the current directory"; --help says a new directory is created when NAME is given",
"Development · os dev [package] · CHANGED: it said "with hot reload"; --help says watch, rebuild and restart the server; dev.ts says the old auto-reload line "advertised a hot reload the runtime only partially performs"",
"Development · os serve [config] · ALREADY TRUE: "plugin auto-detection" = serve.ts:11 imports isHostConfig/shouldBootWithLibrary (utils/plugin-detection.ts); the row omits the artifact fallback, which is an omission, not a false claim",
"Build & Validate · os compile [config] · ALREADY TRUE (-o default dist/objectstack.json)",
"Build & Validate · os validate [config] · ALREADY TRUE (the help also names CEL and widget bindings)",
"Build & Validate · os info [config] · ALREADY TRUE (info.ts:117 prints agents)",
"Scaffolding · os generate TYPE NAME · LEFT per the ruling (#21167, landed bcd68a2). Also already true: generate.ts refuses a metadata type without a name; NAME is optional only for types/client/migration",
"Scaffolding · os create TYPE [name] · ALREADY TRUE",
"Cloud · os cloud login · ALREADY TRUE (-e/--email and -p/--password skip the browser; ~/.objectstack/cloud.json)",
"Cloud · os cloud whoami / logout · ALREADY TRUE",
"Cloud · os environments create --org ID --name N · ALREADY TRUE (both flags required; no projects topic)",
"Cloud · os environments list / show ID · ALREADY TRUE",
"Cloud · os package publish [artifact] · ALREADY TRUE (default dist/objectstack.json)",
"Plugin Management · prose · CHANGED",
"Quality · os test [files], os doctor, os lint [config], os diff [before] [after] · ALREADY TRUE",
"Reference · os explain [schema] · ALREADY TRUE",
"CLI Options · ### Global · CHANGED",
"CLI Options · os plugins and os help (not commands) · ALREADY TRUE since #21306, not re-edited",
"Outside the tables (OUT OF SCOPE, not a command-table row): the Cloud lead sentence names --server/OS_CLOUD_API_KEY, while os environments uses -u/--url and -t/--token (env OS_TOKEN); the ### os serve --ui text says Studio UI where --help says Console portal; registered commands with no row are omissions"
],
"pr_subscribed": "Subscribed to activity on #21354. Comments, CI status changes, reviews, and other PR events will now be delivered into this conversation as wake reason=external-event envelopes.",
"tests": "All at head a5f7446 unless noted. (1) pnpm turbo run build --filter=!@objectstack/docs --concurrency=2: Tasks 72 successful, 72 total; VERDICT command-exit 0. (2) node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --commands: 51 commands (21 pnpm, 30 node); all 51 exit 0, captured before any pipe. --ran reconciliation: "51 derived, 51 run, 0 NOT-MEASURED, 0 UNRUN", a DERIVED zero with every entry carrying an exit code. Earlier, at pre-merge head 4e7e91f, check:dual-build-cjs-loads answered PREREQUISITE NOT MET (exit 3) with nine packages unbuilt; I built them and it passed, and at a5f7446 it exited 0 directly ("105 published require entry point(s) across 66 package(s) load"). PM's derivation gave 67 because the planned surface included packages/cli/package.json; the real diff is README.md plus the changeset. (3) pnpm --filter @objectstack/cli exec vitest run --project unit --maxWorkers=2: Test Files 244 passed (244), Tests 3461 passed (3461), VERDICT command-exit 0, run at 4e7e91f. git diff 4e7e91f a5f7446 -- packages/cli is empty, so per AGENTS.md section 10 it was not re-run after the merges. The integration tier is left to CI. (4) pnpm --filter @objectstack/cli typecheck: exit 0 at 4e7e91f. No ablation applies, because no code or test changed. No pin test was added because the diff changes no behaviour; packages/cli/test/plugin-commands.test.ts is the precedent if the seat wants the no-short-flag state held.",
"mcp_calls": "1 — mcp__claude-code-remote__subscribe_pr_activity (a session subscription, not a GitHub write). GitHub MCP calls: 0. No MCP write tool was used.",
"api_writes": "3 relay writes as objectstack-fleet[bot], each one POST /repos/objectstack-ai/objectstack/dispatches (fleet-write): (1) pr_create, POST /repos/objectstack-ai/objectstack/pulls, giving #21354, draft, with 11202 bytes sent and stored identical; (2) assign via label-write.mjs, POST /repos//issues/21354/assignees [os-bill], read back as a MATCH; (3) this os-dev-report comment, POST /repos//issues/21310/comments via post-stamped.mjs. Zero label writes: the dispatch named none, and skip-changeset does not apply because a changeset is present. git pushes (not REST): the empty branch probe, the commit, and two merges of main.",
"deviations": [
"The first commit was written with the harness reminder's model-bearing Co-Authored-By trailer. It was amended before any push to the model-free pair AGENTS.md requires, so no pushed commit carries a model identifier.",
"One build attempt was killed by my own outer timeout 595 after waiting 417s for the lock (exit 124). It was re-run to completion. The CLI unit run exceeded the 600s tool cap while queued (it waited 395s, held 375s); the harness moved it to the background, and I waited on it in the foreground with tail --pid until it exited, then read its VERDICT."
],
"open_questions": [],
"out_of_scope_findings": [
"carrier: none · noted in PR Acceptance notes, not filed — the README Cloud section lead names --token/OS_CLOUD_API_KEY and --server/OS_CLOUD_URL for all cloud commands, but os environments * spell them -t/--token [env OS_TOKEN] and -u/--url [env OS_CLOUD_URL]. The CLI itself carries two spellings, which is a CLI-surface choice, not a README fact. Dedupe words: cloud auth flag spelling, --server vs --url, OS_TOKEN OS_CLOUD_API_KEY",
"carrier: none · noted, not filed — the README ### os serve section says --ui means "Enable Studio UI" while --help says "Enable the bundled Console portal" (naming drift)"
]
}objectstack-fleet commented
on Oct 2, 2026 ContributorAuthorMore actionsos-dev-report
{
"issue": 21310,
"patch_round": 1,
"status": "done",
"branch": "claude/issue-21310-cli-readme-flags",
"pr": "#21354",
"head": "9bdb092ca",
"session": "session_018gA1pE6eJtwHhqx72G8U9X",
"premise_still_valid": true,
"summary": "REWORK comment 5946805321 is folded in; README facts only, with no flag or env var changed in code. (1) The Cloud section no longer says every cloud command reads os cloud login's session or --token/OS_CLOUD_API_KEY and --server/OS_CLOUD_URL. A new "Credentials and server URL" table gives, per command, the URL flag, the token flag and the stored session each one authenticates with. The typical flow now says its os environments create step does not read the os cloud login session, which was measured: with only cloud.json present, all five os environments subcommands exit 1 with "Authentication required. Please run os login or set OS_TOKEN". The "Set OS_CLOUD_URL (or --server)" sentence now names which commands read OS_CLOUD_URL and which flag each spells. (2) os serve --ui uses the --help wording ("Enable the bundled Console portal at /_console/ when @object-ui/console is installed (default: true)"). (3) The changeset counts five false claims, one bullet each. Commit ebe3797, then a merge of origin/main as 9bdb092; no rebase, no force. The PR's draft state and labels were not touched.",
"cloud_flag_table": [
"os cloud login · URL: -u, --url (env OS_CLOUD_URL, default https://cloud.objectos.ai) · token: none (-e/--email, -p/--password, or the device flow) · session: writes ~/.objectstack/cloud.json",
"os cloud whoami / os cloud logout · URL: none · token: none (--json only) · session: read / delete cloud.json (cloud/whoami.ts:26, cloud/logout.ts:29,39)",
"os package publish · URL: -s, --server (env OS_CLOUD_URL, default https://cloud.objectos.ai; with neither set, the URL in cloud.json) · token: -t, --token (env OS_CLOUD_API_KEY, then OS_TOKEN) · session: cloud.json. MEASURED with an echo server: credentials.json only gives exit 1 "Not logged in to ObjectStack Cloud. Run os cloud login first" and 0 requests; cloud.json only gives POST /api/v1/cloud/packages with Bearer cloud-token-probe to the cloud.json URL; OS_CLOUD_API_KEY gives Bearer env-api-key; OS_TOKEN gives Bearer env-os-token",
"os plugin publish · URL: -s, --server (env OS_CLOUD_URL) · token: -t, --token (env OS_CLOUD_API_KEY) · session: cloud.json by the same precedence code (plugin/publish.ts:170-178) — code-read only, not run (it needs a built .osplugin)",
"os environments list/show/create/bind/switch · URL: -u, --url (env OS_CLOUD_URL), else the URL in credentials.json, else http://localhost:3000 (api-client.ts:56-85) · token: -t, --token (env OS_TOKEN) · session: ~/.objectstack/credentials.json, the os login session. MEASURED: cloud.json only gives exit 1 "Authentication required" for all five before any request; credentials.json only makes list send GET /api/v1/cloud/environments with Bearer runtime-token-probe to the credentials.json URL; OS_TOKEN+OS_CLOUD_URL gives Bearer env-os-token; OS_CLOUD_API_KEY alone gives exit 1 "Authentication required"",
"os package install (a runtime command, not cloud) · URL: -r, --runtime (env OS_RUNTIME_URL, default http://localhost:3000) · token: none; --email/--password (env OS_RUNTIME_EMAIL/OS_RUNTIME_PASSWORD) · session: none",
"Not in the README Cloud section, read for completeness: os whoami, os data *, os meta list/get/register/delete · -u, --url (env OS_CLOUD_URL) · -t, --token (env OS_TOKEN) · credentials.json via createApiClient (code-read)",
"os datasource introspect/list-tables/validate · -u, --url (env OS_CLOUD_URL, else http://localhost:3000) · -t, --token (env OS_TOKEN) · no stored session; flags and env only (datasource/introspect.ts:10-13, code-read)",
"os login · -u, --url (env OS_RUNTIME_URL, default http://localhost:3000) · writes credentials.json; os register · -u, --url (env OS_CLOUD_URL, default http://localhost:3000) · writes credentials.json"
],
"readme_changes_this_round": [
"Cloud lead sentence: replaced with a pointer to #### Credentials and server URL",
"Typical flow: the os cloud login and os environments create lines are annotated, plus a paragraph saying environments create needs --url/--token (OS_CLOUD_URL/OS_TOKEN) or an os login session, and otherwise exits 1 with Authentication required",
"Publish paragraph: "Set OS_CLOUD_URL (or --server)" now says os cloud login, os package publish and os environments read OS_CLOUD_URL, with --server on publish and --url on the other two",
"New #### Credentials and server URL table (4 rows) plus an os package install note",
"### os serve --ui: the help wording"
],
"runtime_unchanged": "os --help at 9bdb092: exit 0, 3712 bytes, md5 1855676fe5a2bb87aa5871fc1bed196f, byte-identical (cmp) to the 1caa603 capture. os -h / os -v still exit 2. os serve --help still reads "Enable the bundled Console portal at /_console/ when @object-ui/console is installed (default: true)".",
"tests": "At 9bdb092: (1) pnpm turbo run build --filter=!@objectstack/docs --concurrency=2: 72/72 tasks (0 cached after the main merge), verify-lock VERDICT command-exit 0. (2) Gates: dispatch-gates --commands derives 52 commands at 9bdb092; the merged main added node scripts/check-dts-emitted.mjs --self-test. All 52 exit 0, captured before any pipe. The same gates were also all green at the intermediate head ebe3797 (51 of 51). (3) The CLI unit tier is not re-run this round: it last ran at 4e7e91f (244 files / 3461 tests passed). git diff 4e7e91f 9bdb092 -- packages/cli touches only packages/cli/README.md, and no CLI test reads that file; tests mentioning README read the os create emitted README. The integration tier is left to CI.",
"gate_reconciliation": "node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --ran (52 lines "COMMAND :: exit N") at 9bdb092: "Run reconciliation — 52 derived, 52 run, 0 NOT-MEASURED, 0 UNRUN"; "✓ ... a DERIVED zero — all 52 recorded an exit code and none of them is 3". The same run flagged STALE TREE: origin/main moved 2 commits during the gate run (96b12b5 adds a pm-roster self-test step to .github/workflows/lint.yml for scripts/pm/issue-transfer; 23365ea is spec). Neither touches packages/cli or this changeset, and I did not chase a third merge; the queue rebuilds on current main.",
"pr_body": "NOT PATCHED by this dev — CONFLICT NOTED: the coordinator asked for a body refresh, but the standing os-dev rule says the dev writes the PR body once at pr_create, never PATCHes it, and the seat writes later edits. Per that rule's precedence the rule was followed. The refreshed body matching 9bdb092 is ready (pre-scanned: no angle-bracket fragments, no closing keyword other than line 1, no model id), and its relay action passed a dispatch --dry-run validation. Seat command: node scripts/pm/fleet-write/dispatch.mjs --repo objectstack-ai/objectstack --actions-file /tmp/claude-0/-home-user/66328d89-6fb8-50a7-a74b-97fb5ec277ec/scratchpad/issue-21310/actions-pr-body-r1.json (op issue_patch on #21354; the body file is pr-body-r1.md in the same directory, 15822 bytes). The current PR body still describes head a5f7446 and lacks the cloud-table and --ui sections.",
"mcp_calls": "0 this round (GitHub MCP 0; no MCP write tool). Round 0: 1 (mcp__claude-code-remote__subscribe_pr_activity).",
"api_writes": "1 this round: the round report comment, POST /repos//issues/21310/comments via post-stamped.mjs through the fleet-write relay (one POST /repos/objectstack-ai/objectstack/dispatches). Zero label, draft, assignee or body writes. git pushes (not REST): ebe3797 and the merge 9bdb092.",
"deviations": [
"The PR body was not refreshed by me; see pr_body. The conflict is between the coordinator message and the os-dev standing rule.",
"Merge chase stopped after one merge: main moved by 2 commits during the gate run. They are named above and are disjoint from this diff."
],
"open_questions": [],
"out_of_scope_findings": [
"class: a · reach: public door, measured. With onlyos cloud logindone (HOME holding only ~/.objectstack/cloud.json),os environments create --org org_x --name Dev(and list/show/bind/switch) exits 1 with "Authentication required. Please runos loginor set OS_TOKEN environment variable." before any request. Yetos login --helpsays "For the hosted package registry, useos cloud logininstead". The two help texts send a user of the README/cli.mdx Cloud flow in a circle, and the environments commands never read the cloud session that cloud.json holds. Evidence: packages/cli/src/utils/api-client.ts:56-85 (createApiClient reads only credentials.json) and environments/create.ts:15-30 (writes the active env into cloud.json when the control plane matches, so it is designed to run against the cloud control plane). The remedy direction (environments fall back to cloud.json like publish does, or os login is the documented route for the hosted control plane) is a product decision; this PR only documents the current behaviour. Dedupe words: os environments cloud login session · Authentication required os login · credentials.json cloud.json environments",
"carrier: none · noted, not filed — os package publish against a server that answers {success:true} with no package id POSTs to /api/v1/cloud/packages/undefined/versions and exits 0 (seen against my echo server, which is not the real control-plane contract; a read-only inference, so not filed)"
]
}- added 3 commits that reference this issue
on Oct 7, 2026
Filing-gate class: ① a defect with a named landing site and a measured reach (class a, a public door).
Body last written 2026-10-02T04:47Z: unblocked. #21285 closed
completedwhen PR #21306 merged asdabd1c5be7. Blockers were re-derived with no new one, and the card was dispatched in the same act.Routing: the maintainer direct-dispatch channel (
session_018gA1pE6eJtwHhqx72G8U9X) routes it todomain:cli; triage grades the priority.Measured (#21306's os-dev, from an empty cwd on the built entry,
@oclif/core5.1.2)packages/cli/README.md→### Globaldocuments-v, --versionand-h, --help.os -hexits 2 withcommand -h not found, andos -vexits 2 withcommand -v not found. Only--helpand--versionwork.@oclif/coreadds no short help or version flag unless theoclifconfig setsadditionalHelpFlags/additionalVersionFlags, andpackages/cli/package.jsonsets neither.### Plugin Managementsays "There is noos plugincommand group in v1". Butos plugin build|sign|publishis registered, and theplugintopic shows inos --help.What to do (shapes, not a ruling)
### Globaltrue. Either:-h/-vfrom the README (docs follow the implementation); oradditionalHelpFlags: ["-h"]/additionalVersionFlags: ["-v"]inoclif. That is a small product change, so report the four-axis reasoning for whichever is chosen.### Plugin Managementto the registeredos plugincommands. Read them offos plugin --help, not off memory.os --helpwhile in the file, and give each mismatch a conclusion in the PR body.Dedup: 450 objectstack issues and PRs listed over REST, titles and bodies grepped for
additionalHelpFlags,additionalVersionFlags,command -h not found,os -h,os plugin buildand "noos plugincommand group". The only hits are #21306's own report and an unrelated lint PR. No card covers this.Dedupe words:
os -h command not found·README Global short flags·additionalHelpFlags·os plugin build sign publish READMEGenerated by Claude Code