Skip to content

feat(web): integrate curl.md as default URL→Markdown CLI for all agents#158

Merged
izo merged 1 commit intomainfrom
claude/integrate-web-search-8YtJI
May 7, 2026
Merged

feat(web): integrate curl.md as default URL→Markdown CLI for all agents#158
izo merged 1 commit intomainfrom
claude/integrate-web-search-8YtJI

Conversation

@izo
Copy link
Copy Markdown
Owner

@izo izo commented May 7, 2026

Pourquoi

Demande utilisateur : "On intègre ça par défaut au framework https://curl.md/ — si on consulte / extrait / search une page web on passe par ça."

curl.md (wevm, MIT, gratuit) est désormais le premier réflexe pour toute consultation / extraction / indexation d'une page web par un agent ulk. Le service convertit n'importe quelle URL en Markdown optimisé pour LLMs (token-savings 50-90 % vs HTML brut).

Ce qui change

Hiérarchie des outils web (mise à jour)

Use case Outil Statut
Texte / Markdown depuis une URL curl.md <url> required (nouveau, depuis 2026-05-07)
Visuel (screenshots, PDF, a11y, auth) shot-scraper required (inchangé)
Scraping JS-rendered, JS eval, multi-URL parallèle, CDP obscura required (inchangé)
Fichier HTML local OU fallback si curl.md down defuddle recommended (rétrogradé depuis required)
Dernier recours WebFetch non-canonique

Périmètre du remplacement (réponse aux questions au début)

  • ✅ Remplace WebFetch partout
  • ✅ Remplace defuddle parse <url> (defuddle reste pour HTML local + fallback)
  • ✅ Coexiste avec defuddle (HTML local), shot-scraper (visuel), obscura (JS-rendered)

Sécurité

⚠️ Ne jamais passer à curl.md une URL contenant un secret en query string ou une page d'admin/intranet — service distant. Pour ces cas, basculer sur defuddle local.

Diff résumé (14 fichiers, +318 / −36)

Nouveau

  • framework/agents/_shared/curl-md-protocol.md — protocole canonique (install, usages, patterns, fallback, sécurité, plugin Claude)

Modifié

  • framework/tools/cli-registry.json — ajout curl-md (required) + démotion defuddle (recommended)
  • framework/cli/internal/installer/catalog.go — ExternalModule curl-md (--with-curl-md, enabledByDefault: true)
  • framework/cli/internal/installer/modules_test.gocurl-md ajouté à la liste enabled-by-default
  • framework/cli/cmd/install.go — flag --with-curl-md (struct + Bool + boolFlag + applyFlags)
  • framework/agents/_shared/base-rules.md — nouvelle règle « Consultation web — premier réflexe curl.md » (héritée par tous les agents)
  • framework/agents/_shared/cli-tools-protocol.md — chaîne docs avec curl.md prioritaire
  • framework/agents/_shared/obsidian-doc-protocol.md — section curl.md ajoutée, defuddle rétrogradé
  • framework/agents/_shared/token-optimizers-protocol.md — table outils + exemples mis à jour
  • framework/agents/_shared/design-source-protocol.md — pipeline audit/web bascule sur curl.md
  • CLAUDE.md — ligne « Key CLIs » et bloc detail curl.md / defuddle révisés
  • framework/agents/CLAUDE.md — Tool Usage + table protocoles partagés
  • .claude/rules/agents-authoring.md — table extends: + protocoles partagés
  • .claude/rules/install-reference.md — option --with-curl-md + section CLIs requises

Tests

$ go test ./... -count=1
ok  github.com/izo/ulk/cmd                       2.190s
ok  github.com/izo/ulk/internal/config           0.029s
ok  github.com/izo/ulk/internal/installer        1.455s
ok  github.com/izo/ulk/internal/registry         0.019s
ok  github.com/izo/ulk/tui                       0.010s

/tmp/ulk-test install --help confirme le flag :

--with-curl-md                Install curl.md CLI (URL → Markdown for agents — enabled by default)

Test plan

  • ./install.sh (sans flag) → curl.md installé par défaut (enabledByDefault: true)
  • ./install.sh --with-curl-md → install explicite + idempotent (skip si déjà présent)
  • curl.md https://example.com/article retourne du Markdown propre
  • curl https://curl.md/<url> fonctionne sans CLI installée (CI / hooks)
  • Vérifier qu'aucun agent existant ne casse (defuddle toujours disponible en fallback)
  • Vérifier framework/tools/check-tools.sh reconnaît curl.md (lecture dynamique du registry)

https://claude.ai/code/session_01Ur7XGBMwMkUFBrpb2Gi72z


Generated by Claude Code

curl.md (wevm/curl.md, MIT) becomes the first reflex for any agent that
consults, cites, extracts or indexes a web page. It replaces WebFetch
and `defuddle parse <url>` everywhere; defuddle is demoted to fallback
(local HTML files + curl.md outage). shot-scraper (visual) and obscura
(JS-rendered scraping/CDP) keep their roles.

- registry: add curl-md (priority required) + demote defuddle to recommended
- catalog: ExternalModule curl-md (--with-curl-md, enabledByDefault)
- CLI: wire --with-curl-md flag in install.go + applyFlags
- protocol: new framework/agents/_shared/curl-md-protocol.md (canonical)
- docs: CLAUDE.md, agents/CLAUDE.md, agents-authoring.md, install-reference.md
- base-rules: add "Consultation web — premier réflexe curl.md" rule
- side updates: cli-tools, obsidian-doc, token-optimizers, design-source

Tests: go test ./... green (installer + cmd + tui + config + registry).
@izo izo marked this pull request as ready for review May 7, 2026 21:59
@izo izo merged commit a6b0735 into main May 7, 2026
3 of 5 checks passed
@izo izo deleted the claude/integrate-web-search-8YtJI branch May 7, 2026 21:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants