Public Kitchen Report

Back to app

Scores

Score details and supporting evidence for each check.

100 / 100

All promised features found

Features found in source

App specification source review: 11 of 11 features (100%); partial features count half. Source review based on your App specification (11 features).

The AI read 32 of 66 source files.

Features found in the code

App specification source review: 11 of 11 features found in source (100%)

Show the 11 features
  • ✓ Select a screen region using a configurable global shortcut or menu command, with multi-display support and cancellation. — found

    Files checked: Sources/Capture/CaptureCoordinator.swift, Sources/Capture/Capture/SelectionOverlay.swift, Sources/Capture/Capture/ScreenCapturer.swift

    Global hotkey/menu trigger, multi-display frozen overlays, and Escape/right-click cancellation found.

    Evidence: Sources/Capture/CaptureCoordinator.swift:1, Sources/Capture/Capture/SelectionOverlay.swift:1, Sources/Capture/Capture/ScreenCapturer.swift:1

    Files from your spec: Sources/Capture/CaptureCoordinator.swift, Sources/Capture/Capture/SelectionOverlay.swift, Sources/Capture/Capture/ScreenCapturer.swift

  • ✓ Extract text from a selection using on-device recognition or an OpenRouter vision model. — found

    Files checked: Sources/Capture/Features/TextExtractor.swift, Sources/Capture/UI/ResultPanel.swift, Sources/Capture/LLM/OpenRouterClient.swift

    Vision on-device OCR and OpenRouter vision-model OCR both implemented; results shown in editable panel.

    Evidence: Sources/Capture/Features/TextExtractor.swift:1, Sources/Capture/UI/ResultPanel.swift:1

    Files from your spec: Sources/Capture/Features/TextExtractor.swift, Sources/Capture/UI/ResultPanel.swift

  • ✓ Translate selected content into a chosen language and display the result over the original text or in an editable panel. — found

    Files checked: Sources/Capture/Features/InPlaceTranslator.swift, Sources/Capture/UI/TranslationOverlay.swift, Sources/Capture/Features/Translator.swift

    Overlay in-place translation and panel translation into target language both implemented.

    Evidence: Sources/Capture/Features/InPlaceTranslator.swift:1, Sources/Capture/UI/TranslationOverlay.swift:1, Sources/Capture/Features/Translator.swift:1

    Files from your spec: Sources/Capture/Features/InPlaceTranslator.swift, Sources/Capture/Features/Translator.swift, Sources/Capture/UI/TranslationOverlay.swift

  • ✓ Copy original or translated text and open overlay translations as editable text. — found

    Files checked: Sources/Capture/UI/TranslationOverlay.swift, Sources/Capture/UI/ResultPanel.swift, Sources/Capture/Features/DocumentTextController.swift

    Copy original/translation and Open as text into editable panel found in overlay and result panel.

    Evidence: Sources/Capture/UI/TranslationOverlay.swift:1, Sources/Capture/UI/ResultPanel.swift:1

    Files from your spec: Sources/Capture/UI/TranslationOverlay.swift, Sources/Capture/UI/ResultPanel.swift

  • ✓ Chat about a captured selection with streaming replies, screenshot previews, recapture, retry, cancellation, and conversation reset. — found

    Files checked: Sources/Capture/Chat/ChatPanel.swift, Sources/Capture/Chat/ChatSession.swift, Sources/Capture/UI/ResultPanel.swift

    Streaming chat, screenshot preview, recapture, retry, stop, and New chat reset all found.

    Evidence: Sources/Capture/Chat/ChatPanel.swift:1, Sources/Capture/Chat/ChatSession.swift:1

    Files from your spec: Sources/Capture/Chat/ChatPanel.swift, Sources/Capture/Chat/ChatSession.swift

  • ✓ Review and approve or deny AI-requested clicks, typing, key presses, scrolling, and screenshot updates. — found

    Files checked: Sources/Capture/Chat/ChatSession.swift, Sources/Capture/Agent/AgentTools.swift, Sources/Capture/Agent/InputSynthesizer.swift

    Approval prompt with allow/allowAll/deny gates click, type, key, scroll, screenshot tools.

    Evidence: Sources/Capture/Chat/ChatSession.swift, Sources/Capture/Agent/AgentTools.swift, Sources/Capture/Agent/InputSynthesizer.swift

    Files from your spec: Sources/Capture/Chat/ChatSession.swift, Sources/Capture/Agent/AgentTools.swift, Sources/Capture/Agent/InputSynthesizer.swift

  • ✓ Read active document text locally, including available PDF text layers, with partial-read notices and an area-capture fallback. — found

    Files checked: Sources/Capture/Features/DocumentTextController.swift, Sources/Capture/Features/DocumentTextReader.swift, Sources/Capture/UI/ResultPanel.swift

    Local AX/PDF text read, partial-read notice, and area-capture fallback button found.

    Evidence: Sources/Capture/Features/DocumentTextController.swift:44, Sources/Capture/Features/DocumentTextReader.swift:44, Sources/Capture/UI/ResultPanel.swift:44

    Files from your spec: Sources/Capture/Features/DocumentTextController.swift, Sources/Capture/Features/DocumentTextReader.swift, Sources/Capture/UI/ResultPanel.swift

  • ✓ Customize capture and document-reading shortcuts, with duplicate-shortcut rejection and registration error feedback. — found

    Files checked: Sources/Capture/Settings/SettingsView.swift, Sources/Capture/Hotkey/HotkeyManager.swift, Sources/Capture/AppDelegate.swift

    Both shortcuts recordable, duplicate rejected, registration errors surfaced.

    Evidence: Sources/Capture/Settings/SettingsView.swift:30, Sources/Capture/Hotkey/HotkeyManager.swift:30, Sources/Capture/AppDelegate.swift:30

    Files from your spec: Sources/Capture/Settings/SettingsView.swift, Sources/Capture/Hotkey/HotkeyManager.swift, Sources/Capture/AppDelegate.swift

  • ✓ Browse image-capable AI models with pricing, search the catalog, refresh it, or enter a model ID manually. — found

    Files checked: Sources/Capture/Settings/SettingsView.swift, Sources/Capture/LLM/ModelCatalog.swift, Sources/Capture/Chat/ChatSession.swift

    Image-capable model list with pricing, search, refresh, and manual ID field.

    Evidence: Sources/Capture/Settings/SettingsView.swift, Sources/Capture/LLM/ModelCatalog.swift

    Files from your spec: Sources/Capture/Settings/SettingsView.swift, Sources/Capture/LLM/ModelCatalog.swift

  • ✓ Save and test an OpenRouter API key, retry failed Keychain access, or explicitly confirm replacement of an inaccessible saved key. — found

    Files checked: Sources/Capture/Settings/SettingsView.swift, Sources/Capture/Settings/Keychain.swift, Sources/Capture/LLM/OpenRouterClient.swift

    Key save/test, Keychain retry, and confirmed replacement of inaccessible key found.

    Evidence: Sources/Capture/Settings/SettingsView.swift, Sources/Capture/Settings/Keychain.swift, Sources/Capture/LLM/OpenRouterClient.swift

    Files from your spec: Sources/Capture/Settings/SettingsView.swift, Sources/Capture/Settings/Keychain.swift, Sources/Capture/LLM/OpenRouterClient.swift

  • ✓ Configure automatic copying, translation display, image size, action approvals, and launch at login. — found

    Files checked: Sources/Capture/Settings/SettingsView.swift, Sources/Capture/Settings/AppSettings.swift, Sources/Capture/UI/TranslationOverlay.swift

    Settings UI and persisted AppSettings cover auto-copy, translation display, max image side, ask-before-acting, and launch at login.

    Evidence: Sources/Capture/Settings/SettingsView.swift:1, Sources/Capture/Settings/AppSettings.swift:1

    Files from your spec: Sources/Capture/Settings/SettingsView.swift, Sources/Capture/Settings/AppSettings.swift

