feat: add npx installer CLI
- Add package.json with bin for antigravity-awesome-skills - Add bin/install.js: clone to ~/.agent/skills (default), --cursor/--claude/--gemini/--path - Git pull if dir exists; core.symlinks=true on Windows - Update README and GETTING_STARTED with npx instructions
This commit is contained in:
35
README.md
35
README.md
@@ -54,8 +54,12 @@ AI Agents (like Claude Code, Cursor, or Gemini) are smart, but they lack **speci
|
|||||||
|
|
||||||
Don't install 560+ skills manually. Use our **Starter Packs**:
|
Don't install 560+ skills manually. Use our **Starter Packs**:
|
||||||
|
|
||||||
1. **Clone the repo**:
|
1. **Install** (pick one):
|
||||||
```bash
|
```bash
|
||||||
|
# Easiest: npx installer (clones to ~/.agent/skills by default)
|
||||||
|
npx antigravity-awesome-skills
|
||||||
|
|
||||||
|
# Or clone manually
|
||||||
git clone https://github.com/sickn33/antigravity-awesome-skills.git .agent/skills
|
git clone https://github.com/sickn33/antigravity-awesome-skills.git .agent/skills
|
||||||
```
|
```
|
||||||
2. **Pick your persona** (See [docs/BUNDLES.md](docs/BUNDLES.md)):
|
2. **Pick your persona** (See [docs/BUNDLES.md](docs/BUNDLES.md)):
|
||||||
@@ -91,7 +95,7 @@ These skills follow the universal **SKILL.md** format and work with any AI codin
|
|||||||
|
|
||||||
> [!WARNING]
|
> [!WARNING]
|
||||||
> **Windows Users**: This repository uses **symlinks** for official skills.
|
> **Windows Users**: This repository uses **symlinks** for official skills.
|
||||||
> You must enable Developer Mode or run Git as Administrator:
|
> The **npx** installer sets `core.symlinks=true` automatically. For **git clone**, enable Developer Mode or run Git as Administrator:
|
||||||
> `git clone -c core.symlinks=true https://github.com/...`
|
> `git clone -c core.symlinks=true https://github.com/...`
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -128,10 +132,33 @@ We have moved the full skill registry to a dedicated catalog to keep this README
|
|||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
To use these skills with **Claude Code**, **Gemini CLI**, **Codex CLI**, **Cursor**, **Antigravity**, or **OpenCode**, clone this repository into your agent's skills directory:
|
To use these skills with **Claude Code**, **Gemini CLI**, **Codex CLI**, **Cursor**, **Antigravity**, or **OpenCode**:
|
||||||
|
|
||||||
|
### Option A: npx (recommended)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Universal installation (works with most tools)
|
# Default: ~/.agent/skills (universal)
|
||||||
|
npx antigravity-awesome-skills
|
||||||
|
|
||||||
|
# Cursor
|
||||||
|
npx antigravity-awesome-skills --cursor
|
||||||
|
|
||||||
|
# Claude Code
|
||||||
|
npx antigravity-awesome-skills --claude
|
||||||
|
|
||||||
|
# Gemini CLI
|
||||||
|
npx antigravity-awesome-skills --gemini
|
||||||
|
|
||||||
|
# Custom path
|
||||||
|
npx antigravity-awesome-skills --path ./my-skills
|
||||||
|
```
|
||||||
|
|
||||||
|
Run `npx antigravity-awesome-skills --help` for all options. If the directory already exists, the installer runs `git pull` to update.
|
||||||
|
|
||||||
|
### Option B: git clone
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Universal (works with most tools)
|
||||||
git clone https://github.com/sickn33/antigravity-awesome-skills.git .agent/skills
|
git clone https://github.com/sickn33/antigravity-awesome-skills.git .agent/skills
|
||||||
|
|
||||||
# Claude Code specific
|
# Claude Code specific
|
||||||
|
|||||||
113
bin/install.js
Executable file
113
bin/install.js
Executable file
@@ -0,0 +1,113 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
const { spawnSync } = require('child_process');
|
||||||
|
const path = require('path');
|
||||||
|
const fs = require('fs');
|
||||||
|
|
||||||
|
const REPO = 'https://github.com/sickn33/antigravity-awesome-skills.git';
|
||||||
|
const HOME = process.env.HOME || process.env.USERPROFILE || '';
|
||||||
|
|
||||||
|
function resolveDir(p) {
|
||||||
|
if (!p) return null;
|
||||||
|
const s = p.replace(/^~($|\/)/, HOME + '$1');
|
||||||
|
return path.resolve(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
function parseArgs() {
|
||||||
|
const a = process.argv.slice(2);
|
||||||
|
let pathArg = null;
|
||||||
|
let cursor = false, claude = false, gemini = false;
|
||||||
|
|
||||||
|
for (let i = 0; i < a.length; i++) {
|
||||||
|
if (a[i] === '--help' || a[i] === '-h') return { help: true };
|
||||||
|
if (a[i] === '--path' && a[i + 1]) { pathArg = a[++i]; continue; }
|
||||||
|
if (a[i] === '--cursor') { cursor = true; continue; }
|
||||||
|
if (a[i] === '--claude') { claude = true; continue; }
|
||||||
|
if (a[i] === '--gemini') { gemini = true; continue; }
|
||||||
|
if (a[i] === 'install') continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
return { pathArg, cursor, claude, gemini };
|
||||||
|
}
|
||||||
|
|
||||||
|
function defaultDir(opts) {
|
||||||
|
if (opts.pathArg) return resolveDir(opts.pathArg);
|
||||||
|
if (opts.cursor) return path.join(HOME, '.cursor', 'skills');
|
||||||
|
if (opts.claude) return path.join(HOME, '.claude', 'skills');
|
||||||
|
if (opts.gemini) return path.join(HOME, '.gemini', 'skills');
|
||||||
|
return path.join(HOME, '.agent', 'skills');
|
||||||
|
}
|
||||||
|
|
||||||
|
function printHelp() {
|
||||||
|
console.log(`
|
||||||
|
antigravity-awesome-skills — installer
|
||||||
|
|
||||||
|
npx antigravity-awesome-skills [install] [options]
|
||||||
|
|
||||||
|
Clones the skills repo into your agent's skills directory.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
--cursor Install to ~/.cursor/skills (Cursor)
|
||||||
|
--claude Install to ~/.claude/skills (Claude Code)
|
||||||
|
--gemini Install to ~/.gemini/skills (Gemini CLI)
|
||||||
|
--path <dir> Install to <dir> (default: ~/.agent/skills)
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
npx antigravity-awesome-skills
|
||||||
|
npx antigravity-awesome-skills --cursor
|
||||||
|
npx antigravity-awesome-skills --path ./my-skills
|
||||||
|
`);
|
||||||
|
}
|
||||||
|
|
||||||
|
function run(cmd, args, opts = {}) {
|
||||||
|
const r = spawnSync(cmd, args, { stdio: 'inherit', ...opts });
|
||||||
|
if (r.status !== 0) process.exit(r.status == null ? 1 : r.status);
|
||||||
|
}
|
||||||
|
|
||||||
|
function main() {
|
||||||
|
const opts = parseArgs();
|
||||||
|
if (opts.help) {
|
||||||
|
printHelp();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const target = defaultDir(opts);
|
||||||
|
if (!target || !HOME) {
|
||||||
|
console.error('Could not resolve home directory. Use --path <absolute-path>.');
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fs.existsSync(target)) {
|
||||||
|
const gitDir = path.join(target, '.git');
|
||||||
|
if (fs.existsSync(gitDir)) {
|
||||||
|
console.log('Directory already exists and is a git repo. Updating…');
|
||||||
|
process.chdir(target);
|
||||||
|
run('git', ['pull']);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
console.error(`Directory exists and is not a git repo: ${target}`);
|
||||||
|
console.error('Remove it or use --path to choose another location.');
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
const parent = path.dirname(target);
|
||||||
|
if (!fs.existsSync(parent)) {
|
||||||
|
try {
|
||||||
|
fs.mkdirSync(parent, { recursive: true });
|
||||||
|
} catch (e) {
|
||||||
|
console.error(`Cannot create parent directory: ${parent}`, e.message);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (process.platform === 'win32') {
|
||||||
|
run('git', ['-c', 'core.symlinks=true', 'clone', REPO, target]);
|
||||||
|
} else {
|
||||||
|
run('git', ['clone', REPO, target]);
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(`\nInstalled to ${target}`);
|
||||||
|
console.log('Pick a bundle in docs/BUNDLES.md and use @skill-name in your AI assistant.');
|
||||||
|
}
|
||||||
|
|
||||||
|
main();
|
||||||
@@ -20,10 +20,18 @@ We have curated **Starter Packs** to get you running immediately.
|
|||||||
|
|
||||||
### 1. Install the Repo
|
### 1. Install the Repo
|
||||||
|
|
||||||
Copy the skills to your agent's folder:
|
**Option A — npx (easiest):**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Universal Installation (works for most agents)
|
npx antigravity-awesome-skills
|
||||||
|
```
|
||||||
|
|
||||||
|
This clones to `~/.agent/skills` by default. Use `--cursor`, `--claude`, or `--gemini` to install for a specific tool, or `--path <dir>` for a custom location. Run `npx antigravity-awesome-skills --help` for details.
|
||||||
|
|
||||||
|
**Option B — git clone:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Universal (works for most agents)
|
||||||
git clone https://github.com/sickn33/antigravity-awesome-skills.git .agent/skills
|
git clone https://github.com/sickn33/antigravity-awesome-skills.git .agent/skills
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
24
package.json
Normal file
24
package.json
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"name": "antigravity-awesome-skills",
|
||||||
|
"version": "4.0.0",
|
||||||
|
"description": "560+ agentic skills for Claude Code, Gemini CLI, Cursor, Antigravity & more. Installer CLI.",
|
||||||
|
"license": "MIT",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/sickn33/antigravity-awesome-skills.git"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"antigravity-awesome-skills": "./bin/install.js"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"bin"
|
||||||
|
],
|
||||||
|
"keywords": [
|
||||||
|
"claude-code",
|
||||||
|
"cursor",
|
||||||
|
"gemini-cli",
|
||||||
|
"antigravity",
|
||||||
|
"agentic-skills",
|
||||||
|
"ai-coding"
|
||||||
|
]
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user