@zweer/dev 1.2.0 → 2.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.
- package/README.md +68 -467
- package/configs/_biome.json +38 -0
- package/configs/commitlint.config.ts +1 -0
- package/configs/editorconfig +16 -0
- package/configs/lefthook.yml +38 -0
- package/configs/lockfile-lintrc.json +6 -0
- package/configs/npmpackagejsonlintrc.json +34 -0
- package/configs/tsconfig.json +9 -0
- package/configs/tsdown.config.ts +8 -0
- package/configs/vitest.config.ts +12 -0
- package/dist/index.d.mts +1 -0
- package/dist/index.mjs +247 -0
- package/dist/index.mjs.map +1 -0
- package/kiro/agents/zweer-setup.json +38 -0
- package/kiro/prompts/zweer-setup.md +55 -0
- package/kiro/skills/agent-template/SKILL.md +22 -0
- package/kiro/skills/agent-template/references/base.json +38 -0
- package/kiro/skills/agent-template/references/example-monorepo-library.json +60 -0
- package/kiro/skills/agent-template/references/example-webapp-vercel.json +54 -0
- package/kiro/skills/prompt-template/SKILL.md +23 -0
- package/kiro/skills/prompt-template/references/example-library.md +56 -0
- package/kiro/skills/prompt-template/references/example-webapp.md +57 -0
- package/kiro/skills/skill-templates/SKILL.md +23 -0
- package/kiro/skills/skill-templates/references/new-package.md +72 -0
- package/kiro/skills/steering-templates/SKILL.md +31 -0
- package/kiro/skills/steering-templates/references/build-tooling.md +62 -0
- package/kiro/skills/steering-templates/references/code-style.md +83 -0
- package/kiro/skills/steering-templates/references/commit-conventions.md +58 -0
- package/kiro/skills/steering-templates/references/interaction.md +41 -0
- package/kiro/skills/steering-templates/references/testing.md +61 -0
- package/kiro/steering/build-tooling.md +62 -0
- package/kiro/steering/code-style.md +83 -0
- package/kiro/steering/commit-conventions.md +58 -0
- package/kiro/steering/interaction.md +41 -0
- package/kiro/steering/testing.md +61 -0
- package/package.json +42 -57
- package/templates/monorepo/CHANGELOG.md +5 -0
- package/templates/monorepo/README.md +22 -0
- package/templates/monorepo/package.json +30 -0
- package/templates/monorepo/packages/core/CHANGELOG.md +5 -0
- package/templates/monorepo/packages/core/README.md +21 -0
- package/templates/monorepo/packages/core/package.json +28 -0
- package/templates/monorepo/packages/core/src/index.ts +3 -0
- package/templates/monorepo/packages/core/test/index.test.ts +9 -0
- package/templates/monorepo/tsdown.config.ts +12 -0
- package/templates/monorepo/vitest.config.ts +12 -0
- package/templates/single/CHANGELOG.md +5 -0
- package/templates/single/README.md +30 -0
- package/templates/single/package.json +38 -0
- package/templates/single/src/index.ts +3 -0
- package/templates/single/test/index.test.ts +9 -0
- package/templates/single/tsdown.config.ts +11 -0
- package/workflows/base/ci.yml +24 -0
- package/workflows/base/dependabot-auto-merge.yml +43 -0
- package/workflows/base/dependabot-lockfile.yml +34 -0
- package/workflows/base/dependabot.yml +39 -0
- package/workflows/base/pr.yml +41 -0
- package/workflows/base/security.yml +25 -0
- package/workflows/docs/docs.yml +47 -0
- package/workflows/library/npm.yml +45 -0
- package/agents/data/zweer_data_engineer.md +0 -436
- package/agents/design/zweer_ui_designer.md +0 -171
- package/agents/design/zweer_ui_ux.md +0 -124
- package/agents/infrastructure/zweer_infra_cdk.md +0 -701
- package/agents/infrastructure/zweer_infra_devops.md +0 -148
- package/agents/infrastructure/zweer_infra_observability.md +0 -610
- package/agents/infrastructure/zweer_infra_terraform.md +0 -658
- package/agents/mobile/zweer_mobile_android.md +0 -636
- package/agents/mobile/zweer_mobile_flutter.md +0 -623
- package/agents/mobile/zweer_mobile_ionic.md +0 -550
- package/agents/mobile/zweer_mobile_ios.md +0 -504
- package/agents/mobile/zweer_mobile_react_native.md +0 -561
- package/agents/quality/zweer_qa_documentation.md +0 -202
- package/agents/quality/zweer_qa_performance.md +0 -160
- package/agents/quality/zweer_qa_security.md +0 -197
- package/agents/quality/zweer_qa_testing.md +0 -189
- package/agents/services/zweer_svc_api_gateway.md +0 -553
- package/agents/services/zweer_svc_containers.md +0 -575
- package/agents/services/zweer_svc_lambda.md +0 -373
- package/agents/services/zweer_svc_messaging.md +0 -543
- package/agents/services/zweer_svc_microservices.md +0 -502
- package/agents/web/zweer_web_api_integration.md +0 -500
- package/agents/web/zweer_web_backend.md +0 -358
- package/agents/web/zweer_web_database.md +0 -357
- package/agents/web/zweer_web_frontend.md +0 -375
- package/agents/web/zweer_web_reader.md +0 -229
- package/agents/write/zweer_write_content.md +0 -499
- package/agents/write/zweer_write_narrative.md +0 -409
- package/agents/write/zweer_write_style.md +0 -247
- package/agents/write/zweer_write_warmth.md +0 -282
- package/cli/commands/bootstrap.d.ts +0 -4
- package/cli/commands/bootstrap.js +0 -377
- package/cli/commands/cao/agent/create.d.ts +0 -17
- package/cli/commands/cao/agent/create.js +0 -89
- package/cli/commands/cao/agent/index.d.ts +0 -2
- package/cli/commands/cao/agent/index.js +0 -8
- package/cli/commands/cao/agent/list.d.ts +0 -3
- package/cli/commands/cao/agent/list.js +0 -29
- package/cli/commands/cao/agent/remove.d.ts +0 -5
- package/cli/commands/cao/agent/remove.js +0 -39
- package/cli/commands/cao/index.d.ts +0 -2
- package/cli/commands/cao/index.js +0 -18
- package/cli/commands/cao/init.d.ts +0 -15
- package/cli/commands/cao/init.js +0 -87
- package/cli/commands/cao/install.d.ts +0 -10
- package/cli/commands/cao/install.js +0 -59
- package/cli/commands/cao/launch.d.ts +0 -3
- package/cli/commands/cao/launch.js +0 -21
- package/cli/commands/cao/list.d.ts +0 -4
- package/cli/commands/cao/list.js +0 -28
- package/cli/commands/cao/server.d.ts +0 -3
- package/cli/commands/cao/server.js +0 -20
- package/cli/commands/cao/sync.d.ts +0 -6
- package/cli/commands/cao/sync.js +0 -52
- package/cli/commands/setup.d.ts +0 -4
- package/cli/commands/setup.js +0 -346
- package/cli/index.d.ts +0 -2
- package/cli/index.js +0 -13
- package/cli/utils/agents.d.ts +0 -8
- package/cli/utils/agents.js +0 -55
- package/cli/utils/cao.d.ts +0 -9
- package/cli/utils/cao.js +0 -40
- package/cli/utils/paths.d.ts +0 -5
- package/cli/utils/paths.js +0 -11
- package/templates/orchestrator.md +0 -190
|
@@ -1,189 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: zweer_qa_testing
|
|
3
|
-
description: Testing engineer for unit tests, integration tests, E2E tests, and automation
|
|
4
|
-
model: claude-sonnet-4.5
|
|
5
|
-
mcpServers:
|
|
6
|
-
cao-mcp-server:
|
|
7
|
-
type: stdio
|
|
8
|
-
command: uvx
|
|
9
|
-
args:
|
|
10
|
-
- "--from"
|
|
11
|
-
- "git+https://github.com/awslabs/cli-agent-orchestrator.git@main"
|
|
12
|
-
- "cao-mcp-server"
|
|
13
|
-
tools: ["*"]
|
|
14
|
-
allowedTools: ["fs_read", "fs_write", "execute_bash", "@cao-mcp-server"]
|
|
15
|
-
toolsSettings:
|
|
16
|
-
execute_bash:
|
|
17
|
-
alwaysAllow:
|
|
18
|
-
- preset: "readOnly"
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
# Testing Engineer Agent
|
|
22
|
-
|
|
23
|
-
## Description
|
|
24
|
-
|
|
25
|
-
Generic testing engineer specialized in unit tests, integration tests, E2E tests, and test automation.
|
|
26
|
-
|
|
27
|
-
## Instructions
|
|
28
|
-
|
|
29
|
-
Expert in:
|
|
30
|
-
- Vitest and Testing Library
|
|
31
|
-
- Playwright for E2E
|
|
32
|
-
- Test-driven development (TDD)
|
|
33
|
-
- Mocking and fixtures
|
|
34
|
-
- Test coverage
|
|
35
|
-
- CI/CD integration
|
|
36
|
-
|
|
37
|
-
### Responsibilities
|
|
38
|
-
|
|
39
|
-
1. Write unit tests for utilities and functions
|
|
40
|
-
2. Write component tests
|
|
41
|
-
3. Write integration tests for APIs
|
|
42
|
-
4. Write E2E tests for user flows
|
|
43
|
-
5. Set up test infrastructure
|
|
44
|
-
6. Maintain test coverage
|
|
45
|
-
|
|
46
|
-
### Best Practices
|
|
47
|
-
|
|
48
|
-
**Unit Test (Vitest)**:
|
|
49
|
-
```typescript
|
|
50
|
-
// lib/utils.test.ts
|
|
51
|
-
import { describe, it, expect } from 'vitest'
|
|
52
|
-
import { formatChapterNumber } from './utils'
|
|
53
|
-
|
|
54
|
-
describe('formatChapterNumber', () => {
|
|
55
|
-
it('formats integer chapters', () => {
|
|
56
|
-
expect(formatChapterNumber(1)).toBe('Chapter 1')
|
|
57
|
-
})
|
|
58
|
-
|
|
59
|
-
it('formats decimal chapters', () => {
|
|
60
|
-
expect(formatChapterNumber(1.5)).toBe('Chapter 1.5')
|
|
61
|
-
})
|
|
62
|
-
|
|
63
|
-
it('handles zero', () => {
|
|
64
|
-
expect(formatChapterNumber(0)).toBe('Chapter 0')
|
|
65
|
-
})
|
|
66
|
-
})
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
**Component Test**:
|
|
70
|
-
```typescript
|
|
71
|
-
// components/manga-card.test.tsx
|
|
72
|
-
import { render, screen } from '@testing-library/react'
|
|
73
|
-
import { MangaCard } from './manga-card'
|
|
74
|
-
|
|
75
|
-
describe('MangaCard', () => {
|
|
76
|
-
const mockManga = {
|
|
77
|
-
id: '1',
|
|
78
|
-
title: 'Test Manga',
|
|
79
|
-
coverUrl: '/cover.jpg',
|
|
80
|
-
author: 'Test Author'
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
it('renders manga title', () => {
|
|
84
|
-
render(<MangaCard manga={mockManga} />)
|
|
85
|
-
expect(screen.getByText('Test Manga')).toBeInTheDocument()
|
|
86
|
-
})
|
|
87
|
-
|
|
88
|
-
it('renders author name', () => {
|
|
89
|
-
render(<MangaCard manga={mockManga} />)
|
|
90
|
-
expect(screen.getByText('Test Author')).toBeInTheDocument()
|
|
91
|
-
})
|
|
92
|
-
})
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
**E2E Test (Playwright)**:
|
|
96
|
-
```typescript
|
|
97
|
-
// e2e/reading-flow.spec.ts
|
|
98
|
-
import { test, expect } from '@playwright/test'
|
|
99
|
-
|
|
100
|
-
test('user can read a chapter', async ({ page }) => {
|
|
101
|
-
await page.goto('/manga/test-manga')
|
|
102
|
-
|
|
103
|
-
await page.click('text=Chapter 1')
|
|
104
|
-
await expect(page).toHaveURL(/\/manga\/.*\/chapter\/.*/)
|
|
105
|
-
|
|
106
|
-
await expect(page.locator('img[alt*="Page"]')).toBeVisible()
|
|
107
|
-
|
|
108
|
-
await page.keyboard.press('ArrowRight')
|
|
109
|
-
await expect(page.locator('text=2 /')).toBeVisible()
|
|
110
|
-
})
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
### What to Do
|
|
114
|
-
|
|
115
|
-
✅ Test critical paths
|
|
116
|
-
✅ Mock external dependencies
|
|
117
|
-
✅ Test edge cases
|
|
118
|
-
✅ Write descriptive test names
|
|
119
|
-
✅ Keep tests isolated
|
|
120
|
-
✅ Use fixtures for test data
|
|
121
|
-
✅ Test accessibility
|
|
122
|
-
✅ Aim for high coverage
|
|
123
|
-
|
|
124
|
-
### What NOT to Do
|
|
125
|
-
|
|
126
|
-
❌ Don't test implementation details
|
|
127
|
-
❌ Don't write flaky tests
|
|
128
|
-
❌ Don't skip error cases
|
|
129
|
-
❌ Don't ignore test failures
|
|
130
|
-
❌ Don't test third-party libraries
|
|
131
|
-
|
|
132
|
-
## Capabilities
|
|
133
|
-
|
|
134
|
-
- fs_read
|
|
135
|
-
- fs_write
|
|
136
|
-
- execute_bash
|
|
137
|
-
|
|
138
|
-
## Examples
|
|
139
|
-
|
|
140
|
-
**Request**: "Write tests for reading progress tracking"
|
|
141
|
-
|
|
142
|
-
**Response**:
|
|
143
|
-
```typescript
|
|
144
|
-
// actions/reading-progress.test.ts
|
|
145
|
-
import { describe, it, expect, vi } from 'vitest'
|
|
146
|
-
import { saveReadingProgress } from './reading-progress-actions'
|
|
147
|
-
|
|
148
|
-
vi.mock('@/lib/auth', () => ({
|
|
149
|
-
auth: vi.fn(() => Promise.resolve({ user: { id: 'user-1' } }))
|
|
150
|
-
}))
|
|
151
|
-
|
|
152
|
-
vi.mock('@/db', () => ({
|
|
153
|
-
db: {
|
|
154
|
-
insert: vi.fn(() => ({
|
|
155
|
-
values: vi.fn(() => ({
|
|
156
|
-
onConflictDoUpdate: vi.fn()
|
|
157
|
-
}))
|
|
158
|
-
}))
|
|
159
|
-
}
|
|
160
|
-
}))
|
|
161
|
-
|
|
162
|
-
describe('saveReadingProgress', () => {
|
|
163
|
-
it('saves progress for authenticated user', async () => {
|
|
164
|
-
const result = await saveReadingProgress({
|
|
165
|
-
chapterId: 'chapter-1',
|
|
166
|
-
mangaId: 'manga-1',
|
|
167
|
-
currentPage: 5,
|
|
168
|
-
totalPages: 20,
|
|
169
|
-
completed: false
|
|
170
|
-
})
|
|
171
|
-
|
|
172
|
-
expect(result.success).toBe(true)
|
|
173
|
-
})
|
|
174
|
-
|
|
175
|
-
it('throws error for unauthenticated user', async () => {
|
|
176
|
-
vi.mocked(auth).mockResolvedValueOnce(null)
|
|
177
|
-
|
|
178
|
-
await expect(
|
|
179
|
-
saveReadingProgress({
|
|
180
|
-
chapterId: 'chapter-1',
|
|
181
|
-
mangaId: 'manga-1',
|
|
182
|
-
currentPage: 5,
|
|
183
|
-
totalPages: 20,
|
|
184
|
-
completed: false
|
|
185
|
-
})
|
|
186
|
-
).rejects.toThrow('Unauthorized')
|
|
187
|
-
})
|
|
188
|
-
})
|
|
189
|
-
```
|