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

@timedomain/create-acestudio-workflow-extension

v0.1.1

Published

Scaffold a new ACE Studio workflow extension.

Readme

@timedomain/create-acestudio-workflow-extension

The npm create-native scaffolder for ACE Studio workflow extensions. It emits a working extension — TypeScript manifest, typed-channel hello-world UI, build scripts — plus an AGENTS.md telling a code agent how to build, load, observe, and debug against a running Studio. No running Studio required.

npm create @timedomain/acestudio-workflow-extension@latest my-extension
cd my-extension
npm install
npm run check     # typecheck + build

Everything not given on the command line is asked for, or derived from the directory name when there is no terminal to ask in:

npm create @timedomain/acestudio-workflow-extension@latest -- [directory] [options]
npx create-acestudio-workflow-extension [directory] [options]

  --id <developer.extension>  the extension id, two lowercase slugs joined by a dot
  --name <text>               the name ACE Studio shows the user
  --publisher <text>          who publishes it, shown beside the name
  --description <text>        one line for the install dialog
  -y, --yes                   take the defaults; never prompt

(npm eats that first -- and forwards the rest; it is only needed when you are passing options.)

The scaffold refuses to write into a directory that already holds anything — a scaffold is a whole tree, not a merge.

What it emits

my-extension/
├── AGENTS.md          the build/load/observe/debug loop, written for a code agent
├── CLAUDE.md          one line importing AGENTS.md, the name Claude Code reads
├── README.md          the same, for a human
├── build.mjs          bundles both halves into dist/ and emits dist/manifest.json
├── src/
│   ├── manifest.ts    identity, lifecycle, and the capability request
│   ├── protocol.ts    the one type the page and the process both import
│   └── index.ts       the process: defineExtension, handlers, bridge calls
└── ui/                the page: index.html and main.ts

dist/ is the extension — the folder ACE Studio dev-loads and aceworkflow seals.

Why a separate package

Mostly because npm gives no choice. npm create x is an alias for npm init x, which resolves by package name: npm create @timedomain/acestudio-workflow-extension executes @timedomain/create-acestudio-workflow-extension and can execute nothing else. That entry point cannot be served from a package named @timedomain/aceworkflow, so this package existing is what makes the command exist at all.

Which side holds the code is a real choice, and it lives here so scaffolding stays dependency-free — the CLI carries a native keychain binding with no business on the path of writing a text tree. Platforms of a similar shape split it the same way: Raycast (npm init raycast-extension to start, ray build / ray publish to ship) and VS Code (yo code versus @vscode/vsce).

aceworkflow init is the same act under the name you already have installed — a direct call into this package's scaffold(), not a shell-out. Use whichever you reach for first: this one needs nothing installed, that one needs no second name to remember.

So you meet three commands, each at its own moment: npm create … (or aceworkflow init) once, to start; acestudio-cli workflow dev … while you iterate against a running Studio; aceworkflow to check and ship what you built.

The template's license

The emitted scaffold is MIT No Attribution — it belongs to whoever runs the scaffolder, with no attribution required and no license file of ours left in their tree to delete. Picking a license is theirs to do, once they know what they are shipping. This package itself is MIT, like the rest of the repository.