docs(defuddle): document shell-level timeout pattern for slow URLs#91
Open
jeremysoccer45 wants to merge 1 commit into
Open
docs(defuddle): document shell-level timeout pattern for slow URLs#91jeremysoccer45 wants to merge 1 commit into
jeremysoccer45 wants to merge 1 commit into
Conversation
The defuddle CLI has no native --timeout flag (verified against the upstream README). A slow or hung server can stall the skill indefinitely with no recovery path. Appends a "Handling slow or unresponsive URLs" section to SKILL.md that: - Documents POSIX wrapper: timeout 30 defuddle parse <url> --md - Documents PowerShell wrapper: Start-Job + Wait-Job -Timeout 30 - Establishes 30s as the default (matches obsidian-summarize-url convention) - Tells the agent how to recover on timeout (fall back to WebFetch or report; do not silently retry) - Documents override pattern for known-slow sources (PDFs, large pages) Frontmatter unchanged. No version bump (additive guidance only — fast-URL behavior identical to before). No new dependencies (timeout ships in coreutils + git-bash; Start-Job in PowerShell 5.1+). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
jeremysoccer45
force-pushed
the
improve/defuddle-timeout-handling
branch
from
May 11, 2026 02:32
5b3e5bc to
4d1d371
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Draft PR — Defuddle: configurable timeout for web fetches
Branch
improve/defuddle-timeout-handling(local only; commit SHA7e91650)Suggested PR title
docs(defuddle): document shell-level timeout pattern for slow URLs
Summary
The
defuddleskill currently tells Claude to invokedefuddle parse <url> --mdwith no timeout. Because the upstreamdefuddleCLI has no built-in--timeoutflag, a slow or hung server can stall the skill indefinitely with no user feedback. This PR appends a "Handling slow or unresponsive URLs" section toSKILL.mdthat documents shell-level timeout patterns (timeout 30 ...on Linux/macOS/git-bash,Start-Job+Wait-Job -Timeout 30on PowerShell), establishes 30 seconds as the default, and tells Claude what to do when the timeout fires (fall back to WebFetch or report; do not silently retry).Motivation
QB-IMPROVE round 1 gap-analyst flagged "defuddle timeout handling" as needing improvement. The failure mode is concrete: a user pastes a URL whose origin is slow or non-responsive, the skill calls
defuddle parse <url> --md, the underlying fetch hangs, and Claude waits with no recovery path. There is no upstream CLI flag for this — verified against the defuddle CLI README — so the only available fix is to instruct the agent to wrap the call in a host-level timeout.Implementation
skills/defuddle/SKILL.md(body only — no helper code exists in this skill).timeout 30 defuddle parse <url> --md(POSIX / git-bash) andStart-Job+Wait-Job -Timeout 30(PowerShell).timeout 60 ...for known-slow sources (long PDFs, large pages).WebFetchor report to the user; do not silently retry.name,description,license,version,tags). No version bump because behavior of well-behaved URLs is unchanged; this is purely additive guidance.Test plan
Manual repro (before/after):
main): invoke the defuddle skill on a deliberately slow URL such ashttp://httpstat.us/200?sleep=120000. Observe that the call hangs for 2 full minutes with no Claude-side timeout.improve/defuddle-timeout-handling): re-run the skill with the same URL. Claude should now wrap the call astimeout 30 defuddle parse ..., the call should error after 30s with exit code 124, and Claude should report the timeout / offer WebFetch fallback rather than waiting silently.timeout 60 ...and behave accordingly.https://example.com). Output should be identical to pre-PR behavior — the wrapper adds zero latency for sub-30s responses.python tools/validate_skill.py skills/defuddle/SKILL.mdexits 0 (verified locally before commit).Backward compatibility
main, so any tooling that readsname/description/versionis unaffected.timeoutis in coreutils on Linux/macOS and ships with git-bash on Windows;Start-Job/Wait-Jobare built into PowerShell 5.1+.Diff summary
(Output of
git diff main..improve/defuddle-timeout-handling --stat.)Reviewer notes
npm install -g defuddle. Documenting the shell pattern matches how the rest of the skill is written.obsidian-summarize-url) usestimeout 30for its Firecrawl-based fetch path; matching that convention keeps timeout behavior consistent across content-extraction skills.--timeout <seconds>flag ondefuddleitself? Verified against the upstream CLI README —defuddle parsehas no fetch-timeout flag (only--output,--md/--markdown,--json,--property,--debug,--lang). A shell-level timeout is the only available lever.--timeout, this section should be replaced with the native flag. Filed mentally; no issue created.git push -u origin improve/defuddle-timeout-handlingandgh pr createwhen ready.