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

@openhint/hintbook-software-engineer

v1.3.1

Published

The official software engineering hintbook for HINT — the keyword vocabulary for recording architectural decisions, invariants, constraints, and implementation contracts in .hint files.

Readme

@openhint/hintbook-software-engineer

The official general-purpose hintbook for HINT — the keyword vocabulary that turns .hint specifications into binding implementation prompts for AI coding agents.

A hintbook supplies what the HINT engine deliberately leaves open: the meaning of every keyword. This book covers the day-to-day vocabulary of software engineering — data structures, function contracts, logic flows, UI surfaces, dependency policies, prohibitions, and test criteria.

Measured performance and retrieval results live in the core benchmark report.

Installation

hint add @openhint/hintbook-software-engineer

This registers the book in your project's hint.yml:

books:
    - npm://@openhint/hintbook-software-engineer

Then run hint apply to add the book's system glossary to your AGENTS.md / CLAUDE.md, so agents know how to read the compiled tags.

Vocabulary at a glance

Write any of these as a markdown heading — # keyword Name {#optional_id} — at any nesting level:

| Area | Keywords | | --------------- | -------------------------------------------------------------------------- | | Intent & scope | goal, done, scope | | Project context | app, lang, build, dep, module, lib, namespace, res, read | | Data | data, entity, field, table, column, row | | Behavior | func, arg, result, flow, action, error | | Constraints | rule, decision, invariant, good, bad, test, example | | User interface | ui, form, block, image | | Spec-internal | notes (excluded from compiled output) |

Common long forms work as synonyms: applicationapp, functionfunc, dependenciesdep, languagelang, librarylib, argumentarg, returnresult, intentgoal, acceptancedone, outofscopescope, constantdata, and more.

See the full reference with rendered tags and usage guidance in docs/keywords.md.

Output

| Invocation | What you get | | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | | hint <paths> | The knowledge that applies, rendered through this book's tags. No persona, no footer — what an agent already mid-session needs. | | hint --prompt <paths> | The same knowledge wrapped in the role header and verification/report footer, for an agent starting cold. | | hint --standalone <paths> | Implies --prompt, and prepends the tag glossary for an agent that never loaded AGENTS.md. |

When a hint.lock exists and blocks have drifted, --prompt output additionally carries the drift list and scopes the work to it — automatically, with no mode to select. Details in docs/framing.md.

Requires @openhint/cli 1.1+. This book no longer ships --mode fix / --mode review; see the migration guide.

Emit: producing the code

This hintbook also ships emit packsemit/typescript/ and emit/go/ — so hint emit can produce the declarations a spec describes, deterministically and without a model:

hint emit src/billing/invoice.ts    # write it
hint emit --check                   # CI: the artifact still matches its spec

| Keyword | TypeScript | Go | | --- | --- | --- | | entity + field | export interface | type … struct | | func + arg + result | export function with a hole for the body | func returning (T, error) with a hole |

A type is always optional. ## arg invoice is a spec a person wrote, and the template — not you — decides how to cope: TypeScript drops the annotation, Go falls back to any. Writing ## arg invoice: Invoice when you know the type simply gives the emitter more to work with.

Everything else has no template and therefore produces no code: decision, invariant, rule, bad, good, flow, error, test, lang, dep, build. Those are not declarations — they are what the implementation must honour, so they reach the implementer as constraints inside the hole rather than as syntax. A flow nested under a func becomes that function's step list, right where the body has to be written.

Example

# entity PaymentData {#payment_data}

this entity describes the payment data contract

## field timestamp

unix epoch milliseconds

compiles (inside the file/folder context chain, header, and footer) into:

<data_structure name="PaymentData" id="payment_data">

this entity describes the payment data contract

<field name="timestamp" id="">

unix epoch milliseconds

</field>

</data_structure>

The __system__ glossary defines data_structure, field, and every other tag as a binding directive — that pairing of rendered tags and glossary is what makes the output enforceable rather than decorative.

License

MIT