Using wemol-cli
Overview
wemol-cli is the operational client for Wemol modules and flows. Use it to discover modules/flows, inspect real input schemas, submit jobs, track execution, and recover outputs.
Primary rule:
- Prefer executing CLI commands and reading real output over assumptions.
This SKILL.md is now self-sufficient for normal operation. references/ and examples/ are secondary for edge cases and domain-specific patterns.
When To Use
Use when:
- user asks for a biology/chemistry/AI workflow that may map to Wemol modules or flows
- task requires live module params, job status, logs, outputs, downloads
- session/host/lang/install behavior affects task execution
Do not use when:
- task is SDK/CLI source implementation work
- user only asks for static code edits unrelated to running CLI
Quick Start
When context is unknown:
wemol-cli --help
wemol-cli --version
wemol-cli host
wemol-cli lang
wemol-cli module search antibody
If authentication error appears, stop and run:
wemol-cli login
If interactive login is not possible (non-TTY), use:
wemol-cli login --username <name> --password <password>
Quick Reference
| Situation | Required Action | Avoid |
|---|---|---|
| User asks capability but no ID | module search / flow search first | guessing module/flow by name only |
| Any submit intent | fetch schema (--params-json or flow get) first | building payload from natural language |
| Flow submit | enforce task-keyed JSON | flat JSON submit |
job output missing/empty | job tasks then job download | concluding job failed immediately |
| Auth/session issue | login / account / host / lang checks | continuing API probes while unauthenticated |
| User asks “need update?” | run update workflow and conclude directly | asking user to compare versions manually |
Command Routing (Default)
- Capability request, no module ID:
wemol-cli module search <keywords...>
- Catalog browsing/filtering:
wemol-cli module list ...
- Pipeline/workflow request:
wemol-cli flow search <keywords...>thenwemol-cli flow get <flow_id>
- Need exact module payload:
wemol-cli module get <module_id> --params-json
- Need flow payload shape:
wemol-cli flow get <flow_id> --params-template
- Submitted job, need progress:
wemol-cli job status <job_id>andwemol-cli job progress <job_id>
- Need
task_id:wemol-cli job tasks <job_id>
- Output unclear:
wemol-cli job diagnose <job_id>thenwemol-cli job download <job_id>
- Historical run, unknown
job_id:wemol-cli job list ...orwemol-cli job search ...
Core Commands And Rules
Global Options
wemol-cli --host <url> ...
wemol-cli --session-id <session_id> ...
wemol-cli --user-agent <ua> ...
wemol-cli --timeout <sec> ...
wemol-cli --secure ...
wemol-cli --verbose ...
wemol-cli --doc
Environment equivalents:
WEMOL_HOSTWEMOL_SESSION_IDWEMOL_USER_AGENT
Rules:
- Prefer persisted
host --setand cached login for routine work. - Use
--host/--session-idfor one-off overrides. - Use
--user-agentonly when explicit routing/debugging requires it. --docexists on root and command groups (module,flow,job,host,lang,account); some leaf commands also support it depending on version.
Host / Language / Session / Account
wemol-cli host
wemol-cli host --set https://wemol.wecomput.com
wemol-cli lang
wemol-cli lang --set en
wemol-cli lang --set cn
wemol-cli account
wemol-cli logout
Rules:
module getandmodule get --params-jsonfollow current language.- use
accountto confirm active identity and resource summary. - use
logoutto clear current host session before relogin/switch account.
Module Discovery And Inspection
wemol-cli module search antibody numbering
wemol-cli module list --name antibody --tag Biologics --tag Antibody --limit 20 --offset 0
wemol-cli module list --sort updated_at --desc true
wemol-cli module get <module_id>
wemol-cli module get <module_id> --params-json
wemol-cli module get <module_id> --params-json --method "<method_name>"
Rules:
module listandmodule searchcurrently return enabled modules.module list --tagis repeatable and uses AND semantics.module searchincludes tag matching.- Before submit, always read
--params-json; do not guess keys/types/options.
Flow Discovery And Inspection
wemol-cli flow search antibody pipeline
wemol-cli flow list --name antibody --tag Featured --tag Humanization --limit 20 --offset 0
wemol-cli flow list --sort updated_at --desc true
wemol-cli flow get <flow_id>
wemol-cli flow get <flow_id> --params-template
Rules:
flow list --tagis repeatable and uses AND semantics.flow searchincludes tag matching.flow getis source of truth for task names and nested input keys.- use
--params-templatewhenever payload structure is uncertain.
Job Submit
Module submit:
wemol-cli job submit --module-id <module_id> --method "<method_name>" --params '{"Input":"value"}'
wemol-cli job submit --module-name "<module_name>" --params-file params.json
cat params.json | wemol-cli job submit --module-id <module_id> --params @-
Flow submit:
wemol-cli job submit --flow-id <flow_id> --params-file flow-params.json
wemol-cli job submit --flow-name "<flow_name>" --params '{"Task A":{"Input":"value"}}'
cat flow-params.json | wemol-cli job submit --flow-id <flow_id> --params @-
Rules:
- Select exactly one target:
--module-id/--module-name/--flow-id/--flow-name. --methodis module-only; do not use with flow submit.--paramsand--params-fileare mutually exclusive.job submitsupports repeatable--tag; CLI auto-addsWemol CLIsource tag.- Module payload keys must match
--params-jsonfieldvalues exactly. - Flow payload must be task-keyed JSON (
{"Task Name": {"Input": value}}). - File args accept local file path; CLI uploads automatically.
- For file args, check
format/value_formatsfrom--params-jsonbefore submit. - For
MultipleChoice, send array even for one option (for example{"Numbering Scheme":["imgt"]}).
Job Read / Track / Diagnose
wemol-cli job list --status Done --tag "Wemol CLI" --limit 20 --offset 0
wemol-cli job search antibody numbering
wemol-cli job status <job_id>
wemol-cli job progress <job_id>
wemol-cli job get <job_id>
wemol-cli job wait <job_id>
wemol-cli job wait <job_id> --until terminal --interval 5
wemol-cli job tasks <job_id>
wemol-cli job diagnose <job_id>
wemol-cli job cancel <job_id>
Rules:
- use
job listfor status/history filters;job searchfor topic/module keyword recovery. job wait <job_id>defaults to--until done; use--until terminalto stop onDone/Abort/Cancel.job progressis preferred whenstatusis too coarse.job diagnosegives focused suggestions and executablenext_commands.
Logs / Output / Download
wemol-cli job logs <job_id>
wemol-cli job logs <job_id> --task-id <task_id> --stderr
wemol-cli job logs <job_id> --task-id <task_id1>,<task_id2> --stdout
wemol-cli job output <job_id> --task-id <task_id> --name output
wemol-cli job output <job_id> --task-id <task_id1>,<task_id2> --dynamic
wemol-cli job download <job_id>
wemol-cli job download <job_id> --output ./result_dir
wemol-cli job download <job_id> --retry 3 --concurrency 8
wemol-cli job download <job_id> --no-resume
wemol-cli job download --all --output ./downloads
Rules:
job outputnormally requires--task-id; if missing, runjob tasksfirst.- If output key missing or empty-data style errors (
DBDataNull/similar) appear, tryjob downloadbefore declaring failure. - download resume is enabled by default with
.wemol-download-manifest.json. --no-resumedisables state reuse.- summary includes skipped artifacts and transient/permanent failures.
Hard Rules (Must Follow)
- No guessed payload keys
- Never infer submit keys from natural language.
- Always derive from
module get --params-jsonorflow get.
- No flow flat JSON submit
- Flow submit must be task-keyed.
- If user gives flat JSON, fix structure first, then ask missing values.
- No blind retry
- On validation error, re-read schema and payload shape first.
- On
JobModuleTaskMaxNumLimit, treat as capacity/quota issue, not payload formatting.
- No premature failure conclusion
job outputfailure is not equal to job failure.- Try
job tasks+job download.
- No auth-ignore probing
- After auth-required error, login/session handling comes first.
- No update-question deflection
- For “需要更新吗 / latest?” do comparison work yourself, do not tell user to compare.
Detection Triggers (Auto-Branch)
When these signals appear, branch automatically:
Authentication required/DBUserNoLogin/session null:- branch to session handling (
login,account,host,lang) before further task commands.
- branch to session handling (
- user message contains
flow_id/--flow-id/flow submit/pipeline submit:- branch to flow-shape validation (
flow get, optional--params-template) before accepting payload.
- branch to flow-shape validation (
- output errors contain
Output '<name>' was not foundor empty-data style (DBDataNull,DBDataNotFound):- branch to artifact recovery (
job download) before failure conclusion.
- branch to artifact recovery (
- submit error contains
JobModuleTaskMaxNumLimit:- branch to capacity/quota diagnosis, not payload rewrite.
- user asks
需要更新吗/latest/should I update:- branch to version/update decision workflow.
Version / Update Decision Workflow
When user asks whether update is needed:
- Check installed version:
wemol-cli --version
- Compare against known baseline:
- this skill baseline is
v1.0.0(minimum) - if operating in this repo, also read repo CLI version from
crates/cli/Cargo.toml
- Decision:
- installed
< v1.0.0-> update required - installed
< repo version-> update required - installed
== repo version(or>= v1.0.0and no higher trusted source available) -> no mandatory update from local evidence
- Upstream check:
- if channel access is available, check official release channel directly
- if blocked, report explicit blocker and what was checked
Allowed final statements:
update requiredno update required from current evidencecannot verify upstream latest due to <specific blocker>
Response Contract
When answering operational questions, include:
- what was checked (exact command(s))
- observed key evidence (version/status/error marker)
- decision/result category (for example update required / no update required / blocked)
- next concrete command when action is needed
Do not return generic uncertainty without evidence.
When To Read References (Secondary)
Use references for extra depth, not for basic operation:
references/install.md: installer, PATH/security, cross-platform detailsreferences/session-and-host.md: auth/session/host/lang/account nuancesreferences/module-workflow.md: deeper module filtering/schema patternsreferences/flow-workflow.md: flow payload troubleshooting patternsreferences/job-workflow.md: advanced diagnose/download behaviorreferences/output-and-agent-notes.md: output ambiguity interpretation
Example Triggers
Use examples when task matches known pattern:
- antibody numbering:
examples/antibody-numbering-variable-region.md - protein descriptors:
examples/protein-physicochemical-properties.md - ADMET CSV:
examples/admet-ai.md - MHC-I minimal output:
examples/mhc-i-binding-prediction.md - history recovery:
examples/job-history-recovery.md - flow submit + download:
examples/flow-submit-and-download-recovery.md - run-limit error:
examples/module-run-limit-error.md
Completion Checklist
Before concluding:
- Are command and payload shapes confirmed from live CLI output?
- If submit happened, were keys copied from schema (not guessed)?
- If output unclear, did you try
job tasks/job downloadbefore declaring failure? - If asked about update, did you run the full update decision workflow and return a direct conclusion?
Self-Check Scorecard (Pass/Fail)
Run this quick scorecard before sending the final answer:
- Evidence check (Pass/Fail)
- Did I run or quote concrete command evidence (
--version,status, error marker, etc.)?
- Decision check (Pass/Fail)
- Did I provide an explicit result category (for example update required / no update required / blocked with reason)?
- Actionability check (Pass/Fail)
- If action is needed, did I provide the exact next command?
- Deflection check (Pass/Fail)
- Did I avoid pushing core comparison/diagnosis work back to the user?
If any item is Fail, revise the response before sending.