Kata

Features

The 114 code smells Kata detects

Kata's smell index runs across every type Kata loaded and drops 💩 badges right on the class node — sometimes on the header (class-level smells), sometimes on a specific member (member-level smells). Below is what the 114 detectors cover, grouped by facet, plus how thresholds and the filter toolbar behave.

What you'll be able to do

  • Read a 💩 badge and know which facet it belongs to.
  • Filter the diagram to a subset of facets or severity tiers using the smell toolbar chips.
  • Override thresholds — globally per user — through Preferences → Code Smell.
  • Jump from a badge into the Fowler intent that most commonly fixes it.

How badges appear on the diagram

  • Class-level smells — badge sits on the class header. Examples: God Class, Data Class, Refused Bequest.
  • Member-level smells — badge sits next to the member row. Examples: Long Method, Message Chains, Long Parameter List.
  • Rainbow badge — a member whose accumulated smell score crosses the top tier (with a rarity cap in place so common smells don't monopolise it) gets a rotating rainbow 💩 so it visibly distinguishes from an ordinary badge.

Hover a badge to see which detectors fired. Click it for the suggestion panel — which Fowler refactoring typically resolves that smell, and the option to hand it to your AI CLI.

Facets

Kata's 114 detectors are grouped into six facets. Each facet is what you'll see as a chip in the filter toolbar and as a category name in list_smells over MCP.

  • Design — the classical Fowler catalogue: God Class, Long Method, Data Clumps, Feature Envy, Message Chains, Divergent Change, Shotgun Surgery, and the rest.
  • Performance — code patterns known to cost measurable performance at scale (unnecessary allocation, sync-over-async, reflection on a hot path, N+1 IO). Most Performance detectors ship with a deterministic rewriter so the fix is mechanical.
  • Security — concrete failure modes: unvalidated deserialization, hardcoded secrets, weak hashes for password storage, missing auth attributes, permissive CORS, and the like.
  • Reliability — code that will fail at runtime for preventable reasons: swallowed exceptions, unreachable branches, resource leaks.
  • Accessibility — a small facet focused on symbols whose visibility contradicts the rest of the codebase's usage.
  • Policy — detectors driven by .kata/policy.yaml so a team can flag its own conventions.

Severity tiers

Every detector emits at one of three severity tiers: Info, Warning, or Major. The tier controls how visually loud the 💩 is on the diagram and gives the filter toolbar a second axis. If you want to see only the top of the list, keep Major on and turn Info off.

Threshold overrides

Detectors with a numeric threshold (Long Method line count, Large Class member count, Data Class field count) can be tuned from Preferences → Code Smell. Changes are saved to %LOCALAPPDATA%\Kata\smell-settings.json so they apply to every project you open on that user account.

Both Kata's in-app smell view and the standalone MCP host read the same file, with a hot reload so the two stay in sync while both are open.

Filter toolbar

The toolbar above the canvas has two chip rows:

  • Facet chips — Design, Performance, Security, Reliability, Policy. Toggle any subset on to narrow the badges to that facet or combination. The active toggle lights blue so you can tell which filters are on at a glance.
  • Severity chips — Info, Warning, Major. Same behaviour on the severity axis.

Filter state is saved to %LOCALAPPDATA%\Kata\smell-filter.json so you return to the same view when you reopen the project.

Next steps