@veyralabs/skills 0.1.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 VeyraLabs
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,182 @@
1
+ # VeyraLabs Skills
2
+
3
+ [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)
4
+ [![Skills](https://img.shields.io/badge/skills-4_available-brightgreen)](#packs)
5
+ [![Works with 30+ agents](https://img.shields.io/badge/works_with-30%2B_agents-blue)](#supported-agents)
6
+
7
+ A curated collection of agent skills for founders, developers, and builders. Claude Code, Cursor, Windsurf, Gemini CLI, GitHub Copilot, and 30+ more.
8
+
9
+ ```bash
10
+ bash <(curl -fsSL https://raw.githubusercontent.com/veyralabsgroup/veyraskills/main/install.sh)
11
+ ```
12
+
13
+ ---
14
+
15
+ ## Packs
16
+
17
+ ### `naming-suite` — Brand & Naming Intelligence
18
+
19
+ Four skills that work together. Find names, audit brands, map competitors, generate naming guides.
20
+
21
+ | Skill | What it does |
22
+ |-------|-------------|
23
+ | [`domainforge`](./skills/domainforge/SKILL.md) | Generate and score startup names. Domain availability, social handles, trademark check, brand narrative |
24
+ | [`brandaudit`](./skills/brandaudit/SKILL.md) | Audit an existing brand name across 8 dimensions. Severity scoring, rebrand verdict |
25
+ | [`competitornames`](./skills/competitornames/SKILL.md) | Map the naming landscape in your market. Saturation levels, whitespace, naming brief for DomainForge |
26
+ | [`namingguide`](./skills/namingguide/SKILL.md) | Generate a complete naming guide for a company or product line. Principles, system, dos/don'ts, approval checklist |
27
+
28
+ **Recommended flow:**
29
+
30
+ ```
31
+ competitornames → domainforge
32
+ brandaudit → namingguide
33
+ ```
34
+
35
+ Run `competitornames` first to map the competitive landscape, then `domainforge` to generate names that stand out from it. Run `brandaudit` on an existing name, `namingguide` to lock in what works.
36
+
37
+ ---
38
+
39
+ ## Installation
40
+
41
+ ### One-line
42
+
43
+ ```bash
44
+ bash <(curl -fsSL https://raw.githubusercontent.com/veyralabsgroup/veyraskills/main/install.sh)
45
+ ```
46
+
47
+ Installs all available skills into your current project.
48
+
49
+ ### Specific skill
50
+
51
+ ```bash
52
+ bash <(curl -fsSL https://raw.githubusercontent.com/veyralabsgroup/veyraskills/main/install.sh) --skill domainforge
53
+ ```
54
+
55
+ ### Global install (available across all projects)
56
+
57
+ ```bash
58
+ bash <(curl -fsSL https://raw.githubusercontent.com/veyralabsgroup/veyraskills/main/install.sh) --global
59
+ ```
60
+
61
+ ### Manual
62
+
63
+ Copy the skill folder to your agent's skills directory and restart the agent.
64
+
65
+ | Agent | Project | Global |
66
+ |-------|---------|--------|
67
+ | Claude Code | `.claude/skills/` | `~/.claude/skills/` |
68
+ | Cursor | `.cursor/skills/` | `~/.cursor/skills/` |
69
+ | Windsurf | `.windsurf/skills/` | `~/.codeium/windsurf/skills/` |
70
+ | Gemini CLI | `.gemini/skills/` | `~/.gemini/skills/` |
71
+ | GitHub Copilot | `.github/skills/` | `~/.copilot/skills/` |
72
+
73
+ ---
74
+
75
+ ## Usage
76
+
77
+ Once installed, skills activate contextually — no configuration needed.
78
+
79
+ **DomainForge:**
80
+ ```
81
+ Find a domain for my new SaaS
82
+ Name my CLI tool for environment variables
83
+ What should I call this project?
84
+ ```
85
+
86
+ **BrandAudit:**
87
+ ```
88
+ Audit the brand name "Acme" for a B2B SaaS
89
+ Is our brand name working? Company is called Vercel for analytics tools
90
+ ```
91
+
92
+ **CompetitorNames:**
93
+ ```
94
+ Map the naming landscape for developer config tools
95
+ Who are my competitors and how are they named?
96
+ ```
97
+
98
+ **NamingGuide:**
99
+ ```
100
+ Create a naming guide for our company
101
+ We're building a product line and need naming conventions
102
+ Our feature naming is inconsistent — generate a guide
103
+ ```
104
+
105
+ ---
106
+
107
+ ## Example Output — DomainForge
108
+
109
+ ```
110
+ DomainForge Analysis — Developer Config Management
111
+
112
+ Archetype: DevTool / Infrastructure
113
+ Mode: Indie Hacker
114
+
115
+ Top Recommendations
116
+
117
+ 1. krev.dev — 93/100
118
+ Hard consonant, 4 chars, terminal-native in lowercase.
119
+ Zero overlap with Vault/dotenv cluster. Premium DevTool energy.
120
+ Domain: krev.dev — available (~$12/yr Porkbun)
121
+ Social: @krev — available on X, GitHub
122
+ Trademark: Clean
123
+
124
+ 2. onyx.sh — 89/100
125
+ Single hard word, immediate memorability, shell-adjacent TLD.
126
+ Domain: onyx.sh — available (~$18/yr)
127
+ Social: @onyxdev — available
128
+ Trademark: Check in software category
129
+ ```
130
+
131
+ ---
132
+
133
+ ## Supported Agents
134
+
135
+ | Agent | Supported |
136
+ |-------|-----------|
137
+ | Claude Code | ✅ |
138
+ | Cursor | ✅ |
139
+ | Windsurf | ✅ |
140
+ | Gemini CLI | ✅ |
141
+ | GitHub Copilot | ✅ |
142
+ | Codex | ✅ |
143
+ | Cline | ✅ |
144
+ | Goose | ✅ |
145
+ | OpenHands | ✅ |
146
+ | Roo Code | ✅ |
147
+
148
+ ---
149
+
150
+ ## Roadmap
151
+
152
+ **naming-suite** — stable, all 4 skills available now
153
+
154
+ **brand-suite** *(coming soon)*
155
+ - `brandvoice` — tone of voice guide generator
156
+ - `brandpositioning` — positioning statement + competitive differentiation
157
+ - `taglineforge` — tagline generation with scoring
158
+
159
+ **gtm-suite** *(coming soon)*
160
+ - `icp` — Ideal Customer Profile builder
161
+ - `pricingstrategy` — pricing model analysis
162
+ - `gtmplan` — go-to-market plan generator
163
+
164
+ ---
165
+
166
+ ## Contributing
167
+
168
+ See [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines on submitting new skills.
169
+
170
+ Validate before opening a PR:
171
+
172
+ ```bash
173
+ node validate.js
174
+ ```
175
+
176
+ ---
177
+
178
+ ## License
179
+
180
+ MIT — use, fork, modify, distribute freely.
181
+
182
+ Built by [VeyraLabs](https://veyralabs.com).
package/bin/cli.js ADDED
@@ -0,0 +1,135 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+
4
+ const fs = require('fs');
5
+ const path = require('path');
6
+ const os = require('os');
7
+
8
+ const SKILLS_DIR = path.join(__dirname, '..', 'skills');
9
+
10
+ const PACKS = {
11
+ 'naming-suite': ['domainforge', 'brandaudit', 'competitornames', 'namingguide'],
12
+ };
13
+
14
+ const AGENT_PATHS = {
15
+ claude: { local: '.claude/skills', global: '.claude/skills' },
16
+ cursor: { local: '.cursor/skills', global: '.cursor/skills' },
17
+ windsurf: { local: '.windsurf/skills', global: '.codeium/windsurf/skills' },
18
+ gemini: { local: '.gemini/skills', global: '.gemini/skills' },
19
+ copilot: { local: '.github/skills', global: '.copilot/skills' },
20
+ cline: { local: '.cline/skills', global: '.cline/skills' },
21
+ goose: { local: '.goose/skills', global: '.config/goose/skills' },
22
+ openhands: { local: '.openhands/skills', global: '.openhands/skills' },
23
+ roo: { local: '.roo/skills', global: '.roo/skills' },
24
+ };
25
+
26
+ function detectAgent() {
27
+ const cwd = process.cwd();
28
+ for (const agent of Object.keys(AGENT_PATHS)) {
29
+ const dir = agent === 'copilot' ? '.github' : `.${agent}`;
30
+ if (fs.existsSync(path.join(cwd, dir))) return agent;
31
+ }
32
+ return 'claude';
33
+ }
34
+
35
+ function resolveDestination(agent, isGlobal) {
36
+ const entry = AGENT_PATHS[agent];
37
+ if (!entry) {
38
+ console.error(`Unknown agent: ${agent}. Options: ${Object.keys(AGENT_PATHS).join(', ')}`);
39
+ process.exit(1);
40
+ }
41
+ const rel = isGlobal ? entry.global : entry.local;
42
+ return isGlobal
43
+ ? path.join(os.homedir(), rel)
44
+ : path.join(process.cwd(), rel);
45
+ }
46
+
47
+ function copySkill(name, dest) {
48
+ const src = path.join(SKILLS_DIR, name);
49
+ if (!fs.existsSync(src)) {
50
+ console.error(`Skill not found: ${name}`);
51
+ console.error(`Available: ${availableSkills().join(', ')}`);
52
+ process.exit(1);
53
+ }
54
+ const target = path.join(dest, name);
55
+ fs.mkdirSync(dest, { recursive: true });
56
+ fs.cpSync(src, target, { recursive: true });
57
+ console.log(` ✓ ${name}`);
58
+ }
59
+
60
+ function availableSkills() {
61
+ return fs.readdirSync(SKILLS_DIR).filter(
62
+ f => fs.statSync(path.join(SKILLS_DIR, f)).isDirectory()
63
+ );
64
+ }
65
+
66
+ function printHelp() {
67
+ console.log(`
68
+ Usage:
69
+ npx @veyralabs/skills install Install all skills
70
+ npx @veyralabs/skills install <skill|pack> Install a skill or pack
71
+ npx @veyralabs/skills list List available skills and packs
72
+
73
+ Options:
74
+ --global Install globally (all projects)
75
+ --agent <name> Target agent (auto-detected if omitted)
76
+ Options: ${Object.keys(AGENT_PATHS).join(', ')}
77
+
78
+ Examples:
79
+ npx @veyralabs/skills install naming-suite
80
+ npx @veyralabs/skills install domainforge --global
81
+ npx @veyralabs/skills install domainforge --agent cursor
82
+ `);
83
+ }
84
+
85
+ // --- Parse args ---
86
+
87
+ const rawArgs = process.argv.slice(2);
88
+ const command = rawArgs[0];
89
+ const target = rawArgs[1] && !rawArgs[1].startsWith('--') ? rawArgs[1] : undefined;
90
+ const isGlobal = rawArgs.includes('--global');
91
+ const agentIdx = rawArgs.indexOf('--agent');
92
+ const agentArg = agentIdx !== -1 ? rawArgs[agentIdx + 1] : null;
93
+
94
+ // --- Commands ---
95
+
96
+ if (!command || command === 'help' || command === '--help' || command === '-h') {
97
+ printHelp();
98
+ process.exit(0);
99
+ }
100
+
101
+ if (command === 'list') {
102
+ console.log('\nSkills:');
103
+ availableSkills().forEach(s => console.log(` ${s}`));
104
+ console.log('\nPacks:');
105
+ Object.entries(PACKS).forEach(([pack, skills]) =>
106
+ console.log(` ${pack} → ${skills.join(', ')}`)
107
+ );
108
+ console.log();
109
+ process.exit(0);
110
+ }
111
+
112
+ if (command === 'install') {
113
+ const agent = agentArg || detectAgent();
114
+ const dest = resolveDestination(agent, isGlobal);
115
+
116
+ let toInstall = [];
117
+
118
+ if (!target) {
119
+ toInstall = availableSkills();
120
+ } else if (PACKS[target]) {
121
+ toInstall = PACKS[target];
122
+ } else {
123
+ toInstall = [target];
124
+ }
125
+
126
+ const scope = isGlobal ? 'global' : 'project';
127
+ console.log(`\nInstalling into ${dest} [${agent}/${scope}]\n`);
128
+ toInstall.forEach(s => copySkill(s, dest));
129
+ console.log('\nDone. Restart your agent to activate skills.\n');
130
+ process.exit(0);
131
+ }
132
+
133
+ console.error(`Unknown command: ${command}`);
134
+ printHelp();
135
+ process.exit(1);
package/install.sh ADDED
@@ -0,0 +1,226 @@
1
+ #!/usr/bin/env bash
2
+ # VeyraLabs Skills installer
3
+ # https://github.com/veyralabsgroup/veyraskills
4
+
5
+ set -euo pipefail
6
+
7
+ REPO="veyralabsgroup/veyraskills"
8
+ GITHUB="https://github.com/${REPO}.git"
9
+
10
+ SKILL_NAME=""
11
+ GLOBAL=false
12
+ AGENT=""
13
+ LIST_ONLY=false
14
+
15
+ # ── argument parsing ─────────────────────────────────────────────────────────
16
+
17
+ usage() {
18
+ cat <<EOF
19
+ VeyraLabs Skills — installer
20
+
21
+ Usage:
22
+ bash install.sh [options]
23
+
24
+ Options:
25
+ --skill <name> Install a specific skill (default: all)
26
+ --global Install globally instead of project-local
27
+ --agent <name> Target agent (auto-detected if omitted)
28
+ --list List available skills
29
+ -h, --help Show this help
30
+
31
+ Supported agents:
32
+ claude, cursor, windsurf, gemini, copilot, cline, goose, openhands, roo
33
+
34
+ Examples:
35
+ # Auto-detect agent, install all skills to current project
36
+ bash install.sh
37
+
38
+ # Install domainforge globally for Claude Code
39
+ bash install.sh --skill domainforge --global --agent claude
40
+
41
+ # List available skills
42
+ bash install.sh --list
43
+ EOF
44
+ }
45
+
46
+ while [[ $# -gt 0 ]]; do
47
+ case "$1" in
48
+ --skill) SKILL_NAME="$2"; shift 2 ;;
49
+ --global) GLOBAL=true; shift ;;
50
+ --agent) AGENT="$2"; shift 2 ;;
51
+ --list) LIST_ONLY=true; shift ;;
52
+ -h|--help) usage; exit 0 ;;
53
+ *) echo "Unknown option: $1"; usage; exit 1 ;;
54
+ esac
55
+ done
56
+
57
+ # ── agent detection ──────────────────────────────────────────────────────────
58
+
59
+ detect_agent() {
60
+ [[ -f ".claude/settings.json" ]] || [[ -d ".claude" ]] && echo "claude" && return
61
+ [[ -d ".cursor" ]] && echo "cursor" && return
62
+ [[ -d ".windsurf" ]] && echo "windsurf" && return
63
+ [[ -d ".gemini" ]] && echo "gemini" && return
64
+ [[ -d ".github/copilot" ]] && echo "copilot" && return
65
+ [[ -d ".cline" ]] && echo "cline" && return
66
+ [[ -d ".goose" ]] && echo "goose" && return
67
+ [[ -d ".openhands" ]] && echo "openhands"&& return
68
+ [[ -d ".roo" ]] && echo "roo" && return
69
+ echo ""
70
+ }
71
+
72
+ skills_dir() {
73
+ local agent="$1"
74
+
75
+ if [[ "$GLOBAL" == "true" ]]; then
76
+ case "$agent" in
77
+ claude) echo "$HOME/.claude/skills" ;;
78
+ cursor) echo "$HOME/.cursor/skills" ;;
79
+ windsurf) echo "$HOME/.codeium/windsurf/skills" ;;
80
+ gemini) echo "$HOME/.gemini/skills" ;;
81
+ copilot) echo "$HOME/.copilot/skills" ;;
82
+ cline) echo "$HOME/.cline/skills" ;;
83
+ goose) echo "$HOME/.config/goose/skills" ;;
84
+ openhands) echo "$HOME/.openhands/skills" ;;
85
+ roo) echo "$HOME/.roo/skills" ;;
86
+ *) echo "$HOME/.skills" ;;
87
+ esac
88
+ else
89
+ case "$agent" in
90
+ claude) echo ".claude/skills" ;;
91
+ cursor) echo ".cursor/skills" ;;
92
+ windsurf) echo ".windsurf/skills" ;;
93
+ gemini) echo ".gemini/skills" ;;
94
+ copilot) echo ".github/skills" ;;
95
+ cline) echo ".cline/skills" ;;
96
+ goose) echo ".goose/skills" ;;
97
+ openhands) echo ".openhands/skills";;
98
+ roo) echo ".roo/skills" ;;
99
+ *) echo ".skills" ;;
100
+ esac
101
+ fi
102
+ }
103
+
104
+ # ── install logic ────────────────────────────────────────────────────────────
105
+
106
+ check_deps() {
107
+ local missing=()
108
+ command -v git &>/dev/null || missing+=("git")
109
+
110
+ if [[ ${#missing[@]} -gt 0 ]]; then
111
+ echo "Error: required tools missing: ${missing[*]}"
112
+ echo "Install git and try again."
113
+ exit 1
114
+ fi
115
+ }
116
+
117
+ install_skill() {
118
+ local skill="$1"
119
+ local dest_dir="$2"
120
+ local tmp
121
+
122
+ tmp=$(mktemp -d)
123
+ # shellcheck disable=SC2064
124
+ trap "rm -rf '$tmp'" EXIT
125
+
126
+ echo " Cloning veyralabsgroup/veyraskills..."
127
+ git clone --depth=1 --filter=blob:none --sparse "$GITHUB" "$tmp" -q
128
+
129
+ (cd "$tmp" && git sparse-checkout set "skills/${skill}")
130
+
131
+ if [[ ! -d "$tmp/skills/${skill}" ]]; then
132
+ echo " Error: skill '${skill}' not found in the repository."
133
+ exit 1
134
+ fi
135
+
136
+ mkdir -p "$dest_dir"
137
+ cp -r "$tmp/skills/${skill}" "$dest_dir/"
138
+
139
+ trap - EXIT
140
+ rm -rf "$tmp"
141
+ }
142
+
143
+ install_all() {
144
+ local dest_dir="$1"
145
+ local tmp
146
+
147
+ tmp=$(mktemp -d)
148
+ # shellcheck disable=SC2064
149
+ trap "rm -rf '$tmp'" EXIT
150
+
151
+ echo " Cloning veyralabsgroup/veyraskills..."
152
+ git clone --depth=1 --filter=blob:none --sparse "$GITHUB" "$tmp" -q
153
+ (cd "$tmp" && git sparse-checkout set "skills")
154
+
155
+ if [[ ! -d "$tmp/skills" ]]; then
156
+ echo " Error: could not retrieve skills from repository."
157
+ exit 1
158
+ fi
159
+
160
+ mkdir -p "$dest_dir"
161
+ cp -r "$tmp/skills/." "$dest_dir/"
162
+
163
+ trap - EXIT
164
+ rm -rf "$tmp"
165
+ }
166
+
167
+ list_skills() {
168
+ local tmp
169
+ tmp=$(mktemp -d)
170
+ trap "rm -rf '$tmp'" EXIT
171
+
172
+ git clone --depth=1 --filter=blob:none --sparse "$GITHUB" "$tmp" -q
173
+ (cd "$tmp" && git sparse-checkout set "skills")
174
+
175
+ echo "Available skills:"
176
+ echo ""
177
+ for d in "$tmp/skills"/*/; do
178
+ local name
179
+ name=$(basename "$d")
180
+ echo " • $name"
181
+ done
182
+ echo ""
183
+ echo "Install: bash install.sh --skill <name>"
184
+ echo "All: bash install.sh"
185
+
186
+ trap - EXIT
187
+ rm -rf "$tmp"
188
+ }
189
+
190
+ # ── main ─────────────────────────────────────────────────────────────────────
191
+
192
+ main() {
193
+ check_deps
194
+
195
+ if [[ "$LIST_ONLY" == "true" ]]; then
196
+ list_skills
197
+ exit 0
198
+ fi
199
+
200
+ if [[ -z "$AGENT" ]]; then
201
+ AGENT=$(detect_agent)
202
+ if [[ -z "$AGENT" ]]; then
203
+ echo "Could not detect an agent in the current directory."
204
+ echo "Specify one with --agent <name> (claude, cursor, windsurf, gemini, copilot, cline, goose)"
205
+ exit 1
206
+ fi
207
+ echo "Detected agent: $AGENT"
208
+ fi
209
+
210
+ local dest
211
+ dest=$(skills_dir "$AGENT")
212
+
213
+ if [[ -n "$SKILL_NAME" ]]; then
214
+ echo "Installing '$SKILL_NAME' → $dest/"
215
+ install_skill "$SKILL_NAME" "$dest"
216
+ echo ""
217
+ echo "Done. ${dest}/${SKILL_NAME}/ is ready."
218
+ else
219
+ echo "Installing all skills → $dest/"
220
+ install_all "$dest"
221
+ echo ""
222
+ echo "Done. All skills installed to ${dest}/"
223
+ fi
224
+ }
225
+
226
+ main
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@veyralabs/skills",
3
+ "version": "0.1.0",
4
+ "description": "VeyraSkills — A curated collection of Claude Code skills for founders, developers and AI builders",
5
+ "bin": {
6
+ "veyraskills": "./bin/cli.js"
7
+ },
8
+ "files": [
9
+ "bin/",
10
+ "skills/",
11
+ "install.sh",
12
+ "validate.js"
13
+ ],
14
+ "scripts": {
15
+ "validate": "node validate.js"
16
+ },
17
+ "keywords": [
18
+ "claude-code",
19
+ "claude-skill",
20
+ "agent-skill",
21
+ "skills-sh",
22
+ "ai-agents",
23
+ "anthropic",
24
+ "claude",
25
+ "cursor",
26
+ "windsurf",
27
+ "copilot",
28
+ "naming",
29
+ "domain-generator",
30
+ "startup-branding",
31
+ "brand-strategy",
32
+ "developer-tools"
33
+ ],
34
+ "author": "VeyraLabs <hello@veyralabs.com>",
35
+ "license": "MIT",
36
+ "repository": {
37
+ "type": "git",
38
+ "url": "https://github.com/veyralabsgroup/veyraskills.git"
39
+ },
40
+ "bugs": {
41
+ "url": "https://github.com/veyralabsgroup/veyraskills/issues"
42
+ },
43
+ "homepage": "https://github.com/veyralabsgroup/veyraskills#readme",
44
+ "engines": {
45
+ "node": ">=18"
46
+ }
47
+ }