/qzcli
Manage GPU compute jobs on the Qizhi (启智) platform using qzcli — a kubectl-style CLI tool. Use when user says "qzcli", "启智平台", "submit job", "stop job", "查计算组", "avail", "list jobs", "batch submit", or needs to manage distributed training jobs on a Qizhi instance.
$ npx -y skills add wanshuiyin/Auto-claude-code-research-in-sleep --skill qzcli --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/qzcli
Context preview
The summary Claude sees to decide when to auto-load this skill.
Manage GPU compute jobs on the Qizhi (启智) platform using qzcli — a kubectl-style CLI tool. Use when user says "qzcli", "启智平台", "submit job", "stop job", "查计算组", "avail", "list jobs", "batch submit", or needs to manage distributed training jobs on a Qizhi instance.
SKILL.md
qzcli.SKILL.mdname: qzcli
description: Manage GPU compute jobs on the Qizhi (启智) platform using qzcli — a kubectl-style CLI tool. Use when user says "qzcli", "启智平台", "submit job", "stop job", "查计算组", "avail", "list jobs", "batch submit", or needs to manage distributed training jobs on a Qizhi instance.
argument-hint: "[login|avail|list|create|stop <job-id>|batch|status|watch]"
allowed-tools: Bash(*), Read, Write
qzcli — 启智平台任务管理
A kubectl/docker-style CLI for managing GPU compute jobs on the Qizhi (启智) platform.
**GitHub:** [tianyilt/qzcli_tool](https://github.com/tianyilt/qzcli_tool)
Environment contract
Qizhi is the scheduler-cluster shape of `../shared-references/compute-env-contract.md`: images are built OFF-platform and referenced at submit time, so the declarative env spec + `env:<name>@<specHash>` ledger (`.aris/compute/qizhi.md`) is what keeps "which image has which stack" answerable. Run the kernel witness inside a submitted job (not on the login side) before trusting an image for a long run.
Installation
pip install rich requests prompt_toolkit mcp
git clone https://github.com/tianyilt/qzcli_tool
cd qzcli_tool && pip install -e .
MCP Integration (optional)
To use qzcli as an MCP tool directly from Claude Code or Codex:
# Claude Code
claude mcp add qzcli -- qzcli-mcp
# Codex
codex mcp add qzcli -- qzcli-mcp
---
Configuration
Credentials are read in this priority order: `CLI args > --password-stdin > env vars > QZCLI_ENV_FILE (.env) > ~/.qzcli/config.json > interactive input`
# Option A: env file (recommended)
mkdir -p ~/.qzcli
cat > ~/.qzcli/.env <<'EOF'
QZCLI_USERNAME="your_username"
QZCLI_PASSWORD="your_password"
EOF
# Option B: environment variables
export QZCLI_USERNAME="your_username"
export QZCLI_PASSWORD="your_password"
export QZCLI_API_URL="https://qz.yourorg.edu.cn"
Config files are stored in `~/.qzcli/`: `config.json`, `.cookie`, `resources.json`, `jobs.json`.
---
Quick Start
# 1. Login
qzcli login
# 2. Discover and cache workspaces/compute groups (run once, re-run after joining new workspaces)
qzcli res -u
# 3. Check available nodes
qzcli avail
# 4. List running jobs
qzcli ls -c -r
---
Authentication
# Interactive login
qzcli login
# With credentials
qzcli login -u YOUR_USERNAME -p 'YOUR_PASSWORD'
# Read password from stdin (for scripts)
echo 'YOUR_PASSWORD' | qzcli login -u YOUR_USERNAME --password-stdin
# Check current cookie
qzcli cookie --show
# Clear cookie
qzcli cookie --clear
**Note:** `qzcli avail` auto-refreshes the cookie if it expires and credentials are configured.
---
Resource Discovery
# List cached workspaces
qzcli res --list
# Refresh all workspace resource cache (run this first!)
qzcli res -u
# Refresh a specific workspace
qzcli res -w MY_WORKSPACE -u
# Set a human-readable alias for a workspace
qzcli res -w ws-xxxxxxxx --name "My Workspace"
---
Check Available Nodes
# All workspaces
qzcli avail
# Including low-priority task nodes (slower but more accurate)
qzcli avail --lp
# Specific workspace
qzcli avail -w MY_WORKSPACE
# Find compute groups with N free nodes
qzcli avail -n 4
# Export IDs for scripting
qzcli avail -n 4 -e
# Show idle node names
qzcli avail -w MY_WORKSPACE -v
---
Job Submission
Interactive (recommended for first-time use)
# Full interactive selection: workspace → project → compute group → spec
qzcli create -i
# Interactive for a specific workspace only
qzcli create -i -w "My Workspace"
The TUI shows GPU type, availability, and spec status at each level. Press `Enter/→` to go deeper, `←` to go back.
Non-interactive
# Using names (resolved from qzcli res cache)
qzcli create \
--name "my-training-job" \
--command "bash /path/to/train.sh" \
--workspace "My Workspace" \
--compute-group "My Compute Group" \
--image YOUR_REGISTRY/team/image:tag \
--instances 4 \
--priority 10
# Using IDs directly
qzcli create \
--name "my-job" \
--command "bash /path/to/train.sh" \
--workspace ws-YOUR_WORKSPACE_ID \
--compute-group lcg-YOUR_LCG_ID \
--spec YOUR_SPEC_ID \
--image YOUR_REGISTRY/team/image:tag \
--instances 4
**Key parameters:**
| Parameter | Default | Description | |-----------|---------|-------------| | `--name` / `-n` | required | Job name | | `--command` / `-c` | required | Command to run | | `--workspace` / `-w` | | Workspace name or ID (`ws-...`) | | `--compute-group` / `-g` | auto | Compute group name or ID (`lcg-...`) | | `--spec` / `-s` | auto | Resource spec ID | | `--image` / `-m` | | Docker image | | `--instances` | 1 | Number of instances | | `--shm` | 1200 | Shared memory (GiB) | | `--priority` | 10 | Priority (1–10) | | `--dry-run` | | Preview only, don't submit | | `--json` | | JSON output for scripting |
# Preview before submitting
qzcli create --name test --command "echo hi" --workspace "My Workspace" \
--image YOUR_IMAGE --dry-run
Env-var passthrough (for existing submission scripts)
# Pass vars directly — do NOT use "export VAR; bash script.sh"
WORKSPACE_ID="ws-YOUR_WORKSPACE_ID" \
LCG_ID="lcg-YOUR_LCG_ID" \
SPEC_ID="YOUR_SPEC_ID" \
CHECKPOINT_DIR="/path/to/checkpoint" \
bash YOUR_SUBMIT_SCRIPT.sh
HPC / CPU jobs (Slurm)
qzcli hpc \
--name "my-cpu-job" \
--workspace ws-YOUR_WORKSPACE_ID \
--compute-group lcg-YOUR_LCG_ID \
--predef-quota-id YOUR_QUOTA_ID \
--cpu 55 --mem-gi 300 --instances 30 \
--image YOUR_REGISTRY/team/cpu-image:tag \
--entrypoint "cd /path/to/dir && bash run.sh"
---
Batch Submission
# Submit from config file
qzcli batch batch_config.json --delay 3
# Preview all jobs
qzcli batch batch_config.json --dry-run
# Continue on error
qzcli batch batch_config.json --continue-on-error
**Config format** (`batch_config.json`):
{
"defaults": {
"workspace": "ws-YOUR_WORKSPACE_ID",
"compute_group":Read more
name: qzcli description: Manage GPU compute jobs on the Qizhi (启智) platform using qzcli — a kubectl-style CLI tool. Use when user says "qzcli", "启智平台", "submit job", "stop job", "查计算组", "avail", "list jobs", "batch submit", or needs to manage distributed training jobs on a Qizhi instance. argument-hint: "[login|avail|list|create|stop <job-id>|batch|status|watch]" allowed-tools: Bash(*), Read, Write
qzcli — 启智平台任务管理
A kubectl/docker-style CLI for managing GPU compute jobs on the Qizhi (启智) platform.
**GitHub:** [tianyilt/qzcli_tool](https://github.com/tianyilt/qzcli_tool)
Environment contract
Qizhi is the scheduler-cluster shape of `../shared-references/compute-env-contract.md`: images are built OFF-platform and referenced at submit time, so the declarative env spec + `env:<name>@<specHash>` ledger (`.aris/compute/qizhi.md`) is what keeps "which image has which stack" answerable. Run the kernel witness inside a submitted job (not on the login side) before trusting an image for a long run.
Installation
pip install rich requests prompt_toolkit mcp git clone https://github.com/tianyilt/qzcli_tool cd qzcli_tool && pip install -e .
MCP Integration (optional)
To use qzcli as an MCP tool directly from Claude Code or Codex:
# Claude Code claude mcp add qzcli -- qzcli-mcp # Codex codex mcp add qzcli -- qzcli-mcp
---
Configuration
Credentials are read in this priority order: `CLI args > --password-stdin > env vars > QZCLI_ENV_FILE (.env) > ~/.qzcli/config.json > interactive input`
# Option A: env file (recommended) mkdir -p ~/.qzcli cat > ~/.qzcli/.env <<'EOF' QZCLI_USERNAME="your_username" QZCLI_PASSWORD="your_password" EOF # Option B: environment variables export QZCLI_USERNAME="your_username" export QZCLI_PASSWORD="your_password" export QZCLI_API_URL="https://qz.yourorg.edu.cn"
Config files are stored in `~/.qzcli/`: `config.json`, `.cookie`, `resources.json`, `jobs.json`.
---
Quick Start
# 1. Login qzcli login # 2. Discover and cache workspaces/compute groups (run once, re-run after joining new workspaces) qzcli res -u # 3. Check available nodes qzcli avail # 4. List running jobs qzcli ls -c -r
---
Authentication
# Interactive login qzcli login # With credentials qzcli login -u YOUR_USERNAME -p 'YOUR_PASSWORD' # Read password from stdin (for scripts) echo 'YOUR_PASSWORD' | qzcli login -u YOUR_USERNAME --password-stdin # Check current cookie qzcli cookie --show # Clear cookie qzcli cookie --clear
**Note:** `qzcli avail` auto-refreshes the cookie if it expires and credentials are configured.
---
Resource Discovery
# List cached workspaces qzcli res --list # Refresh all workspace resource cache (run this first!) qzcli res -u # Refresh a specific workspace qzcli res -w MY_WORKSPACE -u # Set a human-readable alias for a workspace qzcli res -w ws-xxxxxxxx --name "My Workspace"
---
Check Available Nodes
# All workspaces qzcli avail # Including low-priority task nodes (slower but more accurate) qzcli avail --lp # Specific workspace qzcli avail -w MY_WORKSPACE # Find compute groups with N free nodes qzcli avail -n 4 # Export IDs for scripting qzcli avail -n 4 -e # Show idle node names qzcli avail -w MY_WORKSPACE -v
---
Job Submission
Interactive (recommended for first-time use)
# Full interactive selection: workspace → project → compute group → spec qzcli create -i # Interactive for a specific workspace only qzcli create -i -w "My Workspace"
The TUI shows GPU type, availability, and spec status at each level. Press `Enter/→` to go deeper, `←` to go back.
Non-interactive
# Using names (resolved from qzcli res cache) qzcli create \ --name "my-training-job" \ --command "bash /path/to/train.sh" \ --workspace "My Workspace" \ --compute-group "My Compute Group" \ --image YOUR_REGISTRY/team/image:tag \ --instances 4 \ --priority 10 # Using IDs directly qzcli create \ --name "my-job" \ --command "bash /path/to/train.sh" \ --workspace ws-YOUR_WORKSPACE_ID \ --compute-group lcg-YOUR_LCG_ID \ --spec YOUR_SPEC_ID \ --image YOUR_REGISTRY/team/image:tag \ --instances 4
**Key parameters:**
| Parameter | Default | Description | |-----------|---------|-------------| | `--name` / `-n` | required | Job name | | `--command` / `-c` | required | Command to run | | `--workspace` / `-w` | | Workspace name or ID (`ws-...`) | | `--compute-group` / `-g` | auto | Compute group name or ID (`lcg-...`) | | `--spec` / `-s` | auto | Resource spec ID | | `--image` / `-m` | | Docker image | | `--instances` | 1 | Number of instances | | `--shm` | 1200 | Shared memory (GiB) | | `--priority` | 10 | Priority (1–10) | | `--dry-run` | | Preview only, don't submit | | `--json` | | JSON output for scripting |
# Preview before submitting qzcli create --name test --command "echo hi" --workspace "My Workspace" \ --image YOUR_IMAGE --dry-run
Env-var passthrough (for existing submission scripts)
# Pass vars directly — do NOT use "export VAR; bash script.sh" WORKSPACE_ID="ws-YOUR_WORKSPACE_ID" \ LCG_ID="lcg-YOUR_LCG_ID" \ SPEC_ID="YOUR_SPEC_ID" \ CHECKPOINT_DIR="/path/to/checkpoint" \ bash YOUR_SUBMIT_SCRIPT.sh
HPC / CPU jobs (Slurm)
qzcli hpc \ --name "my-cpu-job" \ --workspace ws-YOUR_WORKSPACE_ID \ --compute-group lcg-YOUR_LCG_ID \ --predef-quota-id YOUR_QUOTA_ID \ --cpu 55 --mem-gi 300 --instances 30 \ --image YOUR_REGISTRY/team/cpu-image:tag \ --entrypoint "cd /path/to/dir && bash run.sh"
---
Batch Submission
# Submit from config file qzcli batch batch_config.json --delay 3 # Preview all jobs qzcli batch batch_config.json --dry-run # Continue on error qzcli batch batch_config.json --continue-on-error
**Config format** (`batch_config.json`):
{
"defaults": {
"workspace": "ws-YOUR_WORKSPACE_ID",
"compute_group":· · · · · · -orange?style=flat) · · 💬 Join Community · 💡 Use ARIS as a skill-based workflow in Claude Code / Codex CLI / Cursor / Trae / Antigravity / GitHub Copilot CLI / OpenClaw, or get the full experience with the standalone ARIS-Code CLI — enjoy any
Other skills on auto-claude-code-research-in-sleep.
- /ablation-planner
Use when main results pass result-to-claim (claim_supported=yes or partial) and ablation studies are needed for paper submission.
Open skill - /alphaxiv
Quick single-paper lookup via AlphaXiv LLM-optimized summaries with tiered source fallback. Use when user says "explain this paper", "summarize paper", pastes an arXiv/AlphaXiv URL, or provides a bare arXiv ID for quick understanding - not for broad literature search.
Open skill - /analyze-results
Analyze ML experiment results, compute statistics, generate comparison tables and insights. Use when user says "analyze results", "compare", or needs to interpret experimental data.
Open skill - /arxiv
Search, download, and summarize academic papers from arXiv. Use when user says "search arxiv", "download paper", "fetch arxiv", "arxiv search", "get paper pdf", or wants to find and save papers from arXiv to the local paper library.
Open skill - /auto-paper-improvement-loop
Autonomously improve a generated paper via GPT-5.6-Sol xhigh review → implement fixes → recompile, for 2 rounds. Use when user says \"改论文\", \"improve paper\", \"论文润色循环\", \"auto improve\", or wants to iteratively polish a generated paper.
Open skill - /auto-review-loop-llm
Autonomous research review loop using any OpenAI-compatible LLM API. Configure via llm-chat MCP server or environment variables. Trigger with "auto review loop llm" or "llm review".
Open skill