Static AI review of the source. Partial features count half. Actual run verification: Not tested; source presence and a responding demo do not prove the features work.

88 / 100

Good, small improvements suggested

Security screening

3 security issue(s) found; serious issues reduce this score most. No scan guarantees safety.

  • medium · Persistent 'Allow all' bypasses per-action approval · Sources/Capture/Chat/ChatSession.swift

    What to do: Require explicit user confirmation for every action, or at minimum re-prompt when the target app or action type changes, and never persist an 'allow all' decision across turns without a visible indicator.

  • low · Accessibility tree read may capture unintended text · Sources/Capture/Features/DocumentTextReader.swift

    What to do: Add a confirmation step or restrict document reading to user-initiated, clearly scoped windows, and document the data exposure.

  • low · Model output rendered as markdown from untrusted screen content · Sources/Capture/Chat/ChatPanel.swift

    What to do: Sanitize or escape the text before rendering, or render as plain text, and consider stripping markdown links to non-http schemes.

57 / 100

Some setup steps missing

Setup files

Present: README, no environment variables detected, App specification or AGENTS. Missing: known install command, run entry point. Static check in .; code was not executed. Checks README, environment example, install and run scripts, app specification or AGENTS, confirmed How to run it (confirmed) and run manifest (absent). The app was not executed.

  • ✓ README — README.md
  • ✓ Environment example — No environment variables detected
  • ✕ Install command
  • ✕ Run entry point
  • ✓ App specification or AGENTS — AGENTS.md, Saved App specification
  • ✓ Confirmed How to run it
  • ✕ Run manifest

