Work CLI Usage
Overview
The work CLI is a unified, stateless command-line tool for managing work items across multiple project management backends. It enables seamless work item management whether you're working with GitHub Issues, local filesystem, or planning to integrate with Jira, Linear, or Azure DevOps.
Quick Start
Local Filesystem (No External Dependencies)
# Create and set context work context add my-project --tool local-fs --path ./work-items work context set my-project # Start creating work items immediately work create "Set up project structure" --kind task --priority medium work list
GitHub Integration
# Authenticate with GitHub CLI (recommended) gh auth login # Create GitHub context work context add my-project --tool github --url https://github.com/owner/repo work context set my-project work auth login # Create work items that appear as GitHub issues work create "Fix login bug" --kind bug --priority high
Core Operations
1. Lifecycle Management
Manage work item states through their lifecycle:
# Create work items work create "Title" --kind task --priority medium --assignee username work create "Bug description" --kind bug --priority critical # Manage state transitions work start ITEM-123 # new → active work close ITEM-123 # active/new → closed work reopen ITEM-123 # closed → active
2. Querying and Access
Find and retrieve work items with powerful filtering:
# Get specific item work get ITEM-123 # List with filters work list # All items work list where state=active # Active items only work list where priority=high and state=new # High priority new items work list where assignee=me order by priority desc work list where kind=bug limit 10
3. Attribute Management
Update work item properties:
# Set attributes work set ITEM-123 priority=high assignee=alice work set ITEM-123 title="New title" description="Updated description" # Edit interactively work edit ITEM-123 --title "Fix login bug" --priority critical work edit ITEM-123 --editor # Opens $EDITOR for description # Clear attributes work unset ITEM-123 assignee work unset ITEM-123 priority
4. Relations and Dependencies
Create relationships between work items:
# Create relationships work link ITEM-123 parent_of ITEM-456 # 456 is child of 123 work link ITEM-123 blocks ITEM-789 # 123 blocks 789 work link ITEM-123 duplicates ITEM-999 # 123 duplicates 999 # Remove relationships work unlink ITEM-123 blocks ITEM-789
5. Comments and Documentation
Add context and updates:
# Add comments work comment ITEM-123 "Fixed the authentication flow" work close ITEM-123 --comment "Completed testing"
Context Management
Contexts define tool + scope + credentials for different projects:
# Add contexts for different backends work context add personal --tool local-fs --path ~/personal-tasks work context add work-repo --tool github --url https://github.com/company/repo work context add jira-project --tool jira --url https://company.atlassian.net --project KEY # Switch between contexts work context set personal # Work with local filesystem work context set work-repo # Work with GitHub issues work context list # Show all contexts work context show # Show active context details work context remove old-context
Authentication
Authentication is context-specific and varies by backend:
GitHub Authentication (3-tier hierarchy)
# Option 1: GitHub CLI (recommended - most secure) gh auth login # Option 2: Environment variable (CI/CD friendly) export GITHUB_TOKEN=ghp_token # Option 3: Manual token (explicit management) work context add --token ghp_token # Check and manage auth status work auth status # Check current context auth work auth login # Context-specific login work auth logout # Context-specific logout
Local Filesystem
# No authentication required for local-fs work context add local --tool local-fs --path ./work # Ready to use immediately
Notifications System
Send work item data to external services for team coordination:
Setup Notification Targets
# Telegram notifications work notify target add team-chat --type telegram \ --bot-token "YOUR_BOT_TOKEN" --chat-id "YOUR_CHAT_ID" # Bash script notifications (webhook, email, etc.) work notify target add custom-webhook --type bash \ --script /path/to/webhook-script.sh --timeout 60
Send Notifications
# Send query results to targets work notify send where priority=critical to team-chat work notify send where state=new and assignee=me to alerts work notify send where kind=bug order by priority desc limit 5 to team-chat # Send specific item updates work notify send ITEM-123 to team-chat
Custom Notification Scripts
Create bash scripts that receive JSON via stdin:
#!/bin/bash # webhook-script.sh - receives work item data as JSON data=$(cat) message=$(echo "$data" | jq -r '.message') title=$(echo "$data" | jq -r '.workItem.title // "N/A"') # Log notification echo "$(date): $message - $title" >> /var/log/work-notifications.log # Send to external service curl -X POST https://your-service.com/webhook \ -H "Content-Type: application/json" \ -d "$data"
Schema Discovery
Understand what's available in your current backend:
work schema show # Full schema overview work schema kinds # Available work item types (task, bug, epic, story) work schema attrs # Available attributes (priority, assignee, etc.) work schema relations # Available relationship types
Advanced Usage Patterns
Multi-Context Workflow
# Set up multiple contexts for different projects work context add frontend --tool github --url https://github.com/team/frontend work context add backend --tool local-fs --path ./backend-tasks work context add planning --tool jira --url https://company.atlassian.net # Work across contexts work context set frontend && work create "Update navbar" --kind task work context set backend && work create "Optimize queries" --kind task work context set planning && work list where state=active
CI/CD Integration
#!/bin/bash # In CI pipeline - create issues for build failures if [ $BUILD_STATUS = "failed" ]; then work context set ci-issues work create "Build #$BUILD_NUMBER failed" --kind bug --priority critical work notify send where title contains "Build #$BUILD_NUMBER" to alerts fi
AI Agent Coordination
The work CLI enables mixed human-agent teams:
# Agent creates tasks for humans
work create "Review PR #123" --kind task --assignee human-reviewer
work notify send where assignee=human-reviewer to team-channel
# Agent processes its own assigned tasks
work list where assignee=ai-agent and state=new --format json | \
jq -r '.[] | .id' | while read id; do
work start "$id"
# Agent processes the task...
work close "$id" --comment "Processed by AI agent"
done
Common Query Examples
# Team coordination queries work list where assignee=alice and state=active work list where state=active order by priority desc work notify send where priority=high and state=new to team-alerts # Sprint planning work list where kind=story and state=new order by priority desc limit 20 work list where parent_of and kind=epic # Epics with children # Bug triage work list where kind=bug and state=new order by priority desc work notify send where kind=bug and priority=critical to bug-triage # Progress tracking work list where assignee=me and state=active work list where updated gt "2026-01-01" order by updated desc
Troubleshooting
Authentication Issues
# Check GitHub authentication gh auth status work auth status # Re-authenticate if needed gh auth login work auth logout && work auth login
Context Problems
# Verify contexts work context list work context show # Reset problematic context work context remove problematic-context work context add problematic-context --tool github --url https://github.com/owner/repo
Permission Errors
- •Verify GitHub token has
reposcope for private repos orpublic_repofor public repos - •Check filesystem permissions for local-fs contexts
- •Ensure work CLI config directory (~/.work/) is accessible
Resources
For detailed setup and advanced configurations, see:
- •Quick Start Reference - Complete 5-minute setup guide
- •GitHub Authentication - Comprehensive auth setup
- •Notification Examples - Integration patterns