@zweer/dev 1.3.0 → 2.1.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 (132) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +68 -795
  3. package/configs/_biome.json +38 -0
  4. package/configs/commitlint.config.ts +1 -0
  5. package/configs/editorconfig +16 -0
  6. package/configs/lefthook.yml +38 -0
  7. package/configs/lockfile-lintrc.json +6 -0
  8. package/configs/npmpackagejsonlintrc.json +34 -0
  9. package/configs/tsconfig.json +9 -0
  10. package/configs/tsdown.config.ts +8 -0
  11. package/configs/vitest.config.ts +12 -0
  12. package/dist/index.d.mts +1 -0
  13. package/dist/index.mjs +247 -0
  14. package/dist/index.mjs.map +1 -0
  15. package/kiro/agents/zweer-setup.json +38 -0
  16. package/kiro/prompts/zweer-setup.md +55 -0
  17. package/kiro/skills/agent-template/SKILL.md +22 -0
  18. package/kiro/skills/agent-template/references/base.json +38 -0
  19. package/kiro/skills/agent-template/references/example-monorepo-library.json +60 -0
  20. package/kiro/skills/agent-template/references/example-webapp-vercel.json +54 -0
  21. package/kiro/skills/prompt-template/SKILL.md +23 -0
  22. package/kiro/skills/prompt-template/references/example-library.md +56 -0
  23. package/kiro/skills/prompt-template/references/example-webapp.md +57 -0
  24. package/kiro/skills/skill-templates/SKILL.md +23 -0
  25. package/kiro/skills/skill-templates/references/new-package.md +72 -0
  26. package/kiro/skills/steering-templates/SKILL.md +31 -0
  27. package/kiro/skills/steering-templates/references/build-tooling.md +62 -0
  28. package/kiro/skills/steering-templates/references/code-style.md +83 -0
  29. package/kiro/skills/steering-templates/references/commit-conventions.md +58 -0
  30. package/kiro/skills/steering-templates/references/interaction.md +41 -0
  31. package/kiro/skills/steering-templates/references/testing.md +61 -0
  32. package/kiro/steering/build-tooling.md +62 -0
  33. package/kiro/steering/code-style.md +83 -0
  34. package/kiro/steering/commit-conventions.md +58 -0
  35. package/kiro/steering/interaction.md +41 -0
  36. package/kiro/steering/testing.md +61 -0
  37. package/package.json +42 -57
  38. package/templates/monorepo/CHANGELOG.md +5 -0
  39. package/templates/monorepo/README.md +22 -0
  40. package/templates/monorepo/package.json +30 -0
  41. package/templates/monorepo/packages/core/CHANGELOG.md +5 -0
  42. package/templates/monorepo/packages/core/README.md +21 -0
  43. package/templates/monorepo/packages/core/package.json +28 -0
  44. package/templates/monorepo/packages/core/src/index.ts +3 -0
  45. package/templates/monorepo/packages/core/test/index.test.ts +9 -0
  46. package/templates/monorepo/tsdown.config.ts +12 -0
  47. package/templates/monorepo/vitest.config.ts +12 -0
  48. package/templates/single/CHANGELOG.md +5 -0
  49. package/templates/single/README.md +30 -0
  50. package/templates/single/package.json +38 -0
  51. package/templates/single/src/index.ts +3 -0
  52. package/templates/single/test/index.test.ts +9 -0
  53. package/templates/single/tsdown.config.ts +11 -0
  54. package/workflows/base/ci.yml +24 -0
  55. package/workflows/base/dependabot-auto-merge.yml +43 -0
  56. package/workflows/base/dependabot-post-update.yml +38 -0
  57. package/workflows/base/dependabot.yml +39 -0
  58. package/workflows/base/pr.yml +41 -0
  59. package/workflows/base/security.yml +25 -0
  60. package/workflows/docs/docs.yml +47 -0
  61. package/workflows/library/npm.yml +45 -0
  62. package/agents/data/zweer_data_engineer.md +0 -436
  63. package/agents/design/zweer_ui_designer.md +0 -171
  64. package/agents/design/zweer_ui_ux.md +0 -124
  65. package/agents/infrastructure/zweer_infra_cdk.md +0 -701
  66. package/agents/infrastructure/zweer_infra_devops.md +0 -148
  67. package/agents/infrastructure/zweer_infra_observability.md +0 -610
  68. package/agents/infrastructure/zweer_infra_terraform.md +0 -658
  69. package/agents/mobile/zweer_mobile_android.md +0 -636
  70. package/agents/mobile/zweer_mobile_flutter.md +0 -623
  71. package/agents/mobile/zweer_mobile_ionic.md +0 -550
  72. package/agents/mobile/zweer_mobile_ios.md +0 -504
  73. package/agents/mobile/zweer_mobile_react_native.md +0 -561
  74. package/agents/quality/zweer_qa_documentation.md +0 -202
  75. package/agents/quality/zweer_qa_performance.md +0 -160
  76. package/agents/quality/zweer_qa_security.md +0 -197
  77. package/agents/quality/zweer_qa_testing.md +0 -189
  78. package/agents/services/zweer_svc_api_gateway.md +0 -553
  79. package/agents/services/zweer_svc_containers.md +0 -575
  80. package/agents/services/zweer_svc_lambda.md +0 -373
  81. package/agents/services/zweer_svc_messaging.md +0 -543
  82. package/agents/services/zweer_svc_microservices.md +0 -502
  83. package/agents/web/zweer_web_api_integration.md +0 -500
  84. package/agents/web/zweer_web_backend.md +0 -358
  85. package/agents/web/zweer_web_database.md +0 -357
  86. package/agents/web/zweer_web_frontend.md +0 -375
  87. package/agents/web/zweer_web_reader.md +0 -229
  88. package/agents/write/zweer_write_content.md +0 -499
  89. package/agents/write/zweer_write_narrative.md +0 -409
  90. package/agents/write/zweer_write_style.md +0 -247
  91. package/agents/write/zweer_write_warmth.md +0 -282
  92. package/cli/commands/bootstrap.d.ts +0 -4
  93. package/cli/commands/bootstrap.js +0 -377
  94. package/cli/commands/cao/agent/create.d.ts +0 -25
  95. package/cli/commands/cao/agent/create.js +0 -221
  96. package/cli/commands/cao/agent/index.d.ts +0 -2
  97. package/cli/commands/cao/agent/index.js +0 -8
  98. package/cli/commands/cao/agent/list.d.ts +0 -3
  99. package/cli/commands/cao/agent/list.js +0 -29
  100. package/cli/commands/cao/agent/remove.d.ts +0 -5
  101. package/cli/commands/cao/agent/remove.js +0 -39
  102. package/cli/commands/cao/index.d.ts +0 -2
  103. package/cli/commands/cao/index.js +0 -20
  104. package/cli/commands/cao/install.d.ts +0 -10
  105. package/cli/commands/cao/install.js +0 -59
  106. package/cli/commands/cao/launch.d.ts +0 -3
  107. package/cli/commands/cao/launch.js +0 -21
  108. package/cli/commands/cao/list.d.ts +0 -6
  109. package/cli/commands/cao/list.js +0 -36
  110. package/cli/commands/cao/server.d.ts +0 -3
  111. package/cli/commands/cao/server.js +0 -20
  112. package/cli/commands/cao/status.d.ts +0 -2
  113. package/cli/commands/cao/status.js +0 -25
  114. package/cli/commands/cao/sync.d.ts +0 -6
  115. package/cli/commands/cao/sync.js +0 -52
  116. package/cli/commands/cao/uninstall.d.ts +0 -2
  117. package/cli/commands/cao/uninstall.js +0 -16
  118. package/cli/commands/setup.d.ts +0 -4
  119. package/cli/commands/setup.js +0 -346
  120. package/cli/index.d.ts +0 -2
  121. package/cli/index.js +0 -13
  122. package/cli/utils/agents.d.ts +0 -8
  123. package/cli/utils/agents.js +0 -55
  124. package/cli/utils/cao.d.ts +0 -11
  125. package/cli/utils/cao.js +0 -56
  126. package/cli/utils/paths.d.ts +0 -5
  127. package/cli/utils/paths.js +0 -11
  128. package/templates/orchestrator_lambda.md +0 -263
  129. package/templates/orchestrator_microservices.md +0 -345
  130. package/templates/orchestrator_mobile.md +0 -199
  131. package/templates/orchestrator_webapp.md +0 -190
  132. package/templates/orchestrator_writing.md +0 -306
@@ -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
- ```