claude-code-arcane 2.0.0 → 2.2.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 +24 -0
- package/README.md +6 -4
- package/agents/audio/audio-director.md +90 -0
- package/agents/audio/audio-programmer.md +97 -0
- package/agents/audio/audio-qa.md +95 -0
- package/agents/audio/composer.md +88 -0
- package/agents/audio/technical-sound-designer.md +90 -0
- package/agents/audio/voice-director.md +96 -0
- package/docs/SKILLS-CATALOG.md +45 -2
- package/docs/USER-GUIDE.md +2 -2
- package/package.json +1 -1
- package/profiles/audio.yaml +45 -0
- package/profiles/second-brain.yaml +37 -0
- package/rules/gamedev/audio-code.md +45 -0
- package/rules/vault-conventions.md +144 -0
- package/skills/adaptive-music/SKILL.md +171 -0
- package/skills/adaptive-music/references/anti-patterns.md +53 -0
- package/skills/audio-audit/SKILL.md +164 -0
- package/skills/audio-audit/references/anti-patterns.md +65 -0
- package/skills/audio-audit/scripts/check_assets.py +208 -0
- package/skills/audio-bible/SKILL.md +119 -0
- package/skills/audio-bible/references/anti-patterns.md +39 -0
- package/skills/audio-mix/SKILL.md +151 -0
- package/skills/audio-mix/references/anti-patterns.md +65 -0
- package/skills/audio-spec/SKILL.md +107 -0
- package/skills/audio-spec/references/anti-patterns.md +45 -0
- package/skills/brain-dump/SKILL.md +53 -0
- package/skills/hub-note/SKILL.md +68 -0
- package/skills/middleware-integration/SKILL.md +186 -0
- package/skills/middleware-integration/references/anti-patterns.md +69 -0
- package/skills/midi-compose/SKILL.md +136 -0
- package/skills/midi-compose/references/smf-format.md +129 -0
- package/skills/midi-compose/scripts/compose_midi.py +326 -0
- package/skills/midi-compose/templates/example-composition.json +69 -0
- package/skills/music-composition/SKILL.md +106 -0
- package/skills/music-composition/references/form.md +57 -0
- package/skills/music-composition/references/game-music.md +82 -0
- package/skills/music-composition/references/harmony.md +82 -0
- package/skills/music-composition/references/melody.md +48 -0
- package/skills/music-composition/references/orchestration.md +69 -0
- package/skills/music-composition/references/rhythm-groove.md +49 -0
- package/skills/obsidian-bases/SKILL.md +85 -0
- package/skills/obsidian-bases/references/bases-syntax.md +123 -0
- package/skills/obsidian-canvas/SKILL.md +91 -0
- package/skills/obsidian-markdown/SKILL.md +110 -0
- package/skills/pdf-generator/scripts/fill_inspect.py +2 -0
- package/skills/pdf-generator/scripts/render_body.py +2 -0
- package/skills/procedural-audio/SKILL.md +157 -0
- package/skills/procedural-audio/references/anti-patterns.md +45 -0
- package/skills/review-dump/SKILL.md +108 -0
- package/skills/review-monthly/SKILL.md +56 -0
- package/skills/review-weekly/SKILL.md +91 -0
- package/skills/second-brain/SKILL.md +211 -0
- package/skills/second-brain/hooks/hooks.json +16 -0
- package/skills/second-brain/hooks/validate-note.sh +85 -0
- package/skills/second-brain/references/cross-project.md +57 -0
- package/skills/second-brain/references/templates/Atomic.md +22 -0
- package/skills/second-brain/references/templates/Daily.md +25 -0
- package/skills/second-brain/references/templates/Dashboard.base +70 -0
- package/skills/second-brain/references/templates/Dump.md +11 -0
- package/skills/second-brain/references/templates/Hub.md +22 -0
- package/skills/second-brain/references/templates/Monthly.md +29 -0
- package/skills/second-brain/references/templates/Weekly.md +29 -0
- package/skills/second-brain/references/templates/codebases.md +37 -0
- package/skills/second-brain/references/templates/hot.md +37 -0
- package/skills/second-brain/references/templates/vault-CLAUDE.md +127 -0
- package/skills/sfx-design/SKILL.md +130 -0
- package/skills/sfx-design/references/anti-patterns.md +53 -0
- package/skills/spatial-audio/SKILL.md +139 -0
- package/skills/spatial-audio/references/anti-patterns.md +53 -0
- package/skills/ui-sound-design/SKILL.md +133 -0
- package/skills/ui-sound-design/references/anti-patterns.md +57 -0
- package/skills/vault-audit/SKILL.md +72 -0
- package/skills/vault-audit/scripts/vault_audit.py +539 -0
- package/skills/vault-clip/SKILL.md +73 -0
- package/skills/vault-recall/SKILL.md +82 -0
- package/skills/vault-recall/scripts/vault_index.py +626 -0
- package/skills/vault-tidy/SKILL.md +76 -0
- package/skills/voice-pipeline/SKILL.md +150 -0
- package/skills/voice-pipeline/references/anti-patterns.md +69 -0
- package/skills/xlsx-generator/scripts/formula_check.py +2 -0
- package/skills/xlsx-generator/scripts/libreoffice_recalc.py +2 -0
- package/skills/xlsx-generator/scripts/xlsx_add_column.py +2 -0
- package/skills/xlsx-generator/scripts/xlsx_insert_row.py +2 -0
- package/skills/xlsx-generator/scripts/xlsx_reader.py +2 -0
- package/skills/zettel/SKILL.md +66 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: vault-clip
|
|
3
|
+
description: "Guarda una pagina web en el vault como nota limpia: extrae el contenido sin menus ni banners, con frontmatter de fuente y un resumen propio. Triggers: clipear, guardar este articulo, clip web, guardar link en el vault, archivar esta pagina, web clipper."
|
|
4
|
+
argument-hint: "<url> [--full | --summary]"
|
|
5
|
+
category: "pkm"
|
|
6
|
+
user-invocable: true
|
|
7
|
+
allowed-tools: Read, Glob, Grep, Write, Edit, WebFetch
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Vault Clip - Captura web
|
|
11
|
+
|
|
12
|
+
Convertís una URL en una nota del vault que se lee dentro de cinco años, cuando la página original ya no exista. Lo que guardás es el contenido, no el HTML.
|
|
13
|
+
|
|
14
|
+
URL: `$ARGUMENTS`
|
|
15
|
+
|
|
16
|
+
Aplica la rule `vault-conventions`.
|
|
17
|
+
|
|
18
|
+
**Rutas por rol:** los destinos se nombran por rol y la ruta real de cada uno sale del `## Rutas` del `CLAUDE.md` del vault. Los defaults entre paréntesis solo aplican si el vault no declara otra cosa.
|
|
19
|
+
|
|
20
|
+
## Fase 1 - Traer el contenido
|
|
21
|
+
|
|
22
|
+
1. **Ubicar el vault** y leer su `CLAUDE.md`.
|
|
23
|
+
2. **Validar la URL** antes de tocarla: tiene que ser `http(s)` y pública. Si el usuario pasó algo que no es una URL, preguntar.
|
|
24
|
+
3. **Traer la página con `WebFetch`** pidiendo el contenido principal en markdown, sin navegación, sidebars, banners de cookies, footers ni bloques de "artículos relacionados". Un artículo crudo son decenas de miles de tokens de los cuales el 80 por ciento es chrome del sitio.
|
|
25
|
+
4. **Si la página es un paywall, un login o un JS shell vacío**, decirlo y parar. Ofrecer que el usuario pegue el texto a mano. No inventes el contenido a partir del título ni de lo que sepas del tema: un clip fabricado es peor que no tener el clip.
|
|
26
|
+
|
|
27
|
+
## Fase 2 - Decidir qué se guarda
|
|
28
|
+
|
|
29
|
+
| Modo | Qué guarda | Cuándo |
|
|
30
|
+
|---|---|---|
|
|
31
|
+
| `--summary` (default) | Resumen propio de 5 a 10 líneas + los puntos clave + link a la fuente | Casi siempre. El vault es para tus ideas, no para copias de internet. |
|
|
32
|
+
| `--full` | El texto completo limpio | Referencia técnica que vas a citar, o contenido que puede desaparecer |
|
|
33
|
+
|
|
34
|
+
En los dos modos, **el resumen lo escribís vos y va arriba**: si dentro de un año el usuario abre la nota, lo primero que tiene que ver es qué había ahí y por qué lo guardó, no el primer párrafo del autor.
|
|
35
|
+
|
|
36
|
+
## Fase 3 - Escribir
|
|
37
|
+
|
|
38
|
+
Con approval sobre destino y modo, crear la nota en `<atomic>` (default `03_Resources/`):
|
|
39
|
+
|
|
40
|
+
```yaml
|
|
41
|
+
---
|
|
42
|
+
created: YYYY-MM-DD
|
|
43
|
+
type: clip
|
|
44
|
+
source: <URL>
|
|
45
|
+
author: <si la página lo declara>
|
|
46
|
+
status: seed
|
|
47
|
+
tags: []
|
|
48
|
+
---
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Estructura del cuerpo:
|
|
52
|
+
|
|
53
|
+
1. `# <Título del artículo>`
|
|
54
|
+
2. **Por qué lo guardé:** una línea. Si el usuario no lo dijo, preguntar; es el campo que decide si la nota sirve o es basura acumulada.
|
|
55
|
+
3. `## Resumen` con los puntos clave.
|
|
56
|
+
4. `## Contenido` solo en modo `--full`, con el texto limpio.
|
|
57
|
+
5. `## Relacionado`: al menos un `[[wikilink]]`. Un clip sin link es una huérfana con URL. Si no hay a qué linkearlo, el hub del tema falta: `/hub-note`.
|
|
58
|
+
|
|
59
|
+
Nombre del archivo: el título del artículo, no el slug de la URL. Sin caracteres que rompan en Windows (`: \ / | ? * < >`).
|
|
60
|
+
|
|
61
|
+
Clip COMPLETE cuando la nota tiene fuente, resumen propio y al menos un link.
|
|
62
|
+
|
|
63
|
+
## Reglas
|
|
64
|
+
|
|
65
|
+
- Nunca guardar el HTML crudo ni el markdown con la navegación adentro.
|
|
66
|
+
- Nunca fabricar contenido que no vino de la página.
|
|
67
|
+
- Respetar el copyright: en modo `--full` la nota es de uso personal en el vault del usuario, y la fuente queda siempre atribuida. No proponer republicar nada.
|
|
68
|
+
- El clip es material crudo, no una nota atómica: si de acá sale una idea propia del usuario, esa idea es una nota aparte con `/zettel`.
|
|
69
|
+
- Sin guiones largos.
|
|
70
|
+
|
|
71
|
+
## Handoff
|
|
72
|
+
|
|
73
|
+
Con el clip guardado, el siguiente paso es `/zettel` si el artículo produjo una idea que el usuario quiere hacer propia, o `/hub-note` si el tema todavía no tiene hub desde donde encontrar este clip.
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: vault-recall
|
|
3
|
+
description: "Busqueda con ranking sobre el vault via indice cacheado: BM25, acentos plegados y expansion con los alias que declaran tus notas. Tambien encuentra las notas mas parecidas a una dada. Triggers: buscar en el vault, que escribi sobre, encontrar la nota de, recall, donde anote, que tengo sobre, que se parece a esta nota, notas relacionadas."
|
|
4
|
+
argument-hint: "<consulta> | related <nota> [-n N] [--no-expand] [--refresh]"
|
|
5
|
+
category: "pkm"
|
|
6
|
+
user-invocable: true
|
|
7
|
+
allowed-tools: Read, Glob, Grep, Bash
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Vault Recall - Encontrar lo que ya escribiste
|
|
11
|
+
|
|
12
|
+
Respondés qué hay en el vault sobre algo. La diferencia con `Grep` es el ranking: `Grep` te da las 40 notas que contienen la palabra, esto te da las 5 que **tratan** del tema, y encuentra las que usaron otro nombre para la misma cosa.
|
|
13
|
+
|
|
14
|
+
Consulta: `$ARGUMENTS`
|
|
15
|
+
|
|
16
|
+
## Fase 1 - Buscar
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
python .claude/skills/vault-recall/scripts/vault_index.py "<vault>" search "<consulta>" -n 10
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
El índice vive en `<vault>/.vault-index.json` (dotfile, Obsidian lo ignora) y se actualiza solo lo que cambió: la primera corrida indexa todo, las siguientes cuestan milisegundos. Si no existe, el script lo construye sin que tengas que pedirlo.
|
|
23
|
+
|
|
24
|
+
Flags del skill, que son los del script y se pasan tal cual:
|
|
25
|
+
|
|
26
|
+
| Flag | Qué hace |
|
|
27
|
+
|---|---|
|
|
28
|
+
| `-n N` | máximo de resultados; `-n 0` para todos. Default 10 |
|
|
29
|
+
| `--no-expand` | consulta literal, sin expandir con los alias de los hubs |
|
|
30
|
+
| `--role nombre=ruta` | estructura del vault distinta de la default (sale del `## Rutas` de su `CLAUDE.md`) |
|
|
31
|
+
|
|
32
|
+
**`--refresh`** no es un flag del script: es un paso previo. Con `--refresh`, correr primero `vault_index.py "<vault>" refresh` y después la búsqueda. Sirve cuando el vault cambió por fuera de Claude (sync desde el teléfono, edición masiva en Obsidian): el índice es incremental por mtime, así que cuesta milisegundos y evita buscar contra un caché viejo.
|
|
33
|
+
|
|
34
|
+
### Modo `related`: qué se parece a esta nota
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
python .claude/skills/vault-recall/scripts/vault_index.py "<vault>" related "<nota o titulo>" -n 10
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Ranquea por vocabulario compartido (tf-idf cosine) y devuelve qué términos comparten, así se ve **por qué** dos notas quedaron cerca. Sirve para dos cosas concretas:
|
|
41
|
+
|
|
42
|
+
- Antes de crear una nota atómica, ver si ya existe una que dice lo mismo con otras palabras.
|
|
43
|
+
- Buscar candidatos de conexión para `/review-weekly`, que es donde el vault empieza a producir ideas propias.
|
|
44
|
+
|
|
45
|
+
Si el título es ambiguo (dos notas con el mismo nombre), no elige: reporta las dos y para. Eso es el hallazgo `ambiguous_names` del audit apareciendo por otra puerta.
|
|
46
|
+
|
|
47
|
+
## Fase 2 - Leer y responder
|
|
48
|
+
|
|
49
|
+
1. **Leé las 2 o 3 primeras**, no las 10. El ranking está para que no tengas que abrir todo.
|
|
50
|
+
2. **Respondé la pregunta del usuario citando las notas**, con `[[wikilinks]]` para que pueda saltar. No pegues las notas enteras.
|
|
51
|
+
3. **Decí qué miraste y qué no.** Si el resultado 1 tenía score 8 y el 2 tenía 0.4, decilo: significa que hay una sola nota sobre el tema.
|
|
52
|
+
4. **Si la respuesta no está en el vault, decilo.** No la completes con conocimiento general disfrazado de nota del usuario: la utilidad del vault es que lo que sale de ahí es lo que él pensó.
|
|
53
|
+
|
|
54
|
+
## Qué encuentra y qué no
|
|
55
|
+
|
|
56
|
+
Esto es **recuperación léxica con sinónimos derivados del vault**, no búsqueda semántica. Concretamente:
|
|
57
|
+
|
|
58
|
+
| Caso | Resultado |
|
|
59
|
+
|---|---|
|
|
60
|
+
| Buscás `indice` y la nota dice `índices` | Lo encuentra: pliega acentos y colapsa plurales |
|
|
61
|
+
| Buscás `PG` y la nota dice `postgres` | Lo encuentra, **si existe el hub con `PG` en `aliases`** |
|
|
62
|
+
| La palabra aparece una vez en un dump de 900 palabras | Rankea bajo, como corresponde |
|
|
63
|
+
| Buscás `performance de queries` y la nota habla de `indices parciales` sin nombrar ninguna de esas palabras | **No lo encuentra.** No hay embeddings, ni en `search` ni en `related`: los dos necesitan palabras compartidas. |
|
|
64
|
+
|
|
65
|
+
Ese último caso es el límite real y hay que decirlo cuando pasa, en vez de responder "no tenés nada sobre eso". Las tres salidas, en orden de costo:
|
|
66
|
+
|
|
67
|
+
1. **Reformular con el vocabulario del usuario**, que es el que está en el vault.
|
|
68
|
+
2. **Agregar el alias** donde corresponda (`/hub-note --update`, o el frontmatter de la nota: `aliases:` de **cualquier** nota alimenta la expansión). Enseñarle un sinónimo al vault lo arregla para siempre, y es el mecanismo, no un workaround.
|
|
69
|
+
3. **Recorrer los hubs** del tema y leer sus `## Notas`: el mapa hecho a mano sigue siendo mejor que cualquier búsqueda.
|
|
70
|
+
|
|
71
|
+
## Reglas
|
|
72
|
+
|
|
73
|
+
- No escribir en el vault. Si de la búsqueda sale que falta un alias o un hub, proponelo y pedí approval: lo aplica `/hub-note`.
|
|
74
|
+
- No inventar contenido de notas que no leíste. Citá solo lo que abriste.
|
|
75
|
+
- El índice no es una fuente de verdad: es un caché. Si un resultado no coincide con la nota, la nota gana y hay que correr `refresh`.
|
|
76
|
+
- Sin guiones largos.
|
|
77
|
+
|
|
78
|
+
Recall COMPLETE cuando el usuario tiene la respuesta con los links a las notas, o sabe que en el vault no está y por qué.
|
|
79
|
+
|
|
80
|
+
## Handoff
|
|
81
|
+
|
|
82
|
+
Si la búsqueda mostró que el tema está disperso en varios lugares sin un mapa, el siguiente paso es `/hub-note` para crear el hub que falta. Si mostró que una idea aparece repetida en tres notas parecidas, `/zettel` para consolidarla y `/vault-tidy` para linkear las sobras.
|