claude-code-arcane 2.0.0 → 2.1.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.
Files changed (44) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +4 -3
  3. package/docs/SKILLS-CATALOG.md +25 -2
  4. package/docs/USER-GUIDE.md +2 -2
  5. package/package.json +1 -1
  6. package/profiles/second-brain.yaml +37 -0
  7. package/rules/vault-conventions.md +144 -0
  8. package/skills/brain-dump/SKILL.md +53 -0
  9. package/skills/hub-note/SKILL.md +68 -0
  10. package/skills/obsidian-bases/SKILL.md +85 -0
  11. package/skills/obsidian-bases/references/bases-syntax.md +123 -0
  12. package/skills/obsidian-canvas/SKILL.md +91 -0
  13. package/skills/obsidian-markdown/SKILL.md +110 -0
  14. package/skills/pdf-generator/scripts/fill_inspect.py +2 -0
  15. package/skills/pdf-generator/scripts/render_body.py +2 -0
  16. package/skills/review-dump/SKILL.md +108 -0
  17. package/skills/review-monthly/SKILL.md +56 -0
  18. package/skills/review-weekly/SKILL.md +91 -0
  19. package/skills/second-brain/SKILL.md +211 -0
  20. package/skills/second-brain/hooks/hooks.json +16 -0
  21. package/skills/second-brain/hooks/validate-note.sh +85 -0
  22. package/skills/second-brain/references/cross-project.md +57 -0
  23. package/skills/second-brain/references/templates/Atomic.md +22 -0
  24. package/skills/second-brain/references/templates/Daily.md +25 -0
  25. package/skills/second-brain/references/templates/Dashboard.base +70 -0
  26. package/skills/second-brain/references/templates/Dump.md +11 -0
  27. package/skills/second-brain/references/templates/Hub.md +22 -0
  28. package/skills/second-brain/references/templates/Monthly.md +29 -0
  29. package/skills/second-brain/references/templates/Weekly.md +29 -0
  30. package/skills/second-brain/references/templates/codebases.md +37 -0
  31. package/skills/second-brain/references/templates/hot.md +37 -0
  32. package/skills/second-brain/references/templates/vault-CLAUDE.md +127 -0
  33. package/skills/vault-audit/SKILL.md +72 -0
  34. package/skills/vault-audit/scripts/vault_audit.py +539 -0
  35. package/skills/vault-clip/SKILL.md +73 -0
  36. package/skills/vault-recall/SKILL.md +82 -0
  37. package/skills/vault-recall/scripts/vault_index.py +626 -0
  38. package/skills/vault-tidy/SKILL.md +76 -0
  39. package/skills/xlsx-generator/scripts/formula_check.py +2 -0
  40. package/skills/xlsx-generator/scripts/libreoffice_recalc.py +2 -0
  41. package/skills/xlsx-generator/scripts/xlsx_add_column.py +2 -0
  42. package/skills/xlsx-generator/scripts/xlsx_insert_row.py +2 -0
  43. package/skills/xlsx-generator/scripts/xlsx_reader.py +2 -0
  44. package/skills/zettel/SKILL.md +66 -0
