ai-agent-skills 1.6.0 → 1.6.2
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 +19 -19
- package/cli.js +23 -18
- package/package.json +1 -1
- package/skills/ask-questions-if-underspecified/SKILL.md +81 -0
- package/skills.json +17 -3
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
</p>
|
|
11
11
|
|
|
12
12
|
<p align="center">
|
|
13
|
-
<img src="https://img.shields.io/badge/skills-
|
|
13
|
+
<img src="https://img.shields.io/badge/skills-40-blue?style=flat-square" alt="Skills" />
|
|
14
14
|
<img src="https://img.shields.io/badge/agents-10+-green?style=flat-square" alt="Compatible Agents" />
|
|
15
15
|
<img src="https://img.shields.io/badge/license-MIT-brightgreen?style=flat-square" alt="License" />
|
|
16
16
|
<img src="https://img.shields.io/npm/v/ai-agent-skills?style=flat-square&color=red" alt="npm" />
|
|
@@ -29,16 +29,14 @@
|
|
|
29
29
|
## Quick Start
|
|
30
30
|
|
|
31
31
|
```bash
|
|
32
|
-
#
|
|
33
|
-
npx ai-agent-skills browse
|
|
34
|
-
|
|
35
|
-
# Install from our curated catalog
|
|
32
|
+
# Install a skill to ALL agents with one command
|
|
36
33
|
npx ai-agent-skills install frontend-design
|
|
37
34
|
|
|
38
|
-
# Install
|
|
35
|
+
# Install to a specific agent only
|
|
39
36
|
npx ai-agent-skills install frontend-design --agent cursor
|
|
40
|
-
|
|
41
|
-
|
|
37
|
+
|
|
38
|
+
# Browse skills interactively
|
|
39
|
+
npx ai-agent-skills browse
|
|
42
40
|
|
|
43
41
|
# Install from any GitHub repo
|
|
44
42
|
npx ai-agent-skills install anthropics/skills
|
|
@@ -48,7 +46,7 @@ npx ai-agent-skills install anthropics/skills/pdf # specific skill
|
|
|
48
46
|
npx ai-agent-skills install ./my-custom-skill
|
|
49
47
|
```
|
|
50
48
|
|
|
51
|
-
|
|
49
|
+
**One command. Every agent.** By default, skills install to Claude Code, Cursor, Codex, Amp, VS Code, Copilot, Goose, Letta, and OpenCode simultaneously.
|
|
52
50
|
|
|
53
51
|
## Why This Exists
|
|
54
52
|
|
|
@@ -58,7 +56,7 @@ This repo curates the best in one place. Quality over quantity. All skills follo
|
|
|
58
56
|
|
|
59
57
|
## Compatible Agents
|
|
60
58
|
|
|
61
|
-
Works with **Claude Code**, **Cursor**, **Amp**, **VS Code**, **GitHub Copilot**, **Goose**, **Letta**,
|
|
59
|
+
Works with **Claude Code**, **Cursor**, **Codex**, **Amp**, **VS Code**, **GitHub Copilot**, **Goose**, **Letta**, and **OpenCode**.
|
|
62
60
|
|
|
63
61
|
## Available Skills
|
|
64
62
|
|
|
@@ -109,6 +107,7 @@ Works with **Claude Code**, **Cursor**, **Amp**, **VS Code**, **GitHub Copilot**
|
|
|
109
107
|
### Productivity
|
|
110
108
|
| Skill | Description |
|
|
111
109
|
|-------|-------------|
|
|
110
|
+
| `ask-questions-if-underspecified` | Clarify requirements before implementing |
|
|
112
111
|
| `doc-coauthoring` | Co-author docs, proposals, specs with structured workflow |
|
|
113
112
|
| `job-application` | Cover letters and applications using your CV |
|
|
114
113
|
| `qa-regression` | Automated regression testing with Playwright |
|
|
@@ -132,12 +131,11 @@ npx ai-agent-skills list
|
|
|
132
131
|
npx ai-agent-skills list --category development
|
|
133
132
|
npx ai-agent-skills list --installed --agent cursor
|
|
134
133
|
|
|
135
|
-
# Install
|
|
136
|
-
npx ai-agent-skills install <name> #
|
|
137
|
-
npx ai-agent-skills install <
|
|
138
|
-
npx ai-agent-skills install <owner/repo
|
|
139
|
-
npx ai-agent-skills install ./path # from local path
|
|
140
|
-
npx ai-agent-skills install <name> --agent cursor # for specific agent
|
|
134
|
+
# Install (defaults to ALL agents)
|
|
135
|
+
npx ai-agent-skills install <name> # installs to ALL agents
|
|
136
|
+
npx ai-agent-skills install <name> --agent cursor # install to specific agent only
|
|
137
|
+
npx ai-agent-skills install <owner/repo> # from GitHub (all agents)
|
|
138
|
+
npx ai-agent-skills install ./path # from local path (all agents)
|
|
141
139
|
npx ai-agent-skills install <name> --dry-run # preview only
|
|
142
140
|
|
|
143
141
|
# Manage installed skills
|
|
@@ -155,15 +153,17 @@ npx ai-agent-skills config --default-agent cursor
|
|
|
155
153
|
|
|
156
154
|
### Supported Agents
|
|
157
155
|
|
|
156
|
+
By default, `install` targets **all agents**. Use `--agent <name>` to install to a specific one.
|
|
157
|
+
|
|
158
158
|
| Agent | Flag | Install Location |
|
|
159
159
|
|-------|------|------------------|
|
|
160
|
-
| Claude Code | `--agent claude`
|
|
160
|
+
| Claude Code | `--agent claude` | `~/.claude/skills/` |
|
|
161
161
|
| Cursor | `--agent cursor` | `.cursor/skills/` |
|
|
162
|
+
| Codex | `--agent codex` | `~/.codex/skills/` |
|
|
162
163
|
| Amp | `--agent amp` | `~/.amp/skills/` |
|
|
163
164
|
| VS Code / Copilot | `--agent vscode` | `.github/skills/` |
|
|
164
165
|
| Goose | `--agent goose` | `~/.config/goose/skills/` |
|
|
165
|
-
| OpenCode | `--agent opencode` | `~/.opencode/
|
|
166
|
-
| Codex | `--agent codex` | `~/.codex/skills/` |
|
|
166
|
+
| OpenCode | `--agent opencode` | `~/.opencode/skill/` |
|
|
167
167
|
| Letta | `--agent letta` | `~/.letta/skills/` |
|
|
168
168
|
| Portable | `--agent project` | `.skills/` (works with any agent) |
|
|
169
169
|
|
package/cli.js
CHANGED
|
@@ -151,6 +151,7 @@ function parseArgs(args) {
|
|
|
151
151
|
param: null,
|
|
152
152
|
agents: [], // New: array of agents
|
|
153
153
|
allAgents: false, // New: --all-agents flag
|
|
154
|
+
explicitAgent: false, // Track if user explicitly specified agent(s)
|
|
154
155
|
installed: false,
|
|
155
156
|
all: false,
|
|
156
157
|
dryRun: false,
|
|
@@ -163,6 +164,7 @@ function parseArgs(args) {
|
|
|
163
164
|
|
|
164
165
|
// --agents claude,cursor,codex (multiple agents)
|
|
165
166
|
if (arg === '--agents') {
|
|
167
|
+
result.explicitAgent = true;
|
|
166
168
|
const value = args[i + 1] || '';
|
|
167
169
|
value.split(',').forEach(a => {
|
|
168
170
|
const agent = a.trim();
|
|
@@ -174,6 +176,7 @@ function parseArgs(args) {
|
|
|
174
176
|
}
|
|
175
177
|
// --agent cursor (single agent, backward compatible)
|
|
176
178
|
else if (arg === '--agent' || arg === '-a') {
|
|
179
|
+
result.explicitAgent = true;
|
|
177
180
|
let agentValue = args[i + 1] || defaultAgent;
|
|
178
181
|
agentValue = agentValue.replace(/^-+/, '');
|
|
179
182
|
if (validAgents.includes(agentValue) && !result.agents.includes(agentValue)) {
|
|
@@ -183,6 +186,7 @@ function parseArgs(args) {
|
|
|
183
186
|
}
|
|
184
187
|
// --all-agents (install to all known agents)
|
|
185
188
|
else if (arg === '--all-agents') {
|
|
189
|
+
result.explicitAgent = true;
|
|
186
190
|
result.allAgents = true;
|
|
187
191
|
}
|
|
188
192
|
else if (arg === '--installed' || arg === '-i') {
|
|
@@ -205,6 +209,7 @@ function parseArgs(args) {
|
|
|
205
209
|
else if (arg.startsWith('--')) {
|
|
206
210
|
const potentialAgent = arg.replace(/^--/, '');
|
|
207
211
|
if (validAgents.includes(potentialAgent)) {
|
|
212
|
+
result.explicitAgent = true;
|
|
208
213
|
if (!result.agents.includes(potentialAgent)) {
|
|
209
214
|
result.agents.push(potentialAgent);
|
|
210
215
|
}
|
|
@@ -1055,7 +1060,8 @@ ${colors.bold}Commands:${colors.reset}
|
|
|
1055
1060
|
${colors.green}list${colors.reset} List all available skills
|
|
1056
1061
|
${colors.green}list --installed${colors.reset} List installed skills for an agent
|
|
1057
1062
|
${colors.green}list --category <cat>${colors.reset} Filter by category
|
|
1058
|
-
${colors.green}install <name>${colors.reset} Install
|
|
1063
|
+
${colors.green}install <name>${colors.reset} Install to ALL agents (default)
|
|
1064
|
+
${colors.green}install <name> --agent cursor${colors.reset} Install to specific agent only
|
|
1059
1065
|
${colors.green}install <owner/repo>${colors.reset} Install from GitHub repository
|
|
1060
1066
|
${colors.green}install ./path${colors.reset} Install from local path
|
|
1061
1067
|
${colors.green}install <name> --dry-run${colors.reset} Preview installation without changes
|
|
@@ -1069,39 +1075,36 @@ ${colors.bold}Commands:${colors.reset}
|
|
|
1069
1075
|
${colors.green}help${colors.reset} Show this help
|
|
1070
1076
|
|
|
1071
1077
|
${colors.bold}Options:${colors.reset}
|
|
1072
|
-
${colors.cyan}--agent <name>${colors.reset} Target
|
|
1078
|
+
${colors.cyan}--agent <name>${colors.reset} Target specific agent (install defaults to ALL)
|
|
1073
1079
|
${colors.cyan}--agents <list>${colors.reset} Target multiple agents (comma-separated)
|
|
1074
|
-
${colors.cyan}--all-agents${colors.reset} Target ALL known agents at once
|
|
1075
1080
|
${colors.cyan}--installed${colors.reset} Show only installed skills (with list)
|
|
1076
1081
|
${colors.cyan}--dry-run, -n${colors.reset} Preview changes without applying
|
|
1077
1082
|
${colors.cyan}--category <c>${colors.reset} Filter by category
|
|
1078
1083
|
${colors.cyan}--all${colors.reset} Apply to all (with update)
|
|
1079
1084
|
${colors.cyan}--version, -v${colors.reset} Show version number
|
|
1080
1085
|
|
|
1081
|
-
${colors.bold}Agents:${colors.reset}
|
|
1082
|
-
${colors.cyan}claude${colors.reset}
|
|
1083
|
-
${colors.cyan}cursor${colors.reset} .cursor/skills/
|
|
1086
|
+
${colors.bold}Agents:${colors.reset} (install targets ALL by default)
|
|
1087
|
+
${colors.cyan}claude${colors.reset} ~/.claude/skills/
|
|
1088
|
+
${colors.cyan}cursor${colors.reset} .cursor/skills/ (project)
|
|
1089
|
+
${colors.cyan}codex${colors.reset} ~/.codex/skills/
|
|
1084
1090
|
${colors.cyan}amp${colors.reset} ~/.amp/skills/
|
|
1085
|
-
${colors.cyan}vscode${colors.reset} .github/skills/
|
|
1091
|
+
${colors.cyan}vscode${colors.reset} .github/skills/ (project)
|
|
1086
1092
|
${colors.cyan}copilot${colors.reset} .github/skills/ (alias for vscode)
|
|
1087
1093
|
${colors.cyan}goose${colors.reset} ~/.config/goose/skills/
|
|
1088
1094
|
${colors.cyan}opencode${colors.reset} ~/.opencode/skill/
|
|
1089
|
-
${colors.cyan}codex${colors.reset} ~/.codex/skills/
|
|
1090
1095
|
${colors.cyan}letta${colors.reset} ~/.letta/skills/
|
|
1091
|
-
${colors.cyan}project${colors.reset} .skills/
|
|
1096
|
+
${colors.cyan}project${colors.reset} .skills/ (portable)
|
|
1092
1097
|
|
|
1093
1098
|
${colors.bold}Categories:${colors.reset}
|
|
1094
1099
|
development, document, creative, business, productivity
|
|
1095
1100
|
|
|
1096
1101
|
${colors.bold}Examples:${colors.reset}
|
|
1097
1102
|
npx ai-agent-skills browse # Interactive browser
|
|
1098
|
-
npx ai-agent-skills install frontend-design # Install
|
|
1103
|
+
npx ai-agent-skills install frontend-design # Install to ALL agents
|
|
1104
|
+
npx ai-agent-skills install pdf --agent cursor # Install to Cursor only
|
|
1105
|
+
npx ai-agent-skills install pdf --agents claude,cursor # Install to specific agents
|
|
1099
1106
|
npx ai-agent-skills install anthropics/skills # Install from GitHub
|
|
1100
|
-
npx ai-agent-skills install anthropics/skills/pdf # Install specific skill from GitHub
|
|
1101
1107
|
npx ai-agent-skills install ./my-skill # Install from local path
|
|
1102
|
-
npx ai-agent-skills install pdf --agent cursor # Install for Cursor
|
|
1103
|
-
npx ai-agent-skills install pdf --agents claude,cursor # Install for multiple agents
|
|
1104
|
-
npx ai-agent-skills install pdf --all-agents # Install for ALL agents
|
|
1105
1108
|
npx ai-agent-skills install pdf --dry-run # Preview install
|
|
1106
1109
|
npx ai-agent-skills list --category development
|
|
1107
1110
|
npx ai-agent-skills search testing
|
|
@@ -1207,7 +1210,8 @@ function setConfig(key, value) {
|
|
|
1207
1210
|
// ============ MAIN CLI ============
|
|
1208
1211
|
|
|
1209
1212
|
const args = process.argv.slice(2);
|
|
1210
|
-
const { command, param, agents, installed, dryRun, category, tags, all } = parseArgs(args);
|
|
1213
|
+
const { command, param, agents, explicitAgent, installed, dryRun, category, tags, all } = parseArgs(args);
|
|
1214
|
+
const ALL_AGENTS = Object.keys(AGENT_PATHS);
|
|
1211
1215
|
|
|
1212
1216
|
// Handle config commands specially
|
|
1213
1217
|
if (command === 'config') {
|
|
@@ -1252,11 +1256,12 @@ switch (command || 'help') {
|
|
|
1252
1256
|
case 'add':
|
|
1253
1257
|
if (!param) {
|
|
1254
1258
|
error('Please specify a skill name, GitHub repo, or local path.');
|
|
1255
|
-
log('Usage: npx ai-agent-skills install <name> [--
|
|
1259
|
+
log('Usage: npx ai-agent-skills install <name> [--agent cursor]');
|
|
1256
1260
|
process.exit(1);
|
|
1257
1261
|
}
|
|
1258
|
-
//
|
|
1259
|
-
|
|
1262
|
+
// Default to ALL agents when no agent explicitly specified
|
|
1263
|
+
const installTargets = explicitAgent ? agents : ALL_AGENTS;
|
|
1264
|
+
for (const agent of installTargets) {
|
|
1260
1265
|
if (isLocalPath(param)) {
|
|
1261
1266
|
installFromLocalPath(param, agent, dryRun);
|
|
1262
1267
|
} else if (isGitHubUrl(param)) {
|
package/package.json
CHANGED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ask-questions-if-underspecified
|
|
3
|
+
description: Clarify requirements before implementing. Do not use automatically, only when invoked explicitly.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Ask Questions If Underspecified
|
|
7
|
+
|
|
8
|
+
## Goal
|
|
9
|
+
|
|
10
|
+
Ask the minimum set of clarifying questions needed to avoid wrong work; do not start implementing until the must-have questions are answered (or the user explicitly approves proceeding with stated assumptions).
|
|
11
|
+
|
|
12
|
+
## Workflow
|
|
13
|
+
|
|
14
|
+
### 1) Decide whether the request is underspecified
|
|
15
|
+
|
|
16
|
+
Treat a request as underspecified if after exploring how to perform the work, some or all of the following are not clear:
|
|
17
|
+
- Define the objective (what should change vs stay the same)
|
|
18
|
+
- Define "done" (acceptance criteria, examples, edge cases)
|
|
19
|
+
- Define scope (which files/components/users are in/out)
|
|
20
|
+
- Define constraints (compatibility, performance, style, deps, time)
|
|
21
|
+
- Identify environment (language/runtime versions, OS, build/test runner)
|
|
22
|
+
- Clarify safety/reversibility (data migration, rollout/rollback, risk)
|
|
23
|
+
|
|
24
|
+
If multiple plausible interpretations exist, assume it is underspecified.
|
|
25
|
+
|
|
26
|
+
### 2) Ask must-have questions first (keep it small)
|
|
27
|
+
|
|
28
|
+
Ask 1-5 questions in the first pass. Prefer questions that eliminate whole branches of work.
|
|
29
|
+
|
|
30
|
+
Make questions easy to answer:
|
|
31
|
+
- Optimize for scannability (short, numbered questions; avoid paragraphs)
|
|
32
|
+
- Offer multiple-choice options when possible
|
|
33
|
+
- Suggest reasonable defaults when appropriate (mark them clearly as the default/recommended choice; bold the recommended choice in the list, or if you present options in a code block, put a bold "Recommended" line immediately above the block and also tag defaults inside the block)
|
|
34
|
+
- Include a fast-path response (e.g., reply `defaults` to accept all recommended/default choices)
|
|
35
|
+
- Include a low-friction "not sure" option when helpful (e.g., "Not sure - use default")
|
|
36
|
+
- Separate "Need to know" from "Nice to know" if that reduces friction
|
|
37
|
+
- Structure options so the user can respond with compact decisions (e.g., `1b 2a 3c`); restate the chosen options in plain language to confirm
|
|
38
|
+
|
|
39
|
+
### 3) Pause before acting
|
|
40
|
+
|
|
41
|
+
Until must-have answers arrive:
|
|
42
|
+
- Do not run commands, edit files, or produce a detailed plan that depends on unknowns
|
|
43
|
+
- Do perform a clearly labeled, low-risk discovery step only if it does not commit you to a direction (e.g., inspect repo structure, read relevant config files)
|
|
44
|
+
|
|
45
|
+
If the user explicitly asks you to proceed without answers:
|
|
46
|
+
- State your assumptions as a short numbered list
|
|
47
|
+
- Ask for confirmation; proceed only after they confirm or correct them
|
|
48
|
+
|
|
49
|
+
### 4) Confirm interpretation, then proceed
|
|
50
|
+
|
|
51
|
+
Once you have answers, restate the requirements in 1-3 sentences (including key constraints and what success looks like), then start work.
|
|
52
|
+
|
|
53
|
+
## Question templates
|
|
54
|
+
|
|
55
|
+
- "Before I start, I need: (1) ..., (2) ..., (3) .... If you don't care about (2), I will assume ...."
|
|
56
|
+
- "Which of these should it be? A) ... B) ... C) ... (pick one)"
|
|
57
|
+
- "What would you consider 'done'? For example: ..."
|
|
58
|
+
- "Any constraints I must follow (versions, performance, style, deps)? If none, I will target the existing project defaults."
|
|
59
|
+
- Use numbered questions with lettered options and a clear reply format
|
|
60
|
+
|
|
61
|
+
```text
|
|
62
|
+
1) Scope?
|
|
63
|
+
a) Minimal change (default)
|
|
64
|
+
b) Refactor while touching the area
|
|
65
|
+
c) Not sure - use default
|
|
66
|
+
2) Compatibility target?
|
|
67
|
+
a) Current project defaults (default)
|
|
68
|
+
b) Also support older versions: <specify>
|
|
69
|
+
c) Not sure - use default
|
|
70
|
+
|
|
71
|
+
Reply with: defaults (or 1a 2a)
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Anti-patterns
|
|
75
|
+
|
|
76
|
+
- Don't ask questions you can answer with a quick, low-risk discovery read (e.g., configs, existing patterns, docs).
|
|
77
|
+
- Don't ask open-ended questions if a tight multiple-choice or yes/no would eliminate ambiguity faster.
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
*Originally created by [@thsottiaux](https://x.com/thsottiaux)*
|
package/skills.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": "1.2.2",
|
|
3
|
-
"updated": "
|
|
4
|
-
"total":
|
|
3
|
+
"updated": "2026-01-01T00:00:00Z",
|
|
4
|
+
"total": 40,
|
|
5
5
|
"skills": [
|
|
6
6
|
{
|
|
7
7
|
"name": "frontend-design",
|
|
@@ -315,6 +315,20 @@
|
|
|
315
315
|
"featured": true,
|
|
316
316
|
"verified": true
|
|
317
317
|
},
|
|
318
|
+
{
|
|
319
|
+
"name": "ask-questions-if-underspecified",
|
|
320
|
+
"description": "Clarify requirements before implementing. Ask 1-5 must-have questions to avoid wrong work. Use when requests are ambiguous, have multiple valid interpretations, or lack key details like scope, constraints, or acceptance criteria.",
|
|
321
|
+
"category": "productivity",
|
|
322
|
+
"author": "thsottiaux",
|
|
323
|
+
"source": "skillcreatorai/Ai-Agent-Skills",
|
|
324
|
+
"license": "MIT",
|
|
325
|
+
"path": "skills/ask-questions-if-underspecified",
|
|
326
|
+
"tags": ["clarification", "requirements", "workflow", "codex"],
|
|
327
|
+
"stars": 100,
|
|
328
|
+
"downloads": 0,
|
|
329
|
+
"featured": true,
|
|
330
|
+
"verified": true
|
|
331
|
+
},
|
|
318
332
|
{
|
|
319
333
|
"name": "artifacts-builder",
|
|
320
334
|
"description": "Create elaborate HTML artifacts using React, Tailwind CSS, and shadcn/ui. Use for building interactive web components and demos.",
|
|
@@ -540,7 +554,7 @@
|
|
|
540
554
|
"id": "productivity",
|
|
541
555
|
"name": "Productivity",
|
|
542
556
|
"description": "Productivity and workflow skills",
|
|
543
|
-
"count":
|
|
557
|
+
"count": 12
|
|
544
558
|
}
|
|
545
559
|
]
|
|
546
560
|
}
|