spirewise 1.6.2 → 1.6.3

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.
Files changed (80) hide show
  1. package/README.md +18 -2
  2. package/bin/cli.js +61 -10
  3. package/install.sh +46 -22
  4. package/package.json +5 -2
  5. package/skills/README.md +2 -0
  6. package/skills/nvidia-product-inventor/README.md +13 -4
  7. package/skills/nvidia-product-inventor/SKILL.md +105 -36
  8. package/skills/nvidia-startup-idea-founder/README.md +36 -0
  9. package/skills/nvidia-startup-idea-founder/SKILL.md +211 -0
  10. package/skills/website-design-skills/01-proof/README.md +47 -0
  11. package/skills/website-design-skills/01-proof/SKILL.md +303 -0
  12. package/skills/website-design-skills/02-kajabi/README.md +42 -0
  13. package/skills/website-design-skills/02-kajabi/SKILL.md +272 -0
  14. package/skills/website-design-skills/03-lattice/README.md +42 -0
  15. package/skills/website-design-skills/03-lattice/SKILL.md +271 -0
  16. package/skills/website-design-skills/04-petal/README.md +42 -0
  17. package/skills/website-design-skills/04-petal/SKILL.md +271 -0
  18. package/skills/website-design-skills/05-dropbox-sign/README.md +42 -0
  19. package/skills/website-design-skills/05-dropbox-sign/SKILL.md +271 -0
  20. package/skills/website-design-skills/06-distributional/README.md +42 -0
  21. package/skills/website-design-skills/06-distributional/SKILL.md +271 -0
  22. package/skills/website-design-skills/07-appcues/README.md +42 -0
  23. package/skills/website-design-skills/07-appcues/SKILL.md +271 -0
  24. package/skills/website-design-skills/08-memberstack/README.md +42 -0
  25. package/skills/website-design-skills/08-memberstack/SKILL.md +271 -0
  26. package/skills/website-design-skills/09-flank/README.md +42 -0
  27. package/skills/website-design-skills/09-flank/SKILL.md +275 -0
  28. package/skills/website-design-skills/10-slidebean/README.md +42 -0
  29. package/skills/website-design-skills/10-slidebean/SKILL.md +275 -0
  30. package/skills/website-design-skills/11-formstack/README.md +42 -0
  31. package/skills/website-design-skills/11-formstack/SKILL.md +275 -0
  32. package/skills/website-design-skills/12-thalamus/README.md +42 -0
  33. package/skills/website-design-skills/12-thalamus/SKILL.md +275 -0
  34. package/skills/website-design-skills/13-grow/README.md +42 -0
  35. package/skills/website-design-skills/13-grow/SKILL.md +275 -0
  36. package/skills/website-design-skills/14-gemnote/README.md +42 -0
  37. package/skills/website-design-skills/14-gemnote/SKILL.md +275 -0
  38. package/skills/website-design-skills/15-draftbit/README.md +42 -0
  39. package/skills/website-design-skills/15-draftbit/SKILL.md +275 -0
  40. package/skills/website-design-skills/16-payman/README.md +42 -0
  41. package/skills/website-design-skills/16-payman/SKILL.md +273 -0
  42. package/skills/website-design-skills/17-effortel/README.md +42 -0
  43. package/skills/website-design-skills/17-effortel/SKILL.md +272 -0
  44. package/skills/website-design-skills/18-adopt/README.md +42 -0
  45. package/skills/website-design-skills/18-adopt/SKILL.md +273 -0
  46. package/skills/website-design-skills/19-kraftful/README.md +42 -0
  47. package/skills/website-design-skills/19-kraftful/SKILL.md +273 -0
  48. package/skills/website-design-skills/20-greenhouse/README.md +42 -0
  49. package/skills/website-design-skills/20-greenhouse/SKILL.md +273 -0
  50. package/skills/website-design-skills/21-weavy/README.md +42 -0
  51. package/skills/website-design-skills/21-weavy/SKILL.md +273 -0
  52. package/skills/website-design-skills/22-safetykit/README.md +42 -0
  53. package/skills/website-design-skills/22-safetykit/SKILL.md +273 -0
  54. package/skills/website-design-skills/23-modulify/README.md +42 -0
  55. package/skills/website-design-skills/23-modulify/SKILL.md +270 -0
  56. package/skills/website-design-skills/24-realm/README.md +42 -0
  57. package/skills/website-design-skills/24-realm/SKILL.md +270 -0
  58. package/skills/website-design-skills/25-modyfi/README.md +42 -0
  59. package/skills/website-design-skills/25-modyfi/SKILL.md +269 -0
  60. package/skills/website-design-skills/26-altitude/README.md +42 -0
  61. package/skills/website-design-skills/26-altitude/SKILL.md +270 -0
  62. package/skills/website-design-skills/27-way/README.md +42 -0
  63. package/skills/website-design-skills/27-way/SKILL.md +270 -0
  64. package/skills/website-design-skills/28-zentail/README.md +42 -0
  65. package/skills/website-design-skills/28-zentail/SKILL.md +270 -0
  66. package/skills/website-design-skills/29-zams/README.md +42 -0
  67. package/skills/website-design-skills/29-zams/SKILL.md +270 -0
  68. package/skills/website-design-skills/30-user-interviews/README.md +44 -0
  69. package/skills/website-design-skills/30-user-interviews/SKILL.md +273 -0
  70. package/skills/website-design-skills/31-bland/README.md +44 -0
  71. package/skills/website-design-skills/31-bland/SKILL.md +273 -0
  72. package/skills/website-design-skills/32-nauto/README.md +44 -0
  73. package/skills/website-design-skills/32-nauto/SKILL.md +273 -0
  74. package/skills/website-design-skills/33-bill/README.md +44 -0
  75. package/skills/website-design-skills/33-bill/SKILL.md +273 -0
  76. package/skills/website-design-skills/34-localyzer/README.md +44 -0
  77. package/skills/website-design-skills/34-localyzer/SKILL.md +273 -0
  78. package/skills/website-design-skills/35-jasper/README.md +44 -0
  79. package/skills/website-design-skills/35-jasper/SKILL.md +273 -0
  80. package/skills/website-design-skills/README.md +108 -0
