tribunal-kit 3.0.0 → 3.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 (226) hide show
  1. package/.agent/ARCHITECTURE.md +99 -99
  2. package/.agent/GEMINI.md +52 -52
  3. package/.agent/agents/accessibility-reviewer.md +187 -220
  4. package/.agent/agents/ai-code-reviewer.md +199 -233
  5. package/.agent/agents/backend-specialist.md +215 -238
  6. package/.agent/agents/code-archaeologist.md +161 -181
  7. package/.agent/agents/database-architect.md +184 -207
  8. package/.agent/agents/debugger.md +191 -218
  9. package/.agent/agents/dependency-reviewer.md +103 -136
  10. package/.agent/agents/devops-engineer.md +218 -238
  11. package/.agent/agents/documentation-writer.md +201 -221
  12. package/.agent/agents/explorer-agent.md +160 -180
  13. package/.agent/agents/frontend-reviewer.md +160 -194
  14. package/.agent/agents/frontend-specialist.md +248 -237
  15. package/.agent/agents/game-developer.md +48 -52
  16. package/.agent/agents/logic-reviewer.md +116 -149
  17. package/.agent/agents/mobile-developer.md +200 -223
  18. package/.agent/agents/mobile-reviewer.md +162 -195
  19. package/.agent/agents/orchestrator.md +181 -211
  20. package/.agent/agents/penetration-tester.md +157 -174
  21. package/.agent/agents/performance-optimizer.md +183 -203
  22. package/.agent/agents/performance-reviewer.md +178 -211
  23. package/.agent/agents/product-manager.md +142 -162
  24. package/.agent/agents/product-owner.md +6 -25
  25. package/.agent/agents/project-planner.md +142 -162
  26. package/.agent/agents/qa-automation-engineer.md +225 -242
  27. package/.agent/agents/security-auditor.md +174 -194
  28. package/.agent/agents/seo-specialist.md +193 -213
  29. package/.agent/agents/sql-reviewer.md +161 -194
  30. package/.agent/agents/supervisor-agent.md +184 -203
  31. package/.agent/agents/swarm-worker-contracts.md +17 -17
  32. package/.agent/agents/swarm-worker-registry.md +46 -46
  33. package/.agent/agents/test-coverage-reviewer.md +160 -193
  34. package/.agent/agents/test-engineer.md +0 -21
  35. package/.agent/agents/type-safety-reviewer.md +175 -208
  36. package/.agent/patterns/generator.md +9 -9
  37. package/.agent/patterns/inversion.md +12 -12
  38. package/.agent/patterns/pipeline.md +9 -9
  39. package/.agent/patterns/reviewer.md +13 -13
  40. package/.agent/patterns/tool-wrapper.md +9 -9
  41. package/.agent/rules/GEMINI.md +63 -63
  42. package/.agent/scripts/compress_skills.py +167 -0
  43. package/.agent/scripts/consolidate_skills.py +173 -0
  44. package/.agent/scripts/deep_compress.py +202 -0
  45. package/.agent/scripts/minify_context.py +80 -0
  46. package/.agent/scripts/security_scan.py +1 -1
  47. package/.agent/scripts/strip_tribunal.py +41 -0
  48. package/.agent/skills/agent-organizer/SKILL.md +92 -126
  49. package/.agent/skills/agentic-patterns/SKILL.md +0 -70
  50. package/.agent/skills/ai-prompt-injection-defense/SKILL.md +126 -160
  51. package/.agent/skills/api-patterns/SKILL.md +123 -215
  52. package/.agent/skills/api-security-auditor/SKILL.md +143 -177
  53. package/.agent/skills/app-builder/SKILL.md +326 -50
  54. package/.agent/skills/app-builder/templates/SKILL.md +13 -15
  55. package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +16 -16
  56. package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +22 -22
  57. package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +18 -18
  58. package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +20 -20
  59. package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +17 -17
  60. package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +18 -18
  61. package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +21 -21
  62. package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +19 -19
  63. package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +26 -26
  64. package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +26 -26
  65. package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +19 -19
  66. package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +18 -18
  67. package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +20 -20
  68. package/.agent/skills/appflow-wireframe/SKILL.md +87 -121
  69. package/.agent/skills/architecture/SKILL.md +82 -252
  70. package/.agent/skills/authentication-best-practices/SKILL.md +139 -173
  71. package/.agent/skills/bash-linux/SKILL.md +120 -154
  72. package/.agent/skills/behavioral-modes/SKILL.md +8 -69
  73. package/.agent/skills/brainstorming/SKILL.md +428 -104
  74. package/.agent/skills/building-native-ui/SKILL.md +143 -174
  75. package/.agent/skills/clean-code/SKILL.md +323 -360
  76. package/.agent/skills/code-review-checklist/SKILL.md +0 -62
  77. package/.agent/skills/config-validator/SKILL.md +107 -141
  78. package/.agent/skills/csharp-developer/SKILL.md +468 -528
  79. package/.agent/skills/database-design/SKILL.md +104 -369
  80. package/.agent/skills/deployment-procedures/SKILL.md +111 -145
  81. package/.agent/skills/devops-engineer/SKILL.md +295 -332
  82. package/.agent/skills/devops-incident-responder/SKILL.md +79 -113
  83. package/.agent/skills/doc.md +5 -5
  84. package/.agent/skills/documentation-templates/SKILL.md +19 -63
  85. package/.agent/skills/edge-computing/SKILL.md +123 -157
  86. package/.agent/skills/extract-design-system/SKILL.md +100 -134
  87. package/.agent/skills/framer-motion-expert/SKILL.md +111 -855
  88. package/.agent/skills/frontend-design/SKILL.md +151 -499
  89. package/.agent/skills/game-design-expert/SKILL.md +71 -105
  90. package/.agent/skills/game-engineering-expert/SKILL.md +88 -122
  91. package/.agent/skills/geo-fundamentals/SKILL.md +89 -124
  92. package/.agent/skills/github-operations/SKILL.md +279 -314
  93. package/.agent/skills/gsap-expert/SKILL.md +119 -826
  94. package/.agent/skills/i18n-localization/SKILL.md +104 -138
  95. package/.agent/skills/intelligent-routing/SKILL.md +159 -127
  96. package/.agent/skills/lint-and-validate/SKILL.md +8 -52
  97. package/.agent/skills/llm-engineering/SKILL.md +344 -357
  98. package/.agent/skills/local-first/SKILL.md +120 -154
  99. package/.agent/skills/mcp-builder/SKILL.md +84 -118
  100. package/.agent/skills/mobile-design/SKILL.md +213 -219
  101. package/.agent/skills/motion-engineering/SKILL.md +184 -0
  102. package/.agent/skills/nextjs-react-expert/SKILL.md +99 -698
  103. package/.agent/skills/nodejs-best-practices/SKILL.md +498 -559
  104. package/.agent/skills/observability/SKILL.md +293 -330
  105. package/.agent/skills/parallel-agents/SKILL.md +88 -122
  106. package/.agent/skills/performance-profiling/SKILL.md +217 -254
  107. package/.agent/skills/plan-writing/SKILL.md +84 -118
  108. package/.agent/skills/platform-engineer/SKILL.md +89 -123
  109. package/.agent/skills/playwright-best-practices/SKILL.md +128 -162
  110. package/.agent/skills/powershell-windows/SKILL.md +112 -146
  111. package/.agent/skills/python-patterns/SKILL.md +7 -35
  112. package/.agent/skills/python-pro/SKILL.md +148 -754
  113. package/.agent/skills/react-specialist/SKILL.md +123 -827
  114. package/.agent/skills/readme-builder/SKILL.md +15 -85
  115. package/.agent/skills/realtime-patterns/SKILL.md +269 -304
  116. package/.agent/skills/red-team-tactics/SKILL.md +10 -51
  117. package/.agent/skills/rust-pro/SKILL.md +623 -701
  118. package/.agent/skills/seo-fundamentals/SKILL.md +120 -154
  119. package/.agent/skills/server-management/SKILL.md +156 -190
  120. package/.agent/skills/shadcn-ui-expert/SKILL.md +172 -206
  121. package/.agent/skills/skill-creator/SKILL.md +18 -58
  122. package/.agent/skills/sql-pro/SKILL.md +579 -633
  123. package/.agent/skills/supabase-postgres-best-practices/SKILL.md +28 -68
  124. package/.agent/skills/swiftui-expert/SKILL.md +142 -176
  125. package/.agent/skills/systematic-debugging/SKILL.md +84 -118
  126. package/.agent/skills/tailwind-patterns/SKILL.md +516 -576
  127. package/.agent/skills/tdd-workflow/SKILL.md +103 -137
  128. package/.agent/skills/test-result-analyzer/SKILL.md +33 -73
  129. package/.agent/skills/testing-patterns/SKILL.md +512 -573
  130. package/.agent/skills/trend-researcher/SKILL.md +30 -71
  131. package/.agent/skills/ui-ux-pro-max/SKILL.md +0 -41
  132. package/.agent/skills/ui-ux-researcher/SKILL.md +51 -91
  133. package/.agent/skills/vue-expert/SKILL.md +127 -866
  134. package/.agent/skills/vulnerability-scanner/SKILL.md +354 -269
  135. package/.agent/skills/web-accessibility-auditor/SKILL.md +159 -193
  136. package/.agent/skills/web-design-guidelines/SKILL.md +17 -61
  137. package/.agent/skills/webapp-testing/SKILL.md +111 -145
  138. package/.agent/skills/whimsy-injector/SKILL.md +58 -132
  139. package/.agent/skills/workflow-optimizer/SKILL.md +28 -68
  140. package/.agent/workflows/api-tester.md +151 -151
  141. package/.agent/workflows/audit.md +127 -138
  142. package/.agent/workflows/brainstorm.md +110 -110
  143. package/.agent/workflows/changelog.md +112 -112
  144. package/.agent/workflows/create.md +124 -124
  145. package/.agent/workflows/debug.md +165 -189
  146. package/.agent/workflows/deploy.md +180 -189
  147. package/.agent/workflows/enhance.md +128 -151
  148. package/.agent/workflows/fix.md +114 -135
  149. package/.agent/workflows/generate.md +12 -4
  150. package/.agent/workflows/migrate.md +160 -160
  151. package/.agent/workflows/orchestrate.md +168 -168
  152. package/.agent/workflows/performance-benchmarker.md +114 -123
  153. package/.agent/workflows/plan.md +173 -173
  154. package/.agent/workflows/preview.md +80 -80
  155. package/.agent/workflows/refactor.md +161 -183
  156. package/.agent/workflows/review-ai.md +101 -129
  157. package/.agent/workflows/review.md +116 -116
  158. package/.agent/workflows/session.md +94 -94
  159. package/.agent/workflows/status.md +79 -79
  160. package/.agent/workflows/strengthen-skills.md +138 -139
  161. package/.agent/workflows/swarm.md +179 -179
  162. package/.agent/workflows/test.md +189 -211
  163. package/.agent/workflows/tribunal-backend.md +93 -113
  164. package/.agent/workflows/tribunal-database.md +94 -115
  165. package/.agent/workflows/tribunal-frontend.md +95 -118
  166. package/.agent/workflows/tribunal-full.md +92 -133
  167. package/.agent/workflows/tribunal-mobile.md +94 -119
  168. package/.agent/workflows/tribunal-performance.md +109 -133
  169. package/.agent/workflows/ui-ux-pro-max.md +122 -143
  170. package/package.json +1 -1
  171. package/.agent/skills/api-patterns/api-style.md +0 -42
  172. package/.agent/skills/api-patterns/auth.md +0 -24
  173. package/.agent/skills/api-patterns/documentation.md +0 -26
  174. package/.agent/skills/api-patterns/graphql.md +0 -41
  175. package/.agent/skills/api-patterns/rate-limiting.md +0 -31
  176. package/.agent/skills/api-patterns/response.md +0 -37
  177. package/.agent/skills/api-patterns/rest.md +0 -40
  178. package/.agent/skills/api-patterns/security-testing.md +0 -122
  179. package/.agent/skills/api-patterns/trpc.md +0 -41
  180. package/.agent/skills/api-patterns/versioning.md +0 -22
  181. package/.agent/skills/app-builder/agent-coordination.md +0 -71
  182. package/.agent/skills/app-builder/feature-building.md +0 -53
  183. package/.agent/skills/app-builder/project-detection.md +0 -34
  184. package/.agent/skills/app-builder/scaffolding.md +0 -118
  185. package/.agent/skills/app-builder/tech-stack.md +0 -40
  186. package/.agent/skills/architecture/context-discovery.md +0 -43
  187. package/.agent/skills/architecture/examples.md +0 -94
  188. package/.agent/skills/architecture/pattern-selection.md +0 -68
  189. package/.agent/skills/architecture/patterns-reference.md +0 -50
  190. package/.agent/skills/architecture/trade-off-analysis.md +0 -77
  191. package/.agent/skills/brainstorming/dynamic-questioning.md +0 -360
  192. package/.agent/skills/database-design/database-selection.md +0 -43
  193. package/.agent/skills/database-design/indexing.md +0 -39
  194. package/.agent/skills/database-design/migrations.md +0 -48
  195. package/.agent/skills/database-design/optimization.md +0 -36
  196. package/.agent/skills/database-design/orm-selection.md +0 -30
  197. package/.agent/skills/database-design/schema-design.md +0 -56
  198. package/.agent/skills/frontend-design/animation-guide.md +0 -331
  199. package/.agent/skills/frontend-design/color-system.md +0 -329
  200. package/.agent/skills/frontend-design/decision-trees.md +0 -418
  201. package/.agent/skills/frontend-design/motion-graphics.md +0 -306
  202. package/.agent/skills/frontend-design/typography-system.md +0 -363
  203. package/.agent/skills/frontend-design/ux-psychology.md +0 -1116
  204. package/.agent/skills/frontend-design/visual-effects.md +0 -383
  205. package/.agent/skills/intelligent-routing/router-manifest.md +0 -65
  206. package/.agent/skills/mobile-design/decision-trees.md +0 -516
  207. package/.agent/skills/mobile-design/mobile-backend.md +0 -491
  208. package/.agent/skills/mobile-design/mobile-color-system.md +0 -420
  209. package/.agent/skills/mobile-design/mobile-debugging.md +0 -122
  210. package/.agent/skills/mobile-design/mobile-design-thinking.md +0 -357
  211. package/.agent/skills/mobile-design/mobile-navigation.md +0 -458
  212. package/.agent/skills/mobile-design/mobile-performance.md +0 -767
  213. package/.agent/skills/mobile-design/mobile-testing.md +0 -356
  214. package/.agent/skills/mobile-design/mobile-typography.md +0 -433
  215. package/.agent/skills/mobile-design/platform-android.md +0 -666
  216. package/.agent/skills/mobile-design/platform-ios.md +0 -561
  217. package/.agent/skills/mobile-design/touch-psychology.md +0 -537
  218. package/.agent/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +0 -312
  219. package/.agent/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +0 -240
  220. package/.agent/skills/nextjs-react-expert/3-server-server-side-performance.md +0 -490
  221. package/.agent/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +0 -264
  222. package/.agent/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +0 -581
  223. package/.agent/skills/nextjs-react-expert/6-rendering-rendering-performance.md +0 -432
  224. package/.agent/skills/nextjs-react-expert/7-js-javascript-performance.md +0 -684
  225. package/.agent/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +0 -150
  226. package/.agent/skills/vulnerability-scanner/checklists.md +0 -121
