testing-best-practices — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited testing-best-practices (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Unit testing, integration testing, and TDD principles for reliable, maintainable test suites. Contains 34 rules across 7 categories using TypeScript with Jest/Vitest.
Reference these guidelines when:
| Priority | Category | Impact | Prefix |
|---|---|---|---|
| 1 | Test Structure | CRITICAL | struct- |
| 2 | Test Isolation | CRITICAL | iso- |
| 3 | Assertions | HIGH | assert- |
| 4 | Test Data | HIGH | data- |
| 5 | Mocking | MEDIUM | mock- |
| 6 | Coverage | MEDIUM | cov- |
| 7 | Performance | LOW | perf- |
struct-aaa-pattern - Arrange, Act, Assert patternstruct-descriptive-names - Descriptive test namesstruct-one-assertion - One logical assertion per teststruct-describe-it - Organized test suites with describe/itstruct-given-when-then - BDD style when appropriatestruct-setup-teardown - Proper setup and teardowniso-independent-tests - Tests run independentlyiso-no-shared-state - No shared mutable stateiso-deterministic - Same result every runiso-no-order-dependency - Run in any orderiso-cleanup - Clean up after testsiso-test-doubles - Strategic use of test doublesassert-specific - Use specific assertionsassert-meaningful-messages - Helpful failure messagesassert-expected-actual - Expected value firstassert-no-magic-numbers - Use named constantsassert-custom-matchers - Custom matchers for domain logicdata-factories - Use factories for test datadata-builders - Builder pattern for complex objectsdata-faker - Generate realistic fake datadata-minimal - Minimal test datadata-realistic - Realistic edge casesdata-fixtures - Manage test fixturesmock-boundaries - Mock only at boundariesmock-verify-interactions - Verify important mock callsmock-minimal - Don't over-mockmock-realistic - Realistic mock behavior with MSWcov-meaningful - Focus on meaningful coveragecov-edge-cases - Cover edge cases and boundary valuescov-unhappy-paths - Test error scenarioscov-not-100-percent - 100% coverage isn't the goalperf-fast-unit - Keep unit tests fast (<50ms each)perf-parallel - Run tests in parallelperf-test-organization - Organize tests for fast feedbackit('calculates total with discount', () => {
// Arrange
const cart = new ShoppingCart();
cart.addItem({ name: 'Book', price: 20 });
cart.applyDiscount(0.1);
// Act
const total = cart.getTotal();
// Assert
expect(total).toBe(18);
});// ✅ Describes behavior and scenario
describe('UserService.register', () => {
it('creates user with hashed password', () => {});
it('throws ValidationError when email is invalid', () => {});
it('sends welcome email after successful registration', () => {});
});// ✅ Each test sets up its own data
beforeEach(() => {
mockRepository = { save: vi.fn(), find: vi.fn() };
service = new OrderService(mockRepository);
});Read individual rule files for detailed explanations:
rules/struct-aaa-pattern.md
rules/iso-independent-tests.md
rules/mock-boundaries.md
rules/cov-meaningful.mdFor the complete guide with all rules expanded: AGENTS.md
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.