agentic-awesome-skills 14.0.0 → 14.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,9 +1,9 @@
1
- <!-- registry-sync: version=14.0.0; skills=1936; stars=42661; updated_at=2026-07-09T06:03:23+00:00 -->
1
+ <!-- registry-sync: version=14.2.0; skills=1946; stars=42926; updated_at=2026-07-12T05:22:55+00:00 -->
2
2
  [![Agentic Awesome Skills social preview](apps/web-app/public/social-card.png)](https://github.com/sickn33/agentic-awesome-skills)
3
3
 
4
- # 🌌 Agentic Awesome Skills: 1,936+ Agentic Skills for Claude Code, Gemini CLI, Cursor, Autohand Code, Copilot & More
4
+ # 🌌 Agentic Awesome Skills: 1,946+ Agentic Skills for Claude Code, Gemini CLI, Cursor, Autohand Code, Copilot & More
5
5
 
6
- > **Installable GitHub library of 1,936+ agentic skills for Claude Code, Cursor, Codex CLI, Autohand Code, Gemini CLI, Antigravity, and other AI coding assistants.**
6
+ > **Installable GitHub library of 1,946+ agentic skills for Claude Code, Cursor, Codex CLI, Autohand Code, Gemini CLI, Antigravity, and other AI coding assistants.**
7
7
 
8
8
  Agentic Awesome Skills is an installable GitHub library and npm installer for reusable `SKILL.md` playbooks. It is designed for Claude Code, Cursor, Codex CLI, Autohand Code, Gemini CLI, Antigravity, Kiro, OpenCode, GitHub Copilot, and other AI coding assistants that benefit from structured operating instructions. Instead of collecting one-off prompt snippets, this repository gives you a searchable, installable catalog of skills, bundles, workflows, plugin-safe distributions, and practical docs that help agents perform recurring tasks with better context, stronger constraints, and clearer outputs.
9
9
 
@@ -13,7 +13,7 @@ You can use this repo to install a broad multi-tool skill library, start from fo
13
13
 
14
14
  The canonical project page is the GitHub repository at <https://github.com/sickn33/agentic-awesome-skills>; the hosted catalog is a companion discovery surface for search, plugins, and skill detail pages.
15
15
 
16
- **Start here:** [Install in 1 minute](#installation) · [Recommended plugins](#recommended-specialized-plugins) · [Compare plugin packs](https://sickn33.github.io/agentic-awesome-skills/plugins) · [Choose your tool](#choose-your-tool) · [📚 Browse 1,936+ Skills](#browse-1936-skills) · [Bundles & workflows](#bundles--workflows) · [Support the project](#support-the-project)
16
+ **Start here:** [Install in 1 minute](#installation) · [Recommended plugins](#recommended-specialized-plugins) · [Compare plugin packs](https://sickn33.github.io/agentic-awesome-skills/plugins) · [Choose your tool](#choose-your-tool) · [📚 Browse 1,946+ Skills](#browse-1946-skills) · [Bundles & workflows](#bundles--workflows) · [Support the project](#support-the-project)
17
17
 
18
18
  [![GitHub stars](https://img.shields.io/badge/⭐%2043%2C000%2B%20Stars-gold?style=for-the-badge)](https://github.com/sickn33/agentic-awesome-skills/stargazers)
19
19
  [![Follow @AASkills_ on X](https://img.shields.io/badge/Follow-%40AASkills__-black?style=for-the-badge&logo=x)](https://x.com/AASkills_)
@@ -30,13 +30,13 @@ The canonical project page is the GitHub repository at <https://github.com/sickn
30
30
  [![OpenCode](https://img.shields.io/badge/OpenCode-CLI-gray?style=for-the-badge)](https://github.com/opencode-ai/opencode)
31
31
  [![Antigravity](https://img.shields.io/badge/Antigravity-AI%20IDE-red?style=for-the-badge)](https://github.com/sickn33/agentic-awesome-skills)
32
32
 
33
- **Current release: V14.0.0.** Trusted by 43k+ GitHub stargazers, this repository combines official and community skill collections with bundles, workflows, installation paths, and docs that help you go from first install to daily use quickly.
33
+ **Current release: V14.2.0.** Trusted by 43k+ GitHub stargazers, this repository combines official and community skill collections with bundles, workflows, installation paths, and docs that help you go from first install to daily use quickly.
34
34
 
35
35
  ## Why This Repo
36
36
 
37
37
  - **Installable, not just inspirational**: use `npx agentic-awesome-skills` to put skills where your tool expects them.
38
38
  - **Built for major agent workflows**: Claude Code, Cursor, Codex CLI, Autohand Code, Gemini CLI, Antigravity, Kiro, OpenCode, Copilot, and more.
39
- - **Broad coverage with real utility**: 1,936+ skills across development, testing, security, infrastructure, product, and marketing.
39
+ - **Broad coverage with real utility**: 1,946+ skills across development, testing, security, infrastructure, product, and marketing.
40
40
  - **Focused by default**: specialized plugins help you start with the web, security, data, docs, DevOps, QA, OSS, or agent/MCP workflows you actually need.
41
41
  - **Useful whether you want breadth or curation**: install the full catalog, choose a specialized plugin, start with bundles, or compare alternatives before installing.
42
42
 
@@ -48,7 +48,7 @@ The canonical project page is the GitHub repository at <https://github.com/sickn
48
48
  - [Choose Your Tool](#choose-your-tool)
49
49
  - [Quick FAQ](#quick-faq)
50
50
  - [Bundles & Workflows](#bundles--workflows)
51
- - [Browse 1,936+ Skills](#browse-1936-skills)
51
+ - [Browse 1,946+ Skills](#browse-1946-skills)
52
52
  - [Troubleshooting](#troubleshooting)
53
53
  - [Stable Skills Manifest v1](#stable-skills-manifest-v1)
54
54
  - [Support the Project](#support-the-project)
@@ -159,7 +159,7 @@ Use the table above for install targets. Use specialized plugins when you are ch
159
159
 
160
160
  ### What is Agentic Awesome Skills?
161
161
 
162
- **Agentic Awesome Skills** (Release 14.0.0) is a large, installable skill library for AI coding assistants. It packages 1,936+ reusable `SKILL.md` playbooks, specialized plugins, bundles, workflows, generated catalogs, and a CLI installer so Claude Code, Codex CLI, Autohand Code, Cursor, Gemini CLI, Antigravity, and similar tools can reuse proven operating instructions instead of one-off prompts.
162
+ **Agentic Awesome Skills** (Release 14.2.0) is a large, installable skill library for AI coding assistants. It packages 1,946+ reusable `SKILL.md` playbooks, specialized plugins, bundles, workflows, generated catalogs, and a CLI installer so Claude Code, Codex CLI, Autohand Code, Cursor, Gemini CLI, Antigravity, and similar tools can reuse proven operating instructions instead of one-off prompts.
163
163
 
164
164
  ### How do I install it?
165
165
 
@@ -224,7 +224,7 @@ If Antigravity starts hitting context limits with too many active skills, the ac
224
224
 
225
225
  If you use OpenCode or another `.agents/skills` host, prefer a reduced install up front instead of copying the full library into a context-sensitive runtime. The installer now supports `--risk`, `--category`, and `--tags` so you can keep the installed set narrow.
226
226
 
227
- ## Browse 1,936+ Skills
227
+ ## Browse 1,946+ Skills
228
228
 
229
229
  Use the root repo as a landing page, then jump into the deeper surface that matches your intent.
230
230
 
@@ -329,6 +329,7 @@ Key source families include:
329
329
 
330
330
  ### Official Sources
331
331
 
332
+ - **[aislon/uizze-mcp](https://github.com/aislon/uizze-mcp)**: Official source for the `uizze-ui-research` skill and UIZZE MCP-assisted UI research workflows.
332
333
  - **[anthropics/skills](https://github.com/anthropics/skills)**: Official Anthropic skills repository - Document manipulation (DOCX, PDF, PPTX, XLSX), Brand Guidelines, Internal Communications.
333
334
  - **[anthropics/claude-cookbooks](https://github.com/anthropics/claude-cookbooks)**: Official notebooks and recipes for building with Claude.
334
335
  - **[remotion-dev/skills](https://github.com/remotion-dev/skills)**: Official Remotion skills - Video creation in React with 28 modular rules.
@@ -363,6 +364,9 @@ Key source families include:
363
364
 
364
365
  ### Community Contributors
365
366
 
367
+ - **[supernovae-st/nika-agents](https://github.com/supernovae-st/nika-agents)**: Official upstream source for the `nika` skill and its deterministic, budget-aware AI workflow runner (MIT skill content; AGPL-3.0 engine).
368
+ - **[atdy/maoxuan-product-agent](https://github.com/atdy/maoxuan-product-agent)**: Source for the `product-decision-agent` skill - Chinese-first product judgment across prioritization, growth, operations, data, delivery, and cross-functional collaboration, with 36 tested scenarios (MIT).
369
+ - **[hafiz-actyte/idea-autopsy](https://github.com/hafiz-actyte/idea-autopsy)**: Source for the `idea-autopsy` skill - business-idea validation that hunts the one sentence that kills an idea before you build: kill-list check, five hard filters, free-AI one-prompt test, and live ad-market verification (MIT).
366
370
  - **[cruisekkk/trading-ledger](https://github.com/cruisekkk/trading-ledger)**: Source for the `trading-ledger` skill - decision-quality trade journaling that captures entry thesis, plan, and emotion into the user's own Notion database (MIT).
367
371
  - **[cruisekkk/time-ledger](https://github.com/cruisekkk/time-ledger)**: Source for the `time-ledger` skill - natural-language time tracking parsed into the user's own Notion database with ask-instead-of-guessing reconciliation (MIT).
368
372
  - **[mattpocock/skills](https://github.com/mattpocock/skills)**: Source for 17 Matt Pocock workflow skills - codebase design, TDD, bug diagnosis, triage, PRDs, issues, prototyping, handoff, teaching, and skill-writing guidance (MIT).
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "agentic-awesome-skills",
3
- "version": "14.0.0",
4
- "description": "1,936+ agentic skills for Claude Code, Gemini CLI, Cursor, Antigravity & more. Installer CLI.",
3
+ "version": "14.2.0",
4
+ "description": "1,946+ agentic skills for Claude Code, Gemini CLI, Cursor, Antigravity & more. Installer CLI.",
5
5
  "license": "MIT",
6
6
  "scripts": {
7
7
  "validate": "node tools/scripts/run-python.js tools/scripts/validate_skills.py",
8
+ "validate:glossary": "bash scripts/validate-glossary.sh",
8
9
  "validate:strict": "node tools/scripts/run-python.js tools/scripts/validate_skills.py --strict",
9
10
  "audit:skills": "node tools/scripts/run-python.js tools/scripts/audit_skills.py",
10
11
  "audit:skills:strict": "node tools/scripts/run-python.js tools/scripts/audit_skills.py --strict",
@@ -33,14 +33,15 @@ function resolveDir(p) {
33
33
  return path.resolve(root, ...sanitizedSegments);
34
34
  }
35
35
 
36
- function parseArgs() {
37
- const a = process.argv.slice(2);
36
+ function parseArgs(argv = process.argv.slice(2)) {
37
+ const a = argv;
38
38
  let pathArg = null;
39
39
  let versionArg = null;
40
40
  let tagArg = null;
41
41
  let riskArg = null;
42
42
  let categoryArg = null;
43
43
  let tagsArg = null;
44
+ let versionInfo = false;
44
45
  let cursor = false,
45
46
  claude = false,
46
47
  gemini = false,
@@ -51,28 +52,22 @@ function parseArgs() {
51
52
 
52
53
  for (let i = 0; i < a.length; i++) {
53
54
  if (a[i] === "--help" || a[i] === "-h") return { help: true };
54
- if (a[i] === "--path" && a[i + 1]) {
55
- pathArg = a[++i];
55
+ if (a[i] === "--version") {
56
+ versionInfo = true;
56
57
  continue;
57
58
  }
58
- if (a[i] === "--version" && a[i + 1]) {
59
- versionArg = a[++i];
60
- continue;
61
- }
62
- if (a[i] === "--tag" && a[i + 1]) {
63
- tagArg = a[++i];
64
- continue;
65
- }
66
- if (a[i] === "--risk" && a[i + 1]) {
67
- riskArg = a[++i];
68
- continue;
69
- }
70
- if (a[i] === "--category" && a[i + 1]) {
71
- categoryArg = a[++i];
72
- continue;
73
- }
74
- if (a[i] === "--tags" && a[i + 1]) {
75
- tagsArg = a[++i];
59
+ if (["--path", "--release", "--tag", "--risk", "--category", "--tags"].includes(a[i])) {
60
+ const value = a[i + 1];
61
+ if (!value || value.startsWith("--")) {
62
+ throw new Error(`Option ${a[i]} requires a value.`);
63
+ }
64
+ if (a[i] === "--path") pathArg = value;
65
+ if (a[i] === "--release") versionArg = value;
66
+ if (a[i] === "--tag") tagArg = value;
67
+ if (a[i] === "--risk") riskArg = value;
68
+ if (a[i] === "--category") categoryArg = value;
69
+ if (a[i] === "--tags") tagsArg = value;
70
+ i += 1;
76
71
  continue;
77
72
  }
78
73
  if (a[i] === "--cursor") {
@@ -104,6 +99,7 @@ function parseArgs() {
104
99
  continue;
105
100
  }
106
101
  if (a[i] === "install") continue;
102
+ throw new Error(`Unknown option or command: ${a[i]}`);
107
103
  }
108
104
 
109
105
  return {
@@ -113,6 +109,7 @@ function parseArgs() {
113
109
  riskArg,
114
110
  categoryArg,
115
111
  tagsArg,
112
+ versionInfo,
116
113
  cursor,
117
114
  claude,
118
115
  gemini,
@@ -182,7 +179,8 @@ Options:
182
179
  --risk <csv> Install only skills matching these risk labels
183
180
  --category <csv> Install only skills matching these categories
184
181
  --tags <csv> Install only skills matching these tags
185
- --version <ver> Clone tag v<ver> (e.g. 4.6.0 -> v4.6.0)
182
+ --version Print the installer version
183
+ --release <ver> Clone tag v<ver> (e.g. 4.6.0 -> v4.6.0)
186
184
  --tag <tag> Clone this tag or branch (e.g. v4.6.0, main)
187
185
 
188
186
  Examples:
@@ -193,7 +191,7 @@ Examples:
193
191
  npx agentic-awesome-skills --agy
194
192
  npx agentic-awesome-skills --path .agents/skills --category development,backend --risk safe,none
195
193
  npx agentic-awesome-skills --path .agents/skills --tags debugging,typescript-legacy-
196
- npx agentic-awesome-skills --version 4.6.0
194
+ npx agentic-awesome-skills --release 4.6.0
197
195
  npx agentic-awesome-skills --path ./my-skills
198
196
  npx agentic-awesome-skills --claude --codex Install to multiple targets
199
197
  `);
@@ -312,7 +310,14 @@ function assertSafeDestinationPath(dest, destRoot) {
312
310
  }
313
311
  }
314
312
 
315
- function copyRecursiveSync(src, dest, rootDir = src, skipGit = true, destRoot = dest) {
313
+ function copyRecursiveSync(
314
+ src,
315
+ dest,
316
+ rootDir = src,
317
+ skipGit = true,
318
+ destRoot = dest,
319
+ selectedSkillEntries = null,
320
+ ) {
316
321
  const stats = fs.lstatSync(src);
317
322
  const resolvedSource = stats.isSymbolicLink()
318
323
  ? resolveSafeRealPath(rootDir, src)
@@ -324,6 +329,17 @@ function copyRecursiveSync(src, dest, rootDir = src, skipGit = true, destRoot =
324
329
  }
325
330
 
326
331
  const resolvedStats = fs.statSync(resolvedSource);
332
+ const relativeSource = path.relative(rootDir, resolvedSource);
333
+ if (
334
+ selectedSkillEntries &&
335
+ relativeSource &&
336
+ relativeSource !== "." &&
337
+ resolvedStats.isDirectory() &&
338
+ fs.existsSync(path.join(resolvedSource, "SKILL.md")) &&
339
+ !selectedSkillEntries.has(path.normalize(relativeSource))
340
+ ) {
341
+ return;
342
+ }
327
343
  if (fs.existsSync(dest) && fs.lstatSync(dest).isSymbolicLink()) {
328
344
  throw new Error(`Skipping unsafe destination symlink: ${dest}`);
329
345
  }
@@ -344,6 +360,7 @@ function copyRecursiveSync(src, dest, rootDir = src, skipGit = true, destRoot =
344
360
  rootDir,
345
361
  skipGit,
346
362
  destRoot,
363
+ selectedSkillEntries,
347
364
  );
348
365
  }
349
366
  } finally {
@@ -354,6 +371,56 @@ function copyRecursiveSync(src, dest, rootDir = src, skipGit = true, destRoot =
354
371
  }
355
372
  }
356
373
 
374
+ function replaceManagedEntry(
375
+ src,
376
+ dest,
377
+ rootDir,
378
+ skipGit,
379
+ targetRoot,
380
+ selectedSkillEntries = null,
381
+ ) {
382
+ if (!fs.existsSync(targetRoot)) {
383
+ fs.mkdirSync(targetRoot, { recursive: true });
384
+ }
385
+ assertSafeDestinationPath(dest, targetRoot);
386
+ const stageRoot = fs.mkdtempSync(path.join(targetRoot, ".antigravity-stage-"));
387
+ const stagedEntry = path.join(stageRoot, "entry");
388
+ const backupEntry = path.join(stageRoot, "previous");
389
+ let movedPreviousEntry = false;
390
+
391
+ try {
392
+ copyRecursiveSync(
393
+ src,
394
+ stagedEntry,
395
+ rootDir,
396
+ skipGit,
397
+ stageRoot,
398
+ selectedSkillEntries,
399
+ );
400
+ if (!fs.existsSync(stagedEntry)) {
401
+ throw new Error(`Unable to stage managed install entry: ${src}`);
402
+ }
403
+
404
+ if (fs.existsSync(dest)) {
405
+ assertSafeDestinationPath(dest, targetRoot);
406
+ fs.renameSync(dest, backupEntry);
407
+ movedPreviousEntry = true;
408
+ }
409
+ fs.mkdirSync(path.dirname(dest), { recursive: true });
410
+ fs.renameSync(stagedEntry, dest);
411
+ if (movedPreviousEntry) {
412
+ fs.rmSync(backupEntry, { recursive: true, force: true });
413
+ }
414
+ } catch (error) {
415
+ if (movedPreviousEntry && fs.existsSync(backupEntry) && !fs.existsSync(dest)) {
416
+ fs.renameSync(backupEntry, dest);
417
+ }
418
+ throw error;
419
+ } finally {
420
+ fs.rmSync(stageRoot, { recursive: true, force: true });
421
+ }
422
+ }
423
+
357
424
  /** Copy contents of repo's skills/ into target so each skill is target/skill-name/ (for Claude Code etc.). */
358
425
  function getInstallEntries(tempDir, selectors = buildInstallSelectors({})) {
359
426
  const repoSkills = path.join(tempDir, "skills");
@@ -381,18 +448,22 @@ function getInstallEntries(tempDir, selectors = buildInstallSelectors({})) {
381
448
 
382
449
  function installSkillsIntoTarget(tempDir, target, installEntries) {
383
450
  const repoSkills = path.join(tempDir, "skills");
451
+ const selectedSkillEntries = new Set(
452
+ installEntries
453
+ .filter((entry) => entry !== "docs")
454
+ .map(normalizeSourceEntry),
455
+ );
384
456
  installEntries.forEach((name) => {
385
457
  const destName = normalizeInstallEntry(name);
386
458
  if (destName === "docs") {
387
459
  const repoDocs = path.join(tempDir, "docs");
388
460
  const docsDest = path.join(target, "docs");
389
- if (!fs.existsSync(docsDest)) fs.mkdirSync(docsDest, { recursive: true });
390
- copyRecursiveSync(repoDocs, docsDest, repoDocs, true, target);
461
+ replaceManagedEntry(repoDocs, docsDest, repoDocs, true, target);
391
462
  return;
392
463
  }
393
464
  const src = path.join(repoSkills, normalizeSourceEntry(name));
394
465
  const dest = path.join(target, destName);
395
- copyRecursiveSync(src, dest, repoSkills, true, target);
466
+ replaceManagedEntry(src, dest, repoSkills, true, target, selectedSkillEntries);
396
467
  });
397
468
  }
398
469
 
@@ -630,8 +701,8 @@ function installForTarget(tempDir, target, selectors = buildInstallSelectors({})
630
701
  const installEntries = getInstallEntries(tempDir, selectors);
631
702
  const managedEntries = getManagedEntries(installEntries, target);
632
703
  const previousEntries = readInstallManifest(target.path);
633
- pruneRemovedEntries(target.path, previousEntries, managedEntries);
634
704
  installSkillsIntoTarget(tempDir, target.path, installEntries);
705
+ pruneRemovedEntries(target.path, previousEntries, managedEntries);
635
706
  writeInstallManifest(target.path, managedEntries);
636
707
  console.log(` ✓ Installed to ${target.path}`);
637
708
  }
@@ -679,7 +750,14 @@ function getPostInstallMessages(targets, selectors = buildInstallSelectors({}))
679
750
  }
680
751
 
681
752
  function main() {
682
- const opts = parseArgs();
753
+ let opts;
754
+ try {
755
+ opts = parseArgs();
756
+ } catch (error) {
757
+ console.error(`Error: ${error.message}`);
758
+ process.exitCode = 1;
759
+ return;
760
+ }
683
761
  const selectors = buildInstallSelectors(opts);
684
762
  const ref = resolveInstallRef(opts);
685
763
 
@@ -688,8 +766,13 @@ function main() {
688
766
  return;
689
767
  }
690
768
 
769
+ if (opts.versionInfo) {
770
+ console.log(packageMetadata.version);
771
+ return;
772
+ }
773
+
691
774
  const targets = getTargets(opts);
692
- if (!targets.length || !HOME) {
775
+ if (!targets.length || (!HOME && !opts.pathArg)) {
693
776
  console.error(
694
777
  "Could not resolve home directory. Use --path <absolute-path>.",
695
778
  );
@@ -735,6 +818,7 @@ if (require.main === module) {
735
818
 
736
819
  module.exports = {
737
820
  copyRecursiveSync,
821
+ replaceManagedEntry,
738
822
  getPostInstallMessages,
739
823
  buildCloneArgs,
740
824
  buildInstallSelectors,
@@ -748,6 +832,7 @@ module.exports = {
748
832
  matchesInstallSelectors,
749
833
  normalizeInstallEntry,
750
834
  parseSelectorArg,
835
+ parseArgs,
751
836
  pruneRemovedEntries,
752
837
  readInstallManifest,
753
838
  resolveInstallRef,
@@ -158,6 +158,11 @@ function readSkill(skillDir, skillId) {
158
158
  tags = tags.filter(Boolean);
159
159
  const category = typeof data.category === 'string' ? data.category.trim() : '';
160
160
  const risk = typeof data.risk === 'string' ? data.risk.trim() : '';
161
+ const source = typeof data.source === 'string' ? data.source.trim() : '';
162
+ const sourceType = typeof data.source_type === 'string' ? data.source_type.trim() : '';
163
+ const sourceRepo = typeof data.source_repo === 'string' ? data.source_repo.trim() : '';
164
+ const license = typeof data.license === 'string' ? data.license.trim() : '';
165
+ const licenseSource = typeof data.license_source === 'string' ? data.license_source.trim() : '';
161
166
 
162
167
  return {
163
168
  id: skillId,
@@ -165,6 +170,11 @@ function readSkill(skillDir, skillId) {
165
170
  description,
166
171
  category,
167
172
  risk,
173
+ source,
174
+ sourceType,
175
+ sourceRepo,
176
+ license,
177
+ licenseSource,
168
178
  tags,
169
179
  path: skillPath,
170
180
  content,