@@ -1,162 +1,128 @@
1
- ---
2
- name: playwright-best-practices
3
- description: Playwright End-to-End (E2E) testing mastery. Resilient selectors, auto-waiting mechanisms, parallel test execution, mocking network requests, fixture management, and cross-browser CI configurations. Use when configuring, deploying, or writing E2E web tests.
4
- allowed-tools: Read, Write, Edit, Glob, Grep
5
- version: 2.0.0
6
- last-updated: 2026-04-02
7
- applies-to-model: gemini-2.5-pro, claude-3-7-sonnet
8
- ---
9
-
10
- # Playwright E2E — Bulletproof Testing Mastery
11
-
12
- > E2E tests prove the system works. Flaky tests prove nothing.
13
- > Never test implementation details. Test what the user experiences.
14
-
15
- ---
16
-
17
- ## 1. Resilience & Auto-Waiting
18
-
19
- Playwright automatically waits for elements to be actionable (visible, stable, not obscured).
20
-
21
- ```typescript
22
- // ❌ FLAKY: Hardcoded sleeps. Fails on slow CI, wastes time on fast local rings.
23
- await page.waitForTimeout(3000);
24
-
25
- // FLAKY: CSS selectors tied to layout/styling changes
26
- await page.locator('.btn-primary > span').click();
27
-
28
- // ✅ ROBUST: Playwright auto-waits for actionability based on user-centric selectors
29
- await page.getByRole('button', { name: "Submit Checkout" }).click();
30
-
31
- // ✅ ROBUST: Testing for expected states
32
- await expect(page.getByText('Order confirmed')).toBeVisible();
33
- ```
34
-
35
- ### The Selector Hierarchy (Best to Worst)
36
- 1. `page.getByRole()` — Checks accessibility simultaneously.
37
- 2. `page.getByText()` — Finds elements by raw text values.
38
- 3. `page.getByTestId()` — Resilient to text/translation updates (`data-testid`).
39
- 4. `page.locator('css')` — Brittle, bound to DOM structures. Use only as last resort.
40
-
41
- ---
42
-
43
- ## 2. Test Isolation & Fixtures
44
-
45
- Do not cascade tests (where Test B requires Test A to pass first). Playwright gives every test a blank browser context isolated from the rest.
46
-
47
- ```typescript
48
- import { test, expect } from '@playwright/test';
49
-
50
- // BAD: Cascading state
51
- test.describe('Dashboard', () => {
52
- test('Login', async ({ page }) => {
53
- await login(page); // Next test assumes this succeeded
54
- });
55
- test('Action', async ({ page }) => {
56
- await page.getByRole('button', { name: 'Save' }).click();
57
- });
58
- });
59
-
60
- // ✅ GOOD: Isolated tests via beforeEach or Custom Fixtures
61
- test.beforeEach(async ({ page }) => {
62
- // Login directly via API to bypass slow UI login, seeding cookies
63
- await performFastApiLogin(page);
64
- await page.goto('/dashboard');
65
- });
66
-
67
- test('Should save settings', async ({ page }) => {
68
- await page.getByRole('button', { name: 'Save' }).click();
69
- await expect(page.getByRole('alert')).toHaveText('Saved successfully');
70
- });
71
- ```
72
-
73
- ---
74
-
75
- ## 3. Network Mocking
76
-
77
- E2E tests that rely on external 3rd party APIs (Stripe, SendGrid) will fail randomly due to network latency outside your control.
78
-
79
- ```typescript
80
- test('Should block invalid credit cards', async ({ page }) => {
81
- // Intercept the outgoing request to the payment processor
82
- await page.route('**/api/v1/charge*', async route => {
83
- // Return a mocked failure response immediately
84
- const json = { status: 'declined', message: 'Insufficient funds' };
85
- await route.fulfill({ status: 400, json });
86
- });
87
-
88
- await page.getByRole('button', { name: 'Purchase' }).click();
89
- await expect(page.getByText('Insufficient funds')).toBeVisible();
90
- });
91
- ```
92
-
93
- ---
94
-
95
- ## 4. Configuration for CI/CD
96
-
97
- ```typescript
98
- // playwright.config.ts
99
- import { defineConfig, devices } from '@playwright/test';
100
-
101
- export default defineConfig({
102
- testDir: './tests/e2e',
103
- fullyParallel: true, // Run tests concurrently
104
- forbidOnly: !!process.env.CI, // Fail build if `.only` was left in code
105
- retries: process.env.CI ? 2 : 0, // Retry flakes on CI only
106
- workers: process.env.CI ? 1 : undefined, // Reduce CI overload
107
- reporter: 'html',
108
-
109
- use: {
110
- trace: 'on-first-retry', // Record trace viewer ONLY on failure to save space
111
- video: 'retain-on-failure',
112
- baseURL: 'http://localhost:3000',
113
- },
114
-
115
- projects: [
116
- { name: 'chromium', use: { ...devices['Desktop Chrome'] } },
117
- { name: 'webkit', use: { ...devices['Desktop Safari'] } },
118
- // Mobile Viewport Example
119
- { name: 'Mobile Safari', use: { ...devices['iPhone 13'] } },
120
- ],
121
-
122
- // Spin up local server before running tests
123
- webServer: {
124
- command: 'npm run build && npm run start',
125
- url: 'http://localhost:3000',
126
- reuseExistingServer: !process.env.CI,
127
- },
128
- });
129
- ```
130
-
131
- ---
132
-
133
- ## 🤖 LLM-Specific Traps (Playwright)
134
-
135
- 1. **WaitTime Hallucinations:** AI constantly suggests `await page.waitForTimeout()` to "fix" failing tests. This is a severe anti-pattern. Rely on Playwright's default auto-waiting, or use `waitForURL / waitForResponse`.
136
- 2. **CSS Selector Blindness:** Relying on `.main > div:nth-child(3)` instead of `getByRole`. Tests will break on the next UI update.
137
- 3. **Cypress Confusions:** Writing Cypress syntax (`cy.get`) in Playwright files. They are fundamentally different frameworks.
138
- 4. **Ignoring Promises:** Playwright actions are async. The AI forgets the `await` keyword, causing the test to complete and close the browser instantly before the assertion happens.
139
- 5. **Slow UI Logins:** Executing full UI visual typing of username/password on *every* test. In an E2E suite of 100 tests, this adds 15 minutes. Use API logins to set browser cookies in `beforeEach` (or `globalSetup`).
140
- 6. **`.only` Commit Pollution:** Leaving `test.only()` in the code. Enable `forbidOnly` in `playwright.config.ts` so the CI catches it immediately.
141
- 7. **Trace Recording Overload:** Using `trace: 'on'` inside the CI. Tracking traces for passes consumes massive disk space. Use `trace: 'on-first-retry'`.
142
- 8. **Soft Assertions Abuse:** AI uses `expect.soft()` to suppress failures. If an assertion is critical, allow it to fail the test entirely.
143
- 9. **Clicking Hidden Elements:** Trying to `click()` elements that are functionally obscured by modals. If Playwright refuses to click, it's a real bug. Bypassing it via `click({ force: true })` ruins the purpose of E2E testing.
144
- 10. **State Leakage:** Failing to realize that tests run completely independently. AI trying to pass variables between `test()` blocks. Variables reset on every definition.
145
-
146
- ---
147
-
148
- ## 🏛️ Tribunal Integration
149
-
150
- ### ✅ Pre-Flight Self-Audit
151
- ```
152
- ✅ Did I completely eliminate `waitForTimeout` (hard sleep) sleep commands?
153
- ✅ Are selectors relying on semantic meaning (`getByRole`, `getByText`) instead of raw CSS?
154
- ✅ Have I properly awaited all locator actions and expectations (`await expect...`)?
155
- ✅ Are tests completely isolated (no cascading state dependence)?
156
- ✅ Is the test executing an API-level authentication bypass if testing underlying features?
157
- ✅ Are external 3rd-party SaaS integrations defensively mocked via `page.route`?
158
- ✅ Have I respected Playwright's auto-actionability checks (avoiding `{ force: true }`)?
159
- ✅ Did I define multiple targeted viewports/browsers inside the `playwright.config.ts`?
160
- ✅ Is `forbidOnly` enabled for CI pipelines?
161
- ✅ Did I assert user-facing impacts rather than deep implementation variables?
162
- ```
1
+ ---
2
+ name: playwright-best-practices
3
+ description: Playwright End-to-End (E2E) testing mastery. Resilient selectors, auto-waiting mechanisms, parallel test execution, mocking network requests, fixture management, and cross-browser CI configurations. Use when configuring, deploying, or writing E2E web tests.
4
+ allowed-tools: Read, Write, Edit, Glob, Grep
5
+ version: 2.0.0
6
+ last-updated: 2026-04-02
7
+ applies-to-model: gemini-2.5-pro, claude-3-7-sonnet
8
+ ---
9
+
10
+ # Playwright E2E — Bulletproof Testing Mastery
11
+
12
+ ---
13
+
14
+ ## 1. Resilience & Auto-Waiting
15
+
16
+ Playwright automatically waits for elements to be actionable (visible, stable, not obscured).
17
+
18
+ ```typescript
19
+ // FLAKY: Hardcoded sleeps. Fails on slow CI, wastes time on fast local rings.
20
+ await page.waitForTimeout(3000);
21
+
22
+ // ❌ FLAKY: CSS selectors tied to layout/styling changes
23
+ await page.locator('.btn-primary > span').click();
24
+
25
+ // ROBUST: Playwright auto-waits for actionability based on user-centric selectors
26
+ await page.getByRole('button', { name: "Submit Checkout" }).click();
27
+
28
+ // ✅ ROBUST: Testing for expected states
29
+ await expect(page.getByText('Order confirmed')).toBeVisible();
30
+ ```
31
+
32
+ ### The Selector Hierarchy (Best to Worst)
33
+ 1. `page.getByRole()` — Checks accessibility simultaneously.
34
+ 2. `page.getByText()` — Finds elements by raw text values.
35
+ 3. `page.getByTestId()` Resilient to text/translation updates (`data-testid`).
36
+ 4. `page.locator('css')` — Brittle, bound to DOM structures. Use only as last resort.
37
+
38
+ ---
39
+
40
+ ## 2. Test Isolation & Fixtures
41
+
42
+ Do not cascade tests (where Test B requires Test A to pass first). Playwright gives every test a blank browser context isolated from the rest.
43
+
44
+ ```typescript
45
+ import { test, expect } from '@playwright/test';
46
+
47
+ // ❌ BAD: Cascading state
48
+ test.describe('Dashboard', () => {
49
+ test('Login', async ({ page }) => {
50
+ await login(page); // Next test assumes this succeeded
51
+ });
52
+ test('Action', async ({ page }) => {
53
+ await page.getByRole('button', { name: 'Save' }).click();
54
+ });
55
+ });
56
+
57
+ // ✅ GOOD: Isolated tests via beforeEach or Custom Fixtures
58
+ test.beforeEach(async ({ page }) => {
59
+ // Login directly via API to bypass slow UI login, seeding cookies
60
+ await performFastApiLogin(page);
61
+ await page.goto('/dashboard');
62
+ });
63
+
64
+ test('Should save settings', async ({ page }) => {
65
+ await page.getByRole('button', { name: 'Save' }).click();
66
+ await expect(page.getByRole('alert')).toHaveText('Saved successfully');
67
+ });
68
+ ```
69
+
70
+ ---
71
+
72
+ ## 3. Network Mocking
73
+
74
+ E2E tests that rely on external 3rd party APIs (Stripe, SendGrid) will fail randomly due to network latency outside your control.
75
+
76
+ ```typescript
77
+ test('Should block invalid credit cards', async ({ page }) => {
78
+ // Intercept the outgoing request to the payment processor
79
+ await page.route('**/api/v1/charge*', async route => {
80
+ // Return a mocked failure response immediately
81
+ const json = { status: 'declined', message: 'Insufficient funds' };
82
+ await route.fulfill({ status: 400, json });
83
+ });
84
+
85
+ await page.getByRole('button', { name: 'Purchase' }).click();
86
+ await expect(page.getByText('Insufficient funds')).toBeVisible();
87
+ });
88
+ ```
89
+
90
+ ---
91
+
92
+ ## 4. Configuration for CI/CD
93
+
94
+ ```typescript
95
+ // playwright.config.ts
96
+ import { defineConfig, devices } from '@playwright/test';
97
+
98
+ export default defineConfig({
99
+ testDir: './tests/e2e',
100
+ fullyParallel: true, // Run tests concurrently
101
+ forbidOnly: !!process.env.CI, // Fail build if `.only` was left in code
102
+ retries: process.env.CI ? 2 : 0, // Retry flakes on CI only
103
+ workers: process.env.CI ? 1 : undefined, // Reduce CI overload
104
+ reporter: 'html',
105
+
106
+ use: {
107
+ trace: 'on-first-retry', // Record trace viewer ONLY on failure to save space
108
+ video: 'retain-on-failure',
109
+ baseURL: 'http://localhost:3000',
110
+ },
111
+
112
+ projects: [
113
+ { name: 'chromium', use: { ...devices['Desktop Chrome'] } },
114
+ { name: 'webkit', use: { ...devices['Desktop Safari'] } },
115
+ // Mobile Viewport Example
116
+ { name: 'Mobile Safari', use: { ...devices['iPhone 13'] } },
117
+ ],
118
+
119
+ // Spin up local server before running tests
120
+ webServer: {
121
+ command: 'npm run build && npm run start',
122
+ url: 'http://localhost:3000',
123
+ reuseExistingServer: !process.env.CI,
124
+ },
125
+ });
126
+ ```
127
+
128
+ ---
@@ -1,146 +1,112 @@
1
- ---
2
- name: powershell-windows
3
- description: PowerShell and Windows environment mastery. Object-oriented piping, strict error handling (ErrorActionPreference), PSProviders, active directory querying, credential management, and execution policies. Use when automating Azure, Windows environments, or writing .ps1 scripts.
4
- allowed-tools: Read, Write, Edit, Glob, Grep
5
- version: 2.0.0
6
- last-updated: 2026-04-02
7
- applies-to-model: gemini-2.5-pro, claude-3-7-sonnet
8
- ---
9
-
10
- # PowerShell — Windows Automation Mastery
11
-
12
- > PowerShell does not pipe text. It pipes rich .NET Objects.
13
- > Your Bash instincts will betray you here. Think in structured data, not regex.
14
-
15
- ---
16
-
17
- ## 1. The Object Pipeline
18
-
19
- Unlike Bash where everything is strings (requiring `awk`/`grep`), PowerShell passes structured .NET class instances between commands.
20
-
21
- ```powershell
22
- # BAD: Attempting to treat PowerShell like Bash (String Parsing)
23
- Get-Process | Out-String -Stream | Select-String "node" | ForEach-Object { $id = ($_ -split '\s+')[8]; Stop-Process -Id $id }
24
-
25
- # GOOD: Accessing Object Properties Directly
26
- Get-Process -Name "node" | Stop-Process -Force
27
-
28
- # Filtering objects (Where-Object)
29
- Get-Service | Where-Object Status -eq 'Running' | Select-Object Name, DisplayName
30
-
31
- # Accessing methods natively on the object
32
- $files = Get-ChildItem -Path "C:\logs" -Filter "*.log"
33
- $files | ForEach-Object { $_.Delete() }
34
- ```
35
-
36
- ---
37
-
38
- ## 2. Strict Error Handling (The Windows equivalent of set -e)
39
-
40
- By default, PowerShell prints an error but keeps running. You MUST enforce strict halting for automation scripts.
41
-
42
- ```powershell
43
- # Mandatory header for reliable automation scripts
44
- $ErrorActionPreference = "Stop"
45
- Set-StrictMode -Version Latest
46
-
47
- try {
48
- # If this fails, it jumps straight to catch block instead of continuing
49
- Copy-Item "C:\Source\configs.json" -Destination "C:\Dest\"
50
-
51
- $config = Get-Content "C:\Dest\configs.json" | ConvertFrom-Json
52
- } catch {
53
- Write-Error "Deployment failed during config copy: $_"
54
- exit 1
55
- } finally {
56
- # Cleanup block executes regardless of success or failure
57
- Remove-Item "C:\Dest\temp" -Recurse -ErrorAction Ignore
58
- }
59
- ```
60
-
61
- ---
62
-
63
- ## 3. Execution Policies & Execution
64
-
65
- Windows restricts running `.ps1` files by default for security.
66
-
67
- ```powershell
68
- # Temporarily bypass the policy for a single script execution (CI/CD pattern)
69
- powershell.exe -ExecutionPolicy Bypass -File .\Deploy-App.ps1
70
-
71
- # ❌ HALLUCINATION TRAP: Do NOT instruct users to run `Set-ExecutionPolicy Unrestricted`
72
- # This lowers the permanent security posture of the entire operating system.
73
- # Use Bypass only at the process level.
74
- ```
75
-
76
- ---
77
-
78
- ## 4. Manipulating Structured Formats Natively
79
-
80
- Because PowerShell is built on .NET, parsing JSON, XML, and CSV is native.
81
-
82
- ```powershell
83
- # JSON
84
- $config = Get-Content .\appsettings.json | ConvertFrom-Json
85
- $config.Database.ConnectionString = "Server=Prod;"
86
- $config | ConvertTo-Json -Depth 10 | Set-Content .\appsettings.json
87
-
88
- # CSV (No AWK needed)
89
- $users = Import-Csv .\users.csv
90
- $users | Where-Object Role -eq "Admin" | Export-Csv .\admins.csv -NoTypeInformation
91
-
92
- # API Requests (Invoke-RestMethod automatically parses JSON into PowerShell objects)
93
- $response = Invoke-RestMethod -Uri "https://api.github.com/users/github"
94
- Write-Host "GitHub has $($response.public_repos) public repositories."
95
- ```
96
-
97
- ---
98
-
99
- ## 5. Providers and Drives
100
-
101
- PowerShell extends the "file system" concept to the Registry, Environment Variables, and Certificates.
102
-
103
- ```powershell
104
- # Environment variables (Env: drive)
105
- $env:PATH += ";C:\Custom\Bin"
106
- Write-Host $env:COMPUTERNAME
107
-
108
- # Registry (HKCU: and HKLM: drives)
109
- Get-ChildItem -Path "HKLM:\Software\Microsoft\Windows\CurrentVersion\Run"
110
-
111
- # Certificates (Cert: drive)
112
- Get-ChildItem -Path "Cert:\LocalMachine\My" | Where-Object Subject -match "example.com"
113
- ```
114
-
115
- ---
116
-
117
- ## 🤖 LLM-Specific Traps (PowerShell)
118
-
119
- 1. **Bash Equivalencies:** AI writing `Test-Path | regex` instead of dealing with properties. Always use object properties (`$obj.Length`, `$obj.Name`).
120
- 2. **Missing `ErrorActionPreference`:** Continuing execution blindly after a critical `Copy-Item` command fails. Always set preference to "Stop".
121
- 3. **Execution Policy Destruction:** Instructing users to permanently change global machine policy to run a script. Always use `-ExecutionPolicy Bypass` natively.
122
- 4. **JSON Conversion Depth limits:** `ConvertTo-Json` defaults to a depth of only 2. It will ruthlessly truncate your nested API payloads silently unless you append `-Depth 10`.
123
- 5. **Return Types in Functions:** PowerShell returns EVERYTHING that hits the pipeline inside a function, not just the `return` statement. Explicitly cast silent operations to `$null` or pipe to `Out-Null`. (e.g., `$list.Add("item") | Out-Null`).
124
- 6. **Comparison Operators:** AI uses `>` or `==`. PowerShell requires `-gt`, `-eq`, `-ne`, `-lt`.
125
- 7. **Backtick Continuation:** Using the backtick `` ` `` as a line continuation character randomly. It is notoriously hard to read and breaks if there's a trailing space. Use proper pipeline formatting or array declarations.
126
- 8. **Paths with Spaces:** Similar to bash, failing to wrap paths in string quotes when executing. `& "C:\Program Files\Node\npm.cmd" install`.
127
- 9. **`Out-File` vs `Set-Content` Encryption:** AI writing configs using `Out-File` defaults to UTF-16 on older PowerShell versions, breaking Linux/Docker containers. Standardize on `Set-Content` or explicitly declare `-Encoding UTF8`.
128
- 10. **`Write-Host` vs `Write-Output`:** AI uses `Write-Host` to return data from functions. `Write-Host` goes straight to the console display buffer. Always use `Write-Output` if you want another variable or pipe to catch the return data.
129
-
130
- ---
131
-
132
- ## 🏛️ Tribunal Integration
133
-
134
- ### ✅ Pre-Flight Self-Audit
135
- ```
136
- ✅ Have I forced strict error catching via `$ErrorActionPreference = "Stop"`?
137
- ✅ Am I manipulating objects (e.g., `Where-Object`) rather than string parsing?
138
- ✅ If I invoked `ConvertTo-Json`, did I set `-Depth 10` (or higher)?
139
- ✅ Are my comparison operators using PowerShell syntax (`-eq`, `-gt`) instead of (`==`, `>`)?
140
- ✅ Did I use `-ExecutionPolicy Bypass` rather than recommending global registry changes?
141
- ✅ Is text encoded correctly to UTF8 via `Set-Content` instead of `Out-File`?
142
- ✅ Did I return data from my functions via `Write-Output` instead of `Write-Host`?
143
- ✅ Are array modifications piped to `Out-Null` to prevent pipeline pollution?
144
- ✅ Is `Invoke-RestMethod` leveraged for APIs instead of the heavier `Invoke-WebRequest`?
145
- ✅ Are commands with spaces invoked using the call operator `& "Path\To\File"`?
146
- ```
1
+ ---
2
+ name: powershell-windows
3
+ description: PowerShell and Windows environment mastery. Object-oriented piping, strict error handling (ErrorActionPreference), PSProviders, active directory querying, credential management, and execution policies. Use when automating Azure, Windows environments, or writing .ps1 scripts.
4
+ allowed-tools: Read, Write, Edit, Glob, Grep
5
+ version: 2.0.0
6
+ last-updated: 2026-04-02
7
+ applies-to-model: gemini-2.5-pro, claude-3-7-sonnet
8
+ ---
9
+
10
+ # PowerShell — Windows Automation Mastery
11
+
12
+ ---
13
+
14
+ ## 1. The Object Pipeline
15
+
16
+ Unlike Bash where everything is strings (requiring `awk`/`grep`), PowerShell passes structured .NET class instances between commands.
17
+
18
+ ```powershell
19
+ # BAD: Attempting to treat PowerShell like Bash (String Parsing)
20
+ Get-Process | Out-String -Stream | Select-String "node" | ForEach-Object { $id = ($_ -split '\s+')[8]; Stop-Process -Id $id }
21
+
22
+ # GOOD: Accessing Object Properties Directly
23
+ Get-Process -Name "node" | Stop-Process -Force
24
+
25
+ # Filtering objects (Where-Object)
26
+ Get-Service | Where-Object Status -eq 'Running' | Select-Object Name, DisplayName
27
+
28
+ # Accessing methods natively on the object
29
+ $files = Get-ChildItem -Path "C:\logs" -Filter "*.log"
30
+ $files | ForEach-Object { $_.Delete() }
31
+ ```
32
+
33
+ ---
34
+
35
+ ## 2. Strict Error Handling (The Windows equivalent of set -e)
36
+
37
+ By default, PowerShell prints an error but keeps running. You MUST enforce strict halting for automation scripts.
38
+
39
+ ```powershell
40
+ # Mandatory header for reliable automation scripts
41
+ $ErrorActionPreference = "Stop"
42
+ Set-StrictMode -Version Latest
43
+
44
+ try {
45
+ # If this fails, it jumps straight to catch block instead of continuing
46
+ Copy-Item "C:\Source\configs.json" -Destination "C:\Dest\"
47
+
48
+ $config = Get-Content "C:\Dest\configs.json" | ConvertFrom-Json
49
+ } catch {
50
+ Write-Error "Deployment failed during config copy: $_"
51
+ exit 1
52
+ } finally {
53
+ # Cleanup block executes regardless of success or failure
54
+ Remove-Item "C:\Dest\temp" -Recurse -ErrorAction Ignore
55
+ }
56
+ ```
57
+
58
+ ---
59
+
60
+ ## 3. Execution Policies & Execution
61
+
62
+ Windows restricts running `.ps1` files by default for security.
63
+
64
+ ```powershell
65
+ # Temporarily bypass the policy for a single script execution (CI/CD pattern)
66
+ powershell.exe -ExecutionPolicy Bypass -File .\Deploy-App.ps1
67
+
68
+ # HALLUCINATION TRAP: Do NOT instruct users to run `Set-ExecutionPolicy Unrestricted`
69
+ # This lowers the permanent security posture of the entire operating system.
70
+ # Use Bypass only at the process level.
71
+ ```
72
+
73
+ ---
74
+
75
+ ## 4. Manipulating Structured Formats Natively
76
+
77
+ Because PowerShell is built on .NET, parsing JSON, XML, and CSV is native.
78
+
79
+ ```powershell
80
+ # JSON
81
+ $config = Get-Content .\appsettings.json | ConvertFrom-Json
82
+ $config.Database.ConnectionString = "Server=Prod;"
83
+ $config | ConvertTo-Json -Depth 10 | Set-Content .\appsettings.json
84
+
85
+ # CSV (No AWK needed)
86
+ $users = Import-Csv .\users.csv
87
+ $users | Where-Object Role -eq "Admin" | Export-Csv .\admins.csv -NoTypeInformation
88
+
89
+ # API Requests (Invoke-RestMethod automatically parses JSON into PowerShell objects)
90
+ $response = Invoke-RestMethod -Uri "https://api.github.com/users/github"
91
+ Write-Host "GitHub has $($response.public_repos) public repositories."
92
+ ```
93
+
94
+ ---
95
+
96
+ ## 5. Providers and Drives
97
+
98
+ PowerShell extends the "file system" concept to the Registry, Environment Variables, and Certificates.
99
+
100
+ ```powershell
101
+ # Environment variables (Env: drive)
102
+ $env:PATH += ";C:\Custom\Bin"
103
+ Write-Host $env:COMPUTERNAME
104
+
105
+ # Registry (HKCU: and HKLM: drives)
106
+ Get-ChildItem -Path "HKLM:\Software\Microsoft\Windows\CurrentVersion\Run"
107
+
108
+ # Certificates (Cert: drive)
109
+ Get-ChildItem -Path "Cert:\LocalMachine\My" | Where-Object Subject -match "example.com"
110
+ ```
111
+
112
+ ---
@@ -9,21 +9,18 @@ applies-to-model: gemini-2.5-pro, claude-3-7-sonnet
9
9
 
10
10
  # Python Development Principles
11
11
 
12
- > Python's flexibility is its greatest weakness.
13
- > Without conventions, every project ends up with its own unpredictable shape.
14
-
15
12
  ---
16
13
 
17
14
  ## Framework Selection
18
15
 
19
- | Use Case | Recommended | When to Use |
16
+ |Use Case|Recommended|When to Use|
20
17
  |---|---|---|
21
- | REST API, general-purpose | FastAPI | Type-safe, async, auto-docs via OpenAPI |
22
- | REST API, batteries-included | Django + DRF | Rapid development, ORM included, admin panel |
23
- | Microservice / minimal API | Flask | Simple, no overhead, full control |
24
- | Data pipeline / ETL | No framework | Standard library + pandas/polars as needed |
25
- | CLI tool | Click or Typer | Better than argparse for complex CLIs |
26
- | Async task queue | Celery + Redis | Background jobs, scheduled tasks |
18
+ |REST API, general-purpose|FastAPI|Type-safe, async, auto-docs via OpenAPI|
19
+ |REST API, batteries-included|Django + DRF|Rapid development, ORM included, admin panel|
20
+ |Microservice / minimal API|Flask|Simple, no overhead, full control|
21
+ |Data pipeline / ETL|No framework|Standard library + pandas/polars as needed|
22
+ |CLI tool|Click or Typer|Better than argparse for complex CLIs|
23
+ |Async task queue|Celery + Redis|Background jobs, scheduled tasks|
27
24
 
28
25
  **Decision question:** Does this need an ORM, admin panel, and auth out of the box? → Django. Does it need type-safe inputs with automatic validation? → FastAPI. Is it small and needs nothing? → Flask.
29
26
 
@@ -201,29 +198,4 @@ Evidence: [test output / lint pass / compile success]
201
198
  **VBC (Verification-Before-Completion) is mandatory.**
202
199
  Do not mark status as VERIFIED until concrete terminal evidence is provided.
203
200
 
204
-
205
201
  ---
206
-
207
- ## 🏛️ Tribunal Integration (Anti-Hallucination)
208
-
209
- **Slash command: `/tribunal-backend`**
210
- **Active reviewers: `logic` · `security` · `dependency` · `type-safety`**
211
-
212
- ### ❌ Forbidden AI Tropes in Python
213
-
214
- 1. **Missing Type Hints** — writing `def func(a, b):` instead of fully typing parameters and return values.
215
- 2. **Bare `except:` blocks** — catching all exceptions blindly without logging or raising `AppError`.
216
- 3. **`requirements.txt` over `pyproject.toml`** — hallucinating outdated dependency management practices.
217
- 4. **Blocking the async event loop** — writing synchronous I/O or `time.sleep()` inside an `async def` FastAPI route.
218
- 5. **Assuming Django for microservices** — defaulting to a massive framework when `FastAPI` or `Flask` fits better.
219
-
220
- ### ✅ Pre-Flight Self-Audit
221
-
222
- Review these questions before generating Python code:
223
- ```
224
- ✅ Are all function parameters and return types strictly typed?
225
- ✅ Did I use the modern toolchain (`uv`/`poetry`, `ruff`, `mypy`)?
226
- ✅ Did I accidentally block the async event loop with sync code?
227
- ✅ Are domain errors properly caught and mapped to HTTP status codes without leaking stack traces?
228
- ✅ Is my dependency selection precise and explicitly declared in `pyproject.toml`?
229
- ```