Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use this skill when stuck in circular debugging, when solutions aren't working despite multiple attempts, or when the user expresses frustration with lack of progress. Bring in GPT-5 as a third-party consultant to provide fresh perspective on complex technical problems, architectural decisions, or multi-system debugging issues. Ideal when you've tried multiple approaches without success, when the problem involves obscure edge cases or novel challenges, or when a second expert opinion would help
.claude/skills/microck-gpt5-consultant/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-17 | ✗→✓ | ▲ Improved | 74% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 72% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 120% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 253% | 0% |
| case-19 | ✗→✓ | ▲ Improved | 410% | 0% |
Leverage GPT-5's advanced analytical capabilities for complex technical research and problem-solving.
This skill requires the gpt5-mcp-server to be installed and running locally.
Verify the following tools are available:
mcp__gpt5-server__gpt5_generate (single-shot analysis)mcp__gpt5-server__gpt5_messages (multi-turn conversations)If not available, check your MCP configuration and ensure the server is running.
Recognize the signs you're stuck:
Use GPT-5 for:
Do NOT use GPT-5 for:
When you notice circular debugging or lack of progress, pause and consult GPT-5. Present all context from the conversation so far.
When stuck in a circular debugging situation, gather everything from the conversation:
What to include:
How to organize it:
markdown**Original Goal:** [What we're trying to accomplish] **Timeline of Attempts:** 1. First approach: [what we tried] → Result: [why it didn't work] 2. Second approach: [what we tried] → Result: [why it didn't work] 3. [etc.] **Current Status:** [Where we are now, what's still broken] **Technical Details:** [Code snippets, errors, config - the concrete facts] **Why We're Stuck:** [What's confusing, where the circular logic is happening]
Context management:
Craft precise, context-rich queries:
markdown**Problem Context:** [Brief description of the system and what you're trying to achieve] **Current Situation:** [What's happening vs what should happen] **What You've Tried:** [Previous attempts and their results] **Technical Details:** [Code snippets, error messages, relevant config] **Specific Questions:** 1. [Concrete question about the problem] 2. [Alternative approaches to consider] 3. [Edge cases or implications to watch for]
Query optimization:
Single-shot analysis (gpt5_generate):
javascript{ input: "Your complete context and question here", reasoning_effort: "high", // high=architecture/novel, medium=debugging, low=straightforward instructions: "Optional system instructions" }
Multi-turn conversation (gpt5_messages):
javascript{ messages: [ {role: "user", content: "Initial context and question"}, {role: "assistant", content: "GPT-5's previous response"}, {role: "user", content: "Follow-up question"} ], reasoning_effort: "medium" }
Use messages for:
After receiving GPT-5's response, verify:
Completeness:
Feasibility:
Confidence assessment:
When to iterate:
Ask follow-up questions using gpt5_messages to build on previous context.
Present findings with:
Summary:
Recommendations: Ranked by priority and impact:
Next Steps:
Warnings:
Architectural decisions:
bashQuery: "Should we use event sourcing or CRUD for financial transactions?" Reasoning effort: high Follow-up: Ask about specific implementation challenges for chosen approach
Debugging distributed systems:
bashQuery: Include full error logs, system topology, timing diagrams Reasoning effort: medium Follow-up: Request specific debugging steps based on diagnosis
Novel technical challenges:
bashQuery: Describe the problem, what makes it novel, what research you've done Reasoning effort: high Follow-up: Deep dive on the most promising approach
If GPT-5 is unavailable or returns errors:
Document that GPT-5 was unavailable and note when to retry.
Example 1: Circular debugging (the key use case)
Input: "We've been debugging this Next.js API route for 2 hours and getting nowhere.
Original goal: Fix 500 error on POST /api/users endpoint
Attempts:
1. Added try-catch around Prisma query → Still throwing unhandled promise rejection
2. Changed async/await to .then().catch() → Same error
3. Added error middleware → Error not being caught by middleware
4. Wrapped entire handler in try-catch → Error happens before handler executes
5. User says: 'This makes no sense, we're missing something obvious'
Current status: UnhandledPromiseRejectionWarning persists
Technical details:
- Error: UnhandledPromiseRejectionWarning: PrismaClientValidationError
- Stack trace points to line that IS wrapped in try-catch
- Using Next.js 14 App Router, TypeScript 5.3, Prisma 5.8
- Code:
```typescript
export async function POST(req: Request) {
try {
const body = await req.json();
const user = await prisma.user.create({ data: body });
return Response.json(user);
} catch (error) {
console.error('Caught error:', error); // This never logs
return Response.json({ error: 'Failed' }, { status: 500 });
}
}
```
- The error happens, but catch block never executes
- Other API routes with identical pattern work fine
Why we're stuck: Try-catch should catch this. Error middleware should catch this.
Nothing is catching it. What are we fundamentally misunderstanding about Next.js error handling?"
Reasoning effort: highExample 2: TypeScript type inference breaking
Input: "TypeScript infers the wrong type and I can't figure out why.
Context: Building a generic API client with typed responses.
Code works but types are broken:
async function apiCall<T>(endpoint: string): Promise<T> { const res = await fetch(endpoint); return res.json(); // TypeScript infers 'any' here, not 'T' }
const user = await apiCall<User>('/api/user'); // user is typed as 'any', not 'User'
Tried:
1. Explicit return type annotation → Still infers 'any'
2. Type assertion (as T) → Works but defeats the purpose
3. Generic constraints → No change
4. Different tsconfig settings → No improvement
Question: Why isn't TypeScript propagating the generic type through the promise chain?
What's the proper pattern for typed API clients?"
Reasoning effort: mediumExample 3: React hook dependency array confusion
Input: "useEffect running infinitely despite correct dependencies.
Code:const filters, setFilters] = useState({ status: 'active', sort: 'name' });
useEffect(() => { fetchUsers(filters); }, filters]); // This causes infinite re-renders
Tried:
1. Memoizing filters with useMemo → Still infinite
2. JSON.stringify in dependency array → Works but feels wrong
3. Separate state for each filter → Messy, too many useState calls
4. Using useCallback on fetchUsers → No change
Every solution feels hacky. What's the right pattern for object dependencies?"
Reasoning effort: mediumExample 4: Follow-up iteration
Messages: [
{role: "user", content: "[Initial question about NextAuth session type errors]"},
{role: "assistant", content: "[GPT-5's recommendation to use module augmentation]"},
{role: "user", content: "You suggested module augmentation for NextAuth types.
I added the declaration file but TypeScript still doesn't recognize the custom
session properties. Do I need to configure something in next-auth.d.ts or is
there a specific import pattern I'm missing?"}
]
Reasoning effort: mediumInput: "Choosing between GraphQL and REST for new API.
Context: Mobile app + web dashboard, 50+ endpoints, real-time updates needed.
Constraints: Team has REST experience, 3-month timeline.
Question: Which approach and why? What are the implementation risks?"
Reasoning effort: highExample 3: Follow-up iteration
Messages: [
{role: "user", content: "[Initial question about microservices architecture]"},
{role: "assistant", content: "[GPT-5's architectural recommendation]"},
{role: "user", content: "You suggested event sourcing for service communication.
How would we handle eventual consistency in the user profile service?"}
]
Reasoning effort: medium| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 28,478 | 31,086 | +9% | 1 | 1 | 0% | 4,517 | 4,426 | -2% | 0 | 0 | — |
case-02 | fail→fail | 11,681 | 21,277 | +82% | 1 | 1 | 0% | 644 | 3,989 | +519% | 0 | 0 | — |
case-16 | pass→pass | 8,795 | 2,468 | -72% | 1 | 1 | 0% | 1,338 | 2,978 | +123% | 0 | 0 | — |
case-03 | fail→fail | 14,939 | 18,564 | +24% | 1 | 1 | 0% | 2,685 | 3,644 | +36% | 0 | 0 | — |
case-04 | pass→pass | 8,051 | 3,942 | -51% | 1 | 1 | 0% | 1,542 | 3,293 | +114% | 0 | 0 | — |
case-05 | pass→pass | 7,999 | 5,380 | -33% | 1 | 1 | 0% | 1,394 | 3,534 | +154% | 0 | 0 | — |
case-06 | pass→pass | 8,266 | 7,233 | -12% | 1 | 1 | 0% | 1,540 | 3,959 | +157% | 0 | 0 | — |
case-07 | fail→fail | 18,320 | 13,126 | -28% | 1 | 1 | 0% | 2,813 | 3,896 | +38% | 0 | 0 | — |
case-08 | fail→fail | 36,277 | 27,922 | -23% | 1 | 1 | 0% | 6,192 | 3,713 | -40% | 0 | 0 | — |
case-09 | fail→fail | 15,404 | 24,034 | +56% | 1 | 1 | 0% | 2,360 | 4,094 | +73% | 0 | 0 | — |
case-10 | pass→pass | 16,441 | 8,975 | -45% | 1 | 1 | 0% | 2,405 | 4,035 | +68% | 0 | 0 | — |
case-11 | fail→fail | 15,433 | 8,623 | -44% | 1 | 1 | 0% | 2,335 | 4,065 | +74% | 0 | 0 | — |
case-17 | fail→pass | 14,118 | 6,863 | -51% | 1 | 1 | 0% | 2,180 | 3,796 | +74% | 0 | 0 | — |
case-12 | fail→pass | 15,692 | 10,570 | -33% | 1 | 1 | 0% | 2,417 | 4,157 | +72% | 0 | 0 | — |
case-13 | pass→pass | 14,858 | 6,107 | -59% | 1 | 1 | 0% | 2,340 | 3,590 | +53% | 0 | 0 | — |
case-14 | pass→pass | 15,830 | 11,179 | -29% | 1 | 1 | 0% | 2,407 | 4,389 | +82% | 0 | 0 | — |
case-15 | fail→pass | 10,891 | 6,773 | -38% | 1 | 1 | 0% | 1,656 | 3,651 | +120% | 0 | 0 | — |
case-18 | fail→pass | 5,994 | 21,530 | +259% | 1 | 1 | 0% | 1,152 | 4,066 | +253% | 0 | 0 | — |
case-19 | fail→pass | 3,994 | 3,889 | -3% | 1 | 1 | 0% | 640 | 3,266 | +410% | 0 | 0 | — |
case-20 | fail→pass | 13,964 | 6,854 | -51% | 1 | 1 | 0% | 2,107 | 3,650 | +73% | 0 | 0 | — |
case-21 | fail→fail | 16,876 | 20,815 | +23% | 1 | 1 | 0% | 2,577 | 3,702 | +44% | 0 | 0 | — |
case-22 | fail→pass | 8,999 | 2,390 | -73% | 1 | 1 | 0% | 1,302 | 3,077 | +136% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 16 counted toward the lift figure. The other 6 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +32 percentage points is the difference between those two pass rates over the 16 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.