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.
- package/.agent/agents/accessibility-reviewer.md +220 -134
- package/.agent/agents/ai-code-reviewer.md +233 -129
- package/.agent/agents/backend-specialist.md +238 -178
- package/.agent/agents/code-archaeologist.md +181 -119
- package/.agent/agents/database-architect.md +207 -164
- package/.agent/agents/debugger.md +218 -151
- package/.agent/agents/dependency-reviewer.md +136 -55
- package/.agent/agents/devops-engineer.md +238 -175
- package/.agent/agents/documentation-writer.md +221 -137
- package/.agent/agents/explorer-agent.md +180 -142
- package/.agent/agents/frontend-reviewer.md +194 -80
- package/.agent/agents/frontend-specialist.md +237 -188
- package/.agent/agents/game-developer.md +52 -184
- package/.agent/agents/logic-reviewer.md +149 -78
- package/.agent/agents/mobile-developer.md +223 -152
- package/.agent/agents/mobile-reviewer.md +195 -79
- package/.agent/agents/orchestrator.md +211 -170
- package/.agent/agents/penetration-tester.md +174 -131
- package/.agent/agents/performance-optimizer.md +203 -139
- package/.agent/agents/performance-reviewer.md +211 -108
- package/.agent/agents/product-manager.md +162 -108
- package/.agent/agents/project-planner.md +162 -142
- package/.agent/agents/qa-automation-engineer.md +242 -138
- package/.agent/agents/security-auditor.md +194 -170
- package/.agent/agents/seo-specialist.md +213 -132
- package/.agent/agents/sql-reviewer.md +194 -73
- package/.agent/agents/supervisor-agent.md +203 -156
- package/.agent/agents/test-coverage-reviewer.md +193 -81
- package/.agent/agents/type-safety-reviewer.md +208 -65
- package/.agent/scripts/__pycache__/auto_preview.cpython-311.pyc +0 -0
- package/.agent/scripts/__pycache__/bundle_analyzer.cpython-311.pyc +0 -0
- package/.agent/scripts/__pycache__/checklist.cpython-311.pyc +0 -0
- package/.agent/scripts/__pycache__/dependency_analyzer.cpython-311.pyc +0 -0
- package/.agent/scripts/__pycache__/security_scan.cpython-311.pyc +0 -0
- package/.agent/scripts/__pycache__/session_manager.cpython-311.pyc +0 -0
- package/.agent/scripts/__pycache__/skill_integrator.cpython-311.pyc +0 -0
- package/.agent/scripts/__pycache__/swarm_dispatcher.cpython-311.pyc +0 -0
- package/.agent/scripts/__pycache__/test_runner.cpython-311.pyc +0 -0
- package/.agent/scripts/__pycache__/verify_all.cpython-311.pyc +0 -0
- package/.agent/skills/agent-organizer/SKILL.md +126 -132
- package/.agent/skills/ai-prompt-injection-defense/SKILL.md +155 -66
- package/.agent/skills/api-patterns/SKILL.md +289 -257
- package/.agent/skills/api-security-auditor/SKILL.md +172 -70
- package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +1 -1
- package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +1 -1
- package/.agent/skills/appflow-wireframe/SKILL.md +107 -100
- package/.agent/skills/architecture/SKILL.md +331 -200
- package/.agent/skills/authentication-best-practices/SKILL.md +168 -67
- package/.agent/skills/bash-linux/SKILL.md +154 -215
- package/.agent/skills/brainstorming/SKILL.md +104 -210
- package/.agent/skills/building-native-ui/SKILL.md +169 -70
- package/.agent/skills/clean-code/SKILL.md +360 -206
- package/.agent/skills/config-validator/SKILL.md +141 -165
- package/.agent/skills/csharp-developer/SKILL.md +528 -107
- package/.agent/skills/database-design/SKILL.md +455 -275
- package/.agent/skills/deployment-procedures/SKILL.md +145 -188
- package/.agent/skills/devops-engineer/SKILL.md +332 -134
- package/.agent/skills/devops-incident-responder/SKILL.md +113 -98
- package/.agent/skills/edge-computing/SKILL.md +157 -213
- package/.agent/skills/extract-design-system/SKILL.md +129 -69
- package/.agent/skills/framer-motion-expert/SKILL.md +939 -0
- package/.agent/skills/game-design-expert/SKILL.md +105 -0
- package/.agent/skills/game-engineering-expert/SKILL.md +122 -0
- package/.agent/skills/geo-fundamentals/SKILL.md +124 -215
- package/.agent/skills/github-operations/SKILL.md +314 -354
- package/.agent/skills/gsap-expert/SKILL.md +901 -0
- package/.agent/skills/i18n-localization/SKILL.md +138 -216
- package/.agent/skills/intelligent-routing/SKILL.md +127 -139
- package/.agent/skills/llm-engineering/SKILL.md +357 -258
- package/.agent/skills/local-first/SKILL.md +154 -203
- package/.agent/skills/mcp-builder/SKILL.md +118 -224
- package/.agent/skills/nextjs-react-expert/SKILL.md +783 -203
- package/.agent/skills/nodejs-best-practices/SKILL.md +559 -280
- package/.agent/skills/observability/SKILL.md +330 -285
- package/.agent/skills/parallel-agents/SKILL.md +122 -181
- package/.agent/skills/performance-profiling/SKILL.md +254 -197
- package/.agent/skills/plan-writing/SKILL.md +118 -188
- package/.agent/skills/platform-engineer/SKILL.md +123 -135
- package/.agent/skills/playwright-best-practices/SKILL.md +157 -76
- package/.agent/skills/powershell-windows/SKILL.md +146 -230
- package/.agent/skills/python-pro/SKILL.md +879 -114
- package/.agent/skills/react-specialist/SKILL.md +931 -108
- package/.agent/skills/realtime-patterns/SKILL.md +304 -296
- package/.agent/skills/rust-pro/SKILL.md +701 -240
- package/.agent/skills/seo-fundamentals/SKILL.md +154 -181
- package/.agent/skills/server-management/SKILL.md +190 -212
- package/.agent/skills/shadcn-ui-expert/SKILL.md +201 -68
- package/.agent/skills/sql-pro/SKILL.md +633 -104
- package/.agent/skills/swiftui-expert/SKILL.md +171 -70
- package/.agent/skills/systematic-debugging/SKILL.md +118 -186
- package/.agent/skills/tailwind-patterns/SKILL.md +576 -232
- package/.agent/skills/tdd-workflow/SKILL.md +137 -209
- package/.agent/skills/testing-patterns/SKILL.md +573 -205
- package/.agent/skills/vue-expert/SKILL.md +964 -119
- package/.agent/skills/vulnerability-scanner/SKILL.md +269 -316
- package/.agent/skills/web-accessibility-auditor/SKILL.md +188 -71
- package/.agent/skills/webapp-testing/SKILL.md +145 -236
- package/.agent/workflows/api-tester.md +151 -279
- package/.agent/workflows/audit.md +138 -168
- package/.agent/workflows/brainstorm.md +110 -146
- package/.agent/workflows/changelog.md +112 -144
- package/.agent/workflows/create.md +124 -139
- package/.agent/workflows/debug.md +189 -196
- package/.agent/workflows/deploy.md +189 -153
- package/.agent/workflows/enhance.md +151 -139
- package/.agent/workflows/fix.md +135 -143
- package/.agent/workflows/generate.md +157 -164
- package/.agent/workflows/migrate.md +160 -163
- package/.agent/workflows/orchestrate.md +168 -151
- package/.agent/workflows/performance-benchmarker.md +123 -305
- package/.agent/workflows/plan.md +173 -151
- package/.agent/workflows/preview.md +80 -137
- package/.agent/workflows/refactor.md +183 -153
- package/.agent/workflows/review-ai.md +129 -140
- package/.agent/workflows/review.md +116 -155
- package/.agent/workflows/session.md +94 -154
- package/.agent/workflows/status.md +79 -125
- package/.agent/workflows/strengthen-skills.md +139 -99
- package/.agent/workflows/swarm.md +179 -194
- package/.agent/workflows/test.md +211 -166
- package/.agent/workflows/tribunal-backend.md +113 -111
- package/.agent/workflows/tribunal-database.md +115 -132
- package/.agent/workflows/tribunal-frontend.md +118 -115
- package/.agent/workflows/tribunal-full.md +133 -136
- package/.agent/workflows/tribunal-mobile.md +119 -123
- package/.agent/workflows/tribunal-performance.md +133 -152
- package/.agent/workflows/ui-ux-pro-max.md +143 -171
- package/README.md +11 -15
- package/package.json +1 -1
- package/.agent/skills/dotnet-core-expert/SKILL.md +0 -103
- package/.agent/skills/framer-motion-animations/SKILL.md +0 -74
- package/.agent/skills/game-development/2d-games/SKILL.md +0 -119
- package/.agent/skills/game-development/3d-games/SKILL.md +0 -135
- package/.agent/skills/game-development/SKILL.md +0 -236
- package/.agent/skills/game-development/game-art/SKILL.md +0 -185
- package/.agent/skills/game-development/game-audio/SKILL.md +0 -190
- package/.agent/skills/game-development/game-design/SKILL.md +0 -129
- package/.agent/skills/game-development/mobile-games/SKILL.md +0 -108
- package/.agent/skills/game-development/multiplayer/SKILL.md +0 -132
- package/.agent/skills/game-development/pc-games/SKILL.md +0 -144
- package/.agent/skills/game-development/vr-ar/SKILL.md +0 -123
- package/.agent/skills/game-development/web-games/SKILL.md +0 -150
|
@@ -1,75 +1,176 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: swiftui-expert
|
|
3
|
-
description:
|
|
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:
|
|
6
|
-
last-updated: 2026-
|
|
7
|
-
applies-to-model: claude-3-7-sonnet
|
|
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
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
###
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
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
|
|
4
|
-
allowed-tools: Read, Write, Edit, Glob, Grep
|
|
5
|
-
version:
|
|
6
|
-
last-updated: 2026-
|
|
7
|
-
applies-to-model: gemini-2.5-pro, claude-3-7-sonnet
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# Systematic Debugging
|
|
11
|
-
|
|
12
|
-
>
|
|
13
|
-
>
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## The 4-Phase
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
**
|
|
93
|
-
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
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
|
+
```
|