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

@wundercorp/doku

v0.1.31

Published

Doku turns docs.json and llms-full.txt into a Bloomberg-terminal-style documentation portal.

Readme

Doku.sh

Doku turns docs.json, llms-full.txt, and Doku packed JSON into an instant documentation portal via https://doku.sh

Fast path

Install the CLI:

npm install -g @wundercorp/doku

Generate docs metadata and an LLM-readable project file from the current project:

doku gen

This writes both docs.json and llms-full.txt. The generated output stays high-level: it uses selected package.json metadata, script names, dependencies, a summarized top-level project structure, and hand-written documentation. It does not embed source or configuration file contents.

Pack the project docs, including generated pages and Markdown/MDX page bodies:

doku pack . --output doku.docs.json

Open the packed docs in Doku:

doku open ./doku.docs.json --site https://doku.sh

You can also generate and pack a project directly from outside the project directory:

doku gen ./ --output docs.json --llms-output llms-full.txt
doku pack ./ --output doku.docs.json

If docs.json does not exist, doku pack generates the docs config in memory instead of failing.

What doku gen does

doku gen creates a Doku-ready docs.json and llms-full.txt without requiring BuilderStudio or any other generator.

By default, it scans the current directory and writes ./docs.json plus ./llms-full.txt:

doku gen

Generate docs metadata for another project:

doku gen ./game

When the source directory is not the current directory, relative --output and --llms-output paths are resolved inside that source directory. This writes ./game/docs.json and ./game/llms-full.txt:

doku gen ./ --output docs.json --llms-output llms-full.txt

Use absolute output paths when you want to write somewhere else.

Set a custom docs title:

doku gen ./ --title "Game Docs"

Print the generated docs.json instead of writing files:

doku gen ./ --stdout

The generator looks for common documentation files such as root README.md, index.md, quickstart.md, and Markdown/MDX/TXT files under directories like docs/, guides/, reference/, api/, content/, pages/, and examples/.

When no hand-written docs are present, doku gen does not write an empty navigation. It creates generated pages for:

  • project overview
  • getting started
  • commands and scripts
  • dependencies
  • project structure
  • llms-full.txt preview

The llms-full.txt created by doku gen includes project metadata, script names, dependencies, a summarized top-level structure, and existing documentation. It does not embed source or configuration file contents. Environment files, hidden files, credential files, operating-system metadata such as .DS_Store and Thumbs.db, editor metadata, caches, lock files, generated artifacts, and temporary files are excluded from discovery and reporting. You can tune the maximum size of included hand-written documentation with:

doku gen --max-file-bytes 120000 --max-total-bytes 1800000

Generate a detailed LLM source-context file explicitly:

doku llms ./ --output llms-full.txt

Unlike doku gen, doku llms includes selected source and configuration file contents. The same sensitive-file, hidden-file, system-file, cache, generated-file, binary-file, and size filters still apply.

What doku pack does

doku pack creates a Doku packed JSON file. This is the file you upload or open in the Doku portal when you want navigation plus page content.

If the target directory already has a docs.json, Doku uses it:

doku pack ./builderstudio-docs --output doku.docs.json

If the target directory does not have a docs.json, Doku generates one in memory, creates llms-full.txt in the packed payload, and packs the discovered documentation files:

doku pack ./ --output doku.docs.json

This means this old flow is no longer required for normal use:

npm install -g @wundercorp/bs
bs docs gen --output ./builderstudio-docs
doku pack ./builderstudio-docs --output doku.docs.json

BuilderStudio output is still supported, but Doku does not depend on it.

Manual upload

The homepage supports manual upload, paste, and remote URL import for:

  • Mintlify-style docs.json
  • raw llms-full.txt
  • Doku packed JSON with docs navigation and page bodies

After a portal is generated, the top of the portal still includes controls to upload or import a new docs file. The app does not hide upload behind deploy instructions.

Open a remote docs URL

If a docs.json or llms-full.txt file is already hosted somewhere, open it directly:

https://doku.sh/?url=https%3A%2F%2Fexample.com%2Fdocs.json
https://doku.sh/?url=https%3A%2F%2Fexample.com%2Fllms-full.txt

The browser first tries a direct fetch. If the remote server does not allow browser CORS, the deployed Terraform stack exposes /api/fetch?url=... as a fetch bridge.

Doku CLI

doku gen [source-directory] --output docs.json --llms-output llms-full.txt
doku llms [source-directory] --output llms-full.txt
doku pack [docs-or-project-directory] --output doku.docs.json
doku open <docs-file-or-url> --site https://doku.sh
doku url <docs-json-or-llms-url> --site https://doku.sh
doku sudoku --site https://su.doku.sh

Serve the Doku app locally from a source checkout:

npm run serve -- --port 4173

The published npm package is CLI-only and does not include the static site bundle.

One-shot AWS deploy

The source deployer still exists, but it is intentionally not shown inside the generated portal UI and is not shipped in the published npm package.

It creates:

  • S3 static site bucket
  • S3 private imports bucket
  • CloudFront distribution
  • ACM certificate
  • Route53 DNS validation
  • Route53 A/AAAA records for doku.sh and www.doku.sh
  • API Gateway /api/imports and /api/fetch
  • Lambda import/fetch handler
  • CloudFront invalidation

Deploy:

bash scripts/deploy.sh --domain doku.sh --hosted-zone doku.sh

Terraform assumes the hosted zone already exists in Route53.

Hidden easter egg

The AWS deployer also provisions su.<domain> as a hidden solo Sudoku terminal. For the default domain this is:

https://su.doku.sh

The same static bundle powers the docs portal and the hidden Sudoku route. The browser detects the su. host and renders the mini-game instead of the documentation importer. For local testing, open:

http://127.0.0.1:4173/?egg=sudoku

Users install the CLI with:

npm install -g @wundercorp/doku

Then they can run:

doku gen
doku pack . --output doku.docs.json
doku open ./doku.docs.json --site https://doku.sh
doku open https://example.com/llms-full.txt --site https://doku.sh
doku sudoku

License

Apache-2.0