brainstorming
Structured design dialogue that validates ideas before implementation begins.
automation-debugger
Expert automation platform error debugger for Power Automate, n8n, Make, Zapier and other workflow platforms. Analyzes JSON flow definitions with error messages, researches official documentation, and generates complete fixed JSON ready for copy-paste. Triggers when user provides error JSON files...
Full skill instructions
Expert system for debugging automation workflow errors across multiple platforms and generating production-ready fixes.
This skill provides comprehensive debugging for automation workflows by:
Automatically activates when user provides:
The Mistake:
// You see a filter in the error flow
"where": "@contains(toLower(item()), 'keyword')"
// And you ASSUME it's filtering objects, so you fix with:
"value": "@items('Loop')?['PropertyName']" // ← WRONG IF ARRAY OF STRINGS!
How to Avoid:
item() vs item()?['Prop']item() without property → Array of primitives (strings/numbers)item()?['Property'] → Array of objectsOur Real Bug Example:
// Filter showed it was strings:
"where": "@contains(toLower(item()), 'cnesst')"
// But I incorrectly suggested accessing property:
"value": "@items('LoopCNESST')?['Nom']" // ← BUG!
// Correct fix was:
"value": "@items('LoopCNESST')" // ← Just the string!
The Mistake: Assuming SharePoint GetFileItems returns objects with 'Name' property without checking
How to Avoid:
The Mistake: Creating fixes that work syntactically but fail with actual data types
How to Avoid:
NEVER assume data structures without verification. Before debugging, ALWAYS analyze actual data structures in the failing flow.
Examine the Error Context
Analyze Filter/Query Operations (MOST IMPORTANT!)
where clauses in Query actionsitem() without property → Array of primitives (strings/numbers)
"where": "@contains(toLower(item()), 'keyword')"
// ↑ This means: Array of strings ["string1", "string2"]
item()?['PropertyName'] → Array of objects
"where": "@contains(item()?['Name'], 'keyword')"
// ↑ This means: Array of objects [{"Name": "..."}, ...]
Trace Data Sources
from in Query actions back to sourceValidate Item Access Consistency
items('LoopName') or items('LoopName')?['Property']item() or item()?['Property']item() but loop uses items('Loop')?['Prop'] → ERROR!Ask User When Uncertain (Use AskUserQuestion tool)
Example questions:
contains(item(), 'text'). Is your variable an array of strings like ['text1', 'text2'], or an array of objects?"items('Loop')?['Nom'] but the filter suggests strings. Which is correct?"Extract Error Information
Identify Context
CRITICAL: Research thoroughly using multiple sources in order. Never skip or guess!
Launch research sub-agent with thorough investigation:
Use Task tool with subagent_type="Explore" and thoroughness="very thorough"
Prompt: "Research [PLATFORM] documentation for [ERROR_TYPE] error in [CONNECTOR/NODE_NAME], specifically the [ACTION_NAME] action/node.
Platform: [Power Automate / n8n / Make / Zapier / Other]
Search in Docs/ directory for platform-specific documentation:
1. Platform documentation (Docs/{Platform}_Documentation/)
2. Connector/node overview - find limitations and constraints
3. **Data structure specifications** (output schemas, property names, data types)
4. Action/node documentation - find parameter requirements
5. Common error patterns for this platform
Focus on finding:
- **DATA STRUCTURE DETAILS** (output schemas, property names, array vs object)
- Known limitations causing this error
- Required parameters and their formats (platform-specific)
- API limits or throttling constraints
- Authentication/permission requirements
- Platform-specific quirks or known issues
- Common error scenarios and solutions
Return specific file paths, section names, and exact limitations found."
Expected Output from Research Agent:
ONLY if local documentation doesn't provide needed information, use WebSearch:
Use WebSearch tool with targeted queries:
Examples:
- "[PLATFORM] [CONNECTOR] output schema"
- "[PLATFORM] [ACTION_NAME] return properties"
- "[ERROR_CODE] [PLATFORM] [CONNECTOR] solution"
- "Microsoft Learn [PLATFORM] [CONNECTOR] documentation"
Search for:
- Official platform documentation (Microsoft Learn, n8n docs, etc.)
- Platform-specific community forums (verified answers only)
- Official API documentation
- Recent Stack Overflow solutions (check dates!)
Validation Requirements:
If both local docs and web search are unclear or contradictory, ask the user:
Use AskUserQuestion tool with specific targeted questions:
Example:
{
"questions": [{
"question": "Your flow uses `contains(item(), 'CNESST')` in the filter. Can you confirm what type of data is in this variable?",
"header": "Data Type",
"options": [
{
"label": "Array of strings",
"description": "Like ['CNESST 2025-01', 'INVALIDITÉ 2025-02']"
},
{
"label": "Array of objects",
"description": "Like [{'Nom': 'CNESST 2025-01'}, {'Nom': 'INVALIDITÉ 2025-02'}]"
}
],
"multiSelect": false
}]
}
When to Ask:
Based on research findings:
Root Cause Identification
Solution Strategy
Validation
CRITICAL: Use the Task tool to launch a flow-builder agent for JSON generation.
Launch flow-builder sub-agent:
Use Task tool with subagent_type="Plan" or "general-purpose"
Prompt: "Generate complete fixed workflow JSON for [PLATFORM] with the following requirements:
Platform: [Power Automate / n8n / Make / Zapier / Other]
Original Error: [ERROR_DETAILS]
Root Cause: [ROOT_CAUSE_FROM_RESEARCH]
Required Fixes: [SPECIFIC_CHANGES_NEEDED]
Create a complete, valid workflow JSON following the platform-specific format in Docs/{Platform}_Documentation/ that:
1. Includes all fixes for the identified error
2. Maintains existing workflow logic that works
3. Adds proper error handling (platform-specific)
4. Includes retry logic if dealing with transient errors
5. Respects API limits with delays if needed
6. Uses valid IDs/GUIDs as required by platform
7. Has correct dependencies/execution order
8. Follows platform-specific syntax and structure
9. Is ready for copy-paste into platform's import/code feature
Return ONLY the complete JSON with no placeholders or TODOs."
Expected Output from Flow-Builder Agent:
Generate final output using the template from output-style/template-debug-output.md:
Error Analysis Section
Root Cause Section
Solution Section
Fixed JSON Section
Alternative Approaches Section (if applicable)
Prevention Section
ALWAYS follow the XML-structured format from output-style/template-debug-output.md:
<debug_report>
<error_analysis>
[Error classification and details]
</error_analysis>
<root_cause>
[Root cause with documentation references]
</root_cause>
<solution>
[Step-by-step fix instructions]
</solution>
<fixed_json>
[Complete valid JSON ready for copy-paste]
</fixed_json>
<alternative_approaches>
[Other viable solutions if applicable]
</alternative_approaches>
<prevention>
[Best practices and monitoring]
</prevention>
</debug_report>
NEVER hallucinate or guess. Always:
NEVER output partial or placeholder JSON. Always:
Before delivering output, verify:
Data Structure Validation (CRITICAL - New!):
where clauses for data type indicatorsitem() vs item()?['Property'] consistency in fixitems() usage matches actual data structureResearch & Documentation:
Technical Validation:
Output Quality:
Authentication (401/403)
Throttling (429)
Data Format
Timeout
Not Found (404)
Purpose: Find relevant documentation and constraints
Input Requirements:
Expected Output:
Docs/{Platform}_Documentation/{Connector}/overview.mdInvocation:
Task tool, subagent_type="Explore", thoroughness="very thorough"
Purpose: Generate complete, valid Power Automate JSON
Input Requirements:
Expected Output:
Invocation:
Task tool, subagent_type="general-purpose" or "Plan"
User Input: "Fix the DossierPlusRécent variable - the filter works but loop assignment fails"
Error Flow Snippet:
{
"Filtrer_dossier_CNESST": {
"type": "Query",
"inputs": {
"from": "@variables('ListeDesDossier')",
"where": "@contains(toLower(item()), 'cnesst')" // ← KEY: item() without property!
}
},
"LoopCNESST": {
"foreach": "@body('Filtrer_dossier_CNESST')",
"actions": {
"DossierPlusRécent_CNESST": {
"type": "SetVariable",
"inputs": {
"name": "DossierPlusRecent",
"value": "@items('LoopCNESST')?['Nom']" // ← BUG: Accessing property on string!
}
},
"DEBUG_jour_CNESST": {
"type": "Compose",
"inputs": "@int(substring(
split(items('LoopCNESST')?['Nom'], '.')[0], // ← BUG: Also accessing Nom
8, 2))"
}
}
}
}
Debugging Workflow:
Phase 0 - Data Structure Analysis:
"where": "@contains(toLower(item()), 'cnesst')"item() without property → Array of strings!item()?['Nom'] → So NOT array of objectsListeDesDossier = ["CNESST 2025-01-15", "CNESST 2025-02-20"]Phase 1 - Error Analysis:
items('LoopCNESST')?['Nom']Phase 2 - Research (Skipped - structure analysis sufficient):
Phase 3 - Solution Design:
?['Nom'] property access throughout@items('LoopCNESST')Phase 4 - Generate Fix:
{
"DossierPlusRécent_CNESST": {
"type": "SetVariable",
"inputs": {
"name": "DossierPlusRecent",
"value": "@items('LoopCNESST')" // ← FIXED: Direct string access
}
},
"DEBUG_jour_CNESST": {
"type": "Compose",
"inputs": "@int(substring(
split(items('LoopCNESST'), '.')[0], // ← FIXED: Removed ?['Nom']
8, 2))"
}
}
Key Lessons:
item() reveals data typeitem() = primitives, item()?['Prop'] = objectsPrevention:
Input:
{
"error": "Status code: 429, TooManyRequests",
"action": "sharepointonline_getitems",
"connector": "SharePoint"
}
Workflow:
Input:
{
"error": "File not processed",
"trigger": "onedrive_whenfilecreated",
"connector": "OneDrive"
}
Workflow:
See also:
User messages that trigger this skill:
Version: 2.0 Last Updated: 2025-10-31 Platforms: Power Automate, n8n, Make, Zapier + extensible
Major Improvements:
Key Changes:
item() vs item()?['Property'] patterns in filters/queriesLessons Learned from Real Bugs:
contains(item(), 'x') = array of primitivesitems('Loop')?['Prop'] on strings) causes runtime errorsStructured design dialogue that validates ideas before implementation begins.
Comprehensive design intelligence for web and mobile UI/UX across 10 technology stacks.
Comprehensive implementation plans for multi-step tasks, breaking down specs into bite-sized, testable steps.
Introduction to the obra skills system with mandatory skill invocation rules and best practices.
Execute a written implementation plan with critical review and task checkpoints.
Delegate independent tasks to specialized agents working concurrently with isolated context.
Isolated git worktrees with smart directory selection and safety verification.
Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.
Plan searchable and shareable content that drives traffic, builds authority, and generates leads.
README-first repository scanner that extracts commands and classifies reproduction candidates without executing them.
Brainstorm and prioritize marketing strategies tailored to your SaaS stage, budget, and goals.
Plan and optimize your website's page hierarchy, navigation, URL structure, and internal linking.
The world's fastest calendar for remote work
Capture, organize, and utilize your knowledge effortlessly.
Instant Summaries of Audio & Video Interviews with AnySummary
Transform PDFs into engaging mind maps.
Chat with any PDF instantly
Create an optimal daily plan using your voice
A productivity platform to centralize organizational knowledge and workflows with contextual AI assistance.
AskYourPDF Pricing Plans: Tailored to Your Needs