DevTeam Logs Command banner
michael-harris michael-harris

DevTeam Logs Command

Development community intermediate

Description

**Command:** `/devteam:logs [options]` View execution logs, event history, and debugging information.

Installation

Terminal
claude install-skill https://github.com/michael-harris/devteam

README

DevTeam Logs Command

**Command:** `/devteam:logs [options]`

View execution logs, event history, and debugging information.

Usage

/devteam:logs                      # Show recent logs
/devteam:logs --session        # Show logs for specific session
/devteam:logs --agent        # Filter by agent
/devteam:logs --level error        # Filter by log level
/devteam:logs --tail 50            # Show last 50 entries
/devteam:logs --export             # Export logs to file

Options

Option Description
--session Filter by session ID
--agent Filter by agent name
--level Filter by level: debug, info, warn, error
--tail Show last N entries (default: 20)
--since Show logs since time (e.g., "1h", "30m")
--export Export to logs/devteam-TIMESTAMP.log
--json Output as JSON
--verbose Show full log details

Your Process

Step 1: Query Events Database

async function getLogs(options) {
    let query = `
        SELECT
            e.id,
            e.timestamp,
            e.event_type,
            e.data,
            s.command as session_command,
            ar.agent
        FROM events e
        LEFT JOIN sessions s ON e.session_id = s.id
        LEFT JOIN agent_runs ar ON e.session_id = ar.session_id
        WHERE 1=1
    `

    const params = []

    if (options.session) {
        query += ` AND e.session_id = ?`
        params.push(options.session)
    }

    if (options.agent) {
        query += ` AND ar.agent LIKE ?`
        params.push(`%${options.agent}%`)
    }

    if (options.level) {
        query += ` AND json_extract(e.data, '$.level') = ?`
        params.push(options.level)
    }

    if (options.since) {
        const sinceTime = parseTimeOffset(options.since)
        query += ` AND e.timestamp > datetime('now', ?)`
        params.push(sinceTime)
    }

    query += ` ORDER BY e.timestamp DESC LIMIT ?`
    params.push(options.tail || 20)

    return await db.all(query, params)
}

Step 2: Display Logs

**Default Output:**

╔═══════════════════════════════════════════════════════════════╗
║  DevTeam Logs                                                  ║
║  Showing last 20 entries                                       ║
╚═══════════════════════════════════════════════════════════════╝

2026-01-29 10:45:23 [INFO] session_started
  Command: /devteam:implement --sprint 1
  Session: sess_abc123

2026-01-29 10:45:25 [INFO] agent_started
  Agent: backend:api-developer-typescript
  Task: TASK-001
  Model: sonnet

2026-01-29 10:46:15 [INFO] gate_passed
  Gate: tests
  Duration: 12s

2026-01-29 10:46:18 [WARN] gate_failed
  Gate: lint
  Errors: 3
  Details: src/api.ts:45 - Missing semicolon

2026-01-29 10:46:45 [INFO] fix_applied
  Issue: lint errors
  Files: ["src/api.ts"]

2026-01-29 10:47:02 [INFO] gate_passed
  Gate: lint
  Duration: 8s

2026-01-29 10:47:30 [INFO]