zsc (short for zig slice code) is a CLI for multi-IDE/AI Coding tools that initializes a unified AI Agents task structure in your project.
Language / 语言: English | 中文
You can install zsc with pip or uv tool:
# pip (when uv is not installed or you prefer pip)
pip install -U zsc
# uv tool (recommended when uv is available)
uv tool install zsc
uv tool install zsc --upgradeFor local development from this repo, you can use an editable install:
uv pip install -e .[test]The commands above are examples; adjust to your environment and
uvversion.
- Initialize
.agentstask layout: Creates.agents/and.agents/tasks/as the single entry point for project-level task lifecycle and TODOs. - Install
zsc-*skills for multiple AI Coding tools: Each subcommand maps to a skill (for example,zsc-create-task↔zsc task new).zsc initinstalls these skills under.cursor/skills/,.codex/skills/, and.claudecode/skills/so each tool can understand and maintain the task system. - Idempotent behavior: Re-running commands does not destroy existing structure or overwrite user-customized skill files.
From your project root, run:
zsc init .zsc init . will:
- Create
.agents/and.agents/tasks/directories if they do not exist. - Create the following AI tool skill directories if they do not exist:
.cursor/skills/.codex/skills/.claudecode/skills/
- Copy the
zsc-*skills bundled inzscinto those directories, e.g.:.cursor/skills/zsc-help/SKILL.md(usage overview; can be triggered as/zsc-helpin an AI environment).cursor/skills/zsc-create-task/SKILL.md(corresponds tozsc task new).cursor/skills/zsc-task-list/SKILL.md(corresponds tozsc task list).cursor/skills/zsc-task-status/SKILL.md(corresponds tozsc task status)- And similarly-named paths under
.codex/skills/and.claudecode/skills/. - SKILL.md files are overwritten on each run so that re-running
zsc init .(e.g. after changing--langor.agents/zsc-lang) keeps all skills in the chosen language.
Running zsc init . again is safe: existing directories are kept; skill files are re-written from the current language template.
To see the installed zsc version:
zsc -V
# or
zsc --versionIn any terminal, you can upgrade zsc with:
zsc -UThis attempts to upgrade zsc to the latest version:
- If
uvis available and the project’s.venvis not broken,zsc -Uprefersuv tool install zsc --upgrade(equivalent to running that command directly). - If the Python interpreter inside
.venvis a broken symlink (for example.venv/bin/python3no longer exists),zsc -Uskips the uv-based upgrade and falls back topip install -U zsc, printing a hint that you may want to recreate the virtualenv (e.g. viauv venv). - If uv is available but the upgrade fails (including errors like
No virtual environment found; run \uv venv` to create an environment, or pass `--system` to install into a non-virtual environment),zsc -Uwill trypip install -U zsconce as a fallback; if that also fails, it prints copy-pastable manual commands so you can decide betweenpip install -U zscanduv tool install zsc --system`. - The actual behavior is independent of your shell type (bash/zsh/fish, etc.), but depends on which
zscbinary is on yourPATH. If a given shell picks up a differentzscinstalled inside a virtualenv, thenzsc -Uin that shell will follow that environment.
zsc provides a set of subcommands around .agents/tasks:
zsc task list: list tasks under.agents/tasksand their basic status (open/completed).zsc task new <feat_name> [path]: create a newtask_{no}_{feat_name}directory andtask_{no}_{feat_name}.mdtemplate in the given project root (default: current directory).zsc task status: summarize counts of tasks and their states, as a project-level health indicator.
Together with zsc init ., you can first initialize the task system and then use zsc task commands to maintain and browse the lifecycle.
Note:
zsc task newcreates the directory and same-named.mdtemplate. In AI Coding tools, triggering the zsc-create-task skill (e.g./zsc-create-taskin Cursor) can runzsc task new <feat_name>or create the files from a template and then help you refine the “closed-loop description” andTODO_LIST. If you previously used the old skill namezsc-new-task, runzsc init .again to installzsc-create-task.
Besides traditional terminal subcommands (such as zsc init . and zsc task list), zsc also installs a set of skills (named zsc-*) for various AI Coding tools. In an AI environment, these behave like a second command line, where the model executes actions in your local project on your behalf.
- Traditional CLI: you type commands in a terminal, such as:
zsc init .zsc task list
- Skills (AI-side): you trigger skills from your IDE/AI tool, for example:
- In Cursor, type
/zsc-help,/zsc-create-task,/zsc-run-task, etc., and let the AI perform the corresponding operations.
- In Cursor, type
Core skills (by installed skill name):
| Skill | Role | Trigger example | Related CLI |
|---|---|---|---|
| zsc-help | Explain what zsc does, how CLI and skills map to each other, and provide quick-start examples. | /zsc-help |
zsc --help, README |
| zsc-create-task | Create and design tasks (closed-loop description and TODO_LIST) under .agents/tasks; does not execute TODOs. |
/zsc-create-task @task_xx.md |
zsc task new |
| zsc-run-task | Execute and advance an existing task, modifying code/docs according to TODO_LIST and rewriting TODO_LIST when done. | /zsc-run-task @task_02_xxx.md |
— |
| zsc-run-task-to-complete | In a safe environment, try to automatically run as many TODOs as possible in one go, rewriting TODO_LIST with the same completion rules. | /zsc-run-task-to-complete @task_06_...md |
— |
| zsc-task-list | List tasks under .agents/tasks and their status from the AI side. |
/zsc-task-list |
zsc task list |
| zsc-task-status | Summarize project-level task health (open/completed/unknown counts). | /zsc-task-status |
zsc task status |
| zsc-update-task | Update task design only (closed-loop description, TODO_LIST, etc.); does not run TODOs. | /zsc-update-task @task_03_xxx.md |
— |
Maintenance: when adding or removing
zsc-*skills, keep this section in sync with what is actually installed under.cursor/skills/and similar directories.
- Each TODO should be a concrete, executable engineering action that roughly answers “who does what in which context” and can typically be completed within 1–2 hours.
- Avoid long-running observation/monitoring items or overly abstract goals in TODO_LIST (for example, “keep watching error rate”, “ensure long-term stability”). Those are better expressed as separate tasks (e.g. dedicated monitoring/stability tasks) or recorded in
task_records/log/, design docs, or ops docs, rather than left as open TODOs forever. - Prefer a bottom-up decomposition style: write the next concrete step first; after completing one concrete step, add a new TODO for the next step. When a TODO is too large or vague, split it into multiple smaller, more specific TODOs that replace the original entry.