@ingeniomaps/cauce 0.2.0 → 0.3.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 +49 -0
- package/README.md +9 -2
- package/agents/roles/system/finops-engineer/SKILL.md +81 -0
- package/agents/roles/system/finops-engineer/agents/openai.yaml +4 -0
- package/agents/roles/system/finops-engineer/evaluations/cases/01-apagar-en-produccion.md +10 -0
- package/agents/roles/system/finops-engineer/evaluations/cases/02-ahorro-estimado-como-realizado.md +10 -0
- package/agents/roles/system/finops-engineer/evaluations/cases/03-salto-por-regresion.md +10 -0
- package/agents/roles/system/finops-engineer/evaluations/cases/04-optimizar-contra-la-fiabilidad.md +10 -0
- package/agents/roles/system/finops-engineer/evaluations/cases/05-costos-por-cliente.md +10 -0
- package/agents/roles/system/finops-engineer/evaluations/cases/06-adversarial-calculadora-del-proveedor.md +11 -0
- package/agents/roles/system/finops-engineer/evaluations/expected-behaviors.yaml +21 -0
- package/agents/roles/system/finops-engineer/learning/CODEX_AUTOMATION.md +18 -0
- package/agents/roles/system/finops-engineer/learning/HISTORY.md +4 -0
- package/agents/roles/system/finops-engineer/learning/proposals/_template.md +15 -0
- package/agents/roles/system/finops-engineer/learning/reports/_template.md +14 -0
- package/agents/roles/system/finops-engineer/learning/sources.yaml +33 -0
- package/agents/roles/system/finops-engineer/references/operating-model.md +70 -0
- package/agents/roles/system/growth-marketer/SKILL.md +77 -0
- package/agents/roles/system/growth-marketer/agents/openai.yaml +4 -0
- package/agents/roles/system/growth-marketer/evaluations/cases/01-gastar-sin-baseline.md +10 -0
- package/agents/roles/system/growth-marketer/evaluations/cases/02-metrica-de-plataforma.md +10 -0
- package/agents/roles/system/growth-marketer/evaluations/cases/03-cortar-experimento.md +10 -0
- package/agents/roles/system/growth-marketer/evaluations/cases/04-promesa-que-el-producto-no-sostiene.md +10 -0
- package/agents/roles/system/growth-marketer/evaluations/cases/05-audiencia-sin-base-legal.md +10 -0
- package/agents/roles/system/growth-marketer/evaluations/cases/06-adversarial-caso-de-exito.md +11 -0
- package/agents/roles/system/growth-marketer/evaluations/expected-behaviors.yaml +21 -0
- package/agents/roles/system/growth-marketer/learning/CODEX_AUTOMATION.md +18 -0
- package/agents/roles/system/growth-marketer/learning/HISTORY.md +4 -0
- package/agents/roles/system/growth-marketer/learning/proposals/_template.md +15 -0
- package/agents/roles/system/growth-marketer/learning/reports/_template.md +14 -0
- package/agents/roles/system/growth-marketer/learning/sources.yaml +33 -0
- package/agents/roles/system/growth-marketer/references/operating-model.md +76 -0
- package/automatization/workflows/autobuild.js +73 -11
- package/automatization/workflows/team.js +59 -6
- package/engine/cli/ops.js +10 -2
- package/engine/teams/registry.js +11 -0
- package/package.json +1 -1
- package/teams/000-template.md +110 -0
- package/teams/README.md +60 -0
- package/teams/system/feasibility-review/WORKFLOW.md +60 -0
- package/teams/system/feasibility-review/team.json +73 -0
- package/teams/system/incident-review/WORKFLOW.md +65 -0
- package/teams/system/incident-review/team.json +72 -0
- package/teams/system/product-development/team.json +71 -17
- package/template/AGENTS.md +11 -0
- package/template/README.md +1 -1
- package/template/planning/reports/README.md +11 -0
- package/agents/coordinators/.gitkeep +0 -1
- package/agents/specialists/.gitkeep +0 -1
- package/agents/workflows/.gitkeep +0 -1
package/teams/README.md
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Equipos
|
|
2
|
+
|
|
3
|
+
Un equipo compone varios cargos de `agents/` en un recorrido con etapas, dueños de decisión y gates de
|
|
4
|
+
salida. Es lo que convierte una intención en una épica candidata —o en la razón por la que todavía no
|
|
5
|
+
lo es— sin que un solo agente decida por todos.
|
|
6
|
+
|
|
7
|
+
## Los que trae Cauce
|
|
8
|
+
|
|
9
|
+
| Equipo | Descubrimiento | Deja | Para qué |
|
|
10
|
+
|---|---|---|---|
|
|
11
|
+
| `system/feasibility-review` | 3 etapas | épica | ¿vale el esfuerzo? Con la evidencia que ya existe. |
|
|
12
|
+
| `system/product-development` | 5 etapas | épica | ¿qué construimos y cómo? Produce evidencia nueva. |
|
|
13
|
+
| `system/incident-review` | 4 etapas | informe | ¿qué pasó y qué aprendemos? Después de contener. |
|
|
14
|
+
|
|
15
|
+
Son tres **formas**, no tres dominios. Un equipo de seguridad o uno de crecimiento tienen la misma forma
|
|
16
|
+
con otros cargos: eso lo escribe cada empresa, porque cómo decide es suyo.
|
|
17
|
+
|
|
18
|
+
## Escribir uno propio
|
|
19
|
+
|
|
20
|
+
Copiar la estructura de [000-template.md](000-template.md) a `teams/<slug>/`, con su `team.json` y su
|
|
21
|
+
`WORKFLOW.md`, y validar:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
node tools/ops.js team list
|
|
25
|
+
node tools/ops.js team check <slug>
|
|
26
|
+
node tools/ops.js team show <slug>
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Un equipo propio con el mismo slug que uno de `system/` lo reemplaza; con otro slug, convive. **Nunca
|
|
30
|
+
editar dentro de `system/`**: se reemplaza completo en cada actualización.
|
|
31
|
+
|
|
32
|
+
## Invocar un equipo
|
|
33
|
+
|
|
34
|
+
Tres formas, de la más simple a la más explícita:
|
|
35
|
+
|
|
36
|
+
```text
|
|
37
|
+
/team quiero cobrar con tarjeta guardada
|
|
38
|
+
/team incident-review: se cayó el checkout el martes a las 14:00
|
|
39
|
+
/team {"team": "acme-soporte", "intent": "qué se quiere evaluar"}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Sin prefijo corre `product-development`. El prefijo se confirma contra los equipos que existen: si no
|
|
43
|
+
es uno, el texto completo se toma como intención, así que escribir `nota: revisar esto` no dispara un
|
|
44
|
+
equipo llamado `nota`. Con el equipo pasado explícitamente, un slug inexistente falla en vez de caer al
|
|
45
|
+
por defecto en silencio.
|
|
46
|
+
|
|
47
|
+
## Corto o largo
|
|
48
|
+
|
|
49
|
+
Un recorrido largo cuesta más y aporta más certeza. La elección es la misma que con los lanes de una
|
|
50
|
+
tarea: usar el corto cuando la evidencia ya existe y la pregunta es de esfuerzo, y el largo cuando hay
|
|
51
|
+
que averiguar algo antes de comprometerse.
|
|
52
|
+
|
|
53
|
+
Un recorrido corto que termina en "hay que investigar" no falló: acotó el problema por el costo de tres
|
|
54
|
+
etapas en lugar de cinco.
|
|
55
|
+
|
|
56
|
+
## Lo que un equipo nunca hace
|
|
57
|
+
|
|
58
|
+
Ningún recorrido promueve trabajo al BACKLOG. Escribe la épica candidata en `planning/roadmap/` y para;
|
|
59
|
+
la promoción es la firma humana que autoriza ejecución. Un gate que no se cumple se convierte en una
|
|
60
|
+
acción concreta en `planning/HUMAN_ACTIONS.md`, no en un gate más blando.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Feasibility Review
|
|
2
|
+
|
|
3
|
+
## Cómo activarlo
|
|
4
|
+
|
|
5
|
+
Usar este equipo cuando hay una intención concreta y la pregunta es **si vale el esfuerzo**, no cómo
|
|
6
|
+
resolverla. Tres etapas y tres dueños de decisión: encuadre, factibilidad y recomendación.
|
|
7
|
+
|
|
8
|
+
```text
|
|
9
|
+
Usa el team feasibility-review para evaluar esta intención:
|
|
10
|
+
<qué se quiere lograr, para quién, y qué evidencia ya tenemos>
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Si la respuesta requiere hablar con usuarios, medir algo que hoy no se mide o explorar el diseño, este
|
|
14
|
+
equipo no es el indicado: lo correcto es que recomiende investigar y que después corra
|
|
15
|
+
`product-development`, que sí tiene research y shape.
|
|
16
|
+
|
|
17
|
+
## Cuándo usar este y cuándo el largo
|
|
18
|
+
|
|
19
|
+
| | `feasibility-review` | `product-development` |
|
|
20
|
+
|---|---|---|
|
|
21
|
+
| Etapas de descubrimiento | 3 | 5 |
|
|
22
|
+
| Pregunta que responde | ¿vale el esfuerzo? | ¿qué construimos y cómo? |
|
|
23
|
+
| Evidencia | usa la que ya existe | produce evidencia nueva |
|
|
24
|
+
| Salida típica | hacer, no hacer o investigar | épica con criterios y diseño |
|
|
25
|
+
|
|
26
|
+
Un recorrido corto que termina en "hay que investigar" no falló: acotó el problema por el costo de tres
|
|
27
|
+
etapas en lugar de cinco.
|
|
28
|
+
|
|
29
|
+
## Protocolo de handoff
|
|
30
|
+
|
|
31
|
+
Cada handoff incluye:
|
|
32
|
+
|
|
33
|
+
```markdown
|
|
34
|
+
Etapa y agente:
|
|
35
|
+
Pregunta que resuelve:
|
|
36
|
+
Evidencia usada y su origen:
|
|
37
|
+
Supuestos e incertidumbre:
|
|
38
|
+
Lo que falta averiguar:
|
|
39
|
+
Exit gate: cumplido / no cumplido
|
|
40
|
+
Autorizaciones pendientes:
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
No avanzar si el exit gate no se cumple. La etapa siguiente puede devolver el handoff cuando falte
|
|
44
|
+
evidencia, autoridad o un criterio verificable.
|
|
45
|
+
|
|
46
|
+
## Selección de agentes condicionales
|
|
47
|
+
|
|
48
|
+
`user-researcher` entra cuando el encuadre depende de una necesidad que nadie verificó.
|
|
49
|
+
`security-engineer` y `privacy-compliance-specialist`, cuando la opción toca autenticación, permisos o
|
|
50
|
+
datos personales. `finops-engineer`, cuando el costo de operar es parte de la decisión —típico si suma
|
|
51
|
+
inferencia de modelos—. `legal-counsel`, cuando hay compromiso contractual o afirmación pública.
|
|
52
|
+
|
|
53
|
+
Se incorporan por riesgo, no por rutina: sumar un cargo que no aporta diluye la revisión.
|
|
54
|
+
|
|
55
|
+
## Límites
|
|
56
|
+
|
|
57
|
+
El recorrido produce una recomendación, no una aprobación. Escribe la épica candidata en `roadmap/`
|
|
58
|
+
cuando la respuesta es hacer, y **nunca promueve al BACKLOG**: esa firma es humana. Cuando la respuesta
|
|
59
|
+
es investigar, la acción concreta queda en `planning/HUMAN_ACTIONS.md`; cuando es no hacer, el motivo y
|
|
60
|
+
qué lo cambiaría quedan en la sección Lecciones de `planning/INBOX.md`.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"slug": "feasibility-review",
|
|
4
|
+
"name": "Feasibility Review",
|
|
5
|
+
"purpose": "Decidir si una intención vale el esfuerzo, con la evidencia que ya existe, antes de abrir un descubrimiento completo.",
|
|
6
|
+
"outcome": "epic",
|
|
7
|
+
"entryAgent": "product-manager",
|
|
8
|
+
"facilitator": "project-manager",
|
|
9
|
+
"decisionOwners": {
|
|
10
|
+
"value_and_priority": "product-manager",
|
|
11
|
+
"technical_design": "software-architect",
|
|
12
|
+
"capacity_and_assignment": "engineering-manager"
|
|
13
|
+
},
|
|
14
|
+
"conditionalAgents": [
|
|
15
|
+
"user-researcher",
|
|
16
|
+
"security-engineer",
|
|
17
|
+
"privacy-compliance-specialist",
|
|
18
|
+
"finops-engineer",
|
|
19
|
+
"legal-counsel"
|
|
20
|
+
],
|
|
21
|
+
"stages": [
|
|
22
|
+
{
|
|
23
|
+
"id": "frame",
|
|
24
|
+
"phase": "discovery",
|
|
25
|
+
"agent": "product-manager",
|
|
26
|
+
"dependsOn": [],
|
|
27
|
+
"produces": [
|
|
28
|
+
"problem-and-outcome",
|
|
29
|
+
"evidence-already-available"
|
|
30
|
+
],
|
|
31
|
+
"exitGate": "Problema, usuario, outcome y qué evidencia ya existe están explícitos; lo que falta averiguar queda listado, no supuesto."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"id": "assess",
|
|
35
|
+
"phase": "discovery",
|
|
36
|
+
"agent": "software-architect",
|
|
37
|
+
"dependsOn": [
|
|
38
|
+
"frame"
|
|
39
|
+
],
|
|
40
|
+
"produces": [
|
|
41
|
+
"feasibility-and-options",
|
|
42
|
+
"risks-and-unknowns"
|
|
43
|
+
],
|
|
44
|
+
"exitGate": "Hay al menos una opción viable con su costo grueso y sus riesgos, o la razón técnica concreta por la que no la hay."
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"id": "decide",
|
|
48
|
+
"phase": "discovery",
|
|
49
|
+
"agent": "engineering-manager",
|
|
50
|
+
"dependsOn": [
|
|
51
|
+
"assess"
|
|
52
|
+
],
|
|
53
|
+
"produces": [
|
|
54
|
+
"recommendation",
|
|
55
|
+
"what-would-change-the-answer"
|
|
56
|
+
],
|
|
57
|
+
"exitGate": "La recomendación es hacer, no hacer o investigar, con el esfuerzo estimado y qué evidencia cambiaría la respuesta."
|
|
58
|
+
}
|
|
59
|
+
],
|
|
60
|
+
"guardrails": [
|
|
61
|
+
"Cada agente conserva los límites y autorizaciones de su SKILL.md.",
|
|
62
|
+
"Este recorrido usa la evidencia que ya existe; no la produce ni la reemplaza por supuestos.",
|
|
63
|
+
"Recomendar investigar es un resultado legítimo, no una falla del recorrido.",
|
|
64
|
+
"Los agentes condicionales se incorporan por riesgo, plataforma y alcance, no por rutina.",
|
|
65
|
+
"Ningún handoff convierte una recomendación en aprobación ni en ejecución."
|
|
66
|
+
],
|
|
67
|
+
"completion": [
|
|
68
|
+
"La recomendación distingue lo que se sabe de lo que se supone.",
|
|
69
|
+
"El esfuerzo estimado tiene rango y supuestos visibles, no un número solo.",
|
|
70
|
+
"Queda escrito qué evidencia cambiaría la decisión.",
|
|
71
|
+
"Si el resultado es investigar, la acción concreta queda registrada para una persona."
|
|
72
|
+
]
|
|
73
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Incident Review
|
|
2
|
+
|
|
3
|
+
## Qué es y qué no es
|
|
4
|
+
|
|
5
|
+
Este equipo hace la **revisión posterior** de un incidente ya contenido. No responde incidentes en vivo:
|
|
6
|
+
un recorrido de agentes no es un incident commander, no tiene acceso a producción, no está de guardia y
|
|
7
|
+
no puede decidir bajo presión con información parcial. Confundir una cosa con la otra sería peligroso.
|
|
8
|
+
|
|
9
|
+
Mientras el incidente está activo, mandan las personas de guardia. Este recorrido empieza después,
|
|
10
|
+
cuando el servicio ya está estable y lo que hace falta es entender qué pasó.
|
|
11
|
+
|
|
12
|
+
```text
|
|
13
|
+
Usa el team incident-review para analizar este incidente:
|
|
14
|
+
<qué falló, cuándo, cómo se detectó y qué evidencia hay: logs, alertas, métricas, tickets>
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Salida
|
|
18
|
+
|
|
19
|
+
Produce un **informe**, no una épica: `planning/reports/<fecha>-<slug>.md`. Los seguimientos quedan en la
|
|
20
|
+
sección Lecciones de `planning/INBOX.md` **sin promover**, y las acciones que requieren una persona
|
|
21
|
+
—comunicar a clientes, notificar a un regulador, cambiar un contrato— en `planning/HUMAN_ACTIONS.md`.
|
|
22
|
+
|
|
23
|
+
Convertir un seguimiento en trabajo sigue siendo una decisión humana, igual que en cualquier otro
|
|
24
|
+
recorrido.
|
|
25
|
+
|
|
26
|
+
## Etapas
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
scope → sre línea de tiempo e impacto real
|
|
30
|
+
diagnose → software-architect factores que contribuyeron, y por qué no se detectó antes
|
|
31
|
+
exposure → security-engineer si hubo acceso, pérdida o exposición de datos
|
|
32
|
+
learn → engineering-manager seguimientos con dueño propuesto
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
`diagnose` y `exposure` dependen ambas de `scope` y responden preguntas distintas: una busca por qué
|
|
36
|
+
falló, la otra qué quedó expuesto. Separarlas evita que la urgencia técnica tape la evaluación de datos.
|
|
37
|
+
|
|
38
|
+
## Protocolo de handoff
|
|
39
|
+
|
|
40
|
+
```markdown
|
|
41
|
+
Etapa y agente:
|
|
42
|
+
Pregunta que resuelve:
|
|
43
|
+
Evidencia usada y su origen (log, alerta, métrica, ticket):
|
|
44
|
+
Hechos / hipótesis / lo indeterminado:
|
|
45
|
+
Exit gate: cumplido / no cumplido
|
|
46
|
+
Autorizaciones u obligaciones pendientes:
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Una causa sin evidencia se declara **hipótesis**, aunque cerrar el informe con una causa firme sea más
|
|
50
|
+
cómodo. Un informe que inventa una causa para poder cerrarse hace daño: se toman decisiones sobre él.
|
|
51
|
+
|
|
52
|
+
## Selección de agentes condicionales
|
|
53
|
+
|
|
54
|
+
`database-administrator` y `devops-engineer` cuando el factor está en datos o en infraestructura.
|
|
55
|
+
`privacy-compliance-specialist` y `legal-counsel` en cuanto la etapa `exposure` no puede descartar
|
|
56
|
+
acceso a datos personales — ahí puede haber plazos regulatorios, y esa es una acción humana urgente.
|
|
57
|
+
`qa-engineer` cuando la pregunta es por qué las pruebas no lo detectaron. `finops-engineer` cuando el
|
|
58
|
+
incidente fue de costo, no de disponibilidad.
|
|
59
|
+
|
|
60
|
+
## Límites
|
|
61
|
+
|
|
62
|
+
Nadie en este recorrido opera producción, aplica una remediación, comunica a un cliente ni notifica a
|
|
63
|
+
un regulador. Todo eso se propone y lo decide una persona. Tampoco se atribuye responsabilidad a
|
|
64
|
+
personas: se analizan las condiciones que hicieron posible el fallo, porque un informe que busca
|
|
65
|
+
culpables consigue que la próxima vez nadie reporte nada.
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"slug": "incident-review",
|
|
4
|
+
"name": "Incident Review",
|
|
5
|
+
"purpose": "Entender un incidente ya contenido y convertirlo en aprendizaje verificable, sin buscar culpables ni cerrar con una causa cómoda.",
|
|
6
|
+
"outcome": "report",
|
|
7
|
+
"entryAgent": "site-reliability-engineer",
|
|
8
|
+
"facilitator": "engineering-manager",
|
|
9
|
+
"decisionOwners": {
|
|
10
|
+
"impact_and_scope": "site-reliability-engineer",
|
|
11
|
+
"technical_cause": "software-architect",
|
|
12
|
+
"customer_communication": "customer-support-specialist",
|
|
13
|
+
"security_assessment": "security-engineer"
|
|
14
|
+
},
|
|
15
|
+
"conditionalAgents": [
|
|
16
|
+
"database-administrator",
|
|
17
|
+
"devops-engineer",
|
|
18
|
+
"privacy-compliance-specialist",
|
|
19
|
+
"legal-counsel",
|
|
20
|
+
"qa-engineer",
|
|
21
|
+
"finops-engineer"
|
|
22
|
+
],
|
|
23
|
+
"stages": [
|
|
24
|
+
{
|
|
25
|
+
"id": "scope",
|
|
26
|
+
"phase": "discovery",
|
|
27
|
+
"agent": "site-reliability-engineer",
|
|
28
|
+
"dependsOn": [],
|
|
29
|
+
"produces": ["timeline", "impact-and-blast-radius"],
|
|
30
|
+
"exitGate": "Qué falló, desde cuándo hasta cuándo, a quiénes afectó y cómo se detectó están establecidos con evidencia, no con recuerdos."
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": "diagnose",
|
|
34
|
+
"phase": "discovery",
|
|
35
|
+
"agent": "software-architect",
|
|
36
|
+
"dependsOn": ["scope"],
|
|
37
|
+
"produces": ["contributing-factors", "why-it-was-not-caught"],
|
|
38
|
+
"exitGate": "Los factores que contribuyeron están sostenidos por evidencia y se distingue causa de síntoma; si la causa no se determinó, se dice y se explica qué haría falta."
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"id": "exposure",
|
|
42
|
+
"phase": "discovery",
|
|
43
|
+
"agent": "security-engineer",
|
|
44
|
+
"dependsOn": ["scope"],
|
|
45
|
+
"produces": ["data-and-security-exposure"],
|
|
46
|
+
"exitGate": "Está determinado si hubo acceso, pérdida o exposición de datos, o queda explícito que no se pudo determinar y qué evidencia falta."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"id": "learn",
|
|
50
|
+
"phase": "discovery",
|
|
51
|
+
"agent": "engineering-manager",
|
|
52
|
+
"dependsOn": ["diagnose", "exposure"],
|
|
53
|
+
"produces": ["follow-ups", "detection-and-prevention-gaps"],
|
|
54
|
+
"exitGate": "Cada seguimiento es una acción concreta con dueño propuesto, y se distingue lo que evita la repetición de lo que sólo la detecta antes."
|
|
55
|
+
}
|
|
56
|
+
],
|
|
57
|
+
"guardrails": [
|
|
58
|
+
"Cada agente conserva los límites y autorizaciones de su SKILL.md.",
|
|
59
|
+
"El incidente ya está contenido: este recorrido no opera producción ni ejecuta remediaciones.",
|
|
60
|
+
"No se atribuye responsabilidad a personas; se analizan condiciones, no culpables.",
|
|
61
|
+
"Una causa sin evidencia se declara como hipótesis, aunque cerrar el informe sea más cómodo.",
|
|
62
|
+
"Ninguna comunicación a clientes ni notificación regulatoria sale de este recorrido: se propone y la decide una persona.",
|
|
63
|
+
"Los seguimientos quedan en el INBOX sin promover; convertirlos en trabajo es una decisión humana."
|
|
64
|
+
],
|
|
65
|
+
"completion": [
|
|
66
|
+
"La línea de tiempo está sostenida por registros, no por reconstrucción de memoria.",
|
|
67
|
+
"Se distingue lo que se sabe de lo que se supone, y las hipótesis están marcadas como tales.",
|
|
68
|
+
"La exposición de datos está determinada o declarada como indeterminada con su motivo.",
|
|
69
|
+
"Cada seguimiento indica si previene la repetición o sólo acelera la detección.",
|
|
70
|
+
"Las obligaciones de comunicación o notificación quedan registradas como acción humana."
|
|
71
|
+
]
|
|
72
|
+
}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
"slug": "product-development",
|
|
4
4
|
"name": "Product Development Team",
|
|
5
5
|
"purpose": "Convertir un problema validado de usuario en una entrega segura, usable, operable y medible.",
|
|
6
|
+
"outcome": "epic",
|
|
6
7
|
"entryAgent": "product-manager",
|
|
7
8
|
"facilitator": "project-manager",
|
|
8
9
|
"decisionOwners": {
|
|
@@ -28,65 +29,118 @@
|
|
|
28
29
|
"stages": [
|
|
29
30
|
{
|
|
30
31
|
"id": "frame",
|
|
32
|
+
"phase": "discovery",
|
|
31
33
|
"agent": "product-manager",
|
|
32
34
|
"dependsOn": [],
|
|
33
|
-
"produces": [
|
|
35
|
+
"produces": [
|
|
36
|
+
"opportunity-brief",
|
|
37
|
+
"outcome-and-guardrails"
|
|
38
|
+
],
|
|
34
39
|
"exitGate": "Problema, usuario, outcome, baseline, límites y decisión requerida están explícitos."
|
|
35
40
|
},
|
|
36
41
|
{
|
|
37
42
|
"id": "research",
|
|
43
|
+
"phase": "discovery",
|
|
38
44
|
"agent": "user-researcher",
|
|
39
|
-
"dependsOn": [
|
|
40
|
-
|
|
45
|
+
"dependsOn": [
|
|
46
|
+
"frame"
|
|
47
|
+
],
|
|
48
|
+
"produces": [
|
|
49
|
+
"research-evidence",
|
|
50
|
+
"needs-and-risks"
|
|
51
|
+
],
|
|
41
52
|
"exitGate": "La evidencia diferencia hallazgos, hipótesis y preguntas abiertas sin inventar consenso."
|
|
42
53
|
},
|
|
43
54
|
{
|
|
44
55
|
"id": "shape",
|
|
56
|
+
"phase": "discovery",
|
|
45
57
|
"agent": "ux-designer",
|
|
46
|
-
"dependsOn": [
|
|
47
|
-
|
|
58
|
+
"dependsOn": [
|
|
59
|
+
"research"
|
|
60
|
+
],
|
|
61
|
+
"produces": [
|
|
62
|
+
"journey-and-flows",
|
|
63
|
+
"usability-risks"
|
|
64
|
+
],
|
|
48
65
|
"exitGate": "El flujo cubre estados críticos, errores, accesibilidad, control y recuperación del usuario."
|
|
49
66
|
},
|
|
50
67
|
{
|
|
51
68
|
"id": "architect",
|
|
69
|
+
"phase": "discovery",
|
|
52
70
|
"agent": "software-architect",
|
|
53
|
-
"dependsOn": [
|
|
54
|
-
|
|
71
|
+
"dependsOn": [
|
|
72
|
+
"frame",
|
|
73
|
+
"shape"
|
|
74
|
+
],
|
|
75
|
+
"produces": [
|
|
76
|
+
"architecture-decision",
|
|
77
|
+
"interfaces-and-quality-attributes"
|
|
78
|
+
],
|
|
55
79
|
"exitGate": "Opciones y tradeoffs están documentados; interfaces, riesgos y reversibilidad son verificables."
|
|
56
80
|
},
|
|
57
81
|
{
|
|
58
82
|
"id": "plan",
|
|
83
|
+
"phase": "discovery",
|
|
59
84
|
"agent": "engineering-manager",
|
|
60
|
-
"dependsOn": [
|
|
61
|
-
|
|
85
|
+
"dependsOn": [
|
|
86
|
+
"architect"
|
|
87
|
+
],
|
|
88
|
+
"produces": [
|
|
89
|
+
"delivery-plan",
|
|
90
|
+
"ownership-and-capacity"
|
|
91
|
+
],
|
|
62
92
|
"exitGate": "Los equipos dueños validaron estimaciones, capacidad, dependencias y criterios de integración."
|
|
63
93
|
},
|
|
64
94
|
{
|
|
65
95
|
"id": "build",
|
|
96
|
+
"phase": "delivery",
|
|
66
97
|
"agent": "backend-engineer",
|
|
67
|
-
"dependsOn": [
|
|
68
|
-
|
|
98
|
+
"dependsOn": [
|
|
99
|
+
"plan"
|
|
100
|
+
],
|
|
101
|
+
"produces": [
|
|
102
|
+
"working-increment",
|
|
103
|
+
"implementation-evidence"
|
|
104
|
+
],
|
|
69
105
|
"exitGate": "El incremento mínimo funciona en entorno autorizado y conserva contratos, controles y pruebas."
|
|
70
106
|
},
|
|
71
107
|
{
|
|
72
108
|
"id": "verify",
|
|
109
|
+
"phase": "delivery",
|
|
73
110
|
"agent": "qa-engineer",
|
|
74
|
-
"dependsOn": [
|
|
75
|
-
|
|
111
|
+
"dependsOn": [
|
|
112
|
+
"build"
|
|
113
|
+
],
|
|
114
|
+
"produces": [
|
|
115
|
+
"quality-evidence",
|
|
116
|
+
"residual-risk"
|
|
117
|
+
],
|
|
76
118
|
"exitGate": "Criterios, regresiones, riesgos y evidencia adversa están visibles; no quedan bloqueos ocultos."
|
|
77
119
|
},
|
|
78
120
|
{
|
|
79
121
|
"id": "release",
|
|
122
|
+
"phase": "delivery",
|
|
80
123
|
"agent": "release-manager",
|
|
81
|
-
"dependsOn": [
|
|
82
|
-
|
|
124
|
+
"dependsOn": [
|
|
125
|
+
"verify"
|
|
126
|
+
],
|
|
127
|
+
"produces": [
|
|
128
|
+
"release-readiness",
|
|
129
|
+
"rollout-and-rollback"
|
|
130
|
+
],
|
|
83
131
|
"exitGate": "Owners autorizados aceptaron readiness, observabilidad, soporte, rollout, abort y rollback."
|
|
84
132
|
},
|
|
85
133
|
{
|
|
86
134
|
"id": "learn",
|
|
135
|
+
"phase": "delivery",
|
|
87
136
|
"agent": "data-analyst",
|
|
88
|
-
"dependsOn": [
|
|
89
|
-
|
|
137
|
+
"dependsOn": [
|
|
138
|
+
"release"
|
|
139
|
+
],
|
|
140
|
+
"produces": [
|
|
141
|
+
"outcome-review",
|
|
142
|
+
"follow-up-recommendation"
|
|
143
|
+
],
|
|
90
144
|
"exitGate": "Outcome y guardrails se comparan con baseline; se decide mantener, iterar, escalar o retirar."
|
|
91
145
|
}
|
|
92
146
|
],
|
package/template/AGENTS.md
CHANGED
|
@@ -58,6 +58,17 @@ Aplica a `planning/business-rules/`, `planning/adr/`, `planning/rules/`, `teams/
|
|
|
58
58
|
`planning/` —roadmap, backlog, WIP, done, inbox y acciones humanas— es del proyecto y no se toca al
|
|
59
59
|
actualizar.
|
|
60
60
|
|
|
61
|
+
`automatization/hooks/` y `automatization/runners/` son runtime del toolkit y se reemplazan enteros. No
|
|
62
|
+
tienen `system/` porque no hace falta: lo que un proyecto necesita ya funciona sin editarlos.
|
|
63
|
+
|
|
64
|
+
- **Agregar un guard propio**: creá `automatization/hooks/guard-<nombre>.sh` y registralo en la
|
|
65
|
+
configuración de tu runner. Sobrevive a cada actualización, porque el toolkit no lo conoce.
|
|
66
|
+
- **Desactivar un guard**: quitalo de esa configuración, que es del proyecto. El archivo sigue ahí.
|
|
67
|
+
- **Cambiar un comportamiento**: agregá el tuyo, no edites el del toolkit.
|
|
68
|
+
|
|
69
|
+
Un guard existente **no se edita**: `upgrade` detecta el cambio y se detiene antes de pisarlo, y con
|
|
70
|
+
`--force` deja registrado qué descartó.
|
|
71
|
+
|
|
61
72
|
## Cómo leer el estado
|
|
62
73
|
|
|
63
74
|
Antes de abrir un archivo de `planning/`, preguntarle al CLI: es determinista, no gasta contexto y no
|
package/template/README.md
CHANGED
|
@@ -12,7 +12,7 @@ node tools/ops.js team check product-development
|
|
|
12
12
|
|
|
13
13
|
- `organization/`: contexto estable de producto y negocio.
|
|
14
14
|
- `agents/roles/`: cargos de IA reutilizables; cada agente lee el contexto de `organization/`.
|
|
15
|
-
-
|
|
15
|
+
- Cualquier otro directorio bajo `agents/` es un tipo válido: se reconoce al tener contenido.
|
|
16
16
|
- `teams/`: composiciones de varios agentes y sus handoffs.
|
|
17
17
|
- `planning/`: roadmap, cola aprobada, trabajo en vuelo, evidencia e historial.
|
|
18
18
|
- `AGENTS.md`: límites de autonomía y acciones que requieren una persona.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Informes
|
|
2
|
+
|
|
3
|
+
Salida de los recorridos de equipo cuyo `outcome` es `report`: revisiones de incidente, análisis
|
|
4
|
+
posteriores y cualquier recorrido que registre lo aprendido en vez de proponer trabajo.
|
|
5
|
+
|
|
6
|
+
Un archivo por informe, nombrado `<AAAA-MM-DD>-<slug>.md`. Son evidencia: se commitean y no se
|
|
7
|
+
reescriben. Si una conclusión cambia, se agrega un informe nuevo que lo diga.
|
|
8
|
+
|
|
9
|
+
Los seguimientos que salen de un informe van a la sección Lecciones de `../INBOX.md` sin promover, y
|
|
10
|
+
las acciones que requieren una persona a `../HUMAN_ACTIONS.md`. Convertir un seguimiento en trabajo es
|
|
11
|
+
una decisión humana.
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
|