You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: .claude/skills/connector/review-connector.md
+12-9Lines changed: 12 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -120,17 +120,20 @@ Return a JSON array. Empty array if no issues. Only findings with confidence >=
120
120
- B7: New required OAuth scopes = breaking
121
121
- B8: SAFE: display name changes, adding new types, adding trait options, adding pagination
122
122
- B9: New API endpoint added to an existing resource's sync path = breaking (requires scope change or different permissions)
123
+
- If breaking changes found: must be gated behind config flag (opt-in, never default-on), require lead approval, documented in PR description, docs/connector.mdx updated, DOCS ticket filed
123
124
124
125
## TOP BUG DETECTION PATTERNS
125
-
1. Pagination: `return resources, "", nil, nil` without conditional = stops after page 1
3. HTTP: defer resp.Body.Close() BEFORE if err != nil = panic
128
-
4. HTTP: resp.StatusCode in error path without resp != nil check = panic
129
-
5. Type assertion: .(Type) without , ok := = panic
130
-
6. Error: log.Print(err) without return = silent data loss
131
-
7. Error: fmt.Errorf("...%v", err) should be %w
132
-
8. IDs: .Email as 3rd arg to NewUserResource = unstable ID
133
-
9. ParentResourceId.Resource without nil check = panic
126
+
1. Client-side pagination loop: for loop inside List()/Entitlements()/Grants() or inside the HTTP client that fetches all pages internally = CRITICAL (breaks checkpointing, OOM, bypasses rate limiting, detached contexts). The SDK drives the pagination loop — each SDK method must handle exactly one page per call. HTTP client methods must accept a cursor/token param and return a single page.
127
+
2. Pagination: `return resources, "", nil, nil` without conditional = stops after page 1
4. HTTP: defer resp.Body.Close() BEFORE if err != nil = panic
130
+
5. HTTP: resp.StatusCode in error path without resp != nil check = panic
131
+
6. Type assertion: .(Type) without , ok := = panic
132
+
7. Error: log.Print(err) without return = silent data loss
133
+
8. Error: fmt.Errorf("...%v", err) should be %w
134
+
9. IDs: .Email as 3rd arg to NewUserResource = unstable ID
135
+
10. ParentResourceId.Resource without nil check = panic
136
+
11. New API endpoint in existing sync path without checking scope requirements = breaking change
134
137
135
138
Read the FULL file content (using Read tool) ONLY when the diff suggests a potential issue that requires full-file context (e.g., pagination flow, resource builder structure). For simple pattern issues visible in the diff, the diff alone is sufficient.
0 commit comments