claude-code-arcane 2.9.8 → 2.9.9

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 (128) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/agents/business/business-ops-lead.md +1 -14
  3. package/agents/game/gameplay-programmer.md +3 -4
  4. package/agents/game/technical-artist.md +3 -4
  5. package/dist/cli.js +41 -6
  6. package/docs/USER-GUIDE.md +1 -1
  7. package/docs/coordination-rules.md +1 -1
  8. package/docs/directory-structure.md +93 -122
  9. package/package.json +1 -1
  10. package/profiles/backend-go.yaml +1 -0
  11. package/rules/gamedev/engine-code.md +1 -1
  12. package/rules/gamedev/shader-code.md +1 -2
  13. package/rules/gamedev/vn-code.md +3 -2
  14. package/rules/implementation-workflow.md +1 -1
  15. package/rules/{ai-code.md → llm-code.md} +5 -5
  16. package/skills/agent-designer/README.md +2 -1
  17. package/skills/agent-designer/agent_evaluator.py +0 -5
  18. package/skills/ai-sdk-setup/SKILL.md +4 -4
  19. package/skills/architecture-decision/SKILL.md +3 -4
  20. package/skills/architecture-review/SKILL.md +1 -1
  21. package/skills/asset-audit/SKILL.md +0 -1
  22. package/skills/balance-check/SKILL.md +1 -1
  23. package/skills/brainstorm/SKILL.md +3 -3
  24. package/skills/brainstorm/references/next-steps-pipeline.md +8 -9
  25. package/skills/consistency-check/SKILL.md +2 -2
  26. package/skills/design-system/SKILL.md +1 -1
  27. package/skills/design-system/references/post-design-validation.md +2 -3
  28. package/skills/frontend-dev/SKILL.md +27 -28
  29. package/skills/frontend-dev/references/asset-prompt-guide.md +1 -1
  30. package/skills/frontend-dev/references/motion-recipes.md +1 -1
  31. package/skills/help/SKILL.md +1 -2
  32. package/skills/hotfix/SKILL.md +2 -2
  33. package/skills/milestone-review/SKILL.md +1 -1
  34. package/skills/patch-notes/SKILL.md +1 -1
  35. package/skills/playtest-report/SKILL.md +2 -3
  36. package/skills/playwright-pro/CLAUDE.md +2 -2
  37. package/skills/playwright-pro/SKILL.md +13 -9
  38. package/skills/playwright-pro/agents/migration-planner.md +2 -2
  39. package/skills/playwright-pro/agents/test-architect.md +1 -2
  40. package/skills/playwright-pro/agents/test-debugger.md +1 -1
  41. package/skills/playwright-pro/hooks/detect-playwright.sh +1 -1
  42. package/skills/playwright-pro/skills/browserstack/SKILL.md +5 -5
  43. package/skills/playwright-pro/skills/migrate/SKILL.md +1 -1
  44. package/skills/playwright-pro/skills/report/SKILL.md +2 -2
  45. package/skills/playwright-pro/skills/testrail/SKILL.md +5 -5
  46. package/skills/playwright-pro/templates/README.md +2 -2
  47. package/skills/prototype/SKILL.md +1 -1
  48. package/skills/quick-design/SKILL.md +1 -1
  49. package/skills/release-checklist/SKILL.md +0 -1
  50. package/skills/security-audit/SKILL.md +1 -1
  51. package/skills/self-improving-agent/CLAUDE.md +12 -12
  52. package/skills/self-improving-agent/SKILL.md +16 -12
  53. package/skills/self-improving-agent/agents/memory-analyst.md +1 -1
  54. package/skills/self-improving-agent/hooks/error-capture.sh +2 -2
  55. package/skills/self-improving-agent/reference/memory-architecture.md +2 -2
  56. package/skills/self-improving-agent/reference/promotion-rules.md +3 -3
  57. package/skills/self-improving-agent/reference/rules-directory-patterns.md +1 -1
  58. package/skills/self-improving-agent/settings.json +5 -5
  59. package/skills/self-improving-agent/skills/extract/SKILL.md +7 -7
  60. package/skills/self-improving-agent/skills/promote/SKILL.md +5 -5
  61. package/skills/self-improving-agent/skills/remember/SKILL.md +9 -9
  62. package/skills/self-improving-agent/skills/review/SKILL.md +7 -7
  63. package/skills/self-improving-agent/skills/status/SKILL.md +8 -8
  64. package/skills/senior-ml-engineer/references/llm_integration_guide.md +14 -31
  65. package/skills/senior-prompt-engineer/SKILL.md +10 -10
  66. package/skills/senior-prompt-engineer/references/prompt_engineering_patterns.md +1 -1
  67. package/skills/senior-prompt-engineer/scripts/agent_orchestrator.py +43 -40
  68. package/skills/senior-prompt-engineer/scripts/prompt_optimizer.py +23 -66
  69. package/skills/shader-dev/reference/fluid-simulation.md +4 -4
  70. package/skills/shader-dev/reference/simulation-physics.md +6 -6
  71. package/skills/shader-dev/reference/voxel-rendering.md +1 -1
  72. package/skills/shader-dev/techniques/ambient-occlusion.md +1 -1
  73. package/skills/shader-dev/techniques/analytic-ray-tracing.md +2 -2
  74. package/skills/shader-dev/techniques/domain-warping.md +2 -2
  75. package/skills/shader-dev/techniques/fluid-simulation.md +45 -45
  76. package/skills/shader-dev/techniques/multipass-buffer.md +24 -24
  77. package/skills/shader-dev/techniques/normal-estimation.md +1 -1
  78. package/skills/shader-dev/techniques/particle-system.md +16 -16
  79. package/skills/shader-dev/techniques/polar-uv-manipulation.md +1 -1
  80. package/skills/shader-dev/techniques/post-processing.md +7 -7
  81. package/skills/shader-dev/techniques/sdf-3d.md +1 -1
  82. package/skills/shader-dev/techniques/simulation-physics.md +24 -24
  83. package/skills/shader-dev/techniques/sound-synthesis.md +2 -2
  84. package/skills/shader-dev/techniques/voronoi-cellular-noise.md +1 -1
  85. package/skills/shader-dev/techniques/voxel-rendering.md +60 -60
  86. package/skills/smoke-check/SKILL.md +1 -1
  87. package/skills/sprint-plan/SKILL.md +1 -2
  88. package/skills/start/SKILL.md +7 -7
  89. package/skills/story-done/SKILL.md +1 -1
  90. package/skills/test-helpers/SKILL.md +7 -2
  91. package/skills/test-setup/SKILL.md +1 -1
  92. package/skills/ue-actor-component-architecture/SKILL.md +0 -1
  93. package/skills/ue-ai-navigation/SKILL.md +0 -1
  94. package/skills/ue-animation-system/SKILL.md +0 -1
  95. package/skills/ue-async-threading/SKILL.md +0 -1
  96. package/skills/ue-audio-system/SKILL.md +0 -1
  97. package/skills/ue-blueprints/SKILL.md +0 -1
  98. package/skills/ue-character-movement/SKILL.md +0 -1
  99. package/skills/ue-cpp-foundations/SKILL.md +0 -1
  100. package/skills/ue-data-assets-tables/SKILL.md +0 -1
  101. package/skills/ue-editor-tools/SKILL.md +0 -1
  102. package/skills/ue-game-features/SKILL.md +0 -1
  103. package/skills/ue-gameplay-abilities/SKILL.md +0 -1
  104. package/skills/ue-gameplay-framework/SKILL.md +0 -1
  105. package/skills/ue-input-system/SKILL.md +0 -1
  106. package/skills/ue-mass-entity/SKILL.md +0 -1
  107. package/skills/ue-materials-rendering/SKILL.md +0 -1
  108. package/skills/ue-module-build-system/SKILL.md +0 -1
  109. package/skills/ue-naming-conventions/SKILL.md +0 -1
  110. package/skills/ue-networking-replication/SKILL.md +0 -1
  111. package/skills/ue-niagara-effects/SKILL.md +0 -1
  112. package/skills/ue-packaging/SKILL.md +0 -1
  113. package/skills/ue-physics-collision/SKILL.md +0 -1
  114. package/skills/ue-procedural-generation/SKILL.md +0 -1
  115. package/skills/ue-project-context/SKILL.md +0 -1
  116. package/skills/ue-sequencer-cinematics/SKILL.md +0 -1
  117. package/skills/ue-serialization-savegames/SKILL.md +0 -1
  118. package/skills/ue-state-trees/SKILL.md +0 -1
  119. package/skills/ue-testing-debugging/SKILL.md +0 -1
  120. package/skills/ue-ui-umg-slate/SKILL.md +0 -1
  121. package/skills/ue-world-level-streaming/SKILL.md +0 -1
  122. package/skills/ux-review/SKILL.md +1 -1
  123. package/docs/RELEASE-SETUP.md +0 -99
  124. package/docs/presentations/arcane-overview-12.pptx +0 -0
  125. package/docs/presentations/arcane-overview.pptx +0 -0
  126. package/docs/presentations/build_arcane_deck.py +0 -310
  127. package/docs/presentations/build_arcane_deck_12.py +0 -399
  128. package/docs/trusted-publishing-setup.md +0 -163
