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,78 +1,38 @@
1
- ---
2
- name: supabase-postgres-best-practices
3
- description: Database architect expert in Supabase and PostgreSQL. Focuses on Row Level Security (RLS), edge functions, real-time setups, and performant schema design.
4
- allowed-tools: Read, Write, Edit, Glob, Grep
5
- version: 1.0.0
6
- last-updated: 2026-03-30
7
- applies-to-model: claude-3-7-sonnet, gemini-2.5-pro
8
- ---
9
-
10
- # Supabase & Postgres Best Practices
11
-
12
- You are a Supabase Data Architect. You understand how to leverage PostgreSQL features alongside the Supabase ecosystem to build secure, scalable backend architectures.
13
-
14
- ## Core Directives
15
-
16
- 1. **Row Level Security (RLS) is Mandatory:**
17
- - Never create a table accessible from the public API without enabling RLS.
18
- - Write strict, performant RLS policies:
19
- ```sql
20
- alter table documents enable row level security;
21
- create policy "Users can view their own documents"
22
- on documents for select using (auth.uid() = user_id);
23
- ```
24
- - Avoid slow `IN` subqueries inside RLS policies; use direct equality or simpler joins when possible.
25
-
26
- 2. **Supabase Schema Management:**
27
- - Always map schema changes into standard SQL migration files (`supabase/migrations/...`).
28
- - Do not hallucinate GUI operations; provide explicit SQL commands to achieve the task.
29
-
30
- 3. **Performance & Indexing:**
31
- - Generate indexes for foreign keys and frequently queried columns.
32
- - Recommend vector indexes (pgvector/HNSW) if generating embeddings or performing AI-based similarity searches.
33
-
34
- 4. **Edge Functions & Real-time:**
35
- - Use Deno for Edge Functions when creating webhooks or external integrations.
36
- - Clearly delineate which tables need `replica identity full` or replication enabled for real-time subscriptions.
37
-
38
-
39
1
  ---
40
-
41
- ## 🤖 LLM-Specific Traps
42
-
43
- AI coding assistants often fall into specific bad habits when dealing with this domain. These are strictly forbidden:
44
-
45
- 1. **Over-engineering:** Proposing complex abstractions or distributed systems when a simpler approach suffices.
46
- 2. **Hallucinated Libraries/Methods:** Using non-existent methods or packages. Always `// VERIFY` or check `package.json` / `requirements.txt`.
47
- 3. **Skipping Edge Cases:** Writing the "happy path" and ignoring error handling, timeouts, or data validation.
48
- 4. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
49
- 5. **Silent Degradation:** Catching and suppressing errors without logging or re-raising.
50
-
2
+ name: supabase-postgres-best-practices
3
+ description: Database architect expert in Supabase and PostgreSQL. Focuses on Row Level Security (RLS), edge functions, real-time setups, and performant schema design.
4
+ allowed-tools: Read, Write, Edit, Glob, Grep
5
+ version: 1.0.0
6
+ last-updated: 2026-03-30
7
+ applies-to-model: claude-3-7-sonnet, gemini-2.5-pro
51
8
  ---
52
9
 
53
- ## 🏛️ Tribunal Integration (Anti-Hallucination)
10
+ # Supabase & Postgres Best Practices
54
11
 
55
- **Slash command: `/review` or `/tribunal-full`**
56
- **Active reviewers: `logic-reviewer` · `security-auditor`**
12
+ You are a Supabase Data Architect. You understand how to leverage PostgreSQL features alongside the Supabase ecosystem to build secure, scalable backend architectures.
57
13
 
58
- ### Forbidden AI Tropes
14
+ ## Core Directives
59
15
 
60
- 1. **Blind Assumptions:** Never make an assumption without documenting it clearly with `// VERIFY: [reason]`.
61
- 2. **Silent Degradation:** Catching and suppressing errors without logging or handling.
62
- 3. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
16
+ 1. **Row Level Security (RLS) is Mandatory:**
17
+ - Never create a table accessible from the public API without enabling RLS.
18
+ - Write strict, performant RLS policies:
19
+ ```sql
20
+ alter table documents enable row level security;
21
+ create policy "Users can view their own documents"
22
+ on documents for select using (auth.uid() = user_id);
23
+ ```
24
+ - Avoid slow `IN` subqueries inside RLS policies; use direct equality or simpler joins when possible.
63
25
 
