From aide
Writes tests matching project conventions and runs suites with coverage for JavaScript/TypeScript (Vitest/Jest/Mocha), Go, and Python (pytest/unittest) code. Analyzes symbols and patterns.
How this skill is triggered — by the user, by Claude, or both
Slash command
/aide:testThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
**Recommended model tier:** balanced (sonnet) - this skill performs straightforward operations
Recommended model tier: balanced (sonnet) - this skill performs straightforward operations
Write comprehensive tests and run test suites.
Before starting:
Use the mcp__plugin_aide_aide__decision_get tool with topic testing to check for testing framework decisions.
Common frameworks by language:
go testUse Glob to find test files:
**/*.test.ts, **/*.spec.ts (TypeScript)**/*_test.go (Go)**/test_*.py, **/*_test.py (Python)Use Grep to find test patterns in existing test files:
Grep pattern="describe\(" include="*.test.*" — find test suitesGrep pattern="it\(|test\(" include="*.test.*" — find test casesRead an existing test file to understand:
Use mcp__plugin_aide_aide__code_symbols with the target file path to get function signatures.
Use mcp__plugin_aide_aide__code_search to find related types.
Identify:
Follow the project's testing conventions. Cover these scenarios:
Test Categories:
Naming convention:
# TypeScript/JavaScript
npm test # Run all tests
npm test -- --grep "name" # Run specific test
npm run test:coverage # Run with coverage
# Go
go test ./... # Run all tests
go test -v ./pkg/... # Verbose output
go test -cover ./... # With coverage
# Python
pytest # Run all tests
pytest -v # Verbose
pytest --cov # With coverage
# Check coverage report
npm run test:coverage
# Go
go test -coverprofile=coverage.out ./...
go tool cover -html=coverage.out
Coverage targets:
| Failure | Action |
|---|---|
| Test imports fail | Check path aliases, ensure test config matches main |
| Mock not working | Verify mock setup, check dependency injection |
| Async test timeout | Add proper await, increase timeout if needed |
| Flaky test | Check for shared state, timing issues, or external deps |
| Coverage too low | Add edge case tests, error path tests |
import { describe, it, expect, beforeEach, vi } from "vitest";
import { functionToTest } from "./module";
describe("functionToTest", () => {
beforeEach(() => {
// Reset state before each test
vi.clearAllMocks();
});
it("should return expected result for valid input", () => {
const result = functionToTest("valid input");
expect(result).toBe("expected output");
});
it("should handle empty input", () => {
const result = functionToTest("");
expect(result).toBe("");
});
it("should throw error for null input", () => {
expect(() => functionToTest(null)).toThrow("Input required");
});
it("should handle async operation", async () => {
const result = await functionToTest("async input");
expect(result).resolves.toBe("async output");
});
});
func TestFunctionName(t *testing.T) {
tests := []struct {
name string
input string
want string
wantErr bool
}{
{"valid input", "input", "expected", false},
{"empty input", "", "", false},
{"invalid input", "bad", "", true},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := FunctionName(tt.input)
if (err != nil) != tt.wantErr {
t.Errorf("error = %v, wantErr %v", err, tt.wantErr)
return
}
if got != tt.want {
t.Errorf("got = %v, want %v", got, tt.want)
}
})
}
}
import pytest
from module import function_to_test
class TestFunctionToTest:
def test_valid_input(self):
assert function_to_test("input") == "expected"
def test_empty_input(self):
assert function_to_test("") == ""
def test_invalid_input_raises(self):
with pytest.raises(ValueError):
function_to_test(None)
@pytest.fixture
def mock_dependency(self, mocker):
return mocker.patch("module.dependency")
mcp__plugin_aide_aide__code_search - Find existing tests, patterns, typesmcp__plugin_aide_aide__code_symbols - Understand function signatures to testmcp__plugin_aide_aide__decision_get - Check testing framework decisionsBefore completing:
## Tests Added
### Files
- `path/to/file.test.ts` - 5 tests for UserService
### Test Cases
1. should create user with valid data
2. should reject duplicate email
3. should hash password before saving
4. should handle empty name
5. should validate email format
### Coverage
- New code: 92%
- Total project: 84%
### Verification
- All tests: PASS
- No flaky tests observed
npx claudepluginhub jmylchreest/aide --plugin aideGenerates unit tests matching project patterns and frameworks like Jest/Vitest (JS/TS), pytest (Python), Go testing, JUnit (Java), RSpec (Ruby).
Generates tests for any file type with automatic framework detection, project convention matching, and type-specific routing (React, Vue, Python, Go, Rust, PHP, E2E).