tribunal-kit 2.4.6 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/.agent/agents/accessibility-reviewer.md +220 -134
  2. package/.agent/agents/ai-code-reviewer.md +233 -129
  3. package/.agent/agents/backend-specialist.md +238 -178
  4. package/.agent/agents/code-archaeologist.md +181 -119
  5. package/.agent/agents/database-architect.md +207 -164
  6. package/.agent/agents/debugger.md +218 -151
  7. package/.agent/agents/dependency-reviewer.md +136 -55
  8. package/.agent/agents/devops-engineer.md +238 -175
  9. package/.agent/agents/documentation-writer.md +221 -137
  10. package/.agent/agents/explorer-agent.md +180 -142
  11. package/.agent/agents/frontend-reviewer.md +194 -80
  12. package/.agent/agents/frontend-specialist.md +237 -188
  13. package/.agent/agents/game-developer.md +52 -184
  14. package/.agent/agents/logic-reviewer.md +149 -78
  15. package/.agent/agents/mobile-developer.md +223 -152
  16. package/.agent/agents/mobile-reviewer.md +195 -79
  17. package/.agent/agents/orchestrator.md +211 -170
  18. package/.agent/agents/penetration-tester.md +174 -131
  19. package/.agent/agents/performance-optimizer.md +203 -139
  20. package/.agent/agents/performance-reviewer.md +211 -108
  21. package/.agent/agents/product-manager.md +162 -108
  22. package/.agent/agents/project-planner.md +162 -142
  23. package/.agent/agents/qa-automation-engineer.md +242 -138
  24. package/.agent/agents/security-auditor.md +194 -170
  25. package/.agent/agents/seo-specialist.md +213 -132
  26. package/.agent/agents/sql-reviewer.md +194 -73
  27. package/.agent/agents/supervisor-agent.md +203 -156
  28. package/.agent/agents/test-coverage-reviewer.md +193 -81
  29. package/.agent/agents/type-safety-reviewer.md +208 -65
  30. package/.agent/scripts/__pycache__/auto_preview.cpython-311.pyc +0 -0
  31. package/.agent/scripts/__pycache__/bundle_analyzer.cpython-311.pyc +0 -0
  32. package/.agent/scripts/__pycache__/checklist.cpython-311.pyc +0 -0
  33. package/.agent/scripts/__pycache__/dependency_analyzer.cpython-311.pyc +0 -0
  34. package/.agent/scripts/__pycache__/security_scan.cpython-311.pyc +0 -0
  35. package/.agent/scripts/__pycache__/session_manager.cpython-311.pyc +0 -0
  36. package/.agent/scripts/__pycache__/skill_integrator.cpython-311.pyc +0 -0
  37. package/.agent/scripts/__pycache__/swarm_dispatcher.cpython-311.pyc +0 -0
  38. package/.agent/scripts/__pycache__/test_runner.cpython-311.pyc +0 -0
  39. package/.agent/scripts/__pycache__/verify_all.cpython-311.pyc +0 -0
  40. package/.agent/skills/agent-organizer/SKILL.md +126 -132
  41. package/.agent/skills/ai-prompt-injection-defense/SKILL.md +155 -66
  42. package/.agent/skills/api-patterns/SKILL.md +289 -257
  43. package/.agent/skills/api-security-auditor/SKILL.md +172 -70
  44. package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +1 -1
  45. package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +1 -1
  46. package/.agent/skills/appflow-wireframe/SKILL.md +107 -100
  47. package/.agent/skills/architecture/SKILL.md +331 -200
  48. package/.agent/skills/authentication-best-practices/SKILL.md +168 -67
  49. package/.agent/skills/bash-linux/SKILL.md +154 -215
  50. package/.agent/skills/brainstorming/SKILL.md +104 -210
  51. package/.agent/skills/building-native-ui/SKILL.md +169 -70
  52. package/.agent/skills/clean-code/SKILL.md +360 -206
  53. package/.agent/skills/config-validator/SKILL.md +141 -165
  54. package/.agent/skills/csharp-developer/SKILL.md +528 -107
  55. package/.agent/skills/database-design/SKILL.md +455 -275
  56. package/.agent/skills/deployment-procedures/SKILL.md +145 -188
  57. package/.agent/skills/devops-engineer/SKILL.md +332 -134
  58. package/.agent/skills/devops-incident-responder/SKILL.md +113 -98
  59. package/.agent/skills/edge-computing/SKILL.md +157 -213
  60. package/.agent/skills/extract-design-system/SKILL.md +129 -69
  61. package/.agent/skills/framer-motion-expert/SKILL.md +939 -0
  62. package/.agent/skills/game-design-expert/SKILL.md +105 -0
  63. package/.agent/skills/game-engineering-expert/SKILL.md +122 -0
  64. package/.agent/skills/geo-fundamentals/SKILL.md +124 -215
  65. package/.agent/skills/github-operations/SKILL.md +314 -354
  66. package/.agent/skills/gsap-expert/SKILL.md +901 -0
  67. package/.agent/skills/i18n-localization/SKILL.md +138 -216
  68. package/.agent/skills/intelligent-routing/SKILL.md +127 -139
  69. package/.agent/skills/llm-engineering/SKILL.md +357 -258
  70. package/.agent/skills/local-first/SKILL.md +154 -203
  71. package/.agent/skills/mcp-builder/SKILL.md +118 -224
  72. package/.agent/skills/nextjs-react-expert/SKILL.md +783 -203
  73. package/.agent/skills/nodejs-best-practices/SKILL.md +559 -280
  74. package/.agent/skills/observability/SKILL.md +330 -285
  75. package/.agent/skills/parallel-agents/SKILL.md +122 -181
  76. package/.agent/skills/performance-profiling/SKILL.md +254 -197
  77. package/.agent/skills/plan-writing/SKILL.md +118 -188
  78. package/.agent/skills/platform-engineer/SKILL.md +123 -135
  79. package/.agent/skills/playwright-best-practices/SKILL.md +157 -76
  80. package/.agent/skills/powershell-windows/SKILL.md +146 -230
  81. package/.agent/skills/python-pro/SKILL.md +879 -114
  82. package/.agent/skills/react-specialist/SKILL.md +931 -108
  83. package/.agent/skills/realtime-patterns/SKILL.md +304 -296
  84. package/.agent/skills/rust-pro/SKILL.md +701 -240
  85. package/.agent/skills/seo-fundamentals/SKILL.md +154 -181
  86. package/.agent/skills/server-management/SKILL.md +190 -212
  87. package/.agent/skills/shadcn-ui-expert/SKILL.md +201 -68
  88. package/.agent/skills/sql-pro/SKILL.md +633 -104
  89. package/.agent/skills/swiftui-expert/SKILL.md +171 -70
  90. package/.agent/skills/systematic-debugging/SKILL.md +118 -186
  91. package/.agent/skills/tailwind-patterns/SKILL.md +576 -232
  92. package/.agent/skills/tdd-workflow/SKILL.md +137 -209
  93. package/.agent/skills/testing-patterns/SKILL.md +573 -205
  94. package/.agent/skills/vue-expert/SKILL.md +964 -119
  95. package/.agent/skills/vulnerability-scanner/SKILL.md +269 -316
  96. package/.agent/skills/web-accessibility-auditor/SKILL.md +188 -71
  97. package/.agent/skills/webapp-testing/SKILL.md +145 -236
  98. package/.agent/workflows/api-tester.md +151 -279
  99. package/.agent/workflows/audit.md +138 -168
  100. package/.agent/workflows/brainstorm.md +110 -146
  101. package/.agent/workflows/changelog.md +112 -144
  102. package/.agent/workflows/create.md +124 -139
  103. package/.agent/workflows/debug.md +189 -196
  104. package/.agent/workflows/deploy.md +189 -153
  105. package/.agent/workflows/enhance.md +151 -139
  106. package/.agent/workflows/fix.md +135 -143
  107. package/.agent/workflows/generate.md +157 -164
  108. package/.agent/workflows/migrate.md +160 -163
  109. package/.agent/workflows/orchestrate.md +168 -151
  110. package/.agent/workflows/performance-benchmarker.md +123 -305
  111. package/.agent/workflows/plan.md +173 -151
  112. package/.agent/workflows/preview.md +80 -137
  113. package/.agent/workflows/refactor.md +183 -153
  114. package/.agent/workflows/review-ai.md +129 -140
  115. package/.agent/workflows/review.md +116 -155
  116. package/.agent/workflows/session.md +94 -154
  117. package/.agent/workflows/status.md +79 -125
  118. package/.agent/workflows/strengthen-skills.md +139 -99
  119. package/.agent/workflows/swarm.md +179 -194
  120. package/.agent/workflows/test.md +211 -166
  121. package/.agent/workflows/tribunal-backend.md +113 -111
  122. package/.agent/workflows/tribunal-database.md +115 -132
  123. package/.agent/workflows/tribunal-frontend.md +118 -115
  124. package/.agent/workflows/tribunal-full.md +133 -136
  125. package/.agent/workflows/tribunal-mobile.md +119 -123
  126. package/.agent/workflows/tribunal-performance.md +133 -152
  127. package/.agent/workflows/ui-ux-pro-max.md +143 -171
  128. package/README.md +11 -15
  129. package/package.json +1 -1
  130. package/.agent/skills/dotnet-core-expert/SKILL.md +0 -103
  131. package/.agent/skills/framer-motion-animations/SKILL.md +0 -74
  132. package/.agent/skills/game-development/2d-games/SKILL.md +0 -119
  133. package/.agent/skills/game-development/3d-games/SKILL.md +0 -135
  134. package/.agent/skills/game-development/SKILL.md +0 -236
  135. package/.agent/skills/game-development/game-art/SKILL.md +0 -185
  136. package/.agent/skills/game-development/game-audio/SKILL.md +0 -190
  137. package/.agent/skills/game-development/game-design/SKILL.md +0 -129
  138. package/.agent/skills/game-development/mobile-games/SKILL.md +0 -108
  139. package/.agent/skills/game-development/multiplayer/SKILL.md +0 -132
  140. package/.agent/skills/game-development/pc-games/SKILL.md +0 -144
  141. package/.agent/skills/game-development/vr-ar/SKILL.md +0 -123
  142. package/.agent/skills/game-development/web-games/SKILL.md +0 -150
