claude-code-arcane 2.9.7 → 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 (129) hide show
  1. package/CHANGELOG.md +21 -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 +74 -24
  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/profiles/core.yaml +0 -1
  12. package/rules/gamedev/engine-code.md +1 -1
  13. package/rules/gamedev/shader-code.md +1 -2
  14. package/rules/gamedev/vn-code.md +3 -2
  15. package/rules/implementation-workflow.md +1 -1
  16. package/rules/{ai-code.md → llm-code.md} +5 -5
  17. package/skills/agent-designer/README.md +2 -1
  18. package/skills/agent-designer/agent_evaluator.py +0 -5
  19. package/skills/ai-sdk-setup/SKILL.md +4 -4
  20. package/skills/architecture-decision/SKILL.md +3 -4
  21. package/skills/architecture-review/SKILL.md +1 -1
  22. package/skills/asset-audit/SKILL.md +0 -1
  23. package/skills/balance-check/SKILL.md +1 -1
  24. package/skills/brainstorm/SKILL.md +3 -3
  25. package/skills/brainstorm/references/next-steps-pipeline.md +8 -9
  26. package/skills/consistency-check/SKILL.md +2 -2
  27. package/skills/design-system/SKILL.md +1 -1
  28. package/skills/design-system/references/post-design-validation.md +2 -3
  29. package/skills/frontend-dev/SKILL.md +27 -28
  30. package/skills/frontend-dev/references/asset-prompt-guide.md +1 -1
  31. package/skills/frontend-dev/references/motion-recipes.md +1 -1
  32. package/skills/help/SKILL.md +1 -2
  33. package/skills/hotfix/SKILL.md +2 -2
  34. package/skills/milestone-review/SKILL.md +1 -1
  35. package/skills/patch-notes/SKILL.md +1 -1
  36. package/skills/playtest-report/SKILL.md +2 -3
  37. package/skills/playwright-pro/CLAUDE.md +2 -2
  38. package/skills/playwright-pro/SKILL.md +13 -9
  39. package/skills/playwright-pro/agents/migration-planner.md +2 -2
  40. package/skills/playwright-pro/agents/test-architect.md +1 -2
  41. package/skills/playwright-pro/agents/test-debugger.md +1 -1
  42. package/skills/playwright-pro/hooks/detect-playwright.sh +1 -1
  43. package/skills/playwright-pro/skills/browserstack/SKILL.md +5 -5
  44. package/skills/playwright-pro/skills/migrate/SKILL.md +1 -1
  45. package/skills/playwright-pro/skills/report/SKILL.md +2 -2
  46. package/skills/playwright-pro/skills/testrail/SKILL.md +5 -5
  47. package/skills/playwright-pro/templates/README.md +2 -2
  48. package/skills/prototype/SKILL.md +1 -1
  49. package/skills/quick-design/SKILL.md +1 -1
  50. package/skills/release-checklist/SKILL.md +0 -1
  51. package/skills/security-audit/SKILL.md +1 -1
  52. package/skills/self-improving-agent/CLAUDE.md +12 -12
  53. package/skills/self-improving-agent/SKILL.md +16 -12
  54. package/skills/self-improving-agent/agents/memory-analyst.md +1 -1
  55. package/skills/self-improving-agent/hooks/error-capture.sh +2 -2
  56. package/skills/self-improving-agent/reference/memory-architecture.md +2 -2
  57. package/skills/self-improving-agent/reference/promotion-rules.md +3 -3
  58. package/skills/self-improving-agent/reference/rules-directory-patterns.md +1 -1
  59. package/skills/self-improving-agent/settings.json +5 -5
  60. package/skills/self-improving-agent/skills/extract/SKILL.md +7 -7
  61. package/skills/self-improving-agent/skills/promote/SKILL.md +5 -5
  62. package/skills/self-improving-agent/skills/remember/SKILL.md +9 -9
  63. package/skills/self-improving-agent/skills/review/SKILL.md +7 -7
  64. package/skills/self-improving-agent/skills/status/SKILL.md +8 -8
  65. package/skills/senior-ml-engineer/references/llm_integration_guide.md +14 -31
  66. package/skills/senior-prompt-engineer/SKILL.md +10 -10
  67. package/skills/senior-prompt-engineer/references/prompt_engineering_patterns.md +1 -1
  68. package/skills/senior-prompt-engineer/scripts/agent_orchestrator.py +43 -40
  69. package/skills/senior-prompt-engineer/scripts/prompt_optimizer.py +23 -66
  70. package/skills/shader-dev/reference/fluid-simulation.md +4 -4
  71. package/skills/shader-dev/reference/simulation-physics.md +6 -6
  72. package/skills/shader-dev/reference/voxel-rendering.md +1 -1
  73. package/skills/shader-dev/techniques/ambient-occlusion.md +1 -1
  74. package/skills/shader-dev/techniques/analytic-ray-tracing.md +2 -2
  75. package/skills/shader-dev/techniques/domain-warping.md +2 -2
  76. package/skills/shader-dev/techniques/fluid-simulation.md +45 -45
  77. package/skills/shader-dev/techniques/multipass-buffer.md +24 -24
  78. package/skills/shader-dev/techniques/normal-estimation.md +1 -1
  79. package/skills/shader-dev/techniques/particle-system.md +16 -16
  80. package/skills/shader-dev/techniques/polar-uv-manipulation.md +1 -1
  81. package/skills/shader-dev/techniques/post-processing.md +7 -7
  82. package/skills/shader-dev/techniques/sdf-3d.md +1 -1
  83. package/skills/shader-dev/techniques/simulation-physics.md +24 -24
  84. package/skills/shader-dev/techniques/sound-synthesis.md +2 -2
  85. package/skills/shader-dev/techniques/voronoi-cellular-noise.md +1 -1
  86. package/skills/shader-dev/techniques/voxel-rendering.md +60 -60
  87. package/skills/smoke-check/SKILL.md +1 -1
  88. package/skills/sprint-plan/SKILL.md +1 -2
  89. package/skills/start/SKILL.md +7 -7
  90. package/skills/story-done/SKILL.md +1 -1
  91. package/skills/test-helpers/SKILL.md +7 -2
  92. package/skills/test-setup/SKILL.md +1 -1
  93. package/skills/ue-actor-component-architecture/SKILL.md +0 -1
  94. package/skills/ue-ai-navigation/SKILL.md +0 -1
  95. package/skills/ue-animation-system/SKILL.md +0 -1
  96. package/skills/ue-async-threading/SKILL.md +0 -1
  97. package/skills/ue-audio-system/SKILL.md +0 -1
  98. package/skills/ue-blueprints/SKILL.md +0 -1
  99. package/skills/ue-character-movement/SKILL.md +0 -1
  100. package/skills/ue-cpp-foundations/SKILL.md +0 -1
  101. package/skills/ue-data-assets-tables/SKILL.md +0 -1
  102. package/skills/ue-editor-tools/SKILL.md +0 -1
  103. package/skills/ue-game-features/SKILL.md +0 -1
  104. package/skills/ue-gameplay-abilities/SKILL.md +0 -1
  105. package/skills/ue-gameplay-framework/SKILL.md +0 -1
  106. package/skills/ue-input-system/SKILL.md +0 -1
  107. package/skills/ue-mass-entity/SKILL.md +0 -1
  108. package/skills/ue-materials-rendering/SKILL.md +0 -1
  109. package/skills/ue-module-build-system/SKILL.md +0 -1
  110. package/skills/ue-naming-conventions/SKILL.md +0 -1
  111. package/skills/ue-networking-replication/SKILL.md +0 -1
  112. package/skills/ue-niagara-effects/SKILL.md +0 -1
  113. package/skills/ue-packaging/SKILL.md +0 -1
  114. package/skills/ue-physics-collision/SKILL.md +0 -1
  115. package/skills/ue-procedural-generation/SKILL.md +0 -1
  116. package/skills/ue-project-context/SKILL.md +0 -1
  117. package/skills/ue-sequencer-cinematics/SKILL.md +0 -1
  118. package/skills/ue-serialization-savegames/SKILL.md +0 -1
  119. package/skills/ue-state-trees/SKILL.md +0 -1
  120. package/skills/ue-testing-debugging/SKILL.md +0 -1
  121. package/skills/ue-ui-umg-slate/SKILL.md +0 -1
  122. package/skills/ue-world-level-streaming/SKILL.md +0 -1
  123. package/skills/ux-review/SKILL.md +1 -1
  124. package/docs/RELEASE-SETUP.md +0 -99
  125. package/docs/presentations/arcane-overview-12.pptx +0 -0
  126. package/docs/presentations/arcane-overview.pptx +0 -0
  127. package/docs/presentations/build_arcane_deck.py +0 -310
  128. package/docs/presentations/build_arcane_deck_12.py +0 -399
  129. package/docs/trusted-publishing-setup.md +0 -163
