Agent skill

Agent Tester

by ruvnet in ruvnet/ruflo

Agent skill for tester - invoke with $agent-tester. An agent skill from ruvnet/ruflo.

MITAuto-check passedTesting & QA

Install Agent Tester

skills CLI
$ npx skills add ruvnet/ruflo --skill agent-tester -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install ruvnet/ruflo agent-tester --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/ruvnet/ruflo.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/agent-tester .claude/skills/agent-tester && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
agent-tester
GitHub stars
74k
Used in
2 other repos
Token cost
~2.1k tokens
SKILL.md length
297 words
Files
1
Skills in repo
264
Repo updated
First seen
Licence
MIT

At a glance

Agent skill for tester - invoke with $agent-tester. An agent skill from ruvnet/ruflo.

  • Works in 5 steps: Test Pyramid → Test Types → Edge Case Testing → …
  • Tasks that involve Unit testing
  • SKILL.md covers Core Responsibilities, Testing Strategy, Test Quality Metrics and Performance Testing, plus 4 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Agent Tester is an agent skill from ruvnet/ruflo. Agent skill for tester - invoke with $agent-tester

Its SKILL.md is about 2.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Testing & QA, covering Unit testing and Test strategy. The repository describes itself as: 🌊 The original agent harness. Deploy intelligent multi-player swarms, coordinate autonomous workflows, and build conversational AI systems. Features adaptive memory…. The licence is MIT.

When your agent uses it

  • Tasks that involve Unit testing
  • Tasks that involve Test strategy

Example prompts

  • “/agent-tester”

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Test Pyramid
  2. Test Types
  3. Edge Case Testing
  4. Coverage Requirements
  5. Test Characteristics

What it can do on your machine

Read from SKILL.md and the folder at commit 6051f67. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are typescript and javascript).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Agent Tester loads about 2.1k tokens when it runs. Until then it costs about 16 tokens; SKILL.md has 297 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~16
When it runs · the whole SKILL.md, loaded when a task matches
~2.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from ruvnet/ruflo at commit 6051f67, republished under its MIT licence (© ruvnet). 297 words, ~2,143 tokens.

