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

@fetot/mandor

v1.2.0

Published

A multi-agent orchestration workflow for product and engineering. Host-agnostic skills, per-repository adapters, and a knowledge vault that learns.

Downloads

780

Readme

Mandor

A multi-agent orchestration workflow for product and engineering.

Reusable skills, per-repository adapters, and a knowledge vault that learns. Host-agnostic. Zero dependencies. Windows, macOS, Linux.

npm ci node license

npx @fetot/mandor setup

That runs a guided wizard: pick the skills you want, choose the language your agent writes documents in, create a knowledge vault, attach repositories, and confirm before anything is written.


Contents

Why

Most agent skill collections go stale the same way: a skill names a repository, a tool, or a ticket system, reality moves, and nothing updates the skill. It then confidently instructs an agent to do something that no longer works.

Mandor rests on one rule that prevents this:

Skills hold method. Adapters hold facts.

A skill never names your repository, your tracker, your tools, or your teammates. It reads them from docs/agents/ in the repository it runs in. You fill those five small files in once per repository. The same skill then works in your project and in a stranger's, and it does not rot when your setup changes.

Features

  • Two orchestrators. A product owner that decides whether and what, and a tech lead that decides how and in what order. Both plan, delegate to subagents, and verify independently: a subagent's claim of "done" is never accepted as evidence.
  • Take only what you need. Install one capability, one scope, or everything. Orchestration comes with any scope you touch, because without it the rest is a pile of playbooks with nothing routing work into them.
  • Nothing is required. Every optional tool slot may stay none and every skill still works. A skill that breaks without a tool is treated as a bug.
  • A vault that learns. Session records go to an append-only journal, and durable facts are distilled into linked context. History and current truth never share a file.
  • Writing standards, enforced. No em dashes, no antithesis constructions, no inflated vocabulary. The rule binds both the documents your agent writes and this repository. CI fails on violations.
  • Host and platform agnostic. No agent product is named in any skill. The CLI is dependency-free Node and runs on Windows, macOS and Linux.

Install

Requires Node 18 or newer. Nothing is written outside the destinations you name.

npx @fetot/mandor setup                    # guided wizard, start here
npx @fetot/mandor install --all            # or: everything, no questions
npx @fetot/mandor install --scope product  # or: one scope
npx @fetot/mandor install --capability strategy,design

Every install refuses to overwrite existing files unless you pass --force, and --dry-run prints what would happen without touching anything.

To install from a clone instead of npm:

git clone https://github.com/fetot/mandor.git
cd mandor && ./install.sh --help     # forwards to the same Node entry point

For agents

Everything the interactive wizard asks has a flag, so an agent can run it without a terminal:

npx @fetot/mandor setup --yes --scope engineering --vault ~/knowledge --attach .
npx @fetot/mandor init

Read docs/AGENT-SETUP.md for what each command writes, the questions to ask the user first, and the vault-boundary decision tree. The full reference is also at mandor.ferdisma.web.id/docs. The shared-adopt skill runs this procedure end to end and hands off to shared-setup to fill in the adapters.

Install with the skills CLI

npx skills add fetot/mandor --list
npx skills add fetot/mandor --skill shared-adopt

This copies the named skill files only. It does not scaffold a vault, attach a repository, or fill in an adapter. npx @fetot/mandor remains the way to wire up vaults, repositories, and the capture hook, whichever way the skills were installed.

Commands

| command | what it does | |---|---| | setup | guided wizard: skills, language, vaults, repositories, hook, then confirm | | init [dir] | attach a repository (default: current directory) in one step | | install | install skills; interactive picker, or --all, --scope, --capability | | list | show the catalog and the recommended third-party skills | | check | what is installed; --satellite <repo> reports a repository's wiring; --json for machines | | update | refresh installed skills to the current release; never adds unpicked ones | | vault <dir> | scaffold a knowledge vault | | attach <repo> --vault <dir> | drop the adapter into a repository and link it to a vault | | defaults | record facts shared across your projects so new repos are seeded |

setup and init accept every question as a flag: --all / --scope <s> / --capability <list>, --lang english|indonesian, --vault <dir> (repeatable), --attach <repo> (repeatable or comma-separated), --hook, and --yes to skip the confirmation. init accepts --vault <dir> to link a vault in the same step.

