Task Management CLI for Teams and AI Agents
A powerful, modular command-line interface for managing tasks in Asana (and Microsoft Planner). Designed for both human users and AI agents with comprehensive JSON output support and agent-friendly workflows.
- π€ Agent-First Design - AI agents can manage tasks without Asana accounts
- π Dual Output Modes - Human-friendly text or machine-readable JSON
- π¨ Progressive Help System - Beautiful, contextual help with colors
- π Powerful Filtering - Search by agent, tags, status, dates, and more
- π¦ Modular Architecture - Clean separation between CLI and backend logic
- π Multiple Backends - Asana support (built), Planner support (ready)
- β‘ Fast & Lightweight - Single compiled binary, minimal dependencies
- π― Comprehensive CRUD - Full lifecycle management for tasks, tags, sections, and more
# Clone the repository
git clone https://github.com/Digitalminion/digital-minion.git
cd digital-minion
# Install dependencies
npm install
# Build the CLI
npm run build
# Link for local development
cd packages/cli
npm link# Initialize your configuration (interactive)
dm config init
# You'll be prompted for:
# - Backend type (asana/planner)
# - Personal Access Token
# - Workspace/Tenant ID
# - Project/Plan ID# Find tasks assigned to you
dm list --agent yourname -i
# Get details about a specific task
dm task get <taskId>
# Mark a task complete
dm task complete <taskId>
# Create a new task
dm task add "Fix authentication bug" --notes "User reported login issues" --due 2025-12-31| Command | Description | Example |
|---|---|---|
dm config |
Manage CLI configuration | dm config show |
dm list |
Search and filter tasks | dm list --agent alice -i |
dm task |
CRUD operations for tasks | dm task add "New feature" |
| Command | Description | Example |
|---|---|---|
dm tag |
Manage tags | dm tag create priority:high |
dm section |
Manage sections/buckets | dm section list |
dm project |
Project management | dm project members |
| Command | Description | Example |
|---|---|---|
dm comment |
Add/view comments | dm comment add <taskId> "LGTM" |
dm attachment |
Manage attachments | dm attachment add <taskId> ./file.pdf |
dm user |
User management | dm user search alice |
| Command | Description | Example |
|---|---|---|
dm workflow |
Custom field workflows | dm workflow set <taskId> "In Progress" |
dm batch |
Batch operations via JSON | dm batch execute operations.json |
dm template |
Reusable task templates | dm template create "Bug Triage" |
dm time |
Time tracking | dm time log <taskId> 2h |
| Command | Description | Example |
|---|---|---|
dm export |
Export to CSV/JSON/Markdown | dm export --format csv --output tasks.csv |
dm examples |
Usage examples | dm examples agents |
Digital Minion is designed to be agent-friendly. Here's how AI agents typically use it:
# Find all incomplete tasks assigned to me
dm list --agent myname -i
# Get the output as JSON for parsing
dm -o json list --agent myname -i | jq '.tasks[]'# Get task details
TASK_ID="1234567890"
dm task get $TASK_ID
# Add a comment with progress update
dm comment add $TASK_ID "Started working on this"
# Mark complete when done
dm task complete $TASK_ID# Get my next task
NEXT_TASK=$(dm -o json list --agent myname -i | jq -r '.tasks[0].gid')
# Get task details
TASK_INFO=$(dm -o json task get $NEXT_TASK)
# Extract task name
TASK_NAME=$(echo $TASK_INFO | jq -r '.task.name')
# Do the work...
echo "Working on: $TASK_NAME"
# Mark complete
dm task complete $NEXT_TASK
# Log time spent
dm time log $NEXT_TASK "2h30m" -n "Completed successfully"Digital Minion features a beautiful, contextual help system:
# Top-level help - shows command categories
dm help
# Module-level help - shows subcommands
dm task help
# Command-level help - shows detailed usage
dm task add --help
# Get machine-readable help as JSON
dm task --help-jsonHelp automatically:
- Uses colors for human readability (when not piping)
- Disables colors for JSON mode or when piping
- Shows only relevant information for current scope
- Provides progressive drilling (main β module β command)
Digital Minion is organized as a monorepo with clean separation of concerns:
digital-minion/
βββ packages/
β βββ cli/ # Command-line interface
β β βββ src/
β β β βββ modules/ # Command modules (task, tag, etc.)
β β β βββ utils/ # Helpers (progressive help, etc.)
β β β βββ index.ts # Main entry point
β β βββ package.json
β βββ lib/ # Backend implementations
β βββ src/
β β βββ backends/
β β β βββ core/ # Abstract interfaces
β β β βββ asana/ # Asana implementation
β β β βββ planner/ # Microsoft Planner implementation
β β βββ index.ts
β βββ package.json
βββ package.json # Workspace root
- Separation of Concerns - CLI logic separate from backend logic
- Interface-Driven - All backends implement core interfaces
- Dependency Injection - Backends are mockable for testing
- Progressive Enhancement - Rich features where supported, graceful degradation elsewhere
Full support for:
- β Tasks (CRUD, completion, assignment)
- β Comments
- β Attachments (files via upload)
- β Tags
- β Sections
- β Subtasks
- β Dependencies
- β Custom fields
- β Time tracking (via custom fields)
- β Templates
Setup:
dm config init
# Select: asana
# Provide: Personal Access Token, Workspace GID, Project GIDComprehensive support via Microsoft Graph API:
- β Tasks (via Planner API)
- β Comments (via Groups API)
- β Attachments (via OneDrive integration)
- β Sections (via Buckets)
- β Tags (via Categories, 25 limit)
- β Users (via Groups + Directory)
β οΈ Subtasks (via Checklist items - limited)- β Dependencies (via OneDrive JSON storage)
Setup:
dm config init
# Select: planner
# Provide: Access Token, Tenant ID, Plan ID, Group ID- Node.js >= 18.0.0
- npm >= 9.0.0
# Install dependencies
npm install
# Build all packages
npm run build
# Build specific package
cd packages/cli
npm run build
# Watch mode for development
npm run devpackages/cli/src/
βββ modules/ # Command modules
β βββ task/ # Task CRUD operations
β βββ list/ # Task search/filtering
β βββ tag/ # Tag management
β βββ ...
βββ utils/ # Utilities
β βββ progressive-help.ts
β βββ command-help.ts
βββ types/ # TypeScript types
βββ index.ts # Main entry
packages/lib/src/backends/
βββ core/ # Abstract interfaces
β βββ task-backend.ts
β βββ comment-backend.ts
β βββ ...
βββ asana/ # Asana implementation
β βββ asana-task-backend.ts
β βββ ...
βββ planner/ # Planner implementation
βββ planner-task-backend.ts
βββ services/
β βββ onedrive-service.ts
β βββ groups-service.ts
βββ ...
- Create directory:
packages/lib/src/backends/yourbackend/ - Implement interfaces from
packages/lib/src/backends/core/ - Export from
packages/lib/src/backends/yourbackend/index.ts - Add to CLI backend provider in
packages/cli/src/backend-provider.ts
# Run tests (when implemented)
npm test
# Type checking
npm run type-check
# Lint
npm run lintdm task add "Implement OAuth2 login" \
--notes "Replace basic auth with OAuth2 for better security" \
--due 2025-12-31 \
--priority high \
--tags "feature,security,priority:high"# Create operations.json
cat > operations.json << 'EOF'
{
"operations": [
{
"type": "task.add",
"data": {
"name": "Task 1",
"notes": "First task"
}
},
{
"type": "task.add",
"data": {
"name": "Task 2",
"notes": "Second task"
}
}
]
}
EOF
# Execute batch
dm batch execute operations.json# Export to CSV
dm export --format csv --output tasks.csv
# Export to JSON
dm export --format json --output tasks.json
# Export to Markdown
dm export --format markdown --output tasks.md# Create a template
dm template create "Bug Triage" \
-n "Steps: 1) Reproduce 2) Investigate 3) Fix 4) Test" \
-t "bug,triage" \
-p high
# Use the template
dm template use <templateId> -n "Fix login crash on iOS"We welcome contributions! Here's how to get started:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run type checking and tests
- Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow existing code style
- Add tests for new features
- Update documentation
- Use conventional commit messages
- Keep changes focused and atomic
Apache License 2.0 - see LICENSE file for details.
- Asana - For the excellent task management platform and API
- Microsoft - For Graph API and Planner
- Commander.js - For CLI framework
- Chalk - For terminal colors
- Issues: GitHub Issues
- Documentation: GitHub Wiki (coming soon)
- Discussions: GitHub Discussions
- Test infrastructure (Jest/Vitest)
- CI/CD pipeline (GitHub Actions)
- Additional backend support (Jira, GitHub Projects)
- Web dashboard for visualization
- Enhanced agent capabilities
- Plugin system for extensions
- Docker container distribution
- Cloud-hosted API option
Built with β€οΈ for humans and AI agents alike