Install and verify the standalone Qoder CLI (command qodercli). The Agent performs the terminal steps; the customer only completes login and authorization on the official Qoder page.
Customer-readable instructions
What this skill can do
| What the customer wants | What the skill will do | What the customer can see |
|---|---|---|
| Install Qoder CLI | Check the system and existing sources, install the official stable version | Version, install source, directory, and verification results |
| Check or update | Read-only version comparison; after an explicit request for the latest version, update along the original source | Whether an update is available and the actual handling result |
| Log in to Qoder | Launch qodercli login or official interactive login |
Official browser authorization steps |
| Command unavailable | Check PATH, duplicate installs, and configuration status | Blocking cause and safe fix plan |
How the customer uses it
- The customer directly says "install Qoder CLI"; the customer is not required to enter terminal commands.
- The Agent first performs a read-only check and shows the installation plan. Installing a missing tool is not the same as updating an existing tool.
- "Update Qoder" first reports the current and latest versions; the update is executed only after an explicit "update to the latest version".
- During login, the Agent starts the official flow, and the customer only clicks authorize in the official browser; do not paste keys in chat or the terminal.
- After completion, verify the version, help command, and one side-effect-free startup, then output the fixed ten-column list.
First login and real configuration verification
配置文件目录Only display candidate directories; the skill must also checkconfig_statusandconfig_file_status; if the directory or~/.qoder/settings.jsondoes not exist, explicitly report "not initialized".- On first use, the Agent starts
qodercli, and in the interactive interface executes/login; the customer chooses browser login and completes authorization on the official Qoder page, with no need for the customer to operate the terminal. - If the customer explicitly chooses a Personal Access Token, the application entry point is Qoder Integrations; the customer enters it only in the official login flow, and the Agent does not receive or print the token.
- After login, recheck
~/.qoder/settings.json, runqodercli --versionand a side-effect-free startup; if login has not been completed, write "waiting for first login" as the handling result, and do not write only "installed".
Dependencies and installation
| Dependency | Type | How to handle when missing |
|---|---|---|
| Officially supported operating systems | Hard dependency | On unsupported platforms, stop the installation and explain why |
| Node.js/npm | npm channel dependency | Not required for the official standalone installation; call only when npm is chosen soia-env-node-install |
| Network diagnostics | Optional prerequisite | Call when the official site is unreachable soia-env-network-diagnose |
| Qoder account | Login dependency | The customer completes authorization on the official page; the Agent does not read credentials |
Official facts are in official-sources.md。
standard process
- Run
python3 scripts/inspect_cli.py --json, checkqodercli, version, source, installation directory, and the actual existence status of the~/.qoderconfiguration directory/files. - Run
python3 scripts/check_latest.py --json, read the latest version of@qoder-ai/qoderclifrom the official npm metadata. - When installed and working, write “Installed”; when authorization to obtain the latest version has not been obtained, only report it and do not reinstall or call the updater.
- When not installed, prefer the official standalone installation; when the customer chooses npm, use
npm install -g @qoder-ai/qodercli. Official network scripts must first be downloaded to a separate temporary directory, verify the source and content, and then execute the local copy; do not directly execute a network response. - After explicitly updating to the latest: for standalone sources use
qodercli update; for npm sources usenpm install -g @qoder-ai/qodercli@latest; Homebrew updates along the actually installed cask. Do not silently switch sources. - Verify that the same absolute path has
--version、--helpand side-effect-free startup. When login is required, startqodercli loginand hand the browser over to the customer. - Recheck the version and directories, use
scripts/render_status.pyto output the customer list.
Product automatic update boundaries
- Qoder CLI itself may enable automatic upgrades by default; the Agent must disclose this status, but this skill will not trigger an update due to version checking.
- Read-only checks must not modify
~/.qoder/settings.jsonthegeneral.enableAutoUpdate。 - When the customer requests adjusting automatic updates, first show the impact, back up non-secret settings, and review; this and “update to the latest this time” are two independent authorizations.
Customer status list (mandatory)
The reply must begin with the following ten-column table, outputting only one row Qoder CLI:
| Skill | Current status | Current version | Latest version | Running status | Installation method | Installation directory | Configuration file directory | Update time | Handling result |
|---|---|---|---|---|---|---|---|---|---|
| Qoder CLI | <Installed/Not installed/Blocked> | <Version or not obtained> | <Version or not obtained> | <Normal/Abnormal/Unverified> | <Official standalone installation/Homebrew installation/npm global installation/Not obtained> | <Directory or not obtained> | <Directory or not obtained> | <Installed/Already latest/Updatable, not executed/Awaiting confirmation whether to update to the latest/Updated/Blocked: reason> |
- When the user only asks about Qoder CLI, do not add rows for Node.js, npm, other AI CLIs, or other skills.
更新时间is generated after final verification; for directories use~relative paths to avoid exposing usernames.- After the update is complete,
当前状态is still “Installed”,处理结果write “Updated”. - For multiple command copies, only report the one currently in effect in the login shell and indicate the conflict; do not automatically delete.
- If obtaining the latest version fails, write “Not obtained”; do not guess.
config_status=未创建orconfig_file_status=未创建, write “Awaiting first login/configuration” in the handling result, and also provideqodercli、/loginand the official entry point; do not treat candidate paths as ready-made configuration.
Intermediate status of installation and update
When actually installing or updating, generate a random run_id, and call each actual stage immediately scripts/record_install_progress.py and display synchronously:
checking → planning → [waiting_confirmation] → installing/updating → verifying → completed/failed/blocked
| Stage | Current status | Update time | Processing result |
|---|---|---|---|
| <check/plan/waiting for confirmation/install or update/verify/complete or fail> | <in progress/waiting/completed/failed/blocked> | <redacted result> |
Read-only checks do not write to disk. Updated updating、verifying and completed must carry the customer's explicit latest-version authorization marker; stage records only save fixed codes and times, and do not save accounts, full command text, response bodies, or private paths.
Permissions and rollback
- Prefer user-level installation; do not use administrator privileges by default. Confirm separately before modifying PATH, shell profile, switching sources, or overwriting commands.
- Record the old version and source before updating; on failure, keep the original installation and do not automatically uninstall, downgrade, or clean up configuration.
- Temporary installation files use the system temporary directory and are cleaned up on success, failure, and cancellation.
Private information and intermediate data
- Login credentials are stored by the official Qoder login state or the system credential store; do not read, copy, or print credential contents.
- Non-secret configuration stays in
~/.qoder; SOIA does not create a separate credential file. - Only machine changes are written to the redacted progress state; version checks are stateless by default.
- Do not record tokens, cookies, sessions, authorization codes, accounts, response bodies, or customer private absolute paths.
Logs and completion receipt
The final receipt includes the fixed ten-column table, verification items, whether the auto-update setting was only read, and whether the customer still needs to authorize in the browser. Normal dependencies are not expanded into additional rows.
Forward testing
Use a temporary fake qodercli to cover missing, normal, version anomaly, and multiple copies; mock the npm latest-version response; verify the fixed list, path redaction, no update by default, and the update authorization gate.
Install the entire domain (Claude Code and Codex share the same domain plugin):
claude plugin marketplace add soia-team/soia-open-skills
claude plugin install soia-env@soia
Install only this one skill:
npx skills add soia-team/soia-open-env-skills -g -a '*' -s soia-env-qoder-cli-install -y
WorkBuddy 's loading unit is role-based experts rather than plugins,npx skills add -a '*' cannot cover it, and it needs to be installed separately, see docs/install/workbuddy.md。