@arcadialdev/arcality 2.4.30 → 2.4.32

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.
Files changed (81) hide show
  1. package/.agent/skills/form-expert.md +99 -0
  2. package/.agent/skills/investigation-protocol.md +61 -0
  3. package/.agent/skills/modal-master.md +41 -0
  4. package/.agent/skills/native-control-expert.md +82 -0
  5. package/.agents/skills/e2e-testing-expert/SKILL.md +28 -0
  6. package/.agents/skills/frontend-design/LICENSE.txt +177 -0
  7. package/.agents/skills/frontend-design/SKILL.md +42 -0
  8. package/.agents/skills/nodejs-backend-patterns/SKILL.md +639 -0
  9. package/.agents/skills/nodejs-backend-patterns/references/advanced-patterns.md +430 -0
  10. package/.agents/skills/playwright-best-practices/LICENSE.md +7 -0
  11. package/.agents/skills/playwright-best-practices/README.md +147 -0
  12. package/.agents/skills/playwright-best-practices/SKILL.md +303 -0
  13. package/.agents/skills/playwright-best-practices/advanced/authentication-flows.md +360 -0
  14. package/.agents/skills/playwright-best-practices/advanced/authentication.md +871 -0
  15. package/.agents/skills/playwright-best-practices/advanced/clock-mocking.md +364 -0
  16. package/.agents/skills/playwright-best-practices/advanced/mobile-testing.md +409 -0
  17. package/.agents/skills/playwright-best-practices/advanced/multi-context.md +288 -0
  18. package/.agents/skills/playwright-best-practices/advanced/multi-user.md +393 -0
  19. package/.agents/skills/playwright-best-practices/advanced/network-advanced.md +452 -0
  20. package/.agents/skills/playwright-best-practices/advanced/third-party.md +464 -0
  21. package/.agents/skills/playwright-best-practices/architecture/pom-vs-fixtures.md +363 -0
  22. package/.agents/skills/playwright-best-practices/architecture/test-architecture.md +369 -0
  23. package/.agents/skills/playwright-best-practices/architecture/when-to-mock.md +383 -0
  24. package/.agents/skills/playwright-best-practices/browser-apis/browser-apis.md +391 -0
  25. package/.agents/skills/playwright-best-practices/browser-apis/iframes.md +403 -0
  26. package/.agents/skills/playwright-best-practices/browser-apis/service-workers.md +504 -0
  27. package/.agents/skills/playwright-best-practices/browser-apis/websockets.md +403 -0
  28. package/.agents/skills/playwright-best-practices/core/annotations.md +424 -0
  29. package/.agents/skills/playwright-best-practices/core/assertions-waiting.md +361 -0
  30. package/.agents/skills/playwright-best-practices/core/configuration.md +452 -0
  31. package/.agents/skills/playwright-best-practices/core/fixtures-hooks.md +417 -0
  32. package/.agents/skills/playwright-best-practices/core/global-setup.md +434 -0
  33. package/.agents/skills/playwright-best-practices/core/locators.md +242 -0
  34. package/.agents/skills/playwright-best-practices/core/page-object-model.md +315 -0
  35. package/.agents/skills/playwright-best-practices/core/projects-dependencies.md +453 -0
  36. package/.agents/skills/playwright-best-practices/core/test-data.md +492 -0
  37. package/.agents/skills/playwright-best-practices/core/test-suite-structure.md +361 -0
  38. package/.agents/skills/playwright-best-practices/core/test-tags.md +298 -0
  39. package/.agents/skills/playwright-best-practices/debugging/console-errors.md +420 -0
  40. package/.agents/skills/playwright-best-practices/debugging/debugging.md +504 -0
  41. package/.agents/skills/playwright-best-practices/debugging/error-testing.md +360 -0
  42. package/.agents/skills/playwright-best-practices/debugging/flaky-tests.md +496 -0
  43. package/.agents/skills/playwright-best-practices/frameworks/angular.md +530 -0
  44. package/.agents/skills/playwright-best-practices/frameworks/nextjs.md +469 -0
  45. package/.agents/skills/playwright-best-practices/frameworks/react.md +531 -0
  46. package/.agents/skills/playwright-best-practices/frameworks/vue.md +574 -0
  47. package/.agents/skills/playwright-best-practices/infrastructure-ci-cd/ci-cd.md +468 -0
  48. package/.agents/skills/playwright-best-practices/infrastructure-ci-cd/docker.md +283 -0
  49. package/.agents/skills/playwright-best-practices/infrastructure-ci-cd/github-actions.md +546 -0
  50. package/.agents/skills/playwright-best-practices/infrastructure-ci-cd/gitlab.md +397 -0
  51. package/.agents/skills/playwright-best-practices/infrastructure-ci-cd/other-providers.md +521 -0
  52. package/.agents/skills/playwright-best-practices/infrastructure-ci-cd/parallel-sharding.md +371 -0
  53. package/.agents/skills/playwright-best-practices/infrastructure-ci-cd/performance.md +453 -0
  54. package/.agents/skills/playwright-best-practices/infrastructure-ci-cd/reporting.md +424 -0
  55. package/.agents/skills/playwright-best-practices/infrastructure-ci-cd/test-coverage.md +497 -0
  56. package/.agents/skills/playwright-best-practices/testing-patterns/accessibility.md +359 -0
  57. package/.agents/skills/playwright-best-practices/testing-patterns/api-testing.md +719 -0
  58. package/.agents/skills/playwright-best-practices/testing-patterns/browser-extensions.md +506 -0
  59. package/.agents/skills/playwright-best-practices/testing-patterns/canvas-webgl.md +493 -0
  60. package/.agents/skills/playwright-best-practices/testing-patterns/component-testing.md +500 -0
  61. package/.agents/skills/playwright-best-practices/testing-patterns/drag-drop.md +576 -0
  62. package/.agents/skills/playwright-best-practices/testing-patterns/electron.md +509 -0
  63. package/.agents/skills/playwright-best-practices/testing-patterns/file-operations.md +377 -0
  64. package/.agents/skills/playwright-best-practices/testing-patterns/file-upload-download.md +562 -0
  65. package/.agents/skills/playwright-best-practices/testing-patterns/forms-validation.md +561 -0
  66. package/.agents/skills/playwright-best-practices/testing-patterns/graphql-testing.md +331 -0
  67. package/.agents/skills/playwright-best-practices/testing-patterns/i18n.md +508 -0
  68. package/.agents/skills/playwright-best-practices/testing-patterns/performance-testing.md +476 -0
  69. package/.agents/skills/playwright-best-practices/testing-patterns/security-testing.md +430 -0
  70. package/.agents/skills/playwright-best-practices/testing-patterns/visual-regression.md +634 -0
  71. package/.agents/skills/security-qa/SKILL.md +254 -0
  72. package/package.json +3 -1
  73. package/scripts/gen-and-run.mjs +33 -5
  74. package/scripts/init.mjs +2 -2
  75. package/scripts/setup.mjs +2 -2
  76. package/src/arcalityClient.mjs +4 -3
  77. package/tests/_helpers/agentic-runner.bundle.spec.js +161 -50
  78. package/scripts/cleanup-qmsdev.mjs +0 -63
  79. package/scripts/discover-view.mjs +0 -52
  80. package/scripts/extract-view.mjs +0 -64
  81. package/scripts/migrate-to-central-out.mjs +0 -157
