Add Fiddler Everywhere skills#2416
Conversation
🔒 PR Risk Scan ResultsScanned 4 changed file(s).
|
🔍 Vally Lint Results✅ All checks passed
Summary
Full linter output |
There was a problem hiding this comment.
Pull request overview
Adds three Fiddler Everywhere skills covering installation, MCP configuration, and HTTP traffic analysis.
Changes:
- Adds cross-platform Fiddler installation guidance.
- Adds MCP setup and authentication workflows.
- Adds traffic-debugging guidance and generated documentation entries.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 17 comments.
| File | Description |
|---|---|
skills/fiddler-download-setup/SKILL.md |
Adds installation and onboarding workflow. |
skills/fiddler-mcp-setup/SKILL.md |
Adds MCP discovery, authentication, and configuration. |
skills/fiddler-traffic-debugging/SKILL.md |
Adds captured-traffic analysis workflow. |
docs/README.skills.md |
Lists the three new skills. |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 4 out of 4 changed files in this pull request and generated 4 comments.
Comments suppressed due to low confidence (3)
skills/fiddler-download-setup/SKILL.md:59
- The Linux check does not recognize the AppImage produced by this skill: Phase 3 saves
~/Downloads/FiddlerEverywhere.AppImage, but this glob only matches versioned lowercase names. It also accepts a PATH installation while deriving the version only from$APPIMAGE, which is empty in that case. A second run therefore reportsNOT_INSTALLEDor an empty installed version and unnecessarily reinstalls/upgrades. Align the downloaded filename/detection paths and obtain the version from whichever installation source was found.
APPIMAGE=$(ls ~/Downloads/fiddler-everywhere-*.AppImage 2>/dev/null | sort -V | tail -1)
if command -v fiddler-everywhere &>/dev/null || [ -n "$APPIMAGE" ]; then
# Extract version from AppImage filename as the most reliable source
INSTALLED_VERSION=$(echo "$APPIMAGE" | grep -oP '[\d]+\.[\d]+\.[\d]+')
skills/fiddler-download-setup/SKILL.md:116
- This always resolves the Apple Silicon macOS manifest even after detecting the actual OS and architecture. On Intel macOS,
$VERSIONcan therefore name a release unavailable at the Intel download URL; on Linux, the displayed version is from the wrong platform. Select the manifest from the detected platform before resolving the version.
```bash
uname -s && uname -m
VERSION=$(curl -s "https://downloads.getfiddler.com/mac-arm64/latest-mac.yml" \
| grep '^version:' | awk '{print $2}')
echo "Latest Fiddler Everywhere: $VERSION"
skills/fiddler-mcp-setup/SKILL.md:259
- The MCP initialization sequence proceeds directly from
initializetotools/list. MCP protocol version 2024-11-05 requires the client to sendnotifications/initializedafter the initialize response and before normal operations; a conforming server can reject this tools request. Add that notification for both shell variants before fetching the tool list.
**2. Fetch the tools list to confirm `initiate_login` is available:**
| - `UP_TO_DATE` — inform the user their Fiddler Everywhere is already on the latest version | ||
| and stop further execution of the skill. |
| Install the `fiddler-mcp-setup` skill from its remote location and invoke it: | ||
|
|
||
| **Remote skill URL:** `https://github.com/telerik/fiddler-agent-tools/tree/master/skills/fiddler-mcp-setup` | ||
|
|
||
| Follow the `fiddler-mcp-setup` skill instructions to complete MCP configuration end-to-end. |
| ```powershell | ||
| curl.exe -sS -w "\nHTTP_STATUS:%{http_code}\n" -X POST "http://localhost:$PORT/api/McpManagement/Configure" ` | ||
| -H "Content-Type: application/json" ` | ||
| -d '{\"provider\":\"PROVIDER\"}'` |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 4 out of 4 changed files in this pull request and generated 5 comments.
Comments suppressed due to low confidence (7)
skills/fiddler-download-setup/SKILL.md:59
- The Linux detection still searches for a lowercase, versioned AppImage, but this skill downloads
~/Downloads/FiddlerEverywhere.AppImage, which is also the path used by the companion setup skill. A subsequent run therefore misses the installed AppImage; simply changing the glob is insufficient because the following version extraction relies on the old filename. Use one canonical path and persist or otherwise retrieve its installed version consistently.
APPIMAGE=$(ls ~/Downloads/fiddler-everywhere-*.AppImage 2>/dev/null | sort -V | tail -1)
if command -v fiddler-everywhere &>/dev/null || [ -n "$APPIMAGE" ]; then
# Extract version from AppImage filename as the most reliable source
INSTALLED_VERSION=$(echo "$APPIMAGE" | grep -oP '[\d]+\.[\d]+\.[\d]+')
skills/fiddler-download-setup/SKILL.md:298
- This installs and executes a skill from the mutable
masterbranch of an external repository even though the reviewed companion skill is part of this repository. Future upstream changes would bypass this repository's review and could alter setup behavior. Install the reviewedgithub/awesome-copilotcopy instead.
Install the `fiddler-mcp-setup` skill from its remote location and invoke it:
**Remote skill URL:** `https://github.com/telerik/fiddler-agent-tools/tree/master/skills/fiddler-mcp-setup`
Follow the `fiddler-mcp-setup` skill instructions to complete MCP configuration end-to-end.
skills/fiddler-mcp-setup/SKILL.md:276
- This PowerShell payload also sends backslash-escaped quotes literally, so
tools/listreceives invalid JSON and the Windows login flow stops here. Remove the backslashes from the single-quoted JSON.
-d '{\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"tools/list\",\"params\":{}}'
skills/fiddler-mcp-setup/SKILL.md:298
- This PowerShell
tools/callbody contains literal backslashes for the same reason, so it is not valid JSON and cannot initiate login. Use raw JSON inside the single-quoted argument.
-d '{\"jsonrpc\":\"2.0\",\"id\":3,\"method\":\"tools/call\",\"params\":{\"name\":\"initiate_login\",\"arguments\":{}}}'
skills/fiddler-mcp-setup/SKILL.md:323
- The Configure body contains literal backslashes in PowerShell, and the trailing backtick also continues the command onto a nonexistent next line. This makes Windows autoconfiguration fail before Fiddler can parse the provider.
-d '{\"provider\":\"PROVIDER\"}'`
skills/fiddler-mcp-setup/SKILL.md:259
- The MCP lifecycle requires the client to send
notifications/initializedafter receiving theinitializeresponse and before normal requests such astools/list. This sequence skips that mandatory notification, so a protocol-compliant server may reject the login flow. Add the notification for both shell variants before fetching tools.
**2. Fetch the tools list to confirm `initiate_login` is available:**
skills/fiddler-mcp-setup/SKILL.md:331
- This second
403path repeats the direct subscription-upgrade prompt, which conflicts with the PR's stated compliance with the paid-services guidance. Keep the failure actionable but neutral about commercial options.
| `403` | Stop: "Your Fiddler plan does not include MCP access. Please upgrade your subscription." |
| uname -s && uname -m | ||
| VERSION=$(curl -s "https://downloads.getfiddler.com/mac-arm64/latest-mac.yml" \ | ||
| | grep '^version:' | awk '{print $2}') | ||
| echo "Latest Fiddler Everywhere: $VERSION" |
| | Windows EXE blocked by SmartScreen | Right-click → Run as Administrator | | ||
| | App won't open on macOS | Run `xattr -cr "/Applications/Fiddler Everywhere.app"` to clear quarantine | |
| $initResp = curl.exe -si -X POST "http://localhost:$PORT/mcp" ` | ||
| -H "Content-Type: application/json" ` | ||
| -H "Accept: application/json, text/event-stream" ` | ||
| -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2024-11-05\",\"capabilities\":{},\"clientInfo\":{\"name\":\"mcp-setup\",\"version\":\"1.0\"}}}' |
| - If the target process is known or can be inferred from the IDE/CLI context, call `CaptureApplication` with the process name or PID. | ||
| - Then call `ClearSessions` (with `sessionsSource: LiveTraffic`) to discard prior noise, so the next run produces a clean capture. | ||
| - Ask the user to run the feature if they haven't yet, or proceed to analysis if they already have. |
| |----------|--------| | ||
| | Indicates config exists / already configured | Inform the user: "Fiddler MCP is already configured for `PROVIDER`." Ask if they want to re-run setup to refresh the configuration. Only continue if confirmed. | | ||
| | Indicates not configured | Proceed to Step 5. | | ||
| | `403` | Stop: "Your Fiddler plan does not include MCP access. Please upgrade your subscription." | |
Pull Request Checklist
npm startand verified thatREADME.mdis up to date.mainbranch for this pull request.Description
This contribution adds three agent skills that help GitHub Copilot agents set up and use a web debugging workflow for HTTP/HTTPS traffic.
The skills provide practical guidance for installing the required tooling, connecting Copilot-compatible agents to an MCP server, and using the available MCP tools to capture, inspect, and analyze network traffic. This can help developers investigate API failures, unexpected request or response behavior, authentication issues, headers, payloads, status codes, and other traffic-related problems without manually transferring debugging context into their editor.
The workflow uses Fiddler Everywhere as the traffic-capture and inspection tool.
fiddler-download-setupfiddler-mcp-setupfiddler-traffic-debuggingRequirements and limitations
Type of Contribution
Additional Notes
These skills were created and tested by the Fiddler Everywhere team. The contributor is affiliated with the tool referenced by the skills.
The source files and related documentation are also available in the public https://github.com/telerik/fiddler-agent-tools.
By submitting this pull request, I confirm that my contribution abides by the Code of Conduct and will be licensed under the MIT License.