Summary
The PR Visual Recap workflow installs @agent-native/core on every pull-request run. The package currently pulls the entire plan web-app dependency tree — ~895 packages, 925MB of node_modules — even though every command the CI workflow invokes is pure Node. On a GitHub-hosted ubuntu-latest runner the cold install takes ~2 minutes per PR push, which dominates the recap job's setup time.
Measurements
@agent-native/[email protected], Node 22:
|
packages |
node_modules |
install (local, warm network) |
install (ubuntu-latest, observed) |
npm install |
895 |
925MB |
93s |
~121s |
npm install --ignore-scripts |
895 |
925MB |
80s |
— |
The tree includes a full web app: react-router, @radix-ui/*, @sentry/browser+@sentry/node, @codemirror/*, @assistant-ui/*, @tiptap/*, playwright/playwright-core, sharp, @resvg/resvg-js, @libsql/client, @neondatabase/serverless, etc.
Why this seems avoidable
The commands the distributed pr-visual-recap.yml workflow actually runs are pure Node + git/https:
recap collect-diff · scan · build-prompt · publish · comment · check · usage · agent-summary · block-reference
I verified all of them work from an --ignore-scripts install (no sharp/resvg native binaries) — consistent with the workflow's own dogfood path, which already installs with --ignore-scripts. The heavy pieces appear to serve only:
playwright / sharp / @resvg/resvg-js → recap shot (screenshot embedding — optional; we run link-only comments)
- the React/router/editor stack → the plan web app, not the CLI
Suggestions (any of these would help)
- Publish a slim CLI-only package (e.g.
@agent-native/recap-cli) that the workflow installs, with the web-app stack out of its dependency graph.
- Or move screenshot/browser deps (
playwright, sharp, @resvg/resvg-js) to optionalDependencies so CI can --omit=optional.
- Or document
--ignore-scripts as the supported CI install mode in the workflow template (we've adopted it downstream; ~13s saved, but the 895-package download remains).
Related install noise (same runs)
Happy to provide timing logs or test a canary build.
Summary
The PR Visual Recap workflow installs
@agent-native/coreon every pull-request run. The package currently pulls the entire plan web-app dependency tree — ~895 packages, 925MB of node_modules — even though every command the CI workflow invokes is pure Node. On a GitHub-hostedubuntu-latestrunner the cold install takes ~2 minutes per PR push, which dominates the recap job's setup time.Measurements
@agent-native/[email protected], Node 22:npm installnpm install --ignore-scriptsThe tree includes a full web app:
react-router,@radix-ui/*,@sentry/browser+@sentry/node,@codemirror/*,@assistant-ui/*,@tiptap/*,playwright/playwright-core,sharp,@resvg/resvg-js,@libsql/client,@neondatabase/serverless, etc.Why this seems avoidable
The commands the distributed
pr-visual-recap.ymlworkflow actually runs are pure Node + git/https:recap collect-diff · scan · build-prompt · publish · comment · check · usage · agent-summary · block-referenceI verified all of them work from an
--ignore-scriptsinstall (no sharp/resvg native binaries) — consistent with the workflow's own dogfood path, which already installs with--ignore-scripts. The heavy pieces appear to serve only:playwright/sharp/@resvg/resvg-js→recap shot(screenshot embedding — optional; we run link-only comments)Suggestions (any of these would help)
@agent-native/recap-cli) that the workflow installs, with the web-app stack out of its dependency graph.playwright,sharp,@resvg/resvg-js) tooptionalDependenciesso CI can--omit=optional.--ignore-scriptsas the supported CI install mode in the workflow template (we've adopted it downstream; ~13s saved, but the 895-package download remains).Related install noise (same runs)
ERESOLVE overriding peer dependencywarnings: core pins@tiptap/*@3.27.1while@tiptap/[email protected]optionally pulls@tiptap/[email protected]/[email protected], whose peers want@tiptap/[email protected].[email protected],[email protected],[email protected],[email protected].Happy to provide timing logs or test a canary build.