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

@freematters/freefsm

v0.4.0

Published

CLI-first FSM runtime for agent workflows

Readme

FreeFSM

CLI-first FSM runtime for agent workflows. Define states and transitions in YAML; the CLI enforces valid paths while leaving in-state reasoning to the LLM.

Works with Claude Code and Codex.

Why

AI coding agents are powerful but unreliable at following multi-step workflows. The core tension:

  • Natural language prompts are flexible but non-deterministic — agents drift from instructions, skip steps, and ignore constraints no matter how many "MUST" and "ALWAYS" directives you add.
  • Hardcoded logic is deterministic but rigid — every workflow change requires code changes, and bugs are inevitable.

FreeFSM resolves this by separating what the agent does (flexible, LLM-driven) from where the agent goes (deterministic, FSM-enforced). The agent stays in control of reasoning and tool use within each state, but the FSM governs which states exist and which transitions are legal.

Install

Tell this to your coding agent:

Read https://github.com/freematters/freematters/blob/main/freefsm/README.md to install freefsm

Or install manually:

npm install -g @freematters/freefsm

# Claude Code — registers skills + PostToolUse hook
freefsm install claude

# Codex — links skills (no hook support)
freefsm install codex

For Contributors

git clone https://github.com/freematters/freematters.git
cd freematters/freefsm
npm install && npm run build
npm link

freefsm install claude

Usage

FreeFSM is typically used through these skills:

  • /freefsm:create — guided Q&A to create a workflow YAML
  • /freefsm:start <path> — start a workflow run (also searches ./workflows/ by name)
  • /freefsm:current — show current state
  • /freefsm:finish — abort an active run

Codex skill names use $ instead of /.

Bundled Workflows

  • pdd — Plan-Driven Development: interactive requirements, research, design, and planning
  • spec-to-code — implements a spec directory (from PDD) into working code via TDD
  • mr-lifecycle — merge request lifecycle management

Start a bundled workflow by name:

/freefsm:start pdd

How It Works

A workflow is a YAML file that defines states, transitions, and per-state prompts:

version: 1
guide: "Code review workflow"
initial: analyze
states:
  analyze:
    prompt: "Read the diff and identify issues."
    transitions:
      found_issues: feedback
      looks_good: done
  feedback:
    prompt: "Post review comments on each issue."
    transitions:
      next: done
  done:
    prompt: "Summarize the review."
    transitions: {}

The runtime works through three mechanisms:

  1. Skills invoke the CLI — /freefsm:start loads the YAML, validates the schema, and enters the initial state. The agent sees a state card with the current prompt and available transitions.
  2. CLI enforces transitions — when the agent calls freefsm goto feedback --on found_issues, the CLI validates the transition against the YAML before committing it. Illegal transitions are rejected.
  3. Hooks inject reminders — a PostToolUse hook runs freefsm current every 5 tool calls, re-injecting the current state card into the agent's context. This counteracts context drift in long conversations.

All state changes are recorded as an append-only event log (JSONL), with a snapshot for fast reads. Runs are isolated by ID with directory-based file locking for concurrent safety.

License

MIT