@@ -383,7 +383,6 @@ Validate before considering the work done:
383
383
  - [ ] Input Action value types match how the action is consumed
384
384
  - [ ] No legacy `BindAction`/`BindAxis` or direct key polling remains
385
385
  - [ ] Conventions in `docs/unreal/project-context.md` were read and followed
386
- - [ ] The Common Mistakes section of this skill was reviewed against the change
387
386
 
388
387
  **PASS** — every item holds. **CONCERNS** — the work stands but at least one item is unresolved and worth flagging to the user. **FAIL** — an item is violated in a way that breaks correctness, replication or the frame budget; fix it before handing the work over.
389
388
 
@@ -465,7 +465,6 @@ Validate before considering the work done:
465
465
  - [ ] Processor execution order and dependencies are declared explicitly
466
466
  - [ ] Mass is justified by entity count; a plain actor would not do
467
467
  - [ ] Conventions in `docs/unreal/project-context.md` were read and followed
468
- - [ ] The Common Mistakes section of this skill was reviewed against the change
469
468
 
470
469
  **PASS** — every item holds. **CONCERNS** — the work stands but at least one item is unresolved and worth flagging to the user. **FAIL** — an item is violated in a way that breaks correctness, replication or the frame budget; fix it before handing the work over.
471
470
 
@@ -515,7 +515,6 @@ Validate before considering the work done:
515
515
  - [ ] Instruction count and texture samplers stay within the platform budget
516
516
  - [ ] Dynamic material instances are created once and cached, not per frame
517
517
  - [ ] Conventions in `docs/unreal/project-context.md` were read and followed
518
- - [ ] The Common Mistakes section of this skill was reviewed against the change
519
518
 
520
519
  **PASS** — every item holds. **CONCERNS** — the work stands but at least one item is unresolved and worth flagging to the user. **FAIL** — an item is violated in a way that breaks correctness, replication or the frame budget; fix it before handing the work over.
521
520
 
@@ -476,7 +476,6 @@ Validate before considering the work done:
476
476
  - [ ] Module type and loading phase are correct for what the module does
477
477
  - [ ] The project still builds for every target platform it claims to support
478
478
  - [ ] Conventions in `docs/unreal/project-context.md` were read and followed
479
- - [ ] The Common Mistakes section of this skill was reviewed against the change
480
479
 
481
480
  **PASS** — every item holds. **CONCERNS** — the work stands but at least one item is unresolved and worth flagging to the user. **FAIL** — an item is violated in a way that breaks correctness, replication or the frame budget; fix it before handing the work over.
482
481
 
@@ -130,7 +130,6 @@ Validate before considering the work done:
130
130
  - [ ] Any rename ran with clean source control and a Fix Up Redirectors pass afterwards
131
131
  - [ ] The agreed convention is written into `docs/unreal/project-context.md`
