Skip to content

feat: perf-baseline-manager skill - Baseline storage and comparison #144

Description

@avifenesh

Overview

Specialist agent for storing, retrieving, comparing, and consolidating performance baselines.

Parent Issue

Part of #124 - Master performance profiling orchestrator

Responsibilities

1. Baseline Storage

## Storage format:
- Single JSON file per version (e.g., `baseline_2.2.4.json`)
- Consistent schema across all baselines
- Include metadata (commit, environment, timestamp)
- Store in `.claude/perf/baselines/` or project-specific location

2. Baseline Retrieval

## Retrieval capabilities:
- Find matching baseline for comparison
- Handle missing baselines gracefully
- Support version patterns (e.g., "2.x", "latest")
- Cache frequently accessed baselines

3. Comparison

## Comparison metrics:
- Calculate deltas (absolute and percentage)
- Flag significant regressions (>10% worse)
- Flag significant improvements (>10% better)
- Compare breaking points
- Track error rate changes

4. Consolidation

"I need one source of truth"

## Consolidation workflow:
1. Scan for scattered result files
2. Merge into single file per version
3. Remove intermediate/noise results
4. Preserve collapse markers (breaking points)
5. Document what was removed

Agent Definition

---
name: perf-baseline-manager
description: Stores, retrieves, and compares performance baselines
tools: [Read, Write, Glob, Grep]
model: haiku
---

Data Schema

{
  "version": "2.2.4",
  "commit": "abc123def",
  "created_at": "2026-01-22T12:00:00Z",
  "environment": {
    "os": "linux",
    "cpu": "AMD EPYC 7R32",
    "memory_gb": 32,
    "cluster": "elasticache-3-node"
  },
  "configurations": [
    {
      "scenario": "getset-100b-10kqps",
      "clients": 5,
      "qps": 10000,
      "payload_bytes": 100,
      "duration_seconds": 60,
      "results": {
        "p50": 0.45,
        "p99": 2.1,
        "errors": 0,
        "actual_qps_pct": 99.8
      }
    }
  ],
  "collapse_markers": [
    {
      "scenario": "batch-24kb-10kqps",
      "clients": 10,
      "breaking_point_qps": 7500,
      "failure_mode": "p99 > 5000ms, 211k errors"
    }
  ]
}

Output Format

{
  "comparison": {
    "baseline_version": "2.0.0",
    "current_version": "2.2.4",
    "scenarios_compared": 86,
    "regressions": [
      {
        "scenario": "batch-24kb-10kqps-10c",
        "baseline_p99": 125,
        "current_p99": 7709,
        "delta_pct": 6067,
        "severity": "critical"
      }
    ],
    "improvements": [
      {
        "scenario": "getset-100b-10kqps-1c",
        "baseline_p99": 2.96,
        "current_p99": 1.89,
        "delta_pct": -36,
        "severity": "notable"
      }
    ],
    "unchanged": 45,
    "breaking_point_comparison": {
      "baseline": "13k QPS",
      "current": "10k QPS",
      "regression": true
    }
  }
}

Files to Create

  • plugins/perf/agents/perf-baseline-manager.md
  • lib/perf/baseline-store.js
  • lib/perf/baseline-comparator.js

Success Criteria

  • Single JSON file per version
  • Consistent schema across baselines
  • Calculates meaningful deltas
  • Flags regressions and improvements
  • Consolidates scattered results
  • Preserves collapse markers
  • Documents consolidation actions

Metadata

Metadata

Assignees

No one assigned

    Labels

    effort-mediumMedium effort (4-8 hours)enhancementNew feature or requestperformancePerformance improvements

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions