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

sentineledge-outline-skill-hook

v1.0.0

Published

Installer for the SentinelEdge Outline auto-sync hook + /outline skill for Claude Code. Mirrors per-project session state into an Outline collection on every SessionEnd.

Readme

sentineledge-outline-skill-hook

One-shot installer for the SentinelEdge Outline auto-sync for Claude Code.

Installs two things into your global Claude Code config (~/.claude/):

  1. Hookoutline-sync.mjs runs at every SessionEnd and creates/updates one Outline document per project, populated from CONTEXT.md, memory/STACK.md, and today's git log.
  2. Skill/outline slash command to check sync status, repair a document, or search Outline.

It also wires the mcp-outline MCP server so the /outline skill can talk to Outline.


Quick start

npx sentineledge-outline-skill-hook

The installer will prompt you for:

| Prompt | What it is | | -------------------------- | ------------------------------------------------------------------------------------------------------ | | Outline base URL | https://app.getoutline.com for cloud, or your self-hosted Outline URL | | Outline API token | An API token from Outline → Settings → API. Starts with ol_api_… | | Collection | Picked interactively from the list of collections in your workspace | | Projects root | Local folder whose direct children are the projects you want tracked. e.g. ~/Develop/myteam-projects | | Developer name + email | Stamped onto every Outline session log entry. Defaults from your git config user.name / user.email |

That's it. Open Claude Code in any project under your projects root, do some work, end the session — the document appears in the chosen Outline collection.


Requirements

  • Node.js ≥ 20
  • Claude Code installed (claude on PATH) — required to wire the MCP server
  • An Outline account with an API token (cloud or self-hosted)
  • Existing or empty ~/.claude/ folder (the installer creates anything missing)

Supported platforms: macOS, Linux, Windows (PowerShell or cmd).


What gets installed

~/.claude/
├── hooks/
│   └── outline-sync.mjs              # the SessionEnd hook
├── skills/
│   └── sentineledge-outline-skill/
│       └── SKILL.md                  # the /outline slash command
├── state/
│   └── outline-docs.json             # project slug → Outline document ID (created on first sync)
├── logs/
│   └── outline-sync.log              # last 1000 hook runs (rotated)
├── .secrets.env                      # OUTLINE_* keys appended here (other keys preserved)
└── settings.json                     # SessionEnd hook entry merged in (other hooks preserved)

Claude Code MCP config is updated via claude mcp add so mcp-outline is available to the /outline skill.


CLI commands

npx sentineledge-outline-skill-hook              # default: install (interactive)
npx sentineledge-outline-skill-hook install      # explicit install
npx sentineledge-outline-skill-hook reconfigure  # re-prompt + overwrite secrets only
npx sentineledge-outline-skill-hook doctor       # verify everything is wired correctly
npx sentineledge-outline-skill-hook uninstall    # remove hook + skill + settings entry (leaves .secrets.env)

All commands are idempotent — running install twice will not duplicate entries.


How project detection works

When Claude Code ends a session, the hook resolves the project slug like this:

cwd     = /Users/alice/Develop/myteam-projects/payroll/api
root    = /Users/alice/Develop/myteam-projects     (your OUTLINE_PROJECTS_ROOT)
relative = payroll/api
slug    = payroll                                    ← document title in Outline

If cwd is not inside OUTLINE_PROJECTS_ROOT, the hook silently exits — sessions outside your tracked folder are ignored.


What lands in the Outline document

Each project gets one document, titled after the project slug:

  • Project Summary — sprint goal from memory/STACK.md if present
  • Stack — runtime, framework, db, auth, hosting, ci/cd, version, status (parsed from memory/STACK.md)
  • Developers — your configured name + email
  • Session Log — newest sessions at top. Each entry has:
    • Date, goal (from CONTEXT.md ## Session … header), developer
    • Bullet per completed task (parsed from ## 📋 Session Tasks blocks)
    • Today's git commits (since local midnight)

The hook never fails the session: if Outline is down or the token is invalid, it logs the error to ~/.claude/logs/outline-sync.log and exits silently.


Uninstalling

npx sentineledge-outline-skill-hook uninstall

This removes:

  • ~/.claude/hooks/outline-sync.mjs
  • ~/.claude/skills/sentineledge-outline-skill/
  • The SessionEnd entry pointing at the hook in ~/.claude/settings.json
  • The mcp-outline MCP server (via claude mcp remove)

It does not delete:

  • ~/.claude/state/outline-docs.json (so you can reinstall later without re-creating Outline docs)
  • ~/.claude/.secrets.env (your OUTLINE_* keys stay — delete them by hand if you want them gone)
  • Any documents already created in Outline

Troubleshooting

Run the doctor:

npx sentineledge-outline-skill-hook doctor

It checks: Node version, all expected files exist, secrets are loaded, settings.json is wired, the Outline API is reachable with your token, and claude mcp list shows mcp-outline.

If a session ends and no document appears, tail the log:

tail -n 50 ~/.claude/logs/outline-sync.log

License

MIT