@@ -0,0 +1,76 @@
1
+ ---
2
+ name: vault-tidy
3
+ description: "Aplica los arreglos que reporto /vault-audit con approval item por item: linkear huerfanas, resolver nombres duplicados, cancelar tareas arrastradas, completar frontmatter y archivar. Nunca borra. Triggers: limpiar el vault, arreglar huerfanas, vault tidy, aplicar el audit, ordenar el vault, resolver links roto."
4
+ argument-hint: "[orphans | broken | duplicates | tasks | frontmatter | archive | all]"
5
+ category: "pkm"
6
+ user-invocable: true
7
+ allowed-tools: Read, Glob, Grep, Bash, Write, Edit
8
+ ---
9
+
10
+ # Vault Tidy - Aplicar los arreglos
11
+
12
+ Sos la única skill del profile que edita notas existentes en volumen, y por eso la más peligrosa. Cada cambio se propone y se aprueba: no hay modo batch, no hay "arreglo todo y te cuento después".
13
+
14
+ Categoría a arreglar: `$ARGUMENTS` (default: preguntar cuál, nunca `all` por omisión)
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 - Antes de tocar nada
21
+
22
+ 1. **Ubicar el vault** y leer su `CLAUDE.md`: el contrato de frontmatter y la estructura salen de ahí, no de tus defaults.
23
+ 2. **Verificar git.** Si el vault es un repo y el árbol está sucio, parar y pedir commit primero. Esta skill es la que más justifica tener git: es el único undo real de una corrida de 30 ediciones.
24
+ 3. **Correr `/vault-audit`** y trabajar sobre esos hallazgos. Nunca decidir a ojo qué arreglar.
25
+ 4. **Acotar la corrida.** Si el usuario pidió `all`, proponer partirla por categoría y arrancar por la de mayor impacto. Una corrida de 200 ediciones no se puede revisar y por lo tanto no se puede aprobar de verdad.
26
+
27
+ ## Fase 2 - Los arreglos, por categoría
28
+
29
+ ### `duplicates` - Nombres duplicados
30
+ El más urgente: dos archivos con el mismo nombre hacen que todo `[[link corto]]` a ese nombre resuelva impredecible.
31
+
32
+ Para cada par: mostrar las dos notas y proponer renombrar la menos linkeada, o fusionarlas si son la misma cosa. **El rename lo hace el usuario en Obsidian**, no vos: Obsidian actualiza los wikilinks cuando el rename pasa dentro de la app, y desde el filesystem se rompen en silencio. Tu entregable acá es la lista de renames a hacer y el orden.
33
+
34
+ ### `orphans` - Huérfanas
35
+ Para cada huérfana: leerla, proponer el hub o la nota desde donde linkearla, y agregar el link **en el hub**, no en la huérfana. El link entrante es el que la hace encontrable.
36
+
37
+ Si varias huérfanas son del mismo tema, el arreglo no es linkearlas una por una: es crear el hub que falta con `/hub-note` y linkearlas desde ahí. Decilo antes de empezar a parchear.
38
+
39
+ ### `broken` - Links roto
40
+ Clasificar cada uno antes de tocarlo:
41
+
42
+ - **Typo:** el target existe con otro nombre. Corregir el link.
43
+ - **Intención:** la nota no existe todavía y el link es un recordatorio. **Se deja.** Un link roto intencional es una nota pendiente, no un error, y borrarlo destruye información.
44
+ - **Basura:** link a algo que ya no aplica. Quitar el link, dejar el texto.
45
+
46
+ Preguntá cuál es cuando no se pueda deducir del contexto. No adivines.
47
+
48
+ ### `tasks` - Tareas arrastradas
49
+ Para cada tarea abierta en un día que ya cerró: marcarla `- [-]` en su día original y preguntar si sigue vigente. Si sigue, crearla en la nota del proyecto o en el dump de hoy. Nunca mover la original.
50
+
51
+ ### `frontmatter` - Contrato
52
+ Completar los campos ausentes del contrato del vault. `created` se deduce del nombre del archivo si tiene fecha, o del mtime; `type` se deduce de la carpeta. Si no se puede deducir, preguntar. **Nunca sobrescribir un `created` que ya existe**, aunque parezca incorrecto: es dato histórico.
53
+
54
+ ### `archive` - Archivar
55
+ Mover al rol `archive` (default `04_Archive/`) lo que el usuario confirme cerrado, preservando el nombre. **Nunca borrar nada.** El movimiento va con la misma advertencia que el rename: si hay notas que linkean a la que se mueve, avisar cuáles y dejar que el usuario lo haga desde Obsidian.
56
+
57
+ ## Fase 3 - Aplicar y reportar
58
+
59
+ 1. Proponer los cambios en una tabla: nota, qué cambia, por qué. Agrupar los mecánicos idénticos para no hacer 40 preguntas, y preguntar uno por uno los que requieren criterio.
60
+ 2. Aplicar solo lo aprobado, con `Edit` sobre citas textuales para no tocar nada alrededor.
61
+ 3. Reportar qué se cambió y qué quedó pendiente, y recordar el commit.
62
+
63
+ Tidy COMPLETE cuando los cambios aprobados están aplicados y el resto quedó explícitamente pendiente, no olvidado.
64
+
65
+ ## Reglas
66
+
67
+ - **Nunca borrar una nota.** Archivar.
68
+ - **Nunca renombrar ni mover desde el filesystem** sin avisar que rompe wikilinks: proponé que lo haga el usuario desde Obsidian.
69
+ - Nada de ediciones en masa sin approval, ni siquiera las triviales.
70
+ - No tocar el rol `templates` (default `Templates/`) ni `.obsidian/`.
71
+ - No reescribir contenido del usuario: agregás links y frontmatter, no editás su prosa.
72
+ - Sin guiones largos.
73
+
74
+ ## Handoff
75
+
76
+ Con los arreglos aplicados, volver a correr `/vault-audit` para confirmar que los números se movieron: si un hallazgo sigue igual, el arreglo no era el correcto. Si la corrida dejó al descubierto temas sin hub, el siguiente paso es `/hub-note`.
@@ -27,6 +27,8 @@ Exit code:
27
27
  1 — errors detected (or file cannot be opened)
