qaa-agent 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,142 @@
1
+ ---
2
+ name: qa-learner
3
+ description: "Learns from user corrections and saves persistent QA preferences. Triggers when user expresses frustration about repeated mistakes: 'ya te dije', 'te lo repeti', 'siempre te olvidas', 'otra vez lo mismo', 'I already told you', 'stop doing X', 'always do X', 'never do X', 'remember this'. Saves rules to ~/.claude/qaa/MY_PREFERENCES.md which all QA agents read before generating output."
4
+ ---
5
+
6
+ # QA Learner — Persistent Preferences from User Corrections
7
+
8
+ ## When This Skill Activates
9
+
10
+ Trigger on ANY of these patterns (Spanish or English):
11
+
12
+ **Frustration / repetition signals:**
13
+ - "ya te dije", "ya te lo dije", "te lo repeti", "otra vez", "siempre te olvidas"
14
+ - "cuantas veces te tengo que decir", "de nuevo lo mismo", "ya hablamos de esto"
15
+ - "I already told you", "I've said this before", "again?", "how many times"
16
+ - "stop doing X", "don't do X", "never do X", "always do X"
17
+ - "remember this", "don't forget", "from now on", "de ahora en mas"
18
+ - "acordate", "no te olvides", "a partir de ahora", "siempre hacelo asi"
19
+
20
+ **Explicit preference setting:**
21
+ - "I prefer X over Y", "prefiero X", "use X not Y", "usa X no Y"
22
+ - "the standard is X", "el estandar es X", "we always use X"
23
+
24
+ ## What To Do When Triggered
25
+
26
+ ### Step 1: Acknowledge the correction immediately
27
+
28
+ Say something like: "Entendido, lo guardo para no repetirlo." or "Got it, saving this preference."
29
+
30
+ Do NOT be defensive. Do NOT explain why you made the mistake. Just acknowledge and save.
31
+
32
+ ### Step 2: Extract the rule
33
+
34
+ From the user's message, extract:
35
+ - **What was wrong** (what you did that they're correcting)
36
+ - **What's correct** (what they want instead)
37
+ - **Category** (language, framework, naming, assertions, locators, format, workflow, other)
38
+
39
+ If you're not sure what exactly they want saved, ASK:
40
+
41
+ "Quiero guardar esta preferencia para no repetir el error. Lo que entiendo es:
42
+ - Regla: [your interpretation]
43
+ - Categoria: [category]
44
+ Es correcto o lo ajusto?"
45
+
46
+ ### Step 3: Read existing preferences
47
+
48
+ ```bash
49
+ cat ~/.claude/qaa/MY_PREFERENCES.md 2>/dev/null || echo "FILE_NOT_FOUND"
50
+ ```
51
+
52
+ If FILE_NOT_FOUND, create the file with the header template (see below).
53
+
54
+ ### Step 4: Add the new rule
55
+
56
+ Append the rule to the correct category section. If the category doesn't exist, create it.
57
+
58
+ Format for each rule:
59
+ ```
60
+ - [RULE] — (added [YYYY-MM-DD], context: "[what triggered this]")
61
+ ```
62
+
63
+ ### Step 5: Confirm
64
+
65
+ Tell the user: "Guardado. Esto aplica para todas las sesiones futuras en esta maquina."
66
+
67
+ ## Preferences File Template
68
+
69
+ When creating `~/.claude/qaa/MY_PREFERENCES.md` for the first time:
70
+
71
+ ```markdown
72
+ # My QA Preferences
73
+
74
+ Personal preferences for the QA Automation Agent. This file is LOCAL — never committed to any repo.
75
+ All QA agents read this file before generating output.
76
+
77
+ Last updated: [YYYY-MM-DD]
78
+
79
+ ## Language
80
+ <!-- Rules about language: English vs Spanish, terminology, tone -->
81
+
82
+ ## Framework
83
+ <!-- Preferred test frameworks, libraries, tools -->
84
+
85
+ ## Naming
86
+ <!-- Naming conventions for tests, files, IDs -->
87
+
88
+ ## Assertions
89
+ <!-- Rules about assertion style and specificity -->
90
+
91
+ ## Locators
92
+ <!-- Preferred locator strategies for E2E tests -->
93
+
94
+ ## Format
95
+ <!-- Output format preferences: file structure, comments, organization -->
96
+
97
+ ## Workflow
98
+ <!-- Process preferences: what to ask, what to skip, how to present results -->
99
+
100
+ ## Other
101
+ <!-- Anything that doesn't fit above -->
102
+ ```
103
+
104
+ ## How Other Agents Use This
105
+
106
+ Every QA agent (scanner, analyzer, executor, validator, etc.) should check for this file at the start:
107
+
108
+ ```
109
+ If ~/.claude/qaa/MY_PREFERENCES.md exists:
110
+ Read it before generating any output.
111
+ Apply all rules found.
112
+ If a rule conflicts with CLAUDE.md, the PREFERENCE wins (it's a user override).
113
+ ```
114
+
115
+ The preference file is the user's personal override layer on top of the project's CLAUDE.md standards.
116
+
117
+ ## Examples
118
+
119
+ **User says:** "Ya te dije que todo en ingles!"
120
+ **Extract:** Language rule — all output in English
121
+ **Save:** `## Language\n- All test cases, comments, documentation, and reports must be in ENGLISH — (added 2026-03-24, context: "user corrected language to English")`
122
+
123
+ **User says:** "Stop using CSS selectors, use data-testid"
124
+ **Extract:** Locator rule — data-testid over CSS
125
+ **Save:** `## Locators\n- Never use CSS class selectors (.btn, .form-control). Always use data-testid first — (added 2026-03-24, context: "user corrected locator strategy")`
126
+
127
+ **User says:** "Prefiero Playwright, no me pongas Cypress"
128
+ **Extract:** Framework rule — Playwright over Cypress
129
+ **Save:** `## Framework\n- Use Playwright for all E2E tests. Never suggest or use Cypress — (added 2026-03-24, context: "user prefers Playwright over Cypress")`
130
+
131
+ **User says:** "Los test tienen que tener el ID siempre al principio del nombre"
132
+ **Extract:** Naming rule — test ID at start of name
133
+ **Save:** `## Naming\n- Test ID must appear at the beginning of the test name (e.g., "UT-AUTH-001: should validate email format") — (added 2026-03-24, context: "user wants ID at start of test name")`
134
+
135
+ ## Important Rules
136
+
137
+ 1. **NEVER push MY_PREFERENCES.md to any repo** — it's personal
138
+ 2. **If unsure what to save, ASK** — don't guess wrong and save a bad rule
139
+ 3. **Rules accumulate** — never delete old rules unless the user explicitly says to
140
+ 4. **User preference > CLAUDE.md** — if the user says "use Cypress" but CLAUDE.md says "use Playwright", the user wins
141
+ 5. **One rule per line** — keep it scannable
142
+ 6. **Include the date and context** — so the user can review later why a rule exists
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "qaa-agent",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "description": "QA Automation Agent for Claude Code — multi-agent pipeline that analyzes repos, generates tests, validates, and creates PRs",
5
5
  "bin": {
6
6
  "qaa-agent": "./bin/install.cjs"