@bugzy-ai/bugzy 1.2.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 (55) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +248 -0
  3. package/dist/cli/index.cjs +7547 -0
  4. package/dist/cli/index.cjs.map +1 -0
  5. package/dist/cli/index.d.cts +1 -0
  6. package/dist/cli/index.d.ts +1 -0
  7. package/dist/cli/index.js +7539 -0
  8. package/dist/cli/index.js.map +1 -0
  9. package/dist/index.cjs +6439 -0
  10. package/dist/index.cjs.map +1 -0
  11. package/dist/index.d.cts +54 -0
  12. package/dist/index.d.ts +54 -0
  13. package/dist/index.js +6383 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/subagents/index.cjs +2703 -0
  16. package/dist/subagents/index.cjs.map +1 -0
  17. package/dist/subagents/index.d.cts +34 -0
  18. package/dist/subagents/index.d.ts +34 -0
  19. package/dist/subagents/index.js +2662 -0
  20. package/dist/subagents/index.js.map +1 -0
  21. package/dist/subagents/metadata.cjs +207 -0
  22. package/dist/subagents/metadata.cjs.map +1 -0
  23. package/dist/subagents/metadata.d.cts +31 -0
  24. package/dist/subagents/metadata.d.ts +31 -0
  25. package/dist/subagents/metadata.js +174 -0
  26. package/dist/subagents/metadata.js.map +1 -0
  27. package/dist/tasks/index.cjs +3464 -0
  28. package/dist/tasks/index.cjs.map +1 -0
  29. package/dist/tasks/index.d.cts +44 -0
  30. package/dist/tasks/index.d.ts +44 -0
  31. package/dist/tasks/index.js +3431 -0
  32. package/dist/tasks/index.js.map +1 -0
  33. package/dist/templates/init/.bugzy/runtime/project-context.md +35 -0
  34. package/dist/templates/init/.bugzy/runtime/templates/test-plan-template.md +25 -0
  35. package/dist/templates/init/.bugzy/runtime/testing-best-practices.md +278 -0
  36. package/dist/templates/init/.gitignore-template +4 -0
  37. package/package.json +95 -0
  38. package/templates/init/.bugzy/runtime/knowledge-base.md +61 -0
  39. package/templates/init/.bugzy/runtime/knowledge-maintenance-guide.md +97 -0
  40. package/templates/init/.bugzy/runtime/project-context.md +35 -0
  41. package/templates/init/.bugzy/runtime/subagent-memory-guide.md +87 -0
  42. package/templates/init/.bugzy/runtime/templates/test-plan-template.md +25 -0
  43. package/templates/init/.bugzy/runtime/templates/test-result-schema.md +498 -0
  44. package/templates/init/.bugzy/runtime/test-execution-strategy.md +535 -0
  45. package/templates/init/.bugzy/runtime/testing-best-practices.md +632 -0
  46. package/templates/init/.gitignore-template +25 -0
  47. package/templates/init/CLAUDE.md +157 -0
  48. package/templates/init/test-runs/README.md +45 -0
  49. package/templates/playwright/BasePage.template.ts +190 -0
  50. package/templates/playwright/auth.setup.template.ts +89 -0
  51. package/templates/playwright/dataGenerators.helper.template.ts +148 -0
  52. package/templates/playwright/dateUtils.helper.template.ts +96 -0
  53. package/templates/playwright/pages.fixture.template.ts +50 -0
  54. package/templates/playwright/playwright.config.template.ts +97 -0
  55. package/templates/playwright/reporters/bugzy-reporter.ts +454 -0