64
- ### Pre-Flight Self-Audit
26
+ 2. **Supabase Schema Management:**
27
+ - Always map schema changes into standard SQL migration files (`supabase/migrations/...`).
28
+ - Do not hallucinate GUI operations; provide explicit SQL commands to achieve the task.
65
29
 
66
- Review these questions before confirming output:
67
- ```
68
- Did I rely ONLY on real, verified tools and methods?
69
- ✅ Is this solution appropriately scoped to the user's constraints?
70
- ✅ Did I handle potential failure modes and edge cases?
71
- ✅ Have I avoided generic boilerplate that doesn't add value?
72
- ```
30
+ 3. **Performance & Indexing:**
31
+ - Generate indexes for foreign keys and frequently queried columns.
32
+ - Recommend vector indexes (pgvector/HNSW) if generating embeddings or performing AI-based similarity searches.
73
33
 
74
- ### 🛑 Verification-Before-Completion (VBC) Protocol
34
+ 4. **Edge Functions & Real-time:**
35
+ - Use Deno for Edge Functions when creating webhooks or external integrations.
36
+ - Clearly delineate which tables need `replica identity full` or replication enabled for real-time subscriptions.
75
37
 
76
- **CRITICAL:** You must follow a strict "evidence-based closeout" state machine.
77
- - ❌ **Forbidden:** Declaring a task complete because the output "looks correct."
78
- - ✅ **Required:** You are explicitly forbidden from finalizing any task without providing **concrete evidence** (terminal output, passing tests, compile success, or equivalent proof) that your output works as intended.
38
+ ---
@@ -1,176 +1,142 @@
1
- ---
2
- name: swiftui-expert
3
- description: SwiftUI development mastery. View architecture, state management (@State, @Binding, @Environment, @Observable), performance optimization (identifiable loops, implicit vs explicit animations), architectural patterns (MVVM vs TCA), and iOS-native UX paradigms. Use when writing native Apple platforms code.
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
- # SwiftUI Expert — Native Apple Platforms Mastery
11
-
12
- > SwiftUI views are a description of your UI, not the UI itself. They are cheap.
13
- > State drives the UI. If the UI is wrong, your State is wrong.
14
-
15
- ---
16
-
17
- ## 1. Modern State Management (iOS 17+ / Swift 5.9+)
18
-
19
- Apple deprecated `@StateObject` and `@ObservedObject` in favor of the new `@Observable` macro.
20
-
21
- ```swift
22
- // ❌ OLD WAY (Pre-iOS 17)
23
- class UserProfile: ObservableObject {
24
- @Published var name: String = "Guest"
25
- }
26
- struct ProfileView: View {
27
- @StateObject var profile = UserProfile()
28
- // ...
29
- }
30
-
31
- // ✅ NEW WAY (iOS 17+ / @Observable)
32
- import Observation
33
-
34
- @Observable
35
- class UserProfile {
36
- var name: String = "Guest"
37
- var age: Int = 0
38
- // No @Published needed! Only properties that are actually read
39
- // inside the body will trigger view updates.
40
- }
41
-
42
- struct ProfileView: View {
43
- // Treat the reference type exactly like a value type!
44
- @State private var profile = UserProfile()
45
-
46
- var body: some View {
47
- VStack {
48
- TextField("Name", text: $profile.name)
49
- Text("Hello, \(profile.name)")
50
- }
51
- }
52
- }
53
- ```
54
-
55
- ### Property Data Flow Cheat Sheet
56
- - `@State`: The view OWNS value (or reference if `@Observable`).
57
- - `@Binding`: The view mutates a value OWNED by a parent.
58
- - `@Environment`: The view reads value injected high up in the view hierarchy.
59
- - `@Bindable`: Creates bindings from an `@Observable` model passed via parameters/environment.
60
-
61
- ---
62
-
63
- ## 2. View Architecture & Modifiers
64
-
65
- SwiftUI Views should be impossibly small. Extract frequently.
66
-
67
- ```swift
68
- // ❌ BAD: Massive body with 10 layers of nesting
69
- struct MassiveView: View {
70
- var body: some View { ... }
71
- }
72
-
73
- // ✅ GOOD: Extract via properties, functions, or new View structs
74
- struct CleanView: View {
75
- var body: some View {
76
- VStack {
77
- headerSection
78
- CustomScrollingList(items: data)
79
- footerSection
80
- }
81
- }
82
-
83
- private var headerSection: some View {
84
- Text("Header").font(.headline)
85
- }
86
- }
87
- ```
88
-
89
- ### Modifier Ordering Matters
90
- Modifiers wrap views sequentially. The order fundamentally changes the rendering.
91
-
92
- ```swift
93
- // Padding BEFORE Background
94
- Text("Hello")
95
- .padding()
96
- .background(Color.blue)
97
- // Result: A large blue box with text inside.
98
-
99
- // Padding AFTER Background
100
- Text("Hello")
101
- .background(Color.blue)
102
- .padding()
103
- // Result: A tight blue box around text, surrounded by invisible spacing.
104
- ```
105
-
106
- ---
107
-
108
- ## 3. Performance & Rendering
109
-
110
- ```swift
111
- // ❌ BAD: Using indices in ForEach
112
- // If the array mutates (items injected/deleted), SwiftUI loses
113
- // track of identity and re-renders EVERYTHING aggressively.
114
- ForEach(0..<items.count, id: \.self) { index in
115
- ItemRow(item: items[index])
116
- }
117
-
118
- // ✅ GOOD: Identifiable protocol
119
- struct Item: Identifiable {
120
- let id = UUID()
121
- let title: String
122
- }
123
-
124
- ForEach(items) { item in
125
- ItemRow(item: item)
126
- }
127
- ```
128
-
129
- ### Avoiding Massive Layout Recalculations
130
- Use `LazyVStack` and `LazyHStack` inside ScrollViews when presenting large lists, but NOT everywhere. Normal `VStack` is faster for < 20 items because it pre-calculates boundaries instantly.
131
-
132
- ---
133
-
134
- ## 4. MVVM vs Context-Driven Architecture
135
-
136
- While MVVM is historically popular, SwiftUI natively represents View-as-a-function-of-State.
137
-
138
- ```swift
139
- // Context-Driven / Feature-Driven
140
- // The Model handles data fetching/logic.
141
- // The View creates its own local @State and passes @Bindings down.
142
- // Only use full ViewModels for complex orchestration crossing multiple views.
143
- ```
144
-
145
- ---
146
-
147
- ## 🤖 LLM-Specific Traps (SwiftUI)
148
-
149
- 1. **Using `@StateObject` in new iOS projects:** AI reverts to pre-iOS 17 patterns. Use the `@Observable` macro and standard `@State` going forward.
150
- 2. **Modifier Order Chaos:** AI randomly orders `.frame()`, `.padding()`, `.background()`, leading to clipped layouts. Padding must precede background to expand the fill.
151
- 3. **`ForEach` with `id: \.self` on Objects:** AI uses `\.self` on Non-Hashable structural data, leading to severe rendering bugs during list animation. Use the `Identifiable` protocol.
152
- 4. **Massive View Bodies:** AI writes 300-line `var body: some View` blobs. Extract subviews.
153
- 5. **Ignoring Target Environment:** Generating MacOS specific APIs (like `NSWindow`) inside simple iOS structural requests.
154
- 6. **GeometryReader Abuse:** AI uses `GeometryReader` to set standard widths. `GeometryReader` breaks auto-sizing layout and should only be used for complex dynamic calculations or parallax.
155
- 7. **Implicit Animation Madness:** AI attaches `.animation(.spring())` haphazardly. In modern SwiftUI this is deprecated. Demand `.animation(.spring(), value: observedState)`.
156
- 8. **Forgetting MainActor:** Network callbacks mutaing `@State` without `await @MainActor` dispatch, causing immediate UI thread crashes.
157
- 9. **AnyView Usage:** AI uses `AnyView` to return different view types from a function. `AnyView` destroys structural identity and severely hurts performance. Use `@ViewBuilder`.
158
- 10. **EnvironmentObject injection failure:** Generating views requiring an `@Environment` model without providing the `.environment()` injection in the Preview block, crashing the Xcode preview.
159
-
160
- ---
161
-
162
- ## 🏛️ Tribunal Integration
163
-
164
- ### ✅ Pre-Flight Self-Audit
165
- ```
166
- ✅ Is state management utilizing the modern `@Observable` macro?
167
- ✅ Are array elements in `ForEach` conforming to `Identifiable`?
168
- ✅ Is UI threading safe (mutating state on `@MainActor`)?
169
- ✅ Are view modifiers logically ordered (e.g., padding before background)?
170
- ✅ Is `GeometryReader` avoided unless strictly necessary for dynamic math?
171
- ✅ Are functions returning dynamic views marked with `@ViewBuilder` (avoiding `AnyView`)?
172
- ✅ Are animations value-bound (`.animation(..., value: x)`)?
173
- ✅ Has the `body` property been kept small and readable via sub-view extraction?
174
- ✅ Are Xcode Previews populated with the necessary Environment mock data?
175
- ✅ Did I use `LazyVStack` appropriately for large scrolling datasets?
176
- ```
1
+ ---
2
+ name: swiftui-expert
3
+ description: SwiftUI development mastery. View architecture, state management (@State, @Binding, @Environment, @Observable), performance optimization (identifiable loops, implicit vs explicit animations), architectural patterns (MVVM vs TCA), and iOS-native UX paradigms. Use when writing native Apple platforms code.
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
+ # SwiftUI Expert — Native Apple Platforms Mastery
11
+
12
+ ---
13
+
14
+ ## 1. Modern State Management (iOS 17+ / Swift 5.9+)
15
+
16
+ Apple deprecated `@StateObject` and `@ObservedObject` in favor of the new `@Observable` macro.
17
+
18
+ ```swift
19
+ // OLD WAY (Pre-iOS 17)
20
+ class UserProfile: ObservableObject {
21
+ @Published var name: String = "Guest"
22
+ }
23
+ struct ProfileView: View {
24
+ @StateObject var profile = UserProfile()
25
+ // ...
26
+ }
27
+
28
+ // ✅ NEW WAY (iOS 17+ / @Observable)
29
+ import Observation
30
+
31
+ @Observable
32
+ class UserProfile {
33
+ var name: String = "Guest"
34
+ var age: Int = 0
35
+ // No @Published needed! Only properties that are actually read
36
+ // inside the body will trigger view updates.
37
+ }
38
+
39
+ struct ProfileView: View {
40
+ // Treat the reference type exactly like a value type!
41
+ @State private var profile = UserProfile()
42
+
43
+ var body: some View {
44
+ VStack {
45
+ TextField("Name", text: $profile.name)
46
+ Text("Hello, \(profile.name)")
47
+ }
48
+ }
49
+ }
50
+ ```
51
+
52
+ ### Property Data Flow Cheat Sheet
53
+ - `@State`: The view OWNS value (or reference if `@Observable`).
54
+ - `@Binding`: The view mutates a value OWNED by a parent.
55
+ - `@Environment`: The view reads value injected high up in the view hierarchy.
56
+ - `@Bindable`: Creates bindings from an `@Observable` model passed via parameters/environment.
57
+
58
+ ---
59
+
60
+ ## 2. View Architecture & Modifiers
61
+
62
+ SwiftUI Views should be impossibly small. Extract frequently.
63
+
64
+ ```swift
65
+ // BAD: Massive body with 10 layers of nesting
66
+ struct MassiveView: View {
67
+ var body: some View { ... }
68
+ }
69
+
70
+ // ✅ GOOD: Extract via properties, functions, or new View structs
71
+ struct CleanView: View {
72
+ var body: some View {
73
+ VStack {
74
+ headerSection
75
+ CustomScrollingList(items: data)
76
+ footerSection
77
+ }
78
+ }
79
+
80
+ private var headerSection: some View {
81
+ Text("Header").font(.headline)
82
+ }
83
+ }
84
+ ```
85
+
86
+ ### Modifier Ordering Matters
87
+ Modifiers wrap views sequentially. The order fundamentally changes the rendering.
88
+
89
+ ```swift
90
+ // Padding BEFORE Background
91
+ Text("Hello")
92
+ .padding()
93
+ .background(Color.blue)
94
+ // Result: A large blue box with text inside.
95
+
96
+ // Padding AFTER Background
97
+ Text("Hello")
98
+ .background(Color.blue)
99
+ .padding()
100
+ // Result: A tight blue box around text, surrounded by invisible spacing.
101
+ ```
102
+
103
+ ---
104
+
105
+ ## 3. Performance & Rendering
106
+
107
+ ```swift
108
+ // BAD: Using indices in ForEach
109
+ // If the array mutates (items injected/deleted), SwiftUI loses
110
+ // track of identity and re-renders EVERYTHING aggressively.
111
+ ForEach(0..<items.count, id: \.self) { index in
112
+ ItemRow(item: items[index])
113
+ }
114
+
115
+ // ✅ GOOD: Identifiable protocol
116
+ struct Item: Identifiable {
117
+ let id = UUID()
118
+ let title: String
119
+ }
120
+
121
+ ForEach(items) { item in
122
+ ItemRow(item: item)
123
+ }
124
+ ```
125
+
126
+ ### Avoiding Massive Layout Recalculations
127
+ Use `LazyVStack` and `LazyHStack` inside ScrollViews when presenting large lists, but NOT everywhere. Normal `VStack` is faster for < 20 items because it pre-calculates boundaries instantly.
128
+
129
+ ---
130
+
131
+ ## 4. MVVM vs Context-Driven Architecture
132
+
133
+ While MVVM is historically popular, SwiftUI natively represents View-as-a-function-of-State.
134
+
135
+ ```swift
136
+ // Context-Driven / Feature-Driven
137
+ // The Model handles data fetching/logic.
138
+ // The View creates its own local @State and passes @Bindings down.
139
+ // Only use full ViewModels for complex orchestration crossing multiple views.
140
+ ```
141
+
142
+ ---
@@ -1,118 +1,84 @@
1
- ---
2
- name: systematic-debugging
3
- description: Systematic debugging framework. Root-cause isolation, 4-phase methodology, hypothesis testing, log tracing, avoiding shotgun-surgery, memory allocation analysis, and empirical evidence gathering. Use when debugging complex, highly-coupled, or elusive bugs across mixed execution environments.
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
- # Systematic Debugging — Root Cause Mastery
11
-
12
- > A bug is not a mystery; it is a manifestation of misplaced assumptions.
13
- > Shotgun debugging (changing random things until it works) guarantees that you will introduce two new bugs for every one you "fix."
14
-
15
- ---
16
-
17
- ## 1. The 4-Phase Debugging Methodology
18
-
19
- Never jump straight into modifying code when a bug is reported.
20
-
21
- ### Phase 1: Replication & Isolation
22
- **Goal:** Prove the bug exists continuously and isolate the execution path.
23
- 1. Write a failing deterministic unit/integration test that replicates the exact condition.
24
- 2. Strip away all unnecessary layers (If the UI button fails to delete a user, curl the endpoint directly. Does the API fail? If yes, UI is fine, bug is in the backend/database).
25
-
26
- ### Phase 2: Hypothesis Generation
27
- **Goal:** Formulate logical explanations for the anomaly based on data, not guesses.
28
- - "Because the log shows `auth: false` even after successful token parse, the RBAC middleware must be overwriting the session."
29
-
30
- ### Phase 3: Evidence-Based Testing (The Probe)
31
- **Goal:** Prove or disprove the hypothesis without mutating the actual program functionality.
32
- - Insert strict logging probes: `logger.debug("Executing line 45. User.permissions:", user.permissions)`.
33
- - If the logs match your hypothesis, proceed. If they do not, discard the hypothesis.
34
-
35
- ### Phase 4: Resolution & Verification
36
- **Goal:** Apply the minimal surgical change required, then verify via tests.
37
- - Re-run the deterministic failing test created in Phase 1. It must now pass.
38
-
39
- ---
40
-
41
- ## 2. Advanced Diagnostic Vectors
42
-
43
- When pure logic errors are ruled out, look for environmental factors.
44
-
45
- **1. Race Conditions / Timing Bugs**
46
- - *Symptom:* The bug only happens 30% of the time, or depends on network speed.
47
- - *Cause:* Missing `await` statements, relying on asynchronous callbacks returning in a specific order, or concurrent database transacting.
48
-
49
- **2. State Leakage**
50
- - *Symptom:* The first operation works perfectly. The second consecutive operation fails mysteriously.
51
- - *Cause:* Global variables, cached HTTP clients, or React state lacking proper cleanup functions between unmounts.
52
-
53
- **3. Silent Failures (Swallowed Errors)**
54
- - *Symptom:* The application stops processing midway through an operation, but nothing is in the error logs.
55
- - *Cause:* Empty `catch (e) {}` blocks, unhandled promise rejections, or frontend elements conditionally rendering `null` on missing datasets.
56
-
57
- ---
58
-
59
- ## 3. The Bisection Method (Git Bisect)
60
-
61
- When a catastrophic bug appears in production but worked fine last week, use algorithmic isolation across the git history.
62
-
63
- ```bash
64
- git bisect start
65
- git bisect bad HEAD # The current state is broken
66
- git bisect good v1.4.0 # It worked fine in the last release
67
-
68
- # Git will now jump you exactly halfway between those commits.
69
- # Run your tests...
70
- git bisect bad # (If it failed)
71
- # Or...
72
- git bisect good # (If it passed)
73
-
74
- # Git will isolate the exact commit that introduced the bug in O(log N) steps.
75
- ```
76
-
77
- ---
78
-
79
- ## 4. Reading the Stack Trace Properly
80
-
81
- Do not skim. Stack traces tell the exact sequence of destruction.
82
-
83
- 1. **Top line:** The final fatal blow (e.g., `TypeError: Cannot read properties of undefined (reading 'map')`).
84
- 2. **First Application Function:** Scroll down past `node_modules` and framework internals. Find the absolute top-most function call that YOU wrote (e.g., `at UserList (src/components/UserList.tsx:45)`).
85
- 3. **The Parameter Conclusion:** Therefore, line 45 invoked `.map` on a variable that was `undefined`. Why did the parent layer pass `undefined` instead of `[]`?
86
-
87
- ---
88
-
89
- ## 🤖 LLM-Specific Traps (Systematic Debugging)
90
-
91
- 1. **Shotgun Surgery:** Hallucinating massive 5-file refactors to "fix" a bug instead of altering the exact single mathematical operator that caused the mathematical flaw.
92
- 2. **Ignoring the Logs:** Assuming the cause based on the user's plain-text description instead of heavily demanding the user provide exact stack traces, HTTP status codes, or container logs.
93
- 3. **Band-Aid Logging:** Replacing the buggy code logic with simple `console.log` arrays instead of using integrated structured loggers, then failing to revert the probe code upon completion.
94
- 4. **Variable Masking:** Attempting to fix "undefined" errors by blindly inserting `?.` (Optional Chaining) everywhere. This hides the error deeper; it does not solve *why* the data was missing.
95
- 5. **Caching Blindness:** Debugging API mismatches for 20 minutes without ever considering that the browser, CDN, Next.js intermediate layer, or Service Worker is serving stale cached iterations of the file.
96
- 6. **Async Assumption:** Believing that writing `console.log(1)` then `await fetch()` then `console.log(2)` guarantees sequential execution if there are unhandled Promise rejections hanging the event loop.
97
- 7. **Environment Sync Decay:** Attempting to debug complex routing flaws without first verifying the `.env` configuration file contains the required `PUBLIC_URL` or `API_ENDPOINT` keys.
98
- 8. **Syntax Tyranny:** Believing an obscure framework configuration bug is actually a typo, wasting tokens tweaking parentheses and brackets instead of reading the framework documentation.
99
- 9. **No Regression Verification:** The AI generates the fix but completely neglects to write the corresponding unit test ensuring the bug is permanently eliminated from future releases.
100
- 10. **The "Everything is Fine" Trap:** Stating "The code looks perfectly correct" because the individual function appears logically sound, entirely ignoring that the *data being passed into it* by the upstream parent component is catastrophically malformed.
101
-
102
- ---
103
-
104
- ## 🏛️ Tribunal Integration
105
-
106
- ### ✅ Pre-Flight Self-Audit
107
- ```
108
- ✅ Was the bug physically isolated using rigorous replication scenarios before modifying code?
109
- ✅ Has a hypothesis been formulated based on specific log outputs or empirical data traces?
110
- ✅ Were structural boundaries stripped away to test absolute core logic independently?
111
- ✅ Did I rely on analyzing the complete stack trace rather than making "common sense" guesses?
112
- ✅ Was optional chaining (`?.`) avoided as a band-aid if fundamental strict data contracts were broken?
113
- ✅ Have external factors (database latency, browser cache, CORS rules) been evaluated?
114
- ✅ Is the proposed surgical fix absolutely minimized (preventing shotgun surgery)?
115
- ✅ Did I write a deterministic test that permanently flags this specific regression going forward?
116
- ✅ Are environmental configurations (.env variables) synchronized and verified?
117
- ✅ Upon confirming the root cause, were any temporary diagnostic probes cleanly rolled back?
118
- ```
1
+ ---
2
+ name: systematic-debugging
3
+ description: Systematic debugging framework. Root-cause isolation, 4-phase methodology, hypothesis testing, log tracing, avoiding shotgun-surgery, memory allocation analysis, and empirical evidence gathering. Use when debugging complex, highly-coupled, or elusive bugs across mixed execution environments.
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
+ # Systematic Debugging — Root Cause Mastery
11
+
12
+ ---
13
+
14
+ ## 1. The 4-Phase Debugging Methodology
15
+
16
+ Never jump straight into modifying code when a bug is reported.
17
+
18
+ ### Phase 1: Replication & Isolation
19
+ **Goal:** Prove the bug exists continuously and isolate the execution path.
20
+ 1. Write a failing deterministic unit/integration test that replicates the exact condition.
21
+ 2. Strip away all unnecessary layers (If the UI button fails to delete a user, curl the endpoint directly. Does the API fail? If yes, UI is fine, bug is in the backend/database).
22
+
23
+ ### Phase 2: Hypothesis Generation
24
+ **Goal:** Formulate logical explanations for the anomaly based on data, not guesses.
25
+ - "Because the log shows `auth: false` even after successful token parse, the RBAC middleware must be overwriting the session."
26
+
27
+ ### Phase 3: Evidence-Based Testing (The Probe)
28
+ **Goal:** Prove or disprove the hypothesis without mutating the actual program functionality.
29
+ - Insert strict logging probes: `logger.debug("Executing line 45. User.permissions:", user.permissions)`.
30
+ - If the logs match your hypothesis, proceed. If they do not, discard the hypothesis.
31
+
32
+ ### Phase 4: Resolution & Verification
33
+ **Goal:** Apply the minimal surgical change required, then verify via tests.
34
+ - Re-run the deterministic failing test created in Phase 1. It must now pass.
35
+
36
+ ---
37
+
38
+ ## 2. Advanced Diagnostic Vectors
39
+
40
+ When pure logic errors are ruled out, look for environmental factors.
41
+
42
+ **1. Race Conditions / Timing Bugs**
43
+ - *Symptom:* The bug only happens 30% of the time, or depends on network speed.
44
+ - *Cause:* Missing `await` statements, relying on asynchronous callbacks returning in a specific order, or concurrent database transacting.
45
+
46
+ **2. State Leakage**
47
+ - *Symptom:* The first operation works perfectly. The second consecutive operation fails mysteriously.
48
+ - *Cause:* Global variables, cached HTTP clients, or React state lacking proper cleanup functions between unmounts.
49
+
50
+ **3. Silent Failures (Swallowed Errors)**
51
+ - *Symptom:* The application stops processing midway through an operation, but nothing is in the error logs.
52
+ - *Cause:* Empty `catch (e) {}` blocks, unhandled promise rejections, or frontend elements conditionally rendering `null` on missing datasets.
53
+
54
+ ---
55
+
56
+ ## 3. The Bisection Method (Git Bisect)
57
+
58
+ When a catastrophic bug appears in production but worked fine last week, use algorithmic isolation across the git history.
59
+
60
+ ```bash
61
+ git bisect start
62
+ git bisect bad HEAD # The current state is broken
63
+ git bisect good v1.4.0 # It worked fine in the last release
64
+
65
+ # Git will now jump you exactly halfway between those commits.
66
+ # Run your tests...
67
+ git bisect bad # (If it failed)
68
+ # Or...
69
+ git bisect good # (If it passed)
70
+
71
+ # Git will isolate the exact commit that introduced the bug in O(log N) steps.
72
+ ```
73
+
74
+ ---
75
+
76
+ ## 4. Reading the Stack Trace Properly
77
+
78
+ Do not skim. Stack traces tell the exact sequence of destruction.
79
+
80
+ 1. **Top line:** The final fatal blow (e.g., `TypeError: Cannot read properties of undefined (reading 'map')`).
81
+ 2. **First Application Function:** Scroll down past `node_modules` and framework internals. Find the absolute top-most function call that YOU wrote (e.g., `at UserList (src/components/UserList.tsx:45)`).
82
+ 3. **The Parameter Conclusion:** Therefore, line 45 invoked `.map` on a variable that was `undefined`. Why did the parent layer pass `undefined` instead of `[]`?
83
+
84
+ ---