28
28
  """
29
29
 
30
+ from __future__ import annotations
31
+
30
32
  import sys
31
33
  import zipfile
32
34
  import xml.etree.ElementTree as ET
@@ -21,6 +21,8 @@ Exit codes:
21
21
  1 — LibreOffice found but recalculation failed (timeout, crash, bad file)
22
22
  """
23
23
 
24
+ from __future__ import annotations
25
+
24
26
  import subprocess
25
27
  import sys
26
28
  import shutil
@@ -24,6 +24,8 @@ IMPORTANT: Run on an UNPACKED directory (from xlsx_unpack.py).
24
24
  After running, repack with xlsx_pack.py.
25
25
  """
26
26
 
27
+ from __future__ import annotations
28
+
27
29
  import argparse
28
30
  import copy
29
31
  import os
@@ -26,6 +26,8 @@ IMPORTANT: Run on an UNPACKED directory (from xlsx_unpack.py).
26
26
  After running, repack with xlsx_pack.py.
27
27
  """
28
28
 
29
+ from __future__ import annotations
30
+
29
31
  import argparse
30
32
  import os
31
33
  import re
@@ -17,6 +17,8 @@ Exit codes:
17
17
  1 — file not found / unsupported format / encoding failure
18
18
  """
19
19
 
20
+ from __future__ import annotations
21
+
20
22
  import sys
21
23
  import json
22
24
  import argparse
@@ -0,0 +1,66 @@
1
+ ---
2
+ name: zettel
3
+ description: "Crea una nota atomica en el vault a partir de una idea, un fragmento del dump o una nota de proyecto, con el criterio de cuando algo merece nota propia y a que linkearla. Triggers: nota atomica, zettel, esto merece nota propia, crear nota permanente, graduar esta idea, nota de concepto."
4
+ argument-hint: "[idea | ruta#seccion | dump YYYY-MM-DD]"
5
+ category: "pkm"
6
+ user-invocable: true
7
+ allowed-tools: Read, Glob, Grep, Write, Edit
8
+ ---
9
+
10
+ # Zettel - Nota atómica
11
+
12
+ Creás una nota que contiene **una** idea, escrita para que se entienda sola en dos años y linkeada al resto del vault. La mitad del trabajo es decidir si la nota tiene que existir.
13
+
14
+ Idea o fuente: `$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 (leelo antes de escribir). Los defaults entre paréntesis solo aplican si el vault no declara otra cosa.
19
+
20
+ ## Fase 1 - Decidir si merece nota propia
21
+
22
+ Una idea merece nota atómica propia cuando pasa **las tres**:
23
+
24
+ 1. **Es verdadera fuera del contexto que la produjo.** Si solo tiene sentido dentro del proyecto donde apareció, es una nota de proyecto y se queda ahí.
25
+ 2. **La linkearías desde otra nota.** Si no se te ocurre ni un lugar desde donde apuntar a esto, todavía no es conocimiento: es un registro.
26
+ 3. **El título puede afirmar algo.** "Los índices parciales pagan en tablas con lecturas sesgadas" es una idea. "Postgres" es un tema, y los temas son hub files, no notas atómicas.
27
+
28
+ Si falla alguna, decirlo y proponer el destino real: se queda en el dump, va a la nota del proyecto, o va al `## Historial` de un hub. Verdict de esta fase: PASS solo si las tres se cumplen. No crear la nota para no dejar al usuario con las manos vacías: una nota atómica de más ensucia el grafo para siempre.
29
+
30
+ ## Fase 2 - Buscar duplicados
31
+
32
+ Antes de escribir, buscar duplicados con `/vault-recall` si está disponible (rankea, y encuentra la nota que usó otro nombre), o `Grep` en `<atomic>` (default `03_Resources/`) por los términos del título y sus sinónimos obvios. Si ya hay una nota que cubre la idea:
33
+
34
+ - **Misma idea:** proponer ampliar la nota existente en vez de crear otra. Es el caso más frecuente y el que evita el vault con cinco notas del mismo concepto bajo cinco nombres.
35
+ - **Idea relacionada pero distinta:** crear la nueva y linkear ambas explícitamente, con una línea de por qué se distinguen.
36
+
37
+ ## Fase 3 - Escribir
38
+
39
+ Con approval sobre el título y el destino, crear la nota en `<atomic>` (default `03_Resources/`) desde `<templates>/Atomic.md`:
40
+
41
+ - **Título como afirmación**, no como etiqueta. Es el nombre del archivo y lo que vas a ver en el autocompletado de links dentro de tres años.
42
+ - **La idea en las palabras del usuario**, no en las de la fuente. Si es una cita, va entre comillas con su fuente; el cuerpo de la nota es la reformulación.
43
+ - **Sección `## Por qué me importa`:** una o dos líneas sobre qué problema del usuario toca. Es lo que separa una nota atómica de un resumen de Wikipedia. Si el usuario no lo dijo, preguntar en una línea, no inventarlo.
44
+ - **Sección `## Relacionado`:** al menos un `[[wikilink]]`, siempre. Si no hay a qué linkear, falta el hub del tema: crearlo con `/hub-note` antes de cerrar esta nota.
45
+ - **Sección `## Fuente`:** el clip, el libro, la conversación, o "propia" si salió del usuario.
46
+ - **`status` del frontmatter:** `seed` si la nota queda como semilla a propósito, `provisional` si ya tiene cuerpo. **Nunca pongas `evergreen` vos:** eso lo decide el usuario cuando la nota deja de moverse, y es lo que hace que el audit no la reporte como stale.
47
+
48
+ Si la idea vino de una nota de proyecto o de un dump, **la fuente no se vacía**: la línea original se queda donde estaba y se le agrega el link a la nota nueva.
49
+
50
+ ## Fase 4 - Conectar
51
+
52
+ 1. Linkear la nota desde el hub del tema (sección `## Notas` del hub). El link del hub a la nota es el que la hace encontrable.
53
+ 2. Si la nota discute o contradice otra nota atómica, linkearlas entre sí con una línea de por qué. Las conexiones entre notas atómicas son laterales y sí son bidireccionales: es el único caso donde la regla de "links hacia arriba" no aplica, porque acá no hay jerarquía.
54
+
55
+ Nota COMPLETE cuando existe, tiene al menos un link entrante desde un hub y al menos uno saliente.
56
+
57
+ ## Reglas
58
+
59
+ - Una idea por nota. Si necesitás dos `##` que no se relacionan, son dos notas.
60
+ - Nunca vaciar la fuente de la que salió la idea.
61
+ - No crear la nota si falla el criterio de graduación, aunque el usuario lo haya pedido: explicá por qué y proponé el destino correcto. Si insiste, se crea.
62
+ - Sin guiones largos.
63
+
64
+ ## Handoff
65
+
66
+ Con la nota creada, el siguiente paso es `/hub-note` si el tema todavía no tiene hub, o volver a `/review-dump` si esto salió en medio de procesar un día. Al cierre de la semana `/review-weekly` va a levantar la nota como parte de lo que creció.