A multi-module Go application that provides agent tooling, CLI operations, skills management, plugins, and UI components. This is a monorepo containing forge-core (runtime/tools), forge-cli (command-line interface), forge-skills (skill definitions), forge-plugins (extension plugins), and forge-ui (user interface).
Forge has 10 tools with mixed quality. Naming is generally good (verb-first: shell, browser_navigate, browser_state, browser_click, browser_fill, browser_extract, browser_screenshot, local_shell, local_file_browser, json_parse). Descriptions vary significantly, browser tools are well-documented (150-200 chars, context-rich), but devtools and json_parse are sparse or test-only. Schemas are present for most tools but inconsistent in completeness: browser and shell tools have full input schemas with type definitions and parameter descriptions; devtools tools (local_shell, local_file_browser) show minimal schemas from test files, not production code; json_parse has no visible schema. All tools lack documented output schemas, critical for composition planning. Error handling is largely absent; tools provide no guidance for recovery or next steps. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) are visible, despite destructive tools (shell, local_shell) being present.
Click the interactive element with the given index from the latest digest, then return the resulting page digest. Requires the digest's generation number; if the page changed since, the error includes a fresh digest to act on.
Extract content from the current page: mode=text (readable markdown, default), mode=links (deduplicated [text](url) lines), or mode=html (outerHTML of a CSS selector — escape hatch, prefer text). Long content is paginated: pass offset from the previous call's header to continue.
Type text into the input/textarea/contenteditable with the given index (replaces existing content), or pick an option of a select by its label. Password and payment fields are refused unless the skill opted in. Set submit=true to press Enter afterwards. Returns the resulting page digest.
Load a web page in the managed browser and return its digest: title, URL, indexed interactive elements ([N] lines), and the start of the page text. Use the indices with browser_click/browser_fill. Only http/https URLs; navigation is subject to the agent's egress allowlist.
Capture a screenshot of the current browser page.
Output schemas absent across all 10 tools
Three tools sourced from test files, not production code (local_shell, local_file_browser, json_parse)
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) visible
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 60 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 35 | - | v1 |
Re-read the current page and return a fresh digest with new element indices and generation. Use after the page changed on its own, to see more elements, or to scroll (scroll_pages down/up or scroll_to_index).
Parse and validate JSON input.
Browse, read, and list local files for development purposes.
Execute local shell commands for development and testing.
Run a shell command in the workspace (via `sh -c`). Use for OS operations (ls, mkdir, grep, cat, sed) and for running the `forge` CLI directly (forge init/validate/build/run/skills/channel/mcp). Combine with the file tools to build and edit a Forge agent.
Generic or missing parameter descriptions in test-sourced tools
browser_screenshot has minimal description (39 chars) and no input/output schema
No error handling or recovery guidance in any tool