Inline Notte skill prompt in quickstart#819
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
WalkthroughThis PR makes documentation and tooling changes to enforce a CLI-first Notte workflow: it expands a pre-commit hook glob in Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
✅ Eval complete for commit
Ran evals with prompts: 📉 -0.8 pts · Getting Started — B (76.9/100) from B (77.7) · View metricsPrompt text:
Verdict:
Friction points:
Result: B (76.9/100) delta vs baseline: -0.8 pts
Stats: 1m 53s · 16 tool calls · 1 error · 1 interruption · $0.91 Evaluating agent experience using 2027.dev · View dashboard |
There was a problem hiding this comment.
🧹 Nitpick comments (1)
.pre-commit-config.yaml (1)
85-90: ⚡ Quick winConsider narrowing the file glob pattern for the quickstart hook.
The
files: ^docs/src/pattern will trigger this hook on any change withindocs/src/, including unrelated files. This could slow down commits unnecessarily.Consider restricting to only relevant files:
files: ^docs/src/(quickstart\.mdx|scripts/inline_quickstart_setup_prompt\.py)$This matches the pattern used by the
docs-agent-noticehook above (line 83) and only runs when the source files that matter actually change.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In @.pre-commit-config.yaml around lines 85 - 90, Update the pre-commit hook with id "docs-quickstart-setup-prompt" (name "Inline Quickstart setup prompt") to narrow its files glob so it only runs when the actual quickstart sources change (specifically the quickstart.mdx and the scripts/inline_quickstart_setup_prompt.py under docs/src) rather than on any change in docs/src/, by replacing the broad ^docs/src/ pattern with a pattern that matches only those two files.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In @.pre-commit-config.yaml:
- Around line 85-90: Update the pre-commit hook with id
"docs-quickstart-setup-prompt" (name "Inline Quickstart setup prompt") to narrow
its files glob so it only runs when the actual quickstart sources change
(specifically the quickstart.mdx and the
scripts/inline_quickstart_setup_prompt.py under docs/src) rather than on any
change in docs/src/, by replacing the broad ^docs/src/ pattern with a pattern
that matches only those two files.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 8e792a2c-c8e2-4756-8078-89143a38e919
📒 Files selected for processing (7)
.pre-commit-config.yamldocs/src/docs.jsondocs/src/llms.txtdocs/src/partials/agent-md-notice.mdxdocs/src/quickstart.mdxdocs/src/scripts/generate_llms.pydocs/src/scripts/inline_quickstart_setup_prompt.py
|
| Filename | Overview |
|---|---|
| docs/src/scripts/inline_quickstart_setup_prompt.py | New script; network fetch is graceful in --check mode; regex-based quickstart rewriting is sound with clear failure modes via RuntimeError |
| docs/src/scripts/generate_llms.py | Adds SDK_READING_GATE constant and injects it into the SDK tab section; tab name match against "SDK" is correct per docs.json |
| .pre-commit-config.yaml | Adds docs-quickstart-setup-prompt hook running in --check mode; trigger pattern is broad (^docs/src/) but graceful on network failure |
| docs/src/quickstart.mdx | Top-level JS export removed; prompt moved inline into button handler and accordion; content updated with CLI-first agent guidance |
| packages/notte-sdk/src/notte_sdk/endpoints/sessions.py | Docstring-only changes clarifying element ID usage and scrape return type; no functional changes |
| packages/notte-core/src/notte_core/actions/actions.py | Adds docstring note to FormFillAction warning against guessing field keys; no functional changes |
| docs/src/llms.txt | Updated with richer CLI-first agent guidance including bash workflow and SDK prerequisite gate; content matches generate_llms.py output |
Reviews (2): Last reviewed commit: "Address docs review feedback" | Re-trigger Greptile
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/src/snippets/browser-controls/fill.mdx`:
- Around line 15-16: The example currently contradicts its warning by using a
guessed ID; update the snippet so it demonstrates the correct observe-first
workflow: call observe() to obtain the real element id and then pass that id
into session.execute(type="fill", id=...) (reference the observe() usage and
session.execute invocation), or if you prefer a minimal change replace id="I1"
with a clear placeholder like id="<ID_FROM_OBSERVE>" and add a short inline
comment telling users to replace it with the value returned by observe(), or
remove the ID-based example entirely if you cannot show the observe step.
In `@docs/src/testers/browser-controls/click.py`:
- Around line 12-13: The example uses session.execute(type="click", id="B1")
right after a warning not to guess IDs, which contradicts the guidance; fix it
by showing the correct observe-first workflow: call
session.execute(type="observe") (or the project's observe API) to obtain the
real element ID and then pass that returned ID into
session.execute(type="click", id=...) or, if you can't demonstrate observe
output, replace id="B1" with a clear placeholder like id="<ID_FROM_OBSERVE>" and
add a short comment that users must replace it with the ID returned by
observe(); reference session.execute and observe() when editing the example.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: f5040817-d090-47bd-84c8-7744f9a63a4e
📒 Files selected for processing (12)
docs/src/integrations/claude-code-ai-agents.mdxdocs/src/llms.txtdocs/src/partials/agent-md-notice.mdxdocs/src/quickstart.mdxdocs/src/scripts/generate_llms.pydocs/src/scripts/inline_quickstart_setup_prompt.pydocs/src/snippets/browser-controls/click.mdxdocs/src/snippets/browser-controls/direct_attributes.mdxdocs/src/snippets/browser-controls/fill.mdxdocs/src/testers/browser-controls/click.pydocs/src/testers/browser-controls/direct_attributes.pydocs/src/testers/browser-controls/fill.py
✅ Files skipped from review due to trivial changes (6)
- docs/src/testers/browser-controls/direct_attributes.py
- docs/src/testers/browser-controls/fill.py
- docs/src/snippets/browser-controls/direct_attributes.mdx
- docs/src/snippets/browser-controls/click.mdx
- docs/src/integrations/claude-code-ai-agents.mdx
- docs/src/llms.txt
🚧 Files skipped from review as they are similar to previous changes (2)
- docs/src/partials/agent-md-notice.mdx
- docs/src/scripts/generate_llms.py
There was a problem hiding this comment.
Actionable comments posted: 4
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/src/sdk-reference/nottefunction/index.mdx`:
- Around line 202-203: The phrase "Update the workflow with a a new code
version" in the documentation contains a duplicated article; locate the Card
component text instances that contain the exact string "Update the workflow with
a a new code version" (appearing around the current occurrences) and change them
to "Update the workflow with a new code version" in both places (the occurrence
at ~202 and the one at ~211-212) so the description is not duplicated; ensure
both Card text nodes are updated identically.
In `@docs/src/sdk-reference/remoteagentfallback/index.mdx`:
- Around line 13-15: The snippet still hard-codes IDs for actions.Click; change
the example to call session.observe() (or observe()) first, extract the live
element IDs from the observe() result, and pass those dynamic IDs into
session.execute(actions.Click(...)) instead of literals like "B1"/"L3" so the
example demonstrates using real observed IDs with the Click action.
In `@docs/src/sdk-reference/remotesession/execute.mdx`:
- Around line 21-27: The example uses hard-coded IDs ("B1"/"I1") while advising
not to guess IDs; change the examples to show obtaining IDs from observe() and
then passing them to session.execute — e.g., call session.observe(), extract the
relevant element id(s) from the returned observation (use the same variable
names shown in the doc) and use those variables when calling
session.execute(type="click", id=observedId) and session.execute(type="fill",
id=observedInputId, value="...") so the snippet demonstrates sourcing IDs from
observe() rather than hard-coded strings; update both the click and fill
examples (and the similar instances at lines 50-52) to reference the
observation-derived IDs and keep the warning text intact.
In `@docs/src/sdk-reference/remotesession/scrape.mdx`:
- Line 75: The return description currently claims "An Observation object..."
while the declared return is a UnionType of StructuredData[BaseModel],
BaseModel, Dict[str, Any], str, or list[ImageData]; update the prose to match
the union by replacing the sentence mentioning Observation with a concise
enumeration like "Returns one of: StructuredData[BaseModel], BaseModel,
Dict[str, Any], str, or list[ImageData] (see UnionType)" or alternatively change
the declared type to `Observation` if the function actually always returns an
Observation; ensure the text references the same symbol shown in the signature
(UnionType or Observation) so the docs are consistent.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 2bd1a170-bd76-45f5-9557-f1a5fe93a92e
📒 Files selected for processing (69)
docs/src/sdk-reference/agentsclient/async_watch_logs.mdxdocs/src/sdk-reference/agentsclient/async_watch_logs_and_wait.mdxdocs/src/sdk-reference/agentsclient/create_function.mdxdocs/src/sdk-reference/agentsclient/function_code.mdxdocs/src/sdk-reference/agentsclient/index.mdxdocs/src/sdk-reference/agentsclient/list.mdxdocs/src/sdk-reference/agentsclient/run.mdxdocs/src/sdk-reference/agentsclient/run_custom.mdxdocs/src/sdk-reference/agentsclient/start.mdxdocs/src/sdk-reference/agentsclient/status.mdxdocs/src/sdk-reference/agentsclient/stop.mdxdocs/src/sdk-reference/agentsclient/wait.mdxdocs/src/sdk-reference/agentsclient/watch_logs.mdxdocs/src/sdk-reference/agentsclient/watch_logs_and_wait.mdxdocs/src/sdk-reference/misc/domnode.mdxdocs/src/sdk-reference/misc/formfillaction.mdxdocs/src/sdk-reference/misc/interactiondomnode.mdxdocs/src/sdk-reference/misc/nottefunction.mdxdocs/src/sdk-reference/misc/nottepersona.mdxdocs/src/sdk-reference/misc/nottevault.mdxdocs/src/sdk-reference/misc/remotefilestorage.mdxdocs/src/sdk-reference/misc/remotesession.mdxdocs/src/sdk-reference/notteclient/index.mdxdocs/src/sdk-reference/notteclient/scrape.mdxdocs/src/sdk-reference/nottefunction/fork.mdxdocs/src/sdk-reference/nottefunction/get_run.mdxdocs/src/sdk-reference/nottefunction/index.mdxdocs/src/sdk-reference/nottefunction/replay.mdxdocs/src/sdk-reference/nottefunction/run.mdxdocs/src/sdk-reference/nottefunction/stop_run.mdxdocs/src/sdk-reference/nottepersona/aemails.mdxdocs/src/sdk-reference/nottepersona/asms.mdxdocs/src/sdk-reference/nottepersona/create_number.mdxdocs/src/sdk-reference/nottepersona/delete_number.mdxdocs/src/sdk-reference/nottepersona/emails.mdxdocs/src/sdk-reference/nottepersona/index.mdxdocs/src/sdk-reference/nottepersona/sms.mdxdocs/src/sdk-reference/nottevault/credential_fields_to_dict.mdxdocs/src/sdk-reference/nottevault/get_credit_card.mdxdocs/src/sdk-reference/nottevault/get_credit_card_async.mdxdocs/src/sdk-reference/nottevault/index.mdxdocs/src/sdk-reference/nottevault/replace_credentials.mdxdocs/src/sdk-reference/remoteagent/async_watch_logs_and_wait.mdxdocs/src/sdk-reference/remoteagent/index.mdxdocs/src/sdk-reference/remoteagent/replay.mdxdocs/src/sdk-reference/remoteagent/run.mdxdocs/src/sdk-reference/remoteagent/start.mdxdocs/src/sdk-reference/remoteagent/status.mdxdocs/src/sdk-reference/remoteagent/stop.mdxdocs/src/sdk-reference/remoteagent/wait.mdxdocs/src/sdk-reference/remoteagent/watch_logs.mdxdocs/src/sdk-reference/remoteagent/watch_logs_and_wait.mdxdocs/src/sdk-reference/remoteagentfallback/index.mdxdocs/src/sdk-reference/remotefilestorage/index.mdxdocs/src/sdk-reference/remotefilestorage/list_downloaded_files.mdxdocs/src/sdk-reference/remotefilestorage/list_uploaded_files.mdxdocs/src/sdk-reference/remotesession/debug_info.mdxdocs/src/sdk-reference/remotesession/execute.mdxdocs/src/sdk-reference/remotesession/get_cookies.mdxdocs/src/sdk-reference/remotesession/index.mdxdocs/src/sdk-reference/remotesession/observe.mdxdocs/src/sdk-reference/remotesession/replay.mdxdocs/src/sdk-reference/remotesession/scrape.mdxdocs/src/sdk-reference/remotesession/set_cookies.mdxdocs/src/sdk-reference/remotesession/status.mdxdocs/src/sdk-reference/remotesession/viewer_notebook.mdxpackages/notte-core/src/notte_core/actions/actions.pypackages/notte-sdk/src/notte_sdk/agent_fallback.pypackages/notte-sdk/src/notte_sdk/endpoints/sessions.py
✅ Files skipped from review due to trivial changes (45)
- docs/src/sdk-reference/agentsclient/status.mdx
- docs/src/sdk-reference/agentsclient/wait.mdx
- docs/src/sdk-reference/remotesession/status.mdx
- docs/src/sdk-reference/agentsclient/create_function.mdx
- docs/src/sdk-reference/nottevault/credential_fields_to_dict.mdx
- docs/src/sdk-reference/agentsclient/stop.mdx
- docs/src/sdk-reference/remoteagent/async_watch_logs_and_wait.mdx
- docs/src/sdk-reference/agentsclient/async_watch_logs_and_wait.mdx
- docs/src/sdk-reference/nottevault/get_credit_card_async.mdx
- docs/src/sdk-reference/nottefunction/fork.mdx
- docs/src/sdk-reference/agentsclient/function_code.mdx
- docs/src/sdk-reference/agentsclient/run_custom.mdx
- docs/src/sdk-reference/agentsclient/async_watch_logs.mdx
- docs/src/sdk-reference/misc/formfillaction.mdx
- docs/src/sdk-reference/remoteagent/status.mdx
- docs/src/sdk-reference/agentsclient/watch_logs.mdx
- docs/src/sdk-reference/nottefunction/replay.mdx
- docs/src/sdk-reference/remoteagent/replay.mdx
- docs/src/sdk-reference/remotesession/debug_info.mdx
- docs/src/sdk-reference/agentsclient/start.mdx
- docs/src/sdk-reference/remotefilestorage/list_uploaded_files.mdx
- docs/src/sdk-reference/nottevault/replace_credentials.mdx
- docs/src/sdk-reference/nottepersona/aemails.mdx
- docs/src/sdk-reference/remoteagent/start.mdx
- docs/src/sdk-reference/remoteagent/wait.mdx
- docs/src/sdk-reference/agentsclient/run.mdx
- docs/src/sdk-reference/nottepersona/delete_number.mdx
- docs/src/sdk-reference/misc/remotefilestorage.mdx
- docs/src/sdk-reference/remoteagent/watch_logs_and_wait.mdx
- docs/src/sdk-reference/agentsclient/list.mdx
- docs/src/sdk-reference/nottepersona/emails.mdx
- docs/src/sdk-reference/misc/nottevault.mdx
- docs/src/sdk-reference/agentsclient/watch_logs_and_wait.mdx
- docs/src/sdk-reference/remotefilestorage/list_downloaded_files.mdx
- packages/notte-core/src/notte_core/actions/actions.py
- docs/src/sdk-reference/misc/remotesession.mdx
- packages/notte-sdk/src/notte_sdk/endpoints/sessions.py
- packages/notte-sdk/src/notte_sdk/agent_fallback.py
- docs/src/sdk-reference/remoteagent/watch_logs.mdx
- docs/src/sdk-reference/misc/interactiondomnode.mdx
- docs/src/sdk-reference/notteclient/index.mdx
- docs/src/sdk-reference/remotesession/observe.mdx
- docs/src/sdk-reference/nottevault/index.mdx
- docs/src/sdk-reference/misc/domnode.mdx
- docs/src/sdk-reference/misc/nottepersona.mdx
|
@greptileai review |
There was a problem hiding this comment.
LGTM
Both previously flagged issues are fixed: the --check flag is now present in the docs-quickstart-setup-prompt hook entry, and the CLI-first guidance has been moved into AGENT_READING_GUIDANCE/SDK_READING_GATE constants in generate_llms.py so it survives regeneration. No new issues in the follow-up commits.
Tag @mendral-app with feedback or questions. View session
Summary
Tests
Summary by CodeRabbit
Note
Inlines the Notte browser skill documentation directly into the quickstart setup prompt, agent-facing notices, and
llms.txt. Adds a pre-commit hook (docs-quickstart-setup-prompt) backed by a newinline_quickstart_setup_prompt.pyscript to keep inlined content synchronized from the upstream notte-skills repo. Updates all agent-facing copy to enforce a CLI-first "generate then edit" workflow before any SDK use. Also stabilizes SDK reference agent links with idempotent postprocessing.Written by Mendral for commit 66318b0.