qaa-agent 1.2.0 → 1.4.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