Upgrade / Auto-Upgrade Guide (No Fork Required)
This guide explains how to:
- Check for new versions.
- Automate the upgrade process.
- Complete the upgrade without needing to fork or
git clonethe repository.
0) Choose an Upgrade Entry Point
Option A: Shell bootstrap (No Python required)
This path only needs bash plus curl/wget and tar:
curl -fsSL https://raw.githubusercontent.com/jxpeng98/qiongli/main/scripts/bootstrap_qiongli.sh | bash -s -- \
--repo <owner>/<repo> \
--project-dir /path/to/project \
--target all \
--overwriteNotes:
- The bootstrapper downloads the selected release archive and runs
scripts/install_qiongli.shfrom inside it. - By default it also installs the shell CLI:
qiongli,ql,research-skills,rsk,rsw. - Default shell CLI location:
${QIONGLI_BIN_DIR:-${RESEARCH_SKILLS_BIN_DIR:-~/.local/bin}}. - Use
--no-clito skip shell CLI installation, or--cli-dir <path>to change the install location. --doctoris optional and only runs whenpython3exists.- Remote bootstrap supports
--mode copyonly. Use a local clone for--mode link.
Option B: Python CLI (optional)
This repository also provides a pyproject.toml package for people who want a reusable updater CLI:
pipx install qiongli
# This provides 3 equivalent commands (choose any):
# - qiongli
# - rsk
# - rsw
# You can also set `QIONGLI_REPO=<owner>/<repo>` to omit the --repo flag
qiongli check --repo <owner>/<repo>
qiongli upgrade --repo <owner>/<repo> --target all --doctor
qiongli init --project-dir /path/to/projectNote: pip installs/upgrades the qiongli CLI package. The actual refresh of global client skill directories is still performed by
qiongli upgrade. Project-local files are explicit: useqiongli initorqiongli upgrade --parts project ...when you want them rewritten.
qiongli upgrade is a content/assets refresh command. It does not update the installed qiongli CLI package. On npm/npx, update, refresh, and upgrade all reapply assets from the currently installed npm package; upgrade is an overwrite refresh alias. Selected upstream release archives, channel/package self-update, and qiongli self-update belong to the full runtime path: pipx install qiongli.
1) What exactly are you upgrading?
This project has one type of "installation target":
- Local skill directories for the supported clients (so Codex / Claude Code / Antigravity / Hermes recognize the skill globally)
- Codex:
${CODEX_HOME:-~/.codex}/skills/qiongli-workflow - Claude:
${CLAUDE_CODE_HOME:-~/.claude}/skills/qiongli-workflow - Antigravity (global):
${ANTIGRAVITY_HOME:-~/.gemini/antigravity}/skills/qiongli-workflow - Hermes:
${HERMES_HOME:-~/.hermes}/skills/qiongli-workflow
- Codex:
Upgrading simply means overwriting these target paths with the new version.
Project-local integrations (like .env) are only refreshed when you explicitly run qiongli init --project-dir . or add --parts project.
2) Checking for new versions (Recommended)
# If QIONGLI_REPO is set, --repo can be omitted
qiongli check --repo <owner>/<repo>
# Or run within the repository (equivalent):
python3 scripts/qiongli_update.py check --repo <owner>/<repo>Details:
--repois used to query the latest GitHub release tag.- If it detects that "local/installed version < latest version", the command returns exit code
1(which is useful for automation scripts). - You can set a default upstream to omit
--repo:- Envrionment variable:
export QIONGLI_REPO=<owner>/<repo> - If you run this inside a
qiongliclone with a configured git remote (prioritizesupstream, thenorigin),--repocan be omitted. - Or add a
qiongli.tomlfile to your project root (easy to commit to your project repo, great for CI).
- Envrionment variable:
Example (in project root):
# qiongli.toml
[upstream]
repo = "<owner>/<repo>" # Or Git URLAfterward, you can run:
qiongli check
qiongli upgrade --target all --doctor
qiongli init --project-dir .3) Automatic Upgrade (No fork, no git clone required)
This directly downloads the GitHub release archive and executes the installation script inside it:
curl -fsSL https://raw.githubusercontent.com/jxpeng98/qiongli/main/scripts/bootstrap_qiongli.sh | bash -s -- \
--repo <owner>/<repo> \
--project-dir /path/to/your/project \
--target all \
--overwriteOr, if Python is available:
# If QIONGLI_REPO is set, --repo can be omitted
qiongli upgrade \
--repo <owner>/<repo> \
--target all \
--mode copy \
--doctor
# Or run within the repository (equivalent):
python3 scripts/qiongli_update.py upgrade \
--repo <owner>/<repo> \
--target all \
--mode copy \
--doctorKey points:
- This method does not rely on git and does not require you to clone the repository locally.
- The shell bootstrap path does not rely on Python.
- The shell CLI itself can run
check,upgrade, andalignwithout Python. - Full-runtime upgrade is plugin-first from v1.9.0 onward: it installs the full local plugin surface, then cleans old global skills and Codex/Claude standalone MCP configs after the new install succeeds.
- npm/npx upgrade stays on the Python-free asset path and refreshes the skills surface by default; plugin-lite output is opt-in with
--surface pluginor--surface bothwhere bundled and supported. - Add
--surface skills --profile partialin the full runtime when you explicitly want the old skills-only upgrade path. - Add
--parts projectwhen you explicitly want to refresh project-local workflow assets. - For private repositories or if you hit API rate limits, it is recommended to set:
GITHUB_TOKENorGH_TOKEN. - It defaults to using the "latest release tag", but both shell bootstrap and
qiongli upgradeaccept explicit refs:--ref v0.1.0-beta.6 --ref-type tag--ref main --ref-type branch
It is recommended to restart your clients (Codex / Claude Code / Antigravity / Hermes) after upgrading.
4) Alternative "Auto-Upgrade": Link Installation + Git Pull (Best for long-term maintenance)
If you are willing to keep a local clone of the repository (no fork needed, just clone once), this is recommended:
- When installing, use
--mode link(creates symlinks, meaning future updates don't require re-running the install script):
./scripts/install_qiongli.sh --target all --mode link --overwrite
python3 -m qiongli.cli init --project-dir /path/to/project --target all --overwrite- When updating, simply run:
git pullBecause the installation targets are symlinks, updating the repository contents automatically syncs the skill and workflows to the latest version across selected clients.
5) Automation Suggestions (Optional)
You can use cron/CI to do a "weekly check + upgrade if available":
- Check periodically:
qiongli check --repo <owner>/<repo>- If exit code is 1, execute upgrade:
qiongli upgrade --repo <owner>/<repo> --target all
qiongli init --project-dir /path/to/projectIf you want this upgrade detection integrated as a Codex Automation (run periodically and generate inbox results), just let me know the run frequency and target project paths.