package/README.md CHANGED
@@ -104,9 +104,25 @@ tidied up, and anything already absent is reported as skipped.
104
104
  | `nvidia-inception-starter` | `nvidia-inception/inception-readiness-report.md` | Scored NVIDIA Inception readiness audit + 90-day plan |
105
105
  | `nvidia-inception-idea-booster` | `nvidia-inception/elevated-idea.md` | Reads your idea files and elevates them to NVIDIA's preferences |
106
106
  | `nvidia-product-inventor` | `products_raw/<Product>/product.md` | Invents 3–6 GPU-essential products (4–10 letter names) from your idea |
107
+ | `nvidia-startup-idea-founder` | `nvidia-inception/startup-ideas/<Idea>.md` | Crawls NVIDIA RFS + recently funded/accepted Inception startups and invents 10/10-acceptance startup ideas |
108
+ | `website-design-skills/01-proof` … `35-jasper` | `websites/<NN-slug>/` | **35 Website Design System Architect skills**, each modeled on a real, live-scraped SaaS site — generates a production-grade HTML/CSS/JS site with that brand's tokens, components, and pages |
107
109
 
108
- Each skill keeps **every field below** the platform's character limit (with ~10%
109
- headroom) and verifies counts before finishing.
110
+ The copywriting skills keep **every field below** the platform's character limit
111
+ (with ~10% headroom) and verify counts before finishing.
112
+
113
+ ### Website-design skills (grouped)
114
+
115
+ The 35 website-design skills live in `skills/website-design-skills/` as numbered
116
+ folders (`01-proof` … `35-jasper`). They are discovered automatically and can be
117
+ installed by their **short leaf name** or full path:
118
+
119
+ ```bash
120
+ npx spirewise -s 01-proof -a claude --workspace # short name
121
+ npx spirewise -s website-design-skills/35-jasper -a cursor # full path
122
+ ```
123
+
124
+ Each installs into the agent's folder as `NN-slug` (e.g. `.claude/skills/01-proof`).
125
+ See `skills/website-design-skills/README.md` for the full index.
110
126
 
111
127
  ## Usage after install
112
128
 
package/bin/cli.js CHANGED
@@ -92,15 +92,59 @@ function resolveTarget(agent, scope) {
92
92
  return scope === 'project' ? path.resolve(process.cwd(), rel) : path.resolve(expandHome(rel));
93
93
  }
94
94
 
95
+ // Recursively find every skill folder (a dir containing SKILL.md) at any depth
96
+ // under skills/. Skill ids are POSIX-style relative paths, e.g.
97
+ // "f6s-copywriting" or "website-design-skills/01-proof".
98
+ function walkSkills(dir, baseDir, out) {
99
+ for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
100
+ if (!entry.isDirectory()) continue;
101
+ const abs = path.join(dir, entry.name);
102
+ if (fs.existsSync(path.join(abs, 'SKILL.md'))) {
103
+ out.push(path.relative(baseDir, abs).split(path.sep).join('/'));
104
+ } else {
105
+ walkSkills(abs, baseDir, out); // descend into grouping folders
106
+ }
107
+ }
108
+ }
95
109
  function availableSkills() {
96
110
  if (!fs.existsSync(SKILLS_DIR)) return [];
97
- return fs.readdirSync(SKILLS_DIR, { withFileTypes: true })
98
- .filter((d) => d.isDirectory() && fs.existsSync(path.join(SKILLS_DIR, d.name, 'SKILL.md')))
99
- .map((d) => d.name).sort();
111
+ const out = [];
112
+ walkSkills(SKILLS_DIR, SKILLS_DIR, out);
113
+ return out.sort();
114
+ }
115
+
116
+ // Source dir and leaf base name for a skill id.
117
+ const skillSrc = (id) => path.join(SKILLS_DIR, ...id.split('/'));
118
+ const skillBase = (id) => id.split('/').pop();
119
+
120
+ // Map every skill id -> the folder/file name it installs as. Leaf basename is
121
+ // used when unique; colliding basenames fall back to the flattened path so two
122
+ // skills never overwrite each other.
123
+ function buildInstallNames(ids) {
124
+ const counts = Object.create(null);
125
+ for (const id of ids) { const b = skillBase(id); counts[b] = (counts[b] || 0) + 1; }
126
+ const map = new Map();
127
+ for (const id of ids) {
128
+ const b = skillBase(id);
129
+ map.set(id, counts[b] > 1 ? id.split('/').join('-') : b);
130
+ }
131
+ return map;
132
+ }
133
+ let NAME_BY_ID = new Map();
134
+ const installName = (id) => NAME_BY_ID.get(id) || skillBase(id);
135
+
136
+ // Resolve a user-supplied token to a full skill id. Accepts the full path
137
+ // ("website-design-skills/01-proof") or the unique leaf name ("01-proof").
138
+ function resolveSkillToken(tok, available) {
139
+ if (available.includes(tok)) return tok;
140
+ const matches = available.filter((id) => skillBase(id) === tok);
141
+ if (matches.length === 1) return matches[0];
142
+ if (matches.length > 1) die(`Ambiguous skill '${tok}': matches ${matches.join(', ')}. Use the full path.`);
143
+ return null;
100
144
  }