Not checked

Not checked

Dependency & license health

Dependency and license evidence has not been checked.

      Source coverage: Sampled — some eligible source files were omitted

      Dependency vulnerability check: Inconclusive — dependency coverage is incomplete

      Build not run by CookThisApp.

      Suggestions (4)

      Most serious first · Page 1

      • Persistent 'Allow all' bypasses per-action approval

        Medium — could affect users in some situations; plan a fix.

        A user who clicks 'Allow all' once grants the model permission to synthesize arbitrary clicks, keystrokes, and scrolls in the target app for the rest of the conversation, which could be abused by prompt-injected content on screen.

        Review finding — does not by itself block publishing.

        Fix hint: Require explicit user confirmation for every action, or at minimum re-prompt when the target app or action type changes, and never persist an 'allow all' decision across turns without a visible indicator.

        Open

        ai-security · Sources/Capture/Chat/ChatSession.swift
      • Accessibility tree read may capture unintended text

        Low — limited impact; fix during routine maintenance.

        The reader walks the focused window's accessibility tree and may capture sensitive text (e.g., other fields) that the user did not intend to expose, though secure text fields are skipped.

        Review finding — does not by itself block publishing.

        Fix hint: Add a confirmation step or restrict document reading to user-initiated, clearly scoped windows, and document the data exposure.

        Open

        ai-security · Sources/Capture/Features/DocumentTextReader.swift
      • Model output rendered as markdown from untrusted screen content

        Low — limited impact; fix during routine maintenance.

        Screen content is fed to the model and its reply is rendered as markdown; a malicious page could induce the model to emit links or formatting that mislead the user into clicking.

        Review finding — does not by itself block publishing.

        Fix hint: Sanitize or escape the text before rendering, or render as plain text, and consider stripping markdown links to non-http schemes.

        Open

        ai-security · Sources/Capture/Chat/ChatPanel.swift
      • Platform check: macOS selected but no macOS project found

        Low — an improvement hint for the developer, with no confirmed user harm.

        Review finding — does not by itself block publishing.

        Fix hint: Review the platforms in your listing Basics. This information does not affect the score or publication.

        Open

        platform-check ·

      Kitchen Report

      Current run: generation 1

      capture · Version 01a1a71c-6a22-75a9-84db-3e1404610554

      Report complete.

      Live provider analysis

      Ordinary dependency advisories are disclosed warnings and allow publication. Harmful source, malicious packages and unresolved rights or license blockers prevent publication.

      Features found in source are not proof the app works. Actual run verification: Not tested. License and rights eligibility requires the seller’s declarations; dependency license compatibility: Not checked. Checks do not guarantee safety or production readiness.

      Download reportView findings and fixes

      Our estimate: $7–13 in AI usage, plus your own time.

      How we estimate

      We estimate AI usage for repeated edits and context reads, priced at Claude Sonnet 5.5 rates. Repeated reads use the provider's cached-input price.

      The developer sets the price; this estimate is guidance only.

      Formula v4 · AI usage estimate · 5 rework iterations · 16× context · claude-sonnet-5-5 · Price table 2

      Source checks

      Source check ✓ 04/11/2026

      1. 1. Unpacking · ✓ Done
      2. 2. Secret scan · ✓ Done
      3. 3. Safety scan (S1) · ✓ Done
      4. 4. Dependency scan (S2) · ✓ Done
        For developers: code quality

        Improvement hints only; these do not contribute to buyer headline scores.

        Architecture / structure: 83 / 100 (AI structure review)

        Code cleanliness: 82 / 100 (AI maintainability review)

        Test presence: 0 test files found (presence signal only). Coverage: Not checked.

        Source size: 4055 LOC (metric, not a scored check).

        • CaptureCoordinator centralizes capture flow cleanly; debug hooks are well isolated behind DEBUG. Sources/Capture/CaptureCoordinator.swift
        • ChatSession is large; splitting tool execution and streaming into helpers would aid readability. Sources/Capture/Chat/ChatSession.swift
        • TranslationOverlay mixes layout, drawing, and pixel analysis; consider extracting ImagePixels. Sources/Capture/UI/TranslationOverlay.swift

        Help us improve CookThisApp

        0/2000