package/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ ## [2.9.9](https://github.com/SebastianLuser/claude-code-arcane/compare/v2.9.8...v2.9.9) (2026-10-10)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **content:** remove stale facts and dated prompting found by a prompt audit ([f6d0cf0](https://github.com/SebastianLuser/claude-code-arcane/commit/f6d0cf0abef40682a5ea7b5546c740787267c2bb))
7
+ * **rules:** install the LLM rule with backend-go as llm-code ([8fbac31](https://github.com/SebastianLuser/claude-code-arcane/commit/8fbac317376dd0243878db501ce996df705e3478))
8
+ * **skills:** price current Claude models in the cost estimators ([352e062](https://github.com/SebastianLuser/claude-code-arcane/commit/352e0623123de5833e6734fa785e71c06c004429))
9
+ * **skills:** reach playwright-pro and self-improving-agent sub-skills through their parent ([4cc9dff](https://github.com/SebastianLuser/claude-code-arcane/commit/4cc9dffe71c406d1e12ccdb041587b3607a301b2))
10
+ * **skills:** read the engine from the project in the last four skills ([120c8eb](https://github.com/SebastianLuser/claude-code-arcane/commit/120c8eb0ddee200acea6e2f29b0f04e3118b6b5a))
11
+ * **skills:** route the remaining skills to skills and files that exist ([eb2eea0](https://github.com/SebastianLuser/claude-code-arcane/commit/eb2eea0eed4e1ba8964a1944548cb9ae9b386a4e))
12
+ * **skills:** stop pricing and advising prompts from 2023 in the prompt tools ([429247d](https://github.com/SebastianLuser/claude-code-arcane/commit/429247db70689e3df86fc1bfdf7b78cab3e10195))
13
+ * **update:** keep .claude/docs/ current like the other installed content ([f753c03](https://github.com/SebastianLuser/claude-code-arcane/commit/f753c030b73c89d5f3d035f0460954ba8d8c69a4))
14
+
1
15
  ## [2.9.8](https://github.com/SebastianLuser/claude-code-arcane/compare/v2.9.7...v2.9.8) (2026-09-09)
2
16
 
3
17
 
@@ -32,20 +32,7 @@ Sos el **Business Operations Lead**. Tu rol: que el motor comercial funcione —
32
32
 
33
33
  ## Customer Health Score
34
34
 
35
- ```
36
- Health Score = weighted average of:
37
- Product Usage (30%): DAU/MAU, feature adoption, depth
38
- Support (20%): Ticket volume, CSAT, escalations
39
- Engagement (20%): NPS, exec sponsor active, QBR attendance
40
- Financial (15%): Payment on time, expansion signals
41
- Relationship (15%): Champion changes, stakeholder map
42
-
43
- Tiers:
44
- 90-100: Healthy (green) → Expansion candidate
45
- 70-89: Monitor (yellow) → Proactive outreach
46
- 50-69: At Risk (orange) → Success plan
47
- <50: Critical (red) → Executive intervention
48
- ```
35
+ Calculate it with `health_score_calculator.py` from the `customer-success-manager` skill: its dimensions, weights and segment thresholds are the ones in use. Do not compute it by hand.
49
36
 
50
37
  ## Protocolo
51
38
 
@@ -69,10 +69,9 @@ arrive. Decide, act, and make your reasoning auditable in the report.
69
69
  ### Engine Version Safety
70
70
 
71
71
  **Engine Version Safety**: Before suggesting any engine-specific API, class, or node:
72
- 1. Check `docs/engine-reference/[engine]/VERSION.md` for the project's pinned engine version
73
- 2. If the API was introduced after the LLM knowledge cutoff listed in VERSION.md, flag it explicitly:
74
- > "This API may have changed in [version] — verify against the reference docs before using."
75
- 3. Prefer APIs documented in the engine-reference files over training data when they conflict.
72
+ 1. Read the engine version from the project: `ProjectSettings/ProjectVersion.txt` (Unity) or `EngineAssociation` in the `.uproject` (Unreal)
73
+ 2. If the API may have changed in that version, flag it explicitly:
74
+ > "This API may have changed in [version] — verify against the engine docs before using."
76
75
 
77
76
  **ADR Compliance**: Before implementing any system, check `docs/architecture/` for a governing ADR.
78
77
  If an ADR exists for this system:
@@ -68,10 +68,9 @@ arrive. Decide, act, and make your reasoning auditable in the report.
68
68
  ### Engine Version Safety
69
69
 
70
70
  **Engine Version Safety**: Before suggesting any engine-specific API, class, or node:
71
- 1. Check `docs/engine-reference/[engine]/VERSION.md` for the project's pinned engine version
72
- 2. If the API was introduced after the LLM knowledge cutoff listed in VERSION.md, flag it explicitly:
73
- > "This API may have changed in [version] — verify against the reference docs before using."
74
- 3. Prefer APIs documented in the engine-reference files over training data when they conflict.
71
+ 1. Read the engine version from the project: `ProjectSettings/ProjectVersion.txt` (Unity) or `EngineAssociation` in the `.uproject` (Unreal)
72
+ 2. If the API may have changed in that version, flag it explicitly:
73
+ > "This API may have changed in [version] — verify against the engine docs before using."
75
74
 
76
75
  ### Performance Budgets
77
76
 
package/dist/cli.js CHANGED
@@ -751,7 +751,8 @@ function computeContentHashes(claudeDir) {
751
751
  skills: {},
752
752
  rules: {},
753
753
  agents: {},
754
- hooks: {}
754
+ hooks: {},
755
+ docs: {}
755
756
  };
756
757
  const skillsDir = path7.join(claudeDir, "skills");
757
758
  if (fs6.existsSync(skillsDir)) {
@@ -790,6 +791,8 @@ function computeContentHashes(claudeDir) {
790
791
  }
791
792
  }
792
793
  }
794
+ const docsDir = path7.join(claudeDir, "docs");
795
+ if (fs6.existsSync(docsDir)) hashes.docs = hashDirectory(docsDir);
793
796
  return hashes;
794
797
  }
795
798
  function computeSourceHashes(packageRoot, skills, rules, agents) {
@@ -797,7 +800,8 @@ function computeSourceHashes(packageRoot, skills, rules, agents) {
797
800
  skills: {},
798
801
  rules: {},
799
802
  agents: {},
800
- hooks: {}
803
+ hooks: {},
804
+ docs: {}
801
805
  };
802
806
  for (const skill of skills) {
803
807
  const skillDir = path7.join(packageRoot, "skills", skill);
@@ -836,6 +840,8 @@ function computeSourceHashes(packageRoot, skills, rules, agents) {
836
840
  }
837
841
  }
838
842
  }
843
+ const docsDir = path7.join(packageRoot, "docs");
844
+ if (fs6.existsSync(docsDir)) hashes.docs = hashDirectory(docsDir);
839
845
  return hashes;
840
846
  }
841
847
 
@@ -2547,6 +2553,10 @@ Update available: ${chalk7.red(installedVersion)} -> ${chalk7.green(currentVersi
2547
2553
  const sourceHashes = computeSourceHashes(root, merged.skills, allRules, merged.agents);
2548
2554
  const claudeDir = path17.join(target, ".claude");
2549
2555
  const installedHashes = computeContentHashes(claudeDir);
2556
+ if (isSymlink(path17.join(claudeDir, "docs"))) {
2557
+ sourceHashes.docs = {};
2558
+ installedHashes.docs = {};
2559
+ }
2550
2560
  const unhashed = earlySync;
2551
2561
  const items = computeUpdatePlan(
2552
2562
  manifest.content_hashes ?? null,
@@ -2649,10 +2659,21 @@ function printGeneralSummary(results, isDryRun) {
2649
2659
  ${prefix}Done. ${results.length} installation${results.length === 1 ? "" : "s"} processed:`));
2650
2660
  console.log(` ${chalk7.green(updated)} ${isDryRun ? "would change" : "updated"}, ${chalk7.dim(unchanged + " unchanged")}`);
2651
2661
  }
2662
+ var RETIRED_DOCS = /* @__PURE__ */ new Set([
2663
+ "RELEASE-SETUP.md",
2664
+ "trusted-publishing-setup.md",
2665
+ "presentations/arcane-overview.pptx",
2666
+ "presentations/arcane-overview-12.pptx",
2667
+ "presentations/build_arcane_deck.py",
2668
+ "presentations/build_arcane_deck_12.py"
2669
+ ]);
2652
2670
  function makeOwnershipCheck(manifest) {
2653
2671
  const hashes = manifest.content_hashes;
2654
2672
  if (hashes) {
2655
- return (type, name) => name in (hashes[type] ?? {});
2673
+ return (type, name) => {
2674
+ if (type === "docs" && !hashes.docs) return RETIRED_DOCS.has(name);
2675
+ return name in (hashes[type] ?? {});
2676
+ };
2656
2677
  }
2657
2678
  const skills = new Set(manifest.installed_skills ?? []);
2658
2679
  const rules = new Set(
@@ -2671,6 +2692,8 @@ function makeOwnershipCheck(manifest) {
2671
2692
  return agents.has(name);
2672
2693
  case "hooks":
2673
2694
  return true;
2695
+ case "docs":
2696
+ return RETIRED_DOCS.has(name);
2674
2697
  }
2675
2698
  };
2676
2699
  }
@@ -2689,7 +2712,8 @@ function hashesToRecord(fresh, previous, items, force) {
2689
2712
  skills: { ...fresh.skills },
2690
2713
  rules: { ...fresh.rules },
2691
2714
  agents: { ...fresh.agents },
2692
- hooks: { ...fresh.hooks }
2715
+ hooks: { ...fresh.hooks },
2716
+ docs: { ...fresh.docs }
2693
2717
  };
2694
2718
  for (const item of items) {
2695
2719
  const bucket = `${item.type}s`;
@@ -2706,8 +2730,8 @@ function hashesToRecord(fresh, previous, items, force) {
2706
2730
  }
2707
2731
  function computeUpdatePlan(manifestHashes, installedHashes, sourceHashes, owned, exemptAgentDivisions = /* @__PURE__ */ new Set()) {
2708
2732
  const items = [];
2709
- for (const contentType of ["skills", "rules", "agents", "hooks"]) {
2710
- const itemType = contentType === "skills" ? "skill" : contentType === "rules" ? "rule" : contentType === "agents" ? "agent" : "hook";
2733
+ for (const contentType of ["skills", "rules", "agents", "hooks", "docs"]) {
2734
+ const itemType = contentType === "skills" ? "skill" : contentType === "rules" ? "rule" : contentType === "agents" ? "agent" : contentType === "hooks" ? "hook" : "doc";
2711
2735
  const manifest = manifestHashes?.[contentType] ?? {};
2712
2736
  const installed = installedHashes[contentType];
2713
2737
  const source = sourceHashes[contentType];
@@ -2942,6 +2966,8 @@ function getSourcePath(item, root) {
2942
2966
  return path17.join(root, "agents", item.name);
2943
2967
  case "hook":
2944
2968
  return path17.join(root, "hooks", item.name);
2969
+ case "doc":
2970
+ return path17.join(root, "docs", item.name);
2945
2971
  default:
2946
2972
  return null;
2947
2973
  }
@@ -2956,6 +2982,15 @@ function getInstalledPath(item, claudeDir) {
2956
2982
  return path17.join(claudeDir, "agents", item.name);
2957
2983
  case "hook":
2958
2984
  return path17.join(claudeDir, "hooks", item.name);
2985
+ case "doc":
2986
+ return path17.join(claudeDir, "docs", item.name);
2987
+ }
2988
+ }
2989
+ function isSymlink(p3) {
2990
+ try {
2991
+ return fs15.lstatSync(p3).isSymbolicLink();
2992
+ } catch {
2993
+ return false;
2959
2994
  }
2960
2995
  }
2961
2996
 
@@ -414,7 +414,7 @@ La lista `agents:` de un profile acepta dos formas:
414
414
 
415
415
  ```yaml
416
416
  agents:
417
- - game # la división entera: 30 agentes
417
+ - game # la división entera: 32 agentes
418
418
  - quality/security-architect # solo ese agente
419
419
  ```
420
420
 
@@ -49,7 +49,7 @@ Cuando un agente es invocado como "gate" (approval gate), debe empezar la respue
49
49
 
50
50
  Luego el rationale. El token en la primera línea permite que el skill orquestador lo parsee.
51
51
 
52
- **Escalation:** Cuando múltiples gates corren en paralelo, aplica el verdict más estricto — un REJECT override cualquier APPROVE. Ver `director-gates.md` para gates definidos.
52
+ **Escalation:** Cuando múltiples gates corren en paralelo, aplica el verdict más estricto — un REJECT override cualquier APPROVE.
53
53
 
54
54
  ## Regla #6 — Cross-Division Collaboration
55
55
 
@@ -1,31 +1,40 @@
1
1
  # Estructura de Directorios
2
2
 
3
+ Hay dos layouts distintos y conviene no mezclarlos:
4
+
5
+ - **El repo** (`claude-code-arcane/`): la fuente. Acá se edita el contenido y el instalador.
6
+ - **Un proyecto instalado** (`<proyecto>/.claude/`): lo que `npx claude-code-arcane install <profile>` copia. Solo llega lo que algún profile lista.
7
+
8
+ ## El repo
9
+
3
10
  ```
4
- Claude-Code-Arcane/
5
- ├── CLAUDE.md # Configuración maestra
6
- ├── README.md # Documentación del repo
7
- ├── pyproject.toml # Python package config
11
+ claude-code-arcane/
12
+ ├── CLAUDE.md # Guía para trabajar en este repo
13
+ ├── README.md # Documentación pública
14
+ ├── CHANGELOG.md # Generado por semantic-release, no se edita a mano
15
+ ├── ATTRIBUTION.md # Origen del contenido adaptado de terceros
8
16
  ├── LICENSE
9
- ├── .gitignore
17
+ ├── package.json # CLI npm: build (tsup), test (vitest), test:skills (Python)
18
+ ├── tsconfig.json
19
+ ├── vitest.config.ts # Aísla ARCANE_SOURCE y ARCANE_HOME para la suite
20
+ ├── .releaserc.json # semantic-release
21
+ │
22
+ ├── src/ # Instalador TypeScript (único código con build y typecheck)
23
+ │ ├── cli.ts # Entry point: arcane install/add/remove/update/...
24
+ │ ├── commands/ # Un archivo por subcomando
25
+ │ ├── installer.ts # Copia contenido a .claude/ y genera settings.json
26
+ │ ├── profiles.ts # Parser y merge de profiles/*.yaml
27
+ │ ├── agent-entries.ts # Entradas de agentes: división entera o agente suelto
28
+ │ ├── content-source.ts, cache.ts # Fuente del contenido: bundled / github / cache
29
+ │ ├── manifest.ts, content-hash.ts # arcane-manifest.json y hashes para update
30
+ │ ├── registry.ts # ~/.arcane/installations.json
31
+ │ ├── worktree.ts # Instalación en git worktrees
32
+ │ ├── wizard.ts, detect.ts # Wizard interactivo y auto-detección de stack
33
+ │ └── __tests__/ # Suite vitest, incluidos los invariantes de docs
10
34
  │
11
- ├── arcane/ # Python CLI (installer, profiles parser)
12
- │ ├── cli.py # Entry point: arcane install/list/clean
13
- │ ├── installer.py # Profile installer logic
14
- │ └── profiles.py # Profile parser & merger
35
+ ├── profiles/ # Profiles declarativos (.yaml); core.yaml siempre se carga
15
36
  │
16
- ├── profiles/ # 27 profile definitions (.profile)
17
- │ ├── core.profile # Always included (21 skills, hooks, rules)
18
- │ ├── backend-go.profile # Base: Go backend
19
- │ ├── backend-ts.profile # Base: TypeScript backend
20
- │ ├── frontend.profile # Base: React frontend
21
- │ ├── unity-dev.profile # Base: Unity programmer
22
- │ ├── ai.profile # Add-on: AI/ML
23
- │ ├── clevel.profile # Add-on: C-suite advisory
24
- │ ├── business.profile # Add-on: Business ops
25
- │ ├── marketing.profile # Add-on: Marketing
26
- │ ├── finance.profile # Add-on: Finance
27
- │ ├── regulatory.profile # Add-on: Regulatory & compliance
28
- │ └── ... # agile, testing, infra, security, etc.
37
+ ├── skills/ # Un directorio por skill: SKILL.md + references/ + scripts/
29
38
  │
30
39
  ├── agents/ # 115 agent definitions (root level)
31
40
  │ ├── ai/ # 4 agents
@@ -46,116 +55,78 @@ Claude-Code-Arcane/
46
55
  │ ├── regulatory/ # 3 agents
47
56
  │ └── visualnovel/ # 6 agents
48
57
  │
49
- ├── .claude/ # Claude Code configuration
50
- │ ├── settings.json # Hooks, permissions, safety
51
- │ ├── settings.local.json # User-specific overrides (gitignored)
52
- │ ├── statusline.sh # Status line bash script
53
- │ ├── setup-skill-junctions.bat # Windows: create skill junctions
54
- │ ├── remove-skill-junctions.bat # Windows: remove skill junctions
55
- │ │
56
- │ ├── skills-agile/ # 35 agile/PM skills
57
- │ ├── skills-ai/ # 7 AI/ML skills
58
- │ ├── skills-arcane/ # 7 Arcane self-management skills
59
- │ ├── skills-backend/ # 45 backend skills
60
- │ ├── skills-business/ # 4 business skills
61
- │ ├── skills-clevel-advisors/ # 10 C-suite advisor skills
62
- │ ├── skills-clevel-operations/ # 18 C-suite operations skills
63
- │ ├── skills-design/ # 9 design skills
64
- │ ├── skills-devops/ # 17 DevOps/infra skills
65
- │ ├── skills-docs/ # 13 documentation skills
66
- │ ├── skills-finance/ # 3 finance skills
67
- │ ├── skills-frontend/ # 9 frontend skills
68
- │ ├── skills-gamedev/ # 19 gamedev skills + _rules/ + _templates/
69
- │ ├── skills-git/ # 21 git workflow skills
70
- │ ├── skills-integrations/ # 3 integration skills
71
- │ ├── skills-marketing-content/ # 8 content marketing skills
72
- │ ├── skills-marketing-growth/ # 10 growth marketing skills
73
- │ ├── skills-marketing-seo/ # 11 SEO/CRO skills
74
- │ ├── skills-marketing-strategy/ # 15 marketing strategy skills
75
- │ ├── skills-mobile/ # 5 mobile skills
76
- │ ├── skills-regulatory/ # 13 regulatory/compliance skills
77
- │ ├── skills-release/ # 5 release skills
78
- │ ├── skills-security/ # 9 security skills
79
- │ ├── skills-testing/ # 13 testing skills
80
- │ │
81
- │ ├── hooks/ # 14 lifecycle hooks
82
- │ │ ├── session-start.sh
83
- │ │ ├── session-stop.sh
84
- │ │ ├── detect-division.sh
85
- │ │ ├── detect-gaps.sh
86
- │ │ ├── validate-commit.sh
87
- │ │ ├── validate-push.sh
88
- │ │ ├── validate-secrets.sh
89
- │ │ ├── validate-assets.sh
90
- │ │ ├── validate-skill-change.sh
91
- │ │ ├── notify.sh
92
- │ │ ├── pre-compact.sh
93
- │ │ ├── post-compact.sh
94
- │ │ ├── log-agent.sh
95
- │ │ └── log-agent-stop.sh
96
- │ │
97
- │ ├── rules/ # 9 path-scoped rules
98
- │ │ ├── backend-code.md
99
- │ │ ├── frontend-code.md
100
- │ │ ├── api-code.md
101
- │ │ ├── migration-code.md
102
- │ │ ├── infra-code.md
103
- │ │ ├── ai-code.md
104
- │ │ ├── data-files.md
105
- │ │ ├── test-standards.md
106
- │ │ └── prototype-code.md
107
- │ │
108
- │ └── docs/ # Internal documentation
109
- │ ├── division-structure.md
110
- │ ├── agent-hierarchy.md
111
- │ ├── directory-structure.md # This file
112
- │ ├── coding-standards.md
113
- │ ├── technical-preferences.md
114
- │ ├── coordination-rules.md
115
- │ ├── context-management.md
116
- │ ├── workflow-catalog.yaml
117
- │ ├── stack-registry.md
118
- │ └── templates/
58
+ ├── rules/ # Rules universales (rules.universal en los profiles)
59
+ │ └── gamedev/ # Rules de gamedev (rules.gamedev en los profiles)
119
60
  │
120
- ├── docs/ # Public documentation
121
- │ ├── SKILLS-CATALOG.md # Complete skill catalog
122
- │ └── USER-GUIDE.md # User guide
61
+ ├── hooks/ # Scripts bash de lifecycle; statusline.sh incluido
62
+ ├── output-styles/ # Output styles (arcane.md)
63
+ ├── templates/
64
+ │ └── gamedev/ # Plantillas de GDD y docs de juego
65
+ ├── docs/ # Documentación; se copia entera a .claude/docs/
66
+ │ ├── templates/ # Plantillas de ADR, PRD, RFC, test plan, etc.
67
+ │ ├── gates/ # Gates de fase (software y gamedev)
68
+ │ └── gamedev/, software/ # coding-standards por dominio
123
69
  │
124
- ├── tools/ # Migration & wrapper scripts
125
- │ ├── arcane.sh # Legacy bash installer
126
- │ ├── arcane.bat # Windows wrapper
127
- │ └── migrate-*.sh # Migration tools
128
- │
129
- ├── skills-selftest/ # QA framework for skills/agents
70
+ ├── skills-selftest/ # QA de skills y agentes (no se instala)
130
71
  │ ├── CLAUDE.md
131
- │ ├── catalog.yaml # Registry: 305 skills + 94 agents
132
- │ ├── quality-rubric.md
133
- │ ├── skills/[category]/ # Behavioral specs per skill
134
- │ ├── agents/[tier]/ # Behavioral specs per agent
135
- │ ├── templates/
136
- │ └── results/ # Test outputs (gitignored)
72
+ │ ├── catalog.yaml # Registro de skills y agentes con su spec
73
+ │ ├── quality-rubric.md # Métricas por categoría
74
+ │ ├── skills/<categoria>/ # Specs de comportamiento por skill
75
+ │ ├── agents/<tier>/ # Specs de comportamiento por agente
76
+ │ └── templates/ # Plantillas para specs nuevos
137
77
  │
138
- └── production/ # Runtime state
139
- └── session-state/
78
+ ├── tests/ # Specs Python de los scripts de skills (npm run test:skills)
79
+ ├── maintainers/ # Cómo publicar Arcane (release, npm). No se instala ni se publica
80
+ ├── scripts/ # Utilidades de mantenimiento del repo
81
+ ├── .github/workflows/ # ci.yml (vitest, typecheck, specs Python) y release.yml (semantic-release)
82
+ └── .claude/ # La instalación de Arcane que usa este mismo repo
140
83
  ```
141
84
 
142
- ## Rules Split Policy
85
+ ## Un proyecto instalado
143
86
 
144
- - **`.claude/rules/`** — reglas universales que aplican a cualquier stack software (backend APIs, frontends web/mobile, DBs, infra, LLM apps). Usan paths genéricos (`src/api/**`, `src/components/**`, `migrations/**`).
145
- - **`.claude/skills-gamedev/_rules/`** — reglas exclusivas de gamedev (frame budgets, shaders, NPC AI, GDDs, lore). Usan paths gamedev (`src/gameplay/**`, `assets/shaders/**`, `design/gdd/**`, `design/narrative/**`).
87
+ ```
88
+ <proyecto>/
89
+ ├── .claude/
90
+ │ ├── settings.json # Generado: permisos, hooks y statusline
91
+ │ ├── arcane-manifest.json # Profiles instalados y content_hashes de cada archivo
92
+ │ ├── skills/<skill>/ # Los skills de los profiles elegidos, con sus references/ y scripts/
93
+ │ │ └── _templates/ # templates/gamedev/, solo si algún profile trae rules de gamedev
94
+ │ ├── agents/<division>/ # Divisiones enteras o agentes sueltos, según el profile
95
+ │ ├── rules/ # Universales y de gamedev juntas, en un solo nivel
96
+ │ ├── hooks/ # Todos los hooks de hooks/ salvo statusline.sh
97
+ │ ├── statusline.sh # Solo con el profile statusline
98
+ │ ├── output-styles/ # Solo si algún profile declara output_styles
99
+ │ ├── docs/ # Copia de docs/; arcane update la mantiene al día
100
+ │ └── .arcane-trash/ # Lo que arcane update saca; nunca se borra con rm
101
+ ├── .claude.bak/ # Backup de .claude/ antes de instalar
102
+ └── production/session-state/ # Estado de sesión que escriben los hooks
103
+ ```
146
104
 
147
- Cuando un proyecto es dual (ej. web + game), ambos sets de rules aplican por sus paths scoped.
105
+ Fuera del proyecto, `~/.arcane/` guarda el registro de instalaciones (`installations.json`) y el contenido descargado de GitHub (`cache/<version>/`). `ARCANE_HOME` lo desvía.
148
106
 
149
- ## Hook Events Wiring
107
+ En un git worktree, `hooks/` y `docs/` son symlinks al worktree principal; `skills/`, `agents/` y `rules/` se copian para que puedan divergir por rama.
150
108
 
151
- Ver `settings.json`. Los eventos wireados:
109
+ ## Rules: dos carpetas en el repo, una en el proyecto
110
+
111
+ - **`rules/`**: reglas para cualquier stack de software (backend, frontend, APIs, DBs, infra, apps LLM). Paths genéricos como `src/api/**` o `src/components/**`.
112
+ - **`rules/gamedev/`**: reglas exclusivas de gamedev (frame budgets, shaders, IA de NPCs, GDDs, lore). Paths como `src/gameplay/**`, `assets/shaders/**` o `design/gdd/**`.
113
+
114
+ El installer copia las dos al mismo `.claude/rules/`, sin subcarpeta. Por eso un nombre no puede repetirse entre las dos carpetas: el segundo archivo pisaría al primero. La rule de apps LLM se llama `llm-code.md` justamente para no chocar con `gamedev/ai-code.md`, que es la de IA de NPCs.
115
+
116
+ Cuando un proyecto es dual (por ejemplo web + juego), las dos familias aplican cada una por sus paths.
117
+
118
+ ## Hooks: cómo se cablean
119
+
120
+ Los eventos los define `src/installer.ts` al generar `settings.json`, no los profiles. Todo proyecto instalado recibe estos:
152
121
 
153
122
  | Evento | Hooks |
154
123
  |--------|-------|
155
- | SessionStart | session-start.sh → detect-division.sh → detect-gaps.sh |
156
- | PreToolUse (Bash) | validate-commit.sh, validate-push.sh, validate-secrets.sh |
157
- | PostToolUse (Write/Edit) | validate-assets.sh, validate-skill-change.sh |
158
- | Notification | notify.sh |
159
- | PreCompact / PostCompact | pre-compact.sh / post-compact.sh |
160
- | Stop | session-stop.sh |
161
- | SubagentStart / SubagentStop | log-agent.sh / log-agent-stop.sh |
124
+ | SessionStart | `session-start.sh` → `detect-division.sh` → `detect-unreal.sh` → `detect-gaps.sh` → `check-update.sh` |
125
+ | PreToolUse (`Bash`) | `validate-commit.sh`, `validate-push.sh`, `validate-secrets.sh` |
126
+ | PostToolUse (`Write\|Edit`) | `validate-assets.sh`, `validate-skill-change.sh` |
127
+ | Notification | `notify.sh` |
128
+ | PreCompact / PostCompact | `pre-compact.sh` / `post-compact.sh` |
129
+ | Stop | `session-stop.sh` |
130
+ | SubagentStart / SubagentStop | `log-agent.sh` / `log-agent-stop.sh` |
131
+
132
+ La statusline (`statusline.sh`) se configura aparte, solo con el profile `statusline`.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-code-arcane",
3
- "version": "2.9.8",
3
+ "version": "2.9.9",
4
4
  "description": "Skills, agents, hooks and rules for Claude Code — installable via npx claude-code-arcane",
5
5
  "type": "module",
6
6
  "bin": {
@@ -41,6 +41,7 @@ rules:
41
41
  - backend-code
42
42
  - api-code
43
43
  - migration-code
44
+ - llm-code
44
45
  gamedev:
45
46
  []
46
47
 
@@ -13,7 +13,7 @@ paths:
13
13
  - Changes to public interfaces require a deprecation period and migration guide
14
14
  - Use RAII / deterministic cleanup for all resources
15
15
  - All engine systems must support graceful degradation
16
- - Before writing engine API code, consult `docs/engine-reference/` for the current engine version and verify APIs against the reference docs
16
+ - Before writing engine API code, read the project's engine version (`ProjectSettings/ProjectVersion.txt` or the `.uproject`) and verify APIs against that version's docs
17
17
 
18
18
  ## Examples
19
19
 
@@ -13,7 +13,6 @@ visual quality, performance, and cross-platform compatibility.
13
13
  - `SG_Env_Water` (Unity Shader Graph)
14
14
  - `M_Env_Water` (Unreal Material)
15
15
  - Use descriptive names that indicate the material purpose
16
- - Prefix with shader type: `spatial_`, `canvas_`, `particles_`, `post_`
17
16
 
18
17
  ## Code Quality
19
18
  - All uniforms/parameters must have descriptive names and appropriate hints
@@ -32,7 +31,7 @@ visual quality, performance, and cross-platform compatibility.
32
31
  ## Cross-Platform
33
32
  - Test shaders on minimum spec target hardware
34
33
  - Provide fallback/simplified versions for lower quality tiers
35
- - Document which render pipeline the shader targets (Forward/Deferred, URP/HDRP, Forward+/Mobile/Compatibility)
34
+ - Document which render pipeline the shader targets (Forward/Deferred, URP/HDRP)
36
35
  - Do not mix shaders from different render pipelines in the same directory
37
36
 
38
37
  ## Variant Management
@@ -1,6 +1,7 @@
1
1
  ---
2
- name: vn-code
3
- description: "Coding rules for Ren'Py visual novel development"
2
+ paths:
3
+ - "game/**"
4
+ - "**/*.rpy"
4
5
  ---
5
6
 
6
7
  # Visual Novel Code Rules
@@ -1,6 +1,6 @@
1
1
  # Implementation Workflow Rule
2
2
 
3
- Before starting any non-trivial implementation task, you MUST present the user with work mode options using AskUserQuestion. This is mandatory — do not skip it and jump to coding.
3
+ Before starting a non-trivial implementation task, present the user with work mode options using AskUserQuestion, so they choose how much planning the task gets before any code is written.
4
4
 
5
5
  ## When to trigger
6
6
 
@@ -1,9 +1,9 @@
1
1
  ---
2
2
  paths:
3
- - "src/ai/**"
3
+ - "src/**/ai/**"
4
+ - "src/**/llm/**"
5
+ - "src/**/agents/**"
4
6
  - "src/ml/**"
5
- - "src/llm/**"
6
- - "src/agents/**"
7
7
  - "src/inference/**"
8
8
  - "prompts/**"
9
9
  - "models/**"
@@ -12,7 +12,7 @@ paths:
12
12
  # AI / LLM / ML Code Rules
13
13
 
14
14
  Applies to software integrations with LLMs, ML inference, and AI agents — not NPC behavior in games
15
- (that rule lives in `skills-gamedev/_rules/ai-code.md`).
15
+ (the gamedev profiles ship their own `ai-code` rule for that).
16
16
 
17
17
  ## Prompts & Templates
18
18
 
@@ -28,7 +28,7 @@ Applies to software integrations with LLMs, ML inference, and AI agents — not
28
28
  - **Cost budget per request is measured and logged**: token counts in + out, model, cost in $. Track P50/P95 cost per feature.
29
29
  - **Timeouts and retries are bounded**: max retries ≤ 2, exponential backoff, circuit breaker on the provider. A hung LLM call must not hang a user request.
30
30
  - **Streaming for user-facing generation**; batch / async for back-office work.
31
- - **Cache deterministic calls** (same system + same user + temperature 0 → cache the response). Document TTL and invalidation.
31
+ - **Cache deterministic calls** (same model + same system + same user → cache the response). Document TTL and invalidation.
32
32
 
33
33
  ## Safety & PII
34
34
 
@@ -377,7 +377,8 @@ with open('my_tools_anthropic.json') as f:
377
377
  # Use with Anthropic tool use
378
378
  client = anthropic.Anthropic()
379
379
  response = client.messages.create(
380
- model="claude-3-opus-20240229",
380
+ model="claude-opus-5-5",
381
+ max_tokens=16000,
381
382
  messages=[{"role": "user", "content": "Search for AI news"}],
382
383
  tools=schemas['tools']
383
384
  )
@@ -220,11 +220,6 @@ class AgentEvaluator:
220
220
  def _define_cost_benchmarks(self) -> Dict[str, Any]:
221
221
  """Define cost benchmarks for different operations"""
222
222
  return {
223
- "token_costs": {
224
- "gpt-4": {"input": 0.00003, "output": 0.00006},
225
- "gpt-3.5-turbo": {"input": 0.000002, "output": 0.000002},
226
- "claude-3": {"input": 0.000015, "output": 0.000075}
227
- },
228
223
  "operation_costs": {
229
224
  "simple_task": 0.005,
230
225
  "complex_task": 0.050,
@@ -15,7 +15,7 @@ allowed-tools: Read, Glob, Grep, Bash, Write, Edit, Task
15
15
  ### Step 0: Gather Requirements
16
16
  1. **Caso:** chat / generación one-shot / extracción structured / agente con tools / RAG
17
17
  2. **Streaming** al cliente o respuesta completa
18
- 3. **Modelo:** Opus 4.8 (`claude-opus-4-8`, razonamiento) / Sonnet 4.6 (`claude-sonnet-4-6`, balance) / Haiku 4.5 (`claude-haiku-4-5-20251001`, rápido/barato)
18
+ 3. **Modelo:** Opus 5.5 (`claude-opus-5-5`, razonamiento) / Sonnet 5.5 (`claude-sonnet-5-5`, balance) / Haiku 5.5 (`claude-haiku-5-5`, rápido/barato)
19
19
  4. ¿Necesita tool calling / structured output / RAG (ver skill `pgvector-search`)?
20
20
 
21
21
  ### Step 1: Instalar
@@ -33,7 +33,7 @@ import { streamText, convertToModelMessages } from 'ai';
33
33
  export async function POST(req: Request) {
34
34
  const { messages } = await req.json();
35
35
  const result = streamText({
36
- model: anthropic('claude-sonnet-4-6'),
36
+ model: anthropic('claude-sonnet-5-5'),
37
37
  messages: convertToModelMessages(messages),
38
38
  });
39
39
  return result.toUIMessageStreamResponse();
@@ -44,7 +44,7 @@ Cliente: `useChat()` de `@ai-sdk/react`.
44
44
  ### Step 3: Structured output (Zod)
45
45
  ```ts
46
46
  const { object } = await generateObject({
47
- model: anthropic('claude-sonnet-4-6'),
47
+ model: anthropic('claude-sonnet-5-5'),
48
48
  schema: z.object({ sentiment: z.enum(['pos','neg','neutral']), score: z.number() }),
49
49
  prompt: text,
50
50
  });
@@ -53,7 +53,7 @@ const { object } = await generateObject({
53
53
  ### Step 4: Tool calling / agente
54
54
  ```ts
55
55
  const result = await generateText({
56
- model: anthropic('claude-opus-4-8'),
56
+ model: anthropic('claude-opus-5-5'),
57
57
  tools: {
58
58
  search: tool({
59
59
  description: 'Buscar docs', inputSchema: z.object({ q: z.string() }),
@@ -18,11 +18,10 @@ allowed-tools: Read, Glob, Grep, Write, Task, AskUserQuestion
18
18
 
19
19
  ## Phase 0: Load Engine Context (ALWAYS FIRST)
20
20
 
21
- 1. Read `docs/engine-reference/[engine]/VERSION.md` → engine name, version, cutoff risk
21
+ 1. Read the engine version from the project: `ProjectSettings/ProjectVersion.txt` (Unity) or `EngineAssociation` in the `.uproject` (Unreal). For Unreal, also read `docs/unreal/project-context.md` if `/ue-project-context` has run
22
22
  2. Identify domain from title (Physics, Rendering, UI, Audio, etc.)
23
- 3. Read module reference + `breaking-changes.md` + `deprecated-apis.md`
24
- 4. Display knowledge gap warning if MEDIUM/HIGH risk
25
- 5. No engine configured → prompt to run `/setup-engine`
23
+ 3. If the engine version is newer than what you know reliably, say so before proposing engine APIs
24
+ 4. No engine detected → ask the user which engine and version
26
25
 
27
26
  ## Phase 1: Context Gathering
28
27