101
145
 
102
146
  function readSkill(name) {
103
- const raw = fs.readFileSync(path.join(SKILLS_DIR, name, 'SKILL.md'), 'utf8');
147
+ const raw = fs.readFileSync(path.join(skillSrc(name), 'SKILL.md'), 'utf8');
104
148
  let description = name, body = raw;
105
149
  const m = raw.match(/^---\n([\s\S]*?)\n---\n?([\s\S]*)$/);
106
150
  if (m) {
@@ -130,14 +174,15 @@ function installToAgent(agentKey, agent, scope, skills) {
130
174
  const targetDir = resolveTarget(agent, scope);
131
175
  fs.mkdirSync(targetDir, { recursive: true });
132
176
  for (const skill of skills) {
177
+ const name = installName(skill);
133
178
  if (agent.format === 'skill') {
134
- const dest = path.join(targetDir, skill);
135
- copyDir(path.join(SKILLS_DIR, skill), dest);
179
+ const dest = path.join(targetDir, name);
180
+ copyDir(skillSrc(skill), dest);
136
181
  console.log(` ${paint(RAW.green, '✓')} ${paint(RAW.bold, agent.label)} ${c.dim}(${scope === 'project' ? 'workspace' : scope})${c.reset} ${skill} ${c.dim}→ ${dest}${c.reset}`);
137
182
  } else {
138
183
  const { description, body } = readSkill(skill);
139
184
  const front = `---\ndescription: ${description}\nalwaysApply: false\n---\n\n`;
140
- const file = path.join(targetDir, skill + (agent.ext || '.md'));
185
+ const file = path.join(targetDir, name + (agent.ext || '.md'));
141
186
  fs.writeFileSync(file, front + body);
142
187
  console.log(` ${paint(RAW.green, '✓')} ${paint(RAW.bold, agent.label)} ${c.dim}(${scope === 'project' ? 'workspace' : scope})${c.reset} ${skill} ${c.dim}→ ${file}${c.reset}`);
143
188
  }
@@ -150,9 +195,10 @@ function removeFromAgent(agentKey, agent, scope, skills) {
150
195
  const tag = scope === 'project' ? 'workspace' : scope;
151
196
  let removed = 0;
152
197
  for (const skill of skills) {
198
+ const name = installName(skill);
153
199
  const target = agent.format === 'skill'
154
- ? path.join(targetDir, skill)
155
- : path.join(targetDir, skill + (agent.ext || '.md'));
200
+ ? path.join(targetDir, name)
201
+ : path.join(targetDir, name + (agent.ext || '.md'));
156
202
  if (fs.existsSync(target)) {
157
203
  fs.rmSync(target, { recursive: true, force: true });
158
204
  removed++;
@@ -312,6 +358,7 @@ async function main() {
312
358
 
313
359
  const available = availableSkills();
314
360
  if (available.length === 0) die('No skills found in package.');
361
+ NAME_BY_ID = buildInstallNames(available);
315
362
 
316
363
  if (command === 'list') {
317
364
  info('Available skills:'); available.forEach((s) => console.log(' - ' + s)); return;
@@ -335,7 +382,11 @@ async function main() {
335
382
  // 1) SKILLS
336
383
  let skills = o.skills;
337
384
  if (skills) {
338
- for (const s of skills) if (!available.includes(s)) die(`Unknown skill '${s}'. Run "spirewise list".`);
385
+ skills = skills.map((s) => {
386
+ const id = resolveSkillToken(s, available);
387
+ if (!id) die(`Unknown skill '${s}'. Run "spirewise list".`);
388
+ return id;
389
+ });
339
390
  } else if (tty) {
340
391
  skills = await interactiveSelect({
341
392
  title: `Step 1/3 · Select skills to ${verb}`,
package/install.sh CHANGED
@@ -101,23 +101,40 @@ ensure_skills_dir() {
101
101
  }
102
102
 
103
103
  list_remote_skills() {
104
- curl -fsSL "$API_BASE" \
105
- | grep '"name"' | sed -E 's/.*"name": *"([^"]+)".*/\1/' \
106
- | while read -r n; do
107
- curl -fsI "${RAW_BASE}/${SKILLS_SUBDIR}/${n}/SKILL.md" >/dev/null 2>&1 && echo "$n"
108
- done
104
+ # Walk the full git tree and surface every "<id>/SKILL.md" under skills/.
105
+ curl -fsSL "https://api.github.com/repos/${REPO_OWNER}/${REPO_NAME}/git/trees/${REPO_BRANCH}?recursive=1" \
106
+ | grep -oE "\"path\": *\"${SKILLS_SUBDIR}/[^\"]+/SKILL.md\"" \
107
+ | sed -E "s/.*\"${SKILLS_SUBDIR}\/(.+)\/SKILL.md\"/\1/" \
108
+ | sort -u
109
109
  }
110
110
 
111
111
  available_skills() {
112
112
  if [[ -n "$LOCAL_SKILLS_DIR" ]]; then
113
- find "$LOCAL_SKILLS_DIR" -maxdepth 2 -name SKILL.md -print0 \
114
- | xargs -0 -n1 dirname | xargs -n1 basename | sort
113
+ # Any folder containing SKILL.md, at any depth, as a relative id.
114
+ find "$LOCAL_SKILLS_DIR" -name SKILL.md -print \
115
+ | sed -e "s#^${LOCAL_SKILLS_DIR}/##" -e 's#/SKILL.md$##' \
116
+ | sort
115
117
  else
116
118
  list_remote_skills | sort
117
119
  fi
118
120
  }
119
121
 
120
- # Fetch a single SKILL.md into $BASE/<skill>/SKILL.md when remote.
122
+ # Leaf base name a skill id installs as (e.g. website-design-skills/01-proof -> 01-proof).
123
+ skill_base() { printf '%s' "${1##*/}"; }
124
+
125
+ # Resolve a user token to a full id: exact id, else unique leaf-name match.
126
+ resolve_skill_token() {
127
+ local tok="$1" id match count=0
128
+ for id in "${AVAILABLE[@]}"; do [[ "$id" == "$tok" ]] && { printf '%s' "$id"; return 0; }; done
129
+ for id in "${AVAILABLE[@]}"; do
130
+ if [[ "$(skill_base "$id")" == "$tok" ]]; then match="$id"; count=$((count+1)); fi
131
+ done
132
+ [[ $count -eq 1 ]] && { printf '%s' "$match"; return 0; }
133
+ [[ $count -gt 1 ]] && die "Ambiguous skill '$tok'. Use the full path."
134
+ return 1
135
+ }
136
+
137
+ # Fetch a single SKILL.md into $BASE/<id>/SKILL.md when remote.
121
138
  fetch_skill() {
122
139
  local skill="$1" base="$2"
123
140
  [[ -n "$LOCAL_SKILLS_DIR" ]] && return 0
@@ -162,16 +179,17 @@ resolve_dir() {
162
179
  install_for_agent() {
163
180
  local key="$1" label="$2" fmt="$3" ext="$4" dir="$5" scope="$6" base="$7"; shift 7
164
181
  local skills=("$@")
165
- local s
182
+ local s iname
166
183
  if [[ "$MODE" == "remove" ]]; then
167
184
  for s in "${skills[@]}"; do
185
+ iname="$(skill_base "$s")"
168
186
  local target
169
- if [[ "$fmt" == "skill" ]]; then target="$dir/$s"; else target="$dir/$s$ext"; fi
187
+ if [[ "$fmt" == "skill" ]]; then target="$dir/$iname"; else target="$dir/$iname$ext"; fi
170
188
  if [[ -e "$target" ]]; then
171
189
  rm -rf "$target"; REMOVED=$((REMOVED+1))
172
- substep "$label ($scope) $s removed <- $target"
190
+ substep "$label ($scope) $iname removed <- $target"
173
191
  else
174
- substep "$label ($scope) $s — not found, skipped"
192
+ substep "$label ($scope) $iname — not found, skipped"
175
193
  fi
176
194
  done
177
195
  [[ -d "$dir" ]] && rmdir "$dir" 2>/dev/null || true
@@ -179,17 +197,18 @@ install_for_agent() {
179
197
  fi
180
198
  mkdir -p "$dir"
181
199
  for s in "${skills[@]}"; do
200
+ iname="$(skill_base "$s")"
182
201
  fetch_skill "$s" "$base"
183
202
  if [[ "$fmt" == "skill" ]]; then
184
- mkdir -p "$dir/$s"
185
- cp -R "$base/$s/." "$dir/$s/"
186
- substep "$label ($scope) $s -> $dir/$s"
203
+ mkdir -p "$dir/$iname"
204
+ cp -R "$base/$s/." "$dir/$iname/"
205
+ substep "$label ($scope) $iname -> $dir/$iname"
187
206
  else
188
207
  local desc body file
189
208
  desc="$(skill_description "$base/$s/SKILL.md")"
190
- file="$dir/$s$ext"
209
+ file="$dir/$iname$ext"
191
210
  { printf -- '---\ndescription: %s\nalwaysApply: false\n---\n\n' "$desc"; skill_body "$base/$s/SKILL.md"; } >"$file"
192
- substep "$label ($scope) $s -> $file"
211
+ substep "$label ($scope) $iname -> $file"
193
212
  fi
194
213
  done
195
214
  }
@@ -237,11 +256,16 @@ banner
237
256
 
238
257
  # Step 1: skills (default all).
239
258
  step 1 "Scanning available skills"
240
- [[ ${#SELECTED[@]} -eq 0 ]] && SELECTED=("${AVAILABLE[@]}")
241
- for s in "${SELECTED[@]}"; do
242
- found=false; for a in "${AVAILABLE[@]}"; do [[ "$s" == "$a" ]] && found=true && break; done
243
- $found || die "Unknown skill '$s'. Use --list."
244
- done
259
+ if [[ ${#SELECTED[@]} -eq 0 ]]; then
260
+ SELECTED=("${AVAILABLE[@]}")
261
+ else
262
+ RESOLVED=()
263
+ for s in "${SELECTED[@]}"; do
264
+ id="$(resolve_skill_token "$s")" || die "Unknown skill '$s'. Use --list."
265
+ RESOLVED+=("$id")
266
+ done
267
+ SELECTED=("${RESOLVED[@]}")
268
+ fi
245
269
  substep "${#SELECTED[@]} skill(s): ${SELECTED[*]}"
246
270
 
247
271
  # Step 2: agents
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "spirewise",
3
- "version": "1.6.2",
4
- "description": "Installable Agent Skills for copywriting (F6S & LinkedIn company pages) for GitHub Copilot, Claude Code, and Cursor.",
3
+ "version": "1.6.3",
4
+ "description": "Installable Agent Skills for GitHub Copilot, Claude Code, and Cursor — copywriting (F6S & LinkedIn), NVIDIA Inception tooling, and 35 website design-system architect skills modeled on real SaaS sites.",
5
5
  "bin": {
6
6
  "spirewise": "bin/cli.js"
7
7
  },
@@ -19,6 +19,9 @@
19
19
  "copywriting",
20
20
  "f6s",
21
21
  "linkedin",
22
+ "nvidia-inception",
23
+ "website-design",
24
+ "design-system",
22
25
  "github-copilot",
23
26
  "claude-code",
24
27
  "cursor",
package/skills/README.md CHANGED
@@ -12,6 +12,8 @@ ready-to-paste copy for company profile pages, with strict character-limit safet
12
12
  | `nvidia-inception-starter` | `nvidia-inception/inception-readiness-report.md` | Scored NVIDIA Inception readiness audit + 90-day plan |
13
13
  | `nvidia-inception-idea-booster` | `nvidia-inception/elevated-idea.md` | Reads your idea files and elevates them to NVIDIA's preferences |
14
14
  | `nvidia-product-inventor` | `products_raw/<Product>/product.md` | Invents 3–6 GPU-essential products (4–10 letter names) from your idea |
15
+ | `nvidia-startup-idea-founder` | `nvidia-inception/startup-ideas/<Idea>.md` | Crawls NVIDIA RFS + recently funded/accepted Inception startups and invents 10/10-acceptance startup ideas |
16
+ | `website-design-skills/01-proof` … `35-jasper` | `websites/<NN-slug>/` | 35 design-system skills, each modeled on a real SaaS site (15+ pages, products + per-product pages) |
15
17
 
16
18
  Each skill writes one plain-text file and keeps **every field below** the
17
19
  platform's character limit (with ~10% headroom).
@@ -51,20 +51,29 @@ products_raw/
51
51
  Each `product.md` covers the problem, what it does, **why GPU compute is
52
52
  essential**, the NVIDIA stack (hardware → SDKs → software), physical/edge angle,
53
53
  moat, market, Inception fit, and MVP scope. Each product also ships a **real
54
- 1080×1080 PNG logo mark** (symbol only, centered) on a solid background.
54
+ 1080×1080 PNG logo mark** (abstract symbol only, no letters, centered) on a solid background.
55
55
 
56
56
  ## Rules it enforces
57
57
 
58
58
  - **Same space only** — all products share the startup's industry, category, core
59
59
  idea, and users (variations/components of the one idea), never new categories or
60
60
  unrelated businesses.
61
+ - **Dual 10/10 gate** — every product must self-score **10/10 on NVIDIA Inception
62
+ approval fit AND 10/10 on same-space fit** (both recorded in `product.md` and
63
+ `_overview.md`); redesign or discard anything below 10 on either axis.
64
+ - **Research-backed approval criteria** — products are engineered to the qualities
65
+ NVIDIA-approved startups share (deep-tech & GPU-essential core, authentic NVIDIA
66
+ platform alignment, physical/agentic AI lean, defensible moat, real market +
67
+ scalability) and trip **zero disqualifiers** (no AI wrappers, consulting, crypto,
68
+ or reseller plays).
61
69
  - **3–6 products**, each in its own folder under `products_raw/`.
62
70
  - Product names are **4–10 letters, letters only**, brandable; folder name = product name.
63
71
  - NVIDIA stack ordered **physical/GPU first**, then SDKs, then software.
64
72
  - Every product must genuinely need accelerated compute (no AI wrappers).
65
73
  - Each product gets a **proper designed logo MARK** — 1080×1080 PNG, **mark/symbol
66
- only and center-aligned** (no full wordmark or name text), **solid background**
67
- (primary/white/black/other, no transparency or gradient), a monogram or custom
68
- brand symbol (not an SVG/UI icon or emoji), saved in the product's folder.
74
+ only and center-aligned** (no full wordmark or name text, **no letters,
75
+ initials, or monogram**), **solid background** (primary/white/black/other, no
76
+ transparency or gradient), a letter-free custom brand symbol (not an SVG/UI icon
77
+ or emoji), saved in the product's folder.
69
78
 
70
79
  See `SKILL.md` for the full method and the per-product template.
@@ -4,10 +4,11 @@ description: >-
4
4
  Read a startup's existing idea/notes files and invent 3–6 concrete PRODUCTS
5
5
  (not marketing copy) that all stay in the SAME industry, category, and core idea
6
6
  as the startup — variations/components of the one idea, never new categories.
7
- Each product is engineered to fit NVIDIA Inception preferences, gets a short
7
+ Each product is engineered to score a perfect 10/10 on NVIDIA Inception
8
+ approval fit AND 10/10 on same-space alignment, gets a short
8
9
  brandable name (4–10 letters), an explicit NVIDIA stack (physical/compute
9
10
  hardware like GPUs first, then SDKs, then software), and a real 1080×1080 PNG
10
- logo MARK (symbol only, centered, no wordmark) on a solid background. Use when the user asks to "invent products", "ideate
11
+ logo MARK (abstract symbol only — no letters, no wordmark, centered) on a solid background. Use when the user asks to "invent products", "ideate
11
12
  products for NVIDIA", "what should we build for Inception", or "turn our idea
12
13
  into products". Writes a `products_raw/` folder with one subfolder per product.
13
14
  Builds on nvidia-inception-idea-booster and nvidia-inception-starter. Products
@@ -29,6 +30,57 @@ marketing copy.
29
30
  (AI strength, technical innovation, NVIDIA alignment, market, moat). Keep only
30
31
  products that would plausibly score well; discard weak/"AI-wrapper" ones.
31
32
 
33
+ ## What NVIDIA Inception actually approves (research-backed)
34
+
35
+ NVIDIA Inception is free, non-dilutive, rolling-admission, and **industry-agnostic
36
+ within emerging/accelerated-computing tech**. Engineer every product so it would
37
+ read as an obvious **accept** to a reviewer. Approved startups consistently show:
38
+
39
+ 1. **Deep-tech, GPU-essential core.** The product solves a hard technical problem
40
+ (computer vision, LLMs/agents, RL, simulation, graphics, robotics, genomics,
41
+ edge AI) that **substantially benefits from — or is impossible without — GPU
42
+ acceleration**. State plainly why it can't be built (or would be far worse) on
43
+ CPUs alone.
44
+ 2. **Authentic NVIDIA-platform alignment.** Concrete, credible use of NVIDIA
45
+ hardware + SDKs (CUDA, TensorRT, Triton/NIM, Isaac, Omniverse, Metropolis,
46
+ Holoscan, NeMo, Riva, RAPIDS…). The product should **drive demand for NVIDIA
47
+ compute** and act as a reference workload.
48
+ 3. **Physical AI / Agentic AI lean.** Robotics, autonomous systems, industrial
49
+ automation, digital twins, embodied AI (physical AI) and/or autonomous
50
+ decision-making agents/copilots (agentic AI). NVIDIA strongly favors these.
51
+ 4. **Defensible moat.** Proprietary IP, unique/large proprietary datasets, deep
52
+ technical barriers, or hardware integration — not easily replicated.
53
+ 5. **Real market + scalability.** Clear customer ROI, a sharp wedge, and a model
54
+ that scales on GPU cloud or edge fleets. Pilots/traction are a plus to note.
55
+ 6. **Research-to-product trajectory.** Credible technical depth (papers/SOTA
56
+ methods) paired with a concrete, buildable product — not a science project.
57
+
58
+ ### Hard disqualifiers — never generate products that read as these
59
+ - **AI wrappers / thin API resellers** with no GPU-essential core or moat.
60
+ - **Consulting / outsourced-dev** offerings (sell a product, not services).
61
+ - **Crypto/mining/trading**, pure **cloud-reselling**, or generic
62
+ **reseller/distributor** plays.
63
+ - Anything where the GPU is a "nice-to-have," not a must-have.
64
+
65
+ ## The dual 10/10 bar (mandatory gate)
66
+
67
+ Every shipped product MUST score a self-assessed **10/10 on BOTH** axes — this is
68
+ a hard gate, not an average:
69
+
70
+ - **Inception Approval Fit (target 10/10):** maximally hits the six approval
71
+ qualities above, trips **zero** disqualifiers, and would plausibly land at the
72
+ top of the `nvidia-inception-starter` acceptance score.
73
+ - **Same-Space Fit (target 10/10):** stays entirely inside the startup's locked
74
+ industry, category, core idea, and target users (see Step 2) — a variation,
75
+ component, tier, or adjacent feature of the one idea, never a new business.
76
+
77
+ Rules:
78
+ - If a candidate scores **< 10 on either axis, redesign it until both hit 10, or
79
+ discard it.** Do not ship 8s or "good enough" products. Quality over quantity —
80
+ it is better to ship 3 dual-10/10 products than 6 mediocre ones.
81
+ - Record both scores (with a one-line justification each) in every `product.md`
82
+ and in `_overview.md`. Never inflate a score to be nice; be a tough reviewer.
83
+
32
84
  ## Step 1 — Read the existing idea
33
85
 
34
86
  Discover and read the startup files in the project: `idea*`, `README*`, `pitch*`,
@@ -37,10 +89,12 @@ Discover and read the startup files in the project: `idea*`, `README*`, `pitch*`
37
89
  If too little exists, ask 3–5 focused questions first. Mark gaps `[UNKNOWN]` —
38
90
  never fabricate. Stay anchored to the founder's domain and intent.
39
91
 
40
- ## Step 2 — Invent 3–6 products
41
-
42
92
  ## Step 2 — Invent 3–6 products (stay in the SAME space)
43
93
 
94
+ **Same space means: every product is ONLY in the startup's same category /
95
+ industry and directly tied to its main idea — never random categories,
96
+ industries, or unrelated products.**
97
+
44
98
  **Hard constraint — same space only.** Before inventing, lock the startup's
45
99
  **industry, category, and core idea** from Step 1. Every product MUST stay inside
46
100
  that exact space:
@@ -118,6 +172,9 @@ Generated: <YYYY-MM-DD>
118
172
  ## Defensibility / moat
119
173
  ## Market & wedge
120
174
  ## Inception fit (1–2 lines: why this scores well)
175
+ ## Scorecard (must be 10/10 on both)
176
+ - Inception Approval Fit: 10/10 — <one-line justification vs. the six approval qualities>
177
+ - Same-Space Fit: 10/10 — <one-line justification it stays in the locked space>
121
178
  ## Build notes / MVP scope
122
179
  ## Logo (mark only) (see logo-brief.md + <ProductName>-logo-1080x1080.png)
123
180
  ## Open questions / [UNKNOWN]
@@ -125,26 +182,29 @@ Generated: <YYYY-MM-DD>
125
182
 
126
183
  3. Also write `products_raw/_overview.md` starting with the **locked space**
127
184
  (industry, category, core idea, target users), then list every product: name,
128
- letter count, one-liner, primary NVIDIA hardware, and its same-space link.
185
+ letter count, one-liner, primary NVIDIA hardware, its same-space link, and both
186
+ scores (Inception Approval Fit 10/10 + Same-Space Fit 10/10). Confirm every
187
+ listed product is a dual 10/10 — drop any that isn't.
129
188
 
130
189
  ## Logo for each product (required)
131
190
 
132
191
  ## Logo MARK for each product (required)
133
192
 
134
- Every product gets a **real, designed brand logo MARK** — the symbol only, not
135
- the full logo. Do **not** include the full product name as a wordmark, no
136
- tagline, no lockup. Just the **mark**, **center-aligned** on the canvas. It must
137
- be a proper designed brand mark not an SVG icon, UI/material icon, emoji, or
138
- clip-art glyph.
193
+ Every product gets a **real, designed brand logo MARK** — a **custom abstract
194
+ symbol only**, not the full logo. Do **not** include any letters, initials,
195
+ monogram, or lettermark; do **not** include the full product name as a wordmark,
196
+ no tagline, no lockup. Just the **symbol mark**, **center-aligned** on the
197
+ canvas. It must be a proper designed brand mark — not an SVG icon, UI/material
198
+ icon, emoji, or clip-art glyph.
139
199
 
140
200
  ### Design (research first)
141
201
  - Briefly research 3–5 reference brand marks in the product's space; note the
142
202
  visual conventions, then design something distinct (don't copy).
143
- - The mark is **one of**: a **monogram/lettermark** (1–2 brand initials drawn as a
144
- custom mark) or a **distinctive custom brand symbol** tied to the concept.
145
- Ownable, memorable, simple, and scalable.
146
- - Define a tiny brand spec: palette (hex), the mark concept, and (if a monogram)
147
- the typographic treatment.
203
+ - The mark must be a **distinctive custom brand symbol** tied to the concept —
204
+ purely abstract/pictorial, containing **no letters or initials**. Ownable,
205
+ memorable, simple, and scalable.
206
+ - Define a tiny brand spec: palette (hex) and the mark concept (the symbol's
207
+ meaning and geometry). No typography — the mark contains no text.
148
208
 
149
209
  ### Hard output rules
150
210
  - Format **PNG**, exactly **1080 × 1080 px**.
@@ -153,38 +213,42 @@ clip-art glyph.
153
213
  gives strong contrast with the mark. State the exact bg hex in the brief.
154
214
  - **Mark only**, **center-aligned** both horizontally and vertically, sized large
155
215
  with balanced safe padding — not a tiny icon on a big canvas, and not the full
156
- name spelled out.
216
+ name spelled out. The mark must contain **no letters or initials**.
157
217
  - Save it **inside that product's folder**:
158
218
  `products_raw/<ProductName>/<ProductName>-logo-1080x1080.png`
159
- - Also write `products_raw/<ProductName>/logo-brief.md` with: mark type
160
- (monogram vs. symbol), concept, background hex, mark/accent hex, any typography,
161
- and references consulted.
219
+ - Also write `products_raw/<ProductName>/logo-brief.md` with: symbol concept,
220
+ background hex, mark/accent hex, and references consulted. (No monogram/
221
+ lettermark option and no typography — the mark is a letter-free symbol.)
162
222
 
163
223
  ### How to generate it
164
224
  1. **Preferred:** if an image-generation tool/model is available, prompt it for a
165
- *professional brand logo mark / symbol* (specify: mark/symbol only — no text,
166
- no wordmark — the concept, color palette, solid background, flat vector-style,
167
- centered, no photographic texture), then ensure the saved file is a 1080×1080
168
- PNG on a solid background with the mark centered.
225
+ *professional brand logo mark / symbol* (specify: abstract symbol only — no
226
+ letters, no initials, no text, no wordmark — the concept, color palette, solid
227
+ background, flat vector-style, centered, no photographic texture), then ensure
228
+ the saved file is a 1080×1080 PNG on a solid background with the mark centered.
169
229
  2. **Fallback (always works):** render a deliberate brand mark programmatically —
170
- e.g. Python + Pillow — drawing a custom monogram (1–2 initials) or geometric
171
- symbol, centered on a solid-color 1080×1080 canvas. This must look designed
172
- (composition, weight, balance), not like a stock icon. Verify dimensions, that
173
- the mark is centered, and that the background is fully solid.
230
+ e.g. Python + Pillow — drawing a custom geometric/abstract symbol (no letters
231
+ or initials), centered on a solid-color 1080×1080 canvas. This must look
232
+ designed (composition, weight, balance), not like a stock icon. Verify
233
+ dimensions, that the mark is centered, and that the background is fully solid.
174
234
 
175
- Do **not** ship: full wordmarks/the spelled-out name, taglines, transparent PNGs,
176
- gradients, generic icon-font glyphs, stock
177
- emoji, or screenshots. One clean, centered brand **mark** per product.
235
+ Do **not** ship: lettermarks/monograms/initials, full wordmarks/the spelled-out
236
+ name, taglines, transparent PNGs, gradients, generic icon-font glyphs, stock
237
+ emoji, or screenshots. One clean, centered letter-free brand **symbol** per product.
178
238
 
179
239
  ## Quality bar
180
240
 
241
+ - **Dual 10/10 gate.** Every shipped product scores 10/10 on Inception Approval
242
+ Fit AND 10/10 on Same-Space Fit. Redesign or discard anything below 10 on
243
+ either axis — quality over quantity.
181
244
  - **Same space only.** All products share the startup's industry, category, core
182
245
  idea, and users — variations/components/tiers of the one idea, never new
183
246
  categories or unrelated businesses.
184
247
  - **Products, not copy.** No website/landing/marketing text — concrete product
185
248
  concepts and technical plans only.
186
249
  - Every product must be GPU-essential and NVIDIA-aligned, with the stack ordered
187
- physical → SDK → software.
250
+ physical → SDK → software, and trip **zero** Inception disqualifiers (no AI
251
+ wrappers, consulting, crypto, or reseller plays).
188
252
  - Names obey the 4–10 letter rule (verified) and folder names match.
189
253
  - Stay within the founder's domain; elevate, don't fabricate.
190
254
 
@@ -197,9 +261,14 @@ emoji, or screenshots. One clean, centered brand **mark** per product.
197
261
  4. Every product name is **4–10 letters, letters only**, and matches its folder.
198
262
  5. Each product lists NVIDIA hardware (GPU/physical) first, then SDKs, then software.
199
263
  6. Each product justifies why GPU/accelerated compute is essential.
200
- 7. `products_raw/_overview.md` opens with the locked space, then summarizes all products.
201
- 8. Every product folder has a **1080×1080 PNG logo MARK on a solid
264
+ 7. **Every product is a dual 10/10** Inception Approval Fit 10/10 and Same-Space
265
+ Fit 10/10, both scored with a justification in `product.md` and `_overview.md`,
266
+ and trips none of the hard disqualifiers (AI wrapper, consulting, crypto, reseller).
267
+ 8. `products_raw/_overview.md` opens with the locked space, then summarizes all
268
+ products with both scores.
269
+ 9. Every product folder has a **1080×1080 PNG logo MARK on a solid
202
270
  (non-transparent, non-gradient) background**, the **mark centered** with no full
203
- wordmark/name text, plus `logo-brief.md` a real monogram or custom symbol,
204
- not an SVG/UI icon or emoji. Verify dimensions and that the mark is centered.
205
- 9. No marketing/website copy; unknowns marked `[UNKNOWN]`, not invented.
271
+ wordmark/name text and **no letters, initials, or monogram**, plus
272
+ `logo-brief.md` — a real letter-free custom symbol, not an SVG/UI icon or
273
+ emoji. Verify dimensions and that the mark is centered.
274
+ 10. No marketing/website copy; unknowns marked `[UNKNOWN]`, not invented.
@@ -0,0 +1,36 @@
1
+ # NVIDIA Startup Idea Founder
2
+
3
+ A **founder-in-residence** skill for NVIDIA Inception. It **crawls live signals**
4
+ — Requests for Startups (RFS), NVIDIA stated priorities, NVentures investments,
5
+ and the most recently funded / newly accepted Inception startups — then **invents
6
+ brand-new startup ideas** at the intersection of those signals, each engineered
7
+ to clear eligibility and hit a **10/10 acceptance chance**.
8
+
9
+ ## What it produces
10
+
11
+ Writes to an `nvidia-inception/` folder in the project root:
12
+
13
+ - `rfs-research.md` — crawl digest: ranked hot themes, recently funded/accepted
14
+ startups (with sources + dates), common acceptance patterns, and white space.
15
+ - `eligibility.md` — the NVIDIA Inception eligibility checklist + go/no-go gate.
16
+ - `startup-ideas/_index.md` — locked themes + a table of every 10/10 idea.
17
+ - `startup-ideas/<IdeaName>.md` — **one full file per idea** (4–10 letter name)
18
+ with problem, deep-tech solution, GPU-essential rationale, moat, market, NVIDIA
19
+ stack, eligibility fit, and an **Acceptance Chance Scorecard summing to 10/10**.
20
+
21
+ ## How it works
22
+
23
+ 1. **Crawl** NVIDIA RFS/priorities and recently funded/accepted Inception
24
+ startups (last 6–12 months), citing dated source URLs.
25
+ 2. **Lock eligibility** (incorporated, <10yr, ≥1 dev, website, business email, AI
26
+ product, no excluded categories).
27
+ 3. **Invent 3–6 ideas** at the intersection of a hot RFS theme and a recently
28
+ funded analog, attacking distinct white space — each scored to **10/10
29
+ acceptance** or redesigned/dropped.
30
+
31
+ ## Sibling skills
32
+
33
+ Found the idea here → elevate with `nvidia-inception-idea-booster` → score with
34
+ `nvidia-inception-starter` → turn into products with `nvidia-product-inventor`.
35
+
36
+ See `SKILL.md` for the full method, output templates, and the 10/10 gate.