Files
jackwener--opencli/docs/guide/exit-codes.md
T
jakevin 7d0f46d009 docs(readme): CLI Hub brand aliases + Exit Codes split to docs (#1685)
Per WAWQAQ DM:

1. **CLI Hub**: bare-name enumeration ("ntn", "discord") didn't tell
   readers what those binaries map to. Switched to the `opencli external
   list` brand-alias format: `ntn(notion)`, `discord(discord-cli)`,
   `dws(DingTalk Workspace)`, `wecom-cli(企业微信)`, `tg(tg-cli)`,
   `wx(wx-cli)`. Names that are already self-explanatory (gh / docker /
   vercel / wrangler / obsidian / longbridge / lark-cli) stay bare.

2. **Exit Codes**: the 9-row table + example block was disproportionate
   for a README. Compressed to one sentence with the 7 actionable codes
   inline, full table relocated to:
   - EN: `docs/guide/exit-codes.md` (new)
   - ZH: `docs/zh/guide/exit-codes.md` (new)
2026-05-20 03:58:27 +08:00

968 B

Exit Codes

opencli follows Unix sysexits.h conventions so it integrates naturally with shell pipelines and CI scripts.

Code Meaning When
0 Success Command completed normally
1 Generic error Unexpected / unclassified failure
2 Usage error Bad arguments or unknown command
66 Empty result No data returned (EX_NOINPUT)
69 Service unavailable Browser Bridge not connected (EX_UNAVAILABLE)
75 Temporary failure Command timed out — retry (EX_TEMPFAIL)
77 Auth required Not logged in to target site (EX_NOPERM)
78 Config error Missing credentials or bad config (EX_CONFIG)
130 Interrupted Ctrl-C / SIGINT

Example: branch on exit code

opencli spotify status || echo "exit $?"   # 69 if browser not running

opencli gh issue list 2>/dev/null
[ $? -eq 77 ] && opencli gh auth login      # auto-auth if not logged in