evizi-kit 1.0.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.
Files changed (201) hide show
  1. package/README.md +506 -0
  2. package/kits/agent/.agent/skills/claude-code-subagent-creator/SKILL.md +292 -0
  3. package/kits/agent/.agent/skills/claude-code-subagent-creator/references/claude-code-subagent-configuration.md +158 -0
  4. package/kits/agent/.agent/skills/claude-code-subagent-creator/templates/subagent-profile.template.md +26 -0
  5. package/kits/agent/.agent/skills/skill-creator/LICENSE.txt +202 -0
  6. package/kits/agent/.agent/skills/skill-creator/SKILL.md +485 -0
  7. package/kits/agent/.agent/skills/skill-creator/agents/analyzer.md +274 -0
  8. package/kits/agent/.agent/skills/skill-creator/agents/comparator.md +202 -0
  9. package/kits/agent/.agent/skills/skill-creator/agents/grader.md +223 -0
  10. package/kits/agent/.agent/skills/skill-creator/assets/eval_review.html +146 -0
  11. package/kits/agent/.agent/skills/skill-creator/eval-viewer/generate_review.py +471 -0
  12. package/kits/agent/.agent/skills/skill-creator/eval-viewer/viewer.html +1325 -0
  13. package/kits/agent/.agent/skills/skill-creator/references/schemas.md +430 -0
  14. package/kits/agent/.agent/skills/skill-creator/scripts/__init__.py +0 -0
  15. package/kits/agent/.agent/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
  16. package/kits/agent/.agent/skills/skill-creator/scripts/generate_report.py +326 -0
  17. package/kits/agent/.agent/skills/skill-creator/scripts/improve_description.py +247 -0
  18. package/kits/agent/.agent/skills/skill-creator/scripts/package_skill.py +136 -0
  19. package/kits/agent/.agent/skills/skill-creator/scripts/quick_validate.py +103 -0
  20. package/kits/agent/.agent/skills/skill-creator/scripts/run_eval.py +310 -0
  21. package/kits/agent/.agent/skills/skill-creator/scripts/run_loop.py +328 -0
  22. package/kits/agent/.agent/skills/skill-creator/scripts/utils.py +47 -0
  23. package/kits/agent/manifest.json +10 -0
  24. package/kits/claude/.claude/agents/code-pusher.md +46 -0
  25. package/kits/claude/.claude/agents/feature-document-updater.md +37 -0
  26. package/kits/claude/.claude/agents/self-reviewer.md +32 -0
  27. package/kits/claude/.claude/agents/web-auto-agentic-workflow-initializer.md +42 -0
  28. package/kits/claude/.claude/agents/web-auto-assisted-fix-and-runner.md +36 -0
  29. package/kits/claude/.claude/agents/web-auto-chrome-devtools-selector-extractor.md +36 -0
  30. package/kits/claude/.claude/agents/web-auto-coder.md +33 -0
  31. package/kits/claude/.claude/agents/web-auto-fe-selector-extractor.md +31 -0
  32. package/kits/claude/.claude/agents/web-auto-fix-and-runner.md +35 -0
  33. package/kits/claude/.claude/agents/web-auto-lessons-learned-extractor.md +34 -0
  34. package/kits/claude/.claude/agents/web-auto-playwright-mcp-selector-extractor.md +37 -0
  35. package/kits/claude/.claude/agents/web-auto-source-instructions-updater.md +43 -0
  36. package/kits/claude/.claude/agents/web-auto-test-cases-generator.md +29 -0
  37. package/kits/claude/.claude/agents/web-auto-ticket-designer.md +35 -0
  38. package/kits/claude/.claude/agents/web-auto-ticket-playbook-planner.md +36 -0
  39. package/kits/claude/.claude/agents/web-auto.md +382 -0
  40. package/kits/claude/.claude/skills/claude-code-subagent-creator/SKILL.md +292 -0
  41. package/kits/claude/.claude/skills/claude-code-subagent-creator/references/claude-code-subagent-configuration.md +158 -0
  42. package/kits/claude/.claude/skills/claude-code-subagent-creator/templates/subagent-profile.template.md +26 -0
  43. package/kits/claude/.claude/skills/skill-creator/LICENSE.txt +202 -0
  44. package/kits/claude/.claude/skills/skill-creator/SKILL.md +485 -0
  45. package/kits/claude/.claude/skills/skill-creator/agents/analyzer.md +274 -0
  46. package/kits/claude/.claude/skills/skill-creator/agents/comparator.md +202 -0
  47. package/kits/claude/.claude/skills/skill-creator/agents/grader.md +223 -0
  48. package/kits/claude/.claude/skills/skill-creator/assets/eval_review.html +146 -0
  49. package/kits/claude/.claude/skills/skill-creator/eval-viewer/generate_review.py +471 -0
  50. package/kits/claude/.claude/skills/skill-creator/eval-viewer/viewer.html +1325 -0
  51. package/kits/claude/.claude/skills/skill-creator/references/schemas.md +430 -0
  52. package/kits/claude/.claude/skills/skill-creator/scripts/__init__.py +0 -0
  53. package/kits/claude/.claude/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
  54. package/kits/claude/.claude/skills/skill-creator/scripts/generate_report.py +326 -0
  55. package/kits/claude/.claude/skills/skill-creator/scripts/improve_description.py +247 -0
  56. package/kits/claude/.claude/skills/skill-creator/scripts/package_skill.py +136 -0
  57. package/kits/claude/.claude/skills/skill-creator/scripts/quick_validate.py +103 -0
  58. package/kits/claude/.claude/skills/skill-creator/scripts/run_eval.py +310 -0
  59. package/kits/claude/.claude/skills/skill-creator/scripts/run_loop.py +328 -0
  60. package/kits/claude/.claude/skills/skill-creator/scripts/utils.py +47 -0
  61. package/kits/claude/manifest.json +10 -0
  62. package/kits/cursor/.cursor/agents/code-pusher.agent.md +43 -0
  63. package/kits/cursor/.cursor/agents/feature-document-updater.agent.md +34 -0
  64. package/kits/cursor/.cursor/agents/self-reviewer.agent.md +29 -0
  65. package/kits/cursor/.cursor/agents/web-auto-agentic-workflow-initializer.agent.md +37 -0
  66. package/kits/cursor/.cursor/agents/web-auto-assisted-fix-and-runner.agent.md +33 -0
  67. package/kits/cursor/.cursor/agents/web-auto-chrome-devtools-selector-extractor.agent.md +31 -0
  68. package/kits/cursor/.cursor/agents/web-auto-coder.agent.md +30 -0
  69. package/kits/cursor/.cursor/agents/web-auto-fe-selector-extractor.agent.md +28 -0
  70. package/kits/cursor/.cursor/agents/web-auto-fix-and-runner.agent.md +32 -0
  71. package/kits/cursor/.cursor/agents/web-auto-lessons-learned-extractor.agent.md +31 -0
  72. package/kits/cursor/.cursor/agents/web-auto-playwright-mcp-selector-extractor.agent.md +32 -0
  73. package/kits/cursor/.cursor/agents/web-auto-source-instructions-updater.agent.md +40 -0
  74. package/kits/cursor/.cursor/agents/web-auto-test-cases-generator.agent.md +26 -0
  75. package/kits/cursor/.cursor/agents/web-auto-ticket-designer.agent.md +32 -0
  76. package/kits/cursor/.cursor/agents/web-auto-ticket-playbook-planner.agent.md +33 -0
  77. package/kits/cursor/.cursor/agents/web-auto.agent.md +379 -0
  78. package/kits/cursor/.cursor/skills/claude-code-subagent-creator/SKILL.md +292 -0
  79. package/kits/cursor/.cursor/skills/claude-code-subagent-creator/references/claude-code-subagent-configuration.md +158 -0
  80. package/kits/cursor/.cursor/skills/claude-code-subagent-creator/templates/subagent-profile.template.md +26 -0
  81. package/kits/cursor/.cursor/skills/skill-creator/LICENSE.txt +202 -0
  82. package/kits/cursor/.cursor/skills/skill-creator/SKILL.md +485 -0
  83. package/kits/cursor/.cursor/skills/skill-creator/agents/analyzer.md +274 -0
  84. package/kits/cursor/.cursor/skills/skill-creator/agents/comparator.md +202 -0
  85. package/kits/cursor/.cursor/skills/skill-creator/agents/grader.md +223 -0
  86. package/kits/cursor/.cursor/skills/skill-creator/assets/eval_review.html +146 -0
  87. package/kits/cursor/.cursor/skills/skill-creator/eval-viewer/generate_review.py +471 -0
  88. package/kits/cursor/.cursor/skills/skill-creator/eval-viewer/viewer.html +1325 -0
  89. package/kits/cursor/.cursor/skills/skill-creator/references/schemas.md +430 -0
  90. package/kits/cursor/.cursor/skills/skill-creator/scripts/__init__.py +0 -0
  91. package/kits/cursor/.cursor/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
  92. package/kits/cursor/.cursor/skills/skill-creator/scripts/generate_report.py +326 -0
  93. package/kits/cursor/.cursor/skills/skill-creator/scripts/improve_description.py +247 -0
  94. package/kits/cursor/.cursor/skills/skill-creator/scripts/package_skill.py +136 -0
  95. package/kits/cursor/.cursor/skills/skill-creator/scripts/quick_validate.py +103 -0
  96. package/kits/cursor/.cursor/skills/skill-creator/scripts/run_eval.py +310 -0
  97. package/kits/cursor/.cursor/skills/skill-creator/scripts/run_loop.py +328 -0
  98. package/kits/cursor/.cursor/skills/skill-creator/scripts/utils.py +47 -0
  99. package/kits/cursor/manifest.json +10 -0
  100. package/kits/github/.github/agents/code-pusher.agent.md +45 -0
  101. package/kits/github/.github/agents/feature-document-updater.agent.md +36 -0
  102. package/kits/github/.github/agents/self-reviewer.agent.md +31 -0
  103. package/kits/github/.github/agents/web-auto-agentic-workflow-initializer.agent.md +39 -0
  104. package/kits/github/.github/agents/web-auto-assisted-fix-and-runner.agent.md +35 -0
  105. package/kits/github/.github/agents/web-auto-chrome-devtools-selector-extractor.agent.md +33 -0
  106. package/kits/github/.github/agents/web-auto-coder.agent.md +32 -0
  107. package/kits/github/.github/agents/web-auto-fe-selector-extractor.agent.md +30 -0
  108. package/kits/github/.github/agents/web-auto-fix-and-runner.agent.md +34 -0
  109. package/kits/github/.github/agents/web-auto-lessons-learned-extractor.agent.md +33 -0
  110. package/kits/github/.github/agents/web-auto-playwright-mcp-selector-extractor.agent.md +34 -0
  111. package/kits/github/.github/agents/web-auto-source-instructions-updater.agent.md +42 -0
  112. package/kits/github/.github/agents/web-auto-test-cases-generator.agent.md +28 -0
  113. package/kits/github/.github/agents/web-auto-ticket-designer.agent.md +34 -0
  114. package/kits/github/.github/agents/web-auto-ticket-playbook-creator.agent.md +35 -0
  115. package/kits/github/.github/agents/web-auto.agent.md +382 -0
  116. package/kits/github/.github/skills/claude-code-subagent-creator/SKILL.md +310 -0
  117. package/kits/github/.github/skills/claude-code-subagent-creator/references/claude-code-subagent-configuration.md +158 -0
  118. package/kits/github/.github/skills/claude-code-subagent-creator/templates/subagent-profile.template.md +37 -0
  119. package/kits/github/.github/skills/skill-creator/LICENSE.txt +202 -0
  120. package/kits/github/.github/skills/skill-creator/SKILL.md +485 -0
  121. package/kits/github/.github/skills/skill-creator/agents/analyzer.md +274 -0
  122. package/kits/github/.github/skills/skill-creator/agents/comparator.md +202 -0
  123. package/kits/github/.github/skills/skill-creator/agents/grader.md +223 -0
  124. package/kits/github/.github/skills/skill-creator/assets/eval_review.html +146 -0
  125. package/kits/github/.github/skills/skill-creator/eval-viewer/generate_review.py +471 -0
  126. package/kits/github/.github/skills/skill-creator/eval-viewer/viewer.html +1325 -0
  127. package/kits/github/.github/skills/skill-creator/references/schemas.md +430 -0
  128. package/kits/github/.github/skills/skill-creator/scripts/__init__.py +0 -0
  129. package/kits/github/.github/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
  130. package/kits/github/.github/skills/skill-creator/scripts/generate_report.py +326 -0
  131. package/kits/github/.github/skills/skill-creator/scripts/improve_description.py +247 -0
  132. package/kits/github/.github/skills/skill-creator/scripts/package_skill.py +136 -0
  133. package/kits/github/.github/skills/skill-creator/scripts/quick_validate.py +103 -0
  134. package/kits/github/.github/skills/skill-creator/scripts/run_eval.py +310 -0
  135. package/kits/github/.github/skills/skill-creator/scripts/run_loop.py +328 -0
  136. package/kits/github/.github/skills/skill-creator/scripts/utils.py +47 -0
  137. package/kits/github/manifest.json +10 -0
  138. package/kits/shared/docs/ai-code-review.md +440 -0
  139. package/kits/shared/docs/increase-unit-test-coverage.md +77 -0
  140. package/kits/shared/docs/pr-review-agent.md +501 -0
  141. package/kits/shared/docs/self-review-agent.md +246 -0
  142. package/kits/shared/docs/web-auto-agentic-workflow.md +506 -0
  143. package/kits/shared/manifest.json +11 -0
  144. package/kits/shared/skills/fix-automation-tests/SKILL.md +280 -0
  145. package/kits/shared/skills/fix-automation-tests/scripts/fetch_pr_changes.py +300 -0
  146. package/kits/shared/skills/fix-automation-tests/templates/impact-report.template.md +42 -0
  147. package/kits/shared/skills/increase-unit-test-coverage/SKILL.md +117 -0
  148. package/kits/shared/skills/increase-unit-test-coverage/scripts/filter_low_coverage.py +447 -0
  149. package/kits/shared/skills/pr-review/SKILL.md +200 -0
  150. package/kits/shared/skills/pr-review/references/automation.md +62 -0
  151. package/kits/shared/skills/pr-review/references/backend.md +95 -0
  152. package/kits/shared/skills/pr-review/references/frontend.md +103 -0
  153. package/kits/shared/skills/pr-review/references/mobile.md +108 -0
  154. package/kits/shared/skills/pr-review/references/output-schema.md +130 -0
  155. package/kits/shared/skills/pr-review/scripts/post-review.py +1395 -0
  156. package/kits/shared/skills/push-code/SKILL.md +176 -0
  157. package/kits/shared/skills/self-review/SKILL.md +234 -0
  158. package/kits/shared/skills/self-review/evals/evals.json +23 -0
  159. package/kits/shared/skills/self-review/references/automation.md +62 -0
  160. package/kits/shared/skills/self-review/references/backend.md +95 -0
  161. package/kits/shared/skills/self-review/references/frontend.md +103 -0
  162. package/kits/shared/skills/self-review/references/mobile.md +108 -0
  163. package/kits/shared/skills/self-review/templates/issues.template.md +72 -0
  164. package/kits/shared/skills/update-feature-document/SKILL.md +156 -0
  165. package/kits/shared/skills/update-feature-document/templates/delta.template.yaml +58 -0
  166. package/kits/shared/skills/update-feature-document/templates/feature.template.md +25 -0
  167. package/kits/shared/skills/web-auto-assisted-fix-and-run/SKILL.md +130 -0
  168. package/kits/shared/skills/web-auto-assisted-fix-and-run/references/resolve-api-error.md +108 -0
  169. package/kits/shared/skills/web-auto-assisted-fix-and-run/references/resolve-selector.md +60 -0
  170. package/kits/shared/skills/web-auto-assisted-fix-and-run/templates/issues-resolution-report-append.template.md +54 -0
  171. package/kits/shared/skills/web-auto-chrome-devtools-mcp-extract-selectors/SKILL.md +284 -0
  172. package/kits/shared/skills/web-auto-coding/SKILL.md +152 -0
  173. package/kits/shared/skills/web-auto-extract-lessons-learned/SKILL.md +168 -0
  174. package/kits/shared/skills/web-auto-extract-lessons-learned/templates/lessons-learned.template.md +115 -0
  175. package/kits/shared/skills/web-auto-fe-extract-selectors/SKILL.md +282 -0
  176. package/kits/shared/skills/web-auto-fe-extract-selectors/evals/evals.json +23 -0
  177. package/kits/shared/skills/web-auto-fix-and-run-test/SKILL.md +183 -0
  178. package/kits/shared/skills/web-auto-fix-and-run-test/templates/issues-resolution-report.template.md +77 -0
  179. package/kits/shared/skills/web-auto-generate-best-practices/SKILL.md +123 -0
  180. package/kits/shared/skills/web-auto-generate-instructions/SKILL.md +200 -0
  181. package/kits/shared/skills/web-auto-generate-instructions/evals/evals.json +23 -0
  182. package/kits/shared/skills/web-auto-generate-instructions/references/analysis-guide.md +145 -0
  183. package/kits/shared/skills/web-auto-generate-instructions/templates/web-auto-instructions.template.md +184 -0
  184. package/kits/shared/skills/web-auto-generate-project-blueprint/SKILL.md +181 -0
  185. package/kits/shared/skills/web-auto-generate-project-blueprint/evals/evals.json +57 -0
  186. package/kits/shared/skills/web-auto-generate-project-blueprint/templates/web-auto-project-blueprint.template.md +161 -0
  187. package/kits/shared/skills/web-auto-playwright-mcp-extract-selectors/SKILL.md +293 -0
  188. package/kits/shared/skills/web-auto-test-cases/SKILL.md +138 -0
  189. package/kits/shared/skills/web-auto-test-cases/evals/evals.json +129 -0
  190. package/kits/shared/skills/web-auto-test-cases/templates/test-cases.template.md +53 -0
  191. package/kits/shared/skills/web-auto-ticket-design/SKILL.md +199 -0
  192. package/kits/shared/skills/web-auto-ticket-design/templates/ticket-design.template.md +138 -0
  193. package/kits/shared/skills/web-auto-ticket-playbook/SKILL.md +218 -0
  194. package/kits/shared/skills/web-auto-ticket-playbook/evals/evals.json +23 -0
  195. package/kits/shared/skills/web-auto-ticket-playbook/templates/ticket-playbook.template.md +148 -0
  196. package/kits/shared/skills/web-auto-update-source-instructions/SKILL.md +156 -0
  197. package/kits/shared/skills/web-auto-update-source-instructions/evals/evals.json +22 -0
  198. package/kits/shared/skills/workspace-ai-nav-creator/SKILL.md +168 -0
  199. package/kits/shared/skills/workspace-ai-nav-creator/templates/agents-md.template.md +112 -0
  200. package/kits/shared/skills/workspace-ai-nav-creator/templates/claude-md.template.md +86 -0
  201. package/package.json +16 -0
