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

elliot-stack

v1.0.77

Published

Elliot's skill stack for Claude Code — install via npx elliot-stack@latest

Readme

E-Stack - elliot-stack

npm version license

A curated set of Claude Code skills by Elliot Drel. One command installs them all.

Install

npx elliot-stack@latest

This installs skills to ~/.agents/skills/ and symlinks them into ~/.claude/skills/, then registers SessionStart hooks for Claude Code and Codex so your skills stay up to date automatically. Any agent that reads from ~/.agents/skills/ (OpenClaw, Codex, ChatGPT, Cursor, and others) will pick them up automatically with no extra config.

Skills

| Skill | Command | Description | |-------|---------|-------------| | Active Learning Tutor | /estack-active-learning-tutor | Tutors a student through exam preparation using active learning — questioning, gap diagnosis, and concept mastery tracking | | Better Title | /estack-better-title | Renames Claude Code chat sessions — a short subject you can skim, plus project and keywords you can grep | | Book Extractor | /estack-book-extractor | Turns a book or doc set (PDF, EPUB, DOCX, HTML, RTF, TXT/MD) into a standalone, on-demand Agent Skill — deterministic text extraction, then per-chapter reference files, glossary, cheatsheet, and a master index generated by the agent, installed outside the e-stack pack | | Chris Voss | /estack-chris-voss | Applies negotiation principles from Never Split the Difference when preparing to negotiate with an outside counterpart; hard conversations with your own team go to Leadership Coach, and the message itself to Email Writer or Cold Message Writer | | CLAUDE.md Optimizer | /estack-claude-md-optimizer | Creates, refines, and maintains CLAUDE.md / AGENTS.md files as short hand-authored letters of intent — welcomes first-time users with the why behind the format and coaches through pushback instead of enforcing rules | | Cold Message Writer | /estack-cold-message-writer | Writes first-touch messages to someone who does not know the sender — LinkedIn, email, or X DMs — that read as hand-typed for one person and actually get replies | | Customer Discovery | /estack-customer-discovery | Guides through customer discovery — validating ideas, outreach, interviews, and analysis | | Doc Review Viewer | /estack-doc-review-viewer | Opens a local live-reloading viewer for a markdown document — versioned snapshots, threaded comments anchored to quoted text, and a Send to Claude button that wakes the agent without switching back to the terminal | | Drive CLI Agent | /estack-drive-cli-agent | Drives another AI coding agent CLI programmatically — Codex (codex exec) and Claude Code headless (claude -p) — under existing subscriptions, with the invocation templates, structured-output parsing, and documented footguns (stdin hangs, timeout gaps, sandbox traps, false-success signals) needed to do it reliably | | Email Writer | /estack-email-writer | Writes, edits, and reviews email to someone who already knows the sender — subject lines, openers, single weightless asks, scheduling without round-trips, and a human voice; first-touch mail to a stranger is Cold Message Writer | | Flight Planner | /estack-flight-planner | Finds flights between two airports and pairs them with a ground shuttle on either end of the trip. Automates what is repetitive and easy to get wrong (fetching every route, parsing the results, timezone-aware buffer math) and leaves filtering and ranking to judgment. Saves preferences and reusable trip presets | | GitHub Issue Tracker | /estack-github-issue-tracker | Tracks and manages GitHub issues across repos | | Leadership Coach | /estack-leadership-coach | Coaches real leadership decisions through the lens of responsibility-centered leadership (Lencioni's The Motive): reads the motive behind every request, catches abdication dressed up as delegation, and coaches six areas — delegation, developing your team, managing your people, difficult conversations, running meetings, and repetitive communication — each ending in a concrete artifact | | Migrate Claude Session History | /estack-migrate-claude-session-history | Moves a Claude Code session (transcript + subagent sidecars) from one project to another with full path-encoding rewrite, migration note, and end-to-end verification so /resume works under the new project | | Notify | /estack-notify | Arms a desktop toast at the end of every turn for the current session, per-session so one chat never pings for another, with a bell in the statusline while it is armed | | PR Description Writer | /estack-pr-description | Rewrites a PR description for a maintainer who reviews product logic and risk — decisions with tradeoffs, real verification, and DB/migration/operational status, sourced from the actual diff, not the old description | | Productivity Prioritization Coach | /estack-productivity-prioritization-coach | Coaches you through outcome-focused planning using RPM (Result, Purpose, Massive Action Plan) and five leverage filters — including an MVP anchor and a speed-to-outcome cut — to find the fastest path to a shippable result, plus a high-agency momentum engine for when you're stuck on execution, not choice | | PDF to Markdown | /estack-pdf-to-md | Converts PDFs to Markdown or plain text using the RunPulse API — parallel page batching, cost-saving blank-page filter, scanned-PDF OCR support, and encrypted-PDF handling | | Prompt Builder Coach | /estack-prompt-builder-coach | Four-part kit for shaping, building, auditing, and scoping prompts for AI agents | | Purdue Knowledge Lab Stickers | /estack-purdue-stickers | Takes a sticker idea to submission-ready files for Purdue's Knowledge Lab (free student sticker printing) — designs the SVG, renders a print-ready transparent 300 DPI PNG, and walks the Lab's booking-site submission, with the BuildPurdue design system, logo, six ready-made designs, and the official guide preloaded | | Read Agent Session History | /estack-read-agent-history | Searches, reads, recovers, and analyzes local AI coding-agent session history — Claude Code and Codex (OpenAI codex-cli) — across sessions, projects, and backups. A CLI for common lookups and reports (timeline, engagement, and other cross-session modes merge both agents by default via --agent), plus a documented Python library, with a worked example, for the custom queries no mode covers. Batch-checks a list of saved session IDs against live and every backup root in one sweep, separating still-resumable from restorable-from-backup from permanently gone | | Repo Search | /estack-repo-search | Clones and searches external GitHub repos to answer questions about their code | | Sponsorship Offer Builder | /estack-sponsorship-offer-builder | Coaches you through defining a real sponsorship offer (Hormozi value equation, Enns three-option pricing, sponsorship-industry research preloaded), then optionally builds the packet, the cold email chain, and the sponsor-meeting script | | VS Code File Recovery | /estack-vscode-file-recovery | Recovers permanently deleted files from VS Code or Cursor Local History, Claude session transcripts, or Windows Shadow Copies |

Hooks

| Hook | Purpose | |------|---------| | estack-statusline | Statusline showing model, context tokens used, project, rate limits, and an estack-notify bell | | repo-search-nudge | Suggests estack-repo-search when WebFetch/WebSearch hits GitHub | | estack-startup-update-core | Shared utility that updates the installed E-Stack package | | estack-claude-startup | Claude Code adapter for the shared SessionStart updater | | estack-codex-startup | Codex adapter for the shared SessionStart updater |

The shared startup-hook source installs to ~/.agents/hooks/. Claude Code and Codex each register their host-specific adapter in their own configuration files (~/.claude/settings.json and ~/.codex/hooks.json).

Important: E-Stack keeps the reusable startup-hook source in ~/.agents/hooks/, but each host still needs its own hook registration because Claude Code and Codex discover lifecycle hooks from different configuration files.

How it works

  • Skills install to ~/.agents/skills/estack-*/ (symlinked from ~/.claude/skills/estack-*/; auto-detected by any agent that reads ~/.agents/skills/, including OpenClaw, Codex, ChatGPT, and Cursor)
  • The startup-update core and its two adapters live once in ~/.agents/hooks/; other E-Stack hook scripts remain Claude Code-only under ~/.claude/hooks/
  • SessionStart adapters auto-update skills each time you open Claude Code or Codex; Codex asks you to review and trust its new command once in /hooks
  • If you've made local edits to a skill or hook, the installer detects the conflict and lets you choose: overwrite, skip, or merge
  • Every skill carries its own semver (version: in SKILL.md frontmatter; hooks use a // @version comment), independent of the package version — update messages show exactly what moved, e.g. estack-chris-voss (1.0.0 → 1.1.0). Under the hood, updates are detected by content hash, so a change can never be missed; a release-time check (scripts/check-versions.cjs) guarantees every content change ships with a version bump.

Updating

Skills update automatically on session start in Claude Code and Codex. To force an update manually:

npx elliot-stack@latest

Configuration

Everything you configure lives in one file, ~/.e-stack/.env — the same file every skill in the pack reads its API keys from. Format is KEY=value, one per line:

# ~/.e-stack/.env
SERPAPI_KEY=abc123
ESTACK_SKILLS_DIR=/opt/agents/skills
ESTACK_NO_STATUSLINE=1

| Variable | Default | What it does | |---|---|---| | ESTACK_SKILLS_DIR | ~/.agents/skills | Where skill files are installed | | ESTACK_HOOKS_DIR | ~/.claude/hooks | Where Claude hook scripts are installed | | ESTACK_BACKUP_DIR | ~/.estack-backup | Where your local changes are backed up | | ESTACK_NO_STATUSLINE | unset | Set to 1 to remove the statusline | | ESTACK_HOME | ~/.e-stack | Where this file itself lives (env-only) |

Resolution order is the one every skill uses: the live process environment first, then the file. So exporting a variable overrides it for a single run without editing anything. Path values must be absolute; a relative one is ignored and the default applies. The installer only ever replaces or appends its own line, so your API keys are never disturbed.

Statusline. E-Stack ships a statusline showing the model, tokens used in the current context window, the project folder, rate limits, and an estack-notify bell. A first install claims the statusLine slot even if you already have one configured, so you can see what it does; your previous value is saved to ~/.estack-backup/statusLine.json. From then on it is only updated while it is still E-Stack's. Switch back to your own or clear it, and no later update touches it again. --no-statusline removes it outright and --statusline brings it back.

Installer flags. --install applies changes (the installer previews by default when run from a clone). --yes answers the locally-modified prompt with "back up my changes, install the latest" and --skip-modified answers it with "keep my versions" — pass one of them from any script or CI job, since the prompt otherwise reads EOF on a non-interactive stdin and aborts. --statusline / --no-statusline turn the statusline on or off and remember the choice.

Requirements

  • Claude Code CLI installed (other agents that read ~/.agents/skills/ work too)
  • Node.js 18+

Contributing

External contributions are welcome via pull request. Direct pushes to main are blocked — fork the repo, push your changes to a branch, and open a PR. Only the maintainer (Elliot) can merge to main and cut releases. This is intentional: elliot-stack is a security-sensitive npm package and the release tag can only be pushed by the maintainer.

Adding or editing a skill? Authoring conventions (versioning, doc listings, feedback section) are in docs/skill-authoring.md, and coaching-style skills can start from the scaffold in templates/.

Testing locally

Run the installer straight from your checkout to preview what a real install would do to your ~/.claude/:

node bin/install.cjs            # dry run — previews changes, writes nothing
node bin/install.cjs --install  # actually sync your local edits to ~/.agents/skills/ + ~/.claude/skills/

Run from the repo, the installer dry-runs by default so testing never clobbers your live install. Pass --install once the preview looks right. (--dry-run forces a preview even under npx.)

See docs/publishing.md for the release flow and security model.

License

MIT