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

@ethan_zhang2012/skills

v0.1.0

Published

Agent skills published from my_agent_skill

Readme

my_agent_skill

Personal agent skills packaged for Claude Code, Codex, and related agent clients.

Skills CLI

This repo can be published as a lowercase scoped npm package, for example @ethan_zhang2012/skills. npm package names cannot contain uppercase letters, so @Ethan_Zhang/skills is not valid.

One-Time Update

npx -y @ethan_zhang2012/skills@latest update

By default, update syncs package-managed skills to ~/.claude/skills. Other useful forms:

npx -y @ethan_zhang2012/skills@latest update --client codex
npx -y @ethan_zhang2012/skills@latest update --client all
npx -y @ethan_zhang2012/skills@latest update --dry-run
npx -y @ethan_zhang2012/skills@latest update --target /tmp/test-skills
npx -y @ethan_zhang2012/skills@latest list

The updater writes .skills-lock.json in each target skill root and only rewrites skills managed by this package. If a destination skill directory exists but is not recorded in the lock file, the updater reports a conflict and leaves that directory untouched.

Claude SessionStart Hook

Add this to user-level ~/.claude/settings.json to refresh before each Claude Code session:

{
  "hooks": {
    "SessionStart": [
      {
        "matcher": "*",
        "hooks": [
          {
            "type": "command",
            "command": "npx -y @ethan_zhang2012/skills@latest update --client claude >/dev/null 2>&1 || true",
            "timeout": 60
          }
        ]
      }
    ]
  }
}

Codex Refresh

Codex can use the same CLI:

npx -y @ethan_zhang2012/skills@latest update --client codex

For a guaranteed refresh before Codex starts, use a shell wrapper or alias:

alias codex='npx -y @ethan_zhang2012/skills@latest update --client codex >/dev/null 2>&1 || true; command codex'

Session-start hooks may update files after the current session has already loaded its skill list, so hook-based updates are safest when you only need the next session to see new skills.

Local Validation And Publish

npm install
npm run test:local
npm run pack:check
npm pack

To publish publicly:

npm login
npm publish --access public

This repo includes .github/workflows/publish.yml for automated publishing with npm Trusted Publishing. To enable it:

  1. Push this repository to GitHub.
  2. On npmjs.com, open the package settings for @ethan_zhang2012/skills.
  3. Add a Trusted Publisher:
    • Provider: GitHub Actions
    • Organization or user: EthenZhang
    • Repository: my_agent_skill
    • Workflow filename: publish.yml
  4. Push a semver tag:
npm version patch
git push --follow-tags

The workflow runs validation and publishes to npm when tags matching v*.*.* are pushed. It can also be started manually from the GitHub Actions tab. Trusted Publishing uses GitHub OIDC, so no long-lived NPM_TOKEN secret is required.

OpenSpec OPSX Usage

Codex App can invoke the global custom prompts directly:

  • /prompts:opsx-explore
  • /prompts:opsx-propose
  • /prompts:opsx-apply
  • /prompts:opsx-archive

Codex CLI currently does not dispatch these custom prompt commands through the interactive slash-command parser. In CLI sessions, use the OpenSpec skills with plain text instead:

  • opsx explore <topic>
  • opsx propose <change or request>
  • opsx apply <change>
  • opsx archive <change>

If you specifically want to type the Claude-style alias in Codex CLI, prefix it with one leading space so the CLI sends it as normal text instead of trying to parse it as a built-in slash command:

  • /opsx:explore <topic>
  • /opsx:propose <change or request>
  • /opsx:apply <change>
  • /opsx:archive <change>

The leading space is intentional. Without it, Codex CLI treats /opsx:explore as an unknown slash command before the model or skill loader can see it.