Workflows

Checks are the start. Process is the product.

StableStack doesn't just report findings — it installs the engineering practices that keep AI-assisted teams fast without shipping silent failures: TDD loops, E2E adoption, CI gates, assistant guardrails, and production scaffolds.

A test-driven loop that actually gets used

TDD dies when the feedback loop is slow or when skipped tests quietly pile up. AI assistants make it worse: they generate tests that pass trivially, or skip the ones that fail.

  • Watch mode re-runs checks on every save — red/green feedback in your editor without a CI round-trip.
  • TEST001 keeps the suite honest by flagging skipped and disabled tests before they fossilize.
  • TEST004/TEST005 catch the AI-signature failure of duplicated test helpers drifting apart across files.
  • In Claude Code, the /check command runs the suite and fixes findings as part of the assistant's own loop.
stablestack --watch/repro # repro-first bugfix flow, installed by init

Playwright E2E — from zero to trusted

Most teams know they should have end-to-end tests and never start. The ones that start often build flaky suites nobody trusts.

  • TEST007 detects a web app with no E2E coverage and points at exactly what a minimal Playwright setup needs.
  • TEST006 pushes the single highest-value pattern: capturing browser console errors in every spec — silent client-side failures become test failures.
  • TEST008 and TEST010 keep the suite fast and honest (slow-test markers that fail CI, instant visibility checks that assert nothing).
  • The result is a small suite your team believes: page loads, zero console errors, and the money paths.
stablestack add-playwright # config + the three starter specs/fix-flaky # confirm the flake, classify the cause, fix the root

CI gates that block bad merges

A linter that runs "sometimes, locally" catches nothing. Process only exists when the pipeline enforces it.

  • Pre-commit or pre-push hooks in one command — and StableStack chains onto an existing hook (husky, pre-commit) instead of overwriting it.
  • --ci mode exits non-zero on errors, so the same command gates GitHub Actions, GitLab CI, or any pipeline.
  • Baselines let legacy code adopt gates today: existing findings are grandfathered, new code is held to the bar — a ratchet, not a wall.
  • The /fix-production command (installed by stablestack init) monitors your build after a push and keeps fixing until production is green.
stablestack add-ci # writes the stack-aware GitHub Actions pipelinestablestack hook installstablestack --generate-baseline > .stablestack-baseline.json

Guardrails for AI-assisted development

AI-written code rarely crashes — it quietly does the wrong thing: silent fallbacks, swallowed exceptions, duplicated modules, drifted types. Human review alone doesn't scale to assistant-speed output.

  • stablestack init wires your repo for assistant-era development: a CLAUDE.md section that teaches the assistant your quality rules, seven slash commands, and config in pyproject.toml.
  • The MCP server exposes checks, explanations, and safe auto-fixes directly to Claude and other MCP clients — the assistant lints its own output before you ever see it.
  • The 146-check suite is built from real incidents in AI-assisted projects: the duplication family, cross-file type drift, silent-failure patterns.
  • Suppressions are surgical and reviewable: # noqa: RULE_ID on a line, never a blanket off-switch.
stablestack initstablestack mcp-server # for Claude Code / MCP clients

Production patterns in one command

Every team re-implements the same production plumbing — rate limiting, token encryption, LLM response caching — and AI assistants happily generate five different versions of each.

  • add-rate-limiter installs a Redis-backed rate limiter with a decorator API, plus the checker (RATE001/RATE002) that flags endpoints missing it.
  • add-token-manager installs encrypted OAuth token storage with rotation — paired with SEC008, which flags plaintext tokens in your Prisma/SQLAlchemy schema.
  • deterministic-ai installs an LLM call cache so identical prompts stop burning tokens and your pipelines become reproducible (DET009 finds the uncached calls).
  • add-llm-timing and add-admin-dashboard round out observability: latency instrumentation for AI calls and a drop-in health dashboard.
stablestack add-rate-limiterstablestack add-token-managerstablestack deterministic-ai

Start with the scan, keep the process

The free tier runs 24 checks instantly, no signup. Every workflow above works from day one.

pip install stablestack && stablestack initBrowse all 146 checks →