Dog-Skills / vercel-labs-skills
AGENTS.md7 starsChanged 5 months agoMITView on GitHub
This file provides guidance to AI coding agents working on the skills CLI codebase. skills is the CLI for the open agent skills ecosystem. Aliases: skills a works for add. skills i, skills install (no args) restore from skills-lock.json. skills ls works for list. skills experimental_install restores from skills-lock.json. skills experimental_sync crawls node_modules for skills.
- Reads credentials
- Installs packages
Where files are headingNew AGENTS.md files have more rules about keeping secrets out of the code, and fewer about code style.
Of the AGENTS.md files we read, the 31,700 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.
In this repository129 other files it gives its agents.
- last30days-skill/AGENTS.mdAGENTS.md
- tutor/AGENTS.mdAGENTS.md
- baoyu-skills/CLAUDE.mdCLAUDE.md
- CLAUDE.mdCLAUDE.md
- claude-to-im-skill/CLAUDE.mdCLAUDE.md
- html-video/CLAUDE.mdCLAUDE.md
- last30days-skill/CLAUDE.mdCLAUDE.md
- ui-ux-pro-max-skill/CLAUDE.mdCLAUDE.md
- academic-research-skillsSkill
- agency-agents-zhSkill
- algorithmic-artSkill
- animation-craftSkill
- apple-designSkill
- archifySkill
- architecture-diagramSkill
- article-posterSkill
- baokuan-title-generatorSkill
- baoyu-skillsSkill
- brand-workshopSkill
- canvas-designSkill
- cc-dispatchSkill
- claude-to-imSkill
- code-reviewSkill
- code-simplifierSkill
- codex-claude-pmSkill
- comprehensive-thinkingSkill
- context7Skill
- creator-buddySkill
- dashi-pptSkill
- dbskillSkill
- design-buddySkill
- dog-frontierSkill
- dog-posterSkill
- dog-pptSkill
- Dog-Project-EvaluateSkill
- dog-tutorSkill
- emil-design-engSkill
- excalidraw-diagramSkill
- family-doctorSkill
- feynman-learningSkill
- fireworks-tech-graphSkill
- first-principlesSkill
- ghostwriterSkill
- gpt-researcherSkill
- handshakeSkill
- html-videoSkill
- huashu-agent-swarmSkill
- huashu-article-editSkill
- huashu-article-to-xSkill
- huashu-data-proSkill
- huashu-designSkill
- huashu-douyin-scriptSkill
- huashu-image-uploadSkill
- huashu-info-searchSkill
- huashu-material-searchSkill
- huashu-md-to-pdfSkill
- huashu-prompt-saveSkill
- huashu-proofreadingSkill
- huashu-researchSkill
- huashu-script-polishSkill
- The first 60 shown.
The file
We split this AGENTS.md into the rules it gives an agent
5 rules. About 0 are common, 1 is distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 85
Read ~/.agents/.skill-lock.json for installed skills
- Distinctive: line 96
If reading an older lock file version, it's wiped.
- Very specific: line 170
Add the agent definition to src/agents.ts
- Very specific: line 171
Run pnpm run -C scripts validate-agents.ts to validate
- Very specific: line 172
Run pnpm run -C scripts sync-agents.ts to update README.md and package keywords
≈ “Common” is an estimate: at least 1 in 5 of the 40,246 AGENTS.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
AGENTS.md
This file provides guidance to AI coding agents working on the skills CLI codebase.
Project Overview
skills is the CLI for the open agent skills ecosystem.
Commands
| Command | Description |
skills | Show banner with available commands |
skills add <pkg> | Install skills from git repos, URLs, or local paths |
skills use <pkg>@<skill> | Use one skill without installing |
skills experimental_install | Restore skills from skills-lock.json |
skills experimental_sync | Sync skills from node_modules into agent dirs |
skills list | List installed skills (alias: ls) |
skills update [skills...] | Update skills to latest versions |
skills init [name] | Create a new SKILL.md template |
Aliases: skills a works for add. skills i, skills install (no args) restore from skills-lock.json. skills ls works for list. skills experimental_install restores from skills-lock.json. skills experimental_sync crawls node_modules for skills.
Architecture
src/
├── cli.ts # Main entry point, command routing, init/check/update
├── cli.test.ts # CLI tests
├── add.ts # Core add command logic
├── add-prompt.test.ts # Add prompt behavior tests
├── add.test.ts # Add command tests
├── constants.ts # Shared constants
├── find.ts # Find/search command
├── list.ts # List installed skills command
├── list.test.ts # List command tests
├── remove.ts # Remove command implementation
├── remove.test.ts # Remove command tests
├── agents.ts # Agent definitions and detection
├── installer.ts # Skill installation logic (symlink/copy) + listInstalledSkills
├── skills.ts # Skill discovery and parsing
├── skill-lock.ts # Global lock file management (~/.agents/.skill-lock.json)
├── local-lock.ts # Local lock file management (skills-lock.json, checked in)
├── sync.ts # Sync command - crawl node_modules for skills
├── source-parser.ts # Parse git URLs, GitHub shorthand, local paths
├── git.ts # Git clone operations
├── telemetry.ts # Anonymous usage tracking
├── types.ts # TypeScript types
├── mintlify.ts # Mintlify skill fetching (legacy)
├── plugin-manifest.ts # Plugin manifest discovery support
├── prompts/ # Interactive prompt helpers
│ └── search-multiselect.ts
├── providers/ # Remote skill providers (GitHub, HuggingFace, Mintlify)
│ ├── index.ts
│ ├── registry.ts
│ ├── types.ts
│ ├── huggingface.ts
│ ├── mintlify.ts
│ └── wellknown.ts
├── init.test.ts # Init command tests
├── use.ts # Use command - generate a skill prompt or launch an agent
├── use.test.ts # Use command tests
└── test-utils.ts # Test utilities
tests/
├── cross-platform-paths.test.ts # Path normalization across platforms
├── full-depth-discovery.test.ts # --full-depth skill discovery tests
├── openclaw-paths.test.ts # OpenClaw-specific path tests
├── plugin-manifest-discovery.test.ts # Plugin manifest skill discovery
├── sanitize-name.test.ts # Tests for sanitizeName (path traversal prevention)
├── skill-matching.test.ts # Tests for filterSkills (multi-word skill name matching)
├── source-parser.test.ts # Tests for URL/path parsing
├── installer-symlink.test.ts # Tests for symlink installation
├── list-installed.test.ts # Tests for listing installed skills
├── skill-path.test.ts # Tests for skill path handling
├── wellknown-provider.test.ts # Tests for well-known provider
├── xdg-config-paths.test.ts # XDG global path handling tests
└── dist.test.ts # Tests for built distributionUpdate Checking System
How skills check and skills update Work
- Read
~/.agents/.skill-lock.jsonfor installed skills - Filter to GitHub-backed skills that have both
skillFolderHashandskillPath - For each skill, call
fetchSkillFolderHash(source, skillPath, token). Optional auth token is sourced fromGITHUB_TOKEN,GH_TOKEN, orgh auth tokento improve rate limits. fetchSkillFolderHashcalls GitHub Trees API directly (/git/trees/<branch>?recursive=1formain, thenmasterfallback)- Compare latest folder tree SHA with lock file
skillFolderHash; mismatch means update available skills updatereinstalls changed skills by invoking the current CLI entrypoint directly (node <repo>/bin/cli.mjs add <source-tree-url> -g -y) to avoid nested npm exec/npx behavior
Lock File Compatibility
The lock file format is v3. Key field: skillFolderHash (GitHub tree SHA for the skill folder).
If reading an older lock file version, it's wiped. Users must reinstall skills to populate the new format.
Key Integration Points
| Feature | Implementation |
skills add | src/add.ts - full implementation |
skills experimental_sync | src/sync.ts - crawl node_modules |
skills check | src/cli.ts + fetchSkillFolderHash in src/skill-lock.ts |
skills update | src/cli.ts direct hash compare + reinstall via skills add |
Development
# Install dependencies
pnpm install
# Build
pnpm build
# Test locally
pnpm dev add vercel-labs/agent-skills --list
pnpm dev experimental_sync
pnpm dev check
pnpm dev update
pnpm dev init my-skill
# Run all tests
pnpm test
# Run specific test file(s)
pnpm test tests/sanitize-name.test.ts
pnpm test tests/skill-matching.test.ts tests/source-parser.test.ts
# Type check
pnpm type-check
# Format code
pnpm format
# Check formatting
pnpm format:check
# Validate and sync agent metadata/docs
pnpm run -C scripts validate-agents.ts
pnpm run -C scripts sync-agents.tsCode Style
This project uses Prettier for code formatting. Always run pnpm format before committing changes to ensure consistent formatting.
# Format all files
pnpm format
# Check formatting without fixing
pnpm format:checkCI will fail if code is not properly formatted.
Publishing
# 1. Bump version in package.json
# 2. Build
pnpm build
# 3. Publish
npm publishAdding a New Agent
- Add the agent definition to
src/agents.ts - Run
pnpm run -C scripts validate-agents.tsto validate - Run
pnpm run -C scripts sync-agents.tsto update README.md and package keywords
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