@@ -0,0 +1,168 @@
1
+ ---
2
+ name: web-auto-extract-lessons-learned
3
+ description: Extract lessons learned from a completed ticket implementation. Reads issues.md (review report) and issues-resolution-report.md (fix-and-run results) for a given ticket, analyzes what worked well, challenges encountered, and how issues were resolved, then generates a structured lessons-learned.md document with actionable recommendations. ALWAYS use this skill when asked to extract lessons learned, document what was learned, do a postmortem, analyze implementation outcomes, summarize what went wrong with a ticket, review what happened during a ticket, or reflect on a completed implementation. Triggers on requests like "extract lessons learned for TKT-001", "document lessons from ticket ABC-123", "what did we learn from fe-2026", "postmortem for ticket X", "what went wrong with ticket Y", "analyze ticket Z results".
4
+ ---
5
+
6
+ # Web Automation Extract Lessons Learned
7
+
8
+ This skill turns the raw outputs of the review → fix → run pipeline into a concise analysis that feeds back into the project's instruction documents. Without this feedback loop, the same mistakes recur across tickets — a wrong selector strategy gets re-used, an unclear instruction stays unclear, a missing best practice stays missing. The goal is to close that loop with the smallest set of high-impact recommendations.
9
+
10
+ ## Input
11
+
12
+ | Parameter | Type | Required | Description |
13
+ |-----------|------|----------|-------------|
14
+ | `TICKET_ID` | string | Yes | The ticket identifier (e.g., TKT-001, ABC-123) |
15
+
16
+ If `TICKET_ID` is not provided, ask the user before proceeding.
17
+
18
+ ## Workflow
19
+
20
+ ### Step 1: Gather Reports
21
+
22
+ Both reports live in `.tickets/{TICKET_ID}/`. Read them in order — the review report establishes what the reviewer found; the resolution report shows how those findings were addressed and whether the tests ultimately passed.
23
+
24
+ #### 1a — Review Report (`issues.md`)
25
+
26
+ This is the primary input. Extract:
27
+ - **Verdict** — APPROVED / APPROVED WITH WARNINGS / NEEDS CHANGES
28
+ - **Issues by severity** — critical (count + descriptions), warnings (count + descriptions), suggestions (count + descriptions)
29
+ - **Files reviewed** — list of files and their statuses
30
+
31
+ If missing, inform the user and stop — without the review report there is nothing to analyze:
32
+ ```
33
+ issues.md not found for ticket {TICKET_ID}. Run the review step first.
34
+ ```
35
+
36
+ #### 1b — Resolution Report (`issues-resolution-report.md`)
37
+
38
+ This report shows what happened after the review. It may contain one or two sections:
39
+
40
+ **Section 1 — Autonomous Fix-and-Run** (always present):
41
+ - Run status (SUCCESS or FAILED)
42
+ - Issues fixed — severity, file, line, description, fix applied
43
+ - If SUCCESS: final run output
44
+ - If FAILED: runtime error diagnosis — error type, file, line, message, likely cause
45
+
46
+ **Section 2 — User-Assisted Fix** (present only when the autonomous attempt failed):
47
+ - Run status (SUCCESS with user help, or FAILED after all attempts)
48
+ - User-assisted attempts — attempt number, hint given, fix applied, result
49
+ - If all attempts exhausted: final unresolved error + recommended next steps
50
+
51
+ If missing, proceed with a partial analysis based on the review report alone — document that runtime outcomes are unknown, and note this limitation in the output. A review-only analysis is still valuable because it captures the review issues and their categories.
52
+
53
+ ### Step 2: Read Context Files
54
+
55
+ Read these files to understand intent and to check for recommendation duplicates later. This step is essential for producing useful recommendations — without knowledge of what's already documented, you risk repeating existing guidance.
56
+
57
+ **Ticket artifacts** (same ticket directory):
58
+ 1. **Ticket Design** (`ticket-design.md`) — design decisions and selector choices
59
+ 2. **Ticket Playbook** (`ticket-playbook.md`) — what was planned vs. what happened
60
+
61
+ **Project-level standards** (read each if it exists):
62
+
63
+ | Document | Path | Purpose |
64
+ |----------|------|---------|
65
+ | Project Blueprint | `.documents-design/web-auto-project-blueprint.md` | Architecture, patterns, naming conventions |
66
+ | Coding Instructions | `.documents-design/web-auto-instructions.md` | Project-level coding guide with copy-paste-ready patterns |
67
+ | Best Practices | `.documents-design/web-auto-best-practices.md` | Reusable patterns and anti-patterns |
68
+
69
+ If any of these are missing, note the gap and proceed with what's available.
70
+
71
+ ### Step 3: Analyze and Extract Lessons
72
+
73
+ Work through these four dimensions. The goal is to be specific — generic observations like "be more careful" or "improve test quality" have no value.
74
+
75
+ #### 3.1 — What Worked Well
76
+
77
+ Look for patterns that succeeded without requiring fixes:
78
+ - **Page Object design** — reusable methods, clean encapsulation, effective use of existing base classes
79
+ - **Selector strategy** — selectors that were stable and didn't cause runtime errors (e.g., data-testid attributes, aria roles)
80
+ - **Test structure** — clear arrange/act/assert, good use of fixtures or hooks
81
+ - **Reuse** — effective use of existing utilities, helpers, or shared components that avoided reinventing the wheel
82
+
83
+ If the review was clean (APPROVED with zero issues), note that briefly — no need to fabricate praise.
84
+
85
+ #### 3.2 — Challenges Encountered
86
+
87
+ Categorize problems from both the review and runtime phases. Web automation tickets tend to hit a few recurring categories:
88
+
89
+ **Review-phase issues:**
90
+ - Missing or weak assertions (e.g., checking only visibility, not content)
91
+ - Selector problems (fragile selectors, hardcoded values, missing data-testid)
92
+ - Code structure (Page Object violations, duplicated logic, missing abstraction)
93
+ - Convention violations (naming, file organization, import patterns)
94
+
95
+ **Runtime-phase issues** (from the resolution report):
96
+ - `TimeoutError` — usually means a selector didn't match or a page didn't load in time. Look at whether the selector strategy was sound or the wait condition was wrong.
97
+ - `LocatorError` / element not found — wrong selector, element not yet rendered, or stale reference. Check if the design document had the right selector.
98
+ - `AssertionError` — test expectation didn't match reality. Check whether the expected value was correct or the test was checking the wrong thing.
99
+ - Network/API errors — test environment issues, missing test data setup, or race conditions.
100
+
101
+ Note how many attempts were needed (autonomous only, or user-assisted too) — this signals the severity and whether instructions need to be clearer.
102
+
103
+ #### 3.3 — How Issues Were Resolved
104
+
105
+ For each significant issue or runtime error, trace the chain:
106
+ 1. **Problem** — what was wrong
107
+ 2. **Root cause** — why it happened (e.g., instructions were ambiguous, pattern was missing from best practices, selector was a placeholder that never got updated)
108
+ 3. **Fix applied** — what change was made
109
+ 4. **Effectiveness** — did it work on first attempt, or require iteration?
110
+
111
+ This chain is the raw material for recommendations. An issue where the root cause is "instructions didn't cover this scenario" points to a documentation gap. An issue where the cause is "one-off typo" doesn't.
112
+
113
+ #### 3.4 — Recommendations
114
+
115
+ This is the most important section — it's what actually improves the pipeline for future tickets.
116
+
117
+ Categorize each recommendation by target document:
118
+ - **Project Blueprint** — structural or architectural gaps (missing patterns, naming conventions)
119
+ - **Coding Instructions** — project-level coding patterns or templates that were unclear or missing
120
+ - **Best Practices** — reusable patterns, anti-patterns, or common pitfalls
121
+
122
+ Prioritize by impact:
123
+ - **High Priority** — caused failure or required multiple fix attempts
124
+ - **Medium Priority** — easily fixed but should be prevented upfront
125
+ - **Examples Needed** — specific code examples that would clarify an existing rule
126
+
127
+ **Before adding any recommendation, check whether it's already covered.** Read the target document and verify the information isn't already there — even in different wording. This is the single most important quality check. The reason: source instruction files grow with every ticket. If recommendations aren't deduplicated, these files become bloated and contradictory, which actually makes future implementations worse.
128
+
129
+ Apply these filters:
130
+ - A recommendation must address a gap that directly caused a failure, document something completely absent from the target file, or clarify a demonstrably ambiguous instruction (cite the ambiguity).
131
+ - Skip anything that's general good practice, already implied by existing rules, or unlikely to recur.
132
+ - If a recommendation is closely related to an existing entry, suggest a clarification to that entry rather than adding a new one.
133
+ - Aim for the smallest set that would have prevented the actual issues. Two or three precise recommendations beat ten vague ones.
134
+
135
+ ### Step 4: Generate Lessons Learned Document
136
+
137
+ Write the document following the template at [templates/lessons-learned.template.md](templates/lessons-learned.template.md).
138
+
139
+ Save to:
140
+ ```
141
+ .tickets/{TICKET_ID}/lessons-learned.md
142
+ ```
143
+
144
+ Generate the document even when the implementation failed — failures often provide the most valuable lessons.
145
+
146
+ ### Step 5: Summary
147
+
148
+ Display:
149
+
150
+ ```
151
+ Lessons learned extracted for ticket {TICKET_ID}.
152
+
153
+ Created:
154
+ - .tickets/{TICKET_ID}/lessons-learned.md
155
+
156
+ Summary:
157
+ - Status: [SUCCESS / FAILED / PARTIAL (review only)]
158
+ - Critical Issues: X | Warnings: X
159
+ - Runtime Error: [None / Fixed autonomously / Fixed with user help (X attempts) / Unresolved]
160
+ - Recommendations: X high priority, X medium priority
161
+ ```
162
+
163
+ ## Key Principles
164
+
165
+ - **Specificity over completeness** — a short document with precise root causes and targeted recommendations is more useful than a comprehensive report full of generic observations. Every issue traced should have a concrete root cause, not just a restatement of the symptom.
166
+ - **Recommendations are the deliverable** — the analysis sections exist to support the recommendations. If the analysis doesn't point to a documentation gap worth fixing, it's fine to keep those sections brief.
167
+ - **Never fabricate** — if data is missing (resolution report absent, context files not found), state it explicitly and work with what's available.
168
+ - **Failures are high-signal** — when implementation failed or needed user-assisted fixes, that's where the most actionable lessons come from. Give those cases more analytical depth.
@@ -0,0 +1,115 @@
1
+ # Lessons Learned Template
2
+
3
+ Use this template as the output structure for `lessons-learned.md`.
4
+
5
+ ```markdown
6
+ # Lessons Learned: {TICKET_ID}
7
+
8
+ **Date:** {YYYY-MM-DD} | **Status:** {✅ SUCCESS / ❌ FAILED / ⚠️ PARTIAL (review only)}
9
+
10
+ ## 1. Summary
11
+
12
+ | Field | Value |
13
+ |-------|-------|
14
+ | What was implemented | {1-2 sentence description} |
15
+ | Coding instructions used | {path/to/instructions.md or "Not found"} |
16
+ | Outcome | {Brief explanation of success/failure} |
17
+ | Review verdict | {APPROVED / APPROVED WITH WARNINGS / NEEDS CHANGES} |
18
+ | Critical issues fixed | {count} |
19
+ | Warnings fixed | {count} |
20
+ | Runtime error | {None / Fixed autonomously / Fixed with user support (X attempts) / Unresolved} |
21
+
22
+ ## 2. What Worked Well
23
+
24
+ | # | Pattern / Approach | Why It Was Effective |
25
+ |---|-------------------|---------------------|
26
+ | 1 | {pattern} | {explanation} |
27
+ | 2 | {pattern} | {explanation} |
28
+
29
+ > If nothing notable, replace the table with: _No standout patterns identified — standard implementation._
30
+
31
+ ## 3. Issues & Resolutions
32
+
33
+ ### Critical Issues Fixed
34
+
35
+ | # | File | Line | Category | Problem | Root Cause | Fix Applied | Lesson |
36
+ |---|------|------|----------|---------|------------|-------------|--------|
37
+ | 1 | {file} | {line} | {category} | {what was wrong} | {why it happened} | {how it was resolved} | {what this teaches} |
38
+
39
+ > If no critical issues, replace the table with: _No critical issues found during review._
40
+
41
+ ### Warnings Fixed
42
+
43
+ | # | File | Line | Category | Problem | Fix Applied |
44
+ |---|------|------|----------|---------|-------------|
45
+ | 1 | {file} | {line} | {category} | {what was wrong} | {how it was resolved} |
46
+
47
+ > If no warnings, replace the table with: _No warnings found during review._
48
+
49
+ ### Runtime Error (if encountered)
50
+
51
+ > If no runtime error occurred, replace this entire section with: _No runtime errors encountered._
52
+
53
+ | Field | Value |
54
+ |-------|-------|
55
+ | Error Type | {error type} |
56
+ | File | {file path} |
57
+ | Line | {line number} |
58
+ | Message | {error message} |
59
+ | Likely Cause | {diagnosis} |
60
+ | Resolution | {Fixed autonomously / Fixed with user support / Unresolved} |
61
+
62
+ #### User-Assisted Fix Attempts (if applicable)
63
+
64
+ | Attempt | User Hint | Fix Applied | Result |
65
+ |---------|-----------|-------------|--------|
66
+ | 1 | {summary of hint} | {fix applied} | {outcome} |
67
+ | 2 | {summary of hint} | {fix applied} | {outcome} |
68
+
69
+ > Omit this table if no user-assisted attempts were made.
70
+
71
+ ### Unresolved Issues (if failed after all attempts)
72
+
73
+ | Field | Value |
74
+ |-------|-------|
75
+ | Error Type | {error type} |
76
+ | File | {file path} |
77
+ | Line | {line number} |
78
+ | Message | {error message} |
79
+ | User-Assisted Attempts | {summary of both attempts} |
80
+ | Recommended Next Steps | {specific actions for manual intervention} |
81
+
82
+ > If implementation succeeded, remove this entire subsection.
83
+
84
+ ## 4. Recommendations
85
+
86
+ ### High Priority
87
+
88
+ Issues that caused failure or required multiple fix attempts.
89
+
90
+ | # | Target Document | Instruction Gap / Issue | Problem | Impact | Recommended Action |
91
+ |---|----------------|------------------------|---------|--------|--------------------|
92
+ | 1 | {Project Blueprint / Coding Instructions / Best Practices} | {gap} | {what was missing or unclear} | {how it affected implementation} | {specific update needed} |
93
+
94
+ > If none, replace the table with: _No high-priority recommendations._
95
+
96
+ ### Medium Priority
97
+
98
+ Issues that were easily fixed but should be prevented.
99
+
100
+ | # | Target Document | Recommendation |
101
+ |---|----------------|---------------|
102
+ | 1 | {Project Blueprint / Coding Instructions / Best Practices} | {specific recommendation} |
103
+
104
+ > If none, replace the table with: _No medium-priority recommendations._
105
+
106
+ ### Examples Needed
107
+
108
+ Specific examples that would help prevent similar issues in future implementations.
109
+
110
+ | # | Target Document | Topic | What Example Would Help |
111
+ |---|----------------|-------|----------------------|
112
+ | 1 | {Project Blueprint / Coding Instructions / Best Practices} | {topic} | {description of helpful example} |
113
+
114
+ > If none, replace the table with: _No additional examples needed._
115
+ ```
@@ -0,0 +1,282 @@
1
+ ---
2
+ name: web-auto-fe-extract-selectors
3
+ description: Update placeholder selectors in a ticket-design.md file by searching the front-end (FE) source code for actual selectors. Reads ticket-design.md, finds all steps with "Update selector for this element" placeholders, searches the FE codebase for matching elements, and replaces each placeholder with the real selector. Use this skill whenever someone asks to update selectors from FE source, fill in missing selectors using front-end code, resolve placeholder selectors via FE, or search the FE repo for element locators — even if phrased casually like "find the selectors in the frontend" or "look up test IDs from the source". Triggers on requests like "update selectors from FE for TKT-001", "fill in selectors using front-end code for ABC-123", "resolve missing selectors via FE for ticket fe-2026", "search the react code for selectors", "extract data-testid from source for ticket X", "look up selectors in the angular/vue/svelte code".
4
+ ---
5
+
6
+ # Web Automation Update Selectors (FE)
7
+
8
+ Read a `ticket-design.md` file for a given ticket ID, find all steps that contain the `<-- Update selector for this element -->` placeholder, search the front-end source code for the actual selectors, and update the ticket design in place.
9
+
10
+ This skill works by static analysis of the FE source code — it does not require a running application. This makes it the right choice when the app is unavailable, when you want fast results without launching a browser, or when the live DOM differs from the source (e.g., server-rendered content). Because it reads source files, it can also discover selectors in code paths that the current UI state wouldn't reveal (hidden features, feature-flagged elements, conditionally rendered components).
11
+
12
+ ## Input Parameters
13
+
14
+ | Parameter | Type | Required | Description |
15
+ |-----------|------|----------|-------------|
16
+ | `TICKET_ID` | string | Yes | The ticket identifier (e.g., TKT-001, ABC-123) |
17
+
18
+ **If `TICKET_ID` is not provided:** Ask the user for the ticket ID before proceeding.
19
+
20
+ ## Workflow
21
+
22
+ ### Step 1: Locate and Read Ticket Design
23
+
24
+ Search for the ticket design file using this glob pattern:
25
+
26
+ ```
27
+ .tickets/{TICKET_ID}/ticket-design.md
28
+ ```
29
+
30
+ **If not found:** Inform the user and stop:
31
+
32
+ ```
33
+ Error: ticket-design.md not found for ticket {TICKET_ID}.
34
+ Run the web-auto-ticket-design skill first to create it.
35
+ ```
36
+
37
+ **If found:** Read the file and extract every step that contains:
38
+
39
+ ```
40
+ - Selector: <-- Update selector for this element -->
41
+ ```
42
+
43
+ For each placeholder step, collect:
44
+ - **Step number and test case ID** — to locate the step later for replacement
45
+ - **Element name** — from the `- Element:` line
46
+ - **Natural language description** — from the step description line
47
+ - **Action context** — from the `- Action:` line (what interaction is expected)
48
+ - **Page / feature context** — which page or feature area this step belongs to (from the test case title, background steps, or preceding navigation steps)
49
+
50
+ Group placeholders by page/feature context — this drives the directory-scoped search in Step 4 and avoids redundant searches when multiple placeholders share the same feature area.
51
+
52
+ If no placeholder selectors are found, inform the user and stop:
53
+
54
+ ```
55
+ No placeholder selectors found in ticket-design.md for ticket {TICKET_ID}.
56
+ All selectors are already populated.
57
+ ```
58
+
59
+ ### Step 2: Read Project Locator Strategy
60
+
61
+ Before searching for selectors, read the project's selector strategy from the source instructions.
62
+
63
+ **Locate the instructions file:**
64
+
65
+ `.documents-design/web-auto-project-blueprint.md`
66
+
67
+ **If found:** Read the **Selector Strategy** section. Extract:
68
+ - The priority order of locator types (e.g., `data-testid` first, then ARIA roles, etc.)
69
+ - The locator format examples from the codebase (these are the exact formats to use in output — Playwright `getByTestId(...)`, CSS `[data-testid="..."]`, etc.)
70
+ - Any project-specific conventions or exceptions
71
+
72
+ Use this strategy for all selector resolution in subsequent steps.
73
+
74
+ **If not found:** Fall back to this default priority: `data-testid` > `role` + name > `aria-label` > CSS selectors.
75
+
76
+ ### Step 3: Identify Front-End Source Root and Search Targets
77
+
78
+ **3.1 — Locate the FE source root**
79
+
80
+ The FE source code might live in the same workspace or in a separate directory. Determine the FE source root:
81
+
82
+ 1. Check `.documents-design/web-auto-project-blueprint.md` for a **Frontend Source Path** or similar configuration
83
+ 2. If not specified, look for common FE project markers in the workspace: `package.json` with a framework dependency (`react`, `vue`, `angular`, `svelte`, `next`, `nuxt`), or `src/` directories containing component files
84
+ 3. For monorepos, identify the relevant package (e.g., `packages/web-app/`, `apps/frontend/`) — look for workspace configurations in `package.json` (`workspaces` field), `pnpm-workspace.yaml`, or `nx.json`
85
+
86
+ If the FE source root cannot be determined, ask the user:
87
+
88
+ ```
89
+ Could not auto-detect the front-end source root.
90
+ Please provide the path to the FE source directory.
91
+ ```
92
+
93
+ **3.2 — Derive search targets from placeholders**
94
+
95
+ From Step 1, for each placeholder element, derive:
96
+
97
+ | Source | Derive |
98
+ |--------|--------|
99
+ | Element name | Component name, field label, button text |
100
+ | Action context | Input type, button role, link text |
101
+ | Natural language description | Feature area, section, modal/dialog name |
102
+ | Page context | Route path, page component name |
103
+
104
+ **3.3 — Map feature areas to directories**
105
+
106
+ Identify likely feature directories by matching the feature area or page name to folder names in the FE source tree (e.g., "Create Group modal" → look for `groups/`, `create-group/`, `group/`, `GroupModal` directories). List the top-level directory structure under the FE source root to orient yourself before diving into searches.
107
+
108
+ **File types to search (by framework):**
109
+
110
+ | Framework | Extensions |
111
+ |-----------|-----------|
112
+ | React / Next.js | `.tsx`, `.jsx`, `.ts`, `.js` |
113
+ | Vue / Nuxt | `.vue`, `.ts`, `.js` |
114
+ | Angular | `.component.ts`, `.component.html`, `.ts` |
115
+ | Svelte / SvelteKit | `.svelte`, `.ts`, `.js` |
116
+ | Generic | `.html`, `.ts`, `.js` |
117
+
118
+ Focus on the relevant framework's extensions to avoid noise.
119
+
120
+ ### Step 4: Search Front-End Source Code
121
+
122
+ Complete all analysis internally — do not output intermediate results to the user.
123
+
124
+ The search follows a funnel strategy: start narrow (feature-scoped), then widen progressively. This matters because the same selector name (e.g., `data-testid="submit-button"`) may appear in multiple features — the narrow search establishes the correct context first.
125
+
126
+ **4.1 — Narrow search (feature-scoped)**
127
+
128
+ For each placeholder, search first within the likely feature directories identified in Step 3:
129
+
130
+ | Search Target | Patterns |
131
+ |---------------|----------|
132
+ | Test IDs | `data-testid="..."`, `data-test="..."`, `data-cy="..."`, `data-test-id="..."` |
133
+ | Roles | `role="button"`, `role="dialog"`, `role="textbox"`, etc. |
134
+ | Aria labels | `aria-label="..."`, `aria-labelledby="..."` |
135
+ | Playwright helpers | `getByTestId`, `getByRole`, `getByLabel`, `getByText`, `getByPlaceholder` |
136
+ | CSS class/id | `className="..."`, `id="..."` |
137
+ | Component names | Component definitions matching the element name |
138
+
139
+ **Framework-specific patterns to also search:**
140
+
141
+ | Framework | Additional Patterns |
142
+ |-----------|-------------------|
143
+ | React | `styled.button`, `styled(Component)`, `forwardRef` wrapping, spread props (`{...props}`) passing `data-testid` |
144
+ | Vue | `v-bind:data-testid`, `:data-testid`, template `ref="..."` |
145
+ | Angular | `[attr.data-testid]`, `#templateRef`, `[data-testid]` in template |
146
+ | Svelte | `data-testid={value}`, `bind:this` |
147
+
148
+ **4.2 — Confirm match by reading the file**
149
+
150
+ When a candidate is found, read the surrounding code (at least 30-50 lines around the match) to confirm:
151
+ - The element is in the correct page/feature context (not a similarly named element on a different page)
152
+ - The selector uniquely identifies this element (not shared across multiple elements)
153
+ - The component is actually rendered in the feature path (check imports and route definitions if ambiguous)
154
+
155
+ If multiple candidates remain after reading, disambiguate using:
156
+ 1. **Route/page context** — which page component renders this element?
157
+ 2. **Import chain** — trace the component imports back to the page that matches the test case
158
+ 3. **Prop drilling** — does a parent pass a unique `testId` prop that distinguishes this instance?
159
+
160
+ Keep only the candidate in the correct page/component context.
161
+
162
+ **4.3 — Handle dynamic and constructed test IDs**
163
+
164
+ If no literal string match is found, search for partial or template literal patterns:
165
+
166
+ | Pattern Type | Search Strategy |
167
+ |-------------|----------------|
168
+ | Template literals | `` data-testid={` ``, `` `${prefix}-submit` ``, `` `row-${id}` `` |
169
+ | Concatenation | `"prefix-" + varName`, `testIdBase + "-submit"` |
170
+ | Partial matches | Search for the significant substring (e.g., `submit-btn`, `create-group`) |
171
+ | Prop-based | `data-testid={props.testId}`, `data-testid={testId}` — then trace the prop value from the parent |
172
+ | Constant/enum | `TEST_IDS.SUBMIT_BUTTON`, `TestIds.loginForm` — search for the constant definition |
173
+
174
+ When found: read the file to understand how the runtime value is constructed and derive the actual runtime value.
175
+
176
+ **4.4 — Broad fallback**
177
+
178
+ If the narrow search (4.1–4.3) finds no candidate, repeat the same search across the full FE source tree (all FE source files of the target extensions). To keep this tractable in large codebases, prioritize:
179
+ 1. Component files (files containing JSX, template syntax, or component decorators)
180
+ 2. Page/route files
181
+ 3. Shared/common component files
182
+ 4. Utility/helper files (least likely to have selectors)
183
+
184
+ **4.5 — Component hierarchy fallback**
185
+
186
+ When a JSX/template element is found at the call site but has no selector attribute, the `data-testid` may be defined inside the component's implementation. Trace the component hierarchy:
187
+
188
+ 1. Find the component's import statement at the call site to get its source file
189
+ 2. Read the component definition file and search for selector attributes inside it
190
+ 3. If the component wraps another component (e.g., a design system `<Button>` wrapping a native `<button>`), continue one more level down
191
+ 4. Stop after 2 levels of component nesting — deeper nesting rarely has locator attributes and risks false positives
192
+
193
+ **4.6 — Evaluate match quality**
194
+
195
+ For each candidate, classify:
196
+ 1. **Exact match** — selector clearly maps to the described element (e.g., `data-testid="login-button"` for "Login button") and is in the correct feature context
197
+ 2. **Contextual match** — selector is in the correct component/page and matches the element type, but the naming isn't an obvious direct match
198
+ 3. **Ambiguous match** — selector was found but context couldn't be fully verified (e.g., shared component used in multiple places with no distinguishing prop)
199
+ 4. **No match** — no suitable selector found in the FE source after all fallbacks
200
+
201
+ Only use Exact or Contextual matches for replacement. Ambiguous matches should be reported as unresolved with a note explaining why.
202
+
203
+ ### Step 5: Build Selector Values
204
+
205
+ For each placeholder, determine the final selector value:
206
+
207
+ | Match Result | Selector Value |
208
+ |--------------|----------------|
209
+ | Exact or contextual match found | The actual selector using the project's locator strategy from Step 2 |
210
+ | Multiple candidates found | Choose the selector that ranks highest in the project's locator strategy priority order |
211
+ | Found via component hierarchy (4.5) | The selector from inside the component definition |
212
+ | Ambiguous match | Keep `<-- Update selector for this element -->` unchanged — report in summary |
213
+ | No match after all fallbacks | Keep `<-- Update selector for this element -->` unchanged |
214
+
215
+ **Selector format:** Use the locator format from the project's Selector Strategy (Step 2). If the project blueprint includes code examples, follow those formats exactly.
216
+
217
+ If no project blueprint exists, use this default format:
218
+
219
+ | Attribute Found | Default Format |
220
+ |----------------|----------------|
221
+ | `data-testid` | `[data-testid="value"]` |
222
+ | `role` + accessible name | `role=button[name="Submit"]` |
223
+ | `aria-label` | `[aria-label="value"]` |
224
+ | `name` on input | `input[name="email"]` |
225
+
226
+ ### Step 6: Update Ticket Design
227
+
228
+ For each placeholder that has a resolved selector, update the `ticket-design.md` file in place:
229
+
230
+ **Replace:**
231
+ ```
232
+ - Selector: <-- Update selector for this element -->
233
+ ```
234
+
235
+ **With:**
236
+ ```
237
+ - Selector: [resolved-selector]
238
+ ```
239
+
240
+ Only modify `- Selector:` lines. Do not touch `- Element:`, `- Action:`, `- Expected Result:`, or `- Note:` lines. The `- Note: New element/action - needs to be implemented` line must remain — this skill only resolves selectors, it does not implement the automation code.
241
+
242
+ Save the updated file at its original location.
243
+
244
+ ### Step 7: Summary
245
+
246
+ Display the result to the user:
247
+
248
+ ```
249
+ Selectors updated for ticket {TICKET_ID}.
250
+
251
+ Updated:
252
+ - .tickets/{TICKET_ID}/ticket-design.md
253
+
254
+ Summary:
255
+ - Selectors resolved: {resolved_count}
256
+ - Selectors still pending: {pending_count}
257
+ ```
258
+
259
+ If any selectors remain unresolved, add:
260
+
261
+ ```
262
+ Unresolved elements:
263
+ - [Test Case ID] Step [N]: [Element name] — [reason]
264
+
265
+ Possible reasons:
266
+ - Not found: no matching element in the FE source tree
267
+ - Ambiguous: multiple candidates across features — could not determine the correct one
268
+ - Dynamic: selector is constructed at runtime from variable data
269
+
270
+ Next steps: update manually, provide the FE component paths, or try the Chrome DevTools / Playwright MCP approach to extract selectors from the live application.
271
+ ```
272
+
273
+ ## Important Rules
274
+
275
+ - **Follow project locator strategy** — always read and follow the Selector Strategy from the project blueprint; only use the default fallback when no blueprint is found
276
+ - **Narrow before broad** — search feature-scoped directories first; fall back to the full codebase only when narrow search finds nothing. This is important because the same selector string can appear in unrelated features — context narrows the right match
277
+ - **Confirm before committing** — always read the matched file to verify context (30-50 lines of surrounding code); do not use a selector based solely on a grep search hit
278
+ - **Match precisely** — only replace a placeholder when confident the selector maps to the correct element on the correct page. When in doubt, leave the placeholder and report it as unresolved rather than risk a wrong selector that will cause flaky tests
279
+ - **Never invent selectors** — only use selectors found in the actual front-end source code; never fabricate or guess selector values
280
+ - **Only modify `- Selector:` lines** — do not alter step numbers, descriptions, actions, expected results, or notes
281
+ - **Keep analysis internal** — do not output search results, candidate lists, or file contents to the user
282
+ - **File update failure** — report the error and ask how to proceed
@@ -0,0 +1,23 @@
1
+ {
2
+ "skill_name": "web-auto-fe-extract-selectors",
3
+ "evals": [
4
+ {
5
+ "id": 1,
6
+ "prompt": "Update selectors from FE for ticket LOGIN-042. The ticket design has 5 placeholder selectors for a login page: email input, password input, submit button, 'forgot password' link, and 'remember me' checkbox. The React FE source uses data-testid attributes consistently. The project blueprint specifies data-testid as the primary locator strategy.",
7
+ "expected_output": "All 5 placeholders should be resolved to data-testid selectors found in the FE login component. The ticket-design.md should be updated in place with resolved selectors on the - Selector: lines. No other lines should be modified. Summary should show 5 resolved, 0 pending.",
8
+ "files": []
9
+ },
10
+ {
11
+ "id": 2,
12
+ "prompt": "Fill in selectors using front-end code for ticket GROUPS-108. The ticket design has 8 placeholders across 2 test cases — a 'Create Group' modal flow and a 'Group List' table view. Some elements use dynamic data-testid values (e.g., row-${groupId}), one element is inside a shared design system <Button> component that wraps the native button with data-testid, and 2 elements have no test IDs at all in the FE source. The project is a Vue/Nuxt monorepo with packages/web-app/src/ as the FE root.",
13
+ "expected_output": "Should resolve 5-6 selectors (static test IDs + the one found via component hierarchy tracing inside the Button wrapper). Dynamic test IDs should be reported as unresolved with reason 'Dynamic'. Elements with no test IDs should be reported as unresolved with reason 'Not found'. Summary should show resolved and pending counts. Monorepo structure should be navigated correctly to find the right package.",
14
+ "files": []
15
+ },
16
+ {
17
+ "id": 3,
18
+ "prompt": "Resolve missing selectors via FE for ticket DASH-055. The ticket design has 3 placeholders for a dashboard analytics page. The Angular FE codebase uses [attr.data-testid] in templates and some elements only have aria-label attributes. No project blueprint file exists. Two of the selectors are on elements that share the same component name (MetricCard) but appear in different page sections with different aria-labels.",
19
+ "expected_output": "Should fall back to default priority (data-testid > role+name > aria-label > CSS). Should correctly disambiguate the two MetricCard instances by reading surrounding template context and matching to the correct page section. Should resolve selectors using aria-label format when data-testid is absent. Summary should show all resolved or explain any that couldn't be disambiguated.",
20
+ "files": []
21
+ }
22
+ ]
23
+ }