refacil-sdd-ai 2.7.0 → 2.8.1
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/README.md +152 -23
- package/bin/cli.js +599 -3
- package/lib/bus/broker.js +518 -0
- package/lib/bus/client.js +67 -0
- package/lib/bus/presenter.js +97 -0
- package/lib/bus/spawn.js +121 -0
- package/lib/bus/storage.js +144 -0
- package/lib/bus/watch.js +78 -0
- package/package.json +4 -1
- package/skills/ask/SKILL.md +61 -0
- package/skills/attend/SKILL.md +68 -0
- package/skills/inbox/SKILL.md +42 -0
- package/skills/join/SKILL.md +81 -0
- package/skills/reply/SKILL.md +43 -0
- package/skills/say/SKILL.md +37 -0
package/README.md
CHANGED
|
@@ -554,35 +554,164 @@ refacil-sdd-ai clean
|
|
|
554
554
|
npm uninstall -g refacil-sdd-ai
|
|
555
555
|
```
|
|
556
556
|
|
|
557
|
-
##
|
|
557
|
+
## refacil-bus
|
|
558
558
|
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
559
|
+
Chat room local entre agentes. Permite que distintas sesiones de Claude Code o Cursor corriendo en repos diferentes se coordinen por texto plano — **sin compartir archivos, contexto ni tokens entre repos**. Cada agente responde desde el conocimiento de su propio repositorio.
|
|
560
|
+
|
|
561
|
+
El broker corre solo en `127.0.0.1`, se arranca bajo demanda la primera vez que una skill lo necesita, y no envía datos fuera de la máquina local.
|
|
562
|
+
|
|
563
|
+
### Instalación y primer arranque
|
|
564
|
+
|
|
565
|
+
No requiere pasos extra: `refacil-sdd-ai init` ya copia las skills del bus junto con el resto. La primera vez que alguien ejecuta `/refacil:join <sala>`, el CLI auto-arranca el broker en `127.0.0.1:7821` (fallback 7822 / 7823 si están ocupados).
|
|
563
566
|
|
|
564
|
-
|
|
567
|
+
### Ejemplos de uso
|
|
565
568
|
|
|
566
|
-
**
|
|
567
|
-
- 11 reglas nuevas: `eslint`, `biome check`, `tsc`, `prettier --check`, `npm audit`, `npm ls`, `cargo build/test/check`, `go test`, `mvn test`, `gradle test`, `ps aux` (total: 19 reglas)
|
|
568
|
-
- Telemetria local en `~/.refacil-sdd-ai/compact.log`
|
|
569
|
-
- Subcomandos `compact stats | disable | enable | clear-log`
|
|
570
|
-
- `ps-aux` solo se activa en Unix (Linux/Mac); en Windows la regla no interviene
|
|
569
|
+
**Ejemplo A — Conversación LLM ↔ LLM automática**
|
|
571
570
|
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
-
|
|
571
|
+
```
|
|
572
|
+
# Terminal 1 — repo payments-api (Claude Code)
|
|
573
|
+
/refacil:join refacil-main
|
|
574
|
+
# -> broadcast: "payments-api se unió. Stack: NestJS. Para consultarme: /refacil:ask @payments-api ..."
|
|
575
|
+
|
|
576
|
+
# Terminal 2 — repo frontend-refacil (Cursor)
|
|
577
|
+
/refacil:join refacil-main
|
|
578
|
+
# -> broadcast: "frontend-refacil se unió. Stack: React/Vite. Para consultarme: /refacil:ask @frontend-refacil ..."
|
|
579
|
+
|
|
580
|
+
# Dev del frontend delega su sesion a atender el bus:
|
|
581
|
+
"atiende el bus"
|
|
582
|
+
# LLM ejecuta: /refacil:attend (queda escuchando sin tope)
|
|
583
|
+
|
|
584
|
+
# Dev de payments trabaja en una feature:
|
|
585
|
+
"crea el endpoint POST /refund y cuando necesites saber
|
|
586
|
+
como lo va a consumir el front, preguntale"
|
|
587
|
+
|
|
588
|
+
# LLM de payments decide preguntar:
|
|
589
|
+
/refacil:ask @frontend-refacil "endpoint POST /refund devuelve
|
|
590
|
+
{ cartId, reference, status }. Que necesitas en el response?" --wait 180
|
|
591
|
+
|
|
592
|
+
# LLM del frontend (en attend) recibe, lee sus archivos, responde:
|
|
593
|
+
/refacil:reply "necesito tambien amountRefunded y timestamp.
|
|
594
|
+
Formato camelCase."
|
|
595
|
+
|
|
596
|
+
# LLM de payments recibe la respuesta automaticamente y continua
|
|
597
|
+
# implementando el endpoint con los campos correctos. Sin que ningun
|
|
598
|
+
# dev haya intervenido en el intercambio.
|
|
599
|
+
```
|
|
576
600
|
|
|
577
|
-
**
|
|
578
|
-
- Boilerplate "Antes de empezar" unificado en 9 skills
|
|
579
|
-
- Validacion de OpenSpec simplificada en `prereqs/SKILL.md`
|
|
580
|
-
- Templates consolidados (`claude-md.md` + `cursorrules.md` → `methodology-guide.md` unico)
|
|
581
|
-
- Compactacion de `review/SKILL.md`, `bug/SKILL.md`, `test/SKILL.md`
|
|
601
|
+
**Ejemplo B — Modo pasivo con dev como bridge ligero**
|
|
582
602
|
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
603
|
+
```
|
|
604
|
+
# LLM A: /refacil:ask @frontend "..." (sin --wait)
|
|
605
|
+
# -> "pregunta enviada. Usa /refacil:inbox cuando quieras ver respuestas"
|
|
606
|
+
|
|
607
|
+
# Dev B ve la pregunta en su panel watch (segunda terminal):
|
|
608
|
+
refacil-sdd-ai bus watch frontend
|
|
609
|
+
|
|
610
|
+
# Le dice a su LLM: "responde en el bus: <respuesta>"
|
|
611
|
+
# LLM B: /refacil:reply "..."
|
|
612
|
+
|
|
613
|
+
# Dev A ve la respuesta en SU watch y dice: "/refacil:inbox y continua"
|
|
614
|
+
# LLM A lee la respuesta y sigue el flujo original
|
|
615
|
+
```
|
|
616
|
+
|
|
617
|
+
**Ejemplo C — Observador puro (sin tokens)**
|
|
618
|
+
|
|
619
|
+
```
|
|
620
|
+
# Segunda terminal en cualquier repo:
|
|
621
|
+
refacil-sdd-ai bus watch payments-api
|
|
622
|
+
# Muestra todos los mensajes en vivo con menciones resaltadas (🔔).
|
|
623
|
+
# No consume tokens del LLM.
|
|
624
|
+
```
|
|
625
|
+
|
|
626
|
+
**Ejemplo D — Backlog asincronico**
|
|
627
|
+
|
|
628
|
+
```
|
|
629
|
+
# Dev A pregunta algo al bus, Dev B esta ocupado en otra tarea.
|
|
630
|
+
# La pregunta queda persistida en inbox.jsonl de la sala.
|
|
631
|
+
|
|
632
|
+
# Mas tarde, Dev B dice a su LLM: "atiende el bus"
|
|
633
|
+
# -> /refacil:attend procesa las preguntas pendientes en orden FIFO.
|
|
634
|
+
|
|
635
|
+
# Dev A si tenia --wait y expiro: usa /refacil:inbox para recuperar la respuesta.
|
|
636
|
+
```
|
|
637
|
+
|
|
638
|
+
### Patrones de uso recomendados
|
|
639
|
+
|
|
640
|
+
- **Sesion dedicada**: abrir una segunda ventana de Claude Code en el repo que atiende, invocar `/refacil:attend` ahi y dejar la primera libre para trabajo normal.
|
|
641
|
+
- **Atencion en rafagas**: invocar `/refacil:attend` solo cuando el watch panel muestre preguntas pendientes.
|
|
642
|
+
- **Observador pasivo**: `refacil-sdd-ai bus watch <session>` para supervisar sin consumir tokens del LLM.
|
|
643
|
+
- **Delegacion explicita al inicio del turno**: decirle al LLM *"si necesitas contexto del front/back/X, preguntale al bus"* para que use `/refacil:ask` cuando lo necesite.
|
|
644
|
+
|
|
645
|
+
### Problematica que resuelve
|
|
646
|
+
|
|
647
|
+
En un equipo con multiples microservicios y frontend, cada repo corre su propia sesion de Claude Code o Cursor. Antes de `refacil-bus`:
|
|
648
|
+
|
|
649
|
+
- El dev saltaba entre ventanas para consultar codigo de otro repo.
|
|
650
|
+
- El contexto del repo B se explicaba manualmente al agente del repo A — propenso a error y olvido.
|
|
651
|
+
- No habia forma de que el agente de un repo hiciera una pregunta puntual al agente de otro sin romper el flujo de trabajo del dev.
|
|
652
|
+
- Decisiones cruzadas (contrato de APIs, formato de eventos, nombres de campos) requerian reuniones o mensajes fuera de banda.
|
|
653
|
+
|
|
654
|
+
Con `refacil-bus`:
|
|
655
|
+
|
|
656
|
+
- Cada agente mantiene su contexto aislado en su propio repo y responde desde su conocimiento.
|
|
657
|
+
- La comunicacion entre agentes es texto plano, sin transferir archivos ni tokens.
|
|
658
|
+
- Una pregunta como *"¿como consumes el response de /pay?"* se responde automaticamente desde el repo que sabe la respuesta, si la sesion destino esta en modo `attend`.
|
|
659
|
+
- El dev mantiene trazabilidad de toda la conversacion cruzada en `inbox.jsonl` (rotado a 7 dias) y en el watch panel.
|
|
660
|
+
- La comunicacion es totalmente local — nada sale de la maquina del dev.
|
|
661
|
+
|
|
662
|
+
### Comandos de referencia
|
|
663
|
+
|
|
664
|
+
**Skills (invocables por el LLM)**:
|
|
665
|
+
|
|
666
|
+
| Skill | Uso |
|
|
667
|
+
|---|---|
|
|
668
|
+
| `/refacil:join <sala>` | Unirse o crear sala. Genera presentacion automatica (lee `AGENTS.md`). |
|
|
669
|
+
| `/refacil:say "..."` | Broadcast a la sala. |
|
|
670
|
+
| `/refacil:ask @nombre "..." [--wait N]` | Pregunta dirigida. `--wait N` bloquea hasta respuesta o N segundos. |
|
|
671
|
+
| `/refacil:reply "..."` | Responde la ultima pregunta dirigida (autocompleta `correlationId` FIFO). |
|
|
672
|
+
| `/refacil:attend` | Modo escucha activa. Recibe preguntas y las entrega al LLM para que las responda. |
|
|
673
|
+
| `/refacil:inbox` | Mensajes nuevos desde la ultima lectura. |
|
|
674
|
+
|
|
675
|
+
**CLI (para el dev)**:
|
|
676
|
+
|
|
677
|
+
```bash
|
|
678
|
+
refacil-sdd-ai bus start # Arranca el broker (opcional; las skills lo hacen solas)
|
|
679
|
+
refacil-sdd-ai bus stop # Detiene el broker
|
|
680
|
+
refacil-sdd-ai bus status # Puerto, pid, uptime
|
|
681
|
+
refacil-sdd-ai bus rooms # Salas activas + miembros
|
|
682
|
+
refacil-sdd-ai bus watch <session> # Panel en vivo (sin tokens)
|
|
683
|
+
refacil-sdd-ai bus leave # Salir de la sala (limpieza manual)
|
|
684
|
+
refacil-sdd-ai bus history [--n N] # Ultimos N mensajes
|
|
685
|
+
```
|
|
686
|
+
|
|
687
|
+
### Presentacion automatica al hacer join
|
|
688
|
+
|
|
689
|
+
Al unirse a una sala, cada sesion envia un mensaje de presentacion. Para que sea util, la skill `/refacil:join` instruye al LLM a generar un bloque en `AGENTS.md` la primera vez, entre los marcadores:
|
|
690
|
+
|
|
691
|
+
```
|
|
692
|
+
<!-- refacil-bus:presentation:start -->
|
|
693
|
+
Stack: <framework + lenguaje>
|
|
694
|
+
Dominio: <que hace este repo en 1-2 lineas>
|
|
695
|
+
Preguntame sobre: <lista corta de areas donde este repo es fuente de verdad>
|
|
696
|
+
<!-- refacil-bus:presentation:end -->
|
|
697
|
+
```
|
|
698
|
+
|
|
699
|
+
El CLI prioriza ese bloque literal. Si no existe, hace fallback a `package.json` (name + description) + primer parrafo de `AGENTS.md`. El bloque queda versionado en el repo y cualquier dev puede ajustarlo.
|
|
700
|
+
|
|
701
|
+
### Limitaciones conocidas
|
|
702
|
+
|
|
703
|
+
- Mientras `/refacil:attend` esta activo, la sesion del IDE queda ocupada (el dev no puede usarla sin abortar con ESC). Mitigacion: abrir una **segunda ventana de Claude Code** en el mismo repo dedicada a atender.
|
|
704
|
+
- El LLM no recibe pushes externos — la automatizacion completa requiere que el receptor este en `attend`, o que el dev le pida `/refacil:inbox` despues.
|
|
705
|
+
- Sin autenticacion: cualquier proceso local puede conectar al broker (por diseño, es solo loopback y a demanda del dev).
|
|
706
|
+
- Persistencia 7 dias en `~/.refacil-sdd-ai/bus/<sala>/inbox.jsonl` (rotacion lazy al escribir).
|
|
707
|
+
|
|
708
|
+
|
|
709
|
+
## Tecnologias
|
|
710
|
+
|
|
711
|
+
- [OpenSpec](https://github.com/Fission-AI/OpenSpec) — Framework de especificaciones
|
|
712
|
+
- [AGENTS.md](https://agents.md/) — Estandar universal de instrucciones para IA
|
|
713
|
+
- [Claude Code](https://claude.ai/code) — CLI de Anthropic
|
|
714
|
+
- [Cursor](https://cursor.sh) — IDE con IA
|
|
586
715
|
|
|
587
716
|
## Licencia
|
|
588
717
|
|