Architect orchestrator Nicolify. Lee 01-spec.md + 02-design-{ui,agentic}.md. Decide qué surfaces toca (BE/FE/agentic). Spawna sub-architects en paralelo (/architect-be, /architect-fe, /architect-agentic). Reúne sus 03-arch-*.md y produce 04-tickets.yaml ordenado con dependencias + owner_eligibility (qwen vs Opus) + acceptance criteria + quality gates. Activa cuando user dice: '/architect', 'diseñemos la arq', 'tickets', 'qué tickets salen', 'arquitectura técnica', 'cómo lo construimos técnicamente'.
68
84%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Owner:
04-tickets.yaml. Reúne outputs de sub-architects y produce pila de tickets ejecutable por /dev-team.
01-spec.md — ratificada por Chris02-design-ui.md — si ui-story o mixed02-design-agentic.md — si agentic-story o mixeddocs/product/stories/{m}/{id}.yaml — story headerdocs/product/modules/{m}.md — estado funcionaldocs/domains/INDEX.md — routing técnico.claude/rules/anti-duplication.md — inventario shared abstractionsLee 01-spec.md + 02-design-*.md + story YAML. Decide cuáles surfaces toca:
Tabla decisión:
| Story type | Surfaces típicas |
|---|---|
| ui-story simple | FE only |
| ui-story con CRUD | FE + BE |
| agentic-story | AGENTIC + (BE si tool nuevo) + (FE si trigger UI) |
| service-story | BE only o AGENTIC + BE |
Para cada surface identificada, spawn sub-architect via Agent tool en paralelo (single message, multiple Agent calls):
Agent 1: subagent_type=architect-be (if BE surface)
prompt: "Story {id}, surface BE. Lee 01-spec.md + 02-design-*.md + story YAML.
Produce 03-arch-be.md siguiendo template.
Cross-module audit obligatorio (anti-duplication).
done -> 03-arch-be.md"
Agent 2: subagent_type=architect-fe (if FE surface)
prompt: "Story {id}, surface FE. Lee 01-spec.md + 02-design-ui.md.
Produce 03-arch-fe.md siguiendo template.
done -> 03-arch-fe.md"
Agent 3: subagent_type=architect-agentic (if AGENTIC surface)
prompt: "Story {id}, surface AGENTIC. Lee 01-spec.md + 02-design-agentic.md.
Carga sales-agent-expert / copilot-expert + tessl__langgraph + claude-api.
Produce 03-arch-agentic.md siguiendo template.
done -> 03-arch-agentic.md"Cada sub-architect escribe su archivo + devuelve done -> path.
Antes de redactar 04-tickets.yaml, validar que sub-architects respetaron .claude/rules/anti-duplication.md inventario shared. Especial atención si introducen:
BaseExtractionOrchestratorSi sub-architect propone NEW cuando shared existe ≥80% → escala /pm: "architect-{X} propone NEW para subsystem Y, pero shared tiene Z. Decidir EXTEND vs NEW."
Seguir template docs/specs/templates/04-tickets-template.yaml. Reglas:
Reglas de ticket split (CRÍTICAS):
Owner eligibility (CRÍTICO):
| Surface | qwen-opencode | claude-sonnet | claude-opus |
|---|---|---|---|
| BE módulo no-agentic | ✅ default | ✅ | ✅ |
| FE no-agentic | ✅ default | ✅ | ✅ |
| AGENTIC (copilot/sales_agent) | ⛔ PROHIBIDO | ⛔ PROHIBIDO | ✅ OBLIGATORIO |
| Migration aislada | ✅ | ✅ | ✅ |
| Cross-module shared layer | ⛔ | ✅ | ✅ |
Dependencies / blocks:
- id: T-1 (BE endpoint)
depends_on: []
blocks: [T-2, T-3]
- id: T-2 (agentic tool wire)
depends_on: [T-1] # tool needs endpoint
blocks: [T-3]
- id: T-3 (FE button)
depends_on: [T-2] # button calls agentic flow
blocks: []Acceptance criteria por ticket — verificadores AUTOMÁTICOS:
acceptance:
- id: A1
description: "POST happy → 200"
verifier: { type: pytest, path: "tests/modules/{m}/test_{name}_endpoint.py::test_happy" }
- id: A2
description: "Cross-tenant → 403"
verifier: { type: pytest, path: "...::test_tenant_isolation" }Sin verifier ejecutable → ticket inválido.
Cross-stack handoff notes (anti retrabajo):
Cuando ticket agentic depende de BE/FE → /architect agrega NOTAS DETALLADAS al ticket BE/FE sobre qué consumirá el agentic, para que dev BE/FE no se desvíe:
T-1 (BE endpoint, owner: qwen):
...
notes_for_downstream_agentic_ticket:
- "Este endpoint será llamado por brand_audit_tool en T-2 (agentic). NO cambiar response shape sin coordinar."
- "Response model: BrandAuditResponse(gaps: list[Gap], priorities: dict)"
- "Gap entity: { field_name: str, severity: int, reason: str, action: str }"
- "Latencia p95 < 500ms (agentic tiene budget total $0.50, latency contribuye)"Antes de cerrar 04-tickets.yaml:
owner_eligibility correcta (agentic = opus only)/test-backend, /test-frontend, etc)04-tickets.yaml producido.
{N} tickets total.
- T-1 (BE, qwen-eligible, 2h)
- T-2 (AGENTIC, opus-only, 3h)
- T-3 (FE, qwen-eligible, 2h)
Dependencies: T-2 depends T-1; T-3 depends T-2.
Próximo: /dev-team toma tickets ready según owner_eligibility.Update checkpoint:
phase: ARCHITECT → DEV_T1
last_artifact: 04-tickets.yaml
next_action: "/dev-team toma T-1 (state: ready)"Resumen de tickets en lista. Dependencias en flecha. NUNCA reproducir 04-tickets.yaml entero en chat (cita path).
d31f7bc
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.