claude-code-arcane 2.10.0 → 2.12.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 +26 -0
- package/README.md +8 -8
- package/dist/cli.js +15 -0
- package/docs/SKILLS-CATALOG.md +4 -2
- package/docs/USER-GUIDE.md +1 -1
- package/docs/templates/skill-test-spec.md +0 -1
- package/output-styles/arcane.md +51 -4
- package/package.json +1 -1
- package/profiles/backend-dotnet.yaml +2 -0
- package/profiles/backend-go.yaml +2 -0
- package/profiles/backend-nestjs.yaml +2 -0
- package/profiles/backend-nextjs.yaml +2 -0
- package/profiles/backend-ts.yaml +2 -0
- package/profiles/backend-typescript.yaml +2 -0
- package/profiles/blender.yaml +1 -0
- package/profiles/core.yaml +3 -0
- package/profiles/infra.yaml +2 -0
- package/profiles/meshy.yaml +1 -0
- package/rules/agent-delegation.md +8 -0
- package/rules/backend-code.md +7 -0
- package/rules/blender-files.md +72 -0
- package/rules/blender-pipeline.md +1 -63
- package/rules/dotnet-code.md +6 -0
- package/rules/frontend-code.md +25 -0
- package/rules/gamedev/ai-code.md +1 -0
- package/rules/gamedev/audio-code.md +1 -0
- package/rules/gamedev/engine-code.md +7 -0
- package/rules/gamedev/gameplay-code.md +8 -0
- package/rules/gamedev/narrative.md +1 -1
- package/rules/gamedev/network-code.md +1 -0
- package/rules/gamedev/shader-code.md +3 -0
- package/rules/gamedev/ui-code.md +7 -0
- package/rules/gamedev/unreal-code.md +6 -0
- package/rules/git-worktrees.md +22 -0
- package/rules/implementation-workflow.md +9 -0
- package/rules/infra-code.md +6 -0
- package/rules/meshy-assets.md +9 -78
- package/rules/meshy-files.md +83 -0
- package/rules/migration-code.md +6 -0
- package/rules/nestjs-code.md +6 -0
- package/rules/verification.md +13 -0
- package/skills/agent-protocol/SKILL.md +1 -1
- package/skills/agent-protocol/references/communication-standard.md +2 -2
- package/skills/ai-security/SKILL.md +4 -0
- package/skills/audit-dev/SKILL.md +1 -1
- package/skills/blender-animation/SKILL.md +1 -1
- package/skills/blender-export/SKILL.md +1 -1
- package/skills/blender-materials/SKILL.md +1 -1
- package/skills/blender-modeling/SKILL.md +1 -1
- package/skills/check/SKILL.md +1 -1
- package/skills/chief-of-staff/SKILL.md +1 -1
- package/skills/cloud-security/SKILL.md +4 -0
- package/skills/isms-audit-expert/SKILL.md +2 -0
- package/skills/meshy-derive/SKILL.md +1 -1
- package/skills/meshy-generate/SKILL.md +1 -1
- package/skills/meshy-setup/SKILL.md +1 -1
- package/skills/owasp-top10-check/SKILL.md +1 -1
- package/skills/qms-audit-expert/SKILL.md +2 -0
- package/skills/security-pen-testing/SKILL.md +1 -1
- package/skills/seo-audit/SKILL.md +1 -1
- package/skills/skill-auditor/SKILL.md +0 -1
- package/skills/skill-improve/SKILL.md +6 -7
- package/skills/skill-test/SKILL.md +3 -3
- package/skills/skill-test/references/static-checks.md +13 -8
- package/skills/standup-report/SKILL.md +1 -1
- package/skills/vn-gdd/SKILL.md +2 -0
- package/skills/web-security/SKILL.md +4 -0
- package/skills/worktree-isolation/README.md +6 -6
- package/skills/worktree-isolation/SKILL.md +5 -2
- package/skills/worktree-isolation-setup/README.md +7 -11
- package/skills/worktree-isolation-setup/SKILL.md +15 -6
- package/skills/worktree-isolation-setup/scripts/apply.py +0 -178
- package/skills/worktree-isolation-setup/scripts/install_hook.py +0 -118
- package/skills/worktree-isolation-setup/scripts/lib.py +0 -371
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,29 @@
|
|
|
1
|
+
# [2.12.0](https://github.com/SebastianLuser/claude-code-arcane/compare/v2.11.0...v2.12.0) (2026-10-16)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* **output-style:** shape answers for ADHD readers as well ([66351f7](https://github.com/SebastianLuser/claude-code-arcane/commit/66351f7fb9399eec97c650fb547826c4d7097152))
|
|
7
|
+
* **rules:** add verification, agent-delegation and git-worktrees core rules ([2ffe8ef](https://github.com/SebastianLuser/claude-code-arcane/commit/2ffe8ef0a6b4093f0171ff28a327509b7e30cff0))
|
|
8
|
+
* **rules:** say what counts as evidence in each domain rule ([81cec94](https://github.com/SebastianLuser/claude-code-arcane/commit/81cec94f21ae8cbe44c87e2aaa29d9aa4ba969b3))
|
|
9
|
+
|
|
10
|
+
# [2.11.0](https://github.com/SebastianLuser/claude-code-arcane/compare/v2.10.0...v2.11.0) (2026-10-11)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
* **global:** refuse to rewrite a malformed settings.json ([fa1a15b](https://github.com/SebastianLuser/claude-code-arcane/commit/fa1a15be969fe56fd865319df30b4e3bd985285e))
|
|
16
|
+
* **rules:** align the narrative dialogue limit with the VN rule at 200 ([3cc5f60](https://github.com/SebastianLuser/claude-code-arcane/commit/3cc5f60b0836c6a817018ca8af3b9ebf981499dc))
|
|
17
|
+
* **skill-test:** drop the ask-before-write static check ([28e504f](https://github.com/SebastianLuser/claude-code-arcane/commit/28e504f29ab2114d8f27f732d3fd148ccd3dc2be))
|
|
18
|
+
* **skills:** complete the skill catalog and the frontmatter it relies on ([5665fdf](https://github.com/SebastianLuser/claude-code-arcane/commit/5665fdfd60766ce663c26060d8f042d873f12ac1))
|
|
19
|
+
* **skills:** make the five-bullet limit a guide that never drops a critical finding ([466bf55](https://github.com/SebastianLuser/claude-code-arcane/commit/466bf554d862d55350c0d1cfb86caea4520779e6))
|
|
20
|
+
* **worktree:** ship the isolation skills with the profiles that run Docker ([f0a1589](https://github.com/SebastianLuser/claude-code-arcane/commit/f0a15894c6c064088c1fe55150f7145e04f5848a))
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
### Features
|
|
24
|
+
|
|
25
|
+
* **skills:** give the ten evaluator skills that lacked one a verdict ([26e9682](https://github.com/SebastianLuser/claude-code-arcane/commit/26e968235dbaf4babd7c93aa15c348639f7e6b8d))
|
|
26
|
+
|
|
1
27
|
# [2.10.0](https://github.com/SebastianLuser/claude-code-arcane/compare/v2.9.9...v2.10.0) (2026-10-10)
|
|
2
28
|
|
|
3
29
|
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Claude Code Arcane
|
|
2
2
|
|
|
3
|
-
> **437 skills, 115 agents, 17 hooks and
|
|
3
|
+
> **437 skills, 115 agents, 17 hooks and 36 rules for Claude Code — selective deploy by profile.**
|
|
4
4
|
|
|
5
5
|
A configuration harness installable via `npx`. Pick a **profile** that matches your stack and only the relevant tools get installed into your project's `.claude/` directory.
|
|
6
6
|
|
|
@@ -190,11 +190,11 @@ Older names still install and update: `backend-ts`, `frontend`, `mobile`, `flutt
|
|
|
190
190
|
|
|
191
191
|
| Profile | Stack | Skills | Agents |
|
|
192
192
|
|---------|-------|--------|--------|
|
|
193
|
-
| `backend-typescript` | Backend TypeScript — Fastify, Prisma, Zod, API design |
|
|
194
|
-
| `backend-go` | Backend Go — Clean Arch, DB, auth, API, CI |
|
|
195
|
-
| `backend-dotnet` | Backend .NET — ASP.NET Core, Vertical Slice/Clean, EF Core, JWT |
|
|
196
|
-
| `backend-nestjs` | Backend NestJS — feature modules, DI, Prisma, JWT, microservices |
|
|
197
|
-
| `backend-nextjs` | Next.js full-stack — App Router, RSC, Server Actions, SEO, AI SDK |
|
|
193
|
+
| `backend-typescript` | Backend TypeScript — Fastify, Prisma, Zod, API design | 27 | engineering |
|
|
194
|
+
| `backend-go` | Backend Go — Clean Arch, DB, auth, API, CI | 26 | engineering |
|
|
195
|
+
| `backend-dotnet` | Backend .NET — ASP.NET Core, Vertical Slice/Clean, EF Core, JWT | 27 | engineering |
|
|
196
|
+
| `backend-nestjs` | Backend NestJS — feature modules, DI, Prisma, JWT, microservices | 27 | engineering |
|
|
197
|
+
| `backend-nextjs` | Next.js full-stack — App Router, RSC, Server Actions, SEO, AI SDK | 24 | engineering |
|
|
198
198
|
|
|
199
199
|
### Frontend & Design
|
|
200
200
|
|
|
@@ -228,7 +228,7 @@ Older names still install and update: `backend-ts`, `frontend`, `mobile`, `flutt
|
|
|
228
228
|
|
|
229
229
|
| Profile | Adds | Skills | Agents |
|
|
230
230
|
|---------|------|--------|--------|
|
|
231
|
-
| `infra` | Terraform, observability, secrets, rollback, K8s |
|
|
231
|
+
| `infra` | Terraform, observability, secrets, rollback, K8s | 26 | devops |
|
|
232
232
|
| `database` | Indexing, migrations, seeding, replicas, optimization | 8 | — |
|
|
233
233
|
| `security` | Audits, OWASP, secrets, backups | 10 | — |
|
|
234
234
|
| `testing` | Contract, performance, regression, flakiness | 11 | quality |
|
|
@@ -461,7 +461,7 @@ claude-code-arcane/
|
|
|
461
461
|
├── profiles/ # 38 profiles (YAML)
|
|
462
462
|
├── agents/ # 17 dirs, 109 agents (Markdown)
|
|
463
463
|
├── hooks/ # 17 lifecycle hooks (Bash)
|
|
464
|
-
├── rules/ #
|
|
464
|
+
├── rules/ # 36 rules (Markdown)
|
|
465
465
|
├── templates/ # Gamedev templates
|
|
466
466
|
├── docs/ # Documentation
|
|
467
467
|
└── skills-selftest/ # QA framework
|
package/dist/cli.js
CHANGED
|
@@ -3205,12 +3205,27 @@ async function globalCommand(opts) {
|
|
|
3205
3205
|
showStatus();
|
|
3206
3206
|
return;
|
|
3207
3207
|
}
|
|
3208
|
+
if (!settingsParseable()) {
|
|
3209
|
+
console.error(
|
|
3210
|
+
chalk10.red(` Refusing to modify malformed ${SETTINGS_PATH}. Fix it and re-run.`)
|
|
3211
|
+
);
|
|
3212
|
+
process.exit(1);
|
|
3213
|
+
}
|
|
3208
3214
|
if (opts.remove) {
|
|
3209
3215
|
removeGlobal();
|
|
3210
3216
|
return;
|
|
3211
3217
|
}
|
|
3212
3218
|
installGlobal();
|
|
3213
3219
|
}
|
|
3220
|
+
function settingsParseable() {
|
|
3221
|
+
if (!fs17.existsSync(SETTINGS_PATH)) return true;
|
|
3222
|
+
try {
|
|
3223
|
+
JSON.parse(fs17.readFileSync(SETTINGS_PATH, "utf-8"));
|
|
3224
|
+
return true;
|
|
3225
|
+
} catch {
|
|
3226
|
+
return false;
|
|
3227
|
+
}
|
|
3228
|
+
}
|
|
3214
3229
|
function showStatus() {
|
|
3215
3230
|
console.log(chalk10.bold("\n=== Arcane Global Status ===\n"));
|
|
3216
3231
|
const hasScripts = fs17.existsSync(
|
package/docs/SKILLS-CATALOG.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Los 437 skills disponibles para proyectos consumidores, organizados por division.
|
|
4
4
|
|
|
5
|
-
La tabla cubre
|
|
5
|
+
La tabla cubre 397: hay 40 skills instalables que todavia no estan catalogados aca. Un test de CI (`src/__tests__/doc-counts.test.ts`) verifica que estos numeros coincidan con el filesystem y que el header de cada seccion coincida con sus filas.
|
|
6
6
|
|
|
7
7
|
## Como ejecutar un skill
|
|
8
8
|
|
|
@@ -376,7 +376,7 @@ Instalables con el perfil `unreal-dev`. Procedencia y licencias en `ATTRIBUTION.
|
|
|
376
376
|
|
|
377
377
|
---
|
|
378
378
|
|
|
379
|
-
## DevOps (
|
|
379
|
+
## DevOps (8 skills)
|
|
380
380
|
|
|
381
381
|
| Skill | Descripcion | Uso |
|
|
382
382
|
|-------|-------------|-----|
|
|
@@ -386,6 +386,8 @@ Instalables con el perfil `unreal-dev`. Procedencia y licencias en `ATTRIBUTION.
|
|
|
386
386
|
| `/helm-chart-builder` | Build production-grade Helm charts: scaffolding, values design, template patterns, dependency management, and security hardening | `[scaffold\|lint\|test]` |
|
|
387
387
|
| `/incident-commander` | Manage technology incidents end-to-end: severity classification, timeline reconstruction, stakeholder communication, and RCA | `[classify\|timeline\|communicate]` |
|
|
388
388
|
| `/incident-response` | Classify and triage security incidents through the full NIST SP 800-61 lifecycle: SEV1-4 scoring and forensic evidence collection | `[classify\|triage\|forensics]` |
|
|
389
|
+
| `/worktree-isolation` | Regenera o muestra los puertos de Docker de este worktree para que varios worktrees corran en paralelo sin chocar | `[apply\|status]` |
|
|
390
|
+
| `/worktree-isolation-setup` | Prepara el repo una vez: parametriza puertos y container_name del docker-compose, `.gitignore`, CLAUDE.md y el hook global | |
|
|
389
391
|
|
|
390
392
|
---
|
|
391
393
|
|
package/docs/USER-GUIDE.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## What is Arcane?
|
|
4
4
|
|
|
5
|
-
Arcane is a configuration harness for [Claude Code](https://docs.anthropic.com/en/docs/claude-code). It provides a curated library of **437 skills**, **115 agents**, **17 hooks**, and **
|
|
5
|
+
Arcane is a configuration harness for [Claude Code](https://docs.anthropic.com/en/docs/claude-code). It provides a curated library of **437 skills**, **115 agents**, **17 hooks**, and **36 rules** that you selectively deploy into any project. Instead of shipping everything to every project (wasting tokens and degrading performance), you pick a **profile** that matches your stack and only the relevant tools get installed.
|
|
6
6
|
|
|
7
7
|
## Table of Contents
|
|
8
8
|
|
|
@@ -15,7 +15,6 @@ Verified automatically by `/skill-test static` — no fixture needed.
|
|
|
15
15
|
- [ ] Has required frontmatter fields: `name`, `description`, `argument-hint`, `user-invocable`, `allowed-tools`
|
|
16
16
|
- [ ] Has ≥2 phase headings (## Phase N or numbered ## sections)
|
|
17
17
|
- [ ] Contains verdict keywords: [list the ones expected, e.g., PASS, FAIL, CONCERNS]
|
|
18
|
-
- [ ] Contains "May I write" collaborative protocol language (if skill writes files)
|
|
19
18
|
- [ ] Has a next-step handoff at the end
|
|
20
19
|
|
|
21
20
|
---
|
package/output-styles/arcane.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: arcane
|
|
3
|
-
description: Respuestas compactas, tablas para comparar, lenguaje literal y estructura legible — pensado para lectura con TEA y dislexia.
|
|
3
|
+
description: Respuestas compactas, tablas para comparar, lenguaje literal y estructura legible — pensado para lectura con TEA, TDAH y dislexia.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Arcane
|
|
@@ -11,8 +11,8 @@ autorizan entregar menos.
|
|
|
11
11
|
|
|
12
12
|
## Largo
|
|
13
13
|
|
|
14
|
-
- **La respuesta primero.** Primera línea: qué
|
|
15
|
-
para
|
|
14
|
+
- **La respuesta o la acción primero.** Primera línea: qué pasó, qué contestás o, si hay algo
|
|
15
|
+
para hacer, esa acción (un comando, un archivo, una decisión). El detalle va después.
|
|
16
16
|
- **Sin preámbulo.** No repitas la pregunta, no anuncies lo que vas a hacer, no cierres
|
|
17
17
|
resumiendo lo que acabás de decir.
|
|
18
18
|
- **Un tema por párrafo, tres líneas como máximo.** Si un párrafo crece, partilo o pasalo a
|
|
@@ -27,12 +27,19 @@ autorizan entregar menos.
|
|
|
27
27
|
- **Tabla siempre que compares.** Dos o más cosas con dos o más atributos (opciones,
|
|
28
28
|
versiones, proyectos, trade-offs) van en tabla, no en prosa ni en bullets paralelos. Una
|
|
29
29
|
columna por atributo, una fila por cosa.
|
|
30
|
-
- **
|
|
30
|
+
- **Pasos numerados, una acción por paso.** La menor cantidad de pasos que funcione; ningún
|
|
31
|
+
paso dice "y después" dos veces. Prosa solo para el razonamiento que une las cosas.
|
|
32
|
+
- **Cinco ítems como máximo por lista o tabla visible.** Si hay más, agrupalos en secciones
|
|
33
|
+
con lo más relevante primero. Es solo presentación: nunca descartes un ítem relevante.
|
|
31
34
|
- **Títulos cuando hay más de un tema.** Que se pueda saltar a la parte que importa sin
|
|
32
35
|
leer todo.
|
|
33
36
|
- **`backticks` en todo identificador** — archivos, comandos, ramas, funciones, flags.
|
|
34
37
|
- **Bold para lo importante**, no italics: es más fácil de decodificar. Nunca MAYÚSCULAS
|
|
35
38
|
para enfatizar, deforman la silueta de la palabra.
|
|
39
|
+
- **Página HTML solo para lo que se entiende mejor dibujado.** Si está instalada
|
|
40
|
+
`answer-me-with-html`, usala para explicar cómo funciona algo, un flujo o una
|
|
41
|
+
arquitectura, o cuando el usuario pida "dibujalo". Para comparar o listar, alcanza una
|
|
42
|
+
tabla en la respuesta.
|
|
36
43
|
|
|
37
44
|
## Lenguaje
|
|
38
45
|
|
|
@@ -46,8 +53,48 @@ autorizan entregar menos.
|
|
|
46
53
|
de prosa condicional que deja al lector adivinando el nivel de confianza.
|
|
47
54
|
- **Decí explícitamente qué esperás del otro.** Si hace falta una decisión, que se vea que
|
|
48
55
|
hace falta y cuáles son las alternativas.
|
|
56
|
+
- **Errores sin dramatismo.** Causa y arreglo: "falla en `auth.spec.ts:42`, falta el
|
|
57
|
+
header", no "uy, algo salió mal".
|
|
49
58
|
|
|
50
59
|
## Números y datos
|
|
51
60
|
|
|
52
61
|
- **El dato antes que el adjetivo.** "62 commits atrás" en vez de "bastante atrasado".
|
|
53
62
|
- **Unidad y fecha completas.** `2026-09-04`, no "ayer"; `312 KB`, no "poco".
|
|
63
|
+
- **El tamaño en unidades contables.** "3 archivos, 2 pasos, 1 PR", no "rápido" ni "un
|
|
64
|
+
rato". Nada de estimar minutos.
|
|
65
|
+
|
|
66
|
+
## Seguimiento
|
|
67
|
+
|
|
68
|
+
- **Decí el estado en tareas de varios pasos.** "Paso 3 de 5 hecho: X. Sigue: Y." Si hay
|
|
69
|
+
herramienta de tareas, la lista de tareas reemplaza esa narración.
|
|
70
|
+
- **Que lo terminado se vea.** "El login ya funciona: probá `npm run dev` y entrá a
|
|
71
|
+
`/login`", no "hice algunos cambios".
|
|
72
|
+
- **Sin desvíos.** Si aparece un segundo tema, cerrá el actual y ofrecé el otro aparte, al
|
|
73
|
+
final. Una duda que surge en el medio, resolvela vos si podés.
|
|
74
|
+
- **Cerrá con una sola acción concreta** que el usuario pueda hacer en poco tiempo, si
|
|
75
|
+
queda algo abierto.
|
|
76
|
+
|
|
77
|
+
## Cuándo se rompen estas reglas
|
|
78
|
+
|
|
79
|
+
1. **"Explicame".** Se explica completo, con títulos. Sigue sin preámbulo ni cierre.
|
|
80
|
+
2. **Algo destructivo por delante.** Confirmá antes de actuar: la seguridad gana a la
|
|
81
|
+
brevedad.
|
|
82
|
+
3. **Espiral de debug.** Si los últimos 3 turnos fueron "sigue roto", dejá de tocar código.
|
|
83
|
+
Nombrá la suposición que puede estar mal y hacé una sola pregunta de diagnóstico.
|
|
84
|
+
4. **Pedido ambiguo.** Una pregunta corta antes que adivinar.
|
|
85
|
+
5. **"¿Qué opciones tengo?"** De 2 a 4 opciones con la recomendada primero: las opciones
|
|
86
|
+
son la respuesta.
|
|
87
|
+
6. **El trabajo del agente lo hace el agente.** No preguntes "¿querés que lo haga?" por algo
|
|
88
|
+
que te toca hacer. Las decisiones que son del usuario siguen siendo preguntas.
|
|
89
|
+
|
|
90
|
+
## Antes de enviar
|
|
91
|
+
|
|
92
|
+
Borrá:
|
|
93
|
+
|
|
94
|
+
1. La primera oración, si anuncia lo que vas a hacer.
|
|
95
|
+
2. La última, si pregunta "¿algo más?" o resume lo que pasó.
|
|
96
|
+
3. Los "por cierto".
|
|
97
|
+
4. Las dudas de relleno ("quizás", "podría"). Las que expresan incertidumbre real quedan.
|
|
98
|
+
5. Los modismos.
|
|
99
|
+
|
|
100
|
+
Prueba final: leyendo solo la primera y la última línea, ¿se sabe qué pasó y qué sigue?
|
package/package.json
CHANGED
package/profiles/backend-go.yaml
CHANGED
package/profiles/backend-ts.yaml
CHANGED
package/profiles/blender.yaml
CHANGED
package/profiles/core.yaml
CHANGED
package/profiles/infra.yaml
CHANGED
package/profiles/meshy.yaml
CHANGED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# Agent Delegation Rule
|
|
2
|
+
|
|
3
|
+
Applies to the main session and to every subagent it starts.
|
|
4
|
+
|
|
5
|
+
- **Your final message is the deliverable.** Never end a turn with "waiting for the subagents": a started task is not a finished one.
|
|
6
|
+
- **If you delegate, you collect.** Wait for every result, integrate it, then answer. No fire-and-forget.
|
|
7
|
+
- **One agent by default.** Split work only when it cannot fit one context, or when the second agent needs something the first must not have: different tools or permissions, a clean context (a reviewer that must not see the maker's reasoning), or a different model.
|
|
8
|
+
- **The prompt is all the subagent knows.** It does not see this conversation: pass the goal, the relevant files and the output format you expect.
|
package/rules/backend-code.md
CHANGED
|
@@ -33,3 +33,10 @@ paths:
|
|
|
33
33
|
- Nested business logic in DB queries (computed columns that reimplement rules)
|
|
34
34
|
- Silent retries with no backoff, no max attempts, no circuit breaker
|
|
35
35
|
- Returning raw DB rows as HTTP responses — always go through a DTO / view model
|
|
36
|
+
|
|
37
|
+
## How to verify
|
|
38
|
+
|
|
39
|
+
- Run the tests that cover the change.
|
|
40
|
+
- Start the service locally and call the changed endpoint with `curl` (or the project's HTTP client). Show the status code and the body.
|
|
41
|
+
- Call one failure case too (invalid input, missing auth), not only the happy path.
|
|
42
|
+
- Read the server log for those requests: no stack trace, no unexpected warning.
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.blend"
|
|
4
|
+
- "**/*.fbx"
|
|
5
|
+
- "**/*.glb"
|
|
6
|
+
- "**/*.gltf"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Blender Files
|
|
10
|
+
|
|
11
|
+
Como tiene que salir un asset de Blender hacia un engine o la web. Como operar Blender sin romper nada esta en `.claude/rules/blender-pipeline.md`, que se carga siempre.
|
|
12
|
+
|
|
13
|
+
## Ejes, escala y unidades
|
|
14
|
+
|
|
15
|
+
Verificar una vez por proyecto, anotarlo, no volver a pensarlo.
|
|
16
|
+
|
|
17
|
+
| Destino | Convencion | Al exportar desde Blender |
|
|
18
|
+
|---|---|---|
|
|
19
|
+
| Blender | Z-up, right-handed, 1 unidad = 1 m | — |
|
|
20
|
+
| glTF / GLB | Y-up, metros | El exporter convierte solo (`+Y up`) |
|
|
21
|
+
| Unity | Y-up, left-handed, 1 unidad = 1 m | glTF sale derecho; en FBX revisar el eje |
|
|
22
|
+
| UE5 | Z-up, left-handed, 1 unidad = 1 cm | Factor 100 |
|
|
23
|
+
|
|
24
|
+
Reglas duras:
|
|
25
|
+
|
|
26
|
+
- **Aplicar escala antes de exportar** (`Object → Apply → Scale`). Un objeto que sale con `scale`
|
|
27
|
+
distinto de 1 arrastra el problema al engine y rompe la fisica y el skinning.
|
|
28
|
+
- Origen al piso para props y personajes; al centro para objetos que rotan sobre si mismos.
|
|
29
|
+
- Un nodo con escala `100` o `0.01` en el archivo exportado es una conversion de unidades sin
|
|
30
|
+
aplicar, no una decision de diseno. Se corrige, no se documenta.
|
|
31
|
+
|
|
32
|
+
## Topologia
|
|
33
|
+
|
|
34
|
+
- **Quads en todo lo que deforma.** Tris solo en geometria estatica. N-gons en nada que deforme.
|
|
35
|
+
- Edge loops en articulaciones, poles de 5 aristas o menos.
|
|
36
|
+
- Presupuesto de triangulos declarado **antes** de modelar, no medido despues.
|
|
37
|
+
- Un LOD generado con Decimate es un borrador. Para heroes va retopo a mano.
|
|
38
|
+
|
|
39
|
+
## Materiales y texturas
|
|
40
|
+
|
|
41
|
+
- **Principled BSDF y nada mas** en lo que se exporta. Los nodos procedurales no sobreviven a
|
|
42
|
+
glTF ni a FBX: si el look depende de ellos, hay que bakearlo a textura.
|
|
43
|
+
- Color space: Base Color en sRGB; Normal, Roughness, Metallic y AO en **Non-Color**. Es el bug
|
|
44
|
+
mas comun y el mas silencioso.
|
|
45
|
+
- Normal maps: Blender, glTF y Unity usan OpenGL (+Y). **UE5 usa DirectX (-Y)**: hay que invertir
|
|
46
|
+
el canal verde o marcarlo en el import.
|
|
47
|
+
- Resoluciones potencia de dos. Texel density consistente entre assets del mismo set.
|
|
48
|
+
- Cantidad de materiales = draw calls. Atlas antes de sumar materiales.
|
|
49
|
+
|
|
50
|
+
## Animacion
|
|
51
|
+
|
|
52
|
+
- **Los constraints no se exportan, los keyframes si.** Todo rig con IK, drivers o constraints se
|
|
53
|
+
bakea (`nla.bake` con visual keying) antes de exportar.
|
|
54
|
+
- Frame rate del `.blend` igual al del engine. Un mismatch se ve como animacion lenta o acelerada,
|
|
55
|
+
no como error.
|
|
56
|
+
- Huesos con sufijo `.L` / `.R` para que la simetria funcione.
|
|
57
|
+
- Root motion: hueso raiz en el origen. Decidir in-place vs root motion **antes** de animar.
|
|
58
|
+
|
|
59
|
+
## Git
|
|
60
|
+
|
|
61
|
+
- `*.blend *.fbx *.glb *.gltf` por **Git LFS**. Verificar `git lfs version` antes de agregar las
|
|
62
|
+
entradas: peor que no tenerlas es tenerlas sin LFS instalado.
|
|
63
|
+
- `*.blend1` y `*.blend2` (backups de Blender) van al `.gitignore`, nunca al repo.
|
|
64
|
+
- Las texturas fuente (`.psd`, `.kra`, `.exr` de bake) por LFS; los `.png` finales tambien.
|
|
65
|
+
|
|
66
|
+
## Integracion con el resto del stack
|
|
67
|
+
|
|
68
|
+
`asset-spec` define que asset hace falta → Meshy o modelado a mano lo produce → **Blender lo
|
|
69
|
+
limpia y lo exporta** → `asset-audit` valida el resultado en el proyecto.
|
|
70
|
+
|
|
71
|
+
Blender es el paso del medio, no el principio ni el final. Si el asset vino de `meshy-derive`, el
|
|
72
|
+
`.blend` que bajo es el punto de entrada; no se regenera desde Meshy para arreglar topologia.
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
# Blender Pipeline
|
|
2
2
|
|
|
3
|
-
Reglas
|
|
4
|
-
operacion que toque un `.blend` o exporte desde uno.
|
|
3
|
+
Reglas que tienen que estar presentes antes de operar Blender, por MCP o headless, aunque todavia no se haya tocado un `.blend`. Ejes, topologia, materiales, animacion y Git estan en `.claude/rules/blender-files.md`, que se carga al tocar un `.blend` o un archivo exportado.
|
|
5
4
|
|
|
6
5
|
## El MCP es opcional, el headless no
|
|
7
6
|
|
|
@@ -32,64 +31,3 @@ barrera**. Consecuencias que no son negociables:
|
|
|
32
31
|
3. No apuntarlo a una maquina con material sensible ni a credenciales.
|
|
33
32
|
4. Un script que borra (`bpy.data.*.remove`, `object.delete`) se muestra al usuario **antes** de
|
|
34
33
|
correrlo, siempre, incluso si lo pidio.
|
|
35
|
-
|
|
36
|
-
## Ejes, escala y unidades
|
|
37
|
-
|
|
38
|
-
Verificar una vez por proyecto, anotarlo, no volver a pensarlo.
|
|
39
|
-
|
|
40
|
-
| Destino | Convencion | Al exportar desde Blender |
|
|
41
|
-
|---|---|---|
|
|
42
|
-
| Blender | Z-up, right-handed, 1 unidad = 1 m | — |
|
|
43
|
-
| glTF / GLB | Y-up, metros | El exporter convierte solo (`+Y up`) |
|
|
44
|
-
| Unity | Y-up, left-handed, 1 unidad = 1 m | glTF sale derecho; en FBX revisar el eje |
|
|
45
|
-
| UE5 | Z-up, left-handed, 1 unidad = 1 cm | Factor 100 |
|
|
46
|
-
|
|
47
|
-
Reglas duras:
|
|
48
|
-
|
|
49
|
-
- **Aplicar escala antes de exportar** (`Object → Apply → Scale`). Un objeto que sale con `scale`
|
|
50
|
-
distinto de 1 arrastra el problema al engine y rompe la fisica y el skinning.
|
|
51
|
-
- Origen al piso para props y personajes; al centro para objetos que rotan sobre si mismos.
|
|
52
|
-
- Un nodo con escala `100` o `0.01` en el archivo exportado es una conversion de unidades sin
|
|
53
|
-
aplicar, no una decision de diseno. Se corrige, no se documenta.
|
|
54
|
-
|
|
55
|
-
## Topologia
|
|
56
|
-
|
|
57
|
-
- **Quads en todo lo que deforma.** Tris solo en geometria estatica. N-gons en nada que deforme.
|
|
58
|
-
- Edge loops en articulaciones, poles de 5 aristas o menos.
|
|
59
|
-
- Presupuesto de triangulos declarado **antes** de modelar, no medido despues.
|
|
60
|
-
- Un LOD generado con Decimate es un borrador. Para heroes va retopo a mano.
|
|
61
|
-
|
|
62
|
-
## Materiales y texturas
|
|
63
|
-
|
|
64
|
-
- **Principled BSDF y nada mas** en lo que se exporta. Los nodos procedurales no sobreviven a
|
|
65
|
-
glTF ni a FBX: si el look depende de ellos, hay que bakearlo a textura.
|
|
66
|
-
- Color space: Base Color en sRGB; Normal, Roughness, Metallic y AO en **Non-Color**. Es el bug
|
|
67
|
-
mas comun y el mas silencioso.
|
|
68
|
-
- Normal maps: Blender, glTF y Unity usan OpenGL (+Y). **UE5 usa DirectX (-Y)**: hay que invertir
|
|
69
|
-
el canal verde o marcarlo en el import.
|
|
70
|
-
- Resoluciones potencia de dos. Texel density consistente entre assets del mismo set.
|
|
71
|
-
- Cantidad de materiales = draw calls. Atlas antes de sumar materiales.
|
|
72
|
-
|
|
73
|
-
## Animacion
|
|
74
|
-
|
|
75
|
-
- **Los constraints no se exportan, los keyframes si.** Todo rig con IK, drivers o constraints se
|
|
76
|
-
bakea (`nla.bake` con visual keying) antes de exportar.
|
|
77
|
-
- Frame rate del `.blend` igual al del engine. Un mismatch se ve como animacion lenta o acelerada,
|
|
78
|
-
no como error.
|
|
79
|
-
- Huesos con sufijo `.L` / `.R` para que la simetria funcione.
|
|
80
|
-
- Root motion: hueso raiz en el origen. Decidir in-place vs root motion **antes** de animar.
|
|
81
|
-
|
|
82
|
-
## Git
|
|
83
|
-
|
|
84
|
-
- `*.blend *.fbx *.glb *.gltf` por **Git LFS**. Verificar `git lfs version` antes de agregar las
|
|
85
|
-
entradas: peor que no tenerlas es tenerlas sin LFS instalado.
|
|
86
|
-
- `*.blend1` y `*.blend2` (backups de Blender) van al `.gitignore`, nunca al repo.
|
|
87
|
-
- Las texturas fuente (`.psd`, `.kra`, `.exr` de bake) por LFS; los `.png` finales tambien.
|
|
88
|
-
|
|
89
|
-
## Integracion con el resto del stack
|
|
90
|
-
|
|
91
|
-
`asset-spec` define que asset hace falta → Meshy o modelado a mano lo produce → **Blender lo
|
|
92
|
-
limpia y lo exporta** → `asset-audit` valida el resultado en el proyecto.
|
|
93
|
-
|
|
94
|
-
Blender es el paso del medio, no el principio ni el final. Si el asset vino de `meshy-derive`, el
|
|
95
|
-
`.blend` que bajo es el punto de entrada; no se regenera desde Meshy para arreglar topologia.
|
package/rules/dotnet-code.md
CHANGED
|
@@ -59,6 +59,12 @@ Reglas production-ready para ASP.NET Core (.NET 10), ordenadas por impacto. Cat
|
|
|
59
59
|
- `Domain` referenciando `Infrastructure` / EF Core (dependencia hacia afuera)
|
|
60
60
|
- Forzar Clean Architecture en un CRUD simple (sobre-ingeniería)
|
|
61
61
|
|
|
62
|
+
## How to verify
|
|
63
|
+
|
|
64
|
+
- `dotnet build` with no new warnings, and `dotnet test` for the projects the change touches.
|
|
65
|
+
- Run the API locally and call the changed endpoint with `curl`: show the status code and the body, plus one failure case (invalid input, missing auth).
|
|
66
|
+
- Read the log for those requests: no exception, no unexpected warning.
|
|
67
|
+
|
|
62
68
|
---
|
|
63
69
|
|
|
64
70
|
_Derivado de [github/awesome-copilot](https://github.com/github/awesome-copilot) (dotnet-best-practices), [dotnet/skills](https://github.com/dotnet/skills) y [ardalis/CleanArchitecture](https://github.com/ardalis/CleanArchitecture). Condensado al formato Arcane._
|
package/rules/frontend-code.md
CHANGED
|
@@ -33,3 +33,28 @@ paths:
|
|
|
33
33
|
- Unmanaged re-renders triggered by new object/array literals in parent render
|
|
34
34
|
- DOM manipulation via `document.querySelector` inside a component
|
|
35
35
|
- Inline handlers defined in JSX for components that memoize
|
|
36
|
+
|
|
37
|
+
## Visual Quality
|
|
38
|
+
|
|
39
|
+
- Do not ship library defaults as the design: a stock card grid, a centered hero with a gradient blob, the same radius and shadow on every component.
|
|
40
|
+
- Give each screen a hierarchy: one primary action, deliberate emphasis, designed hover, focus and active states.
|
|
41
|
+
- If the app has light and dark themes, both must look designed, not inverted.
|
|
42
|
+
|
|
43
|
+
## Web Performance
|
|
44
|
+
|
|
45
|
+
- Images declare `width` and `height`, load `lazy` below the fold, and ship as AVIF or WebP near their rendered size.
|
|
46
|
+
- At most two font families, `font-display: swap`, and preload only the critical weight.
|
|
47
|
+
- Animate only `transform` and `opacity`; use `IntersectionObserver` instead of scroll handlers.
|
|
48
|
+
- Third-party scripts load `async` or `defer`, and only on the pages that need them.
|
|
49
|
+
|
|
50
|
+
## How to verify
|
|
51
|
+
|
|
52
|
+
- The build passes and the type check is clean.
|
|
53
|
+
- For a web task done in Plan + Goal or Goal-driven mode, a Playwright check is required before the task counts as done:
|
|
54
|
+
1. The page loads with no console errors.
|
|
55
|
+
2. Screenshots at 320, 768, 1024 and 1440 px wide, in both themes if the app has a dark mode.
|
|
56
|
+
3. Walk the flow you changed: clicks, forms, navigation.
|
|
57
|
+
4. Keyboard: every control in the flow is reachable with Tab, usable with Enter or Space, and shows a visible focus.
|
|
58
|
+
5. Keep the screenshots and show them as evidence.
|
|
59
|
+
- If Playwright is not installed, propose installing it once (`npm i -D @playwright/test`, then `npx playwright install chromium`). If the user declines, close the task with "visual result not verified".
|
|
60
|
+
- In React Native or Flutter Playwright does not apply: say what was not verified visually.
|
package/rules/gamedev/ai-code.md
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
paths:
|
|
3
3
|
- "src/core/**"
|
|
4
|
+
- "Assets/**/Scripts/Core/**"
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
# Engine Code Rules
|
|
@@ -39,3 +40,9 @@ void FixedUpdate()
|
|
|
39
40
|
nearby.AddRange(FindObjectsOfType<Enemy>()); // VIOLATION: scene scan every frame
|
|
40
41
|
}
|
|
41
42
|
```
|
|
43
|
+
|
|
44
|
+
## How to verify
|
|
45
|
+
|
|
46
|
+
- The project compiles with no new errors: the Unity console, or a batchmode compile (`Unity -batchmode -quit -projectPath . -logFile -`); for Unreal, see `unreal-code`.
|
|
47
|
+
- Run the EditMode and PlayMode tests that cover the change (`-runTests -testPlatform EditMode` or `PlayMode`).
|
|
48
|
+
- You cannot play the game. Name what needs a human playtest (game feel, timing, visuals, input) and list exactly what to try.
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
paths:
|
|
3
3
|
- "src/gameplay/**"
|
|
4
|
+
- "Assets/**/Scripts/Gameplay/**"
|
|
5
|
+
- "Assets/**/Scripts/Systems/**"
|
|
4
6
|
---
|
|
5
7
|
|
|
6
8
|
# Gameplay Code Rules
|
|
@@ -28,3 +30,9 @@ float speed = stats.MovementSpeed * Time.deltaTime;
|
|
|
28
30
|
float damage = 25.0f; // VIOLATION: hardcoded gameplay value
|
|
29
31
|
float speed = 5.0f; // VIOLATION: not from config, not using delta
|
|
30
32
|
```
|
|
33
|
+
|
|
34
|
+
## How to verify
|
|
35
|
+
|
|
36
|
+
- The project compiles with no new errors: the Unity console, or a batchmode compile (`Unity -batchmode -quit -projectPath . -logFile -`); for Unreal, see `unreal-code`.
|
|
37
|
+
- Run the EditMode and PlayMode tests that cover the change (`-runTests -testPlatform EditMode` or `PlayMode`).
|
|
38
|
+
- You cannot play the game. Name what needs a human playtest (game feel, timing, visuals, input) and list exactly what to try.
|
|
@@ -12,4 +12,4 @@ paths:
|
|
|
12
12
|
- Mysteries must have documented "true answers" even if players never learn them
|
|
13
13
|
- Faction motivations, relationships, and power structures must be internally logical
|
|
14
14
|
- All narrative text must be localization-ready: no idioms that don't translate, named placeholders for variables
|
|
15
|
-
- No line of dialogue should exceed
|
|
15
|
+
- No line of dialogue should exceed 200 characters for dialogue box constraints
|