@@ -1,75 +1,176 @@
1
1
  ---
2
2
  name: swiftui-expert
3
- description: Dedicated Apple-ecosystem App UI architect. Focuses on idiomatic SwiftUI, @State property wrappers, fluid Combine integrations, and native transitions.
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
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
5
+ version: 2.0.0
6
+ last-updated: 2026-04-02
7
+ applies-to-model: gemini-2.5-pro, claude-3-7-sonnet
8
8
  ---
9
9
 
10
- # SwiftUI Expert
11
-
12
- You are a top-tier iOS / macOS Application Developer who primarily utilizes SwiftUI to build fast, declarative, and highly native application interfaces.
13
-
14
- ## Core Directives
15
-
16
- 1. **State Ownership & Data Flow:**
17
- - Use `@State` *strictly* for simple, local, internal view state that isn't shared.
18
- - Inject dependencies properly throughout the view hierarchy using `@Environment` and push complex controller logic to `@StateObject` or `Observable` architectures. Avoid gigantic God-views passing `@Binding` down ten levels.
19
-
20
- 2. **Semantic View Modifiers:**
21
- - Respect modifier ordering! In SwiftUI, sequence matters greatly (e.g., `.padding().background(Color.red)` produces drastically different results than `.background(Color.red).padding()`).
22
- - Build smaller, composable views rather than monolithic structural scopes. Extract components liberally.
23
-
24
- 3. **Animation Idioms:**
25
- - Prefer native implicit `.animation(.spring())` and explicit `withAnimation { }` blocks over complex timers or geometric transforms.
26
- - Attach transitions properly during state changes to manage view insertion/removal gracefully.
27
-
28
- 4. **Layout Foundations:**
29
- - Maximize the usage of `VStack`, `HStack`, `ZStack`, and raw `Grid` components safely over inflexible absolute positions.
30
- - Accommodate spatial layouts properly by respecting `SafeAreaInsets` and `presentationDetents` for half-sheets.
31
-
32
- ## Execution
33
- When creating SwiftUI interfaces, avoid UIKit overrides like `UIViewRepresentable` unless absolutely dictated. Deliver pristine `.swift` View structures maximizing Apple's human interface guidelines (HIG).
34
-
35
-
36
- ---
37
-
38
- ## 🤖 LLM-Specific Traps
39
-
40
- AI coding assistants often fall into specific bad habits when dealing with this domain. These are strictly forbidden:
41
-
42
- 1. **Over-engineering:** Proposing complex abstractions or distributed systems when a simpler approach suffices.
43
- 2. **Hallucinated Libraries/Methods:** Using non-existent methods or packages. Always `// VERIFY` or check `package.json` / `requirements.txt`.
44
- 3. **Skipping Edge Cases:** Writing the "happy path" and ignoring error handling, timeouts, or data validation.
45
- 4. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
46
- 5. **Silent Degradation:** Catching and suppressing errors without logging or re-raising.
47
-
48
- ---
49
-
50
- ## 🏛️ Tribunal Integration (Anti-Hallucination)
51
-
52
- **Slash command: `/review` or `/tribunal-full`**
53
- **Active reviewers: `logic-reviewer` · `security-auditor`**
54
-
55
- ### Forbidden AI Tropes
56
-
57
- 1. **Blind Assumptions:** Never make an assumption without documenting it clearly with `// VERIFY: [reason]`.
58
- 2. **Silent Degradation:** Catching and suppressing errors without logging or handling.
59
- 3. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
60
-
61
- ### ✅ Pre-Flight Self-Audit
62
-
63
- Review these questions before confirming output:
64
- ```
65
- Did I rely ONLY on real, verified tools and methods?
66
- ✅ Is this solution appropriately scoped to the user's constraints?
67
- ✅ Did I handle potential failure modes and edge cases?
68
- Have I avoided generic boilerplate that doesn't add value?
69
- ```
70
-
71
- ### 🛑 Verification-Before-Completion (VBC) Protocol
72
-
73
- **CRITICAL:** You must follow a strict "evidence-based closeout" state machine.
74
- - **Forbidden:** Declaring a task complete because the output "looks correct."
75
- - **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.
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,186 +1,118 @@
1
- ---
2
- name: systematic-debugging
3
- description: 4-phase systematic debugging methodology with root cause analysis and evidence-based verification. Use when debugging complex issues.
4
- allowed-tools: Read, Write, Edit, Glob, Grep
5
- version: 1.0.0
6
- last-updated: 2026-03-12
7
- applies-to-model: gemini-2.5-pro, claude-3-7-sonnet
8
- ---
9
-
10
- # Systematic Debugging
11
-
12
- > Debugging is not guessing. It is the scientific method applied to broken software.
13
- > Every guess without evidence is just noise. Every change without verification extends the outage.
14
-
15
- ---
16
-
17
- ## The 4-Phase Method
18
-
19
- ### Phase 1 Reproduce
20
-
21
- A bug you can't reproduce consistently is a bug you can't safely fix.
22
-
23
- **Steps:**
24
- 1. Document the exact sequence that triggers the bug (input action observed result)
25
- 2. Identify the environment: OS, browser, Node version, database version, network conditions
26
- 3. Determine if the bug is consistent or intermittent
27
- 4. Find the smallest reproduction case
28
-
29
- ```
30
- # Reproduction template
31
- Trigger: [Exact steps]
32
- Environment: [Runtime, OS, version]
33
- Expected: [What should happen]
34
- Observed: [What actually happens]
35
- Consistent: [Yes / No / Only under load / Only for specific users]
36
- ```
37
-
38
- If you cannot reproduce — collect more data before attempting a fix.
39
-
40
- ### Phase 2 — Locate
41
-
42
- Find where the code breaks, not what you think broke.
43
-
44
- **Tools by layer:**
45
-
46
- | Layer | Locating Tools |
47
- |---|---|
48
- | Network | Browser DevTools → Network tab, curl, Wireshark |
49
- | API | Response body + status code, request logs |
50
- | Application logic | Debugger, `console.log` with structured context |
51
- | Database | Query logs, `EXPLAIN ANALYZE`, slow query log |
52
- | Memory | Heap snapshot, `--inspect` with Chrome DevTools |
53
-
54
- **Technique: Binary search the call stack**
55
-
56
- When the bug could be anywhere, divide the execution in half:
57
- - Does the bug exist before line 100? Add a checkpoint.
58
- - Does it exist before line 50? Add another.
59
- - Continue halving until you've isolated the broken unit.
60
-
61
- ### Phase 3 Hypothesize and Test
62
-
63
- Form one specific hypothesis. Test it. Do not form multiple and fix them all simultaneously.
64
-
65
- ```
66
- Hypothesis: "The JWT is expiring before the renewal code runs because
67
- the token TTL and the renewal check interval are both set to 1 hour,
68
- with no buffer."
69
-
70
- Test: Reduce token TTL to 5 minutes in dev. Does the error appear in 5 minutes?
71
-
72
- Result: Yes hypothesis confirmed
73
- No → discard and form a new hypothesis
74
- ```
75
-
76
- **One change at a time.** Two changes at once = you don't know which one fixed it.
77
-
78
- ### Phase 4 — Fix and Verify
79
-
80
- Fix the root cause — not the symptom.
81
-
82
- **Root cause vs. symptom:**
83
- ```
84
- Symptom: Users are getting logged out
85
- Cause: Token TTL is shorter than session duration
86
- Root cause: TTL and renewal interval were set by two different teams without coordination
87
-
88
- Symptom fix: Increase TTL
89
- Root cause fix: Establish a single config source for auth timing values + document the relationship
90
- ```
91
-
92
- **Verification checklist:**
93
- - [ ] Bug no longer reproduces with the specific steps from Phase 1
94
- - [ ] Adjacent behavior still works (no regression)
95
- - [ ] Fix works in the environment where the bug was first reported
96
- - [ ] A test is added that would have caught this bug before it reached production
97
-
98
- ---
99
-
100
- ## Common Debugging Patterns
101
-
102
- ### Intermittent Bug
103
-
104
- - Likely cause: race condition, network timeout, missing error handling on async code
105
- - Add structured logging with request IDs and timestamps
106
- - Reproduce under load (`k6`, `ab`)
107
- - Look for shared mutable state
108
-
109
- ### Works Locally, Fails in Production
110
-
111
- - Likely cause: environment difference (env vars, feature flags, database version, data volume)
112
- - Compare env vars between local and production (`printenv | sort`)
113
- - Test with production-scale data
114
- - Check for hardcoded localhost URLs or conditions
115
-
116
- ### Only Fails for Specific Users
117
-
118
- - Likely cause: data-specific edge case, permission issue, locale-specific formatting
119
- - Reproduce using the same user ID/session in a lower environment
120
- - Query the specific user's data against the code path
121
- - Check for branching logic that depends on user properties
122
-
123
- ---
124
-
125
- ## Evidence Log Template
126
-
127
- Keep a running log during complex debugging:
128
-
129
- ```
130
- [Time] Hypothesis: ...
131
- [Time] Test: ...
132
- [Time] Result: ...
133
- [Time] Conclusion: ...
134
- [Time] New hypothesis: ...
135
- ```
136
-
137
- This prevents circular reasoning and gives you a record if you hand off to someone else.
138
-
139
- ---
140
-
141
- ## Output Format
142
-
143
- When this skill completes a task, structure your output as:
144
-
145
- ```
146
- ━━━ Systematic Debugging Output ━━━━━━━━━━━━━━━━━━━━━━━━
147
- Task: [what was performed]
148
- Result: [outcome summary — one line]
149
- ─────────────────────────────────────────────────
150
- Checks: ✅ [N passed] · ⚠️ [N warnings] · ❌ [N blocked]
151
- VBC status: PENDING → VERIFIED
152
- Evidence: [link to terminal output, test result, or file diff]
153
- ```
154
-
155
-
156
- ---
157
-
158
- ## 🏛️ Tribunal Integration (Anti-Hallucination)
159
-
160
- **Slash command: `/debug`**
161
- **Active reviewers: `debugger` · `logic-reviewer`**
162
-
163
- ### ❌ Forbidden AI Tropes in Debugging
164
-
165
- 1. **"Have you tried turning it off and on again?"** — do not suggest blind restarts without understanding the state.
166
- 2. **Hallucinating stack traces** — never guess the line number or the contents of an error log. Use tools to read it.
167
- 3. **"Rewrite the whole function"** — never suggest rewriting working code just to fix a single bug, unless the structure is the root cause.
168
- 4. **Assuming the fix worked** — always provide a way to verify the fix.
169
- 5. **Changing multiple variables at once** — never provide fixes that change 5 different things simultaneously. Identify ONE root cause.
170
-
171
- ### ✅ Pre-Flight Self-Audit
172
-
173
- Review these questions before proposing a bug fix:
174
- ```
175
- ✅ Do I have the exact error message and stack trace? (If no, ASK the user to provide it or let me look for it).
176
- ✅ Did I isolate the exact line or block of code causing the issue?
177
- ✅ Is my proposed fix addressing the root cause, or just suppressing a symptom?
178
- ✅ Did I only change ONE thing to test the hypothesis?
179
- ✅ Can I explain exactly WHY the code broke in the first place?
180
- ```
181
-
182
- ### 🛑 Verification-Before-Completion (VBC) Protocol
183
-
184
- **CRITICAL:** You must follow a strict "evidence-based closeout" state machine.
185
- - ❌ **Forbidden:** Declaring a bug "fixed" or completing a task because your updated code "looks correct" to you.
186
- - ✅ **Required:** You are explicitly forbidden from completing your debug task until you have produced **concrete, observable evidence** (e.g., terminal output, compiler success, passing test logs, network trace results, or CLI execution results) proving the fix works. If you lack a direct test environment, you must attempt to write a focused script to verify the logic.
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
+ ```