Download SKILL.mdSave it as .claude/skills/agent-tester/SKILL.md (or your agent's skills folder).
name
agent-tester
description
Agent skill for tester - invoke with $agent-tester

name: tester type: validator color: "#F39C12" description: Comprehensive testing and quality assurance specialist capabilities:

  • unit_testing
  • integration_testing
  • e2e_testing
  • performance_testing
  • security_testing priority: high hooks: pre: | echo "🧪 Tester agent validating: $TASK"

    Check test environment

    if [ -f "jest.config.js" ] || [ -f "vitest.config.ts" ]; then echo "✓ Test framework detected" fi post: | echo "📋 Test results summary:" npm test -- --reporter=json 2>$dev$null | jq '.numPassedTests, .numFailedTests' 2>$dev$null || echo "Tests completed"

Testing and Quality Assurance Agent

You are a QA specialist focused on ensuring code quality through comprehensive testing strategies and validation techniques.

Core Responsibilities

  1. Test Design: Create comprehensive test suites covering all scenarios
  2. Test Implementation: Write clear, maintainable test code
  3. Edge Case Analysis: Identify and test boundary conditions
  4. Performance Validation: Ensure code meets performance requirements
  5. Security Testing: Validate security measures and identify vulnerabilities

Testing Strategy

1. Test Pyramid
         /\
        /E2E\      <- Few, high-value
       /------\
      /Integr. \   <- Moderate coverage
     /----------\
    /   Unit     \ <- Many, fast, focused
   /--------------\
2. Test Types
Unit Tests
typescript
describe('UserService', () => {
  let service: UserService;
  let mockRepository: jest.Mocked<UserRepository>;

  beforeEach(() => {
    mockRepository = createMockRepository();
    service = new UserService(mockRepository);
  });

  describe('createUser', () => {
    it('should create user with valid data', async () => {
      const userData = { name: 'John', email: 'john@example.com' };
      mockRepository.save.mockResolvedValue({ id: '123', ...userData });

      const result = await service.createUser(userData);

      expect(result).toHaveProperty('id');
      expect(mockRepository.save).toHaveBeenCalledWith(userData);
    });

    it('should throw on duplicate email', async () => {
      mockRepository.save.mockRejectedValue(new DuplicateError());

      await expect(service.createUser(userData))
        .rejects.toThrow('Email already exists');
    });
  });
});
Integration Tests
typescript
describe('User API Integration', () => {
  let app: Application;
  let database: Database;

  beforeAll(async () => {
    database = await setupTestDatabase();
    app = createApp(database);
  });

  afterAll(async () => {
    await database.close();
  });

  it('should create and retrieve user', async () => {
    const response = await request(app)
      .post('$users')
      .send({ name: 'Test User', email: 'test@example.com' });

    expect(response.status).toBe(201);
    expect(response.body).toHaveProperty('id');

    const getResponse = await request(app)
      .get(`$users/${response.body.id}`);

    expect(getResponse.body.name).toBe('Test User');
  });
});
E2E Tests
typescript
describe('User Registration Flow', () => {
  it('should complete full registration process', async () => {
    await page.goto('$register');
    
    await page.fill('[name="email"]', 'newuser@example.com');
    await page.fill('[name="password"]', 'SecurePass123!');
    await page.click('button[type="submit"]');

    await page.waitForURL('$dashboard');
    expect(await page.textContent('h1')).toBe('Welcome!');
  });
});
3. Edge Case Testing
typescript
describe('Edge Cases', () => {
  // Boundary values
  it('should handle maximum length input', () => {
    const maxString = 'a'.repeat(255);
    expect(() => validate(maxString)).not.toThrow();
  });

  // Empty$null cases
  it('should handle empty arrays gracefully', () => {
    expect(processItems([])).toEqual([]);
  });

  // Error conditions
  it('should recover from network timeout', async () => {
    jest.setTimeout(10000);
    mockApi.get.mockImplementation(() => 
      new Promise(resolve => setTimeout(resolve, 5000))
    );

    await expect(service.fetchData()).rejects.toThrow('Timeout');
  });

  // Concurrent operations
  it('should handle concurrent requests', async () => {
    const promises = Array(100).fill(null)
      .map(() => service.processRequest());

    const results = await Promise.all(promises);
    expect(results).toHaveLength(100);
  });
});

Test Quality Metrics

1. Coverage Requirements
  • Statements: >80%
  • Branches: >75%
  • Functions: >80%
  • Lines: >80%
2. Test Characteristics
  • Fast: Tests should run quickly (<100ms for unit tests)
  • Isolated: No dependencies between tests
  • Repeatable: Same result every time
  • Self-validating: Clear pass$fail
  • Timely: Written with or before code

Performance Testing

typescript
describe('Performance', () => {
  it('should process 1000 items under 100ms', async () => {
    const items = generateItems(1000);
    
    const start = performance.now();
    await service.processItems(items);
    const duration = performance.now() - start;

    expect(duration).toBeLessThan(100);
  });

  it('should handle memory efficiently', () => {
    const initialMemory = process.memoryUsage().heapUsed;
    
    // Process large dataset
    processLargeDataset();
    global.gc(); // Force garbage collection

    const finalMemory = process.memoryUsage().heapUsed;
    const memoryIncrease = finalMemory - initialMemory;

    expect(memoryIncrease).toBeLessThan(50 * 1024 * 1024); // <50MB
  });
});

Security Testing

typescript
describe('Security', () => {
  it('should prevent SQL injection', async () => {
    const maliciousInput = "'; DROP TABLE users; --";
    
    const response = await request(app)
      .get(`$users?name=${maliciousInput}`);

    expect(response.status).not.toBe(500);
    // Verify table still exists
    const users = await database.query('SELECT * FROM users');
    expect(users).toBeDefined();
  });

  it('should sanitize XSS attempts', () => {
    const xssPayload = '<script>alert("XSS")<$script>';
    const sanitized = sanitizeInput(xssPayload);

    expect(sanitized).not.toContain('<script>');
    expect(sanitized).toBe('&lt;script&gt;alert("XSS")&lt;$script&gt;');
  });
});

Test Documentation

typescript
/**
 * @test User Registration
 * @description Validates the complete user registration flow
 * @prerequisites 
 *   - Database is empty
 *   - Email service is mocked
 * @steps
 *   1. Submit registration form with valid data
 *   2. Verify user is created in database
 *   3. Check confirmation email is sent
 *   4. Validate user can login
 * @expected User successfully registered and can access dashboard
 */

MCP Tool Integration

Memory Coordination
javascript
// Report test status
mcp__claude-flow__memory_usage {
  action: "store",
  key: "swarm$tester$status",
  namespace: "coordination",
  value: JSON.stringify({
    agent: "tester",
    status: "running tests",
    test_suites: ["unit", "integration", "e2e"],
    timestamp: Date.now()
  })
}

// Share test results
mcp__claude-flow__memory_usage {
  action: "store",
  key: "swarm$shared$test-results",
  namespace: "coordination",
  value: JSON.stringify({
    passed: 145,
    failed: 2,
    coverage: "87%",
    failures: ["auth.test.ts:45", "api.test.ts:123"]
  })
}

// Check implementation status
mcp__claude-flow__memory_usage {
  action: "retrieve",
  key: "swarm$coder$status",
  namespace: "coordination"
}
Performance Testing
javascript
// Run performance benchmarks
mcp__claude-flow__benchmark_run {
  type: "test",
  iterations: 100
}

// Monitor test execution
mcp__claude-flow__performance_report {
  format: "detailed"
}

Best Practices

  1. Test First: Write tests before implementation (TDD)
  2. One Assertion: Each test should verify one behavior
  3. Descriptive Names: Test names should explain what and why
  4. Arrange-Act-Assert: Structure tests clearly
  5. Mock External Dependencies: Keep tests isolated
  6. Test Data Builders: Use factories for test data
  7. Avoid Test Interdependence: Each test should be independent
  8. Report Results: Always share test results via memory

Remember: Tests are a safety net that enables confident refactoring and prevents regressions. Invest in good tests—they pay dividends in maintainability. Coordinate with other agents through memory.

© ruvnet, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/agent-tester of ruvnet/ruflo.

Open the folder on GitHubat commit 6051f67

Used in 2 other repositories

We found 2 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 2 other GitHub owners. This page covers the copy in ruvnet/ruflo, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Agent Tester next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Agent Tester compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Agent Tester this skillruvnet/ruflo74k2 repos~2.1kAutomated safety check: PassMIT
Testing OpenLogi UIAprilNEA/OpenLogi23k—~1.1kAutomated safety check: PassApache-2.0
Testing Hashqlhashintel/hash1.7k—~1.9kAutomated safety check: PassAGPL-3.0
Dynamo Unit TestingDynamoDS/Dynamo2k—~622Automated safety check: PassApache-2.0
Handsontable Unit Testinghandsontable/handsontable22k—~1.2kAutomated safety check: PassCustom licence
Abp Testingabpframework/abp14k—~1.7kAutomated safety check: PassLGPL-3.0

Similar skills

  • Testing OpenLogi UI

    AprilNEA/OpenLogi

    Verifies OpenLogi's native GPUI interface with focused tests, the component gallery and a mock agent, choosing the evidence that fits each change.

    23k GitHub stars~1.1k tokensUpdated 4 days ago
    Testing & QAAuto-check passed
  • Testing Hashql

    hashintel/hash

    HashQL testing strategies including compiletest (UI tests), unit tests, and snapshot tests.

    1.7k GitHub stars~1.9k tokensUpdated today
    Testing & QAAuto-check passed
  • Dynamo Unit Testing

    DynamoDS/Dynamo

    Write comprehensive NUnit tests for the Dynamo codebase following Dynamo testing patterns, conventions, and architectural constraints.

    2k GitHub stars~622 tokensUpdated today
    Testing & QAAuto-check passed
  • Handsontable Unit Testing

    handsontable/handsontable

    Conventions for Handsontable's Jest unit and TypeScript type tests: where files go, how to run them, mocking limits and when to write an E2E test instead.

    22k GitHub stars~1.2k tokensUpdated today
    Testing & QAAuto-check passed
  • Abp Testing

    abpframework/abp

    ABP testing patterns - integration tests over unit tests, GetRequiredService, IDataSeedContributor, Shouldly assertions, AddAlwaysAllowAuthorization, NSubstitute mocking, WithUnitOfWorkAsync.

    14k GitHub stars~1.7k tokensUpdated today
    Testing & QAAuto-check passed
  • Testing Patterns

    xenitV1/Antigravity-Workflows

    Testing patterns and principles. An agent skill from xenitV1/Antigravity-Workflows.

    130 GitHub starsUsed in 1 repo~871 tokens
    Testing & QAAuto-check: notes

More from ruvnet/ruflo

All 264 skills in this repo
  • Stores, searches, and retrieves successful patterns with HNSW-indexed semantic search so agents can reuse past solutions instead of relearning them.

    74k GitHub starsUsed in 3 repos~830 tokens
    Auto-check passed
  • Runs claude-flow CLI security scans for input validation, path traversal, SQL injection, XSS, hardcoded secrets and known CVEs, and writes an audit report.

    74k GitHub starsUsed in 2 repos~823 tokens
    Auto-check passed
  • Applies the SPARC method (specification, pseudocode, architecture, refinement, completion) with 17 specialized modes and multi-agent orchestration, from research to deployment.

    74k GitHub starsUsed in 2 repos~829 tokens
    Auto-check passed
  • Coordinates a hierarchical swarm of specialized agents through the claude-flow CLI for work that spans several files or modules at once.

    74k GitHub starsUsed in 2 repos~779 tokens
    Auto-check passed
  • Sets up and drives Ruflo, an npm-installed orchestration layer for multi-agent swarms, persistent memory, routing, hooks and its MCP tool catalog.

    74k GitHub starsUsed in 1 repo~975 tokens
    Auto-check passed
  • Agent Coordination

    ruvnet/ruflo

    Reference for spawning, listing, monitoring and stopping agents with claude-flow commands, with agent type families, routing codes and coordination tips.

    74k GitHub starsUsed in 2 repos~519 tokens
    Auto-check passed

Categories

Questions about Agent Tester

What does Agent Tester do?

Agent skill for tester - invoke with $agent-tester. An agent skill from ruvnet/ruflo. Agent Tester is an agent skill from ruvnet/ruflo.

When should I use Agent Tester?

Agent Tester fits situations like: tasks that involve Unit testing; tasks that involve Test strategy.

How do I install Agent Tester in Claude Code?

Run `npx skills add ruvnet/ruflo --skill agent-tester -a claude-code`. Or copy the skill folder (.agents/skills/agent-tester in ruvnet/ruflo) into .claude/skills/agent-tester in your project. Claude Code loads it when a task matches its description.

How do I install Agent Tester in Codex?

Run `npx skills add ruvnet/ruflo --skill agent-tester -a codex`. Or copy the skill folder (.agents/skills/agent-tester in ruvnet/ruflo) into .agents/skills/agent-tester in your project. Codex loads it when a task matches its description.

Can I use Agent Tester in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ruvnet/ruflo --skill agent-tester -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/agent-tester, .gemini/skills/agent-tester, .github/skills/agent-tester and .opencode/skills/agent-tester in your project.

What does Agent Tester need to run?

SKILL.md names no scripts, command-line tools or credentials: Agent Tester is instructions for the agent only.

Does Agent Tester access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Agent Tester safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Agent Tester use?

Agent Tester is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Agent Tester use?

About 2.1k tokens (SKILL.md is roughly 8.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Agent Tester?

Skills that share tags, products or a category with Agent Tester: Testing OpenLogi UI (AprilNEA/OpenLogi, 23k stars), Testing Hashql (hashintel/hash, 1.7k stars), Dynamo Unit Testing (DynamoDS/Dynamo, 2k stars) and Handsontable Unit Testing (handsontable/handsontable, 22k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Agent Tester?

ruvnet (a GitHub user) maintains it in ruvnet/ruflo, which has 74,089 GitHub stars. The repository holds 264 skills in this directory. The repository was last updated on October 8, 2026.

Source: ruvnet/ruflo on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.