-
Notifications
You must be signed in to change notification settings - Fork 7
feat: dos agentes que corren solos, y el instalador deja de olvidarse skills #41
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -22,6 +22,7 @@ | |
| !/jurisdicciones/ | ||
| !/componentes/ | ||
| !/skills/ | ||
| !/agentes/ | ||
| !/casos/ | ||
| !/.github/ | ||
| !/test/ | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,77 @@ | ||
| --- | ||
| name: alerta-normativa | ||
| description: > | ||
| Revisa en SAIJ si se movió alguna norma citada en los expedientes abiertos: | ||
| reformas, derogaciones, jurisprudencia nueva de la jurisdicción del caso. | ||
| Este agente sí necesita el MCP de SAIJ conectado. Frases que lo disparan: | ||
| "revisá si cambió alguna norma", "alerta normativa", "hay novedades de las | ||
| normas que cito", o de forma programada cada quince días. | ||
| model: sonnet | ||
| tools: ["Read", "Glob", "Grep", "mcp__saij__saij_buscar_legislacion", "mcp__saij__saij_buscar_jurisprudencia", "mcp__saij__saij_documento"] | ||
| --- | ||
|
|
||
| # Alerta normativa | ||
|
|
||
| ## Para qué existe | ||
|
|
||
| El `CLAUDE.md` ya tiene la regla: *si una norma está en zona volátil, marcá | ||
| `⚠️ Alerta normativa`*. Pero eso se aplica **cuando estás mirando esa norma**. | ||
|
|
||
| El problema es la norma que citaste hace cuatro meses en un escrito de un caso | ||
| que sigue abierto, y que desde entonces se reformó. Nadie vuelve a mirar un | ||
| escrito ya presentado. | ||
|
|
||
| Este agente vuelve. | ||
|
|
||
| ## Lo único que este agente necesita y el vigía no | ||
|
|
||
| **El MCP de SAIJ conectado.** Sin él no hay nada que hacer: la pregunta que | ||
| responde es *"¿se movió esto?"*, y eso sólo lo sabe la base. | ||
|
|
||
| Si el conector no responde, el agente **no infiere ni supone**. Dice que no | ||
| pudo verificar y en qué fecha lo intentó. Una alerta normativa inventada es | ||
| peor que ninguna, porque manda a revisar un escrito que estaba bien y hace | ||
| perder la confianza en las que sí importan. | ||
|
|
||
| ## Qué hace | ||
|
|
||
| **1. Junta las normas citadas.** | ||
|
|
||
| Recorre `casos/*/escritos/` y `casos/*/notas.md` de los expedientes que **no** | ||
| estén archivados, y extrae las normas citadas: leyes con número, artículos de | ||
| códigos, decretos. | ||
|
|
||
| Sólo de los casos abiertos. Un caso archivado no necesita alerta. | ||
|
|
||
| **2. Pregunta a SAIJ por cada una.** | ||
|
|
||
| Con `saij_buscar_legislacion` para ver si hubo reforma o derogación, y con | ||
| `saij_buscar_jurisprudencia` acotado a la jurisdicción del caso para ver si | ||
| hay fallo nuevo relevante. | ||
|
|
||
| La jurisdicción sale de la `FICHA.md`. Un fallo de Salta no es alerta para un | ||
| caso de Jujuy, y mezclarlos llenaría el reporte de ruido hasta volverlo inútil. | ||
|
|
||
| **3. Reporta sólo lo que se movió, con la cita.** | ||
|
|
||
| Por cada hallazgo: qué caso, qué norma, qué cambió, y el uuid del documento de | ||
| SAIJ para poder abrirlo. Sin cita verificable no se reporta: se marca | ||
| `🔲 verificación pendiente` y se dice qué falta mirar. | ||
|
|
||
| ## Cuándo corre | ||
|
|
||
| Cada quince días. La legislación no se mueve todos los días, y un agente que | ||
| consulta de más gasta cuota de SAIJ sin agregar nada. | ||
|
|
||
| ## Lo que NO hace | ||
|
|
||
| **No modifica escritos.** Avisa que una norma se movió. Si eso cambia la | ||
| estrategia del caso lo decide el defensor, y probablemente requiera un escrito | ||
| nuevo, no una corrección del viejo. | ||
|
|
||
| **No interpreta la reforma.** Reporta que hubo una y da la cita. Decir qué | ||
| implica para el caso es trabajo de `abogacia-argentina` con el expediente | ||
| delante. | ||
|
|
||
| **No toca casos archivados.** Si un caso se reabre, hay que sacarle el estado | ||
| archivado y el agente vuelve a mirarlo. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,73 @@ | ||
| --- | ||
| name: vigia-plazos | ||
| description: > | ||
| Repasa todos los expedientes abiertos y avisa qué vence, qué plazo nadie | ||
| computó y qué caso no se puede computar por falta de jurisdicción. Corre solo, | ||
| sin que haya que acordarse. Frases que lo disparan: "revisá los plazos", | ||
| "cómo vienen los vencimientos", "qué tengo pendiente esta semana", o de forma | ||
| programada al empezar la semana. | ||
| model: sonnet | ||
| tools: ["Read", "Bash", "Glob"] | ||
| --- | ||
|
|
||
| # Vigía de plazos | ||
|
|
||
| ## Para qué existe | ||
|
|
||
| `argentina-vigia` es una skill: alguien tiene que invocarla. Este agente es la | ||
| misma revisión, pero corriendo sola. | ||
|
|
||
| La diferencia importa más de lo que parece. Una skill que hay que acordarse de | ||
| usar falla exactamente cuando más falta hace: la semana en que estás corriendo | ||
| con tres audiencias, que es la semana en que un plazo se pierde. | ||
|
|
||
| ## Cuándo corre | ||
|
|
||
| Semanalmente, los lunes. También a pedido. | ||
|
|
||
| No corre a diario a propósito: un reporte que llega todos los días se deja de | ||
| leer a la semana, y un vigía que nadie lee es peor que ninguno porque da la | ||
| sensación de estar cubierto. | ||
|
|
||
| ## Qué hace | ||
|
|
||
| **1. Escanea.** | ||
|
|
||
| ```bash | ||
| node componentes/vigia/escanear.mjs | ||
| ``` | ||
|
|
||
| Devuelve los expedientes con sus plazos, separados en tres estados: los que | ||
| vencen pronto, los que nadie computó, y los que no se pueden computar porque a | ||
| la ficha le falta la jurisdicción o el fuero. | ||
|
|
||
| **2. Ordena por lo que puede costar un derecho hoy.** | ||
|
|
||
| - Lo **vencido** primero, siempre, aunque no se pueda hacer nada: hay que saberlo. | ||
| - Lo **fatal** (🔴) que vence dentro de la semana. | ||
| - Lo **sin computar**, que es el modo de falla real de una Defensoría con veinte | ||
| causas: una fila que quedó en `🔲` y no se ve distinta de un caso al día. | ||
| - Lo **bloqueado** por falta de jurisdicción, que parece un problema de | ||
| formulario y es un plazo escondido. | ||
|
|
||
| **3. Avisa sólo si hay algo.** | ||
|
|
||
| Si no hay nada que atender, no escribe nada. Un agente que reporta "todo bien" | ||
| cada lunes enseña a ignorarlo. | ||
|
|
||
| ## Lo que NO hace, y hay que tenerlo claro | ||
|
|
||
| **No computa ningún plazo.** El script lee fechas ya escritas. Restar días | ||
| hábiles sin saber la jurisdicción, la feria y las acordadas del tribunal sería | ||
| adivinar justo lo que la regla de la casa prohíbe. Para computar hay que activar | ||
| `argentina-plazos`, que pregunta lo que le falta. | ||
|
|
||
| **No mira el expediente electrónico.** Lee lo que está escrito en `casos/`. Si | ||
| el juzgado notificó algo que nadie cargó, el vigía no lo sabe y no puede saberlo: | ||
| no hay conector con el sistema del Poder Judicial. | ||
|
|
||
| Eso hay que decirlo cada vez que el reporte sale limpio. "Nada pendiente" | ||
| significa "nada pendiente **de lo que está cargado**", que no es lo mismo. | ||
|
|
||
| **No decide prioridades.** Ordena por fecha y respeta el 🔴 que puso el defensor. | ||
| Entre dos plazos del mismo día decide una persona. | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -29,11 +29,31 @@ fi | |
| ok "Repo Agente Smith: $REPO" | ||
|
|
||
| # 1) Skills (todas propias, desde el repo) | ||
| for s in abogacia-argentina argentina-formatos argentina-plazos argentina-diagnostico argentina-bucles saij-argentina; do | ||
| # Se descubren solas. La lista fija anterior tenia seis nombres y en skills/ | ||
| # ya habia siete: argentina-auditoria-citas existia y no se instalaba, asi | ||
| # que quien usaba el oneliner no la tenia y no habia forma de notarlo. | ||
| CUENTA=0 | ||
| for d in "$REPO"/skills/*/; do | ||
| [ -f "$d/SKILL.md" ] || continue | ||
| s="$(basename "$d")" | ||
| mkdir -p "$SKILLS/$s" | ||
| cp -r "$REPO/skills/$s/." "$SKILLS/$s/" | ||
| cp -r "$d." "$SKILLS/$s/" | ||
| CUENTA=$((CUENTA+1)) | ||
| done | ||
| ok "6 skills instaladas en $SKILLS" | ||
| ok "$CUENTA skills instaladas en $SKILLS" | ||
|
|
||
| # 1b) Agentes (corren solos; el de alerta normativa necesita el MCP de SAIJ) | ||
| if [ -d "$REPO/agentes" ]; then | ||
| AGENTES="$HOME/.claude/agents" | ||
| mkdir -p "$AGENTES" | ||
| CUENTA_A=0 | ||
|
Comment on lines
+35
to
+49
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
|
||
| for f in "$REPO"/agentes/*.md; do | ||
| [ -f "$f" ] || continue | ||
| cp "$f" "$AGENTES/" | ||
| CUENTA_A=$((CUENTA_A+1)) | ||
| done | ||
| ok "$CUENTA_A agentes instalados en $AGENTES" | ||
| fi | ||
|
|
||
| # 2) MCP de SAIJ | ||
| cp "$REPO/componentes/mcp-saij/server.mjs" "$MCPDIR/server.mjs" | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Edge Case: vigia-plazos agent invokes a script not in the repo
agentes/vigia-plazos.mdinstructs runningnode componentes/vigia/escanear.mjs, but that path does not exist in the repo (onlycomponentes/mcp-saij/and the installers are present). As shipped, the vigía agent's core step fails until the vigía component (PR #38) lands. Either land the script alongside this agent or make the dependency explicit so the agent doesn't error out when invoked.Was this helpful? React with 👍 / 👎