event4u-app/agent-config

test-performance

Use when optimizing test suite performance — database setup, seeder optimization, parallel testing, CI pipeline efficiency, or RefreshDatabase alternatives.

89Collecting
See how to use itView GitHub source
npx skills add https://github.com/event4u-app/agent-config --skill "src/skills/test-performance"

Quick start

Start using it in three steps

Install it or open the source, trigger it with a clear task, then follow the source workflow.

1

Install the Skill

npx skills add https://github.com/event4u-app/agent-config --skill "src/skills/test-performance"
2

Describe the task

Use test-performance to help me with: [describe your task]. Before you begin, tell me what input you need, the steps you will follow, and the expected output.

3

Follow the workflow

No structured workflow was detected; follow the original SKILL.md below.

Continue to the workflow

Direct answers

Answers to review before you install

What is test-performance?

Use when optimizing test suite performance — database setup, seeder optimization, parallel testing, CI pipeline efficiency, or RefreshDatabase alternatives.

Who should use test-performance?

It is relevant to workflows involving Data analysis, Testing, Documentation, Engineering.

How do you install test-performance?

SkillSignal detected this source-specific command: npx skills add https://github.com/event4u-app/agent-config --skill "src/skills/test-performance". Inspect the repository and command before running it.

Which Agent platforms does it support?

The upstream source does not declare a dedicated Agent platform.

What permissions or risks should you review?

No obvious permission action was detected by the static rules. This is not proof that the Skill is safe.

What are the current evidence limits?

This page combines upstream documentation with deterministic repository, quality, and static-risk signals. It is not described as a manual test or security review.

SkillSignal brief

Decide whether it fits your work first

Use when optimizing test suite performance — database setup, seeder optimization, parallel testing, CI pipeline efficiency, or RefreshDatabase alternatives.

Useful in these contexts

Not yet included in a workflow collection

Core capabilities

Data analysisTestingDocumentationEngineeringResearch

Distilled from the source

Understand this Skill in one minute

About 3 min · 7 sections

When it is worth using

  1. Tests are running too slowly (locally or in CI)

  2. Database setup/teardown is a bottleneck

  3. Parallel testing needs optimization

  4. Seeders need performance analysis

Examples and typical usage

  1. Optimized test configuration or seeder with timing comparison

  2. Parallelization or caching improvements applied

Repository stars
7
Repository forks
1
Quality
89/100
Source repository last pushed

Quality breakdown

Based on traceable docs and repository signals; stars are not treated as quality.

89/100
Documentation27/30
Specificity25/25
Maintenance20/20
Trust signals17/25

Compare before choosing

Related Agent Skills and source variants

These links are selected from shared tasks, functions, stacks, platforms, and same-name variants. Compare the source owner, documentation, permissions, and maintenance signals.

dbt-transformation-patterns by wshobson

Master dbt (data build tool) for analytics engineering with model organization, testing, documentation, and incremental strategies. Use when building data transformations, creating data models, or implementing analytics engineering best practices.

astropy by k-dense-ai

Core Python library for astronomy and astrophysics workflows that need Astropy APIs, including units/quantities, coordinates, FITS I/O, tables, time systems, WCS, and cosmology. Use when implementing or debugging astronomical data analysis code with Astropy.

code-reviewer by jeffallan

Analyzes code diffs and files to identify bugs, security vulnerabilities (SQL injection, XSS, insecure deserialization), code smells, N+1 queries, naming issues, and architectural concerns, then produces a structured review report with prioritized, actionable feedback. Use when reviewing pull requests, conducting code quality audits, identifying refactoring opportunities, or checking for security issues. Invoke for PR reviews, code quality checks, refactoring suggestions, review code, code quali

dmux-workflows by affaan-m

Multi-agent orchestration using dmux (tmux pane manager for AI agents). Patterns for parallel agent workflows across Claude Code, Codex, OpenCode, and other harnesses. Use when running multiple agent sessions in parallel or coordinating multi-agent development workflows.

create-technical-spike by github

Create time-boxed technical spike documents for researching and resolving critical development decisions before implementation.

View original Skill.mdThis page is parsed directly from the repository SKILL.md without editorial rewriting. Collected: Jul 28, 2026 · about 3 min

test-performance

When to use

Use this skill when:

  • Tests are running too slowly (locally or in CI)
  • Database setup/teardown is a bottleneck
  • Parallel testing needs optimization
  • Seeders need performance analysis
  • CI pipeline test jobs need to be faster
  • Investigating flaky tests caused by database state

Procedure: Analyze test performance

1. Measure baseline

Before optimizing, always measure:

