Repository Analysis

browserbase/stagehand

The SDK For Browser Agents

1.4 Likely human-written View on GitHub
1.4
Adjusted Score
1.4
Raw Score
100%
Time Factor
2026-05-29
Last Push
22,858
Stars
TypeScript
Language
165,119
Lines of Code
780
Files
179
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 0HIGH 11MEDIUM 3LOW 165

Pattern Findings

179 matches across 6 categories. Click a row to expand file-level details.

Hyper-Verbose Identifiers153 hits · 154 pts
SeverityFileLineSnippet
LOWpackages/evals/utils.ts232export function normalizeAgentModelEntries(
LOWpackages/evals/taskConfig.ts276function getConfiguredCuaAgentModels(): string[] {
LOWpackages/evals/core/tools/browse_cli.ts51function resolveBrowseCliEntrypoint(): string {
LOWpackages/evals/core/tools/browse_cli.ts762function connectionModeFromProfile(
LOWpackages/evals/core/tools/playwright_code.ts542function connectionModeFromProfile(
LOWpackages/evals/core/tools/chrome_devtools_mcp.ts57function connectionModeFromProfile(
LOWpackages/evals/core/tools/chrome_devtools_mcp.ts125function parseChromeDevtoolsSnapshotEntries(
LOWpackages/evals/core/tools/chrome_devtools_mcp.ts153function scoreChromeDevtoolsSnapshotEntry(
LOWpackages/evals/core/tools/chrome_devtools_mcp.ts203function findBestChromeDevtoolsSnapshotEntry(
LOWpackages/evals/core/tools/chrome_devtools_mcp.ts1039function buildChromeDevtoolsMcpArgs(input: ToolStartInput): string[] {
LOWpackages/evals/core/tools/cdp_code.ts1186function connectionModeFromProfile(
LOWpackages/evals/core/tools/understudy_code.ts441function connectionModeFromProfile(
LOWpackages/evals/core/tools/playwright_mcp.ts60function connectionModeFromProfile(
LOWpackages/evals/core/tools/playwright_mcp.ts98function buildPlaywrightSelectorResolver(selectorVar = "selector"): string {
LOWpackages/evals/core/tools/playwright_mcp.ts112function parsePlaywrightListedPages(text: string): ListedPlaywrightPage[] {
LOWpackages/evals/core/tools/playwright_mcp.ts131function parsePlaywrightSnapshotEntries(
LOWpackages/evals/core/tools/playwright_mcp.ts167function scorePlaywrightSnapshotEntry(
LOWpackages/evals/core/tools/playwright_mcp.ts217function findBestPlaywrightSnapshotEntry(
LOWpackages/evals/core/tools/mcpUtils.ts51function findBalancedJsonCandidate(text: string): string | null {
LOWpackages/evals/core/tools/mcpUtils.ts176export function parseChromeDevtoolsListedPages(
LOWpackages/evals/core/targets/browserbase.ts5function loadBrowserbaseCredentials(): { apiKey: string; projectId?: string } {
LOWpackages/evals/core/targets/browserbase.ts20export async function launchRunnerProvidedBrowserbaseChrome(): Promise<{
LOWpackages/evals/core/targets/localChrome.ts8export function resolveLocalChromeExecutablePath(): string | undefined {
LOWpackages/evals/core/targets/localChrome.ts102export async function launchRunnerProvidedLocalChrome(): Promise<{
LOWpackages/evals/framework/claudeCodeRunner.ts113export function isClaudeCodeMaxTurnsError(value: unknown): boolean {
LOWpackages/evals/framework/claudeCodeRunner.ts258function extractClaudeCodeTokenUsage(
LOWpackages/evals/framework/claudeCodeRunner.ts354function buildClaudeCodeStopReason(
LOWpackages/evals/framework/claudeCodeRunner.ts371function buildClaudeCodeTranscript(messages: ClaudeSdkMessage[]): string {
LOWpackages/evals/framework/claudeCodeRunner.ts402function summarizeClaudeCodeMessage(message: ClaudeSdkMessage): {
LOWpackages/evals/framework/context.ts35export function resolveDefaultCoreStartupProfile(
LOWpackages/evals/framework/claudeCodeToolAdapter.ts152export function allowUnsandboxedLocalClaudeCode(): boolean {
LOWpackages/evals/framework/claudeCodeToolAdapter.ts160export async function prepareClaudeCodeToolAdapter(
LOWpackages/evals/framework/claudeCodeToolAdapter.ts196export function resolveClaudeCodeToolSurface(
LOWpackages/evals/framework/claudeCodeToolAdapter.ts212export function resolveClaudeCodeStartupProfile(
LOWpackages/evals/framework/claudeCodeToolAdapter.ts285export async function prepareBrowseCliHarnessAdapter(
LOWpackages/evals/framework/claudeCodeToolAdapter.ts355async function preparePlaywrightCodeAdapter(
LOWpackages/evals/framework/claudeCodeToolAdapter.ts582async function buildPlaywrightRunMcpServers(input: {
LOWpackages/evals/framework/claudeCodeToolAdapter.ts1038function buildPlaywrightCodePromptInstructions(
LOWpackages/evals/framework/claudeCodeToolAdapter.ts1052function buildCdpCodePromptInstructions(plan: ExternalHarnessTaskPlan): string {
LOWpackages/evals/framework/claudeCodeToolAdapter.ts1082function buildBrowseCliPromptInstructions(
LOWpackages/evals/framework/codexToolAdapter.ts47export function resolveCodexStartupProfile(
LOWpackages/evals/framework/agentModelModes.ts25export function inferDefaultStagehandAgentMode(
LOWpackages/evals/framework/activeRunCleanup.ts21export async function cleanupActiveRunResources(): Promise<void> {
LOWpackages/evals/framework/externalHarnessPlan.ts19export function buildExternalHarnessTaskPlan(
LOWpackages/evals/framework/benchPlanner.ts67export function inferEffectiveBenchCategory(
LOWpackages/evals/framework/benchPlanner.ts148function expandAgentEntriesForRequestedModes(
LOWpackages/evals/framework/benchPlanner.ts185function assertCompatibleAgentModelEntries(
LOWpackages/evals/framework/benchPlanner.ts200function resolveDefaultModelEntries(
LOWpackages/evals/framework/benchPlanner.ts248function resolveRequestedAgentModes(
LOWpackages/evals/framework/benchPlanner.ts467function resolveBenchRowToolSurface(
LOWpackages/evals/framework/benchPlanner.ts480function resolveBenchRowStartupProfile(
LOWpackages/evals/tui/commands/experiments.ts502function renderHeadlessCompareSummary(
LOWpackages/evals/tui/commands/run.ts168function isExplicitLegacyOnlyTarget(target?: string): boolean {
LOWpackages/evals/tests/cli.test.ts59function readSourceWelcomeCompletedAt(): string | undefined {
LOWpackages/evals/scripts/render-braintrust-core-report.ts677function buildExperimentMetricsTable(rows: ExperimentData[]): string {
LOWpackages/evals/lib/braintrust-report.ts44export function clearBraintrustReportCache(): void {
LOWpackages/evals/lib/braintrust-report.ts788async function fetchExperimentEventsInternal(
LOWpackages/evals/lib/braintrust-report.ts858async function fetchExperimentComparison(
LOWpackages/evals/lib/braintrust-report.ts875async function fetchExperimentDataForRow(
LOWpackages/evals/lib/braintrust-report.ts941async function fetchRecentExperimentDataForRow(
93 more matches not shown…
Cross-Language Confusion (JS/TS)11 hits · 55 pts
SeverityFileLineSnippet
HIGHpackages/evals/tui/commands/help.ts14 print([
HIGHpackages/evals/tui/commands/help.ts46 print([
HIGHpackages/evals/tui/commands/help.ts138 print([
HIGHpackages/evals/tui/commands/help.ts156 print([
HIGHpackages/evals/tui/commands/help.ts175 print([
HIGHpackages/evals/tui/commands/help.ts220 print([
HIGHpackages/evals/tui/commands/help.ts255 print([
HIGHpackages/evals/tui/commands/help.ts277 print([
HIGHpackages/evals/tui/commands/help.ts296 print([
HIGHpackages/evals/tui/commands/help.ts314 print([
HIGHpackages/evals/tui/commands/help.ts338 print([
Decorative Section Separators3 hits · 9 pts
SeverityFileLineSnippet
MEDIUMpackages/evals/tui/repl.ts46 // ─── Onboarding chrome ───────────────────────────────────────────────
MEDIUMpackages/core/lib/v3/verifier/trajectory.ts90// ─────────────────────────────────────────────────────────────────────────────
MEDIUMpackages/core/lib/v3/verifier/trajectory.ts92// ─────────────────────────────────────────────────────────────────────────────
Fake / Example Data6 hits · 8 pts
SeverityFileLineSnippet
LOWpackages/core/examples/example.ts25 await stagehand.act("fill the your name field with the text 'John Doe'", {
LOWpackages/server-v3/tests/unit/jsonSchemaToZod.test.ts671 name: "John Doe",
LOWpackages/server-v3/tests/unit/jsonSchemaToZod.test.ts674 street: "123 Main St",
LOWpackages/server-v3/tests/unit/jsonSchemaToZod.test.ts678 phones: [{ country_code: "+1", number: "555-0100" }],
LOWpackages/server-v3/tests/unit/jsonSchemaToZod.test.ts680 assert.equal(result.name, "John Doe");
LOWpackages/server-v3/tests/unit/jsonSchemaToZod.test.ts683 assert.equal(result.phones[0].number, "555-0100");
Over-Commented Block5 hits · 5 pts
SeverityFileLineSnippet
LOWpackages/core/examples/agent-custom-tools.ts61 Do not ask follow up questions, the user will trust your judgement. Today's date is ${new Date().toLocaleDateStrin
LOWpackages/core/lib/v3/api.ts61): string {
LOWpackages/core/lib/v3/flowlogger/EventStore.ts101
LOWpackages/core/lib/v3/understudy/context.ts621
LOW.github/workflows/claude.yml61 branch_prefix: 'claude-'
Redundant / Tautological Comments1 hit · 2 pts
SeverityFileLineSnippet
LOW.github/workflows/ci.yml198 # Check if skip-evals label is present