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

@sammybits/zuko-cli

v1.1.1

Published

CLI app for running and creating prompt pipelines.

Readme

@sammybits/zuko-cli

CLI app for running and creating prompt pipelines.

Directory structure

src/
  index.ts           ← Entrypoint: loadPlugins → registerCommands → parse or TUI
  registry.ts        ← Dynamic plugin discovery (node_modules/@sammybits/zuko-plugin-*)
  storage.ts         ← Workflow I/O (.zuko/workflows/*.json)

  engine/
    dag.ts           ← Primary executor: DAG (parallel waves) with linear fallback
    pipeline.ts      ← Legacy reference (linear-only, unused by commands)

  commands/
    index.ts         ← Manifest: ZukoCommand interface, registerCommands(), getCommandMenuItems()
    run/
      index.ts       ← ZukoCommand for "run" (Commander setup, calls engine)
      tui.ts         ← Interactive run (DAG executor + tree renderer)
    create/
      index.ts       ← ZukoCommand for "create" + createWorkflow() pure function
      tui.ts         ← Interactive workflow creation wizard (templates + custom DAG builder)
    edit/
      index.ts       ← ZukoCommand for "edit" + updateWorkflow() pure function
      tui.ts         ← Interactive workflow editing wizard

  tui/
    index.ts         ← Dynamically discovers TUI handlers from commands/*/tui.ts
    shared.ts        ← Clipboard, output formatting

Adding a new command

  1. Create commands/your-command/index.ts exporting a ZukoCommand
  2. Create commands/your-command/tui.ts (optional) with a default export handler
  3. Import + add it to the commands array in commands/index.ts

The TUI menu discovers handlers automatically — if no tui.ts exists, the command won't appear in the menu.

Adding a new AI provider

Install the plugin package:

bun add @sammybits/zuko-plugin-groq

That's it. The registry discovers it automatically.

Engine

engine/dag.ts is the primary executor. It supports two modes:

  • DAG mode — nodes with dependsOn form a dependency graph. Independent nodes run in parallel waves via Promise.allSettled.
  • Legacy linear mode — if no node has dependsOn, it infers a sequential chain (backward compatible).

Callbacks (onWaveStart, onNodeStart, onNodeComplete, onNodeError) let the TUI render a live tree.

engine/pipeline.ts is kept as a reference linear executor but is no longer used by commands.

Workflow format

Workflows are JSON files in .zuko/workflows/<id>.json. Each node has a pluginId, systemInstruction, optional modelId, fallbackPluginId, and dependsOn (array of upstream node IDs). Empty array = root node. dependsOn is what enables DAG topologies — set it in the create/edit wizards.