Skip to main content Skills Marketplace Discover and explore AI skills built by the community.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Copy promptShow prompt details A direct command skips the review prompt. Inspect the source before running it.
npx skills add https://github.com/diegosouzapw/awesome-omni-skill --skill core-testerThe command stays on one line. Scroll horizontally to inspect it before copying.
Prefer a local copy? Download the files currently available to SkillsMP.
Download Zip Downloading... More from this repository Token-efficient tracking for AI orchestration. CLI-first for status updates (~50 tokens), agent fallback for complex ops (~1KB). Use when: updating task status, querying blockers, creating progress files, validating phases.
AshAi extension guidelines for integrating AI capabilities with Ash Framework. Use when implementing vectorization/embeddings, exposing Ash actions as LLM tools, creating prompt-backed actions, or setting up MCP servers. Covers semantic search, LangChain integration, and structured outputs.
This skill should be used when solving hard questions, complex architectural problems, or debugging issues that benefit from GPT-5 Pro or GPT-5.1 thinking models with large file context. Use when standard Claude analysis needs deeper reasoning or extended context windows.
Related occupations SOC
Based on SOC occupation classification
name core-tester description Comprehensive testing and quality assurance specialist for ensuring code quality through testing strategies version 1.0.0 category workspace-hub type agent capabilities ["unit_testing","integration_testing","e2e_testing","performance_testing","security_testing"] tools ["Read","Write","Edit","Bash","Glob","Grep"] related_skills ["core-coder","core-reviewer","core-researcher","core-planner"] hooks {"pre":"echo \"🧪 Tester agent validating: $TASK\"\n# Check test environment\nif [ -f \"jest.config.js\" ] || [ -f \"vitest.config.ts\" ]; then\n echo \"✓ Test framework detected\"\nfi\n","post":"echo \"📋 Test results summary:\"\nnpm test -- --reporter=json 2>/dev/null | jq '.numPassedTests, .numFailedTests' 2>/dev/null || echo \"Tests completed\"\n"} requires [] see_also []
Core Tester Skill
QA specialist focused on ensuring code quality through comprehensive testing strategies and validation techniques.
Quick Start
Task ("Tester agent" , "Create comprehensive tests for [feature]" , "tester" )
action : "store" ,
key : "swarm/tester/results" ,
namespace : "coordination" ,
value : JSON .stringify ({ passed : 145 , failed : 0 , coverage : "87%" })
}
When to Use
Writing tests for new features (TDD)
Creating integration tests for APIs
Building E2E tests for user flows
Performance testing critical paths
Security testing authentication/authorization
Prerequisites
Test framework installed (Jest, Vitest, etc.)
Understanding of feature requirements
Access to implementation code
Mock setup for external dependencies
Core Concepts
Test Pyramid
/\
/E2E\ <- Few, high-value
/------\
/Integr. \ <- Moderate coverage
/----------\
/ Unit \ <- Many, fast, focused
/--------------\
Test Quality Metrics
Metric Target Description Statements >80% Line coverage Branches >75% Decision coverage Functions >80% Function coverage Lines >80% Total line coverage
Test Characteristics (FIRST)
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
Implementation Pattern
Unit Tests 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 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 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!' );
});
});
Edge Case Testing describe ('Edge Cases' , () => {
it ('should handle maximum length input' , () => {
const maxString = 'a' .repeat (255 );
expect (() => validate (maxString)).not .toThrow ();
});
it ('should handle empty arrays gracefully' , () => {
expect (processItems ([])).toEqual ([]);
});
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' );
});
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 );
});
});
Configuration
Performance Testing 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 ;
processLargeDataset ();
global .gc ();
const finalMemory = process.memoryUsage ().heapUsed ;
const memoryIncrease = finalMemory - initialMemory;
expect (memoryIncrease).toBeLessThan (50 * 1024 * 1024 );
});
});
Security Testing 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 );
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 ('<script>alert("XSS")</script>' );
});
});
Usage Examples
Example 1: TDD Workflow
describe ('calculateDiscount' , () => {
it ('should return 10% discount for users with 10+ purchases' , () => {
const user = { purchases : 15 };
expect (calculateDiscount (user)).toBe (0.1 );
});
});
function calculateDiscount (user ) {
return user.purchases >= 10 ? 0.1 : 0 ;
}
Example 2: Complete Test Suite
describe ('User Registration' , () => {
it ('should register user successfully' , async () => {
});
});
Execution Checklist
Best Practices
Test First : Write tests before implementation (TDD)
One Assertion : Each test should verify one behavior
Descriptive Names : Test names should explain what and why
Arrange-Act-Assert : Structure tests clearly
Mock External Dependencies : Keep tests isolated
Test Data Builders : Use factories for test data
Avoid Test Interdependence : Each test should be independent
Report Results : Always share test results via memory
Error Handling Scenario Recovery Test timeout Increase timeout or optimize test Flaky test Add retries or fix race condition Mock failure Verify mock setup Coverage gap Add missing tests
Metrics & Success Criteria
All tests passing
Coverage >80%
No flaky tests
Performance within targets
Security tests passing
Results stored in memory
Integration Points
MCP Tools
action : "store" ,
key : "swarm/tester/status" ,
namespace : "coordination" ,
value : JSON .stringify ({
agent : "tester" ,
status : "running tests" ,
test_suites : ["unit" , "integration" , "e2e" ],
timestamp : Date .now ()
})
}
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" ]
})
}
action : "retrieve" ,
key : "swarm/coder/status" ,
namespace : "coordination"
}
Performance Testing
type : "test" ,
iterations : 100
}
format : "detailed"
}
Hooks
echo "🧪 Tester agent validating: $TASK "
if [ -f "jest.config.js" ] || [ -f "vitest.config.ts" ]; then
echo "✓ Test framework detected"
fi
echo "📋 Test results summary:"
npm test -- --reporter=json 2>/dev/null | jq '.numPassedTests, .numFailedTests' 2>/dev/null || echo "Tests completed"
Related Skills 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.
Version History
1.0.0 (2026-01-02): Initial release - converted from tester.md agent