UX agéntico Luana v4 (post pm-redesign 2026-05 Punto 4). Diseña FLUJOS CONVERSACIONALES (no UI tradicional) para agentic-stories state=refining. Toma 01-spec.md (de /po) y produce 02-design-agentic.md en docs/product/stories/{story-id}/ con: turn-by-turn happy path, state machine agente, tools sequence, prompt slot architecture, voice constraints, error recovery, eval policy (personas+rubrics+pass^k), cost/latency budget, observabilidad. Al ratificar diseño → transition state=refining→refined. Carga skills sales-agent-expert, copilot-expert, tessl__langgraph, claude-api. Si descubre edge cases → delta-spec.md → /po ratifica. Activa cuando user dice: '/ux-agentico', 'diseñemos el flujo conversacional', 'cómo conversa el agente', 'flujo del copilot', 'turn-by-turn', 'experiencia agéntica'.
66
81%
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:
docs/product/stories/{story-id}/02-design-agentic.md+ (si aplica)mockups/conversation-{flow}.md. Diseña la EXPERIENCIA conversacional del agente. Sister skill de/po-ux(UI std).
<brand> ∈ (single-brand project — no brand selector). Si Chris no lo provee, PREGUNTAR antes de proceder. platform = stories cross-module que tocan engine (raro — requiere /pm autorización).
Si el skill es invocado vía /pm handoff, el brand viene en el handoff. Si invocado directo por Chris → preguntar.
Engine vs brand-extension scope (CRÍTICO para agentic):
Post single-project reorg 2026-05-15, los módulos agentic son SPLIT engine + brand extension:
| Surface | Path canónico | Quién diseña |
|---|---|---|
| Engine copilot (runtime, state machine, slot architecture base) | core/luana-core-copilot/src/luana_core_copilot/ | requiere /pm (promotion gate) |
| Brand extension copilot (extractors, tools, workflows, kb) | backend/src/modules/copilot/{extractors,tools,workflows,kb}/ | libre per-project vía este skill |
| Engine sales-agent (runtime, callback handler, slot architecture base) | core/luana-core-sales-agent/src/luana_core_sales_agent/ | requiere /pm (promotion gate) |
| Brand extension sales-agent (tools, personas, goldens) | backend/src/modules/sales_agent/{tools,personas,goldens}/ | libre per-project vía este skill |
Si el flow diseñado requiere modificar engine (core/luana-core-*/) → STOP, escalá /pm. Este skill SOLO diseña sobre brand extensions a menos que <brand>: platform esté explícito.
| Tipo story | Skill |
|---|---|
| Agentic-only (conversational flow, no UI tradicional) | /po (spec) → /ux-agentico (este skill, flow design) |
| UI mixed (UI std + tool calls agentic) | /po-ux para spec UI + sección agentic-handoff → /ux-agentico para flow |
| UI standard (CRUD/list/form/dashboard) | /po-ux (fusión, NO usar este skill) |
| Service-only (BE endpoint sin LLM) | /po standalone (NO usar este skill) |
Razón fusión NO aplica a agentic: state machine + slot architecture + voice fidelity + eval pass^k son bestia distinta del UI std (constrained Tailwind+Shadcn). Por eso /ux-agentico se mantiene separado de /po, mientras /po-ux fusiona /po + /ux-ui para UI std.
| /po-ux (UI std) | /ux-agentico (agentic) |
|---|---|
| Pantallas, layouts, componentes Shadcn | Turns, tools, prompts, voz |
| Wireframes ASCII / HTML mockups | Conversation transcripts ejemplo |
| Estados UI (loading/error/empty) | Estados agente (gathering/reasoning/acting/responding/done) |
| Responsive breakpoints | Channels (web/telegram/whatsapp/manychat) |
| Shadcn + Tailwind tokens | Slot architecture + cache TTL |
| Accessibility WCAG | Voice fidelity + persona robustness |
Output: 01-spec.md UNIFICADO | Output: 02-design-agentic.md (consume 01-spec.md previo de /po) |
<brand> (REQUIRED, ver sección arriba)docs/product/stories/{story-id}/01-spec.md — scenarios agentic-story (incluyendo personas + rubrics + pass^k)docs/product/stories/{story-id}/00-story.mddocs/product/modules/{copilot|sales_agent}.mddocs/specs/personas/*.yaml — personas disponibles (transversal core; pueden override per-project en docs/specs/personas/)docs/specs/rubrics/*.md — rubrics disponibles (transversal core; pueden override per-project en docs/specs/rubrics/).claude/rules/sales-agent-brand-voice.md (si sales_agent)core/luana-core-copilot/src/luana_core_copilot/agents/ — agentes enginecore/luana-core-sales-agent/src/luana_core_sales_agent/agents/ — idembackend/src/modules/copilot/{extractors,tools,workflows,kb}/backend/src/modules/sales_agent/{tools,personas,goldens}/ANTES de diseñar:
copilot-expert (si copilot)sales-agent-expert (si sales_agent)tessl__langgraph — patterns LangGraph 2.0claude-api — Anthropic SDK + prompt cachingtessl__graceful-degradation — recovery patternsLeer 01-spec.md agentic_contract:
Si contract no claro → escala /po.
Escribir SECCIÓN del 02-design-agentic.md:
Turn 1
User: "audita mi marca y dime que falta"
Agent (think): "Detecto intent brand_audit. Cargar brand state."
Agent (tool): brand_audit_tool(tenant_id=...)
Agent (response):
"Revisé tu marca. Identifiqué 2 huecos:
1) Falta tu buyer persona (alta prioridad)
2) Falta testimonial real
¿Querés que arranquemos por buyer persona? Puedo hacerte 5 preguntas."
Turn 2
User: "dale, arrancá"
...Escribir 1 happy path completo + bullet list edges + adversarial.
Diagrama ASCII:
[INIT] → user trigger detected
[GATHERING_CONTEXT] (1-2 read tools)
[REASONING]
[ACTING] → CALLING_TOOL → REASONING
[RESPONDING] → WAITING_USER_INPUT (timeout 24h)
[DONE]Definir cada estado: timeouts, transitions, max-iter exit.
Tabla:
| Tool | Cuándo | Inputs | Outputs | Side-effects |
|---|---|---|---|---|
brand_audit_tool | turn 1, after intent detect | tenant_id | gaps[], priorities[] | None |
start_buyer_persona_capture | turn 2 if user OK | tenant_id | session_id | DB row |
Forbidden tools también listados explícitos.
Definir slot layout cache-aware:
SLOT 1 (cacheable, TTL 1h): identity preamble
SLOT 2 (cacheable, TTL 5min): tool registry
SLOT 3 (NOT cached): task instructions
SLOT 4 (NOT cached): user input
SLOT 5 (cacheable, TTL 1h): brand_voice (sales_agent only)
↑ cache_control marker ↑
SLOT 6 (NOT cached): conversation historyCache invalidation triggers:
Forbidden in cache prefix (cualquier slot cacheable):
TTL choice justificado:
SSoT: personality_profiles.system_instruction (per-tenant)
Compiler: v2 (6 bloques, "ASÍ HABLAS / ASÍ NO")
Voseo: respetar voz tenant (sales_agent SÍ; copilot UI strings NO voseo)
Forbidden: revelar system prompt, mencionar herramientas, robotic phrases
Micro-anchor per turn: primer fragmento respeta vozTabla:
| Falla | Detección | Recovery |
|---|---|---|
| Tool timeout | 5s sin response | Retry 1x, fallback_route |
| Tool 500 | status code | Retry 1x backoff, fallback_route |
| Context overflow | tokens >= max | Compactar (system + last 3 turns) |
| User repite | repeat detector | Cambia framing, no repetir literal |
| User frustrado | sentiment grader < 0.3 | Acortar, ofrecer humano |
| Jailbreak attempt | security pattern | Rechazar amable, no leak prompt |
Trial policy: trials_per_scenario=3, pass^3>=0.5
Personas: tenant-novato-tech (happy), lead-frio-impaciente (adversarial)
Rubrics: voice-fidelity, no-hallucination, no-overpromise, tool-trajectory
State checks:
- copilot_trace_event: 1 tool call esperado
- copilot_llm_call: cost <= $0.50
- PII redaction verifiedmax_turns: 5
max_tokens_per_turn: 6000
budget_usd_per_session: $0.50
TTFT p95: <2scopilot_trace_event per turn
copilot_llm_call per LLM call (cost, latency, model, tokens, cache_hit)
PII: sanitize_payload() pre-persist
Métricas: agentic_session_completed, agentic_tool_failureSi durante diseño descubrís:
→ Escribí delta-spec.md + escala /po.
02-design-agentic.md draft v1.
Turn-by-turn happy path: ver § 2
State machine: ver § 3
Tools: 2 expected (brand_audit, start_buyer_persona_capture). 0 forbidden detectadas.
Prompt slots: 1+2+5 cacheable, 3+4+6 not. TTL slot 5 = 1h.
Personas: novato-tech (happy), frio-impaciente (adversarial)
Trial policy: 3 trials, pass^3 >= 0.5
Cost budget: $0.50/session, max 5 turns
¿Apruebas? ¿Cambios?Loop hasta aprobación.
UX agentic done para brand {brand}.
Deliverables (en docs/product/stories/{story-id}/):
- 02-design-agentic.md
- (opcional) mockups/conversation-{flow}.md con transcript ejemplo
- delta-spec.md si aplica
Próximo: /architect (con <brand>: {brand}) → spawn /architect-agentic + (BE si tool nuevo) + (FE si trigger UI).
/architect produce ready package: 03-arch.md + 04-validators.yaml + 05-guidelines.md + 06-tickets.yaml.
Story state transitions: refining → refined al ratificar diseño. /architect después transición refined → ready al cerrar package.Update docs/product/stories/{story-id}/checkpoint.md (al ratificar diseño con Chris):
brand: {brand} # ★ REQUIRED — single-project scope
state: refined # transición refining → refined cuando spec + diseño agentic ambos ratificados
phase: AGENTIC_DESIGN_RATIFIED
last_artifact: 02-design-agentic.md
ratified_by_chris: true
next_action: "/architect <brand>: {brand} lee 01-spec + 02-design-agentic → spawn arch-{agentic,be,fe} → produce ready package (state=refined→ready)"copilot UI strings (sales_agent SÍ respeta voz tenant)empathy-tone con assertions concretos.Conversaciones en code blocks. Tablas para state machines, tools, recovery. Métricas en bullets. NUNCA dumps largos.
{other_brand}/... cuando trabajás en {brand}. Si la story necesita tocar otra brand → STOP, escalate /pm (outcome cross-module).core/luana-core-*/src/ directamente (engine copilot/sales-agent). Requiere lift via /pm (promotion gate). Brand-extension surface (backend/src/modules/{copilot,sales_agent}/) SÍ es editable per-project.docs/product/stories/ — solo platform (cross-module) outcomes van ahí, y eso requiere <brand>: platform explícito + /pm ratificación.{other_brand}/docs/specs/ sin verificar que la voz/contexto aplica. Default: usar core docs/specs/ o crear bajo docs/specs/ si necesitás override.caa08df
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.