# Count tests per suite
find tests/ app/Modules/*/Tests/ -name "*.php" | xargs grep -l "it(" | wc -l

# Count by suite type
grep -rh "it(" tests/Unit/ app/Modules/*/Tests/Unit/ --include="*.php" | wc -l
grep -rh "it(" tests/Component/ app/Modules/*/Tests/Component/ --include="*.php" | wc -l
grep -rh "it(" tests/Integration/ app/Modules/*/Tests/Integration/ --include="*.php" | wc -l

# Count migrations
ls database/migrations/*.php | wc -l

# Count seeders
find database/seeders database/seeder-data -name "*.php" -path "*/data/*" | wc -l

2. Identify bottlenecks

The typical test lifecycle is:

Process Start → Migrate → Seed → [Test → Rollback] × N → Process End
                 ↑ expensive (once per worker)

Check these areas in order of typical impact:

AreaWhat to checkTypical impact
Migration countHow many CREATE TABLE statements?High if >20
Schema dumpIs database/schema/ used?High if missing
Seeder INSERT methodIndividual save() vs bulk insert?Medium
TruncationPer-seeder truncate vs centralized?Low (but causes correctness issues)
Connection discoveryDynamic getPdo() probing?Low
Parallel worker setupDoes each worker re-migrate?High

3. Optimization strategies (ordered by ROI)

A. Schema Dump (highest ROI)

Laravel's schema:dump consolidates all migrations into one SQL file. Instead of running N individual CREATE TABLE migrations, it loads one SQL dump.

php artisan schema:dump --database=api_database
# Generates database/schema/api_database-schema.sql

Savings: 58 migrations → 1 SQL load = ~10-25s per worker.

B. Template DB Cloning (high ROI for parallel tests)

Instead of each parallel worker running migrate+seed independently:

  1. Prepare ONE template database (migrate + seed)
  2. Clone template for each worker via mysqldump
# Prepare template
php artisan migrate:fresh --database=template_db
php artisan db:seed --database=template_db

# Clone per worker
mysqldump template_db | mysql worker_db_test_1

Savings: Eliminate per-worker migrate+seed entirely.

C. Skip Migrate+Seed Flag (high ROI for local dev)

Add a config flag to skip database setup when DB is already prepared:

// config/testing.php
'skip_migrate_seed' => EnvHelper::boolean('TESTING_SKIP_MIGRATE_SEED', false),

Developer workflow: make migrate-testing once, then make test-quick repeatedly.

D. Bulk Inserts in Seeders (medium ROI)

Replace individual $model->save() with bulk insert:

// Before: N INSERT statements
foreach ($data as $row) {
    $model = new MyModel($row);
    $model->save();
}

// After: 1 INSERT statement
MyModel::insert($data);
$models = MyModel::whereIn('id', $ids)->get();

E. Centralize Truncation (correctness fix)

Per-seeder truncation is redundant after migrate:fresh and causes:

  • Non-deterministic ordering (lazy init triggers truncate)
  • Ghost data bugs (locally passes, CI fails)

Make truncation configurable, default off:

// config/testing.php
'seed_truncate' => EnvHelper::boolean('DB_SEED_TRUNCATE', false),

F. Static Connection Discovery (cleanup)

Replace dynamic getPdo() probing with explicit config:

// config/testing.php
'connections_to_transact' => ['api_database', 'customer_database'],

4. CI-specific optimizations

  • MariaDB tmpfs: Mount data dir on RAM disk for zero I/O latency
  • Shared DB prep: One CI job prepares DB, test jobs clone from it
  • Cache test DBs: Skip re-migration if migration files haven't changed
  • Separate suites: Run no-DB tests (Unit) on cheaper runners

Related project docs

  • agents/reference/docs/seeders.md — seeder conventions (if exists)

Output format

  1. Optimized test configuration or seeder with timing comparison
  2. Parallelization or caching improvements applied

Gotcha

  • Don't use RefreshDatabase when DatabaseTransactions suffices — full refresh is 10x slower.
  • The model forgets that parallel tests share the database — use unique identifiers in test data.
  • Seeder optimization has the highest ROI — a 2s seeder running 100 times = 200s wasted.
  • Don't add indexes to test databases just for test performance — the real fix is better test design.

Do NOT

  • Do NOT use RefreshDatabase when DatabaseTransactions works — 10x slower.
  • Do NOT run full test suite on every code change — use --filter.
  • Do NOT add test-only indexes — fix test design instead.
  • Do NOT disable parallel testing to "fix" flaky tests — fix the root cause.
Skill path
src/skills/test-performance/SKILL.md
Commit SHA
0adf49a8ae84
Repository license
MIT
Data collected