claude-code-arcane 2.9.9 → 2.10.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/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ # [2.10.0](https://github.com/SebastianLuser/claude-code-arcane/compare/v2.9.9...v2.10.0) (2026-10-10)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **profiles:** keep bridge files under the old names for pre-rename CLIs ([921c351](https://github.com/SebastianLuser/claude-code-arcane/commit/921c35119ea3b4bf5a25bbdabe369bc922e71a3f))
7
+
8
+
9
+ ### Features
10
+
11
+ * **profiles:** name stack profiles by platform and technology ([ce89d4a](https://github.com/SebastianLuser/claude-code-arcane/commit/ce89d4a25b1f6ba28d6efe7e84a27343b1e734f5))
12
+
1
13
  ## [2.9.9](https://github.com/SebastianLuser/claude-code-arcane/compare/v2.9.8...v2.9.9) (2026-10-10)
2
14
 
3
15
 
package/README.md CHANGED
@@ -20,7 +20,7 @@ A configuration harness installable via `npx`. Pick a **profile** that matches y
20
20
  cd ~/projects/my-app
21
21
 
22
22
  # Install a profile (no clone needed)
23
- npx claude-code-arcane install backend-ts+agile
23
+ npx claude-code-arcane install backend-typescript+agile
24
24
 
25
25
  # Open Claude Code
26
26
  claude
@@ -38,7 +38,7 @@ explicitly first:
38
38
 
39
39
  ```bash
40
40
  npm install -g claude-code-arcane
41
- arcane install backend-ts+agile # same as the npx line above
41
+ arcane install backend-typescript+agile # same as the npx line above
42
42
  ```
43
43
 
44
44
  ---
@@ -50,8 +50,8 @@ arcane install backend-ts+agile # same as the npx line above
50
50
  Each profile is a YAML file that bundles skills, agents, rules, and permissions:
51
51
 
52
52
  ```yaml
53
- # profiles/backend-ts.yaml
54
- name: backend-ts
53
+ # profiles/backend-typescript.yaml
54
+ name: backend-typescript
55
55
  category: backend
56
56
  skills: [api-design, auth-strategy, jwt-strategy, ...]
57
57
  rules:
@@ -66,7 +66,7 @@ permissions:
66
66
  All profiles are equal — there is no "base vs addon" distinction. Combine as many as you need:
67
67
 
68
68
  ```bash
69
- npx claude-code-arcane install backend-ts+agile+testing
69
+ npx claude-code-arcane install backend-typescript+agile+testing
70
70
  ```
71
71
 
72
72
  The installer merges all profiles, deduplicates skills, and installs only what's needed.
@@ -104,7 +104,7 @@ my-project/.claude/
104
104
  ### Install a profile
105
105
 
106
106
  ```bash
107
- npx claude-code-arcane install backend-ts+agile # Install profile combination
107
+ npx claude-code-arcane install backend-typescript+agile # Install profile combination
108
108
  npx claude-code-arcane install # Show available profiles (interactive)
109
109
  npx claude-code-arcane install unity-dev --dry-run # Preview without installing
110
110
  ```
@@ -184,12 +184,14 @@ Once installed, manage the installation from within a Claude Code session:
184
184
 
185
185
  All profiles combine freely with `+` — there is no required "base". Grouped by category:
186
186
 
187
+ Older names still install and update: `backend-ts`, `frontend`, `mobile`, `flutter`, `ios-native` and `android-native` resolve to `backend-typescript`, `frontend-react-vite`, `mobile-react-native`, `mobile-flutter`, `mobile-ios-swift` and `mobile-android-kotlin`.
188
+
187
189
  ### Backend
188
190
 
189
191
  | Profile | Stack | Skills | Agents |
190
192
  |---------|-------|--------|--------|
191
- | `backend-ts` | Backend TypeScript — Fastify, Prisma, Zod, API design | 33 | engineering |
192
- | `backend-go` | Backend Go — Clean Arch, DB, auth, API, CI | 19 | engineering |
193
+ | `backend-typescript` | Backend TypeScript — Fastify, Prisma, Zod, API design | 25 | engineering |
194
+ | `backend-go` | Backend Go — Clean Arch, DB, auth, API, CI | 24 | engineering |
193
195
  | `backend-dotnet` | Backend .NET — ASP.NET Core, Vertical Slice/Clean, EF Core, JWT | 25 | engineering |
194
196
  | `backend-nestjs` | Backend NestJS — feature modules, DI, Prisma, JWT, microservices | 25 | engineering |
195
197
  | `backend-nextjs` | Next.js full-stack — App Router, RSC, Server Actions, SEO, AI SDK | 22 | engineering |
@@ -198,48 +200,48 @@ All profiles combine freely with `+` — there is no required "base". Grouped by
198
200
 
199
201
  | Profile | Stack | Skills | Agents |
200
202
  |---------|-------|--------|--------|
201
- | `frontend` | React + Vite + TypeScript | 14 | engineering |
202
- | `design` | Figma, UX review, design system, handoff | 6 | product |
203
+ | `frontend-react-vite` | React + Vite + TypeScript | 17 | engineering |
204
+ | `design` | Figma, UX review, design system, handoff | 10 | product |
203
205
 
204
206
  ### Mobile
205
207
 
206
208
  | Profile | Stack | Skills | Agents |
207
209
  |---------|-------|--------|--------|
208
- | `mobile` | React Native + Expo + TypeScript | 12 | engineering |
209
- | `flutter` | Flutter + Dart cross-platform | 8 | engineering |
210
- | `android-native` | Kotlin + Jetpack Compose + Material Design 3 | 8 | engineering |
211
- | `ios-native` | Swift + UIKit/SwiftUI + Apple HIG | 8 | engineering |
210
+ | `mobile-react-native` | React Native + Expo + TypeScript | 17 | engineering |
211
+ | `mobile-flutter` | Flutter + Dart cross-platform | 15 | engineering |
212
+ | `mobile-android-kotlin` | Kotlin + Jetpack Compose + Material Design 3 | 14 | engineering |
213
+ | `mobile-ios-swift` | Swift + UIKit/SwiftUI + Apple HIG | 14 | engineering |
212
214
 
213
215
  ### Gamedev
214
216
 
215
217
  | Profile | Stack | Skills | Agents |
216
218
  |---------|-------|--------|--------|
217
- | `unity-dev` | Unity programmer — C#, architecture, performance, builds | 25 | game |
218
- | `unity-design` | Game designer — GDDs, balance, art bible, playtesting | 17 | game |
219
+ | `unity-dev` | Unity programmer — C#, architecture, performance, builds | 21 | game |
220
+ | `unity-design` | Game designer — GDDs, balance, art bible, playtesting | 18 | game |
219
221
  | `meshy` | 3D asset production with Meshy AI — credit-gated generation, single master + cheap derivatives, printability | 5 | — |
220
222
  | `blender` | Blender for game assets — tri budget and topology, materials with bake and color space, baked animation, validated export | 6 | — |
221
- | `unreal-dev` | Unreal Engine 5 programmer — C++, Blueprints, GAS, replication, rendering, packaging | 49 | game |
222
- | `visual-novel` | Visual novel developer — Ren'Py, narrative, branching | 17 | visualnovel, game |
223
+ | `unreal-dev` | Unreal Engine 5 programmer — C++, Blueprints, GAS, replication, rendering, packaging | 50 | game |
224
+ | `visual-novel` | Visual novel developer — Ren'Py, narrative, branching | 18 | visualnovel, game |
223
225
  | `audio` | Game audio — direction, composition, sound design, middleware, VO, QA | 13 | audio |
224
226
 
225
227
  ### Platform & Quality
226
228
 
227
229
  | Profile | Adds | Skills | Agents |
228
230
  |---------|------|--------|--------|
229
- | `infra` | Terraform, observability, secrets, rollback, K8s | 17 | devops |
231
+ | `infra` | Terraform, observability, secrets, rollback, K8s | 24 | devops |
230
232
  | `database` | Indexing, migrations, seeding, replicas, optimization | 8 | — |
231
- | `security` | Audits, OWASP, secrets, backups | 5 | — |
233
+ | `security` | Audits, OWASP, secrets, backups | 10 | — |
232
234
  | `testing` | Contract, performance, regression, flakiness | 11 | quality |
233
- | `ai` | LLM cost optimization, RAG, ML, data engineering | 7 | ai |
235
+ | `ai` | LLM cost optimization, RAG, ML, data engineering, agent and MCP design | 10 | ai |
234
236
 
235
237
  ### Project Management
236
238
 
237
239
  | Profile | Adds | Skills | Agents |
238
240
  |---------|------|--------|--------|
239
- | `agile` | Sprints, standups, retros, estimates | 10 | management, product |
240
- | `jira` | Jira via REST API — issues, sprints, boards | 3 | — |
241
- | `clickup` | ClickUp via MCP — tasks, docs, time tracking | 3 | — |
242
- | `integrations` | GitHub Projects, Slack, Postman | 3 | integrations |
241
+ | `agile` | Sprints, standups, retros, estimates | 39 | management, product |
242
+ | `jira` | Jira via REST API — issues, sprints, boards | 1 | — |
243
+ | `clickup` | ClickUp via MCP — tasks, docs, time tracking | 1 | — |
244
+ | `integrations` | GitHub Projects, Slack, Postman, Stripe, email templates, Microsoft 365, Snowflake, stack evaluation | 8 | integrations |
243
245
 
244
246
  ### Business
245
247
 
@@ -249,7 +251,7 @@ All profiles combine freely with `+` — there is no required "base". Grouped by
249
251
  | `clevel` | C-suite advisors, board prep, strategic ops | 28 | clevel |
250
252
  | `finance` | Investment analysis, financial modeling, SaaS metrics | 3 | business |
251
253
  | `marketing` | Content, growth, SEO/CRO, strategy, analytics | 44 | marketing |
252
- | `ecommerce` | Commerce end-to-end agnóstico de lenguaje — data model, checkout, inventario, órdenes, pagos, promociones, shipping/tax, listings, analytics, feeds, storefront, suscripciones | 12 | ecommerce |
254
+ | `ecommerce` | Commerce end-to-end agnóstico de lenguaje — data model, checkout, inventario, órdenes, pagos, promociones, shipping/tax, listings, analytics, feeds, storefront, suscripciones | 21 | ecommerce |
253
255
  | `regulatory` | ISO 13485, GDPR, FDA, SOC 2, ISMS, QMS, MDR | 13 | regulatory |
254
256
 
255
257
  ### Personal
@@ -264,7 +266,7 @@ All profiles combine freely with `+` — there is no required "base". Grouped by
264
266
 
265
267
  | Profile | Adds | Skills | Agents |
266
268
  |---------|------|--------|--------|
267
- | `docs` | PDF, PPTX, XLSX, DOCX, architecture decisions | 8 | — |
269
+ | `docs` | PDF, PPTX, XLSX, DOCX, architecture decisions | 5 | — |
268
270
  | `self-improving` | Agent self-improvement and skill extraction | 2 | — |
269
271
  | `statusline` | Claude Code status bar (branch, division, session info) | 0 | — |
270
272
 
@@ -323,28 +325,28 @@ npx claude-code-arcane install unity-dev+unity-design+agile+clickup
323
325
  npx claude-code-arcane install backend-go+infra+agile+jira
324
326
 
325
327
  # Full-stack monorepo
326
- npx claude-code-arcane install backend-ts+frontend+testing+database
328
+ npx claude-code-arcane install backend-typescript+frontend-react-vite+testing+database
327
329
 
328
330
  # Mobile app with CI/CD
329
- npx claude-code-arcane install mobile+agile+clickup+testing
331
+ npx claude-code-arcane install mobile-react-native+agile+clickup+testing
330
332
 
331
333
  # Secure backend with docs
332
- npx claude-code-arcane install backend-ts+security+docs+database
334
+ npx claude-code-arcane install backend-typescript+security+docs+database
333
335
 
334
336
  # AI/ML project with data pipelines
335
337
  npx claude-code-arcane install backend-go+ai+infra
336
338
 
337
339
  # SaaS with full marketing stack
338
- npx claude-code-arcane install backend-ts+marketing+business+finance
340
+ npx claude-code-arcane install backend-typescript+marketing+business+finance
339
341
 
340
342
  # Regulated medical device
341
- npx claude-code-arcane install backend-ts+regulatory+security+testing
343
+ npx claude-code-arcane install backend-typescript+regulatory+security+testing
342
344
 
343
345
  # Founder advisory setup
344
346
  npx claude-code-arcane install clevel+business+finance+marketing
345
347
 
346
348
  # With status bar
347
- npx claude-code-arcane install backend-ts+agile+statusline
349
+ npx claude-code-arcane install backend-typescript+agile+statusline
348
350
  ```
349
351
 
350
352
  ---
@@ -353,7 +355,7 @@ npx claude-code-arcane install backend-ts+agile+statusline
353
355
 
354
356
  ```bash
355
357
  # Start with a profile
356
- npx claude-code-arcane install backend-ts
358
+ npx claude-code-arcane install backend-typescript
357
359
 
358
360
  # Later, add testing and security
359
361
  npx claude-code-arcane add +testing +security
@@ -372,7 +374,7 @@ npx claude-code-arcane status
372
374
 
373
375
  # Start over
374
376
  npx claude-code-arcane clean --force
375
- npx claude-code-arcane install backend-ts+agile
377
+ npx claude-code-arcane install backend-typescript+agile
376
378
  ```
377
379
 
378
380
  ---
@@ -385,7 +387,7 @@ Work on multiple features in parallel using git worktrees, each with its own Arc
385
387
 
386
388
  ```bash
387
389
  # Create worktree + install Arcane in one step
388
- npx claude-code-arcane worktree feat/new-api --profile backend-ts+agile
390
+ npx claude-code-arcane worktree feat/new-api --profile backend-typescript+agile
389
391
 
390
392
  # Inherits profile from current installation
391
393
  npx claude-code-arcane worktree feat/new-api
@@ -410,7 +412,7 @@ When you run `npx claude-code-arcane install` inside a git worktree, Arcane auto
410
412
 
411
413
  ```bash
412
414
  # Manual: share from a specific installation
413
- npx claude-code-arcane install backend-ts --share-from /path/to/main/worktree
415
+ npx claude-code-arcane install backend-typescript --share-from /path/to/main/worktree
414
416
 
415
417
  # Disable sharing
416
418
  npx claude-code-arcane worktree feat/api --no-share
@@ -433,7 +435,7 @@ npx claude-code-arcane worktree feat/api --no-share
433
435
  ```bash
434
436
  npx claude-code-arcane status
435
437
  # === Arcane Status ===
436
- # Profiles: backend-ts + agile
438
+ # Profiles: backend-typescript + agile
437
439
  # Worktree: yes (main: /path/to/main/checkout)
438
440
  # Shared: hooks, docs (symlinked)
439
441
  # ...
package/dist/cli.js CHANGED
@@ -19,6 +19,7 @@ function parseProfile(filePath) {
19
19
  const perms = raw.permissions ?? {};
20
20
  return {
21
21
  name: String(raw.name ?? path.basename(filePath, ".yaml")),
22
+ ...raw.renamed_to ? { renamed_to: String(raw.renamed_to) } : {},
22
23
  description: String(raw.description ?? ""),
23
24
  category: String(raw.category ?? "other"),
24
25
  skills: raw.skills ?? [],
@@ -58,9 +59,32 @@ function groupByCategory(profiles) {
58
59
  }
59
60
  return groups.filter((g) => g.profiles.length > 0);
60
61
  }
62
+ var PROFILE_RENAMES = {
63
+ "backend-ts": "backend-typescript",
64
+ frontend: "frontend-react-vite",
65
+ mobile: "mobile-react-native",
66
+ flutter: "mobile-flutter",
67
+ "ios-native": "mobile-ios-swift",
68
+ "android-native": "mobile-android-kotlin"
69
+ };
70
+ function canonicalProfileName(name) {
71
+ return PROFILE_RENAMES[name] ?? name;
72
+ }
73
+ function sameProfile(a, b) {
74
+ return canonicalProfileName(a) === canonicalProfileName(b);
75
+ }
76
+ function resolveProfile(profilesDir, name) {
77
+ const canonical = canonicalProfileName(name);
78
+ const oldNames = Object.keys(PROFILE_RENAMES).filter((o) => PROFILE_RENAMES[o] === canonical);
79
+ for (const candidate of [canonical, name, ...oldNames]) {
80
+ const file = path.join(profilesDir, `${candidate}.yaml`);
81
+ if (fs.existsSync(file)) return { name: candidate, file };
82
+ }
83
+ return null;
84
+ }
61
85
  function listProfiles(profilesDir) {
62
86
  if (!fs.existsSync(profilesDir)) return [];
63
- return fs.readdirSync(profilesDir).filter((f) => f.endsWith(".yaml") && f !== "core.yaml").map((f) => parseProfile(path.join(profilesDir, f))).sort((a, b) => a.name.localeCompare(b.name));
87
+ return fs.readdirSync(profilesDir).filter((f) => f.endsWith(".yaml") && f !== "core.yaml").map((f) => parseProfile(path.join(profilesDir, f))).filter((p3) => !p3.renamed_to).sort((a, b) => a.name.localeCompare(b.name));
64
88
  }
65
89
  function mergeProfiles(profilesDir, profileNames) {
66
90
  const namesToLoad = ["core", ...profileNames];
@@ -80,13 +104,17 @@ function mergeProfiles(profilesDir, profileNames) {
80
104
  const hooks = [];
81
105
  const outputStyles = [];
82
106
  for (const name of namesToLoad) {
83
- const filePath = path.join(profilesDir, `${name}.yaml`);
84
- if (!fs.existsSync(filePath)) {
107
+ const resolved = resolveProfile(profilesDir, name);
108
+ if (!resolved) {
85
109
  console.warn(` WARN: Profile '${name}.yaml' not found, skipping`);
86
110
  continue;
87
111
  }
88
- const profile = parseProfile(filePath);
89
- loaded.push(name);
112
+ if (resolved.name !== name && resolved.name === canonicalProfileName(name)) {
113
+ console.warn(` NOTE: Profile '${name}' is now '${resolved.name}'`);
114
+ }
115
+ if (loaded.includes(resolved.name)) continue;
116
+ const profile = parseProfile(resolved.file);
117
+ loaded.push(resolved.name);
90
118
  for (const s of profile.skills) {
91
119
  if (!seenSkills.has(s)) {
92
120
  seenSkills.add(s);
@@ -178,7 +206,7 @@ function detectStack(dir) {
178
206
  }
179
207
  const isFlutter = hasFile(dir, "pubspec.yaml");
180
208
  if (isFlutter) {
181
- out.push({ profile: "flutter", reason: "pubspec.yaml" });
209
+ out.push({ profile: "mobile-flutter", reason: "pubspec.yaml" });
182
210
  }
183
211
  if (hasFile(dir, "go.mod")) {
184
212
  out.push({ profile: "backend-go", reason: "go.mod" });
@@ -192,13 +220,13 @@ function detectStack(dir) {
192
220
  out.push({ profile: "backend-nextjs", reason: "package.json: next" });
193
221
  } else if (deps["react-native"] || deps["expo"]) {
194
222
  isReactNative = true;
195
- out.push({ profile: "mobile", reason: "package.json: react-native/expo" });
223
+ out.push({ profile: "mobile-react-native", reason: "package.json: react-native/expo" });
196
224
  } else if (deps["react"] || deps["vue"] || deps["svelte"]) {
197
- out.push({ profile: "frontend", reason: "package.json: react/vue/svelte" });
225
+ out.push({ profile: "frontend-react-vite", reason: "package.json: react/vue/svelte" });
198
226
  } else if (deps["fastify"] || deps["express"] || deps["koa"] || deps["hono"]) {
199
- out.push({ profile: "backend-ts", reason: "package.json: server framework" });
227
+ out.push({ profile: "backend-typescript", reason: "package.json: server framework" });
200
228
  } else if (deps["typescript"]) {
201
- out.push({ profile: "backend-ts", reason: "package.json: typescript" });
229
+ out.push({ profile: "backend-typescript", reason: "package.json: typescript" });
202
230
  }
203
231
  }
204
232
  if (!isUnity) {
@@ -209,11 +237,11 @@ function detectStack(dir) {
209
237
  }
210
238
  if (!isFlutter && !isReactNative) {
211
239
  if ((hasFile(dir, "settings.gradle") || hasFile(dir, "settings.gradle.kts")) && hasFile(dir, "app")) {
212
- out.push({ profile: "android-native", reason: "settings.gradle + app/" });
240
+ out.push({ profile: "mobile-android-kotlin", reason: "settings.gradle + app/" });
213
241
  }
214
242
  const ios = topLevelMatch(dir, ".xcodeproj") ?? topLevelMatch(dir, ".xcworkspace") ?? (hasFile(dir, "Podfile") ? "Podfile" : void 0);
215
243
  if (ios) {
216
- out.push({ profile: "ios-native", reason: ios });
244
+ out.push({ profile: "mobile-ios-swift", reason: ios });
217
245
  }
218
246
  }
219
247
  return out;
@@ -259,7 +287,7 @@ async function runInstallWizard(profiles, detections) {
259
287
  if (names.length === 0) {
260
288
  p.outro(
261
289
  chalk.dim(
262
- "Nothing selected. Run again, or install directly: npx claude-code-arcane install backend-ts+testing"
290
+ "Nothing selected. Run again, or install directly: npx claude-code-arcane install backend-typescript+testing"
263
291
  )
264
292
  );
265
293
  return null;
@@ -1747,7 +1775,7 @@ async function installCommand(profileExpr, opts) {
1747
1775
  console.log();
1748
1776
  }
1749
1777
  console.log(
1750
- chalk2.dim(" Usage: npx claude-code-arcane install backend-ts+agile+testing\n")
1778
+ chalk2.dim(" Usage: npx claude-code-arcane install backend-typescript+agile+testing\n")
1751
1779
  );
1752
1780
  return;
1753
1781
  }
@@ -1859,14 +1887,15 @@ async function addCommand(items = []) {
1859
1887
  process.exit(1);
1860
1888
  }
1861
1889
  if (items.length === 0) {
1890
+ const installedProfiles = manifest.profiles.map(canonicalProfileName);
1862
1891
  if (!(process.stdin.isTTY && process.stdout.isTTY)) {
1863
- printCatalog(root, manifest.profiles, manifest.installed_skills);
1892
+ printCatalog(root, installedProfiles, manifest.installed_skills);
1864
1893
  return;
1865
1894
  }
1866
1895
  const selected = await runAddWizard({
1867
1896
  profiles: listProfiles(path14.join(root, "profiles")),
1868
1897
  skills: listSkills(path14.join(root, "skills")),
1869
- installedProfiles: manifest.profiles,
1898
+ installedProfiles,
1870
1899
  installedSkills: manifest.installed_skills
1871
1900
  });
1872
1901
  if (!selected) return;
@@ -1881,13 +1910,14 @@ async function addCommand(items = []) {
1881
1910
  let statuslineAdded = false;
1882
1911
  for (const item of items) {
1883
1912
  if (item.startsWith("+")) {
1884
- const profileName = item.slice(1);
1885
- const profilePath = path14.join(root, "profiles", `${profileName}.yaml`);
1886
- if (!fs12.existsSync(profilePath)) {
1887
- console.error(chalk3.red(` Profile '${profileName}' not found`));
1913
+ const requested = item.slice(1);
1914
+ const resolved = resolveProfile(path14.join(root, "profiles"), requested);
1915
+ if (!resolved) {
1916
+ console.error(chalk3.red(` Profile '${requested}' not found`));
1888
1917
  continue;
1889
1918
  }
1890
- const profile = parseProfile(profilePath);
1919
+ const profileName = resolved.name;
1920
+ const profile = parseProfile(resolved.file);
1891
1921
  for (const skill of profile.skills) {
1892
1922
  const result = addSkill(root, target, skill, manifest.installed_skills);
1893
1923
  if (result === "added") added.push(skill);
@@ -1935,7 +1965,7 @@ async function addCommand(items = []) {
1935
1965
  if (profile.permissions.allow.length > 0 || profile.permissions.deny.length > 0) {
1936
1966
  mergePermissions(claudeDir, profile.permissions);
1937
1967
  }
1938
- if (!manifest.profiles.includes(profileName)) {
1968
+ if (!manifest.profiles.some((p3) => sameProfile(p3, profileName))) {
1939
1969
  manifest.profiles.push(profileName);
1940
1970
  manifest.profile_command = manifest.profiles.filter((p3) => p3 !== "core").join("+");
1941
1971
  }
@@ -2175,30 +2205,31 @@ function removeProfile(root, target, profileName, manifest) {
2175
2205
  );
2176
2206
  return { removed: false, skills: [], agents: [] };
2177
2207
  }
2178
- if (!manifest.profiles.includes(profileName)) {
2208
+ const installedName = manifest.profiles.find((p3) => sameProfile(p3, profileName));
2209
+ if (!installedName) {
2179
2210
  console.warn(
2180
2211
  chalk4.yellow(` WARNING: Profile '${profileName}' is not installed.`)
2181
2212
  );
2182
2213
  return { removed: false, skills: [], agents: [] };
2183
2214
  }
2184
- const profilePath = path15.join(root, "profiles", `${profileName}.yaml`);
2185
- if (!fs13.existsSync(profilePath)) {
2215
+ const resolved = resolveProfile(path15.join(root, "profiles"), installedName);
2216
+ if (!resolved) {
2186
2217
  console.warn(
2187
- chalk4.yellow(` WARNING: Profile '${profileName}.yaml' not found.`)
2218
+ chalk4.yellow(` WARNING: Profile '${installedName}.yaml' not found.`)
2188
2219
  );
2189
2220
  return { removed: false, skills: [], agents: [] };
2190
2221
  }
2191
- const profile = parseProfile(profilePath);
2222
+ const profile = parseProfile(resolved.file);
2192
2223
  const remainingProfiles = manifest.profiles.filter(
2193
- (p3) => p3 !== profileName
2224
+ (p3) => p3 !== installedName
2194
2225
  );
2195
2226
  const sharedSkills = /* @__PURE__ */ new Set();
2196
2227
  const sharedAgents = /* @__PURE__ */ new Set();
2197
2228
  const sharedRules = /* @__PURE__ */ new Set();
2198
2229
  for (const rp of remainingProfiles) {
2199
- const rpPath = path15.join(root, "profiles", `${rp}.yaml`);
2200
- if (!fs13.existsSync(rpPath)) continue;
2201
- const rpDef = parseProfile(rpPath);
2230
+ const rpResolved = resolveProfile(path15.join(root, "profiles"), rp);
2231
+ if (!rpResolved) continue;
2232
+ const rpDef = parseProfile(rpResolved.file);
2202
2233
  rpDef.skills.forEach((s) => sharedSkills.add(s));
2203
2234
  rpDef.agents.forEach((a) => sharedAgents.add(a));
2204
2235
  rpDef.rules.universal.forEach((r) => sharedRules.add(r));
@@ -3059,7 +3090,7 @@ async function worktreeCommand(branch, opts) {
3059
3090
  if (!profileExpr) {
3060
3091
  console.error(
3061
3092
  chalk9.red(
3062
- "No profile specified and no existing installation to inherit from.\nUse --profile to specify one: npx claude-code-arcane worktree feat/api --profile backend-ts+agile"
3093
+ "No profile specified and no existing installation to inherit from.\nUse --profile to specify one: npx claude-code-arcane worktree feat/api --profile backend-typescript+agile"
3063
3094
  )
3064
3095
  );
3065
3096
  process.exit(1);
@@ -3488,7 +3519,7 @@ program.name("arcane").description(
3488
3519
  "Claude Code Arcane \u2014 Skills, agents, hooks and rules for Claude Code"
3489
3520
  ).version(getPackageVersion());
3490
3521
  program.command("install [profile]").description(
3491
- "Install profiles (e.g., backend-ts+agile). Without args, opens an interactive picker."
3522
+ "Install profiles (e.g., backend-typescript+agile). Without args, opens an interactive picker."
3492
3523
  ).option("-t, --target <dir>", "Target project directory", process.cwd()).option("-n, --dry-run", "Show what would be installed without changing files").option("-f, --force", "Overwrite without backup prompt").option(
3493
3524
  "-s, --share-from <dir>",
3494
3525
  "Share hooks/docs from an existing Arcane installation (e.g., main worktree)"
@@ -37,7 +37,7 @@ Arcane is a configuration harness for [Claude Code](https://docs.anthropic.com/e
37
37
  No installation needed — Arcane runs via `npx`:
38
38
 
39
39
  ```bash
40
- npx claude-code-arcane install backend-ts+agile
40
+ npx claude-code-arcane install backend-typescript+agile
41
41
  ```
42
42
 
43
43
  That's it. `npx` downloads and runs the latest version automatically.
@@ -49,7 +49,7 @@ That's it. `npx` downloads and runs the latest version automatically.
49
49
  cd ~/projects/my-app
50
50
 
51
51
  # 2. Install a profile
52
- npx claude-code-arcane install backend-ts+agile
52
+ npx claude-code-arcane install backend-typescript+agile
53
53
 
54
54
  # 3. Open Claude Code
55
55
  claude
@@ -69,10 +69,10 @@ Your project now has skills, agents, hooks, rules, and permissions tailored for
69
69
  npx claude-code-arcane install
70
70
 
71
71
  # Install a specific profile
72
- npx claude-code-arcane install backend-ts
72
+ npx claude-code-arcane install backend-typescript
73
73
 
74
74
  # Combine profiles with +
75
- npx claude-code-arcane install backend-ts+agile+testing
75
+ npx claude-code-arcane install backend-typescript+agile+testing
76
76
 
77
77
  # Install to a specific directory (default: current dir)
78
78
  npx claude-code-arcane install unity-dev --target ~/projects/my-game
@@ -178,7 +178,7 @@ Removes `.claude/` and `.claude.bak/` from the current directory. Requires `--fo
178
178
 
179
179
  ```bash
180
180
  # Create worktree + install Arcane in one step
181
- npx claude-code-arcane worktree feat/new-api --profile backend-ts+agile
181
+ npx claude-code-arcane worktree feat/new-api --profile backend-typescript+agile
182
182
 
183
183
  # Inherits profile from current installation
184
184
  npx claude-code-arcane worktree feat/new-api
@@ -219,9 +219,9 @@ All profiles are equal — pick any combination that fits your work. They are gr
219
219
 
220
220
  | Category | Profiles |
221
221
  |----------|----------|
222
- | **Backend** | `backend-ts`, `backend-go`, `backend-dotnet`, `backend-nestjs`, `backend-nextjs` |
223
- | **Frontend & Design** | `frontend`, `design` |
224
- | **Mobile** | `mobile`, `flutter`, `android-native`, `ios-native` |
222
+ | **Backend** | `backend-typescript`, `backend-go`, `backend-dotnet`, `backend-nestjs`, `backend-nextjs` |
223
+ | **Frontend & Design** | `frontend-react-vite`, `design` |
224
+ | **Mobile** | `mobile-react-native`, `mobile-flutter`, `mobile-android-kotlin`, `mobile-ios-swift` |
225
225
  | **Gamedev** | `unity-dev`, `unity-design`, `unreal-dev`, `visual-novel`, `audio`, `meshy`, `blender` |
226
226
  | **Platform & Quality** | `infra`, `database`, `security`, `testing`, `ai` |
227
227
  | **Project Management** | `agile`, `jira`, `clickup`, `integrations` |
@@ -229,6 +229,8 @@ All profiles are equal — pick any combination that fits your work. They are gr
229
229
  | **Personal** | `second-brain`, `job-hunt`, `freelance` |
230
230
  | **Utilities** | `docs`, `self-improving`, `statusline` |
231
231
 
232
+ Older names still install and update: `backend-ts`, `frontend`, `mobile`, `flutter`, `ios-native` and `android-native` resolve to `backend-typescript`, `frontend-react-vite`, `mobile-react-native`, `mobile-flutter`, `mobile-ios-swift` and `mobile-android-kotlin`.
233
+
232
234
  ### Core (always included)
233
235
 
234
236
  Every installation automatically loads `core.yaml` first:
@@ -255,7 +257,7 @@ npx claude-code-arcane install <profile>[+<profile>][+<profile>...]
255
257
 
256
258
  1. **Always explicit** — there is no "full" or "all" profile. You choose what you need.
257
259
  2. **Core is automatic** — the 21 universal skills and all hooks are always included.
258
- 3. **All profiles combine freely** — `unity-dev+unity-design`, `backend-go+frontend`, or `backend-ts+agile+testing`; there is no required "base".
260
+ 3. **All profiles combine freely** — `unity-dev+unity-design`, `backend-go+frontend-react-vite`, or `backend-typescript+agile+testing`; there is no required "base".
259
261
  4. **Deduplication is automatic** — overlapping skills across profiles are installed once.
260
262
  5. **Replace, not merge** — installing a new profile replaces the previous one entirely (with backup).
261
263
 
@@ -269,7 +271,7 @@ After the initial install, you can incrementally add or remove skills and profil
269
271
 
270
272
  ```bash
271
273
  # Start with a profile
272
- npx claude-code-arcane install backend-ts
274
+ npx claude-code-arcane install backend-typescript
273
275
 
274
276
  # Later, add testing and security
275
277
  npx claude-code-arcane add +testing +security
@@ -292,7 +294,7 @@ npx claude-code-arcane remove docker-setup
292
294
 
293
295
  # Start over completely
294
296
  npx claude-code-arcane clean --force
295
- npx claude-code-arcane install backend-ts+agile
297
+ npx claude-code-arcane install backend-typescript+agile
296
298
  ```
297
299
 
298
300
  ---
@@ -305,7 +307,7 @@ Work on multiple features in parallel using git worktrees, each with its own Arc
305
307
 
306
308
  ```bash
307
309
  # Create worktree + install Arcane in one step
308
- npx claude-code-arcane worktree feat/new-api --profile backend-ts+agile
310
+ npx claude-code-arcane worktree feat/new-api --profile backend-typescript+agile
309
311
 
310
312
  # Inherits profile from current installation
311
313
  npx claude-code-arcane worktree feat/new-api
@@ -368,25 +370,25 @@ npx claude-code-arcane install unity-dev+unity-design+agile+clickup
368
370
  npx claude-code-arcane install backend-go+infra+agile+jira
369
371
 
370
372
  # Full-stack monorepo
371
- npx claude-code-arcane install backend-ts+frontend+testing+database
373
+ npx claude-code-arcane install backend-typescript+frontend-react-vite+testing+database
372
374
 
373
375
  # Mobile app with CI/CD
374
- npx claude-code-arcane install mobile+agile+clickup+testing
376
+ npx claude-code-arcane install mobile-react-native+agile+clickup+testing
375
377
 
376
378
  # Secure backend with docs
377
- npx claude-code-arcane install backend-ts+security+docs+database
379
+ npx claude-code-arcane install backend-typescript+security+docs+database
378
380
 
379
381
  # AI/ML project with data pipelines
380
382
  npx claude-code-arcane install backend-go+ai+infra
381
383
 
382
384
  # SaaS with full marketing stack
383
- npx claude-code-arcane install backend-ts+marketing+business+finance
385
+ npx claude-code-arcane install backend-typescript+marketing+business+finance
384
386
 
385
387
  # Regulated medical device
386
- npx claude-code-arcane install backend-ts+regulatory+security+testing
388
+ npx claude-code-arcane install backend-typescript+regulatory+security+testing
387
389
 
388
390
  # With status bar
389
- npx claude-code-arcane install backend-ts+agile+statusline
391
+ npx claude-code-arcane install backend-typescript+agile+statusline
390
392
  ```
391
393
 
392
394
  ---
@@ -450,8 +452,8 @@ Every installation creates `.claude/arcane-manifest.json`:
450
452
  {
451
453
  "arcane_version": "1.0.0",
452
454
  "cli": "npm",
453
- "profile_command": "backend-ts+agile",
454
- "profiles": ["core", "backend-ts", "agile"],
455
+ "profile_command": "backend-typescript+agile",
456
+ "profiles": ["core", "backend-typescript", "agile"],
455
457
  "installed_at": "2026-05-25T15:30:00Z",
456
458
  "total_skills": 56,
457
459
  "total_rules": 6,
@@ -523,7 +525,7 @@ mv ~/projects/my-game/.claude.bak ~/projects/my-game/.claude
523
525
 
524
526
  ### Can I combine multiple stack profiles?
525
527
 
526
- Yes. `backend-go+frontend` gives you both Go backend and React frontend skills. Duplicate skills are automatically deduplicated.
528
+ Yes. `backend-go+frontend-react-vite` gives you both Go backend and React frontend skills. Duplicate skills are automatically deduplicated.
527
529
 
528
530
  ### Does the profile persist between Claude Code sessions?
529
531
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-code-arcane",
3
- "version": "2.9.9",
3
+ "version": "2.10.0",
4
4
  "description": "Skills, agents, hooks and rules for Claude Code — installable via npx claude-code-arcane",
5
5
  "type": "module",
6
6
  "bin": {
package/profiles/ai.yaml CHANGED
@@ -10,6 +10,9 @@ skills:
10
10
  - senior-data-scientist
11
11
  - senior-ml-engineer
12
12
  - senior-prompt-engineer
13
+ - agent-designer
14
+ - agent-workflow-designer
15
+ - mcp-server-builder
13
16
 
14
17
  rules:
15
18
  universal:
@@ -1,4 +1,6 @@
1
+ # Bridge for CLIs released before this profile was renamed: they look it up as 'android-native'. Keep identical to mobile-android-kotlin.yaml.
1
2
  name: android-native
3
+ renamed_to: mobile-android-kotlin
2
4
  description: "Android native — Kotlin + Jetpack Compose + Material Design 3"
3
5
  category: mobile
4
6
 
@@ -27,14 +27,6 @@ skills:
27
27
  - audit-log
28
28
  - slo-sli
29
29
  - ci-cd-setup
30
- - agent-designer
31
- - agent-workflow-designer
32
- - email-template-builder
33
- - mcp-server-builder
34
- - ms365-tenant-manager
35
- - snowflake-development
36
- - stripe-integration-expert
37
- - tech-stack-evaluator
38
30
 
39
31
  rules:
40
32
  universal:
@@ -1,4 +1,6 @@
1
+ # Bridge for CLIs released before this profile was renamed: they look it up as 'backend-ts'. Keep identical to backend-typescript.yaml.
1
2
  name: backend-ts
3
+ renamed_to: backend-typescript
2
4
  description: "Backend TypeScript — Fastify, Prisma, Zod, API design, CI"
3
5
  category: backend
4
6
 
@@ -28,14 +30,6 @@ skills:
28
30
  - websocket-realtime-rooms
29
31
  - search-setup
30
32
  - ci-cd-setup
31
- - agent-designer
32
- - agent-workflow-designer
33
- - email-template-builder
34
- - mcp-server-builder
35
- - ms365-tenant-manager
36
- - snowflake-development
37
- - stripe-integration-expert
38
- - tech-stack-evaluator
39
33
 
40
34
  rules:
41
35
  universal:
@@ -0,0 +1,51 @@
1
+ name: backend-typescript
2
+ description: "Backend TypeScript — Fastify, Prisma, Zod, API design, CI"
3
+ category: backend
4
+
5
+ skills:
6
+ - testing
7
+ - deps-audit
8
+ - env-sync
9
+ - observability
10
+ - scaffold-fastify-ts
11
+ - database
12
+ - api-design
13
+ - api-docs
14
+ - api-versioning
15
+ - auth-strategy
16
+ - jwt-strategy
17
+ - mfa-setup
18
+ - oauth-setup
19
+ - rbac-abac
20
+ - performance
21
+ - async-ops
22
+ - audit-log
23
+ - monorepo-setup
24
+ - data-migrations
25
+ - caching-strategy
26
+ - webhooks
27
+ - rate-limiting
28
+ - websocket-realtime-rooms
29
+ - search-setup
30
+ - ci-cd-setup
31
+
32
+ rules:
33
+ universal:
34
+ - backend-code
35
+ - api-code
36
+ - migration-code
37
+ gamedev:
38
+ []
39
+
40
+ agents:
41
+ - engineering
42
+
43
+ permissions:
44
+ allow:
45
+ - "Bash(npm *)"
46
+ - "Bash(yarn *)"
47
+ - "Bash(pnpm *)"
48
+ - "Bash(docker ps*)"
49
+ - "Bash(docker images*)"
50
+ deny:
51
+ []
@@ -1,4 +1,6 @@
1
+ # Bridge for CLIs released before this profile was renamed: they look it up as 'flutter'. Keep identical to mobile-flutter.yaml.
1
2
  name: flutter
3
+ renamed_to: mobile-flutter
2
4
  description: "Flutter + Dart cross-platform development"
3
5
  category: mobile
4
6
 
@@ -0,0 +1,39 @@
1
+ name: frontend-react-vite
2
+ description: "Frontend React + Vite + TypeScript"
3
+ category: frontend
4
+
5
+ skills:
6
+ - testing
7
+ - i18n-setup
8
+ - deps-audit
9
+ - env-sync
10
+ - observability
11
+ - release
12
+ - onboard
13
+ - scaffold-react-vite
14
+ - state-management
15
+ - form-validation
16
+ - accessibility
17
+ - web-security
18
+ - ci-cd-setup
19
+ - cdn-setup
20
+ - file-uploads
21
+ - frontend-dev
22
+ - csp-headers
23
+
24
+ rules:
25
+ universal:
26
+ - frontend-code
27
+ gamedev:
28
+ []
29
+
30
+ agents:
31
+ - engineering
32
+
33
+ permissions:
34
+ allow:
35
+ - "Bash(npm *)"
36
+ - "Bash(yarn *)"
37
+ - "Bash(pnpm *)"
38
+ deny:
39
+ []
@@ -1,4 +1,6 @@
1
+ # Bridge for CLIs released before this profile was renamed: they look it up as 'frontend'. Keep identical to frontend-react-vite.yaml.
1
2
  name: frontend
3
+ renamed_to: frontend-react-vite
2
4
  description: "Frontend React + Vite + TypeScript"
3
5
  category: frontend
4
6
 
@@ -1,11 +1,16 @@
1
1
  name: integrations
2
- description: "Integraciones externas — GitHub Projects, Slack, Postman"
2
+ description: "Integraciones externas — GitHub Projects, Slack, Postman, Stripe, email templates, Microsoft 365, Snowflake, evaluación de stack"
3
3
  category: management
4
4
 
5
5
  skills:
6
6
  - gh-projects
7
7
  - slack
8
8
  - postman
9
+ - stripe-integration-expert
10
+ - email-template-builder
11
+ - ms365-tenant-manager
12
+ - snowflake-development
13
+ - tech-stack-evaluator
9
14
 
10
15
  rules:
11
16
  universal:
@@ -1,4 +1,6 @@
1
+ # Bridge for CLIs released before this profile was renamed: they look it up as 'ios-native'. Keep identical to mobile-ios-swift.yaml.
1
2
  name: ios-native
3
+ renamed_to: mobile-ios-swift
2
4
  description: "iOS native — Swift + UIKit/SwiftUI + Apple HIG"
3
5
  category: mobile
4
6
 
@@ -0,0 +1,36 @@
1
+ name: mobile-android-kotlin
2
+ description: "Android native — Kotlin + Jetpack Compose + Material Design 3"
3
+ category: mobile
4
+
5
+ skills:
6
+ - testing
7
+ - deps-audit
8
+ - env-sync
9
+ - observability
10
+ - release
11
+ - onboard
12
+ - perf-profile
13
+ - android-native-dev
14
+ - state-management
15
+ - form-validation
16
+ - accessibility
17
+ - auth-strategy
18
+ - ci-cd-setup
19
+ - deploy-check
20
+
21
+ rules:
22
+ universal:
23
+ []
24
+ gamedev:
25
+ []
26
+
27
+ agents:
28
+ - engineering
29
+
30
+ permissions:
31
+ allow:
32
+ - "Bash(./gradlew *)"
33
+ - "Bash(gradle *)"
34
+ - "Bash(adb *)"
35
+ deny:
36
+ []
@@ -0,0 +1,37 @@
1
+ name: mobile-flutter
2
+ description: "Flutter + Dart cross-platform development"
3
+ category: mobile
4
+
5
+ skills:
6
+ - testing
7
+ - i18n-setup
8
+ - deps-audit
9
+ - env-sync
10
+ - observability
11
+ - release
12
+ - onboard
13
+ - perf-profile
14
+ - flutter-dev
15
+ - state-management
16
+ - form-validation
17
+ - accessibility
18
+ - auth-strategy
19
+ - ci-cd-setup
20
+ - deploy-check
21
+
22
+ rules:
23
+ universal:
24
+ - frontend-code
25
+ gamedev:
26
+ []
27
+
28
+ agents:
29
+ - engineering
30
+
31
+ permissions:
32
+ allow:
33
+ - "Bash(flutter *)"
34
+ - "Bash(dart *)"
35
+ - "Bash(pub *)"
36
+ deny:
37
+ []
@@ -0,0 +1,37 @@
1
+ name: mobile-ios-swift
2
+ description: "iOS native — Swift + UIKit/SwiftUI + Apple HIG"
3
+ category: mobile
4
+
5
+ skills:
6
+ - testing
7
+ - deps-audit
8
+ - env-sync
9
+ - observability
10
+ - release
11
+ - onboard
12
+ - perf-profile
13
+ - ios-application-dev
14
+ - state-management
15
+ - form-validation
16
+ - accessibility
17
+ - auth-strategy
18
+ - ci-cd-setup
19
+ - deploy-check
20
+
21
+ rules:
22
+ universal:
23
+ []
24
+ gamedev:
25
+ []
26
+
27
+ agents:
28
+ - engineering
29
+
30
+ permissions:
31
+ allow:
32
+ - "Bash(xcodebuild *)"
33
+ - "Bash(swift *)"
34
+ - "Bash(pod *)"
35
+ - "Bash(xcrun *)"
36
+ deny:
37
+ []
@@ -0,0 +1,39 @@
1
+ name: mobile-react-native
2
+ description: "Mobile React Native + Expo + TypeScript"
3
+ category: mobile
4
+
5
+ skills:
6
+ - testing
7
+ - i18n-setup
8
+ - deps-audit
9
+ - env-sync
10
+ - observability
11
+ - release
12
+ - onboard
13
+ - perf-profile
14
+ - scaffold-react-native
15
+ - react-native-dev
16
+ - state-management
17
+ - form-validation
18
+ - accessibility
19
+ - auth-strategy
20
+ - file-uploads
21
+ - ci-cd-setup
22
+ - deploy-check
23
+
24
+ rules:
25
+ universal:
26
+ - frontend-code
27
+ gamedev:
28
+ []
29
+
30
+ agents:
31
+ - engineering
32
+
33
+ permissions:
34
+ allow:
35
+ - "Bash(npm *)"
36
+ - "Bash(yarn *)"
37
+ - "Bash(pnpm *)"
38
+ deny:
39
+ []
@@ -1,4 +1,6 @@
1
+ # Bridge for CLIs released before this profile was renamed: they look it up as 'mobile'. Keep identical to mobile-react-native.yaml.
1
2
  name: mobile
3
+ renamed_to: mobile-react-native
2
4
  description: "Mobile React Native + Expo + TypeScript"
3
5
  category: mobile
4
6
 
@@ -27,7 +27,7 @@ Mismo criterio que el picker de `arcane install`: mostrar solo lo que **no** est
27
27
  elegir. No listar los 400 skills.
28
28
 
29
29
  1. Read `.claude/arcane-manifest.json` (`profiles`, `installed_skills`)
30
- 2. List `profiles/*.yaml` from the source, skip `core.yaml` and the ones already in `profiles`
30
+ 2. List `profiles/*.yaml` from the source, skip `core.yaml`, the ones already in `profiles`, and bridge files (those with a `renamed_to` field: an old name kept for older CLIs). An installed old name counts as its `renamed_to` profile
31
31
  3. Print the remaining profiles grouped by their `category` field, in the order of
32
32
  `CATEGORY_ORDER` (Backend, Frontend & Design, Mobile, Gamedev, Platform & Quality,
33
33
  Project Management, Business, Personal, Utilities), each with its description
@@ -15,7 +15,7 @@ List all profiles and skills available in the Arcane source repo, so you can see
15
15
  1. Read `.claude/arcane-manifest.json` to find the `source` path (Arcane repo location)
16
16
  2. If no manifest, ask the user for the Arcane repo path
17
17
  3. From the source repo, list:
18
- - **Profiles** from `profiles/*.yaml`, grouped by their `category` field (backend, frontend, mobile, gamedev, platform, management, business, personal, utilities)
18
+ - **Profiles** from `profiles/*.yaml`, skipping bridge files (those with a `renamed_to` field), grouped by their `category` field (backend, frontend, mobile, gamedev, platform, management, business, personal, utilities)
19
19
  - **All skills** in `skills/` directory, grouped by category from SKILL.md frontmatter
20
20
  4. Mark skills that are already installed in the current project with `[installed]`
21
21
  5. Close with a one-line summary (`COMPLETE — N profiles, M skills, K installed`)
@@ -25,8 +25,8 @@ List all profiles and skills available in the Arcane source repo, so you can see
25
25
  ```
26
26
  === Available Profiles ===
27
27
  Backend:
28
- backend-ts Backend TypeScript — Fastify, Prisma, Zod
29
- backend-go Backend Go — scaffold, DB, auth, API design
28
+ backend-typescript Backend TypeScript — Fastify, Prisma, Zod
29
+ backend-go Backend Go — scaffold, DB, auth, API design
30
30
  ...
31
31
 
32
32
  Project Management:
@@ -27,7 +27,7 @@ Show what profiles, skills, rules, and agents are installed in the current proje
27
27
 
28
28
  ```
29
29
  === Arcane Status ===
30
- Profiles: backend-ts + agile + testing
30
+ Profiles: backend-typescript + agile + testing
31
31
  Installed: 2026-05-01T12:00:00Z
32
32
  Source: /path/to/Claude-Code-Arcane
33
33
 
@@ -77,7 +77,7 @@ Después **rutear al trabajo técnico**, que ya existe en el repo:
77
77
  | Si el proyecto es | Seguí con |
78
78
  |---|---|
79
79
  | Historias y tickets | `/create-stories`, `/create-epics` |
80
- | Backend, frontend, mobile | El perfil técnico que corresponda (`+backend-ts`, `+frontend`, ...) |
80
+ | Backend, frontend, mobile | El perfil técnico que corresponda (`+backend-typescript`, `+frontend-react-vite`, ...) |
81
81
  | Algo sin especificar del lado del cliente | `/product-discovery` antes de codear |
82
82
  | Documentar lo que ya existe | `/reverse-document` |
83
83