Coding Agents
The ws CLI integrates with coding agents such as Claude Code, Cursor, Codex, and Copilot. After configuration, agents can manage tasks, move work items through workflows, and run tests from your editor.
Note: This page explains how to connect an editor agent to the
wsCLI. For server-side coding agents, see Coding Agent Runner. Windshift runs one container per job and opens draft pull requests.
Quick Start
Run ws init in your project root:
ws initOn a new machine, ws init opens an OAuth-style browser flow and writes the global configuration (~/.config/ws/config.toml). It then runs the project tier:
- Queries the workspace for item types, statuses, and workflow configuration.
- Generates
WINDSHIFT.mdwith command reference and workspace-specific configuration. - Updates
CLAUDE.mdorAGENTS.md, if present, with a reference toWINDSHIFT.md. - Creates or updates
ws.tomlwith workspace settings and generated status aliases.
Flags
| Flag | Description |
|---|---|
-w, --workspace |
Workspace key to use during project setup |
--global |
Force global-tier setup (browser auth + ~/.config/ws/config.toml) |
--manual |
Skip the browser and prompt for a pasted API token |
--new-agent |
Project-tier: provision a dedicated agent + token for this directory |
--agent-name |
Override the generated agent username |
-c, --config |
Path to a specific config file |
To refresh only WINDSHIFT.md, run ws config docs. This command does not change ws.toml, CLAUDE.md, or AGENTS.md.
What Gets Generated
ws init creates WINDSHIFT.md in your project root. Agents read this file to learn about your workspace and available commands.
The generated file includes:
| Section | Contents |
|---|---|
| Quick Commands | Common ws commands for task management |
| Status Aliases | Shorthand names mapped to your workspace statuses |
| Item Types | Available types (Task, Bug, Story, etc.) in your workspace |
| Statuses | All statuses and their workflow order |
| Workflow Transitions | Valid status transitions for each item type |
| Test Management | Commands for listing and viewing test cases |
| Configuration | Current workspace key and server info |
Run ws init again after you change workspace configuration, such as statuses, item types, or workflow transitions. This keeps the file in sync.
Claude Code
If CLAUDE.md exists in your project root, ws init adds a reference to WINDSHIFT.md. Claude Code then reads it.
Allow the ws Tool
Add ws to your allowed tools in .claude/settings.local.json:
{
"permissions": {
"allow": [
"Bash(ws *)"
]
}
}This lets Claude Code run ws commands without asking for approval each time.
What Agents Can Do
After you configure the integration, you can ask your agent to:
"Check what tasks are assigned to me"
→ ws task mine
"Move ENG-142 to in progress"
→ ws task move ENG-142 progress
"Create a bug for the auth redirect issue"
→ ws task create -t "Auth redirect fails on logout" --type 2 # type ID for Bug
"What's the status of ENG-138?"
→ ws task get ENG-138
# Or filter your task list:
→ ws task mine | jq '.[] | select(.key == "ENG-138")'The agent reads WINDSHIFT.md to find the statuses, item types, and transitions available in your workspace.
Custom Slash Commands
Claude Code supports custom slash commands in .claude/commands/. Create shortcuts for common ws operations that the whole team can use.
Create a file at .claude/commands/add-task.md:
Create a new task in the current Windshift workspace.
Use the ws CLI to create a task with the provided arguments:
- Title: $ARGUMENTS
Steps:
1. Run `ws task create --title "$ARGUMENTS"`
2. Show the created task key and statusTeam members can now type /add-task Fix the login redirect bug in Claude Code. They do not need to remember the CLI syntax.
More examples:
.claude/commands/my-tasks.md - list assigned tasks:
List my current tasks from Windshift.
Run `ws task mine` and summarize the results. Group by status..claude/commands/start-task.md - pick up a task:
Start working on a Windshift task.
1. Run `ws task move $ARGUMENTS progress` to move the task to in progress
2. Read the task details and summarize what needs to be doneCommit .claude/commands/ to the repository so the whole team can use the same commands.
Other Agents
For agents that use AGENTS.md, such as Cursor or Codex, ws init updates that file automatically. It works the same way as CLAUDE.md.
For an agent that uses another configuration file, add a reference to WINDSHIFT.md manually. Point the agent configuration to WINDSHIFT.md so it can read workspace commands and configuration.
Example for a generic agent config:
See WINDSHIFT.md for Windshift CLI commands and workspace configuration.Status Aliases
ws init generates aliases so agents can use consistent commands regardless of the workspace status names. The default aliases are:
| Alias | Typical Mapping |
|---|---|
todo |
Open / To Do |
progress |
In Progress |
review |
To Review / In Review |
done |
Done / Closed |
blocked |
Blocked |
ws init saves these aliases in ws.toml. You can customize them:
[status_aliases]
done = "Ready for QA"
progress = "Working"
review = "Peer Review"
todo = "Backlog"
blocked = "On Hold"Agents use aliases in commands such as ws task move ENG-142 done. The CLI resolves the alias to the actual status name. See CLI Configuration for details.
Example Workflow
A typical session with a coding agent:
# Developer asks the agent to check their tasks
ws task mine -o table
# KEY TITLE STATUS ASSIGNEE
# ENG-142 Fix auth redirect Open alice
# ENG-155 Add rate limiting Open alice
# Agent picks up a task and moves it to in progress
ws task move ENG-142 progress
# Developer works on the fix with the agent's help...
# Agent moves the task to review when done
ws task move ENG-142 review
# Agent creates a follow-up task if needed
# (--type and --status take numeric IDs from `ws item-type ls` / `ws status ls`)
ws task create -t "Add auth redirect tests" --type 1The agent handles workflow transitions while the developer focuses on the code.