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

universal-agent-skills

v0.2.0

Published

Framework-agnostic agent skill library. Drop-in skills for Claude Agent SDK, LangChain, OpenAI Assistants, CrewAI, AutoGen, and any AI agent runtime.

Readme

universal-agent-skills

Framework-agnostic agent skills for any AI agent runtime. Drop-in adapters for Claude Agent SDK, OpenAI Assistants, LangChain, CrewAI, AutoGen, and any system that takes a system prompt.

Each skill is a markdown file with frontmatter and a careful, prompt-engineered body — load it, hand it to your agent as a system prompt or role, done.

Install

npm install universal-agent-skills

Quick start

import { forClaude, forOpenAI, forLangChain, listSkills } from "universal-agent-skills";

// See what's available
console.log(listSkills());
// [
//   { name: "code-reviewer",  description: "...", tags: ["code","review",...] },
//   { name: "data-analyst",   description: "...", tags: [...] },
//   ...
// ]

// Use with Claude Agent SDK / Anthropic Messages API
import Anthropic from "@anthropic-ai/sdk";
const anthropic = new Anthropic();
const { system } = forClaude("code-reviewer");
const msg = await anthropic.messages.create({
  model: "claude-opus-4-7",
  max_tokens: 4096,
  system,
  messages: [{ role: "user", content: "Review this diff:\n\n" + diff }],
});

// Use with OpenAI Assistants
import OpenAI from "openai";
const openai = new OpenAI();
const assistant = await openai.beta.assistants.create({
  model: "gpt-4o",
  ...forOpenAI("researcher"),
});

// Use with LangChain
import { PromptTemplate } from "@langchain/core/prompts";
const tw = forLangChain("test-writer");
const prompt = PromptTemplate.fromTemplate(tw.template);
const formatted = await prompt.format({
  target_code: "...",
  framework: "vitest",
  existing_tests: "",
});

Skills

Engineering

| Skill | What it does | |---|---| | code-reviewer | Reviews code for bugs, security, performance — prioritized findings with file:line + fixes | | test-writer | Generates unit/integration tests covering happy path, edges, errors | | refactorer | Refactors with a behavior-equivalence argument; small safe steps | | debugger | Diagnoses errors with root cause, fix, and verification step | | doc-writer | Generates READMEs, API refs, JSDoc/docstrings |

Design & Design Engineering

| Skill | What it does | |---|---| | component-designer | Specs a UI component — anatomy, states, variants, API, accessibility, edge cases | | visual-polish-reviewer | Reviews UI for alignment, spacing, typography, shadows — the details that separate fine from great | | interaction-designer | Designs micro-interactions with timing, easing, purpose; outputs animation code | | design-token-architect | Designs primitive/semantic/component token layers with theme support | | design-to-code | Translates Figma or design specs into accessible, responsive, token-driven component code |

Knowledge & Research

| Skill | What it does | |---|---| | summarizer | Faithful summaries at TLDR / short / medium / long lengths | | researcher | Decomposes a question, gathers cited sources, synthesizes a brief | | data-analyst | Profiles, analyzes, and reports on tabular data with caveats |

Every skill follows the same authoring principles: lead with the spine, prioritize findings, prefer concrete output formats, name what to avoid.

API

// Load
loadAllSkills(): Skill[]
getSkill(name: string): Skill
listSkills(): SkillSummary[]
asSystemPrompt(name: string): string

// Framework adapters
forClaude(name):     { system, metadata }
forOpenAI(name):     { name, description, instructions }
forLangChain(name):  { template, inputVariables }
forCrewAI(name):     { role, goal, backstory }
forAutoGen(name):    { name, system_message }
forGeneric(name):    { name, description, version, tags, inputs, instructions }

Use with Python frameworks (CrewAI, AutoGen)

The package is ESM JS, but the markdown skills are framework-neutral. To consume from Python:

# After npm install, the markdown files are at:
node_modules/universal-agent-skills/skills/<name>/SKILL.md

Read the file directly, strip frontmatter (---...---), use the body as your agent's backstory (CrewAI) or system_message (AutoGen).

Or generate a JSON catalog from Node and hand it to Python:

node -e "import('universal-agent-skills').then(m => console.log(JSON.stringify(m.loadAllSkills(), null, 2)))" > skills.json

Authoring your own skills

A skill is a directory containing SKILL.md:

skills/
  my-skill/
    SKILL.md

SKILL.md frontmatter:

---
name: my-skill
description: One sentence describing when to use this skill and what it produces.
version: 0.1.0
tags: [domain, capability]
inputs:
  - name: input_name
    description: What this input is.
    required: true
---

# Body

The system-prompt content. Be specific about process, output format, and what to avoid.

Drop the directory into skills/ and loadAllSkills() picks it up.

Design principles

These skills were written to follow a few rules:

  • Lead with intent. The first paragraph tells the model when to apply the skill.
  • Process before output. How to think, not just what to emit.
  • Specify output shape. Models drift without a target format.
  • Name failure modes. "What to avoid" sections prevent common errors.
  • Concrete over abstract. Concrete examples beat abstract advice.

License

MIT