npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@ldtdev/qa-system

v1.1.1

Published

Self-learning QA framework for frontend apps. Detect conventions, generate tests (via Claude Code CLI), validate, execute, self-heal, learn, evolve strategy.

Readme

@ldtdev/qa-system

Self-learning QA framework for frontend applications.

Drop any frontend repo → detect conventions → generate tests → validate → execute → self-heal → learn → evolve strategy.

Prerequisites

  • Node.js >= 20
  • Claude Code CLI (for qa generate / qa run)
  • Playwright (installed automatically)

Quick Start

# Install globally
npm install -g @ldtdev/qa-system

# In your frontend project
cd my-frontend-app
qa init
qa detect .
# → edit qa-system/project.config.json (add auth accounts, features, entry URLs)

# Full pipeline (generate → validate → execute → heal → learn → evolve)
qa run --config qa-system/project.config.json

# Or best quality
qa run --config qa-system/project.config.json --model opus

Architecture

               ┌──────────────┐
               │ ORCHESTRATOR │
               └──────┬───────┘
                      │
         ┌────────────┼────────────┐
         │     EXPERIENCE LIBRARY  │  ← learns from every run
         └────────────┬────────────┘
                      │
    ┌─────────────────┼─────────────────┐
    │                 │                 │
  UNDERSTAND      GENERATE           ANALYZE
  (AI agents)     (AI agents)        (AI agents)
    │                 │                 │
    │          ┌──────v───────┐        │
    │          │  VALIDATION  │        │
    │          │  ENGINE      │← BLOCKS bad tests
    │          └──────┬───────┘        │
    │                 │                │
    │          ┌──────v───────┐        │
    │          │  EXECUTION   │        │
    │          │  ENGINE      │← Playwright + Vitest
    │          └──────┬───────┘        │
    │                 │                │
    │          ┌──────v───────┐        │
    │          │ SELF-HEALING │        │
    │          │ AGENT        │← auto-fixes selectors/timeouts
    │          └──────┬───────┘        │
    │                 │                │
    │          ┌──────v───────┐        │
    │          │  EXPERIENCE  │        │
    │          │  EXTRACTOR   │← curates insights, not logs
    │          └──────┬───────┘        │
    │                 │                │
    │          ┌──────v───────┐        │
    │          │  STRATEGY    │        │
    │          │  EVOLUTION   │← mutates test approach
    │          └──────────────┘        │
    └──────────────────────────────────┘

12 Agents

| # | Agent | Type | Purpose | |---|-------|------|---------| | 1 | Feature Understanding | AI | Reads code, maps features | | 2 | Test Strategy | AI | Generates test plan | | 3 | UI Test Generator | AI | Playwright tests | | 4 | API Test Generator | AI | HTTP contract tests | | 5 | State Logic Validator | AI | Redux/store validation | | 6 | Execution Engine | Non-AI | Runs tests | | 7 | Consistency Analyzer | AI | Cross-layer mismatch detection | | 8 | UX Validation | AI | Usability audit | | 9 | Report Generator | AI | HTML/JSON reports | | 10 | Validation Engine | Non-AI | Blocks bad tests (10 rules) | | 11 | Self-Healing Agent | Hybrid | Auto-fixes + learns | | 12 | Strategy Evolution | Non-AI | Mutates test approach based on failure patterns |

4 Feedback Loops

Loop 1 — Enforcement: AI generates test → Validation Engine parses → BLOCK or PASS

Loop 2 — Self-Healing: Test fails → classify → auto-fix (selector/timeout/auth) → re-run. Can't fix? → queue for AI regen. Same fix failed 2x? → learning DB skips it.

Loop 3 — Learning: Run completes → Experience Extractor → curated insights → Experience Library → Prompt Evolution injects lessons into next run's AI prompts.

Loop 4 — Strategy Evolution: Failure patterns cross threshold (5+ occurrences, 60%+ confidence) → system switches testing approach entirely. Mutations are reversible — auto-revert if failure rate increases within 3 runs.

| Failure Pattern | Strategy Mutation | |---|---| | Selector flaky | dom-selectorapi-first | | Async race conditions | dom-selectorstate-driven | | Auth token expired | dom-selectornetwork-interception | | Network errors | dom-selectorcontract-testing | | Cross-layer mismatch | dom-selectorhybrid-ui-api |

Experience Library

NOT a log dump. 4 categories of curated knowledge:

| Category | Example | |----------|---------| | Failure Pattern | "button not clickable after modal" → z-index overlay | | Fix Strategy | "wait for modal close before click" (effectiveness: 80%) | | Anti-Pattern | "CSS class selector in test" → always breaks on style change | | Feature Knowledge | "dirty guard missing in section 4.1" → data loss risk |

Confidence scores decay 0.5%/day. Single-use experiences decay 2x faster. Max 500 entries with eviction.

Run 1 uses base prompts only. Run 2+ injects experience + strategy mutations into generate prompts automatically.

Multi-Repo

# Auto-detect any frontend repo
qa detect /path/to/any-repo
# → generates project.config.json

# Presets for common stacks
presets/react-redux/    # Redux + Saga/Thunk
presets/nextjs/         # App Router + Server Components
presets/vue-pinia/      # Vue 3 + Pinia

Convention Detector auto-detects 15 properties: framework, bundler, UI library, state management, routing, API client, styling, test runner, form library, i18n, file naming, language, package manager.

CLI Commands

| Command | Description | |---------|-------------| | qa init | Create qa-system/ in current project | | qa detect <path> | Auto-detect conventions, generate config | | qa generate | Generate tests via Claude Code CLI | | qa validate | Validate test files against quality rules | | qa run | Full pipeline: generate → validate → execute → heal → learn → evolve | | qa run --skip-generate | Skip AI generation, run from validate onwards | | qa heal <results.json> | Self-heal from execution results | | qa experience --stats | View experience library stats | | qa evolve --report | View mutation history + baseline failure rates |

Model options: Default sonnet/high. For best quality: qa run --model opus

Project Config

Single file drives the entire system:

{
  "project": { "name": "My App", "root": "/path/to/repo", "src_dir": "src" },
  "framework": { "name": "react", "ui_library": "antd", "styling": "styled-components" },
  "state": { "manager": "redux-toolkit", "side_effects": "redux-saga" },
  "api": { "base_url": "https://api.example.com", "version_prefix": "/v3" },
  "auth": {
    "type": "bearer",
    "accounts": {
      "admin": { "credentials": { "username": "[email protected]", "password": "..." } }
    }
  },
  "features": [
    { "name": "Dashboard", "pages_glob": ["pages/Dashboard/**"], "entry_url": "/dashboard" }
  ]
}

Directory Structure

qa-agent-framework/
├── bin/qa-cli.ts                  CLI entry point (8 commands)
├── src/
│   ├── index.ts                   Public API exports
│   ├── engine/
│   │   ├── claude-code-runner.ts  AI integration via Claude Code CLI
│   │   ├── convention-detector.ts Auto-detect repo conventions
│   │   ├── project-adapter.ts     Normalize config for agents
│   │   ├── validation-engine.ts   Non-AI rule enforcement
│   │   ├── self-healing-agent.ts  Auto-fix + learning DB
│   │   ├── experience-library.ts  Structured memory (4 categories)
│   │   ├── experience-extractor.ts Raw data → curated insights
│   │   ├── prompt-evolution.ts    Evolve prompts from experience
│   │   ├── strategy-evolution.ts  Mutate test approach from failure patterns
│   │   ├── paths.ts               Portable path resolution (dev + dist + npm)
│   │   └── rule-scoring.ts        Rule precision + agent pruning
│   ├── agents/                    Agent definitions (JSON schemas)
│   ├── rules/                     Validation rules (5 sets, 38 rules)
│   └── prompts/                   Universal prompt templates
├── presets/                       Framework presets
│   ├── react-redux/
│   ├── nextjs/
│   └── vue-pinia/
└── examples/
    └── scn-homeroom/              Full working example

License

MIT