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

@openreachtech/hora-skills-ort-support

v0.4.0

Published

Distributes the ORT support skills used to develop with Hora Kit.

Downloads

718

Readme

@openreachtech/hora-skills-ort-support

日本語

A distribution package of the ORT support skills — installed into any repository on its own, and equipped by Hora Kit as one of its skill libraries.

Concept

This package ships skills only — there is no library to import, and the one executable it carries exists to install those skills. A skill is a directory holding a SKILL.md, plus optional references/ and scripts/, that Claude Code loads and invokes as /<name>. Installing this package into a repository puts the conventions and procedures Open Reach Tech develops with in front of the agent working on that repository.

The skills distributed are all of the support domain: the work that surrounds the code rather than the code itself. Every name opens with a four-character prefix, the hyphen included: ho is Hora Kit, the product this skill library is named for, and the third character names the library — s for this one. A reader looking at one flat list of skills can therefore tell at a glance which came from this package. Past the prefix, a family of skills may share a segment of its own: gh is GitHub, and it marks a skill that reaches the host rather than stopping at the text it wrote. Each domain is a package of its own, and a repository installs the ones it works in:

| Package | Prefix | Domain | | :-- | :-- | :-- | | @openreachtech/hora-skills-ort-core | hoc- | core | | @openreachtech/hora-skills-ort-renchan | hor- | backend | | @openreachtech/hora-skills-ort-furo | hof- | frontend | | @openreachtech/hora-skills-ort-support (this one) | hos- | support |

Skill catalog (日本語) — every skill in this package with a one- or two-line summary, listed by the command name it is invoked by.

The source is organized at kit/skills/<name>/, with no domain directory in between: the package is the domain, so a folder repeating it would carry nothing. dist/ is the published build output — the same skill folders, verified and copied through, which is the flat shape Claude Code expects. A skill folder's name is its name: and the folder name it installs as — one string throughout, so the name you see in the catalog is the command you type.

Installation

Requires Node.js 20.0.0 or newer. The CI builds against the current LTS.

npm install -D @openreachtech/hora-skills-ort-support

This package ships no install script of its own, so adding it as a dependency installs the package and places nothing. Declare the command as your own project's postinstall, and npm install alone equips the repository:

{
  "scripts": {
    "postinstall": "hora-skills-ort-support install"
  }
}

A project's own scripts are outside what npm holds back from v12 on, so this asks nothing of whoever clones the repository. npx is not needed here either: a lifecycle script runs with node_modules/.bin on its PATH.

The hook you just declared takes effect from the next npm install on, so run the command by hand for the first placement — and for a one-off, or a repository that is not yours to add a hook to:

npx --no hora-skills-ort-support install

--no stops npx before it downloads: the name is still resolved against the registry, but nothing is fetched, so neither the install script nor the bin of a stranger's package ever runs. Without it, a bin that is not installed becomes a fetch of whatever has been published under hora-skills-ort-support, an unscoped name this package does not hold.

Where the package is not a dependency at all — a one-off, or a repository that is not yours to add a hook to — name it in full instead: npx --package=@openreachtech/hora-skills-ort-support hora-skills-ort-support install. What is fetched is then a scoped name nobody else can publish under, which is the guarantee the unscoped bin name never carried.

Usage

The skills land in your repository's .claude/skills/. Claude Code discovers them from there, and each becomes invocable by its own name — /hos-explain, /hos-gh-issue and /hos-gh-pull-request among them. Installed skills sit side by side with your repository's own, in one flat list, which is what the hos- prefix is for.

Installing more than one domain

Each hora-skills package installs into the same .claude/skills/, and each records its own installation in .hora/<package name>.json. A run therefore removes only what that package installed, and leaves the others alone:

{
  "scripts": {
    "postinstall": "hora-skills-ort-support install && <another hora-skills package> install"
  }
}

Because a prefix belongs to exactly one package, and every skill's folder name is unique within its own package, no two installed skills can end up with the same name.

Directories, not links

.claude/, and the skills/ directory inside it, have to be directories of your repository rather than symbolic links. An installation verifies every step it is reached through, and finding a link at any of them it writes nothing and removes nothing. .hora/hora-skills-ort-support.json, the record of what was installed, is verified the same way: a link there would send the write to whatever it stands for and overwrite it.

An installation that carries nothing says why and ends with a failing exit code. Where the command runs as your project's own postinstall, that is what npm install reports; run on its own, npx --no hora-skills-ort-support install tells you the same.

A link is content of the repository rather than an instruction of whoever runs the command, so following one would let the repository decide where skills are written and, worse, where the skills of the previous run are removed from.

Where either points at a directory shared between repositories, name that directory instead — npx --no hora-skills-ort-support install --dir <the directory it resolves to> reaches the same state, and the link still makes the skills visible at .claude/skills/. A --dir is named by whoever runs the command, so it is taken as given.

Keeping the installation current

The installed skills are this package's build output rather than source of your repository, so ignore them:

.claude/skills/hos-*/
.hora/

An npm install with no arguments re-runs your project's postinstall, so the skills follow along. Naming the package on the command line — npm install @openreachtech/hora-skills-ort-support@latest — does not, and neither does a repository without a hook. Run the command again yourself:

npx --no hora-skills-ort-support install

install is repeatable: it removes what the previous run installed — recorded in .hora/hora-skills-ort-support.json — along with any folder named after a skill this package distributes, before copying the current output. A renamed or dropped skill therefore leaves nothing behind, and a repository that had copied dist/skills/ by hand is tidied up on its first run.

A skill your own repository authored is left alone, as long as its name is not one this package distributes. Carrying the hos- prefix is not enough to put it at risk — hos-own-skill is untouched — but naming it exactly after a distributed skill hands that name over to this package.

Commands

| Command | What it does | | :-- | :-- | | hora-skills-ort-support install | Install every skill this package distributes, replacing the previously installed ones | | hora-skills-ort-support list | Print the skills this package distributes, installing nothing | | hora-skills-ort-support uninstall | Remove every skill this package installed, along with its record | | hora-skills-ort-support help | Print the usage text |

--dir <path> installs into a directory other than .claude/skills.

Contribution

Bug reports, feature requests, and code contributions are welcome.

Feel free to contact us through GitHub Issues.

git clone https://github.com/openreachtech/hora-skills-ort-support.git
cd hora-skills-ort-support
npm install
npm run lint
npm test

License

This project is released under the Apache License 2.0.

For more details, please see in the LICENSE file.

Developer

Open Reach Tech Inc.

Copyright

© 2026 Open Reach Tech Inc.