CtrlK
BlogDocsLog inGet started
Tessl Logo

evilissimo/software-design

Use before implementing or refactoring software. Contains two skills: (1) Modular Software Design — for designing module boundaries, APIs, layers, abstractions, services, repositories, adapters, or architecture, helping reduce total system complexity by creating deep modules, hiding implementation knowledge, avoiding leakage and pass-through APIs, comparing alternative designs, documenting interfaces before coding, and critiquing existing architecture; and (2) Software Testing — for writing unit tests, integration tests, or end-to-end tests, creating mocks/stubs/fakes, designing a testing strategy, doing TDD, reviewing test quality, fixing flaky tests, or refactoring test suites, generating risk-focused test plans, picking appropriate test levels, choosing between mocks/fakes/real dependencies, and applying Arrange-Act-Assert patterns with concrete examples.

93

1.12x
Quality

94%

Does it follow best practices?

Impact

92%

1.12x

Average score across 5 eval scenarios

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

test-smells.mdskills/software-testing/references/

Test Smells

Overspecified Tests

Tests assert private methods, exact call order, or internal choreography. Fix by asserting observable behavior through public seams.

Over-Mocking

Many internal collaborators or third-party types are mocked. Fix by testing cohesive behavior together, using fakes for owned boundaries, and wrapping third-party libraries behind adapters.

Weak Assertions Under High Coverage

Tests execute code but only assert non-null results, snapshots, or absence of exceptions. Fix by checking business-relevant outputs, persisted effects, emitted events, or boundary interactions.

Flaky or Slow Tests

Failures depend on time, ordering, network, shared state, random data, or external services. Fix by isolating state, controlling clocks/randomness, replacing unsafe dependencies, and moving only necessary checks to slower levels.

Mystery Guests

Tests rely on hidden files, fixtures, or global setup. Fix by making data local, named, and purpose-built.

Duplicated or Over-Abstracted Test Logic

Helpers obscure the scenario or assert too much. Fix by keeping tests short, explicit, and domain-named.

Untestable Design

Outcomes are hidden behind implicit dependencies or oversized classes. Fix by exposing stable outputs, domain objects, events, or adapters.

tile.json