Get up and running with DevAIFlow in 5 minutes.
- DevAIFlow installed (Installation Guide)
- Claude Code CLI installed and working
- (Optional) JIRA CLI configured if using JIRA integration
- (Optional) GitHub CLI (
gh) authenticated if using GitHub integration - (Optional) GitLab CLI (
glab) authenticated if using GitLab integration
Before diving in, understand these key concepts:
Single-Project Sessions
- Work on one repository at a time
- One Git branch per session
- Simplest workflow for focused tasks
Multi-Project Sessions
- Work across multiple repositories for one task
- Shared context across all projects
- Each project gets its own Git branch
- Unified time tracking
When to use multi-project? When a single JIRA ticket or GitHub issue requires changes in multiple repositories (e.g., backend API + frontend UI + shared library).
Path A: Create New Tickets (Recommended for new work)
# GitHub
daf git new --goal "Add user authentication to API"
# JIRA
daf jira new story --parent PROJ-12345 --goal "Add user authentication to API"Why this is better:
- Claude analyzes the codebase first, understanding implementation complexity
- Creates tickets with accurate descriptions and acceptance criteria
- Safe read-only exploration prevents accidental code changes
- One command handles everything: session creation + Claude launch
Path B: Sync Existing Tickets (For already-assigned work)
# Sync GitHub/GitLab issues from all configured workspaces
daf sync
# Sync JIRA tickets from current sprint
daf sync --sprint currentWhen to use sync:
- Working on tickets already created by PM/team
- Sprint has pre-defined backlog
- Bug fixes with clear reproduction steps
🔑 Key Difference:
daf git new/daf jira newcreates new tickets WITH Claude's analysis.daf syncimports existing assigned tickets.
DevAIFlow supports three issue tracker backends:
| Backend | CLI Required | Best For |
|---|---|---|
| GitHub Issues | gh (GitHub CLI) |
Open source projects, GitHub-centric teams |
| GitLab Issues | glab (GitLab CLI) |
GitLab-centric teams, self-hosted needs |
| JIRA | JIRA CLI or API token | Enterprise teams, complex workflows |
| None | - | Personal experiments, no ticket tracking |
All backends support the same core features: time tracking, progress notes, session management, and PR/MR creation.
Choose your path based on whether you're creating new work or working on assigned tickets.
This approach uses Claude to analyze your codebase BEFORE creating the ticket, resulting in better-informed issues.
With GitHub:
# 1. Create issue with Claude's analysis
daf git new --goal "Add two-factor authentication"
# 2. Claude analyzes and you ask questions:
# - "What authentication libraries are currently used?"
# - "Where should I add the 2FA code?"
# - "What tests already exist for authentication?"
# 3. Claude creates the issue using:
daf git create \
--summary "Add two-factor authentication support" \
--description "..." \
--acceptance-criteria "User can enable 2FA" \
--acceptance-criteria "Supports TOTP apps like Google Authenticator"
# 4. Complete the analysis session
daf complete <session-name>
# 5. Open the created issue to implement it
daf open owner-repo-123With JIRA:
# 1. Create ticket with Claude's analysis
daf jira new story --parent PROJ-59038 --goal "Add two-factor authentication"
# 2. Claude analyzes and you ask questions:
# - "What authentication libraries are currently used?"
# - "Where should I add the 2FA code?"
# - "What tests already exist for authentication?"
# 3. Claude creates the ticket using:
daf jira create story \
--summary "Add two-factor authentication support" \
--parent PROJ-59038 \
--description "..." \
--acceptance-criteria "..."
# 4. Complete the analysis session
daf complete <session-name>
# 5. Open the created ticket to implement it
daf open PROJ-12345Without Issue Tracker:
# Navigate to your project
cd ~/projects/my-app
# Create and open session
daf new --name "api-optimization" --goal "Optimize database queries"If you already have assigned tickets from sprint planning, sync them:
With GitHub:
# 1. Sync all assigned issues from configured workspaces
daf sync
# 2. See your active sessions
daf list --active
# 3. Open an issue (use session name - no quotes needed!)
daf open owner-repo-123
# 4. Work, exit Claude, add notes
daf note owner-repo-123 "Completed login endpoint"
# 5. Complete the session
daf complete owner-repo-123With JIRA:
# 1. Preview what tickets will be synced
daf sync --dry-run
# 2. Sync current sprint tickets
daf sync --sprint current
# 3. See your sprint status
daf status
# 4. Open a ticket
daf open PROJ-12345
# 5. Work, exit Claude, add notes
daf note PROJ-12345 "Completed login endpoint"
# 6. Complete the session
daf complete PROJ-12345💡 Tip: Session names use dashes (e.g.,
owner-repo-60orPROJ-12345) and don't need quotes. Only use quotes when referencing GitHub issue keys with#(e.g.,"owner/repo#60").
Once you're in a session, track your progress:
# Add notes (works inside Claude Code now!)
daf note <session-name> "Completed feature X"
# Add note AND sync to JIRA/GitHub
daf note PROJ-12345 "Ready for review" --jira # JIRA
daf git add-comment "owner/repo#60" "Ready for review" # GitHub (needs quotes)daf complete <session-name>The tool will:
- Ask if you want to commit changes
- Ask if you want to create a PR/MR
- Ask if you want to close/transition the ticket
- Generate an AI summary (optional)
- Add the summary as a comment
- Mark the session complete
Work across multiple repositories in a single session with shared context.
Common use cases:
- One JIRA ticket requires changes in multiple repositories (backend API + frontend UI)
- Coordinated updates across microservices
- Shared library changes that affect multiple consumers
Benefits:
- All work for one ticket stays together
- Unified time tracking across repositories
- Claude has shared context across all projects
- Each repository gets its own Git branch
- One
daf completecreates PRs/MRs for all projects
Declarative Approach (All at once):
# Create session spanning multiple projects
daf new PROJ-123 -w primary --projects backend-api,frontend-app,shared-lib
# System prompts for base branch per project:
# backend-api: branch from main
# frontend-app: branch from develop
# shared-lib: branch from mainIterative Approach (Add as you go):
# 1. First open: Select backend repository
daf open PROJ-12345
# Prompts: Which project? Select "backend-api"
# Work in backend, then exit Claude Code...
# 2. Second open: Add frontend repository
daf open PROJ-12345
# Shows existing conversations and option to create new one
# Select "Create new conversation (in a different project)"
# Prompts: Which project? Select "frontend-app"
# Work in frontend, then exit Claude Code...
# 3. Complete creates PRs for both projects
daf complete PROJ-12345| Approach | When to Use | Pros | Cons |
|---|---|---|---|
Declarative (--projects flag) |
You know all repositories upfront | Faster setup, all branches created at once | Requires workspace configuration |
| Iterative (sequential opens) | Discover repositories as you work | More flexible, add repositories on-demand | Manual per-repository setup |
💡 Recommendation: Use declarative for planned multi-repo work. Use iterative for exploratory work where you discover dependencies as you go.
# See all projects in current session
daf active
# List all conversations in session
/daf-list-conversations # Inside Claude CodeExample output:
╭────────────────────── ▶ Currently Active ──────────────────────╮
│ │
│ DAF Session: PROJ-12345 (#1) │
│ Type: Multi-project (2 projects) │
│ Workspace: /Users/you/development │
│ Goal: Add user profile feature across stack │
│ Time (this work session): 2h 15m │
│ Status: in_progress │
│ │
│ Projects in this session: │
│ • backend-api (branch: feature/PROJ-12345) │
│ • frontend-app (branch: feature/PROJ-12345-ui) │
│ │
╰─────────────────────────────────────────────────────────────────╯
These scenarios demonstrate advanced workflows. Most users can skip this section initially.
cd ~/experiments
daf new --name "test-redis" --goal "Test Redis caching performance"
daf open test-redis
# ... experiment ...
daf delete test-redis # Clean up when done# List recent sessions
daf list --since "yesterday"
# Open one
daf open PROJ-12345
# See what you did
daf summary PROJ-12345If you hit "413 Prompt too long" errors:
# 1. Exit Claude Code first!
# 2. Clean up old messages
daf maintenance cleanup-conversation PROJ-12345 --older-than 8h
# 3. Reopen
daf open PROJ-12345# Save successful session as template
daf template save backend-api my-backend-template
# Reuse for similar work
daf new --name "new-endpoint" --goal "..." --template my-backend-templatedaf new --name "..." --goal "..." # Create session
daf open <name-or-jira> # Resume session
daf list # List all sessions
daf list --active # List active only
daf delete <name-or-jira> # Delete sessiondaf note <name> "Your note" # Add local note (run outside Claude Code)
daf note <name> "Your note" --jira # Add note + JIRA comment (run outside Claude Code)
daf summary <name> # View session summary
daf time <name> # View time spentJIRA:
daf jira new <type> --parent <key> --goal "..." # Create ticket with analysis
daf sync # Sync assigned tickets
daf sync --sprint current # Sync current sprint
daf jira view PROJ-12345 # View JIRA ticket details
daf link <name> --jira PROJ-12345 # Link JIRA to session
daf unlink <name> # Remove JIRA link
daf status # Sprint dashboardGitHub/GitLab:
daf git new --goal "..." # Create issue with analysis
daf git create --summary "..." --description "..." # Create issue directly
daf sync # Sync assigned issues from all repos
daf git view "owner/repo#123" # View issue details (quotes required)
daf git open "owner/repo#123" # Open issue in new session (quotes required)
daf git update "owner/repo#123" --comment "..." # Add comment to issue (quotes required)
daf git add-comment "owner/repo#123" "..." # Add comment (quotes required)daf maintenance cleanup-conversation <name> --older-than 8h # Clean old messages
daf maintenance cleanup-sessions # Fix orphaned sessions
daf export <name> --output session.tar.gz # Export session
daf template save <name> my-template # Save as templateGood:
daf new --name "user-auth-api" --goal "..."Bad:
daf new --name "test123" --goal "..."The # character starts comments in bash, so always quote issue keys:
Good:
daf git open "owner/repo#60"
daf git add-comment "owner/repo#60" "Fixed bug"Bad:
daf git open owner/repo#60 # This won't work! Everything after # is a commentBetter: Use session names (no quotes needed):
daf open owner-repo-60 # Session name - safe, no quotes requiredNotes help you remember what you did (exit Claude Code first):
daf note "Completed database migration"
daf note "Found bug in UserService.authenticate()"# Save successful session as template
daf template save backend-api my-backend-template
# Reuse for similar work
daf new --name "new-endpoint" --goal "..." --template my-backend-templateReview and delete old sessions periodically:
daf list --status complete
daf delete old-session-nameOr export them first:
daf export --all --output backup.tar.gz
daf delete --allMany commands support --dry-run:
daf sync --dry-run
daf maintenance cleanup-conversation PROJ-12345 --older-than 8h --dry-run
daf maintenance cleanup-sessions --dry-runSession won't open:
# Check if conversation file exists
daf maintenance cleanup-sessions --dry-run
# Fix orphaned sessions
daf maintenance cleanup-sessionsJIRA sync not working:
# Test JIRA CLI
jira me
# Check config
cat $DEVAIFLOW_HOME/config.jsonGitHub sync not working:
# Test GitHub CLI authentication
gh auth status
# Re-authenticate if needed
gh auth login
# Check if you have assigned issues
gh issue list --assignee @meGitLab sync not working:
# Test GitLab CLI authentication
glab auth status
# Re-authenticate if needed
glab auth login
# Check if you have assigned issues
glab issue list --assignee @meCan't find session:
# List all sessions
daf list --all
# Search by keyword
daf search "auth"- Session Management Guide - Deep dive into sessions
- JIRA Integration - Learn JIRA workflows
- GitHub Integration - Learn GitHub/GitLab workflows
- Commands Reference - All available commands
- Common Workflows - Step-by-step guides