vercel-labs/skills
The open agent skills tool - npx skills
TypeScript★ 34,675+190 that day#4 on trending
C61.7/100
Duplication59
6.7% in typescript, bash, perlDead code93
0.6%Complexity43
62.5% The score is jscpd's own --health model: markup, data and text left out, tests kept. The numbers below are the trending scan's.
4.16%duplicated code · 722 of 17,342 lines
49clones in code
50code files of 144 scanned
6.54%duplicated over all files · 170 clones
Most complex files
- src/add.ts628 cx
- src/prompts/search-multiselect.ts260 cx
- src/sync.ts250 cx
- src/update.ts249 cx
- src/installer.ts237 cx
- src/providers/wellknown.ts158 cx
- src/agents.ts144 cx
- src/use.ts140 cx
- src/source-parser.ts138 cx
- src/blob.ts134 cx
Dead code 0.6% unused · 9 findings
- src/test-utils.tsunused-file
- scripts/validate-agents.ts:checkDuplicateSkillsDirsunused-symbol
- src/constants.ts:UNIVERSAL_SKILLS_DIRunused-export
- src/find.ts:MAGENTAunused-symbol
- src/find.ts:YELLOWunused-symbol
- src/list.ts:TEXTunused-symbol
- src/local-lock.ts:statunused-import
- src/prompts/search-multiselect.ts:S_CHECKBOX_LOCKEDunused-symbol
- src/update.ts:pcunused-import
The code number leaves out tests, fixtures, docs, examples, data files, styles, translations and vendored code.
Largest clones in the code
- 52 lines in 2 placestypescript257 tokens
668 skill: RemoteSkill, 669 agentType: AgentType, 670 options: { global?: boolean; cwd?: string; mode?: InstallMode; eveSubagent?: string } = {} 671): Promise<InstallResult> { 672 const agent = agents[agentType]; 673 const isGlobal = options.global ?? false; 674 const cwd = options.cwd || process.cwd(); 675 const installMode = options.mode ?? 'symlink'; 676 const eveSubagent = options.eveSubagent; 677First 10 of 52 lines.
- 31 lines in 2 placestypescript188 tokens
1090} 1091 1092const title = pc.green(`Installed ${skillCount} skill${skillCount !== 1 ? 's' : ''}`); 1093p.note(resultLines.join('\n'), title); 1094 1095// Show symlink failure warning (only for symlink mode) 1096if (symlinkFailures.length > 0) { 1097 p.log.warn(pc.yellow(`Symlinks failed for: ${formatList(copiedAgents)}`)); 1098 p.log.message( 1099 pc.dim(First 10 of 31 lines.
- 23 lines in 2 placestypescript179 tokens
762const validAgents = Object.keys(agents); 763 764if (options.agent?.includes('*')) { 765 // --agent '*' selects all agents 766 targetAgents = validAgents as AgentType[]; 767 p.log.info(`Installing to all ${targetAgents.length} agents`); 768} else if (options.agent && options.agent.length > 0) { 769 const invalidAgents = options.agent.filter((a) => !validAgents.includes(a)); 770 771 if (invalidAgents.length > 0) {641const universalAgents = getUniversalAgents(); 642 643if (options.agent?.includes('*')) { 644 targetAgents = validAgents as AgentType[]; 645 p.log.info(`Installing to all ${targetAgents.length} agents`); 646} else if (options.agent && options.agent.length > 0) { 647 const invalidAgents = options.agent.filter((a) => !validAgents.includes(a)); 648 if (invalidAgents.length > 0) { 649 p.log.error(`Invalid agents: ${invalidAgents.join(', ')}`); 650 p.log.info(`Valid agents: ${validAgents.join(', ')}`);First 10 of 23 lines, the second copy on the right.
7 more
- 39 lines in 2 placestypescript132 tokens
- 13 lines in 2 placestypescript130 tokens
- 16 lines in 2 placestypescript130 tokens
- 17 lines in 2 placestypescript128 tokens
- 42 lines in 2 placestypescript115 tokens
- 7 lines in 3 placestypescript54 tokens
- 23 lines in 2 placestypescript107 tokens
Largest clones over all files, tests and data included
- 90 lines in 2 placestypescripttests467 tokens
1import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; 2import { mkdtemp, mkdir, writeFile, rm, readFile } from 'node:fs/promises'; 3import { join } from 'node:path'; 4import { tmpdir } from 'node:os'; 5 6// Isolate side-effecting UI / network deps so runAdd can run headless in CI. 7vi.mock('@clack/prompts', () => { 8 const noop = () => {}; 9 return { 10 intro: noop,First 10 of 90 lines.
- 60 lines in 2 placestypescripttests305 tokens
7import { gzipSync } from 'node:zlib'; 8 9vi.mock('@clack/prompts', () => { 10 const noop = () => {}; 11 return { 12 intro: noop, 13 outro: noop, 14 note: noop, 15 confirm: vi.fn().mockResolvedValue(true), 16 cancel: noop,First 10 of 60 lines.
- 11 lines in 2 placestxtdocs and examples274 tokens
19MIT License Copyright (c) 2025-Present [Bombshell contributors](https://bomb.sh/team) 20 21Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in t… 22 23The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 24 25THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR… 26 27 28================================================================================First 10 of 11 lines.
- 9 lines in 2 placestxtdocs and examples273 tokens
- 52 lines in 2 placestypescript257 tokens
By format, code only
| Format | Files | Lines | Clones | Duplicated lines | Duplication |
|---|---|---|---|---|---|
| typescript | 40 | 16,480 | 49 | 722 | 4.38% |
| bash | 9 | 694 | 0 | 0 | 0% |
| perl | 1 | 168 | 0 | 0 | 0% |
By format, all files
| Format | Files | Lines | Clones | Duplicated lines | Duplication |
|---|---|---|---|---|---|
| typescript | 111 | 32,402 | 165 | 2,244 | 6.93% |
| txt | 1 | 117 | 3 | 34 | 29.06% |
| yaml | 9 | 446 | 2 | 29 | 6.5% |
| markdown | 7 | 1,087 | 0 | 0 | 0% |
| bash | 11 | 820 | 0 | 0 | 0% |
| json | 2 | 183 | 0 | 0 | 0% |
| perl | 1 | 168 | 0 | 0 | 0% |
| text | 2 | 58 | 0 | 0 | 0% |
Trending appearances
| Day | Rank | Stars | Files | Lines | Clones | All files | Code | Health | Commit |
|---|---|---|---|---|---|---|---|---|---|
| Oct 14, 2026 | #4 | 34,675 (+190) | 144 | 35,281 | 170 | 6.54% | 4.16% | C 61.7 | 13e4063 |
| Sep 11, 2026 | #12 | 31,253 (+122) | 127 | 30,660 | 156 | 7.13% | 5.7% | — | 80feb48 |
Want this for your own project? Install jscpd and run jscpd ., or measure it the way the baselines were measured.