Global flags: --dest <dir>, --lang english|indonesian, --force, --dry-run, --defaults <file>, --no-defaults, --satellite <repo>.

update is not a download. npx always fetches the latest release; update refreshes the copies already on your machine, only the ones you installed, and never rewrites answers you wrote into a repository's docs/agents/.

Skills

| scope | capability | use when | |---|---|---| | product | orchestration | raw input has to become owned, sequenced work, or should be declined | | product | discovery | a problem or opportunity needs validating before anything is built | | product | strategy | several validated options compete for what comes next | | product | design | a flow or interaction needs product-level shape and quality criteria | | product | delivery | a decision must become a PRD, acceptance criteria, and a handoff | | product | user-story | writing or reviewing a development-ready user story | | engineering | orchestration | an objective becomes a task graph; delegation; independent verification; approval gates | | engineering | development | implementing a feature, fix, refactor, or migration | | engineering | qa | verifying a change against its criteria, independently of whoever built it | | engineering | devsecops | infrastructure, CI/CD, release, secrets, incidents, deployment records | | shared | setup | reading your repositories and filling the adapters from what is actually there | | shared | adopt | an agent installing and wiring up this kit itself, without a terminal | | shared | knowledge-capture | recording what a session did, what resisted, and what comes next | | shared | writing-standards | any prose at all; loaded before writing |

Bold entries are added automatically whenever anything from their scope is installed.

How it works

~/.claude/skills/            the method, installed once, shared by every project
  product-orchestration/
  engineering-qa/ ...

~/code/your-repo/            the facts, one set per repository
  docs/agents/
    issue-tracker.md         where work items live, what a key looks like
    triage-labels.md         the five triage states
    domain.md                vocabulary, decisions, output language
    tools.md                 which optional tools exist here (all default to none)
    knowledge.md             where the vault is, relative to this repo
    .mandor                  which release seeded this, and from where

~/knowledge/                 one vault per context boundary, shared by its repos
  context/                   current, verified facts
  plans/<capability>/<era>/<status>/
  journal/<year>/            append-only session records

A skill that needs a fact reads the adapter. A skill that finishes work writes to the journal. Periodically the journal is distilled into context/, and a distilled fact that contradicts what context/ already says is the most valuable signal in the system: it means reality moved.

Configuration

Adapters are the configuration. Fill in docs/agents/*.md in each repository. The shared-setup skill does most of this for you by reading the repository.

Defaults. mandor defaults writes a small file of answers that repeat across your projects (language, tracker, tools). New repositories are seeded from it. Values are copied at seed time; nothing reads the defaults file afterwards, so every repository stays self-describing.

Environment.

| variable | effect | |---|---| | MANDOR_SKILLS_DIR | where skills are installed when --dest is not given | | MANDOR_PROJECT_DIR | tells the capture hook which project it is in, on any host | | NO_COLOR | plain output, no colour or box-drawing characters |

Capture hook. hooks/capture-reminder.js runs at the end of a session and notes when nothing was journaled. It finds the vault through the adapter, so it behaves per project and stays silent where there is none. Wire it to whatever your host calls "end of session":

{ "type": "command", "command": "node <path>/hooks/capture-reminder.js" }

Your settings file is never edited for you; the wizard prints the snippet.

Compatibility

| | | |---|---| | Operating systems | Windows, macOS, Linux (tested in CI on all three) | | Node | 18, 20, 22 | | Runtime dependencies | none | | Agent hosts | any that reads skill files; no product is named in any skill | | Default skills directory | ~/.claude/skills, override with --dest or MANDOR_SKILLS_DIR |

The per-repository docs/agents/ convention is compatible with mattpocock/skills on purpose: configure once, both work. Recommended third-party skills are listed in vendor.txt and installed from their upstream, never bundled here.

See docs/PLATFORMS.md and docs/MULTI-PROJECT.md for the details, including the vault boundary rule, which is the decision most worth getting right.

Contributing

Read docs/DESIGN.md first. It is short and it is binding: it defines what may never appear inside skills/. The test is one sentence. If a statement is only true in one repository, it is not a skill. Move it to an adapter.

CI enforces the design contract: zero dependencies, zero absolute paths, zero project names in distributable files, requires: [] on every skill, and the writing standards. See CONTRIBUTING.md.

License

MIT