@@ -0,0 +1,278 @@
1
+ # Testing Best Practices Reference
2
+
3
+ ## Page Object Model (POM) Architecture
4
+
5
+ **Core Principle**: Separate locators, actions, and assertions into distinct layers to isolate UI changes from test logic.
6
+
7
+ ### Page Object Structure
8
+
9
+ ```typescript
10
+ import { type Page, type Locator } from '@playwright/test';
11
+
12
+ export class LoginPage {
13
+ readonly page: Page;
14
+
15
+ // Centralized selectors as readonly properties
16
+ readonly emailInput: Locator;
17
+ readonly passwordInput: Locator;
18
+ readonly loginButton: Locator;
19
+
20
+ constructor(page: Page) {
21
+ this.page = page;
22
+ this.emailInput = page.getByLabel('Email');
23
+ this.passwordInput = page.getByLabel('Password');
24
+ this.loginButton = page.getByRole('button', { name: 'Sign In' });
25
+ }
26
+
27
+ async navigate(): Promise<void> {
28
+ await this.page.goto('/login');
29
+ }
30
+
31
+ async login(email: string, password: string): Promise<void> {
32
+ await this.emailInput.fill(email);
33
+ await this.passwordInput.fill(password);
34
+ await this.loginButton.click();
35
+ }
36
+ }
37
+ ```
38
+
39
+ ### Key Rules for Page Objects
40
+
41
+ - ✅ Define all locators as `readonly` properties
42
+ - ✅ Initialize locators in constructor
43
+ - ✅ Use method names that describe actions (login, fillEmail, clickSubmit)
44
+ - ✅ Return data, never assert in page objects
45
+ - ❌ Never put `expect()` assertions in page objects
46
+ - ❌ Never use hardcoded waits (`waitForTimeout`)
47
+
48
+ ## Selector Priority (Most to Least Resilient)
49
+
50
+ 1. **Role-based**: `page.getByRole('button', { name: 'Submit' })` - Best for semantic HTML
51
+ 2. **Label**: `page.getByLabel('Email')` - Perfect for form inputs
52
+ 3. **Text**: `page.getByText('Welcome back')` - Good for headings/static content
53
+ 4. **Placeholder**: `page.getByPlaceholder('Enter email')` - Inputs without labels
54
+ 5. **Test ID**: `page.getByTestId('submit-btn')` - Stable but requires data-testid attributes
55
+ 6. **CSS selectors**: `page.locator('.btn-primary')` - Avoid; breaks with styling changes
56
+
57
+ ### When to Use Test IDs
58
+
59
+ Add `data-testid` attributes for:
60
+ - Critical user flows (checkout, login, signup)
61
+ - Complex components (data tables, multi-step forms)
62
+ - Elements where role-based selectors are ambiguous
63
+
64
+ ```html
65
+ <button data-testid="checkout-submit">Complete Purchase</button>
66
+ ```
67
+
68
+ ```typescript
69
+ await page.getByTestId('checkout-submit').click();
70
+ ```
71
+
72
+ ## Test Organization
73
+
74
+ ### File Structure by Feature
75
+
76
+ ```
77
+ tests/
78
+ ├── specs/ # Tests organized by feature
79
+ │ ├── auth/
80
+ │ │ └── login.spec.ts
81
+ │ └── checkout/
82
+ │ └── purchase-flow.spec.ts
83
+ ├── pages/ # Page Object Models
84
+ │ ├── LoginPage.ts
85
+ │ └── CheckoutPage.ts
86
+ ├── components/ # Reusable UI components
87
+ ├── fixtures/ # Custom test fixtures
88
+ ├── helpers/ # Utility functions
89
+ └── setup/ # Global setup/teardown
90
+ ```
91
+
92
+ ### Test Structure
93
+
94
+ ```typescript
95
+ test.describe('Purchase flow', () => {
96
+ test.beforeEach(async ({ page }) => {
97
+ // Common setup
98
+ });
99
+
100
+ test('should complete purchase with credit card', async ({ page }) => {
101
+ // Arrange: Set up page objects
102
+ const checkoutPage = new CheckoutPage(page);
103
+
104
+ // Act: Perform actions
105
+ await checkoutPage.fillPaymentInfo({/*...*/});
106
+ await checkoutPage.submitOrder();
107
+
108
+ // Assert: Verify outcomes
109
+ await expect(page).toHaveURL('/confirmation');
110
+ });
111
+ });
112
+ ```
113
+
114
+ ## Authentication & Session Management
115
+
116
+ **Always authenticate once and reuse session state** across tests.
117
+
118
+ ```typescript
119
+ // tests/setup/auth.setup.ts
120
+ import { test as setup } from '@playwright/test';
121
+
122
+ const authFile = 'playwright/.auth/user.json';
123
+
124
+ setup('authenticate', async ({ page }) => {
125
+ await page.goto('/login');
126
+ await page.getByLabel('Email').fill(process.env.USER_EMAIL!);
127
+ await page.getByLabel('Password').fill(process.env.USER_PASSWORD!);
128
+ await page.getByRole('button', { name: 'Sign in' }).click();
129
+
130
+ await page.waitForURL('/dashboard');
131
+ await page.context().storageState({ path: authFile });
132
+ });
133
+ ```
134
+
135
+ Configure in `playwright.config.ts`:
136
+
137
+ ```typescript
138
+ projects: [
139
+ { name: 'setup', testMatch: /.*\.setup\.ts/ },
140
+ {
141
+ name: 'chromium',
142
+ use: { storageState: 'playwright/.auth/user.json' },
143
+ dependencies: ['setup'],
144
+ },
145
+ ]
146
+ ```
147
+
148
+ ## Async Operations & Waiting
149
+
150
+ ### Use Built-in Auto-waiting
151
+
152
+ Playwright automatically waits for elements to be:
153
+ - Visible
154
+ - Enabled
155
+ - Stable (not animating)
156
+ - Ready to receive events
157
+
158
+ ```typescript
159
+ // ✅ GOOD: Auto-waiting
160
+ await page.click('#submit');
161
+ await expect(page.locator('.result')).toBeVisible();
162
+
163
+ // ❌ BAD: Manual arbitrary wait
164
+ await page.click('#submit');
165
+ await page.waitForTimeout(3000);
166
+ ```
167
+
168
+ ### Explicit Waiting (when needed)
169
+
170
+ ```typescript
171
+ // Wait for element state
172
+ await page.locator('.loading').waitFor({ state: 'hidden' });
173
+
174
+ // Wait for URL change
175
+ await page.waitForURL('**/dashboard');
176
+
177
+ // Wait for network request
178
+ const response = await page.waitForResponse(
179
+ resp => resp.url().includes('/api/data') && resp.status() === 200
180
+ );
181
+ ```
182
+
183
+ ## Common Anti-Patterns to Avoid
184
+
185
+ | ❌ Anti-Pattern | ✅ Correct Approach |
186
+ |----------------|-------------------|
187
+ | `await page.waitForTimeout(3000)` | `await expect(element).toBeVisible()` |
188
+ | `const el = await page.$('.btn')` | `await page.locator('.btn').click()` |
189
+ | Tests depend on execution order | Each test is fully independent |
190
+ | Assertions in Page Objects | Assertions only in test files |
191
+ | `#app > div:nth-child(2) > button` | `page.getByRole('button', { name: 'Submit' })` |
192
+ | `retries: 5` to mask flakiness | `retries: 2` + fix root cause |
193
+
194
+ ## Debugging Workflow
195
+
196
+ When a test fails:
197
+
198
+ 1. **Reproduce locally**: `npx playwright test failing-test.spec.ts --headed`
199
+ 2. **Enable trace**: `npx playwright test --trace on`
200
+ 3. **View trace**: `npx playwright show-trace test-results/.../trace.zip`
201
+ 4. **Identify failure**: Scrub timeline, check DOM snapshots
202
+ 5. **Review network**: Look for failed API calls
203
+ 6. **Check console**: JavaScript errors/warnings
204
+ 7. **Fix selector**: Use inspector's locator picker
205
+ 8. **Verify fix**: Run test 10 times to ensure stability
206
+
207
+ ## API Testing for Speed
208
+
209
+ **Use API calls for test setup** (10-20x faster than UI):
210
+
211
+ ```typescript
212
+ test('should display user dashboard', async ({ request, page }) => {
213
+ // FAST: Create test data via API
214
+ await request.post('/api/users', {
215
+ data: { name: 'Test User', email: 'test@example.com' }
216
+ });
217
+
218
+ // UI: Test the actual user experience
219
+ await page.goto('/dashboard');
220
+ await expect(page.getByText('Test User')).toBeVisible();
221
+ });
222
+ ```
223
+
224
+ ## Configuration Essentials
225
+
226
+ ```typescript
227
+ // playwright.config.ts
228
+ export default defineConfig({
229
+ testDir: './tests/specs',
230
+ fullyParallel: true,
231
+ retries: process.env.CI ? 2 : 0,
232
+ workers: process.env.CI ? 1 : undefined,
233
+
234
+ timeout: 30000,
235
+ expect: { timeout: 5000 },
236
+
237
+ use: {
238
+ baseURL: process.env.BASE_URL,
239
+ trace: 'on-first-retry',
240
+ screenshot: 'only-on-failure',
241
+ video: 'retain-on-failure',
242
+ actionTimeout: 10000,
243
+ },
244
+ });
245
+ ```
246
+
247
+ ## Production-Ready Checklist
248
+
249
+ **Configuration:**
250
+ - [ ] Parallel execution enabled (`fullyParallel: true`)
251
+ - [ ] Retry strategy configured (2 in CI, 0 locally)
252
+ - [ ] Base URL from environment variables
253
+ - [ ] Artifact capture optimized (`on-first-retry`)
254
+
255
+ **Architecture:**
256
+ - [ ] Page Object Model for all major pages
257
+ - [ ] Component Objects for reusable UI elements
258
+ - [ ] Custom fixtures for common setup
259
+ - [ ] Tests organized by feature/user journey
260
+
261
+ **Best Practices:**
262
+ - [ ] No `waitForTimeout()` usage
263
+ - [ ] Tests are independent (run in any order)
264
+ - [ ] Assertions in test files, not Page Objects
265
+ - [ ] Role-based selectors prioritized
266
+ - [ ] No hardcoded credentials
267
+
268
+ **CI/CD:**
269
+ - [ ] Tests run on every pull request
270
+ - [ ] Artifacts uploaded (reports, traces)
271
+ - [ ] Failure notifications configured
272
+
273
+ ---
274
+
275
+ **Remember**: The three critical pillars are:
276
+ 1. **Page Object Model** - Isolate UI changes from test logic
277
+ 2. **Role-based selectors** - Resist breakage
278
+ 3. **Authentication state reuse** - Maximize speed
@@ -0,0 +1,4 @@
1
+
2
+ # Bugzy
3
+ .env
4
+ .env.local
package/package.json ADDED
@@ -0,0 +1,95 @@
1
+ {
2
+ "name": "@bugzy-ai/bugzy",
3
+ "version": "1.2.0",
4
+ "description": "Open-source AI agent configuration for QA automation with Claude Code",
5
+ "publishConfig": {
6
+ "access": "public"
7
+ },
8
+ "keywords": [
9
+ "ai",
10
+ "testing",
11
+ "qa",
12
+ "automation",
13
+ "claude",
14
+ "mcp",
15
+ "agent",
16
+ "test-automation",
17
+ "claude-code"
18
+ ],
19
+ "homepage": "https://github.com/bugzy-ai/bugzy#readme",
20
+ "bugs": {
21
+ "url": "https://github.com/bugzy-ai/bugzy/issues"
22
+ },
23
+ "repository": {
24
+ "type": "git",
25
+ "url": "git+https://github.com/bugzy-ai/bugzy.git"
26
+ },
27
+ "license": "MIT",
28
+ "author": "Bugzy Team",
29
+ "type": "module",
30
+ "exports": {
31
+ ".": {
32
+ "types": "./dist/index.d.ts",
33
+ "import": "./dist/index.js",
34
+ "require": "./dist/index.cjs"
35
+ },
36
+ "./tasks": {
37
+ "types": "./dist/tasks/index.d.ts",
38
+ "import": "./dist/tasks/index.js"
39
+ },
40
+ "./subagents": {
41
+ "types": "./dist/subagents/index.d.ts",
42
+ "import": "./dist/subagents/index.js"
43
+ },
44
+ "./subagents/metadata": {
45
+ "types": "./dist/subagents/metadata.d.ts",
46
+ "import": "./dist/subagents/metadata.js"
47
+ }
48
+ },
49
+ "main": "./dist/index.cjs",
50
+ "module": "./dist/index.js",
51
+ "types": "./dist/index.d.ts",
52
+ "bin": {
53
+ "bugzy": "./dist/cli/index.js"
54
+ },
55
+ "files": [
56
+ "dist",
57
+ "templates",
58
+ "README.md",
59
+ "LICENSE"
60
+ ],
61
+ "scripts": {
62
+ "build": "tsup",
63
+ "dev": "tsup --watch",
64
+ "test": "vitest run",
65
+ "test:ci": "vitest run",
66
+ "type-check": "tsc --noEmit",
67
+ "lint": "eslint src",
68
+ "prepublishOnly": "pnpm run build && pnpm run test:ci"
69
+ },
70
+ "dependencies": {
71
+ "chalk": "^5.3.0",
72
+ "commander": "^11.1.0",
73
+ "dotenv": "^16.3.1",
74
+ "figlet": "^1.9.3",
75
+ "gradient-string": "^3.0.0",
76
+ "inquirer": "^9.2.12",
77
+ "ora": "^7.0.1"
78
+ },
79
+ "devDependencies": {
80
+ "@types/figlet": "^1.7.0",
81
+ "@types/gradient-string": "^1.1.6",
82
+ "@types/inquirer": "^9.0.7",
83
+ "@types/node": "^20.10.5",
84
+ "@typescript-eslint/eslint-plugin": "^6.15.0",
85
+ "@typescript-eslint/parser": "^6.15.0",
86
+ "eslint": "^8.56.0",
87
+ "gray-matter": "^4.0.3",
88
+ "tsup": "^8.0.1",
89
+ "typescript": "^5.3.3",
90
+ "vitest": "^1.1.0"
91
+ },
92
+ "engines": {
93
+ "node": ">=18.0.0"
94
+ }
95
+ }
@@ -0,0 +1,61 @@
1
+ # Knowledge Base
2
+
3
+ > A curated collection of factual knowledge about this project - what we currently know and believe to be true. This is NOT a historical log, but a living reference that evolves as understanding improves.
4
+
5
+ **Maintenance Guide**: See `knowledge-maintenance-guide.md` for instructions on how to maintain this knowledge base.
6
+
7
+ **Core Principle**: This document represents current understanding, not a history. When knowledge evolves, update existing entries rather than appending new ones.
8
+
9
+ ---
10
+
11
+ ## Project Knowledge
12
+
13
+ _This knowledge base will be populated as you work. Add new discoveries, update existing understanding, and remove outdated information following the maintenance guide principles._
14
+
15
+ ### When to Update This File
16
+
17
+ - **ADD**: New factual information discovered, new patterns emerge, new areas become relevant
18
+ - **UPDATE**: Facts change, understanding deepens, multiple facts can be consolidated, language can be clarified
19
+ - **REMOVE**: Information becomes irrelevant, facts proven incorrect, entries superseded by better content
20
+
21
+ ### Format Guidelines
22
+
23
+ - Use clear, declarative statements in present tense
24
+ - State facts confidently when known; flag uncertainty when it exists
25
+ - Write for someone reading this 6 months from now
26
+ - Keep entries relevant and actionable
27
+ - Favor consolidation over accumulation
28
+
29
+ ---
30
+
31
+ ## Example Structure
32
+
33
+ Below is an example structure. Feel free to organize knowledge in the way that makes most sense for this project:
34
+
35
+ ### Architecture & Infrastructure
36
+
37
+ _System architecture, deployment patterns, infrastructure details_
38
+
39
+ ### Testing Patterns
40
+
41
+ _Test strategies, common test scenarios, testing conventions_
42
+
43
+ ### UI/UX Patterns
44
+
45
+ _User interface conventions, interaction patterns, design system details_
46
+
47
+ ### Data & APIs
48
+
49
+ _Data models, API behaviors, integration patterns_
50
+
51
+ ### Known Issues & Workarounds
52
+
53
+ _Current limitations, known bugs, and their workarounds_
54
+
55
+ ### Domain Knowledge
56
+
57
+ _Business domain facts, terminology, rules, and context_
58
+
59
+ ---
60
+
61
+ **Remember**: Every entry should answer "Will this help someone working on this project in 6 months?"
@@ -0,0 +1,97 @@
1
+ # Knowledge Maintenance Guide
2
+
3
+ ## Overview
4
+
5
+ This document provides instructions for maintaining a **Context** or **Knowledge Base** - a living collection of factual knowledge that is actively curated and updated rather than simply accumulated over time.
6
+
7
+ ---
8
+
9
+ ## Core Principle: This is a Curated Snapshot, Not a Log
10
+
11
+ This document represents **what we currently know and believe to be true**, not a history of what we've learned. Think of it as a living reference that evolves as understanding improves.
12
+
13
+ ---
14
+
15
+ ## When to ADD
16
+
17
+ Add new entries when:
18
+
19
+ - New factual information is discovered
20
+ - New patterns or relationships emerge
21
+ - New areas of knowledge become relevant
22
+
23
+ **Check first**: Does this duplicate or overlap with existing entries?
24
+
25
+ ---
26
+
27
+ ## When to UPDATE
28
+
29
+ Update existing entries when:
30
+
31
+ - Facts change or we discover more accurate information
32
+ - Understanding deepens (replace shallow with deeper insight)
33
+ - Multiple related facts can be consolidated into one coherent statement
34
+ - Language can be clarified or made more precise
35
+
36
+ **Goal**: Replace outdated understanding with current understanding
37
+
38
+ ---
39
+
40
+ ## When to REMOVE
41
+
42
+ Remove entries when:
43
+
44
+ - Information becomes irrelevant to current needs
45
+ - Facts are proven incorrect (unless there's value in noting the correction)
46
+ - Information is superseded by better, more comprehensive entries
47
+ - Entry is redundant with other content
48
+
49
+ **Key question**: "If someone reads this in 6 months, will it help them?"
50
+
51
+ ---
52
+
53
+ ## Maintenance Principles
54
+
55
+ ### 1. Favor Consolidation Over Addition
56
+
57
+ - Before adding, ask: "Can this merge with existing knowledge?"
58
+ - Example: Instead of 10 facts about a person, maintain 2-3 well-organized paragraphs
59
+
60
+ ### 2. Update Rather Than Append
61
+
62
+ - When information evolves, replace the old statement
63
+ - Keep history only if the evolution itself is important
64
+ - Example: ~~"User is learning Python"~~ → "User is proficient in Python and focusing on FastAPI"
65
+
66
+ ### 3. Regular Pruning
67
+
68
+ - Periodically review for outdated or low-value entries
69
+ - Ask: "Is this still accurate? Still relevant? Could it be stated better?"
70
+ - Aim for signal-to-noise ratio improvement
71
+
72
+ ### 4. Quality Over Completeness
73
+
74
+ - Better to have 50 highly relevant, accurate facts than 500 marginally useful ones
75
+ - Prioritize insights over raw data
76
+ - Focus on what's actionable or decision-relevant
77
+
78
+ ### 5. Resolve Contradictions Immediately
79
+
80
+ - If new information contradicts old, investigate and keep only the truth
81
+ - Don't accumulate conflicting statements
82
+
83
+ ### 6. Use Clear, Declarative Statements
84
+
85
+ - Write in present tense: "User works at X" not "User mentioned they work at X"
86
+ - State facts confidently when known; flag uncertainty when it exists
87
+ - Avoid hedging unless genuinely uncertain
88
+
89
+ ---
90
+
91
+ ## Anti-Patterns to Avoid
92
+
93
+ | ❌ Don't Do This | ✅ Do This Instead |
94
+ |-----------------|-------------------|
95
+ | "On Tuesday user said X, then on Friday user said Y" | "User's position on X is Y" (keep most current) |
96
+ | Keeping every detail ever mentioned | Keeping relevant, current details |
97
+ | "User might like coffee, user mentioned tea once, user drinks water" | "User prefers tea; also drinks coffee occasionally" |
@@ -0,0 +1,35 @@
1
+ # Project Context
2
+
3
+ ## Customer Information
4
+ **Customer Name:** {{CUSTOMER_NAME}}
5
+ **Primary Contact:** [To be filled]
6
+
7
+ ## Project Information
8
+ **Project Name:** {{PROJECT_NAME}}
9
+ **Description:** [To be filled]
10
+ **Repository:** [To be filled]
11
+
12
+ ## Development Process
13
+ **Methodology:** [Agile/Waterfall/Hybrid - To be filled]
14
+ **Sprint Length:** [e.g., 2 weeks - To be filled]
15
+ **Current Sprint:** [To be filled]
16
+
17
+ ## QA Integration
18
+ **QA Entry Point:** [e.g., After development complete, During development - To be filled]
19
+ **Definition of Done:** [QA criteria for story completion - To be filled]
20
+ **Sign-off Process:** [Who approves test results - To be filled]
21
+
22
+ ## Tools & Systems
23
+ **Bug Tracking:** {{BUG_TRACKING_SYSTEM}}
24
+ **Documentation:** {{DOCUMENTATION_SYSTEM}}
25
+ **CI/CD Platform:** [e.g., GitHub Actions, Jenkins - To be filled]
26
+ **Communication:** [e.g., Slack channel - To be filled]
27
+
28
+ ## Team Contacts
29
+ **Product Owner:** [Name and contact - To be filled]
30
+ **Tech Lead:** [Name and contact - To be filled]
31
+ **QA Lead:** [Name and contact - To be filled]
32
+ **DevOps Contact:** [Name and contact - To be filled]
33
+
34
+ ## Notes
35
+ [Any additional context about the project, special requirements, or considerations]
@@ -0,0 +1,87 @@
1
+ # Sub-Agent Memory: Maintenance Instructions
2
+
3
+ ## What This Memory Is
4
+
5
+ A focused collection of knowledge relevant to your specific role. This is your working knowledge, not a log of interactions.
6
+
7
+ ---
8
+
9
+ ## When to ADD
10
+
11
+ Add when information:
12
+ - Directly impacts your decisions or outputs
13
+ - Represents a pattern or learning within your domain
14
+ - Prevents repeated mistakes in your area
15
+
16
+ **Check first**: Does this overlap with main agent knowledge or another sub-agent's domain?
17
+
18
+ ---
19
+
20
+ ## When to UPDATE
21
+
22
+ Update when:
23
+ - Preferences or requirements change within your domain
24
+ - Understanding deepens through repeated interactions
25
+ - Patterns evolve or are refined
26
+ - Multiple related facts can be consolidated
27
+
28
+ **Replace** outdated information with current understanding.
29
+
30
+ ---
31
+
32
+ ## When to REMOVE
33
+
34
+ Remove when:
35
+ - No longer relevant to current work
36
+ - Better handled by main agent's knowledge
37
+ - Proven incorrect or outdated
38
+ - Never actually used in decision-making
39
+
40
+ **Test**: "Has this influenced a decision recently? Will it influence one soon?"
41
+
42
+ ---
43
+
44
+ ## Core Rules
45
+
46
+ 1. **Stay in your domain** - Don't duplicate main agent knowledge
47
+ 2. **Operational over historical** - Keep patterns, not logs
48
+ 3. **Patterns over instances** - Generalize from specific events
49
+ 4. **Actionable over observational** - Every entry must answer "How does this change what I do?"
50
+ 5. **Consolidate aggressively** - Aim for 10-30 high-signal entries
51
+ 6. **Update as understanding crystallizes** - Refine vague into specific
52
+
53
+ ---
54
+
55
+ ## Quick Decision Tree
56
+
57
+ ```
58
+ New information
59
+
60
+ ├─ Relevant to my function? No → Ignore or suggest for main agent
61
+ │ Yes ↓
62
+
63
+ ├─ Actionable (changes what I do)? No → Don't store
64
+ │ Yes ↓
65
+
66
+ ├─ Duplicates existing? Yes → UPDATE existing entry
67
+ │ No ↓
68
+
69
+ └─ Belongs in main agent? Yes → Move to main agent
70
+ No → ADD to my memory
71
+ ```
72
+
73
+ ---
74
+
75
+ ## Division with Main Agent
76
+
77
+ **Main Agent** stores:
78
+ - User's overall preferences and background
79
+ - Project-wide decisions
80
+ - Cross-cutting concerns
81
+
82
+ **You (Sub-Agent)** store:
83
+ - Domain-specific preferences and patterns
84
+ - Tactical learnings within your scope
85
+ - Working knowledge for your specific tasks
86
+
87
+ **When in doubt**: If multiple sub-agents could use it → Main agent
@@ -0,0 +1,25 @@
1
+ # Test Plan Template
2
+
3
+ ## Test Scenarios
4
+
5
+ ### Scenario 1: [Name]
6
+ **Objective**: [What are we testing?]
7
+
8
+ **Test Cases**:
9
+ 1. [Test case description]
10
+ 2. [Test case description]
11
+
12
+ **Expected Results**:
13
+ - [Expected outcome]
14
+
15
+ ### Scenario 2: [Name]
16
+ **Objective**: [What are we testing?]
17
+
18
+ **Test Cases**:
19
+ 1. [Test case description]
20
+
21
+ **Expected Results**:
22
+ - [Expected outcome]
23
+
24
+ ## Notes
25
+ [Add any additional context or requirements]