Search Dart and Flutter packages.
Searches pub.dev, the Dart and Flutter package index, like its packages page: package name, latest version, description, pub points and link. First page of results (about 10 packages, in the site's order). Returns an empty list when nothing matches.
- Site
- pub.dev, United States
- Version
- v1
- Runs, last 7 days
- No reports yet
- sha256
- e9f58da6e65d…
Run it with your agent
after installing WieldAsk in plain words. Your agent finds this recipe and calls it:
“Search Dart and Flutter packages.”
Read-only: it changes nothing on the site. No login needed.
{ "tool": "run", "arguments": { "recipe_id": "pub.dev/search-packages", "params": { "query": "http" } } }
Requests
sent from your browser, in order- 1GET/packages?qServer-rendered search results page /packages?q=…; read-only GET. Each result is div.packages-item with a title link (h3.packages-title), a description, a version link whose title reads 'Visit <name> <version> page' and a pub points score.
Parameters
from your agentquerystringrequiredPackage name or keyword, e.g. 'http', 'provider', 'camera flutter'
Returns
to your agentpackagesobject[]description, name, points, url, version
querystring
Where it can send
- pub.dev
Anything else is blocked by the extension.
Reads from your session
Nothing. Your browser attaches the site's cookies by itself.
Used only in requests to the addresses on the left. Never sent to wield.run or your agent.
Checks
a run passes when- length(output.packages) > `0`
- length(output.packages[?starts_with(url, 'https://pub.dev/packages/')]) == length(output.packages)
- length(output.packages[?name != `null`]) == length(output.packages)
- length(output.packages[?version != `null`]) > `0`
Raw recipe
Served as canonical JSON from /api/v1/recipes/pub.dev/search-packages, so its sha256 matches the ETag and the index.
Check it yourself
curl -s https://wield.run/api/v1/recipes/pub.dev/search-packages | shasum -a 256 # e9f58da6e65df25bb5fcbd90797e9e744e396e234483e60e7353a6dfe617e16f
pub.dev/search-packages.json, v1
{ "description": "Searches pub.dev, the Dart and Flutter package index, like its packages page: package name, latest version, description, pub points and link. First page of results (about 10 packages, in the site's order). Returns an empty list when nothing matches.", "effect": "read", "id": "pub.dev/search-packages", "keywords": [ "pub.dev", "pub", "dart", "flutter", "dart packages", "flutter packages", "packages", "plugins", "library", "libraries", "http", "provider", "riverpod" ], "output": { "schema": { "properties": { "packages": { "items": { "properties": { "description": { "type": [ "string", "null" ] }, "name": { "type": "string" }, "points": { "description": "Pub points, the package health and quality score out of 160", "type": [ "integer", "null" ] }, "url": { "type": "string" }, "version": { "type": [ "string", "null" ] } }, "required": [ "name", "url" ], "type": "object" }, "type": "array" }, "query": { "type": "string" } }, "required": [ "query", "packages" ], "type": "object" }, "value": "{query: params.query, packages: steps.search.packages[?name != `null` && href != `null`].{name: name, version: (version_label && split(version_label, ' ')[2]) || `null`, description: description || `null`, points: (points && to_number(points)) || `null`, url: join('', ['https://pub.dev', href])}}" }, "params": { "additionalProperties": false, "properties": { "query": { "description": "Package name or keyword, e.g. 'http', 'provider', 'camera flutter'", "maxLength": 100, "minLength": 2, "type": "string" } }, "required": [ "query" ], "type": "object" }, "provenance": { "method": "har", "notes": "GET /packages?q=<query> answers 200 HTML with the first page of results as div.packages-item. Name and link come from the title link, description from the description span, version from the title attribute of the version link ('Visit <name> <version> page'), and points from the health score. Likes and 30-day downloads are not returned: they are abbreviated (for example 8.48k, 14.8M) in the page.", "recorded_at": "2026-11-08T16:30:00.000Z", "recorded_by": "wield-forge (claude-haiku agent)" }, "requires_login": false, "schema": "https://wield.run/schema/recipe/v1.json", "site": { "country": "US", "id": "pub.dev", "language": "en", "name": "pub.dev", "origin": "https://pub.dev", "origins": [ "https://pub.dev" ] }, "steps": [ { "description": "Server-rendered search results page /packages?q=…; read-only GET. Each result is div.packages-item with a title link (h3.packages-title), a description, a version link whose title reads 'Visit <name> <version> page' and a pub points score.", "expect": { "content_type": "html", "status": [ 200 ] }, "extract": { "html_items": { "packages": { "fields": { "description": { "selector": "div.packages-description > span" }, "href": { "attr": "href", "selector": "h3.packages-title > a" }, "name": { "selector": "h3.packages-title > a" }, "points": { "selector": ".packages-score-health .packages-score-value-number" }, "version_label": { "attr": "title", "selector": "a[title^='Visit']" } }, "max": 50, "selector": "div.packages-item" } } }, "id": "search", "request": { "headers": { "Accept": "text/html" }, "method": "GET", "query": { "q": "{{params.query}}" }, "url": "/packages" } } ], "task": "Search Dart and Flutter packages", "tos": { "notes": "Not reviewed. One search page per call, the same page a visitor loads. The site's terms on automated access were not checked.", "reviewed": false }, "verify": { "checks": [ "length(output.packages) > `0`", "length(output.packages[?starts_with(url, 'https://pub.dev/packages/')]) == length(output.packages)", "length(output.packages[?name != `null`]) == length(output.packages)", "length(output.packages[?version != `null`]) > `0`" ], "example_params": { "query": "http" }, "max_ms": 5000 }, "version": 1 }