132
132
  - [ ] Conventions in `docs/unreal/project-context.md` were read and followed
133
- - [ ] The Common Mistakes section of this skill was reviewed against the change
134
133
 
135
134
  **PASS** — every item holds. **CONCERNS** — the work stands but at least one item is unresolved and worth flagging to the user. **FAIL** — an item is violated in a way that breaks asset references or leaves the project inconsistent; fix it before handing the work over.
136
135
 
@@ -440,7 +440,6 @@ Validate before considering the work done:
440
440
  - [ ] Server RPCs validate all client input; nothing trusts the client
441
441
  - [ ] Replication conditions and update frequency were set per property, not left default
442
442
  - [ ] Conventions in `docs/unreal/project-context.md` were read and followed
443
- - [ ] The Common Mistakes section of this skill was reviewed against the change
444
443
 
445
444
  **PASS** — every item holds. **CONCERNS** — the work stands but at least one item is unresolved and worth flagging to the user. **FAIL** — an item is violated in a way that breaks correctness, replication or the frame budget; fix it before handing the work over.
446
445
 
@@ -520,7 +520,6 @@ Validate before considering the work done:
520
520
  - [ ] GPU simulation is used where the effect is heavy and does not need CPU readback
521
521
  - [ ] Effects are pooled or auto-destroyed rather than leaking components
522
522
  - [ ] Conventions in `docs/unreal/project-context.md` were read and followed
523
- - [ ] The Common Mistakes section of this skill was reviewed against the change
524
523
 
525
524
  **PASS** — every item holds. **CONCERNS** — the work stands but at least one item is unresolved and worth flagging to the user. **FAIL** — an item is violated in a way that breaks correctness, replication or the frame budget; fix it before handing the work over.
526
525
 
@@ -104,7 +104,6 @@ Validate before considering the work done:
104
104
  - [ ] The packaged executable was launched and verified, not just cooked successfully
105
105
  - [ ] No credentials or internal config were staged into the build
106
106
  - [ ] Conventions in `docs/unreal/project-context.md` were read and followed
107
- - [ ] The Common Mistakes section of this skill was reviewed against the change
108
107
 
109
108
  **PASS** — every item holds. **CONCERNS** — the work stands but at least one item is unresolved and worth flagging to the user. **FAIL** — an item is violated in a way that produces a broken or unshippable build; fix it before handing the work over.
110
109
 
@@ -412,7 +412,6 @@ Validate before considering the work done:
412
412
  - [ ] Traces use the narrowest channel and shape that answers the question
413
413
  - [ ] Complex collision is avoided on anything queried frequently
414
414
  - [ ] Conventions in `docs/unreal/project-context.md` were read and followed
415
- - [ ] The Common Mistakes section of this skill was reviewed against the change
416
415
 
417
416
  **PASS** — every item holds. **CONCERNS** — the work stands but at least one item is unresolved and worth flagging to the user. **FAIL** — an item is violated in a way that breaks correctness, replication or the frame budget; fix it before handing the work over.
418
417
 
@@ -494,7 +494,6 @@ Validate before considering the work done:
494
494
  - [ ] Instanced meshes are used for repeated geometry rather than individual actors
495
495
  - [ ] Runtime generation is budgeted and spread across frames
496
496
  - [ ] Conventions in `docs/unreal/project-context.md` were read and followed
497
- - [ ] The Common Mistakes section of this skill was reviewed against the change
498
497
 
499
498
  **PASS** — every item holds. **CONCERNS** — the work stands but at least one item is unresolved and worth flagging to the user. **FAIL** — an item is violated in a way that breaks correctness, replication or the frame budget; fix it before handing the work over.
500
499
 
@@ -293,7 +293,6 @@ Validate before considering the work done:
293
293
  - [ ] Coding conventions reflect what the codebase really does, not aspirations
294
294
  - [ ] Every other `ue-*` skill can answer its Context Check from this document
295
295
  - [ ] Conventions in `docs/unreal/project-context.md` were read and followed
296
- - [ ] The Common Mistakes section of this skill was reviewed against the change
297
296
 
298
297
  **PASS** — every item holds. **CONCERNS** — the work stands but at least one item is unresolved and worth flagging to the user. **FAIL** — an item is violated in a way that breaks correctness, replication or the frame budget; fix it before handing the work over.
299
298
 
@@ -495,7 +495,6 @@ Validate before considering the work done:
495
495
  - [ ] Sequences are bound through spawnables or resolvable bindings, not fragile references
496
496
  - [ ] Render settings are separated from in-game playback settings
497
497
  - [ ] Conventions in `docs/unreal/project-context.md` were read and followed
498
- - [ ] The Common Mistakes section of this skill was reviewed against the change
499
498
 
500
499
  **PASS** — every item holds. **CONCERNS** — the work stands but at least one item is unresolved and worth flagging to the user. **FAIL** — an item is violated in a way that breaks correctness, replication or the frame budget; fix it before handing the work over.
501
500
 
@@ -513,7 +513,6 @@ Validate before considering the work done:
513
513
  - [ ] Saving is asynchronous and cannot corrupt an existing file on failure
514
514
  - [ ] Only owned state is serialized — no raw object pointers to transient actors
515
515
  - [ ] Conventions in `docs/unreal/project-context.md` were read and followed
516
- - [ ] The Common Mistakes section of this skill was reviewed against the change
517
516
 
518
517
  **PASS** — every item holds. **CONCERNS** — the work stands but at least one item is unresolved and worth flagging to the user. **FAIL** — an item is violated in a way that breaks correctness, replication or the frame budget; fix it before handing the work over.
519
518
 
@@ -478,7 +478,6 @@ Validate before considering the work done:
478
478
  - [ ] Transitions are driven by conditions and events, not by side effects in tasks
479
479
  - [ ] The schema chosen matches the owner type of the tree
480
480
  - [ ] Conventions in `docs/unreal/project-context.md` were read and followed
481
- - [ ] The Common Mistakes section of this skill was reviewed against the change
482
481
 
483
482
  **PASS** — every item holds. **CONCERNS** — the work stands but at least one item is unresolved and worth flagging to the user. **FAIL** — an item is violated in a way that breaks correctness, replication or the frame budget; fix it before handing the work over.
484
483
 
@@ -508,7 +508,6 @@ Validate before considering the work done:
508
508
  - [ ] Tests run headless in CI without requiring a human in the editor
509
509
  - [ ] Logging uses a dedicated category at an appropriate verbosity
510
510
  - [ ] Conventions in `docs/unreal/project-context.md` were read and followed
511
- - [ ] The Common Mistakes section of this skill was reviewed against the change
512
511
 
513
512
  **PASS** — every item holds. **CONCERNS** — the work stands but at least one item is unresolved and worth flagging to the user. **FAIL** — an item is violated in a way that breaks correctness, replication or the frame budget; fix it before handing the work over.
514
513
 
@@ -419,7 +419,6 @@ Validate before considering the work done:
419
419
  - [ ] Focus, navigation and gamepad input were verified, not just mouse
420
420
  - [ ] Widgets are pooled or properly removed rather than accumulating
421
421
  - [ ] Conventions in `docs/unreal/project-context.md` were read and followed
422
- - [ ] The Common Mistakes section of this skill was reviewed against the change
423
422
 
424
423
  **PASS** — every item holds. **CONCERNS** — the work stands but at least one item is unresolved and worth flagging to the user. **FAIL** — an item is violated in a way that breaks correctness, replication or the frame budget; fix it before handing the work over.
425
424
 
@@ -507,7 +507,6 @@ Validate before considering the work done:
507
507
  - [ ] Data layers are used for state variation instead of duplicated levels
508
508
  - [ ] Level transitions handle actors that must survive travel
509
509
  - [ ] Conventions in `docs/unreal/project-context.md` were read and followed
510
- - [ ] The Common Mistakes section of this skill was reviewed against the change
511
510
 
512
511
  **PASS** — every item holds. **CONCERNS** — the work stands but at least one item is unresolved and worth flagging to the user. **FAIL** — an item is violated in a way that breaks correctness, replication or the frame budget; fix it before handing the work over.
513
512
 
@@ -65,7 +65,7 @@ Report: completeness (X/Y sections), quality issues (BLOCKING/ADVISORY with fix)
65
65
  ## Protocol
66
66
 
67
67
  - Read-only — never edits files
68
- - APPROVED → suggest `/team-ui`
68
+ - APPROVED → the spec is ready for implementation
69
69
  - NEEDS REVISION → offer to help draft missing sections
70
70
  - MAJOR REVISION → redirect to `/ux-design`
71
71
  - Verdict is advisory — user decides whether to proceed
