Search open-source projects.
Searches the SourceForge project directory like its search page: project name, one-line summary, link and last update date, in the site's order. First page of results (about 25 projects).
- Site
- SourceForge, United States
- Version
- v1
- Runs, last 7 days
- No reports yet
- sha256
- 0eff87fd827f…
Run it with your agent
after installing WieldAsk in plain words. Your agent finds this recipe and calls it:
“Search open-source projects.”
Read-only: it changes nothing on the site. No login needed.
{ "tool": "run", "arguments": { "recipe_id": "sourceforge.net/search-packages", "params": { "query": "vlc" } } }
Requests
sent from your browser, in order- 1GET/directory/?qServer-rendered project directory search /directory/?q=...; read-only GET. Each result is li.project-oss.
Parameters
from your agentquerystringrequiredProject or keyword, e.g. 'vlc', 'filezilla', 'audacity'
Returns
to your agentprojectsobject[]last_update, name, summary, url
querystring
Where it can send
- sourceforge.net
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.projects) > `0`
- length(output.projects[?name != `null`]) == length(output.projects)
- length(output.projects[?starts_with(url, 'https://sourceforge.net/projects/')]) == length(output.projects)
Raw recipe
Served as canonical JSON from /api/v1/recipes/sourceforge.net/search-packages, so its sha256 matches the ETag and the index.
Check it yourself
curl -s https://wield.run/api/v1/recipes/sourceforge.net/search-packages | shasum -a 256 # 0eff87fd827fa18ad24ecb3d18b011f0a4c7907efc00cbb83345ee91c75b0443
sourceforge.net/search-packages.json, v1
{ "description": "Searches the SourceForge project directory like its search page: project name, one-line summary, link and last update date, in the site's order. First page of results (about 25 projects).", "effect": "read", "id": "sourceforge.net/search-packages", "keywords": [ "sourceforge", "sourceforge.net", "open source", "opensource", "software", "download", "projects", "freie software", "quelloffen", "programme", "apps", "directory", "search" ], "output": { "schema": { "properties": { "projects": { "items": { "properties": { "last_update": { "description": "Date of the last release or update, YYYY-MM-DD", "type": [ "string", "null" ] }, "name": { "type": "string" }, "summary": { "type": [ "string", "null" ] }, "url": { "type": "string" } }, "required": [ "name", "url" ], "type": "object" }, "type": "array" }, "query": { "type": "string" } }, "required": [ "query", "projects" ], "type": "object" }, "value": "{query: params.query, projects: steps.search.projects[?name != `null` && href != `null`].{name: name, summary: summary || `null`, last_update: last_update || `null`, url: join('', ['https://sourceforge.net', href])}}" }, "params": { "additionalProperties": false, "properties": { "query": { "description": "Project or keyword, e.g. 'vlc', 'filezilla', 'audacity'", "maxLength": 100, "minLength": 2, "type": "string" } }, "required": [ "query" ], "type": "object" }, "provenance": { "method": "har", "notes": "GET /directory/?q=...: the HTML already contains the first page of project results (li.project-oss). Name is the h3 in the result title link, summary is p.subtitle, last update is the datetime of time.dateUpdated. Download counts are not extracted because they are plain text without a stable selector. Results are fuzzy matches (e.g. 'vlc' also returns player apps that mention VLC).", "recorded_at": "2026-11-08T12:20:00.000Z", "recorded_by": "wield-forge (claude-haiku agent)" }, "requires_login": false, "schema": "https://wield.run/schema/recipe/v1.json", "site": { "country": "US", "id": "sourceforge.net", "language": "en", "name": "SourceForge", "origin": "https://sourceforge.net", "origins": [ "https://sourceforge.net" ] }, "steps": [ { "description": "Server-rendered project directory search /directory/?q=...; read-only GET. Each result is li.project-oss.", "expect": { "content_type": "html", "status": [ 200 ] }, "extract": { "html_items": { "projects": { "fields": { "href": { "attr": "href", "selector": "a.result-heading-title" }, "last_update": { "attr": "datetime", "selector": "time.dateUpdated" }, "name": { "selector": ".result-heading-title h3" }, "summary": { "selector": "p.subtitle" } }, "max": 30, "selector": "li.project-oss" } } }, "id": "search", "request": { "headers": { "Accept": "text/html" }, "method": "GET", "query": { "q": "{{params.query}}" }, "url": "/directory/" } } ], "task": "Search open-source projects", "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.projects) > `0`", "length(output.projects[?name != `null`]) == length(output.projects)", "length(output.projects[?starts_with(url, 'https://sourceforge.net/projects/')]) == length(output.projects)" ], "example_params": { "query": "vlc" }, "max_ms": 5000 }, "version": 1 }