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

stratvibe

v1.0.0

Published

KISS substrate for LLM agent pipelines. One command. One job. No questions asked.

Readme

stratvibe

npm version npm downloads npm downloads total license

KISS substrate for LLM agent pipelines. One command. One job. No questions asked.

This is a vibecoding project. Built fast, iterated with AI, structured for real use.

stratvibe is a project-agnostic cognitive substrate for LLM agent pipelines.
Structure is stable. Semantics are project-specific. Process is explicit.

Built on Substrate v0.2 — a formal protocol for human-AI collaboration with visible information loss and non-optional human oversight. Now with an engine layer: inference-powered init, handoff production, and automated compression between layers.

Philosophy

  • Natural language is human-facing only
    No natural language between agents. Structured JSON handoffs only.

  • Context is designed, not assumed
    Four layers with decreasing token budgets: spec → tasks → snippets → atomic.

  • Human is non-optional in the pipeline
    Cannot be removed, approximated, or delegated. Breaking changes always return to human.

  • Information loss is visible, never silent
    Summarizer outputs include dropped_fields listing what was omitted.

  • KISS rules
    No interactive prompts. No config files. Env vars only.
    Output is minimal, scannable. Errors are explicit, not verbose.

Layers & Token Budgets

| Layer | Max Tokens | Role | Purpose | |-------|------------|------|---------| | spec/ | 4096 | Planner | Intent to structure | | tasks/ | 2048 | Coordinator | Structure to work units | | snippets/ | 1024 | Implementer | Task to implementation | | atomic/ | 512 | Resolver | Lookup only, no reasoning |

Quick Start

Installation

npm i stratvibe

Initialize a project

cd your-project
stratvibe init

That's it. No prompts, no config, no questions asked.
Like git init, but for substrate pipelines.

Inference-powered init

Set env vars to enable LLM-powered project analysis on init:

export STRATVIBE_LLM_URL=https://openrouter.ai/api/v1
export STRATVIBE_LLM_KEY=sk-...
export STRATVIBE_LLM_MODEL=anthropic/claude-sonnet-4-20250514

stratvibe init          # scaffolds + drafts layer content from your project
stratvibe init --deep   # runs genealogy first, then inference-powered init

Without env vars, falls back to empty scaffolding (same as v0.1).

What gets created

your-project/
├── .substrate/                 # Core substrate documents
│   ├── taxonomy.md           # Layer definitions, invariant rules
│   ├── schema.json           # Handoff protocol, layer schemas
│   ├── agent-roles.md        # Role responsibilities, cannot rules
│   ├── context-budgets.md    # Token ceilings, compression priority
│   ├── substrate-summary.md  # Meta summary, hard constraints
│   └── handoffs/             # Produced handoff JSON files
├── spec/                      # Intent & constraints
│   ├── architecture/
│   ├── api/
│   └── components/
├── tasks/                     # Bounded work units
│   ├── sprint1/
│   └── backlog/
├── snippets/                  # Reusable implementations
│   ├── components/
│   ├── hooks/
│   └── utilities/
└── atomic/                    # Lookup only
    ├── errors/
    ├── configs/
    └── env-vars/

Commands

stratvibe init

Initializes substrate in current directory. With LLM env vars set, produces draft layer content via inference.

stratvibe init            # scaffold (+ inference if LLM configured)
stratvibe init --deep     # genealogy first, then inference-powered init

stratvibe handoff

Produce a protocol-compliant handoff JSON from agent output. Validates against layer schema, checks token budget, auto-compresses if over budget.

echo '{"title":"implement auth","effort":"medium"}' | stratvibe handoff --from spec --to tasks --role coordinator
stratvibe handoff --file output.json --from spec --to tasks --role planner

stratvibe summarize

Compress content between layers. The Summarizer role — tracks what was dropped.

echo '{"decision":"...","rationale":"...","notes":"..."}' | stratvibe summarize --from spec --to tasks

Requires STRATVIBE_LLM_URL to be set.

stratvibe feed

Output a structured context blob for an agent at a given layer. Combines latest handoff + layer state into a single JSON payload.

stratvibe feed --layer tasks --role coordinator

stratvibe validate

Validates handoff JSON against schema. Auto-discovers handoffs if no file specified.

stratvibe validate handoff.json
stratvibe validate

stratvibe genealogy

Legacy code analysis — surfaces deltas between stated intent, actual implementation, and runtime behavior.

stratvibe genealogy
stratvibe genealogy --target ../some-legacy-project
stratvibe genealogy --no-runtime
stratvibe genealogy --dry

See GENEALOGY.md for detailed methodology.

stratvibe watch

Live-refresh dashboard for sprint status and handoff health.

stratvibe watch

Other commands

  • stratvibe connect — Guide to generate AGENTS.md from plan.md
  • stratvibe ignore — Add .stratvibe/ to .gitignore
  • stratvibe eject — Remove substrate without touching codebase

Environment Variables

| Variable | Required | Description | |----------|----------|-------------| | STRATVIBE_LLM_URL | No | OpenAI-compatible endpoint (enables inference) | | STRATVIBE_LLM_KEY | No | API key for the endpoint | | STRATVIBE_LLM_MODEL | No | Model identifier (default: anthropic/claude-sonnet-4-20250514) |

No config files. Env vars only. Provider-agnostic — works with any OpenAI-compatible API (OpenRouter, Ollama, vLLM, etc).

Core Concepts

Handoff Protocol

Every agent interaction is a handoff — a JSON object that validates against .substrate/schema.json.
Handoffs flow through layers via summarizer compression.

The Engine (v0.2)

Stratvibe is no longer just a scaffold — it's a runtime:

  • Produce handoffs from agent output (stratvibe handoff)
  • Compress between layers with visible info loss (stratvibe summarize)
  • Feed context to agents at any layer (stratvibe feed)
  • Init with inference — one LLM call drafts all four layers from your project

Agent Roles

  • Planner — Intent to structure (spec layer)
  • Coordinator — Structure to work units (tasks layer)
  • Implementer — Task to implementation (snippets layer)
  • Resolver — Lookup only, no reasoning (atomic layer)
  • Summarizer — Compression between layers, tracks dropped_fields
  • Human — Terminal role, non-optional

Hard Constraints

  1. No natural language between agents
  2. No role reasons outside its layer
  3. Resolver never infers
  4. Summarizer output always smaller than input
  5. Breaking changes always return to Human
  6. Junk drawer folders forbidden
  7. Human cannot be removed from pipeline

Why Substrate?

Most agent frameworks:

  • Assume full autonomy (dangerous)
  • Hide information loss (unreliable)
  • Mix concerns across layers (confusing)
  • Require complex configuration (heavy)

Substrate v0.2:

  • Human-first — Non-optional oversight
  • Auditable — Visible information loss via dropped_fields
  • Layered — Clear separation of concerns with token budgets
  • KISS — No config, no prompts, env vars only
  • Engine — Produces, compresses, and feeds handoffs (not just validates)

License

MIT

Authors

Created by R & GIaL — 2026


One command. One job. No questions asked.