@@ -1,99 +0,0 @@
1
- # Release Setup Guide
2
-
3
- Arcane usa **semantic-release** para publicar automaticamente a npm en cada push a `main`. Esta guia explica como configurar los secrets necesarios para que el pipeline funcione.
4
-
5
- ## Arquitectura del release
6
-
7
- ```
8
- Push a main → GitHub Actions → build + test → semantic-release → npm publish + GitHub Release
9
- ```
10
-
11
- semantic-release analiza los commits (conventional commits) para determinar la version:
12
- - `fix:` → patch (1.0.0 → 1.0.1)
13
- - `feat:` → minor (1.0.0 → 1.1.0)
14
- - `BREAKING CHANGE:` → major (1.0.0 → 2.0.0)
15
- - `chore:`, `docs:`, `test:`, `refactor:` → no release
16
-
17
- ## Prerequisitos
18
-
19
- - Cuenta en [npmjs.com](https://www.npmjs.com) con acceso al paquete `claude-code-arcane`
20
- - Acceso de admin al repositorio en GitHub
21
-
22
- ## Paso 1: Crear token en npm
23
-
24
- 1. Ir a **https://www.npmjs.com** y loguearse
25
- 2. Click en el avatar (arriba a la derecha) → **Access Tokens**
26
- 3. Click **Generate New Token** → elegir **Granular Access Token**
27
- 4. Configurar:
28
- - **Token name:** `arcane-release`
29
- - **Expiration:** sin expiracion (o la que se prefiera)
30
- - **Packages and scopes:** seleccionar **Read and write**
31
- - **Select packages:** elegir `claude-code-arcane`
32
- 5. Click **Generate Token**
33
- 6. **Copiar el token** — solo se muestra una vez
34
-
35
- ## Paso 2: Agregar secret en GitHub
36
-
37
- 1. Ir a [Settings > Secrets > Actions](https://github.com/SebastianLuser/Claude-Code-Arcane/settings/secrets/actions)
38
- 2. Click **New repository secret**
39
- 3. Completar:
40
- - **Name:** `NPM_TOKEN`
41
- - **Secret:** pegar el token copiado en el paso anterior
42
- 4. Click **Add secret**
43
-
44
- > **Nota:** `GITHUB_TOKEN` se provee automaticamente por GitHub Actions, no hace falta configurarlo.
45
-
46
- ## Paso 3: Verificar
47
-
48
- 1. Hacer un push a `main` con un commit tipo `feat:` o `fix:`
49
- 2. Ir a [Actions](https://github.com/SebastianLuser/Claude-Code-Arcane/actions) y verificar que el workflow **Release** corre exitosamente
50
- 3. Verificar en npm que la nueva version aparece: `npm view claude-code-arcane version`
51
- 4. Verificar que se creo un [GitHub Release](https://github.com/SebastianLuser/Claude-Code-Arcane/releases) con changelog automatico
52
-
53
- ## Archivos de configuracion
54
-
55
- | Archivo | Proposito |
56
- |---------|-----------|
57
- | `.releaserc.json` | Configuracion de semantic-release (plugins, branches) |
58
- | `.github/workflows/release.yml` | Workflow de GitHub Actions que ejecuta semantic-release |
59
- | `.github/workflows/ci.yml` | CI separado (build + test + typecheck) |
60
-
61
- ## Troubleshooting
62
-
63
- ### El workflow falla con "NPM_TOKEN is not set"
64
- El secret no esta configurado. Seguir el Paso 2.
65
-
66
- ### El workflow corre pero no publica
67
- semantic-release solo publica si hay commits que justifiquen un bump de version. Commits tipo `chore:`, `docs:`, `test:` no generan release. Usar `feat:` o `fix:`.
68
-
69
- ### Error "npm ERR! 403 Forbidden"
70
- El token no tiene permisos de escritura sobre el paquete, o expiro. Regenerar siguiendo el Paso 1.
71
-
72
- ### El CHANGELOG.md no se actualiza
73
- semantic-release commitea el changelog automaticamente con `[skip ci]` para no generar un loop. Si no aparece, verificar que el plugin `@semantic-release/git` este en `.releaserc.json`.
74
-
75
- ## Hybrid Distribution
76
-
77
- Ademas del release automatico, Arcane soporta distribucion hibrida:
78
-
79
- - **GitHub source:** `npx claude-code-arcane install backend-ts --source github` baja contenido directamente del repo
80
- - **Cache local:** contenido descargado se cachea en `~/.arcane/cache/`
81
- - **Bundled fallback:** si GitHub no esta disponible, usa el contenido empaquetado en npm
82
- - **Auto:** `--source auto` (default) intenta GitHub → cache → bundled
83
-
84
- Variable de entorno: `ARCANE_SOURCE=bundled|github|auto`
85
-
86
- ## Smart Update
87
-
88
- `arcane update` compara el contenido instalado con la ultima version disponible:
89
-
90
- ```bash
91
- arcane update # actualiza contenido (three-way merge)
92
- arcane update --dry-run # muestra que cambiaria sin aplicar
93
- arcane update --force # sobreescribe incluso archivos modificados localmente
94
- ```
95
-
96
- El three-way merge detecta:
97
- - Cambios upstream que no fueron tocados localmente → **actualiza**
98
- - Archivos customizados localmente sin cambios upstream → **preserva**
99
- - Conflictos (ambos cambiaron) → **backup + actualiza + avisa**
@@ -1,310 +0,0 @@
1
- #!/usr/bin/env python3
2
- """Genera la presentacion ejecutiva de Claude Code Arcane (8 slides, 16:9)."""
3
- import os
4
- from pptx import Presentation
5
- from pptx.util import Inches, Pt, Emu
6
- from pptx.dml.color import RGBColor
7
- from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
8
- from pptx.enum.shapes import MSO_SHAPE
9
- from pptx.oxml.ns import qn
10
-
11
- # ---------- Tema (paleta Arcane: indigo profundo + cian) ----------
12
- BG = RGBColor(0x1E, 0x1B, 0x4B) # indigo-950 fondo
13
- PANEL = RGBColor(0x2A, 0x25, 0x60) # panel
14
- PANEL2 = RGBColor(0x31, 0x2E, 0x81) # panel mas claro
15
- VIOLET = RGBColor(0x5B, 0x4F, 0xE8) # acento violeta
16
- CYAN = RGBColor(0x22, 0xD3, 0xEE) # acento cian
17
- WHITE = RGBColor(0xF8, 0xFA, 0xFC)
18
- LIGHT = RGBColor(0xE5, 0xE7, 0xEB)
19
- MUTED = RGBColor(0x9C, 0xA3, 0xC4)
20
- GREEN = RGBColor(0x34, 0xD3, 0x99)
21
- AMBER = RGBColor(0xFB, 0xBF, 0x24)
22
- FONT = "Calibri"
23
- FONT_H = "Calibri"
24
-
25
- prs = Presentation()
26
- prs.slide_width = Inches(13.333)
27
- prs.slide_height = Inches(7.5)
28
- BLANK = prs.slide_layouts[6]
29
- SW, SH = prs.slide_width, prs.slide_height
30
-
31
-
32
- def slide():
33
- s = prs.slides.add_slide(BLANK)
34
- r = s.shapes.add_shape(MSO_SHAPE.RECTANGLE, 0, 0, SW, SH)
35
- r.fill.solid(); r.fill.fore_color.rgb = BG
36
- r.line.fill.background()
37
- r.shadow.inherit = False
38
- return s
39
-
40
-
41
- def rect(s, x, y, w, h, color, line=None, radius=False, line_w=1.0):
42
- shp = MSO_SHAPE.ROUNDED_RECTANGLE if radius else MSO_SHAPE.RECTANGLE
43
- sp = s.shapes.add_shape(shp, Inches(x), Inches(y), Inches(w), Inches(h))
44
- if color is None:
45
- sp.fill.background()
46
- else:
47
- sp.fill.solid(); sp.fill.fore_color.rgb = color
48
- if line is None:
49
- sp.line.fill.background()
50
- else:
51
- sp.line.color.rgb = line; sp.line.width = Pt(line_w)
52
- sp.shadow.inherit = False
53
- return sp
54
-
55
-
56
- def txt(s, x, y, w, h, runs, align=PP_ALIGN.LEFT, anchor=MSO_ANCHOR.TOP,
57
- space_after=4, line_spacing=1.0):
58
- """runs: lista de parrafos; cada parrafo es lista de (texto, size, color, bold)."""
59
- tb = s.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
60
- tf = tb.text_frame; tf.word_wrap = True
61
- tf.vertical_anchor = anchor
62
- for i, para in enumerate(runs):
63
- p = tf.paragraphs[0] if i == 0 else tf.add_paragraph()
64
- p.alignment = align
65
- p.space_after = Pt(space_after); p.space_before = Pt(0)
66
- p.line_spacing = line_spacing
67
- for (t, sz, col, bold) in para:
68
- r = p.add_run(); r.text = t
69
- r.font.size = Pt(sz); r.font.color.rgb = col
70
- r.font.bold = bold; r.font.name = FONT
71
- return tb
72
-
73
-
74
- def badge(s, n):
75
- c = s.shapes.add_shape(MSO_SHAPE.OVAL, Inches(12.55), Inches(6.85), Inches(0.42), Inches(0.42))
76
- c.fill.solid(); c.fill.fore_color.rgb = VIOLET; c.line.fill.background(); c.shadow.inherit = False
77
- tf = c.text_frame; tf.word_wrap = False
78
- p = tf.paragraphs[0]; p.alignment = PP_ALIGN.CENTER
79
- r = p.add_run(); r.text = str(n)
80
- r.font.size = Pt(12); r.font.bold = True; r.font.color.rgb = WHITE; r.font.name = FONT
81
- tf.vertical_anchor = MSO_ANCHOR.MIDDLE
82
-
83
-
84
- def footer(s):
85
- txt(s, 0.55, 7.0, 5, 0.35, [[("Claude Code Arcane", 9, MUTED, False)]])
86
-
87
-
88
- def kicker(s, text, color=CYAN):
89
- rect(s, 0.55, 0.55, 0.12, 0.55, color)
90
- txt(s, 0.8, 0.5, 11, 0.5, [[(text, 13, color, True)]])
91
-
92
-
93
- def title(s, text, y=0.95, size=34):
94
- txt(s, 0.78, y, 11.8, 1.0, [[(text, size, WHITE, True)]])
95
-
96
-
97
- # ================= SLIDE 1 — Portada =================
98
- s = slide()
99
- rect(s, 0, 0, 13.333, 7.5, None)
100
- # barra de acento lateral
101
- rect(s, 0, 0, 0.25, 7.5, VIOLET)
102
- rect(s, 0.25, 0, 0.08, 7.5, CYAN)
103
- txt(s, 1.0, 1.7, 11.5, 0.6, [[("CLAUDE CODE", 20, CYAN, True)]])
104
- txt(s, 1.0, 2.15, 11.5, 1.4, [[("Arcane", 88, WHITE, True)]])
105
- txt(s, 1.05, 3.65, 11, 0.6,
106
- [[("Un gestor de paquetes de configuracion para Claude Code", 22, LIGHT, False)]])
107
- txt(s, 1.05, 4.25, 11, 0.5,
108
- [[("Instala solo las capacidades que tu proyecto necesita — con un comando.", 15, MUTED, False)]])
109
-
110
- # dashboard de metricas
111
- metrics = [("322", "Skills"), ("86", "Agentes"), ("29", "Profiles"), ("19", "Rules")]
112
- mx, mw, gap = 1.0, 2.7, 0.25
113
- for i, (num, lbl) in enumerate(metrics):
114
- x = mx + i * (mw + gap)
115
- rect(s, x, 5.3, mw, 1.35, PANEL, radius=True)
116
- rect(s, x, 5.3, 0.1, 1.35, CYAN if i % 2 else VIOLET, radius=False)
117
- txt(s, x, 5.45, mw, 0.8, [[(num, 44, WHITE, True)]], align=PP_ALIGN.CENTER)
118
- txt(s, x, 6.2, mw, 0.4, [[(lbl.upper(), 13, CYAN, True)]], align=PP_ALIGN.CENTER)
119
-
120
- # ================= SLIDE 2 — El problema =================
121
- s = slide()
122
- kicker(s, "POR QUE EXISTE")
123
- title(s, "El problema que resuelve")
124
- problems = [
125
- ("Configuracion manual", "Copiar .claude/ a mano en cada proyecto: repetitivo y diverge con el tiempo."),
126
- ("Todo-o-nada", "Un mega-repo cargaria las 322 skills en CADA proyecto: mas tokens, mas ruido, mas latencia."),
127
- ("Sin estandarizacion", "Cada dev configura su Claude distinto. No hay fuente de verdad compartida."),
128
- ("Sin actualizacion", "Una mejora en una skill nunca llega a los proyectos que ya la copiaron."),
129
- ]
130
- y = 2.05
131
- for i, (h, d) in enumerate(problems):
132
- rect(s, 0.78, y, 11.7, 1.0, PANEL, radius=True)
133
- rect(s, 0.78, y, 0.1, 1.0, VIOLET)
134
- txt(s, 1.05, y + 0.13, 3.4, 0.8, [[(h, 17, CYAN, True)]], anchor=MSO_ANCHOR.MIDDLE)
135
- txt(s, 4.5, y + 0.13, 7.8, 0.8, [[(d, 13.5, LIGHT, False)]], anchor=MSO_ANCHOR.MIDDLE)
136
- y += 1.15
137
- txt(s, 0.78, 6.75, 11.8, 0.5,
138
- [[("Falta una forma modular, versionada y compartible de configurar Claude Code.", 15, WHITE, True)]])
139
- badge(s, 2); footer(s)
140
-
141
- # ================= SLIDE 3 — Idea central =================
142
- s = slide()
143
- kicker(s, "LA IDEA CENTRAL")
144
- title(s, "npm, pero para las capacidades de Claude Code")
145
- txt(s, 0.78, 2.0, 11.7, 1.0,
146
- [[("En vez de instalar librerias de codigo, instalas ", 17, LIGHT, False),
147
- ("capacidades", 17, CYAN, True),
148
- (": hacer commits, disenar APIs, correr un sprint, auditar seguridad — adaptadas a tu stack.", 17, LIGHT, False)]],
149
- line_spacing=1.15)
150
-
151
- # comando hero estilo terminal
152
- rect(s, 0.78, 3.25, 11.7, 1.5, RGBColor(0x14, 0x11, 0x33), radius=True, line=VIOLET, line_w=1.5)
153
- txt(s, 1.1, 3.45, 11, 0.4, [[("terminal", 11, MUTED, False)]])
154
- txt(s, 1.1, 3.85, 11, 0.7,
155
- [[("$ ", 26, CYAN, True), ("npx claude-code-arcane install ", 26, WHITE, True),
156
- ("backend-ts", 26, GREEN, True), ("+agile", 26, AMBER, True), ("+testing", 26, AMBER, True)]])
157
-
158
- cols = [("backend-ts", "base", GREEN), ("+agile", "addon", AMBER), ("+testing", "addon", AMBER)]
159
- cx = 0.78
160
- for name, kind, col in cols:
161
- rect(s, cx, 5.05, 3.0, 1.1, PANEL, radius=True)
162
- txt(s, cx, 5.2, 3.0, 0.5, [[(name, 18, col, True)]], align=PP_ALIGN.CENTER)
163
- txt(s, cx, 5.7, 3.0, 0.4, [[(kind.upper(), 12, MUTED, True)]], align=PP_ALIGN.CENTER)
164
- cx += 3.25
165
- txt(s, 0.78, 6.45, 11.7, 0.5,
166
- [[("base + addon + addon -> solo lo que ESE proyecto necesita.", 15, WHITE, True)]])
167
- badge(s, 3); footer(s)
168
-
169
- # ================= SLIDE 4 — Como funciona =================
170
- s = slide()
171
- kicker(s, "ARQUITECTURA")
172
- title(s, "Como funciona")
173
- steps = [
174
- ("1", "Resuelve el contenido", "GitHub -> cache local -> bundled (funciona offline)"),
175
- ("2", "Carga core.yaml siempre", "21 skills base + 15 hooks + permisos de seguridad"),
176
- ("3", "Mergea los profiles", "Combina los profiles pedidos con +"),
177
- ("4", "Deduplica", "Un skill repetido se copia una sola vez"),
178
- ("5", "Genera .claude/", "settings.json + manifest + skills, agents, rules, hooks"),
179
- ]
180
- y = 2.05
181
- for num, h, d in steps:
182
- rect(s, 0.78, y, 11.7, 0.84, PANEL, radius=True)
183
- c = s.shapes.add_shape(MSO_SHAPE.OVAL, Inches(0.98), Inches(y + 0.17), Inches(0.5), Inches(0.5))
184
- c.fill.solid(); c.fill.fore_color.rgb = VIOLET; c.line.fill.background(); c.shadow.inherit = False
185
- ctf = c.text_frame; ctf.vertical_anchor = MSO_ANCHOR.MIDDLE
186
- cp = ctf.paragraphs[0]; cp.alignment = PP_ALIGN.CENTER
187
- cr = cp.add_run(); cr.text = num; cr.font.size = Pt(20); cr.font.bold = True
188
- cr.font.color.rgb = WHITE; cr.font.name = FONT
189
- txt(s, 1.75, y + 0.05, 4.0, 0.74, [[(h, 16, CYAN, True)]], anchor=MSO_ANCHOR.MIDDLE)
190
- txt(s, 5.9, y + 0.05, 6.4, 0.74, [[(d, 13, LIGHT, False)]], anchor=MSO_ANCHOR.MIDDLE)
191
- y += 0.95
192
- badge(s, 4); footer(s)
193
-
194
- # ================= SLIDE 5 — 4 piezas =================
195
- s = slide()
196
- kicker(s, "SEPARACION DE RESPONSABILIDADES")
197
- title(s, "Cuatro piezas, cuatro responsabilidades")
198
- cards = [
199
- ("Skills", "Acciones que Claude ejecuta", "/commit · /code-review", CYAN),
200
- ("Agents", "Personas que Claude adopta", "backend-architect · game-designer", VIOLET),
201
- ("Hooks", "Automatizacion invisible (eventos)", "valida commits · escanea secrets", GREEN),
202
- ("Rules", "Estandares que Claude obedece", "\"Clean architecture en backend\"", AMBER),
203
- ]
204
- positions = [(0.78, 2.05), (6.93, 2.05), (0.78, 4.25), (6.93, 4.25)]
205
- cw, ch = 5.6, 2.0
206
- for (name, what, ex, col), (x, y) in zip(cards, positions):
207
- rect(s, x, y, cw, ch, PANEL, radius=True)
208
- rect(s, x, y, cw, 0.12, col)
209
- txt(s, x + 0.3, y + 0.25, cw - 0.6, 0.5, [[(name, 24, col, True)]])
210
- txt(s, x + 0.3, y + 0.85, cw - 0.6, 0.5, [[(what, 14.5, LIGHT, False)]])
211
- txt(s, x + 0.3, y + 1.4, cw - 0.6, 0.5, [[(ex, 13, MUTED, True)]])
212
- txt(s, 0.78, 6.55, 11.7, 0.5,
213
- [[("Todo en Markdown + YAML: legible, diffeable en git, editable por cualquiera.", 14, WHITE, True)]])
214
- badge(s, 5); footer(s)
215
-
216
- # ================= SLIDE 6 — Por que gana =================
217
- s = slide()
218
- kicker(s, "DIFERENCIADORES")
219
- title(s, "Por que Arcane gana")
220
- # encabezados
221
- rect(s, 0.78, 2.0, 5.7, 0.55, PANEL2, radius=True)
222
- rect(s, 6.63, 2.0, 5.85, 0.55, PANEL2, radius=True)
223
- txt(s, 1.0, 2.05, 5.3, 0.45, [[("ALTERNATIVA", 13, MUTED, True)]], anchor=MSO_ANCHOR.MIDDLE)
224
- txt(s, 6.85, 2.05, 5.4, 0.45, [[("COMO GANA ARCANE", 13, CYAN, True)]], anchor=MSO_ANCHOR.MIDDLE)
225
- rows = [
226
- ("Config a mano", "Un comando, versionado, reproducible"),
227
- ("Mega-repo monolitico", "Selectivo por profile + dedup (menos tokens)"),
228
- ("Copiar config entre proyectos", "Smart update con three-way merge (no pisa tus cambios)"),
229
- ("Claude \"vanilla\"", "Hooks + rules + 86 agentes especializados"),
230
- ]
231
- y = 2.65
232
- for a, b in rows:
233
- rect(s, 0.78, y, 5.7, 0.7, PANEL, radius=True)
234
- rect(s, 6.63, y, 5.85, 0.7, PANEL, radius=True)
235
- txt(s, 1.0, y + 0.05, 5.3, 0.6, [[(a, 14, LIGHT, False)]], anchor=MSO_ANCHOR.MIDDLE)
236
- txt(s, 6.85, y + 0.05, 5.4, 0.6, [[(b, 13.5, WHITE, True)]], anchor=MSO_ANCHOR.MIDDLE)
237
- y += 0.8
238
- rect(s, 0.78, y + 0.05, 11.7, 0.7, VIOLET, radius=True)
239
- txt(s, 0.78, y + 0.1, 11.7, 0.6,
240
- [[("Trata la configuracion de IA como software de primera clase: versionado, modular, testeable y distribuido.",
241
- 14, WHITE, True)]], align=PP_ALIGN.CENTER, anchor=MSO_ANCHOR.MIDDLE)
242
- badge(s, 6); footer(s)
243
-
244
- # ================= SLIDE 7 — Pros y contras =================
245
- s = slide()
246
- kicker(s, "EVALUACION HONESTA")
247
- title(s, "Trade-offs")
248
- # Fortalezas
249
- rect(s, 0.78, 2.0, 5.7, 4.6, PANEL, radius=True)
250
- rect(s, 0.78, 2.0, 5.7, 0.6, RGBColor(0x14, 0x3D, 0x2E), radius=True)
251
- txt(s, 1.05, 2.05, 5.3, 0.5, [[("FORTALEZAS", 16, GREEN, True)]], anchor=MSO_ANCHOR.MIDDLE)
252
- pros = [
253
- "Eficiencia de tokens (solo lo relevante)",
254
- "Un comando, cero friccion (npx)",
255
- "Reproducible (manifest = snapshot exacto)",
256
- "Estandarizacion de equipo",
257
- "Auto-actualizable sin pisar tus cambios",
258
- "Testeable (framework skills-selftest)",
259
- ]
260
- y = 2.85
261
- for p in pros:
262
- txt(s, 1.05, y, 5.2, 0.5, [[("+ ", 14, GREEN, True), (p, 13.5, LIGHT, False)]])
263
- y += 0.6
264
- # Costos
265
- rect(s, 6.93, 2.0, 5.55, 4.6, PANEL, radius=True)
266
- rect(s, 6.93, 2.0, 5.55, 0.6, RGBColor(0x4A, 0x39, 0x12), radius=True)
267
- txt(s, 7.2, 2.05, 5.1, 0.5, [[("COSTOS / TRADE-OFFS", 16, AMBER, True)]], anchor=MSO_ANCHOR.MIDDLE)
268
- cons = [
269
- "Mantener 322 skills con calidad consistente",
270
- "Skills son prompts -> no deterministas",
271
- "Dependencia de la API de Claude Code",
272
- "Curva de aprendizaje para combinar profiles",
273
- ]
274
- y = 2.95
275
- for c in cons:
276
- txt(s, 7.2, y, 5.0, 0.6, [[("! ", 14, AMBER, True), (c, 13.5, LIGHT, False)]])
277
- y += 0.75
278
- badge(s, 7); footer(s)
279
-
280
- # ================= SLIDE 8 — Cierre =================
281
- s = slide()
282
- rect(s, 0, 0, 0.25, 7.5, VIOLET)
283
- rect(s, 0.25, 0, 0.08, 7.5, CYAN)
284
- kicker(s, "PRODUCTION-GRADE")
285
- title(s, "No es un script: es infraestructura", size=32)
286
- feats = [
287
- ("Distribucion hibrida", "GitHub -> cache -> bundled. Funciona incluso offline."),
288
- ("Smart update", "Three-way merge: actualiza sin pisar tus customizaciones."),
289
- ("Worktree-aware", "Comparte hooks/docs, copia skills por rama."),
290
- ("Auto-release", "semantic-release: conventional commits -> publish a npm."),
291
- ]
292
- positions = [(0.78, 2.15), (6.93, 2.15), (0.78, 3.75), (6.93, 3.75)]
293
- for (h, d), (x, y) in zip(feats, positions):
294
- rect(s, x, y, 5.6, 1.4, PANEL, radius=True)
295
- rect(s, x, y, 0.1, 1.4, CYAN)
296
- txt(s, x + 0.3, y + 0.18, 5.1, 0.5, [[(h, 17, CYAN, True)]])
297
- txt(s, x + 0.3, y + 0.68, 5.1, 0.6, [[(d, 13, LIGHT, False)]])
298
-
299
- rect(s, 0.78, 5.55, 11.7, 1.3, VIOLET, radius=True)
300
- txt(s, 0.78, 5.7, 11.7, 0.55,
301
- [[("Configuracion de IA, modular y versionada — un comando para empezar.", 19, WHITE, True)]],
302
- align=PP_ALIGN.CENTER)
303
- txt(s, 0.78, 6.25, 11.7, 0.5,
304
- [[("npx claude-code-arcane install <profile>", 22, WHITE, True)]], align=PP_ALIGN.CENTER)
305
- badge(s, 8); footer(s)
306
-
307
- out = os.path.join(os.path.dirname(os.path.abspath(__file__)), "arcane-overview.pptx")
308
- prs.save(out)
309
- print("OK ->", out)
310
- print("Slides:", len(prs.slides._sldIdLst))