@@ -0,0 +1,99 @@
1
+ ---
2
+ name: form-expert
3
+ description: Metodología experta para explorar, identificar y llenar formularios complejos en aplicaciones web.
4
+ ---
5
+
6
+ # Form Expert Skill
7
+
8
+ Esta habilidad define el protocolo que el agente DEBE seguir cuando la misión involucra llenar, crear o editar registros a través de formularios.
9
+
10
+ ## Principio Fundamental
11
+ **NUNCA interactúes con un campo que no hayas inspeccionado primero.** Si un componente tiene un nombre genérico, un tag inferred como `[INFERRED]`, o simplemente no estás seguro de qué es, usa `inspect_element_details` ANTES de hacer click o fill.
12
+
13
+ ## Protocolo de Formularios (4 fases obligatorias)
14
+
15
+ ### Fase 1: RECONOCIMIENTO (Scan)
16
+ Antes de llenar cualquier campo, dedica tu primer turno en el formulario a **analizar todos los componentes visibles**:
17
+
18
+ 1. **Lee la lista completa de CURRENT COMPONENTS** — identifica:
19
+ - Campos de tipo FIELD (inputs, textareas, selects)
20
+ - Campos con label visible (prioritarios)
21
+ - Campos sin label o con nombre genérico (requieren inspección)
22
+ - Botones de acción (GUARDAR, CANCELAR, etc.)
23
+ - Tabs o pestañas si el formulario tiene secciones
24
+
25
+ 2. **Clasifica los campos** en:
26
+ - ✅ **Confiables**: Tienen un nombre claro como `[input] Título del documento`
27
+ - ⚠️ **Sospechosos**: Tienen nombre genérico como `[input] Editar` o `[INFERRED] xxx`
28
+ - ❌ **Desconocidos**: Solo tienen tag genérico como `[input]`
29
+
30
+ 3. **Para campos sospechosos o desconocidos**: Usa `inspect_element_details` para obtener:
31
+ - El placeholder text
32
+ - El aria-label
33
+ - El atributo name o id
34
+ - Si está disabled o readonly
35
+
36
+ ### Fase 2: PLANIFICACIÓN (Plan)
37
+ Con la información del reconocimiento, planifica la secuencia de acciones:
38
+
39
+ 1. **Prioriza los campos obligatorios** — los que tienen asterisco (*), clase "required", o están marcados en rojo.
40
+ 2. **Genera datos únicos** — Si la misión dice "genérico" o "aleatorio", genera datos que incluyan un timestamp o ID único para evitar duplicados. Ejemplo: `TEST-${timestamp}` o `Prueba QA Feb24`.
41
+ 3. **Planifica el orden**: Llena los campos de arriba a abajo, izquierda a derecha, siguiendo el orden del DOM.
42
+
43
+ ### Fase 3: EJECUCIÓN (Act)
44
+ Ejecuta las acciones planificadas:
45
+
46
+ 1. **Llena múltiples campos por turno** — No pierdas un turno por campo. Agrupa 3-5 fills en una sola llamada a `perform_ui_actions`.
47
+ 2. **Para cada campo fill**: click + fill (en ese orden). El click asegura que el campo tiene focus.
48
+ 3. **Para dropdowns/selects**: Click para abrir → espera el siguiente turno → selecciona la opción.
49
+ 4. **Si un fill falla**: NO reintentes inmediatamente. Usa `inspect_element_details` para ver si el campo es un select, un datepicker, o tiene un overlay encima.
50
+
51
+ ### Fase 4: VERIFICACIÓN (Verify)
52
+ Antes de hacer GUARDAR:
53
+
54
+ 1. **Usa `validate_element_state`** en el botón de GUARDAR para confirmar que está enabled.
55
+ 2. **Revisa visualmente** si hay campos en rojo o mensajes de error.
56
+ 3. **Solo entonces** haz click en GUARDAR.
57
+ 4. **Después de GUARDAR**: Espera la respuesta de la UI. Si aparece un toast de éxito o regresas a la lista, la misión fue exitosa.
58
+
59
+ ## Manejo de Errores en Formularios
60
+
61
+ ### Si un campo falla con Timeout:
62
+ ```
63
+ 1. NO reintentes el mismo click/fill inmediatamente
64
+ 2. Usa inspect_element_details en ese IDX
65
+ 3. Analiza si:
66
+ - El elemento está cubierto por un overlay/modal
67
+ - El elemento es readonly/disabled
68
+ - El IDX cambió (la página se re-renderizó)
69
+ 4. Si el elemento no sirve, busca un campo alternativo con nombre similar
70
+ ```
71
+
72
+ ### Si aparece un error de "duplicado" o "ya existe":
73
+ ```
74
+ 1. Identifica qué campo causó el error (claves, códigos, nombres)
75
+ 2. Cambia el valor a algo único (agrega sufijo numérico o timestamp)
76
+ 3. Reintenta GUARDAR
77
+ ```
78
+
79
+ ### Si el formulario tiene tabs o secciones:
80
+ ```
81
+ 1. Llena los campos de la sección actual PRIMERO.
82
+ 2. Identifica el elemento de la pestaña: Busca el texto de la pestaña (ej: "CAMPOS DE LA FORMA") en componentes tipo ACTION.
83
+ 3. PRECISIÓN: Evita hacer click en contenedores grandes que agrupan varias pestañas. Prefiere el elemento más pequeño (span o label) que contenga el texto exacto.
84
+ 4. Haz click en la pestaña. Si un click simple no funciona tras 2 intentos, usa 'double_click'.
85
+ 5. Espera el siguiente turno para ver los nuevos campos.
86
+ ```
87
+
88
+ ## Uso de Double Click
89
+ - Úsalo SOLO cuando:
90
+ - La misión lo pida explícitamente (ej: "haz doble clic en la celda").
91
+ - Un elemento (como una pestaña o un icono) no responda tras dos intentos de click simple.
92
+ - Quieras activar modos de edición en tablas o componentes complejos.
93
+
94
+ ## Anti-patrones (NUNCA hagas esto)
95
+ - ❌ Hacer click en un campo `[INFERRED]` sin inspeccionarlo primero
96
+ - ❌ Intentar llenar TODO el formulario en el primer turno sin saber qué campos hay
97
+ - ❌ Hacer click en el botón GUARDAR sin haber verificado que los campos están llenos
98
+ - ❌ Reintentar la misma acción fallida sin investigar la causa
99
+ - ❌ Asumir que un componente con nombre largo (>50 chars) es un campo — probablemente es un contenedor
@@ -0,0 +1,61 @@
1
+ ---
2
+ name: investigation-protocol
3
+ description: Protocolo obligatorio de investigación cuando una acción falla o un elemento es ambiguo.
4
+ ---
5
+
6
+ # Investigation Protocol Skill
7
+
8
+ ## Regla de Oro
9
+ **NUNCA reintentes una acción fallida sin investigar primero.** Si algo falla, SIEMPRE ejecuta el protocolo de investigación antes de intentar de nuevo.
10
+
11
+ ## Protocolo de Investigación (Obligatorio tras cualquier fallo)
12
+
13
+ ### Paso 1: Inspección del elemento
14
+ ```
15
+ Usa: inspect_element_details (idx del elemento que falló)
16
+ Objetivo: Determinar POR QUÉ falló
17
+ ```
18
+
19
+ Revisa en el resultado:
20
+ - ¿El elemento es `disabled` o `readonly`?
21
+ - ¿El elemento está cubierto por otro (`pointer-events: none`, overlay)?
22
+ - ¿El elemento es un `<select>` que requiere interacción diferente a fill?
23
+ - ¿El elemento está en un iframe diferente (`frameIdx`)?
24
+
25
+ ### Paso 2: Auditoría de consola
26
+ ```
27
+ Usa: capture_console_errors
28
+ Objetivo: Buscar errores JavaScript silenciosos
29
+ ```
30
+
31
+ Si la UI no responde o está congelada, puede haber un error JS no visible. Revisa:
32
+ - Errores de red (fetch failed, 404, 500)
33
+ - Errores de JS (TypeError, undefined)
34
+ - Warnings de frameworks (React, Angular)
35
+
36
+ ### Paso 3: Captura de evidencia
37
+ ```
38
+ Usa: create_test_evidence (type: annotated_screenshot)
39
+ Objetivo: Documentar el estado actual para debugging
40
+ ```
41
+
42
+ Si identificas un bug real de la aplicación (no un error tuyo), documéntalo con evidencia anotada.
43
+
44
+ ### Paso 4: Decisión
45
+ Después de investigar, toma UNA de estas decisiones:
46
+ 1. **Reintentar con variación**: Si descubriste que el campo es un select, usa click en vez de fill.
47
+ 2. **Buscar alternativa**: Si el elemento está cubierto, busca otro camino al mismo objetivo.
48
+ 3. **Reportar bug**: Si es un bug de la aplicación, usa `report_application_bug`.
49
+ 4. **Reportar incapacidad**: Si no puedes avanzar, usa `report_inability_to_proceed`.
50
+
51
+ ## Cuándo usar cada herramienta de investigación
52
+
53
+ | Situación | Herramienta | Obligatoria |
54
+ |-----------|------------|-------------|
55
+ | Acción falló con Timeout | `inspect_element_details` | ✅ SÍ |
56
+ | Elemento con nombre [INFERRED] | `inspect_element_details` | ✅ SÍ |
57
+ | UI no responde / congelada | `capture_console_errors` | ✅ SÍ |
58
+ | Antes de hacer GUARDAR/SAVE | `validate_element_state` | ✅ SÍ |
59
+ | Después de GUARDAR exitoso | `extract_table_data` | Recomendada |
60
+ | Bug encontrado | `create_test_evidence` | ✅ SÍ |
61
+ | Fin de misión exitosa | `create_test_evidence` | Recomendada |
@@ -0,0 +1,41 @@
1
+ ---
2
+ name: modal-master
3
+ description: Gestión experta de ventanas modales, diálogos y popups en pruebas de QA.
4
+ ---
5
+
6
+ # Modal Master Skill
7
+
8
+ Esta habilidad permite al agente detectar, navegar y cerrar ventanas modales de manera eficiente, evitando que el flujo del test se bloquee por elementos superpuestos.
9
+
10
+ ## Cuándo usar esta habilidad
11
+ - Cuando el agente realiza una acción y aparece un diálogo de confirmación (ej: "¿Desea guardar los cambios?").
12
+ - Cuando un popup de error o notificación bloquea el acceso al resto de la página.
13
+ - Cuando la misión requiere interactuar específicamente con elementos dentro de un modal.
14
+
15
+ ## Instrucciones para el Agente
16
+
17
+ ### 1. Detección de Modales
18
+ Antes de intentar interactuar con un elemento del fondo, verifica si hay un modal activo buscando:
19
+ - Elementos con `role="dialog"` o `role="alertdialog"`.
20
+ - Atributos `aria-modal="true"`.
21
+ - Overlays oscuros que cubren la pantalla (ej: clases tipo `backdrop`, `overlay`, `modal-open`).
22
+ - Títulos destacados que no estaban antes de la acción.
23
+
24
+ ### 2. Prioridad de Interacción
25
+ Si un modal está abierto:
26
+ - **Prioridad 1**: Si el modal es informativo (Warning/Error), léelo y repórtalo en tu pensamiento antes de cerrarlo.
27
+ - **Prioridad 2**: Si el modal es de confirmación para la acción que acabas de realizar, haz clic en el botón afirmativo (ej: "Aceptar", "Sí", "Confirmar").
28
+ - **Prioridad 3**: Si el modal es intrusivo y no permite seguir, busca el botón de cierre (usualmente una 'X', un botón "Cerrar" o "Cancelar").
29
+
30
+ ### 3. Estrategias de Cierre
31
+ Si no encuentras un botón de cierre claro:
32
+ - Busca botones con clases `close`, `btn-close` o que tengan un ícono dentro.
33
+ - Usa `send_keyboard_event` con key `Escape` para intentar cerrar el modal/popup/dropdown.
34
+ - Verifica si el modal desaparece al hacer clic en el backdrop (el área fuera del cuadro blanco).
35
+
36
+ ### 4. Flujo de Trabajo (Ejemplo)
37
+ 1. **Acción**: Clic en "Eliminar".
38
+ 2. **Scan**: Detecto un modal con el texto "¿Está seguro?".
39
+ 3. **Validación**: Uso `validate_element_state` para verificar que el botón "Eliminar permanentemente" es visible dentro del modal.
40
+ 4. **Ejecución**: Clic en el botón del modal.
41
+ 5. **Verificación**: Espero a que el modal desaparezca antes de realizar la siguiente acción de la misión.
@@ -0,0 +1,82 @@
1
+ ---
2
+ name: native-control-expert
3
+ description: Protocolo experto para interactuar con controles nativos del navegador (time pickers, date pickers, selects, etc.)
4
+ ---
5
+
6
+ # Native Control Expert Skill
7
+
8
+ Esta habilidad define el protocolo que el agente DEBE seguir cuando la misión involucra interactuar con controles nativos del navegador que **NO responden bien** a la acción estándar `fill`.
9
+
10
+ ## Controles Nativos que REQUIEREN esta skill
11
+
12
+ | Control | Ejemplo | Acción preferida |
13
+ |---------|---------|-----------------|
14
+ | `<input type="time">` | Campo de hora `HH:mm` | `interact_native_control` con `control_type: "time"` |
15
+ | `<input type="date">` | Campo de fecha `YYYY-MM-DD` | `interact_native_control` con `control_type: "date"` |
16
+ | `<input type="datetime-local">` | Fecha y hora combinados | `interact_native_control` con `control_type: "datetime"` |
17
+ | `<input type="color">` | Selector de color | `interact_native_control` con `control_type: "color"` |
18
+ | `<input type="range">` | Slider numérico | `interact_native_control` con `control_type: "range"` |
19
+ | `<select>` nativo | Dropdown estándar HTML | `interact_native_control` con `control_type: "select"` |
20
+ | Combobox/Autocomplete | Campos con `role="combobox"` | `click` + `fill` letra + `send_keyboard_event` ArrowDown + Enter |
21
+ | Time picker con diálogo | Campos que abren un popup al hacer click | `send_keyboard_event` con Arrow keys |
22
+
23
+ ## Protocolo de Interacción con Time Pickers
24
+
25
+ ### ❌ LO QUE NUNCA DEBES HACER:
26
+ - Intentar `fill` repetidamente si falla la primera vez
27
+ - Hacer click una y otra vez sin cambiar de estrategia (esto causa loop detection)
28
+ - Asumir que un time picker funciona como un input de texto normal
29
+
30
+ ### ✅ LO QUE SÍ DEBES HACER:
31
+
32
+ **Estrategia 1: interact_native_control (PREFERIDA)**
33
+ ```
34
+ 1. Usa inspect_element_details para confirmar que es type="time"
35
+ 2. Usa interact_native_control con control_type: "time", value: "13:05"
36
+ 3. Verifica el resultado
37
+ ```
38
+
39
+ **Estrategia 2: Keyboard Navigation (FALLBACK)**
40
+ ```
41
+ 1. Haz click en el campo de hora
42
+ 2. Usa send_keyboard_event con key: "Control+a" para seleccionar todo
43
+ 3. Usa send_keyboard_event para escribir los dígitos del tiempo
44
+ 4. Ejemplo: Para "13:05", envía las teclas: "1", "3", "0", "5"
45
+ 5. Usa send_keyboard_event con key: "Tab" para navegar al siguiente campo
46
+ ```
47
+
48
+ **Estrategia 3: Arrow Keys (ULTIMO RECURSO)**
49
+ ```
50
+ 1. Haz click en el segmento de horas del campo
51
+ 2. Usa send_keyboard_event con key: "ArrowUp" o "ArrowDown" para ajustar la hora
52
+ 3. Usa send_keyboard_event con key: "Tab" para mover al segmento de minutos
53
+ 4. Repite con ArrowUp/ArrowDown para los minutos
54
+ ```
55
+
56
+ ## Protocolo de Interacción con Date Pickers
57
+
58
+ ### ✅ Estrategia preferida:
59
+ ```
60
+ 1. Confirma con inspect_element_details que es type="date"
61
+ 2. Usa interact_native_control con control_type: "date", value: "2026-03-25"
62
+ 3. IMPORTANTE: El formato SIEMPRE es YYYY-MM-DD
63
+ ```
64
+
65
+ ## Detección: ¿Cuándo usar esta skill?
66
+
67
+ Debes activar esta skill cuando:
68
+ 1. Ves un componente FIELD con nombre que incluye "HH:mm" o "hora" o "time"
69
+ 2. Un campo tiene `role="combobox"` y `aria-expanded`
70
+ 3. Un `fill()` falla en un campo de fecha/hora con Timeout o sin efecto
71
+ 4. El inspector muestra `type="time"` o `type="date"` en los atributos
72
+
73
+ ## Keyboard Shortcuts Útiles
74
+
75
+ | Tecla | Efecto en controles nativos |
76
+ |-------|-----------------------------|
77
+ | `Tab` | Mover al siguiente segmento (horas → minutos → AM/PM) |
78
+ | `ArrowUp` | Incrementar valor del segmento actual |
79
+ | `ArrowDown` | Decrementar valor del segmento actual |
80
+ | `Escape` | Cerrar dropdown/calendar que se abrió |
81
+ | `Enter` | Confirmar selección en calendarios |
82
+ | `Control+a` | Seleccionar todo el contenido del campo |
@@ -0,0 +1,28 @@
1
+ ---
2
+ name: "e2e-testing-expert"
3
+ description: "Elite protocol for End-to-End browser testing and forensic debugging."
4
+ ---
5
+
6
+ # E2E Testing Expert Protocol
7
+
8
+ You are an Elite QA E2E Testing Architect. Whenever you perform E2E automation actions, you MUST follow these non-negotiable patterns:
9
+
10
+ ## 1. Forensic Debugging Mindset
11
+ When a test step fails:
12
+ - DO NOT blindly retry the same action.
13
+ - Immediately capture the state (`capture_console_errors` or `inspect_element_details`).
14
+ - Assume flakiness is due to state mismatch (e.g., waiting for an animation, HTTP response pending, or a Toast overlay blocking clicks).
15
+
16
+ ## 2. Advanced Assertion Safety
17
+ Rely heavily on "Web-First" assertions rather than hardcoded timeouts:
18
+ - Only act on elements once their state is truly `toBeVisible()` and `toBeEnabled()`.
19
+ - If an element is intercepted by another (e.g., a modal overlay), target the overlay to close it before interacting.
20
+
21
+ ## 3. High-Quality Locators
22
+ Prefer accessibility-first locators:
23
+ - 1st Priority: Role-based (e.g., Button, Checkbox, Link).
24
+ - 2nd Priority: Text content or Placeholders.
25
+ - ALWAYS avoid brittle CSS indexes (`nth-child(5)`) or deeply nested container paths unless absolutely necessary.
26
+
27
+ ## 4. Human-Readable Error Reporting
28
+ If you are completely stuck after 3 attempts, formulate your failure as a "Business Validation Error" or a clear "Technical UI Glitch" (like an element not attached to DOM). Explain to the user exactly what DOM element failed to respond.
@@ -0,0 +1,177 @@
1
+
2
+ Apache License
3
+ Version 2.0, January 2004
4
+ http://www.apache.org/licenses/
5
+
6
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7
+
8
+ 1. Definitions.
9
+
10
+ "License" shall mean the terms and conditions for use, reproduction,
11
+ and distribution as defined by Sections 1 through 9 of this document.
12
+
13
+ "Licensor" shall mean the copyright owner or entity authorized by
14
+ the copyright owner that is granting the License.
15
+
16
+ "Legal Entity" shall mean the union of the acting entity and all
17
+ other entities that control, are controlled by, or are under common
18
+ control with that entity. For the purposes of this definition,
19
+ "control" means (i) the power, direct or indirect, to cause the
20
+ direction or management of such entity, whether by contract or
21
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
22
+ outstanding shares, or (iii) beneficial ownership of such entity.
23
+
24
+ "You" (or "Your") shall mean an individual or Legal Entity
25
+ exercising permissions granted by this License.
26
+
27
+ "Source" form shall mean the preferred form for making modifications,
28
+ including but not limited to software source code, documentation
29
+ source, and configuration files.
30
+
31
+ "Object" form shall mean any form resulting from mechanical
32
+ transformation or translation of a Source form, including but
33
+ not limited to compiled object code, generated documentation,
34
+ and conversions to other media types.
35
+
36
+ "Work" shall mean the work of authorship, whether in Source or
37
+ Object form, made available under the License, as indicated by a
38
+ copyright notice that is included in or attached to the work
39
+ (an example is provided in the Appendix below).
40
+
41
+ "Derivative Works" shall mean any work, whether in Source or Object
42
+ form, that is based on (or derived from) the Work and for which the
43
+ editorial revisions, annotations, elaborations, or other modifications
44
+ represent, as a whole, an original work of authorship. For the purposes
45
+ of this License, Derivative Works shall not include works that remain
46
+ separable from, or merely link (or bind by name) to the interfaces of,
47
+ the Work and Derivative Works thereof.
48
+
49
+ "Contribution" shall mean any work of authorship, including
50
+ the original version of the Work and any modifications or additions
51
+ to that Work or Derivative Works thereof, that is intentionally
52
+ submitted to Licensor for inclusion in the Work by the copyright owner
53
+ or by an individual or Legal Entity authorized to submit on behalf of
54
+ the copyright owner. For the purposes of this definition, "submitted"
55
+ means any form of electronic, verbal, or written communication sent
56
+ to the Licensor or its representatives, including but not limited to
57
+ communication on electronic mailing lists, source code control systems,
58
+ and issue tracking systems that are managed by, or on behalf of, the
59
+ Licensor for the purpose of discussing and improving the Work, but
60
+ excluding communication that is conspicuously marked or otherwise
61
+ designated in writing by the copyright owner as "Not a Contribution."
62
+
63
+ "Contributor" shall mean Licensor and any individual or Legal Entity
64
+ on behalf of whom a Contribution has been received by Licensor and
65
+ subsequently incorporated within the Work.
66
+
67
+ 2. Grant of Copyright License. Subject to the terms and conditions of
68
+ this License, each Contributor hereby grants to You a perpetual,
69
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70
+ copyright license to reproduce, prepare Derivative Works of,
71
+ publicly display, publicly perform, sublicense, and distribute the
72
+ Work and such Derivative Works in Source or Object form.
73
+
74
+ 3. Grant of Patent License. Subject to the terms and conditions of
75
+ this License, each Contributor hereby grants to You a perpetual,
76
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77
+ (except as stated in this section) patent license to make, have made,
78
+ use, offer to sell, sell, import, and otherwise transfer the Work,
79
+ where such license applies only to those patent claims licensable
80
+ by such Contributor that are necessarily infringed by their
81
+ Contribution(s) alone or by combination of their Contribution(s)
82
+ with the Work to which such Contribution(s) was submitted. If You
83
+ institute patent litigation against any entity (including a
84
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
85
+ or a Contribution incorporated within the Work constitutes direct
86
+ or contributory patent infringement, then any patent licenses
87
+ granted to You under this License for that Work shall terminate
88
+ as of the date such litigation is filed.
89
+
90
+ 4. Redistribution. You may reproduce and distribute copies of the
91
+ Work or Derivative Works thereof in any medium, with or without
92
+ modifications, and in Source or Object form, provided that You
93
+ meet the following conditions:
94
+
95
+ (a) You must give any other recipients of the Work or
96
+ Derivative Works a copy of this License; and
97
+
98
+ (b) You must cause any modified files to carry prominent notices
99
+ stating that You changed the files; and
100
+
101
+ (c) You must retain, in the Source form of any Derivative Works
102
+ that You distribute, all copyright, patent, trademark, and
103
+ attribution notices from the Source form of the Work,
104
+ excluding those notices that do not pertain to any part of
105
+ the Derivative Works; and
106
+
107
+ (d) If the Work includes a "NOTICE" text file as part of its
108
+ distribution, then any Derivative Works that You distribute must
109
+ include a readable copy of the attribution notices contained
110
+ within such NOTICE file, excluding those notices that do not
111
+ pertain to any part of the Derivative Works, in at least one
112
+ of the following places: within a NOTICE text file distributed
113
+ as part of the Derivative Works; within the Source form or
114
+ documentation, if provided along with the Derivative Works; or,
115
+ within a display generated by the Derivative Works, if and
116
+ wherever such third-party notices normally appear. The contents
117
+ of the NOTICE file are for informational purposes only and
118
+ do not modify the License. You may add Your own attribution
119
+ notices within Derivative Works that You distribute, alongside
120
+ or as an addendum to the NOTICE text from the Work, provided
121
+ that such additional attribution notices cannot be construed
122
+ as modifying the License.
123
+
124
+ You may add Your own copyright statement to Your modifications and
125
+ may provide additional or different license terms and conditions
126
+ for use, reproduction, or distribution of Your modifications, or
127
+ for any such Derivative Works as a whole, provided Your use,
128
+ reproduction, and distribution of the Work otherwise complies with
129
+ the conditions stated in this License.
130
+
131
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
132
+ any Contribution intentionally submitted for inclusion in the Work
133
+ by You to the Licensor shall be under the terms and conditions of
134
+ this License, without any additional terms or conditions.
135
+ Notwithstanding the above, nothing herein shall supersede or modify
136
+ the terms of any separate license agreement you may have executed
137
+ with Licensor regarding such Contributions.
138
+
139
+ 6. Trademarks. This License does not grant permission to use the trade
140
+ names, trademarks, service marks, or product names of the Licensor,
141
+ except as required for reasonable and customary use in describing the
142
+ origin of the Work and reproducing the content of the NOTICE file.
143
+
144
+ 7. Disclaimer of Warranty. Unless required by applicable law or
145
+ agreed to in writing, Licensor provides the Work (and each
146
+ Contributor provides its Contributions) on an "AS IS" BASIS,
147
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148
+ implied, including, without limitation, any warranties or conditions
149
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150
+ PARTICULAR PURPOSE. You are solely responsible for determining the
151
+ appropriateness of using or redistributing the Work and assume any
152
+ risks associated with Your exercise of permissions under this License.
153
+
154
+ 8. Limitation of Liability. In no event and under no legal theory,
155
+ whether in tort (including negligence), contract, or otherwise,
156
+ unless required by applicable law (such as deliberate and grossly
157
+ negligent acts) or agreed to in writing, shall any Contributor be
158
+ liable to You for damages, including any direct, indirect, special,
159
+ incidental, or consequential damages of any character arising as a
160
+ result of this License or out of the use or inability to use the
161
+ Work (including but not limited to damages for loss of goodwill,
162
+ work stoppage, computer failure or malfunction, or any and all
163
+ other commercial damages or losses), even if such Contributor
164
+ has been advised of the possibility of such damages.
165
+
166
+ 9. Accepting Warranty or Additional Liability. While redistributing
167
+ the Work or Derivative Works thereof, You may choose to offer,
168
+ and charge a fee for, acceptance of support, warranty, indemnity,
169
+ or other liability obligations and/or rights consistent with this
170
+ License. However, in accepting such obligations, You may act only
171
+ on Your own behalf and on Your sole responsibility, not on behalf
172
+ of any other Contributor, and only if You agree to indemnify,
173
+ defend, and hold each Contributor harmless for any liability
174
+ incurred by, or claims asserted against, such Contributor by reason
175
+ of your accepting any such warranty or additional liability.
176
+
177
+ END OF TERMS AND CONDITIONS
@@ -0,0 +1,42 @@
1
+ ---
2
+ name: frontend-design
3
+ description: Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, artifacts, posters, or applications (examples include websites, landing pages, dashboards, React components, HTML/CSS layouts, or when styling/beautifying any web UI). Generates creative, polished code and UI design that avoids generic AI aesthetics.
4
+ license: Complete terms in LICENSE.txt
5
+ ---
6
+
7
+ This skill guides creation of distinctive, production-grade frontend interfaces that avoid generic "AI slop" aesthetics. Implement real working code with exceptional attention to aesthetic details and creative choices.
8
+
9
+ The user provides frontend requirements: a component, page, application, or interface to build. They may include context about the purpose, audience, or technical constraints.
10
+
11
+ ## Design Thinking
12
+
13
+ Before coding, understand the context and commit to a BOLD aesthetic direction:
14
+ - **Purpose**: What problem does this interface solve? Who uses it?
15
+ - **Tone**: Pick an extreme: brutally minimal, maximalist chaos, retro-futuristic, organic/natural, luxury/refined, playful/toy-like, editorial/magazine, brutalist/raw, art deco/geometric, soft/pastel, industrial/utilitarian, etc. There are so many flavors to choose from. Use these for inspiration but design one that is true to the aesthetic direction.
16
+ - **Constraints**: Technical requirements (framework, performance, accessibility).
17
+ - **Differentiation**: What makes this UNFORGETTABLE? What's the one thing someone will remember?
18
+
19
+ **CRITICAL**: Choose a clear conceptual direction and execute it with precision. Bold maximalism and refined minimalism both work - the key is intentionality, not intensity.
20
+
21
+ Then implement working code (HTML/CSS/JS, React, Vue, etc.) that is:
22
+ - Production-grade and functional
23
+ - Visually striking and memorable
24
+ - Cohesive with a clear aesthetic point-of-view
25
+ - Meticulously refined in every detail
26
+
27
+ ## Frontend Aesthetics Guidelines
28
+
29
+ Focus on:
30
+ - **Typography**: Choose fonts that are beautiful, unique, and interesting. Avoid generic fonts like Arial and Inter; opt instead for distinctive choices that elevate the frontend's aesthetics; unexpected, characterful font choices. Pair a distinctive display font with a refined body font.
31
+ - **Color & Theme**: Commit to a cohesive aesthetic. Use CSS variables for consistency. Dominant colors with sharp accents outperform timid, evenly-distributed palettes.
32
+ - **Motion**: Use animations for effects and micro-interactions. Prioritize CSS-only solutions for HTML. Use Motion library for React when available. Focus on high-impact moments: one well-orchestrated page load with staggered reveals (animation-delay) creates more delight than scattered micro-interactions. Use scroll-triggering and hover states that surprise.
33
+ - **Spatial Composition**: Unexpected layouts. Asymmetry. Overlap. Diagonal flow. Grid-breaking elements. Generous negative space OR controlled density.
34
+ - **Backgrounds & Visual Details**: Create atmosphere and depth rather than defaulting to solid colors. Add contextual effects and textures that match the overall aesthetic. Apply creative forms like gradient meshes, noise textures, geometric patterns, layered transparencies, dramatic shadows, decorative borders, custom cursors, and grain overlays.
35
+
36
+ NEVER use generic AI-generated aesthetics like overused font families (Inter, Roboto, Arial, system fonts), cliched color schemes (particularly purple gradients on white backgrounds), predictable layouts and component patterns, and cookie-cutter design that lacks context-specific character.
37
+
38
+ Interpret creatively and make unexpected choices that feel genuinely designed for the context. No design should be the same. Vary between light and dark themes, different fonts, different aesthetics. NEVER converge on common choices (Space Grotesk, for example) across generations.
39
+
40
+ **IMPORTANT**: Match implementation complexity to the aesthetic vision. Maximalist designs need elaborate code with extensive animations and effects. Minimalist or refined designs need restraint, precision, and careful attention to spacing, typography, and subtle details. Elegance comes from executing the vision well.
41
+
42
+ Remember: Claude is capable of extraordinary creative work. Don't hold back, show what can truly be created when thinking outside the box and committing fully to a distinctive vision.