Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add OP Scan Block Explorer #1102

Closed
wants to merge 53 commits into from

Conversation

saimeunt
Copy link

Description

This PR is adding a section about OP Scan, a tailor-made Open Source Block Explorer for the OP Stack.
The added section is explaining how to run locally the explorer against either your local devnet or any other OP Stack based chain.
While the primary focus of OP Scan is providing a lightweight explorer you can run locally on a a laptop, we might consider adding more resources on how to host the explorer in production later on.

Additional context

OP Scan is under active development and is looking forward to add key features to complete its goal as being a lightweight explorer aligned with the Superchan vision.
You can test a live version of OP Scan deployed against OP Sepolia at opscan.co.

@saimeunt saimeunt requested a review from a team as a code owner November 11, 2024 03:02
Copy link

netlify bot commented Nov 11, 2024

Deploy Preview for docs-optimism ready!

Name Link
🔨 Latest commit 4a9df6f
🔍 Latest deploy log https://app.netlify.com/sites/docs-optimism/deploys/673cb2b8b3c4fa0008a51570
😎 Deploy Preview https://deploy-preview-1102--docs-optimism.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

Copy link
Contributor

coderabbitai bot commented Nov 11, 2024

📝 Walkthrough
📝 Walkthrough

Walkthrough

The changes in this pull request involve the addition of a new key-value pair in the JSON file located at pages/builders/chain-operators/tools/_meta.json. The entry "op-scan": "OP Scan Block Explorer" is added to the existing list of tools related to chain operators. Additionally, a new documentation file op-scan.mdx is introduced, providing comprehensive instructions for installing and configuring the OP Scan transaction explorer for the OP Stack chain.

Changes

File Path Change Summary
pages/builders/chain-operators/tools/_meta.json Added new entry: "op-scan": "OP Scan Block Explorer"
pages/builders/chain-operators/tools/op-scan.mdx New documentation file for OP Scan, detailing installation and configuration.

Possibly related PRs

  • Create chain-monitoring.mdx #764: This PR adds a new key-value pair in the same JSON file (pages/builders/chain-operators/tools/_meta.json), indicating a related enhancement to the metadata structure for chain operators.
  • adding op-conductor documentation #818: Similar to the main PR, this PR also introduces a new key-value pair in the same JSON file (pages/builders/chain-operators/tools/_meta.json), expanding the metadata for chain operators.
  • op-deployer + opcm documentation #934: This PR modifies the same JSON file (pages/builders/chain-operators/tools/_meta.json) by adding a new entry and updating an existing label, which relates to the overall structure and organization of chain operator tools.
  • Op deployer updates #1020: This PR updates the documentation for op-deployer, which is relevant as it discusses the deployment of tools within the OP Stack, similar to the addition of the OP Scan tool in the main PR.

Suggested labels

documentation, tutorial

Suggested reviewers

  • sbvegan
  • zainbacchus

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between 72a4abc and 5828dc0.

📒 Files selected for processing (1)
  • pages/builders/chain-operators/tools/_meta.json (1 hunks)
🔇 Additional comments (1)
pages/builders/chain-operators/tools/_meta.json (1)

4-4: LGTM - Entry follows established patterns.

The new entry:

  • Uses consistent kebab-case naming
  • Provides a clear, descriptive value
  • Maintains alphabetical ordering
  • Follows the "op-" prefix pattern used by other tools

@@ -1,6 +1,7 @@
{
"chain-monitoring": "Chain monitoring",
"explorer": "Block explorer",
"op-scan": "OP Scan Block Explorer",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codebase verification

Missing documentation file for OP Scan Block Explorer

The _meta.json file includes an entry for "op-scan" but there's no corresponding documentation file in the directory. The existing explorer.mdx is specifically about deploying Blockscout and is unrelated to OP Scan. You should:

  • Add a documentation file for OP Scan Block Explorer in the pages/builders/chain-operators/tools/ directory
  • Keep both entries in _meta.json as they represent different tools (Blockscout and OP Scan)
🔗 Analysis chain

Please clarify the relationship with existing explorer entry.

The addition follows the correct format and maintains alphabetical ordering. However, there's already an existing "explorer" entry. Could you clarify if:

  1. OP Scan is meant to be an additional explorer option, or
  2. OP Scan should replace the existing "explorer" entry?
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check if there's a corresponding documentation file for both explorers
echo "Checking for explorer documentation files..."
fd --type f "explorer.md|op-scan.md" pages/builders/chain-operators/tools/

Length of output: 225


Script:

#!/bin/bash
# Let's check the content of the explorer.mdx to see if it's related to OP Scan
echo "Content of explorer.mdx:"
cat pages/builders/chain-operators/tools/explorer.mdx

# Also check if there's a new op-scan file that might have a different extension
echo -e "\nChecking for op-scan files with any extension:"
fd "op-scan" pages/builders/chain-operators/tools/

Length of output: 2457

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Outside diff range and nitpick comments (4)
pages/builders/chain-operators/tools/op-scan.mdx (4)

46-46: Improve writing style by varying phrase usage.

The repeated use of "need to" makes the text repetitive. Consider varying the language:

-In particular you will need to provide configuration for both L1 and L2 chains:
+In particular, configure both L1 and L2 chains:

-You will also need to provide your L1 contracts addresses:
+Additionally, specify your L1 contract addresses:

-If you want to be able to use the Write Contract feature on verified contracts, you will also need to provide a [Reown](https://docs.reown.com/) project ID.
+To enable the Write Contract feature on verified contracts, specify a [Reown](https://docs.reown.com/) project ID.

Also applies to: 59-59, 71-71

🧰 Tools
🪛 LanguageTool

[uncategorized] ~46-~46: A comma is probably missing here.
Context: ...d populate it with your own values. In particular you will need to provide configuration ...

(MISSING_COMMA_AFTER_INTRODUCTORY_PHRASE)


79-79: Improve technical clarity and grammar.

  1. "setup" as a verb should be "set up"
  2. The phrase about RPC load could be more specific
-To run the indexer, you first need to setup your `DATABASE_URL`
+To run the indexer, you first need to set up your `DATABASE_URL`

-Indexing a blockchain is putting a heavy load on the RPC as you need to perform a large number of JSON-RPC requests to fully index a block
+Indexing a blockchain puts heavy load on the RPC due to numerous JSON-RPC requests required to fully index each block

Also applies to: 113-114

🧰 Tools
🪛 LanguageTool

[grammar] ~79-~79: The word “setup” is a noun. The verb is spelled with a space.
Context: ... To run the indexer, you first need to setup your DATABASE_URL in .env.local as ...

(NOUN_VERB_CONFUSION)


153-154: Add missing comma after introductory word.

Add a comma after "Alternatively" for proper punctuation.

-Alternatively you can launch the explorer in dev mode
+Alternatively, you can launch the explorer in dev mode

49-55: Add security notes for API keys and database configuration.

Consider adding security notes about:

  1. Protecting API keys in production environments
  2. Database security considerations when moving beyond local development

Example note to add:

> **Security Note**: Ensure that API keys and database credentials are properly secured in production environments. Consider using environment variables or secure secret management solutions.

Also applies to: 82-85

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between 5828dc0 and e33b435.

📒 Files selected for processing (1)
  • pages/builders/chain-operators/tools/op-scan.mdx (1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
pages/builders/chain-operators/tools/op-scan.mdx (1)

Pattern **/*.mdx: "ALWAYS review Markdown content THOROUGHLY with the following criteria:

  • Use proper nouns in place of personal pronouns like 'We' and 'Our' to maintain consistency in communal documentation.
  • Avoid gender-specific language and use the imperative form.
  • Monitor capitalization for emphasis. Avoid using all caps, italics, or bold for emphasis.
  • Ensure proper nouns are capitalized in sentences.
  • Apply the Oxford comma.
  • Use proper title case for buttons, tab names, page names, and links. Sentence case should be used for body content and short phrases, even in links.
  • Use correct spelling and grammar at all times (IMPORTANT).
  • For H1, H2, and H3 headers:
    1. Use sentence case, capitalizing only the first word.
    2. Preserve the capitalization of proper nouns, technical terms, and acronyms as defined in the 'nouns.txt' file located in the root directory of the project.
    3. Do not automatically lowercase words that appear in the 'nouns.txt' file, regardless of their position in the header.
  • Flag any headers that seem to inconsistently apply these rules for manual review.
  • When reviewing capitalization, always refer to the 'nouns.txt' file for the correct capitalization of proper nouns and technical terms specific to the project.
    "
🪛 LanguageTool
pages/builders/chain-operators/tools/op-scan.mdx

[typographical] ~12-~12: The conjunction “so that” does not require a comma.
Context: ...E). It's purpose built to be lightweight, so that anyone can run it locally next to their...

(SO_THAT_UNNECESSARY_COMMA)


[uncategorized] ~46-~46: A comma is probably missing here.
Context: ...d populate it with your own values. In particular you will need to provide configuration ...

(MISSING_COMMA_AFTER_INTRODUCTORY_PHRASE)


[style] ~59-~59: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...https://www.infura.io/). You will also need to provide your L1 contracts addresses: `...

(REP_NEED_TO_VB)


[style] ~67-~67: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: .../L1Contract.json`. Note that you always need to provide the proxy address, not the unde...

(REP_NEED_TO_VB)


[style] ~71-~71: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...re on verified contracts, you will also need to provide a [Reown](https://docs.reown.co...

(REP_NEED_TO_VB)


[grammar] ~79-~79: The word “setup” is a noun. The verb is spelled with a space.
Context: ... To run the indexer, you first need to setup your DATABASE_URL in .env.local as ...

(NOUN_VERB_CONFUSION)


[uncategorized] ~100-~100: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ... blocks getting indexed in your terminal and you can explore the state of your local...

(COMMA_COMPOUND_SENTENCE)


[style] ~113-~113: Specify a number, remove phrase, or simply use “many” or “numerous”
Context: ... load on the RPC as you need to perform a large number of JSON-RPC requests to fully index a bloc...

(LARGE_NUMBER_OF)


[uncategorized] ~147-~147: Use a comma before “and” if it connects two independent clauses (unless they are closely connected and short).
Context: ...` Make sure your local chain is started and the indexer is running, then launch the...

(COMMA_COMPOUND_SENTENCE_2)


[typographical] ~152-~152: Consider adding a comma after ‘Alternatively’ for more clarity.
Context: .../localhost:3000` sh pnpm start Alternatively you can launch the explorer in dev mode...

(RB_LY_COMMA)

# 🔎 OP Scan

[OP Scan](https://github.com/walnuthq/op-scan) is a transaction explorer tailored specifically for the [OP Stack](https://docs.optimism.io/builders/chain-operators/tutorials/create-l2-rollup) and the [Superchain vision](https://www.youtube.com/watch?v=O6vYNgrQ1LE).
It's purpose built to be lightweight, so that anyone can run it locally next to their OP Stack nodes, when working on a new rollup.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Fix grammatical errors in the introduction.

There are two grammatical issues in this line:

  1. "It's" should be "Its" (possessive form)
  2. Remove the comma before "so that"
-It's purpose built to be lightweight, so that anyone can run it locally next to their OP Stack nodes, when working on a new rollup.
+Its purpose built to be lightweight so that anyone can run it locally next to their OP Stack nodes when working on a new rollup.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
It's purpose built to be lightweight, so that anyone can run it locally next to their OP Stack nodes, when working on a new rollup.
Its purpose built to be lightweight so that anyone can run it locally next to their OP Stack nodes when working on a new rollup.
🧰 Tools
🪛 LanguageTool

[typographical] ~12-~12: The conjunction “so that” does not require a comma.
Context: ...E). It's purpose built to be lightweight, so that anyone can run it locally next to their...

(SO_THAT_UNNECESSARY_COMMA)

@krofax
Copy link
Contributor

krofax commented Nov 12, 2024

@saimeunt I cannot access the OPscan website.
Please let know when it's live, so i can pick this up.

zainbacchus and others added 22 commits November 19, 2024 16:45
Added context of being able to interop w/itself.

eg interop works for uni->opm, opm->uni, but also opm->opm, uni->uni, etc.
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Short Description of Changes:
- Corrected grammatical errors in descriptions.
- Fixed spelling of "copyrighted".
- Corrected possessive form from "someones" to "someone's".
The missing space between the quotation marks and the word "button".
Add context of mesh cluster
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Transition from title case to sentence case
There is a small typo in the heading for the "How to Use a Single Reusable Content Components" section. The word "Components" should be singular, as the section is referring to a single component.
BalrajHariharanA and others added 24 commits November 19, 2024 16:45
… WipCallout.tsx

This pull request addresses an issue with the JSDoc comments for the WipCallout function. The original JSDoc was overly verbose, included redundant information, and misused the @param directive. The updated JSDoc provides a more precise and compact description while adhering to standard documentation practices.
Fix invalid stroke-width attribute in Loader component
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Fix incorrect preposition in the description of op-proposer service
updated the l2BlockTime to < from <=
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 16

🧹 Outside diff range and nitpick comments (32)
pages/builders.mdx (1)

18-18: Consider updating the card title to reflect the new organization

Since the content has been moved under the app developers section, consider whether the card title "Wallets & CEXs" should be updated to better reflect its new location and avoid confusion.

Consider one of these alternatives:

-  <Card title="Wallets & CEXs" href="/builders/app-developers/overview" />
+  <Card title="Wallet & Exchange Integration" href="/builders/app-developers/overview" />

or

-  <Card title="Wallets & CEXs" href="/builders/app-developers/overview" />
+  <Card title="Wallets & Exchanges Overview" href="/builders/app-developers/overview" />
.coderabbit.yaml (1)

8-8: Consider keeping changed files summary enabled

Disabling changed_files_summary might make it harder for reviewers to get a quick overview of changes in PRs. This is particularly important for PRs that modify multiple files or contain complex changes.

Consider keeping this enabled or implementing an alternative way to provide a high-level overview of changes.

pages/builders/app-developers/tutorials.mdx (1)

Line range hint 14-28: Standardize capitalization and terminology in card titles

The card titles need consistent capitalization of technical terms and unified terminology:

  • Use "ERC-20" instead of "erc 20"
  • Use "OP Stack" consistently instead of mixing with "op mainnet"
  • Capitalize "Ethereum" and other proper nouns
- <Card title="Bridging erc 20 tokens to OP Stack with viem" href="/builders/app-developers/tutorials/cross-dom-bridge-erc20" />
+ <Card title="Bridging ERC-20 tokens to OP Stack with Viem" href="/builders/app-developers/tutorials/cross-dom-bridge-erc20" />

- <Card title="Bridging eth to op mainnet with viem" href="/builders/app-developers/tutorials/cross-dom-bridge-eth" />
+ <Card title="Bridging ETH to OP Stack with Viem" href="/builders/app-developers/tutorials/cross-dom-bridge-eth" />

- <Card title="Communicating between OP Stack and ethereum in solidity" href="/builders/app-developers/tutorials/cross-dom-solidity" />
+ <Card title="Communicating between OP Stack and Ethereum in Solidity" href="/builders/app-developers/tutorials/cross-dom-solidity" />

- <Card title="Triggering op mainnet transactions from ethereum" href="/builders/app-developers/tutorials/send-tx-from-eth" />
+ <Card title="Triggering OP Stack transactions from Ethereum" href="/builders/app-developers/tutorials/send-tx-from-eth" />

- <Card title="Bridging your custom erc 20 token using the standard bridge" href="/builders/app-developers/tutorials/standard-bridge-custom-token" />
+ <Card title="Bridging your custom ERC-20 token using the Standard Bridge" href="/builders/app-developers/tutorials/standard-bridge-custom-token" />

- <Card title="Bridging your standard erc 20 token using the standard bridge" href="/builders/app-developers/tutorials/standard-bridge-standard-token" />
+ <Card title="Bridging your standard ERC-20 token using the Standard Bridge" href="/builders/app-developers/tutorials/standard-bridge-standard-token" />
🧰 Tools
🪛 LanguageTool

[uncategorized] ~11-~11: The grammatical number of this noun doesn’t look right. Consider replacing it.
Context: ... using the standard bridge. You'll find tutorial to help you understand and work with th...

(AI_EN_LECTOR_REPLACEMENT_NOUN_NUMBER)

notes/fix-redirects.md (3)

9-34: Fix heading format and consider adding exit code information

The content is well-structured, but there's a minor formatting issue to fix. Also, it would be helpful to specify the script's exit code behavior.

  1. Fix the heading format:
-##  Checking for broken links
+## Checking for broken links
  1. Consider adding information about exit codes, for example:
The script exits with:
- 0: No broken links found
- 1: Broken links detected
🧰 Tools
🪛 Markdownlint

9-9: null
Multiple spaces after hash on atx style heading

(MD019, no-multiple-space-atx)


62-77: Clean up formatting in the Best Practices section

The content is excellent, but let's improve the formatting for better readability.

 ## Best practices

 1.  Before running
-
   *   Commit current changes
   *   Review `_redirects` file is up-to-date
   *   Run `check-redirects` first to preview changes
-
-
 2.  After running
-
   *   Review git diff of updated files
   *   Test updated links locally
   *   Commit changes with descriptive message
-
-
🧰 Tools
🪛 Markdownlint

67-67: Expected: 0; Actual: 2
Unordered list indentation

(MD007, ul-indent)


68-68: Expected: 0; Actual: 2
Unordered list indentation

(MD007, ul-indent)


69-69: Expected: 0; Actual: 2
Unordered list indentation

(MD007, ul-indent)


74-74: Expected: 0; Actual: 2
Unordered list indentation

(MD007, ul-indent)


75-75: Expected: 0; Actual: 2
Unordered list indentation

(MD007, ul-indent)


76-76: Expected: 0; Actual: 2
Unordered list indentation

(MD007, ul-indent)


78-83: Enhance the Common Issues section

While the content is helpful, consider these improvements:

  1. Fix grammar and add more detail:
 ## Common issues

-*   Script fails: Ensure `_redirects` file exists in public folder, it should always be there!
-*   No broken links found: Verify `_redirects` entries are correct.
+*   Script fails: Ensure the `_redirects` file exists in the public folder (it should always be there!)
+*   No broken links found: 
+    * Verify the `_redirects` entries are correct
+    * Check if the links match exactly (they are case-sensitive)
+    * Ensure you're running the script from the project root

Would you like me to help expand this section with more common scenarios and troubleshooting steps?

🧰 Tools
🪛 LanguageTool

[uncategorized] ~82-~82: You might be missing the article “the” here.
Context: ...ils: Ensure _redirects file exists in public folder, it should always be there! * ...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

pages/index.mdx (2)

25-25: Update card title to follow documentation guidelines.

Replace "&" with "and" to maintain consistency with documentation standards:

-  <Card title="Wallets & CEXs" href="/builders/app-developers/overview" icon={<img src="img/icons/wallet.svg" />} />
+  <Card title="Wallets and CEXs" href="/builders/app-developers/overview" icon={<img src="img/icons/wallet.svg" />} />

33-33: Consider using more professional language.

Replace "amazing" with a more formal alternative such as "powerful", "essential", or "comprehensive":

-Check out these amazing tools, so you can get building with Optimism.
+Check out these essential tools to start building with Optimism.
🧰 Tools
🪛 LanguageTool

[style] ~33-~33: Consider using a more formal and expressive alternative to ‘amazing’.
Context: ...ds> ## Featured tools Check out these amazing tools, so you can get building with Opt...

(AWESOME)

pages/chain/getting-started.mdx (4)

Line range hint 51-51: Update the differences link to use the new path structure

The link [here](differences) should be updated to use the full path /stack/differences for consistency with the earlier link change.

-The list of other differences is [here](differences).
+The list of other differences is [here](/stack/differences).

Line range hint 53-59: Improve formatting of development stack links

For better readability and consistency, consider using a bullet list with proper link text formatting.

-*   [Apeworx](https://www.apeworx.io/)
-*   [Brownie](https://eth-brownie.readthedocs.io/en/stable/install.html)
-*   [Foundry](https://getfoundry.sh/)
-*   [Hardhat](https://hardhat.org/)
-*   [Remix](https://remix.ethereum.org)
-*   [Truffle](https://trufflesuite.com/)
-*   [Waffle](https://getwaffle.io/)
+* [ApeWorx](https://www.apeworx.io/) - Smart contract development framework
+* [Brownie](https://eth-brownie.readthedocs.io/en/stable/install.html) - Python-based development framework
+* [Foundry](https://getfoundry.sh/) - Fast toolkit for Ethereum application development
+* [Hardhat](https://hardhat.org/) - Development environment for Ethereum software
+* [Remix](https://remix.ethereum.org) - Browser-based IDE
+* [Truffle](https://trufflesuite.com/) - Development environment, testing framework and asset pipeline
+* [Waffle](https://getwaffle.io/) - Library for writing and testing smart contracts

Line range hint 1-7: Apply consistent capitalization in frontmatter

According to the coding guidelines, proper nouns should be capitalized consistently.

---
-title: Getting started developing for OP Mainnet
+title: Getting Started Developing for OP Mainnet
lang: en-US
-description: Learn the basics of OP Mainnet development.
+description: Learn the basics of OP Mainnet development
---

Line range hint 9-13: Improve clarity in the introduction

The introduction uses passive voice and could be more direct. Also, ensure proper capitalization of technical terms.

-# Getting started developing for OP Mainnet
+# Getting Started Developing for OP Mainnet

-This guide explains the basics of OP Mainnet development.
-OP Mainnet is [EVM equivalent](https://web.archive.org/web/20231127160757/https://medium.com/ethereum-optimism/introducing-evm-equivalence-5c2021deb306), meaning we run a slightly modified version of the same `geth` you run on mainnet.
-Therefore, the differences between OP Mainnet development and Ethereum development are minor.
+This guide explains the basics of OP Mainnet development. OP Mainnet provides [EVM equivalence](https://web.archive.org/web/20231127160757/https://medium.com/ethereum-optimism/introducing-evm-equivalence-5c2021deb306), running a slightly modified version of the same `geth` that runs on Mainnet. As a result, the differences between OP Mainnet and Ethereum development are minor.
pages/stack/features/send-raw-transaction-conditional.mdx (1)

62-62: Consider enhancing the warning message clarity

While the warning message is technically accurate, consider restructuring it to be more direct and actionable.

-  It is not advised to publicly expose this sequencer endpoint due to DoS concerns. This supplemental proxy, [op-txproxy](/builders/chain-operators/tools/op-txproxy), should be used to apply additional constraints on this endpoint prior to passing through to the sequencer.
+  Do not expose this sequencer endpoint publicly due to DoS concerns. Instead, use the [op-txproxy](/builders/chain-operators/tools/op-txproxy) to apply additional security constraints before passing requests to the sequencer.
pages/builders/app-developers/tutorials/standard-bridge-standard-token.mdx (3)

Line range hint 28-28: Adjust header casing to follow sentence case guidelines

The header "About OptimismMintableERC20s" should be in sentence case according to the documentation guidelines.

-## About OptimismMintableERC20s
+## About OptimismMintableERC20s tokens

Line range hint 71-73: Add validation for environment variables

Consider adding validation checks for the private key format and length.

 export TUTORIAL_PRIVATE_KEY=0x...
+if [[ ! $TUTORIAL_PRIVATE_KEY =~ ^0x[0-9a-fA-F]{64}$ ]]; then
+  echo "Error: Invalid private key format"
+  exit 1
+fi

Line range hint 89-89: Fix grammatical error in deployment description

Change "deploy our L2 ERC-20 token" to "deploy your L2 ERC-20 token" to maintain consistent second-person perspective throughout the tutorial.

pages/builders/chain-operators/tools/op-scan.mdx (6)

11-11: Improve sentence structure and clarity

The sentence structure can be improved for better readability.

-OP Scan is a transaction explorer tailored specifically for the [OP Stack](https://docs.optimism.io/builders/chain-operators/tutorials/create-l2-rollup) and the [Superchain vision](https://www.youtube.com/watch?v=O6vYNgrQ1LE). It's focused on being lightweight so that anyone can run it locally next to an OP Stack devnet or any other compatible OP Stack based rollup.
+OP Scan is a transaction explorer tailored specifically for the [OP Stack](https://docs.optimism.io/builders/chain-operators/tutorials/create-l2-rollup) and the [Superchain vision](https://www.youtube.com/watch?v=O6vYNgrQ1LE). Its lightweight design enables local deployment alongside an OP Stack devnet or any other compatible OP Stack based rollup.

49-51: Improve sentence structure in the configuration instructions

-You will need to copy `.env.local.example` into `.env.local` at the root of your repository and populate it with your own values.
-
-In particular you will need to provide configuration for both L1 and L2 chains:
+Copy `.env.local.example` to `.env.local` at the root of your repository and populate it with your values.
+
+In particular, configure the following settings for both L1 and L2 chains:
🧰 Tools
🪛 LanguageTool

[uncategorized] ~51-~51: A comma is probably missing here.
Context: ...d populate it with your own values. In particular you will need to provide configuration ...

(MISSING_COMMA_AFTER_INTRODUCTORY_PHRASE)


64-72: Enhance clarity of L1 contract configuration

-You will also need to provide your L1 contracts addresses when using a devnet:
+For devnet deployments, configure the following L1 contract addresses:

NEXT_PUBLIC_OPTIMISM_PORTAL_ADDRESS="..."
NEXT_PUBLIC_L1_CROSS_DOMAIN_MESSENGER_ADDRESS="..."


-You will find theses addresses in your rollup deployment artifacts in `contracts-bedrock/deployments/your-deployment/L1Contract.json`.
-Note that you always need to provide the proxy address, not the underlying contract.
+These addresses are available in your rollup deployment artifacts at `contracts-bedrock/deployments/your-deployment/L1Contract.json`.
+Important: Use the proxy address, not the underlying contract address.
🧰 Tools
🪛 LanguageTool

[style] ~64-~64: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...s://www.quicknode.com/). You will also need to provide your L1 contracts addresses whe...

(REP_NEED_TO_VB)


[style] ~72-~72: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: .../L1Contract.json`. Note that you always need to provide the proxy address, not the unde...

(REP_NEED_TO_VB)


84-90: Improve database configuration instructions

-To run the indexer, you first need to setup your `DATABASE_URL` in `.env.local` (we use SQLite by default but you can switch to PostgreSQL by changing the Prisma provider in `prisma/schema.prisma`) as well as websocket connections to your L1/L2 chains:
+To run the indexer:
+1. Configure `DATABASE_URL` in `.env.local` (SQLite by default, configurable to PostgreSQL via `prisma/schema.prisma`)
+2. Set up websocket connections for L1/L2 chains:

DATABASE_URL="file:dev.db"
L1_RPC_WS="wss://ethereum-sepolia-rpc.publicnode.com"
L2_RPC_WS="wss://optimism-sepolia-rpc.publicnode.com"

🧰 Tools
🪛 LanguageTool

[grammar] ~84-~84: The word “setup” is a noun. The verb is spelled with a space.
Context: ... To run the indexer, you first need to setup your DATABASE_URL in .env.local (we...

(NOUN_VERB_CONFUSION)


[uncategorized] ~84-~84: Use a comma before ‘but’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...n .env.local (we use SQLite by default but you can switch to PostgreSQL by changin...

(COMMA_COMPOUND_SENTENCE)


117-119: Clarify RPC rate limiting explanation

-Indexing a blockchain is putting a heavy load on the RPC as you need to perform a large number of JSON-RPC requests to fully index a block (along with transactions and logs).
-When indexing non-local chains you will probably encounter 429 errors related to rate-limiting, you may provide up to 5 fallback RPC URLs in case this happens:
+Blockchain indexing requires numerous JSON-RPC requests per block to process transactions and logs, which can strain RPC endpoints.
+When indexing non-local chains, rate limiting may trigger 429 errors. Configure up to 5 fallback RPC URLs to handle these cases:
🧰 Tools
🪛 LanguageTool

[style] ~117-~117: Specify a number, remove phrase, or simply use “many” or “numerous”
Context: ... load on the RPC as you need to perform a large number of JSON-RPC requests to fully index a bloc...

(LARGE_NUMBER_OF)


149-165: Structure the launch instructions more clearly

-When you're done configuring your environment variables you can build the app:
+After configuring the environment variables:

+1. Build the application:
 ```sh
 pnpm build

-Make sure your local chain is started and the indexer is running, then launch the explorer to see it live at http://localhost:3000
+2. Ensure prerequisites are running:

    • Local chain is started
    • Indexer is running

+3. Launch the explorer:

pnpm start

+The explorer will be available at http://localhost:3000

-Alternatively you can launch the explorer in dev mode if you want to customize it:
+For development and customization, use dev mode instead:

pnpm dev

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 LanguageTool</summary>

[uncategorized] ~155-~155: Use a comma before “and” if it connects two independent clauses (unless they are closely connected and short).
Context: ...`  Make sure your local chain is started and the indexer is running, then launch the...

(COMMA_COMPOUND_SENTENCE_2)

---

[typographical] ~160-~160: Consider adding a comma after ‘Alternatively’ for more clarity.
Context: .../localhost:3000`  ```sh pnpm start ```  Alternatively you can launch the explorer in dev mode...

(RB_LY_COMMA)

</details>

</details>

</blockquote></details>
<details>
<summary>pages/builders/app-developers/tutorials/standard-bridge-custom-token.mdx (1)</summary><blockquote>

Line range hint `85-96`: **Add a prominent warning about non-withdrawable tokens.**

Consider adding a warning callout before this code section to explicitly highlight that this is just an example and that making tokens non-withdrawable could lead to locked funds. This would help prevent misuse in production.

Example addition:

```diff
+<Callout type="warning">
+This example creates a token that cannot be withdrawn back to L1. This is for demonstration purposes only and should not be used in production as it would permanently lock user funds on L2.
+</Callout>
🧰 Tools
🪛 LanguageTool

[style] ~119-~119: Consider an alternative for the overused word “exactly”.
Context: ...for the token you just created! This is exactly what this tutorial was meant to demonst...

(EXACTLY_PRECISELY)

pages/stack/differences.mdx (3)

Line range hint 31-34: Remove bold emphasis from "pseudorandomly"

According to our documentation guidelines, we should avoid using bold for emphasis. Consider rephrasing to convey emphasis through sentence structure instead.

- Set **pseudorandomly** for each block
+ Set pseudorandomly for each block

19-19: Improve sentence structure for clarity

The sentence starting with "Importantly" could be more concise.

- Importantly, this is how bridge applications can get L1 ETH or tokens into an L2 OP Stack chain.
+ This mechanism enables bridge applications to transfer L1 ETH or tokens into an L2 OP Stack chain.

23-23: Enhance clarity of withdrawal transactions explanation

The explanation of withdrawal transactions could be more direct and clearer.

- Withdrawal transactions are how the state of the L2 rollup can be proven to the L1. Often this involves users withdrawing tokens or ETH to the L1.
+ Withdrawal transactions prove the L2 rollup state to L1, typically when users withdraw tokens or ETH to L1.
pages/builders/app-developers/tutorials/cross-dom-bridge-erc20.mdx (1)

34-34: Consider rephrasing to improve readability

The current phrasing "If you want to use" appears repetitive with nearby text. Consider revising to add variety:

-If you want to use a network that isn't included by default, you can simply [instantiate the SDK with the appropriate contract addresses](/builders/app-developers/overview).
+For networks not included by default, simply [instantiate the SDK with the appropriate contract addresses](/builders/app-developers/overview).
🧰 Tools
🪛 LanguageTool

[style] ~34-~34: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ... included in the SDK by default. If you want to use a network that isn't included by de...

(REP_WANT_TO_VB)

pages/stack/interop/explainer.mdx (2)

34-38: Fix hyphenation in compound modifier

The term "per chain" should be hyphenated when used as a compound modifier.

-The interop protocol works via a dependency set which is configured on a per chain basis
+The interop protocol works via a dependency set which is configured on a per-chain basis
🧰 Tools
🪛 LanguageTool

[grammar] ~35-~35: In this context, “per-chain” forms an adjective and is spelled with a hyphen.
Context: ...dependency set which is configured on a per chain basis and is a unidirectional relations...

(PER_USER_BASIS_HYPHEN)


113-115: Consider adding mitigation strategies

The explanation of the weakest link scenario is clear and accurate. Consider adding information about how the Superchain's shared security model mitigates these risks.

pages/connect/resources/glossary.mdx (1)

36-36: Remove italics used for emphasis

According to the documentation guidelines, we should avoid using italics for emphasis. Consider using plain text instead.

-*Post-merge*, it could be said that L1 block time is 12s...
+Post-merge, it could be said that L1 block time is 12s...
pages/builders/chain-operators/configuration/rollup.mdx (1)

260-260: Enhance technical accuracy and clarity of the L2 block time description.

The current description could be more precise. Consider these improvements:

-Number of seconds between each L2 block. Must be \< L1 block time (12 on mainnet and Sepolia).
+Number of seconds between each L2 block. Must be less than the L1 block time (approximately 12 seconds on Ethereum mainnet and Sepolia testnet).

This revision:

  1. Uses "less than" instead of "<" for better readability
  2. Adds "approximately" to acknowledge that L1 block times can vary
  3. Specifies "seconds" and uses the full network names for clarity
utils/fix-redirects.ts (1)

117-121: Simplify error handling by removing redundant try-catch block

The try...catch block inside the main function is redundant because any unhandled errors are already caught by the .catch method when main is invoked. Removing the inner try...catch simplifies the code and avoids duplicate error handling.

Apply this diff to streamline the error handling:

 async function main() {
   const summary: Summary = {
     total: 0,
     fixed: 0,
     skipped: 0
   };

   console.log('Starting to fix redirect links...');
   console.log('Root directory:', rootDir);

-  try {
     const redirects = await getRedirects();
     const files = await findMdxFiles(rootDir);
     
     summary.total = files.length;

     for (const file of files) {
       const wasFixed = await fixFile(file, redirects);
       if (wasFixed) {
         summary.fixed++;
       } else {
         summary.skipped++;
       }
     }

     if (updates.length > 0) {
       console.log(`${GREEN}${BOLD}Fixed links:${RESET}`);
       updates.forEach(update => console.log(update));
       printSummary(summary);
     } else {
       console.log(`${GREEN}No broken links found. Everything is up to date.${RESET}`);
       printSummary(summary);
     }
-  } catch (error) {
-    console.error(`${YELLOW}${BOLD}Error fixing redirects:${RESET}`, error);
-    process.exit(1);
-  }
 }

 main().catch(error => {
   console.error(`${YELLOW}${BOLD}Error in main process:${RESET}`, error);
   process.exit(1);
 });
📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between e33b435 and 4a9df6f.

📒 Files selected for processing (47)
  • .coderabbit.yaml (1 hunks)
  • .github/ISSUE_TEMPLATE/suggest_glossary_term.yaml (2 hunks)
  • .github/ISSUE_TEMPLATE/suggest_tutorial.yaml (1 hunks)
  • CONTRIBUTING.md (1 hunks)
  • components/WipCallout.tsx (2 hunks)
  • components/calculator/Loader.tsx (3 hunks)
  • content/OpProposerDescriptionShort.md (1 hunks)
  • lychee.toml (1 hunks)
  • next-env.d.ts (1 hunks)
  • notes/content-reuse.md (1 hunks)
  • notes/fix-redirects.md (1 hunks)
  • package.json (1 hunks)
  • pages/404.mdx (1 hunks)
  • pages/builders.mdx (1 hunks)
  • pages/builders/app-developers/bridging/basics.mdx (1 hunks)
  • pages/builders/app-developers/bridging/standard-bridge.mdx (1 hunks)
  • pages/builders/app-developers/overview.mdx (2 hunks)
  • pages/builders/app-developers/tutorials.mdx (1 hunks)
  • pages/builders/app-developers/tutorials/_meta.json (1 hunks)
  • pages/builders/app-developers/tutorials/cross-dom-bridge-erc20.mdx (1 hunks)
  • pages/builders/app-developers/tutorials/standard-bridge-custom-token.mdx (1 hunks)
  • pages/builders/app-developers/tutorials/standard-bridge-standard-token.mdx (1 hunks)
  • pages/builders/chain-operators/configuration/rollup.mdx (1 hunks)
  • pages/builders/chain-operators/tools/op-scan.mdx (1 hunks)
  • pages/builders/chain-operators/tutorials.mdx (2 hunks)
  • pages/builders/chain-operators/tutorials/create-l2-rollup.mdx (1 hunks)
  • pages/builders/node-operators.mdx (1 hunks)
  • pages/builders/node-operators/releases.mdx (1 hunks)
  • pages/builders/tools/build/oracles.mdx (1 hunks)
  • pages/builders/tools/overview.mdx (1 hunks)
  • pages/chain/addresses.mdx (1 hunks)
  • pages/chain/getting-started.mdx (1 hunks)
  • pages/chain/security/security-policy.mdx (2 hunks)
  • pages/chain/testing/dev-node.mdx (1 hunks)
  • pages/connect/contribute/style-guide.mdx (7 hunks)
  • pages/connect/resources/glossary.mdx (2 hunks)
  • pages/index.mdx (1 hunks)
  • pages/stack/differences.mdx (1 hunks)
  • pages/stack/features/send-raw-transaction-conditional.mdx (1 hunks)
  • pages/stack/getting-started.mdx (1 hunks)
  • pages/stack/interop/assets/deploy-superchain-erc20.mdx (1 hunks)
  • pages/stack/interop/assets/superchain-erc20.mdx (2 hunks)
  • pages/stack/interop/cross-chain-message.mdx (1 hunks)
  • pages/stack/interop/explainer.mdx (3 hunks)
  • utils/fix-redirects.ts (1 hunks)
  • utils/redirects.ts (1 hunks)
  • words.txt (1 hunks)
✅ Files skipped from review due to trivial changes (17)
  • .github/ISSUE_TEMPLATE/suggest_glossary_term.yaml
  • .github/ISSUE_TEMPLATE/suggest_tutorial.yaml
  • CONTRIBUTING.md
  • components/WipCallout.tsx
  • components/calculator/Loader.tsx
  • content/OpProposerDescriptionShort.md
  • lychee.toml
  • next-env.d.ts
  • notes/content-reuse.md
  • pages/404.mdx
  • pages/builders/app-developers/bridging/basics.mdx
  • pages/builders/app-developers/tutorials/_meta.json
  • pages/builders/node-operators.mdx
  • pages/builders/node-operators/releases.mdx
  • pages/builders/tools/build/oracles.mdx
  • pages/chain/addresses.mdx
  • words.txt
🧰 Additional context used
📓 Path-based instructions (25)
pages/builders.mdx (1)

Pattern **/*.mdx: "ALWAYS review Markdown content THOROUGHLY with the following criteria:

  • Use proper nouns in place of personal pronouns like 'We' and 'Our' to maintain consistency in communal documentation.
  • Avoid gender-specific language and use the imperative form.
  • Monitor capitalization for emphasis. Avoid using all caps, italics, or bold for emphasis.
  • Ensure proper nouns are capitalized in sentences.
  • Apply the Oxford comma.
  • Use proper title case for buttons, tab names, page names, and links. Sentence case should be used for body content and short phrases, even in links.
  • Use correct spelling and grammar at all times (IMPORTANT).
  • For H1, H2, and H3 headers:
    1. Use sentence case, capitalizing only the first word.
    2. Preserve the capitalization of proper nouns, technical terms, and acronyms as defined in the 'nouns.txt' file located in the root directory of the project.
    3. Do not automatically lowercase words that appear in the 'nouns.txt' file, regardless of their position in the header.
  • Flag any headers that seem to inconsistently apply these rules for manual review.
  • When reviewing capitalization, always refer to the 'nouns.txt' file for the correct capitalization of proper nouns and technical terms specific to the project.
    "
pages/builders/app-developers/bridging/standard-bridge.mdx (1)

Pattern **/*.mdx: "ALWAYS review Markdown content THOROUGHLY with the following criteria:

  • Use proper nouns in place of personal pronouns like 'We' and 'Our' to maintain consistency in communal documentation.
  • Avoid gender-specific language and use the imperative form.
  • Monitor capitalization for emphasis. Avoid using all caps, italics, or bold for emphasis.
  • Ensure proper nouns are capitalized in sentences.
  • Apply the Oxford comma.
  • Use proper title case for buttons, tab names, page names, and links. Sentence case should be used for body content and short phrases, even in links.
  • Use correct spelling and grammar at all times (IMPORTANT).
  • For H1, H2, and H3 headers:
    1. Use sentence case, capitalizing only the first word.
    2. Preserve the capitalization of proper nouns, technical terms, and acronyms as defined in the 'nouns.txt' file located in the root directory of the project.
    3. Do not automatically lowercase words that appear in the 'nouns.txt' file, regardless of their position in the header.
  • Flag any headers that seem to inconsistently apply these rules for manual review.
  • When reviewing capitalization, always refer to the 'nouns.txt' file for the correct capitalization of proper nouns and technical terms specific to the project.
    "
pages/builders/app-developers/overview.mdx (1)

Pattern **/*.mdx: "ALWAYS review Markdown content THOROUGHLY with the following criteria:

  • Use proper nouns in place of personal pronouns like 'We' and 'Our' to maintain consistency in communal documentation.
  • Avoid gender-specific language and use the imperative form.
  • Monitor capitalization for emphasis. Avoid using all caps, italics, or bold for emphasis.
  • Ensure proper nouns are capitalized in sentences.
  • Apply the Oxford comma.
  • Use proper title case for buttons, tab names, page names, and links. Sentence case should be used for body content and short phrases, even in links.
  • Use correct spelling and grammar at all times (IMPORTANT).
  • For H1, H2, and H3 headers:
    1. Use sentence case, capitalizing only the first word.
    2. Preserve the capitalization of proper nouns, technical terms, and acronyms as defined in the 'nouns.txt' file located in the root directory of the project.
    3. Do not automatically lowercase words that appear in the 'nouns.txt' file, regardless of their position in the header.
  • Flag any headers that seem to inconsistently apply these rules for manual review.
  • When reviewing capitalization, always refer to the 'nouns.txt' file for the correct capitalization of proper nouns and technical terms specific to the project.
    "
pages/builders/app-developers/tutorials.mdx (1)

Pattern **/*.mdx: "ALWAYS review Markdown content THOROUGHLY with the following criteria:

  • Use proper nouns in place of personal pronouns like 'We' and 'Our' to maintain consistency in communal documentation.
  • Avoid gender-specific language and use the imperative form.
  • Monitor capitalization for emphasis. Avoid using all caps, italics, or bold for emphasis.
  • Ensure proper nouns are capitalized in sentences.
  • Apply the Oxford comma.
  • Use proper title case for buttons, tab names, page names, and links. Sentence case should be used for body content and short phrases, even in links.
  • Use correct spelling and grammar at all times (IMPORTANT).
  • For H1, H2, and H3 headers:
    1. Use sentence case, capitalizing only the first word.
    2. Preserve the capitalization of proper nouns, technical terms, and acronyms as defined in the 'nouns.txt' file located in the root directory of the project.
    3. Do not automatically lowercase words that appear in the 'nouns.txt' file, regardless of their position in the header.
  • Flag any headers that seem to inconsistently apply these rules for manual review.
  • When reviewing capitalization, always refer to the 'nouns.txt' file for the correct capitalization of proper nouns and technical terms specific to the project.
    "
pages/builders/app-developers/tutorials/cross-dom-bridge-erc20.mdx (1)

Pattern **/*.mdx: "ALWAYS review Markdown content THOROUGHLY with the following criteria:

  • Use proper nouns in place of personal pronouns like 'We' and 'Our' to maintain consistency in communal documentation.
  • Avoid gender-specific language and use the imperative form.
  • Monitor capitalization for emphasis. Avoid using all caps, italics, or bold for emphasis.
  • Ensure proper nouns are capitalized in sentences.
  • Apply the Oxford comma.
  • Use proper title case for buttons, tab names, page names, and links. Sentence case should be used for body content and short phrases, even in links.
  • Use correct spelling and grammar at all times (IMPORTANT).
  • For H1, H2, and H3 headers:
    1. Use sentence case, capitalizing only the first word.
    2. Preserve the capitalization of proper nouns, technical terms, and acronyms as defined in the 'nouns.txt' file located in the root directory of the project.
    3. Do not automatically lowercase words that appear in the 'nouns.txt' file, regardless of their position in the header.
  • Flag any headers that seem to inconsistently apply these rules for manual review.
  • When reviewing capitalization, always refer to the 'nouns.txt' file for the correct capitalization of proper nouns and technical terms specific to the project.
    "
pages/builders/app-developers/tutorials/standard-bridge-custom-token.mdx (1)

Pattern **/*.mdx: "ALWAYS review Markdown content THOROUGHLY with the following criteria:

  • Use proper nouns in place of personal pronouns like 'We' and 'Our' to maintain consistency in communal documentation.
  • Avoid gender-specific language and use the imperative form.
  • Monitor capitalization for emphasis. Avoid using all caps, italics, or bold for emphasis.
  • Ensure proper nouns are capitalized in sentences.
  • Apply the Oxford comma.
  • Use proper title case for buttons, tab names, page names, and links. Sentence case should be used for body content and short phrases, even in links.
  • Use correct spelling and grammar at all times (IMPORTANT).
  • For H1, H2, and H3 headers:
    1. Use sentence case, capitalizing only the first word.
    2. Preserve the capitalization of proper nouns, technical terms, and acronyms as defined in the 'nouns.txt' file located in the root directory of the project.
    3. Do not automatically lowercase words that appear in the 'nouns.txt' file, regardless of their position in the header.
  • Flag any headers that seem to inconsistently apply these rules for manual review.
  • When reviewing capitalization, always refer to the 'nouns.txt' file for the correct capitalization of proper nouns and technical terms specific to the project.
    "
pages/builders/app-developers/tutorials/standard-bridge-standard-token.mdx (1)

Pattern **/*.mdx: "ALWAYS review Markdown content THOROUGHLY with the following criteria:

  • Use proper nouns in place of personal pronouns like 'We' and 'Our' to maintain consistency in communal documentation.
  • Avoid gender-specific language and use the imperative form.
  • Monitor capitalization for emphasis. Avoid using all caps, italics, or bold for emphasis.
  • Ensure proper nouns are capitalized in sentences.
  • Apply the Oxford comma.
  • Use proper title case for buttons, tab names, page names, and links. Sentence case should be used for body content and short phrases, even in links.
  • Use correct spelling and grammar at all times (IMPORTANT).
  • For H1, H2, and H3 headers:
    1. Use sentence case, capitalizing only the first word.
    2. Preserve the capitalization of proper nouns, technical terms, and acronyms as defined in the 'nouns.txt' file located in the root directory of the project.
    3. Do not automatically lowercase words that appear in the 'nouns.txt' file, regardless of their position in the header.
  • Flag any headers that seem to inconsistently apply these rules for manual review.
  • When reviewing capitalization, always refer to the 'nouns.txt' file for the correct capitalization of proper nouns and technical terms specific to the project.
    "
pages/builders/chain-operators/configuration/rollup.mdx (1)

Pattern **/*.mdx: "ALWAYS review Markdown content THOROUGHLY with the following criteria:

  • Use proper nouns in place of personal pronouns like 'We' and 'Our' to maintain consistency in communal documentation.
  • Avoid gender-specific language and use the imperative form.
  • Monitor capitalization for emphasis. Avoid using all caps, italics, or bold for emphasis.
  • Ensure proper nouns are capitalized in sentences.
  • Apply the Oxford comma.
  • Use proper title case for buttons, tab names, page names, and links. Sentence case should be used for body content and short phrases, even in links.
  • Use correct spelling and grammar at all times (IMPORTANT).
  • For H1, H2, and H3 headers:
    1. Use sentence case, capitalizing only the first word.
    2. Preserve the capitalization of proper nouns, technical terms, and acronyms as defined in the 'nouns.txt' file located in the root directory of the project.
    3. Do not automatically lowercase words that appear in the 'nouns.txt' file, regardless of their position in the header.
  • Flag any headers that seem to inconsistently apply these rules for manual review.
  • When reviewing capitalization, always refer to the 'nouns.txt' file for the correct capitalization of proper nouns and technical terms specific to the project.
    "
pages/builders/chain-operators/tools/op-scan.mdx (1)

Pattern **/*.mdx: "ALWAYS review Markdown content THOROUGHLY with the following criteria:

  • Use proper nouns in place of personal pronouns like 'We' and 'Our' to maintain consistency in communal documentation.
  • Avoid gender-specific language and use the imperative form.
  • Monitor capitalization for emphasis. Avoid using all caps, italics, or bold for emphasis.
  • Ensure proper nouns are capitalized in sentences.
  • Apply the Oxford comma.
  • Use proper title case for buttons, tab names, page names, and links. Sentence case should be used for body content and short phrases, even in links.
  • Use correct spelling and grammar at all times (IMPORTANT).
  • For H1, H2, and H3 headers:
    1. Use sentence case, capitalizing only the first word.
    2. Preserve the capitalization of proper nouns, technical terms, and acronyms as defined in the 'nouns.txt' file located in the root directory of the project.
    3. Do not automatically lowercase words that appear in the 'nouns.txt' file, regardless of their position in the header.
  • Flag any headers that seem to inconsistently apply these rules for manual review.
  • When reviewing capitalization, always refer to the 'nouns.txt' file for the correct capitalization of proper nouns and technical terms specific to the project.
    "
pages/builders/chain-operators/tutorials.mdx (1)

Pattern **/*.mdx: "ALWAYS review Markdown content THOROUGHLY with the following criteria:

  • Use proper nouns in place of personal pronouns like 'We' and 'Our' to maintain consistency in communal documentation.
  • Avoid gender-specific language and use the imperative form.
  • Monitor capitalization for emphasis. Avoid using all caps, italics, or bold for emphasis.
  • Ensure proper nouns are capitalized in sentences.
  • Apply the Oxford comma.
  • Use proper title case for buttons, tab names, page names, and links. Sentence case should be used for body content and short phrases, even in links.
  • Use correct spelling and grammar at all times (IMPORTANT).
  • For H1, H2, and H3 headers:
    1. Use sentence case, capitalizing only the first word.
    2. Preserve the capitalization of proper nouns, technical terms, and acronyms as defined in the 'nouns.txt' file located in the root directory of the project.
    3. Do not automatically lowercase words that appear in the 'nouns.txt' file, regardless of their position in the header.
  • Flag any headers that seem to inconsistently apply these rules for manual review.
  • When reviewing capitalization, always refer to the 'nouns.txt' file for the correct capitalization of proper nouns and technical terms specific to the project.
    "
pages/builders/chain-operators/tutorials/create-l2-rollup.mdx (1)

Pattern **/*.mdx: "ALWAYS review Markdown content THOROUGHLY with the following criteria:

  • Use proper nouns in place of personal pronouns like 'We' and 'Our' to maintain consistency in communal documentation.
  • Avoid gender-specific language and use the imperative form.
  • Monitor capitalization for emphasis. Avoid using all caps, italics, or bold for emphasis.
  • Ensure proper nouns are capitalized in sentences.
  • Apply the Oxford comma.
  • Use proper title case for buttons, tab names, page names, and links. Sentence case should be used for body content and short phrases, even in links.
  • Use correct spelling and grammar at all times (IMPORTANT).
  • For H1, H2, and H3 headers:
    1. Use sentence case, capitalizing only the first word.
    2. Preserve the capitalization of proper nouns, technical terms, and acronyms as defined in the 'nouns.txt' file located in the root directory of the project.
    3. Do not automatically lowercase words that appear in the 'nouns.txt' file, regardless of their position in the header.
  • Flag any headers that seem to inconsistently apply these rules for manual review.
  • When reviewing capitalization, always refer to the 'nouns.txt' file for the correct capitalization of proper nouns and technical terms specific to the project.
    "
pages/builders/tools/overview.mdx (1)

Pattern **/*.mdx: "ALWAYS review Markdown content THOROUGHLY with the following criteria:

  • Use proper nouns in place of personal pronouns like 'We' and 'Our' to maintain consistency in communal documentation.
  • Avoid gender-specific language and use the imperative form.
  • Monitor capitalization for emphasis. Avoid using all caps, italics, or bold for emphasis.
  • Ensure proper nouns are capitalized in sentences.
  • Apply the Oxford comma.
  • Use proper title case for buttons, tab names, page names, and links. Sentence case should be used for body content and short phrases, even in links.
  • Use correct spelling and grammar at all times (IMPORTANT).
  • For H1, H2, and H3 headers:
    1. Use sentence case, capitalizing only the first word.
    2. Preserve the capitalization of proper nouns, technical terms, and acronyms as defined in the 'nouns.txt' file located in the root directory of the project.
    3. Do not automatically lowercase words that appear in the 'nouns.txt' file, regardless of their position in the header.
  • Flag any headers that seem to inconsistently apply these rules for manual review.
  • When reviewing capitalization, always refer to the 'nouns.txt' file for the correct capitalization of proper nouns and technical terms specific to the project.
    "
pages/chain/getting-started.mdx (1)

Pattern **/*.mdx: "ALWAYS review Markdown content THOROUGHLY with the following criteria:

  • Use proper nouns in place of personal pronouns like 'We' and 'Our' to maintain consistency in communal documentation.
  • Avoid gender-specific language and use the imperative form.
  • Monitor capitalization for emphasis. Avoid using all caps, italics, or bold for emphasis.
  • Ensure proper nouns are capitalized in sentences.
  • Apply the Oxford comma.
  • Use proper title case for buttons, tab names, page names, and links. Sentence case should be used for body content and short phrases, even in links.
  • Use correct spelling and grammar at all times (IMPORTANT).
  • For H1, H2, and H3 headers:
    1. Use sentence case, capitalizing only the first word.
    2. Preserve the capitalization of proper nouns, technical terms, and acronyms as defined in the 'nouns.txt' file located in the root directory of the project.
    3. Do not automatically lowercase words that appear in the 'nouns.txt' file, regardless of their position in the header.
  • Flag any headers that seem to inconsistently apply these rules for manual review.
  • When reviewing capitalization, always refer to the 'nouns.txt' file for the correct capitalization of proper nouns and technical terms specific to the project.
    "
pages/chain/security/security-policy.mdx (1)

Pattern **/*.mdx: "ALWAYS review Markdown content THOROUGHLY with the following criteria:

  • Use proper nouns in place of personal pronouns like 'We' and 'Our' to maintain consistency in communal documentation.
  • Avoid gender-specific language and use the imperative form.
  • Monitor capitalization for emphasis. Avoid using all caps, italics, or bold for emphasis.
  • Ensure proper nouns are capitalized in sentences.
  • Apply the Oxford comma.
  • Use proper title case for buttons, tab names, page names, and links. Sentence case should be used for body content and short phrases, even in links.
  • Use correct spelling and grammar at all times (IMPORTANT).
  • For H1, H2, and H3 headers:
    1. Use sentence case, capitalizing only the first word.
    2. Preserve the capitalization of proper nouns, technical terms, and acronyms as defined in the 'nouns.txt' file located in the root directory of the project.
    3. Do not automatically lowercase words that appear in the 'nouns.txt' file, regardless of their position in the header.
  • Flag any headers that seem to inconsistently apply these rules for manual review.
  • When reviewing capitalization, always refer to the 'nouns.txt' file for the correct capitalization of proper nouns and technical terms specific to the project.
    "
pages/chain/testing/dev-node.mdx (1)

Pattern **/*.mdx: "ALWAYS review Markdown content THOROUGHLY with the following criteria:

  • Use proper nouns in place of personal pronouns like 'We' and 'Our' to maintain consistency in communal documentation.
  • Avoid gender-specific language and use the imperative form.
  • Monitor capitalization for emphasis. Avoid using all caps, italics, or bold for emphasis.
  • Ensure proper nouns are capitalized in sentences.
  • Apply the Oxford comma.
  • Use proper title case for buttons, tab names, page names, and links. Sentence case should be used for body content and short phrases, even in links.
  • Use correct spelling and grammar at all times (IMPORTANT).
  • For H1, H2, and H3 headers:
    1. Use sentence case, capitalizing only the first word.
    2. Preserve the capitalization of proper nouns, technical terms, and acronyms as defined in the 'nouns.txt' file located in the root directory of the project.
    3. Do not automatically lowercase words that appear in the 'nouns.txt' file, regardless of their position in the header.
  • Flag any headers that seem to inconsistently apply these rules for manual review.
  • When reviewing capitalization, always refer to the 'nouns.txt' file for the correct capitalization of proper nouns and technical terms specific to the project.
    "
pages/connect/contribute/style-guide.mdx (1)

Pattern **/*.mdx: "ALWAYS review Markdown content THOROUGHLY with the following criteria:

  • Use proper nouns in place of personal pronouns like 'We' and 'Our' to maintain consistency in communal documentation.
  • Avoid gender-specific language and use the imperative form.
  • Monitor capitalization for emphasis. Avoid using all caps, italics, or bold for emphasis.
  • Ensure proper nouns are capitalized in sentences.
  • Apply the Oxford comma.
  • Use proper title case for buttons, tab names, page names, and links. Sentence case should be used for body content and short phrases, even in links.
  • Use correct spelling and grammar at all times (IMPORTANT).
  • For H1, H2, and H3 headers:
    1. Use sentence case, capitalizing only the first word.
    2. Preserve the capitalization of proper nouns, technical terms, and acronyms as defined in the 'nouns.txt' file located in the root directory of the project.
    3. Do not automatically lowercase words that appear in the 'nouns.txt' file, regardless of their position in the header.
  • Flag any headers that seem to inconsistently apply these rules for manual review.
  • When reviewing capitalization, always refer to the 'nouns.txt' file for the correct capitalization of proper nouns and technical terms specific to the project.
    "
pages/connect/resources/glossary.mdx (1)

Pattern **/*.mdx: "ALWAYS review Markdown content THOROUGHLY with the following criteria:

  • Use proper nouns in place of personal pronouns like 'We' and 'Our' to maintain consistency in communal documentation.
  • Avoid gender-specific language and use the imperative form.
  • Monitor capitalization for emphasis. Avoid using all caps, italics, or bold for emphasis.
  • Ensure proper nouns are capitalized in sentences.
  • Apply the Oxford comma.
  • Use proper title case for buttons, tab names, page names, and links. Sentence case should be used for body content and short phrases, even in links.
  • Use correct spelling and grammar at all times (IMPORTANT).
  • For H1, H2, and H3 headers:
    1. Use sentence case, capitalizing only the first word.
    2. Preserve the capitalization of proper nouns, technical terms, and acronyms as defined in the 'nouns.txt' file located in the root directory of the project.
    3. Do not automatically lowercase words that appear in the 'nouns.txt' file, regardless of their position in the header.
  • Flag any headers that seem to inconsistently apply these rules for manual review.
  • When reviewing capitalization, always refer to the 'nouns.txt' file for the correct capitalization of proper nouns and technical terms specific to the project.
    "
pages/index.mdx (1)

Pattern **/*.mdx: "ALWAYS review Markdown content THOROUGHLY with the following criteria:

  • Use proper nouns in place of personal pronouns like 'We' and 'Our' to maintain consistency in communal documentation.
  • Avoid gender-specific language and use the imperative form.
  • Monitor capitalization for emphasis. Avoid using all caps, italics, or bold for emphasis.
  • Ensure proper nouns are capitalized in sentences.
  • Apply the Oxford comma.
  • Use proper title case for buttons, tab names, page names, and links. Sentence case should be used for body content and short phrases, even in links.
  • Use correct spelling and grammar at all times (IMPORTANT).
  • For H1, H2, and H3 headers:
    1. Use sentence case, capitalizing only the first word.
    2. Preserve the capitalization of proper nouns, technical terms, and acronyms as defined in the 'nouns.txt' file located in the root directory of the project.
    3. Do not automatically lowercase words that appear in the 'nouns.txt' file, regardless of their position in the header.
  • Flag any headers that seem to inconsistently apply these rules for manual review.
  • When reviewing capitalization, always refer to the 'nouns.txt' file for the correct capitalization of proper nouns and technical terms specific to the project.
    "
pages/stack/differences.mdx (1)

Pattern **/*.mdx: "ALWAYS review Markdown content THOROUGHLY with the following criteria:

  • Use proper nouns in place of personal pronouns like 'We' and 'Our' to maintain consistency in communal documentation.
  • Avoid gender-specific language and use the imperative form.
  • Monitor capitalization for emphasis. Avoid using all caps, italics, or bold for emphasis.
  • Ensure proper nouns are capitalized in sentences.
  • Apply the Oxford comma.
  • Use proper title case for buttons, tab names, page names, and links. Sentence case should be used for body content and short phrases, even in links.
  • Use correct spelling and grammar at all times (IMPORTANT).
  • For H1, H2, and H3 headers:
    1. Use sentence case, capitalizing only the first word.
    2. Preserve the capitalization of proper nouns, technical terms, and acronyms as defined in the 'nouns.txt' file located in the root directory of the project.
    3. Do not automatically lowercase words that appear in the 'nouns.txt' file, regardless of their position in the header.
  • Flag any headers that seem to inconsistently apply these rules for manual review.
  • When reviewing capitalization, always refer to the 'nouns.txt' file for the correct capitalization of proper nouns and technical terms specific to the project.
    "
pages/stack/features/send-raw-transaction-conditional.mdx (1)

Pattern **/*.mdx: "ALWAYS review Markdown content THOROUGHLY with the following criteria:

  • Use proper nouns in place of personal pronouns like 'We' and 'Our' to maintain consistency in communal documentation.
  • Avoid gender-specific language and use the imperative form.
  • Monitor capitalization for emphasis. Avoid using all caps, italics, or bold for emphasis.
  • Ensure proper nouns are capitalized in sentences.
  • Apply the Oxford comma.
  • Use proper title case for buttons, tab names, page names, and links. Sentence case should be used for body content and short phrases, even in links.
  • Use correct spelling and grammar at all times (IMPORTANT).
  • For H1, H2, and H3 headers:
    1. Use sentence case, capitalizing only the first word.
    2. Preserve the capitalization of proper nouns, technical terms, and acronyms as defined in the 'nouns.txt' file located in the root directory of the project.
    3. Do not automatically lowercase words that appear in the 'nouns.txt' file, regardless of their position in the header.
  • Flag any headers that seem to inconsistently apply these rules for manual review.
  • When reviewing capitalization, always refer to the 'nouns.txt' file for the correct capitalization of proper nouns and technical terms specific to the project.
    "
pages/stack/getting-started.mdx (1)

Pattern **/*.mdx: "ALWAYS review Markdown content THOROUGHLY with the following criteria:

  • Use proper nouns in place of personal pronouns like 'We' and 'Our' to maintain consistency in communal documentation.
  • Avoid gender-specific language and use the imperative form.
  • Monitor capitalization for emphasis. Avoid using all caps, italics, or bold for emphasis.
  • Ensure proper nouns are capitalized in sentences.
  • Apply the Oxford comma.
  • Use proper title case for buttons, tab names, page names, and links. Sentence case should be used for body content and short phrases, even in links.
  • Use correct spelling and grammar at all times (IMPORTANT).
  • For H1, H2, and H3 headers:
    1. Use sentence case, capitalizing only the first word.
    2. Preserve the capitalization of proper nouns, technical terms, and acronyms as defined in the 'nouns.txt' file located in the root directory of the project.
    3. Do not automatically lowercase words that appear in the 'nouns.txt' file, regardless of their position in the header.
  • Flag any headers that seem to inconsistently apply these rules for manual review.
  • When reviewing capitalization, always refer to the 'nouns.txt' file for the correct capitalization of proper nouns and technical terms specific to the project.
    "
pages/stack/interop/assets/deploy-superchain-erc20.mdx (1)

Pattern **/*.mdx: "ALWAYS review Markdown content THOROUGHLY with the following criteria:

  • Use proper nouns in place of personal pronouns like 'We' and 'Our' to maintain consistency in communal documentation.
  • Avoid gender-specific language and use the imperative form.
  • Monitor capitalization for emphasis. Avoid using all caps, italics, or bold for emphasis.
  • Ensure proper nouns are capitalized in sentences.
  • Apply the Oxford comma.
  • Use proper title case for buttons, tab names, page names, and links. Sentence case should be used for body content and short phrases, even in links.
  • Use correct spelling and grammar at all times (IMPORTANT).
  • For H1, H2, and H3 headers:
    1. Use sentence case, capitalizing only the first word.
    2. Preserve the capitalization of proper nouns, technical terms, and acronyms as defined in the 'nouns.txt' file located in the root directory of the project.
    3. Do not automatically lowercase words that appear in the 'nouns.txt' file, regardless of their position in the header.
  • Flag any headers that seem to inconsistently apply these rules for manual review.
  • When reviewing capitalization, always refer to the 'nouns.txt' file for the correct capitalization of proper nouns and technical terms specific to the project.
    "
pages/stack/interop/assets/superchain-erc20.mdx (1)

Pattern **/*.mdx: "ALWAYS review Markdown content THOROUGHLY with the following criteria:

  • Use proper nouns in place of personal pronouns like 'We' and 'Our' to maintain consistency in communal documentation.
  • Avoid gender-specific language and use the imperative form.
  • Monitor capitalization for emphasis. Avoid using all caps, italics, or bold for emphasis.
  • Ensure proper nouns are capitalized in sentences.
  • Apply the Oxford comma.
  • Use proper title case for buttons, tab names, page names, and links. Sentence case should be used for body content and short phrases, even in links.
  • Use correct spelling and grammar at all times (IMPORTANT).
  • For H1, H2, and H3 headers:
    1. Use sentence case, capitalizing only the first word.
    2. Preserve the capitalization of proper nouns, technical terms, and acronyms as defined in the 'nouns.txt' file located in the root directory of the project.
    3. Do not automatically lowercase words that appear in the 'nouns.txt' file, regardless of their position in the header.
  • Flag any headers that seem to inconsistently apply these rules for manual review.
  • When reviewing capitalization, always refer to the 'nouns.txt' file for the correct capitalization of proper nouns and technical terms specific to the project.
    "
pages/stack/interop/cross-chain-message.mdx (1)

Pattern **/*.mdx: "ALWAYS review Markdown content THOROUGHLY with the following criteria:

  • Use proper nouns in place of personal pronouns like 'We' and 'Our' to maintain consistency in communal documentation.
  • Avoid gender-specific language and use the imperative form.
  • Monitor capitalization for emphasis. Avoid using all caps, italics, or bold for emphasis.
  • Ensure proper nouns are capitalized in sentences.
  • Apply the Oxford comma.
  • Use proper title case for buttons, tab names, page names, and links. Sentence case should be used for body content and short phrases, even in links.
  • Use correct spelling and grammar at all times (IMPORTANT).
  • For H1, H2, and H3 headers:
    1. Use sentence case, capitalizing only the first word.
    2. Preserve the capitalization of proper nouns, technical terms, and acronyms as defined in the 'nouns.txt' file located in the root directory of the project.
    3. Do not automatically lowercase words that appear in the 'nouns.txt' file, regardless of their position in the header.
  • Flag any headers that seem to inconsistently apply these rules for manual review.
  • When reviewing capitalization, always refer to the 'nouns.txt' file for the correct capitalization of proper nouns and technical terms specific to the project.
    "
pages/stack/interop/explainer.mdx (1)

Pattern **/*.mdx: "ALWAYS review Markdown content THOROUGHLY with the following criteria:

  • Use proper nouns in place of personal pronouns like 'We' and 'Our' to maintain consistency in communal documentation.
  • Avoid gender-specific language and use the imperative form.
  • Monitor capitalization for emphasis. Avoid using all caps, italics, or bold for emphasis.
  • Ensure proper nouns are capitalized in sentences.
  • Apply the Oxford comma.
  • Use proper title case for buttons, tab names, page names, and links. Sentence case should be used for body content and short phrases, even in links.
  • Use correct spelling and grammar at all times (IMPORTANT).
  • For H1, H2, and H3 headers:
    1. Use sentence case, capitalizing only the first word.
    2. Preserve the capitalization of proper nouns, technical terms, and acronyms as defined in the 'nouns.txt' file located in the root directory of the project.
    3. Do not automatically lowercase words that appear in the 'nouns.txt' file, regardless of their position in the header.
  • Flag any headers that seem to inconsistently apply these rules for manual review.
  • When reviewing capitalization, always refer to the 'nouns.txt' file for the correct capitalization of proper nouns and technical terms specific to the project.
    "
🪛 LanguageTool
notes/fix-redirects.md

[uncategorized] ~6-~6: Loose punctuation mark.
Context: ...s are redirected: * check-redirects: Identifies links that need updating bas...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~7-~7: Loose punctuation mark.
Context: ...e _redirects file. * fix-redirects: Automatically updates links to match `_...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~82-~82: You might be missing the article “the” here.
Context: ...ils: Ensure _redirects file exists in public folder, it should always be there! * ...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

pages/builders/app-developers/tutorials.mdx

[uncategorized] ~11-~11: The grammatical number of this noun doesn’t look right. Consider replacing it.
Context: ... using the standard bridge. You'll find tutorial to help you understand and work with th...

(AI_EN_LECTOR_REPLACEMENT_NOUN_NUMBER)

pages/builders/app-developers/tutorials/cross-dom-bridge-erc20.mdx

[style] ~34-~34: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ... included in the SDK by default. If you want to use a network that isn't included by de...

(REP_WANT_TO_VB)

pages/builders/chain-operators/tools/op-scan.mdx

[uncategorized] ~51-~51: A comma is probably missing here.
Context: ...d populate it with your own values. In particular you will need to provide configuration ...

(MISSING_COMMA_AFTER_INTRODUCTORY_PHRASE)


[style] ~64-~64: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...s://www.quicknode.com/). You will also need to provide your L1 contracts addresses whe...

(REP_NEED_TO_VB)


[style] ~72-~72: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: .../L1Contract.json`. Note that you always need to provide the proxy address, not the unde...

(REP_NEED_TO_VB)


[style] ~76-~76: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...re on verified contracts, you will also need to provide a [Reown](https://docs.reown.co...

(REP_NEED_TO_VB)


[grammar] ~84-~84: The word “setup” is a noun. The verb is spelled with a space.
Context: ... To run the indexer, you first need to setup your DATABASE_URL in .env.local (we...

(NOUN_VERB_CONFUSION)


[uncategorized] ~84-~84: Use a comma before ‘but’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...n .env.local (we use SQLite by default but you can switch to PostgreSQL by changin...

(COMMA_COMPOUND_SENTENCE)


[uncategorized] ~104-~104: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ... blocks getting indexed in your terminal and you can explore the state of your local...

(COMMA_COMPOUND_SENTENCE)


[style] ~117-~117: Specify a number, remove phrase, or simply use “many” or “numerous”
Context: ... load on the RPC as you need to perform a large number of JSON-RPC requests to fully index a bloc...

(LARGE_NUMBER_OF)


[uncategorized] ~155-~155: Use a comma before “and” if it connects two independent clauses (unless they are closely connected and short).
Context: ...` Make sure your local chain is started and the indexer is running, then launch the...

(COMMA_COMPOUND_SENTENCE_2)


[typographical] ~160-~160: Consider adding a comma after ‘Alternatively’ for more clarity.
Context: .../localhost:3000` sh pnpm start Alternatively you can launch the explorer in dev mode...

(RB_LY_COMMA)

pages/builders/chain-operators/tutorials.mdx

[grammar] ~13-~13: The verb ‘precompile’ does not usually follow articles like ‘a’. Check that ‘precompile’ is spelled correctly; using ‘precompile’ as a noun may be non-standard.
Context: ...utes to the derivation function, adding a precompile, creating your own l2 rollup testnet, i...

(A_INFINITIVE)


[uncategorized] ~13-~13: The grammatical number of this noun doesn’t look right. Consider replacing it.
Context: ...s and using viem. You'll find overview, tutorial, guide to help you understand and work ...

(AI_EN_LECTOR_REPLACEMENT_NOUN_NUMBER)

pages/chain/testing/dev-node.mdx

[style] ~27-~27: ‘exactly the same’ might be wordy. Consider a shorter alternative.
Context: ...evm-equivalence-5c2021deb306), it's not exactly the same as Ethereum. If you're building an appl...

(EN_WORDINESS_PREMIUM_EXACTLY_THE_SAME)


[grammar] ~27-~27: The verb “double-check” is spelled with a hyphen.
Context: ...se the local development environment to double check that everything is running as expected....

(DOUBLE_HYPHEN)

pages/connect/contribute/style-guide.mdx

[uncategorized] ~526-~526: Possible missing comma found.
Context: ...-wide holiday` * Slash (/) Avoid using as the slash is reserved for file names...

(AI_HYDRA_LEO_MISSING_COMMA)

pages/index.mdx

[style] ~33-~33: Consider using a more formal and expressive alternative to ‘amazing’.
Context: ...ds> ## Featured tools Check out these amazing tools, so you can get building with Opt...

(AWESOME)

pages/stack/getting-started.mdx

[style] ~19-~19: Style-wise, it’s not ideal to insert an adverb (‘properly’) in the middle of an infinitive construction (‘to support’). Try moving the adverb to avoid split infinitives.
Context: ...t an overview of everything you need to know to properly support OP mainnet within your [exchange](/builders/app-de...

(SPLIT_INFINITIVE)

pages/stack/interop/assets/deploy-superchain-erc20.mdx

[style] ~16-~16: Consider using a more formal alternative.
Context: ...he SuperchainERC20Bridge. If you want more information about the SuperchainERC20 standard, s...

(MORE_INFO)

pages/stack/interop/explainer.mdx

[grammar] ~35-~35: In this context, “per-chain” forms an adjective and is spelled with a hyphen.
Context: ...dependency set which is configured on a per chain basis and is a unidirectional relations...

(PER_USER_BASIS_HYPHEN)

🪛 Markdownlint
notes/fix-redirects.md

67-67: Expected: 0; Actual: 2
Unordered list indentation

(MD007, ul-indent)


68-68: Expected: 0; Actual: 2
Unordered list indentation

(MD007, ul-indent)


69-69: Expected: 0; Actual: 2
Unordered list indentation

(MD007, ul-indent)


74-74: Expected: 0; Actual: 2
Unordered list indentation

(MD007, ul-indent)


75-75: Expected: 0; Actual: 2
Unordered list indentation

(MD007, ul-indent)


76-76: Expected: 0; Actual: 2
Unordered list indentation

(MD007, ul-indent)


9-9: null
Multiple spaces after hash on atx style heading

(MD019, no-multiple-space-atx)


45-45: null
Multiple headings with the same content

(MD024, no-duplicate-heading)


52-52: null
Multiple headings with the same content

(MD024, no-duplicate-heading)

🪛 Biome
utils/redirects.ts

[error] 61-61: The assignment should not be in an expression.

The use of assignments in expressions is confusing.
Expressions are often considered as side-effect free.

(lint/suspicious/noAssignInExpressions)


[error] 66-66: The assignment should not be in an expression.

The use of assignments in expressions is confusing.
Expressions are often considered as side-effect free.

(lint/suspicious/noAssignInExpressions)

🔇 Additional comments (26)
pages/builders.mdx (1)

18-18: Verify the new documentation path exists

The link has been updated to point to the app developers overview section. Let's ensure this new path exists and contains the relevant wallet and CEX documentation.

.coderabbit.yaml (1)

7-7: Verify walkthrough visibility impact

Setting collapse_walkthrough to true will collapse all walkthrough sections by default. While this helps manage review length, ensure this doesn't impact the discoverability of important walkthrough content.

Run this script to assess the impact:

✅ Verification successful

Collapsing walkthrough sections is appropriate

The search results show that walkthroughs are used sparingly across the documentation (only 8 files), with each file containing exactly one walkthrough section. Since these sections appear in specific technical documentation like fault proofs, cross-domain transactions, and operator tools, collapsing them by default is a reasonable approach that:

  • Maintains clean, scannable documentation
  • Allows users to expand walkthroughs only when needed
  • Doesn't impact discoverability as the sections are still clearly marked
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for walkthrough sections in MDX files that might be affected

# Search for walkthrough sections in MDX files
echo "Files containing walkthrough sections:"
rg -l "walkthrough" --type mdx

# Count walkthrough sections per file
echo -e "\nWalkthrough section count per file:"
rg -c "walkthrough" --type mdx

Length of output: 291


Script:

#!/bin/bash
# Let's try a broader search without file type restriction
echo "Files containing walkthrough sections:"
rg -l "walkthrough"

echo -e "\nWalkthrough section count per file:"
rg -c "walkthrough"

# Also check for any markdown or documentation files that might contain walkthroughs
echo -e "\nPotential documentation files:"
fd -e md -e mdx -e markdown

Length of output: 10118

notes/fix-redirects.md (2)

1-8: LGTM! Clear and concise introduction

The introduction effectively explains the purpose and available scripts for redirect management.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~6-~6: Loose punctuation mark.
Context: ...s are redirected: * check-redirects: Identifies links that need updating bas...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~7-~7: Loose punctuation mark.
Context: ...e _redirects file. * fix-redirects: Automatically updates links to match `_...

(UNLIKELY_OPENING_PUNCTUATION)


35-61: LGTM! Well-structured documentation

The section effectively explains the fix-redirects functionality with clear examples and consistent formatting.

🧰 Tools
🪛 Markdownlint

45-45: null
Multiple headings with the same content

(MD024, no-duplicate-heading)


52-52: null
Multiple headings with the same content

(MD024, no-duplicate-heading)

package.json (2)

6-7: LGTM! Good integration of redirect checks into the existing workflow.

The addition of redirect checks to the lint and fix commands ensures that broken links are caught during regular development workflow.


12-13: Consider documenting the redirect scripts' behavior.

While the script names are self-explanatory, it would be helpful to add a brief comment in the README or documentation explaining:

  • What constitutes a "broken" redirect
  • The scope of files being checked
  • The automated fixes being applied

Let's check if documentation exists:

pages/index.mdx (2)

14-14: Section headers follow the documentation guidelines correctly.

The headers use proper sentence case while maintaining capitalization of the proper noun "Optimism".

Also applies to: 31-31, 48-48


25-25: Consider revising the navigation for Wallets and CEXs section.

The current href points to the general app developers overview, which might not provide the most relevant information for wallet and exchange developers.

pages/chain/getting-started.mdx (1)

14-14: LGTM: Link update aligns with documentation restructuring

The hyperlink update from /chain/differences to /stack/differences is correct and consistent with the documentation restructuring.

pages/chain/security/security-policy.mdx (2)

14-14: LGTM! Grammar improvement enhances clarity.

The reworded sentence "you will not only be putting users at risk" improves readability while maintaining the warning's severity.


56-56: LGTM! Grammar fix and proper attribution.

The addition of "on" fixes the grammatical structure while maintaining proper attribution to the Geth team.

pages/stack/features/send-raw-transaction-conditional.mdx (1)

59-59: LGTM: Configuration flag description is clear and accurate

The description of the rate limit configuration flag is well-formatted and provides clear information about its default value and purpose.

pages/stack/getting-started.mdx (1)

19-19: Verify the updated documentation links

Let's ensure the new documentation structure is in place.

✅ Verification successful

Let me gather more information about the documentation structure to verify these links properly.


Links are correctly updated and properly redirected

The verification confirms that:

  • The new path /builders/app-developers/overview.mdx exists
  • The old CEX and wallet documentation paths are properly redirected to the new app developers overview page as shown in the redirects file:
    /builders/cex-wallet-developers/cex-support /builders/app-developers/overview
    /builders/cex-wallet-developers/wallet-support /builders/app-developers/overview
    /builders/cex-wallet-developers /builders/app-developers/overview
    
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify that the new app developers overview page exists
# and that the old CEX/wallet pages are properly redirected

# Check if the new page exists
fd --type f "overview.mdx$" builders/app-developers/

# Check for any remaining references to old paths
rg -l "cex-wallet-developers/(cex|wallet)-support"

Length of output: 300


Script:

#!/bin/bash
# Check the actual documentation structure
fd --type f "overview.mdx$"

# Check the content of redirects file to understand the migration
cat public/_redirects

# Look for any documentation about app developers
fd --type f . | grep -i "app-developers"

Length of output: 13247

🧰 Tools
🪛 LanguageTool

[style] ~19-~19: Style-wise, it’s not ideal to insert an adverb (‘properly’) in the middle of an infinitive construction (‘to support’). Try moving the adverb to avoid split infinitives.
Context: ...t an overview of everything you need to know to properly support OP mainnet within your [exchange](/builders/app-de...

(SPLIT_INFINITIVE)

pages/builders/app-developers/tutorials/standard-bridge-standard-token.mdx (1)

99-99: LGTM: Updated reference to viem tutorial

The change correctly updates the cross-reference to use viem instead of the Optimism SDK, maintaining consistency with the broader documentation updates.

pages/stack/interop/assets/superchain-erc20.mdx (2)

84-84: LGTM! Path update maintains documentation structure.

The updated path to the deployment guide correctly reflects the new documentation organization.


93-93: LGTM! New resource enhances implementation guidance.

The addition of the starter kit reference provides valuable implementation resources for developers, aligning with the documentation's goal of supporting OP Stack adoption.

pages/builders/app-developers/tutorials/standard-bridge-custom-token.mdx (1)

117-117: LGTM: Tool reference update is accurate.

The change from Optimism SDK to viem aligns with the broader documentation updates.

pages/stack/differences.mdx (1)

19-19: Verify updated documentation links

The links have been updated to new paths. Let's ensure they are valid and accessible.

Also applies to: 23-23

pages/builders/app-developers/tutorials/cross-dom-bridge-erc20.mdx (1)

Line range hint 1-91: Documentation meets quality standards

The document maintains consistent formatting, proper capitalization of technical terms, and clear step-by-step instructions. The tutorial structure is well-organized and easy to follow.

🧰 Tools
🪛 LanguageTool

[style] ~34-~34: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ... included in the SDK by default. If you want to use a network that isn't included by de...

(REP_WANT_TO_VB)

pages/stack/interop/explainer.mdx (4)

17-21: LGTM: Benefits section is clear and well-structured

The benefits of native OP Stack interoperability are clearly articulated and properly formatted.


27-32: LGTM: Message passing and latency sections are accurate

The explanation of SuperchainERC20 token specification and low latency features is technically accurate and well-documented.


39-42: LGTM: Superchain interop cluster section is well-explained

The mesh network implementation and its benefits are clearly explained with proper technical terminology.


129-129: LGTM: Proper file ending

The file correctly ends with a newline character.

pages/connect/resources/glossary.mdx (1)

338-338: LGTM! Grammatical correction

The addition of the word "be" fixes the grammatical error in the sentence, improving clarity.

pages/builders/chain-operators/tutorials/create-l2-rollup.mdx (2)

Line range hint 1-24: Documentation structure and quality look excellent

The tutorial follows documentation best practices with:

  • Clear step-by-step instructions
  • Proper use of callouts for important information
  • Consistent formatting and structure
  • Appropriate capitalization of technical terms

421-421: Verify the forge script path change

The forge script path has been updated. Please ensure that:

  1. The new path scripts/Deploy.s.sol:Deploy is consistent with the repository structure
  2. The change is documented in the changelog

@@ -23,5 +23,5 @@ This section provides information on adding attributes to the derivation functio

<Card title="Modifying predeployed contracts" href="/builders/chain-operators/tutorials/modifying-predeploys" />

<Card title="Using the optimism sdk" href="/builders/chain-operators/tutorials/sdk" />
<Card title="Using viem" href="/builders/app-developers/overview" />
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codebase verification

Inconsistent href pattern detected in tutorials page

The verification confirms that:

  • All tutorial cards in the page follow the pattern /builders/chain-operators/tutorials/...
  • Only the "Using viem" card deviates with /builders/app-developers/overview
  • No dedicated viem tutorial exists under /builders/chain-operators/tutorials/

Consider either:

  • Moving the viem content to a dedicated tutorial page under /builders/chain-operators/tutorials/ for consistency
  • Or removing this card if it's not specifically related to chain operators
🔗 Analysis chain

Verify the href pattern consistency

The href for the "Using viem" card points to /builders/app-developers/overview while all other cards point to specific tutorials under /builders/chain-operators/tutorials/. This inconsistency might confuse users.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify if there's a dedicated viem tutorial page under the chain operators section

# Check if a viem-related tutorial exists
fd -t f "viem.*\.mdx$" pages/builders/chain-operators/tutorials/

# Check all tutorial hrefs for pattern consistency
rg "href=\"/builders/" pages/builders/chain-operators/tutorials.mdx

Length of output: 795

@@ -10,7 +10,7 @@ import { Card, Cards } from 'nextra/components'

# Tutorials

This section provides information on adding attributes to the derivation function, adding a precompile, creating your own l2 rollup testnet, integrating a new da layer with alt da, modifying predeployed contracts and using the optimism sdk. You'll find overview, tutorial, guide to help you understand and work with these topics.
This section provides information on adding attributes to the derivation function, adding a precompile, creating your own l2 rollup testnet, integrating a new da layer with alt da, modifying predeployed contracts and using viem. You'll find overview, tutorial, guide to help you understand and work with these topics.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Improve grammar and capitalization in the introductory text

The introductory paragraph needs several improvements:

  • Pluralize "overview, tutorial, guide" to "overviews, tutorials, guides"
  • Capitalize technical terms properly: "l2" → "L2", "da" → "DA", "alt da" → "Alt DA"
- This section provides information on adding attributes to the derivation function, adding a precompile, creating your own l2 rollup testnet, integrating a new da layer with alt da, modifying predeployed contracts and using viem. You'll find overview, tutorial, guide to help you understand and work with these topics.
+ This section provides information on adding attributes to the derivation function, adding a precompile, creating your own L2 rollup testnet, integrating a new DA layer with Alt DA, modifying predeployed contracts, and using viem. You'll find overviews, tutorials, and guides to help you understand and work with these topics.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
This section provides information on adding attributes to the derivation function, adding a precompile, creating your own l2 rollup testnet, integrating a new da layer with alt da, modifying predeployed contracts and using viem. You'll find overview, tutorial, guide to help you understand and work with these topics.
This section provides information on adding attributes to the derivation function, adding a precompile, creating your own L2 rollup testnet, integrating a new DA layer with Alt DA, modifying predeployed contracts, and using viem. You'll find overviews, tutorials, and guides to help you understand and work with these topics.
🧰 Tools
🪛 LanguageTool

[grammar] ~13-~13: The verb ‘precompile’ does not usually follow articles like ‘a’. Check that ‘precompile’ is spelled correctly; using ‘precompile’ as a noun may be non-standard.
Context: ...utes to the derivation function, adding a precompile, creating your own l2 rollup testnet, i...

(A_INFINITIVE)


[uncategorized] ~13-~13: The grammatical number of this noun doesn’t look right. Consider replacing it.
Context: ...s and using viem. You'll find overview, tutorial, guide to help you understand and work ...

(AI_EN_LECTOR_REPLACEMENT_NOUN_NUMBER)

@@ -8,16 +8,16 @@ import { Card, Cards } from 'nextra/components'

# Tutorials

This section provides information on bridging erc 20 tokens to op mainnet with the optimism sdk, bridging eth to op mainnet with the optimism sdk, communicating between op mainnet and ethereum in solidity, deploying your first contract on op mainnet, estimating transaction costs on op mainnet, tracing deposits and withdrawals, viewing deposits and withdrawals by address, triggering op mainnet transactions from ethereum, bridging your custom erc 20 token using the standard bridge and bridging your standard erc 20 token using the standard bridge. You'll find tutorial to help you understand and work with these topics.
This section provides information on bridging erc 20 tokens to op mainnet with viem, bridging eth to op mainnet with viem, communicating between op mainnet and ethereum in solidity, deploying your first contract on op mainnet, estimating transaction costs on op mainnet, tracing deposits and withdrawals, viewing deposits and withdrawals by address, triggering op mainnet transactions from ethereum, bridging your custom erc 20 token using the standard bridge and bridging your standard erc 20 token using the standard bridge. You'll find tutorial to help you understand and work with these topics.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Improve readability and fix grammatical issues in the introduction

The introductory paragraph needs restructuring for better readability and consistency:

  • Break the run-on sentence into multiple sentences
  • Fix the grammatical number ("tutorial" should be "tutorials")
  • Use consistent capitalization for technical terms
- This section provides information on bridging erc 20 tokens to op mainnet with viem, bridging eth to op mainnet with viem, communicating between op mainnet and ethereum in solidity, deploying your first contract on op mainnet, estimating transaction costs on op mainnet, tracing deposits and withdrawals, viewing deposits and withdrawals by address, triggering op mainnet transactions from ethereum, bridging your custom erc 20 token using the standard bridge and bridging your standard erc 20 token using the standard bridge. You'll find tutorial to help you understand and work with these topics.
+ This section provides tutorials for working with OP Stack. Topics include bridging ERC-20 tokens and ETH using Viem, communicating between OP Stack and Ethereum in Solidity, deploying contracts, estimating transaction costs, and managing deposits and withdrawals. You'll find tutorials to help you understand and work with the Standard Bridge for both custom and standard ERC-20 tokens.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
This section provides information on bridging erc 20 tokens to op mainnet with viem, bridging eth to op mainnet with viem, communicating between op mainnet and ethereum in solidity, deploying your first contract on op mainnet, estimating transaction costs on op mainnet, tracing deposits and withdrawals, viewing deposits and withdrawals by address, triggering op mainnet transactions from ethereum, bridging your custom erc 20 token using the standard bridge and bridging your standard erc 20 token using the standard bridge. You'll find tutorial to help you understand and work with these topics.
This section provides tutorials for working with OP Stack. Topics include bridging ERC-20 tokens and ETH using Viem, communicating between OP Stack and Ethereum in Solidity, deploying contracts, estimating transaction costs, and managing deposits and withdrawals. You'll find tutorials to help you understand and work with the Standard Bridge for both custom and standard ERC-20 tokens.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~11-~11: The grammatical number of this noun doesn’t look right. Consider replacing it.
Context: ... using the standard bridge. You'll find tutorial to help you understand and work with th...

(AI_EN_LECTOR_REPLACEMENT_NOUN_NUMBER)

@@ -9,7 +9,7 @@ import Image from 'next/image'

# Anatomy of a cross-chain message

A cross-chain message applies to any message sent across a chain. This applies to asset transfers using the [SuperchainERC20](superchain-erc20) token standard.
A cross-chain message refers to any communication sent using Superchain interop. This includes messages sent between different chains within an interop cluster, as well as messages sent on a single chain for interoperable. This functionality enables asset transfers that utilize the [SuperchainERC20](superchain-erc20) token standard.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Improve clarity and grammar in the cross-chain message definition

The sentence contains grammatical issues and could be clearer. The word "interoperable" is incorrectly used as a noun, and the structure could be improved.

Consider this revision:

-A cross-chain message refers to any communication sent using Superchain interop. This includes messages sent between different chains within an interop cluster, as well as messages sent on a single chain for interoperable. This functionality enables asset transfers that utilize the [SuperchainERC20](superchain-erc20) token standard.
+A cross-chain message refers to any communication sent using Superchain interop. This includes messages sent between different chains within an interop cluster, as well as messages sent within a single chain for interoperability purposes. This functionality enables asset transfers using the [SuperchainERC20](superchain-erc20) token standard.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
A cross-chain message refers to any communication sent using Superchain interop. This includes messages sent between different chains within an interop cluster, as well as messages sent on a single chain for interoperable. This functionality enables asset transfers that utilize the [SuperchainERC20](superchain-erc20) token standard.
A cross-chain message refers to any communication sent using Superchain interop. This includes messages sent between different chains within an interop cluster, as well as messages sent within a single chain for interoperability purposes. This functionality enables asset transfers using the [SuperchainERC20](superchain-erc20) token standard.

@@ -50,7 +50,7 @@ If you are already familiar with [building on OP Mainnet](/chain/getting-started

<Card title="Superchain Bridges" href="https://app.optimism.io/bridge" icon={<img src="/img/icons/shapes.svg" />} />

<Card title="Optimism SDK" href="https://sdk.optimism.io/" icon={<img src="/img/icons/shapes.svg" />} />
<Card title="Viem" href="https://viem.sh/op-stack/" icon={<img src="/img/icons/shapes.svg" />} />
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codebase verification

Update required: Multiple references to Optimism SDK found

The change from Optimism SDK to Viem is part of a planned deprecation, but several documentation files still reference the Optimism SDK and need to be updated:

  • pages/stack/rollup/overview.mdx and pages/stack/transactions/withdrawal-flow.mdx: Contains links to sdk.optimism.io
  • pages/builders/app-developers/tutorials/: Multiple tutorial files (sdk-view-txns.mdx, sdk-trace-txns.mdx, cross-dom-bridge-erc20.mdx) heavily reference the SDK
  • pages/builders/tools/op-tools/_meta.json: Still contains SDK references in metadata

While there is a deprecation notice at pages/builders/notices/sdk-deprecation.mdx, the documentation should be consistently updated to reference Viem instead of the SDK.

Note: The Viem documentation link (https://viem.sh/op-stack/) is accessible and valid.

🔗 Analysis chain

LGTM! Please verify related documentation.

The replacement of the Optimism SDK card with Viem maintains consistent formatting and structure. However, since this represents a significant tool change, we should ensure all related documentation is updated.

Let's verify other potential references to the Optimism SDK that might need updating:

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Search for any remaining references to the Optimism SDK
# that might need to be updated to reference Viem instead

# Search for "Optimism SDK" or "sdk.optimism.io" references
rg -i "optimism sdk|sdk\.optimism\.io" ./pages/

# Also check if the new Viem link is accessible
curl -I https://viem.sh/op-stack/

Length of output: 10311

Comment on lines +56 to +68
redirects.forEach(redirect => {
const markdownRegex = new RegExp(`\\[([^\\]]+)\\]\\(${redirect.from}\\)`, 'g');
const hrefRegex = new RegExp(`href="${redirect.from}"`, 'g');

if (content.match(markdownRegex) || content.match(hrefRegex)) {
content = content
.replace(markdownRegex, `[$1](${redirect.to})`)
.replace(hrefRegex, `href="${redirect.to}"`);

updates.push(`${WHITE}Fixed in "${relativeFilePath}": ${YELLOW}${redirect.from}${WHITE} → ${GREEN}${redirect.to}${RESET}`);
hasChanges = true;
}
});
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Escape special characters in redirect paths to prevent regex errors

redirect.from may contain characters with special meanings in regular expressions (e.g., ., *, +, ?). Not escaping these characters can lead to incorrect matches or runtime errors. It's important to escape redirect.from when constructing regular expressions.

Apply this diff to fix the issue:

 async function fixFile(filePath: string, redirects: Redirect[]): Promise<boolean> {
   let content = await fs.readFile(filePath, 'utf-8');
   let hasChanges = false;
   const relativeFilePath = path.relative(rootDir, filePath);

-  redirects.forEach(redirect => {
-    const markdownRegex = new RegExp(`\\[([^\\]]+)\\]\\(${redirect.from}\\)`, 'g');
-    const hrefRegex = new RegExp(`href="${redirect.from}"`, 'g');
+  redirects.forEach(redirect => {
+    const escapedFrom = redirect.from.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
+    const escapedTo = redirect.to.replace(/[$]/g, '\\$&');
+    const markdownRegex = new RegExp(`\\[([^\\]]+)\\]\\(${escapedFrom}\\)`, 'g');
+    const hrefRegex = new RegExp(`href="${escapedFrom}"`, 'g');

     if (content.match(markdownRegex) || content.match(hrefRegex)) {
       content = content
-        .replace(markdownRegex, `[$1](${redirect.to})`)
-        .replace(hrefRegex, `href="${redirect.to}"`);
+        .replace(markdownRegex, `[$1](${escapedTo})`)
+        .replace(hrefRegex, `href="${escapedTo}"`);

       updates.push(`${WHITE}Fixed in "${relativeFilePath}": ${YELLOW}${redirect.from}${WHITE} → ${GREEN}${redirect.to}${RESET}`);
       hasChanges = true;
     }
   });
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
redirects.forEach(redirect => {
const markdownRegex = new RegExp(`\\[([^\\]]+)\\]\\(${redirect.from}\\)`, 'g');
const hrefRegex = new RegExp(`href="${redirect.from}"`, 'g');
if (content.match(markdownRegex) || content.match(hrefRegex)) {
content = content
.replace(markdownRegex, `[$1](${redirect.to})`)
.replace(hrefRegex, `href="${redirect.to}"`);
updates.push(`${WHITE}Fixed in "${relativeFilePath}": ${YELLOW}${redirect.from}${WHITE}${GREEN}${redirect.to}${RESET}`);
hasChanges = true;
}
});
redirects.forEach(redirect => {
const escapedFrom = redirect.from.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
const escapedTo = redirect.to.replace(/[$]/g, '\\$&');
const markdownRegex = new RegExp(`\\[([^\\]]+)\\]\\(${escapedFrom}\\)`, 'g');
const hrefRegex = new RegExp(`href="${escapedFrom}"`, 'g');
if (content.match(markdownRegex) || content.match(hrefRegex)) {
content = content
.replace(markdownRegex, `[$1](${escapedTo})`)
.replace(hrefRegex, `href="${escapedTo}"`);
updates.push(`${WHITE}Fixed in "${relativeFilePath}": ${YELLOW}${redirect.from}${WHITE}${GREEN}${redirect.to}${RESET}`);
hasChanges = true;
}
});

Comment on lines +61 to +65
while ((match = markdownLinkRegex.exec(content)) !== null) {
if (!match[2].startsWith('http')) {
links.push(match[2]);
}
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Avoid assignments within while loop conditions

Assignments within expressions can lead to confusion and potential bugs, as expressions are often expected to be side-effect free. It's clearer to separate the assignment from the loop condition.

Apply the following refactor:

 let match;
-while ((match = markdownLinkRegex.exec(content)) !== null) {
+match = markdownLinkRegex.exec(content);
+while (match !== null) {
   if (!match[2].startsWith('http')) {
     links.push(match[2]);
   }
+  match = markdownLinkRegex.exec(content);
 }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
while ((match = markdownLinkRegex.exec(content)) !== null) {
if (!match[2].startsWith('http')) {
links.push(match[2]);
}
}
let match;
match = markdownLinkRegex.exec(content);
while (match !== null) {
if (!match[2].startsWith('http')) {
links.push(match[2]);
}
match = markdownLinkRegex.exec(content);
}
🧰 Tools
🪛 Biome

[error] 61-61: The assignment should not be in an expression.

The use of assignments in expressions is confusing.
Expressions are often considered as side-effect free.

(lint/suspicious/noAssignInExpressions)

Comment on lines +32 to +37
return content.split('\n')
.filter(line => line.trim() && !line.startsWith('#'))
.map(line => {
const [from, to] = line.split(/\s+/);
return { from, to };
});
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Handle malformed lines in the redirects file

If a line in the _redirects file doesn't contain both a from and to path, it could cause errors or unexpected behavior. Adding validation ensures robustness when parsing the redirects.

Apply the following changes:

 return content.split('\n')
   .filter(line => line.trim() && !line.startsWith('#'))
   .map(line => {
     const [from, to] = line.split(/\s+/);
+    if (!from || !to) {
+      console.warn(`Malformed redirect line: "${line}"`);
+      return null;
+    }
     return { from, to };
   })
+  .filter((redirect): redirect is Redirect => redirect !== null);
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
return content.split('\n')
.filter(line => line.trim() && !line.startsWith('#'))
.map(line => {
const [from, to] = line.split(/\s+/);
return { from, to };
});
return content.split('\n')
.filter(line => line.trim() && !line.startsWith('#'))
.map(line => {
const [from, to] = line.split(/\s+/);
if (!from || !to) {
console.warn(`Malformed redirect line: "${line}"`);
return null;
}
return { from, to };
})
.filter((redirect): redirect is Redirect => redirect !== null);

Comment on lines +66 to +70
while ((match = hrefRegex.exec(content)) !== null) {
if (!match[1].startsWith('http')) {
links.push(match[1]);
}
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Avoid assignments within while loop conditions

Similar to the previous loop, assigning within the loop condition can obscure the code's intent. Refactoring enhances readability and maintainability.

Apply the following refactor:

 while ((match = hrefRegex.exec(content)) !== null) {
+match = hrefRegex.exec(content);
+while (match !== null) {
   if (!match[1].startsWith('http')) {
     links.push(match[1]);
   }
+  match = hrefRegex.exec(content);
 }

Committable suggestion skipped: line range outside the PR's diff.

🧰 Tools
🪛 Biome

[error] 66-66: The assignment should not be in an expression.

The use of assignments in expressions is confusing.
Expressions are often considered as side-effect free.

(lint/suspicious/noAssignInExpressions)

Comment on lines +79 to +84
links.forEach(link => {
const redirect = redirects.find(r => r.from === link);
if (redirect) {
warnings.push(formatWarning(relativeFilePath, link, redirect.to));
}
});
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Optimize redirects lookup using a Map for better performance

Using Array.find inside a loop can lead to performance issues, especially with a large number of redirects. Converting the redirects array to a Map improves lookup efficiency.

First, create a Map of redirects:

 const redirects = await getRedirects();
+const redirectsMap = new Map(redirects.map(r => [r.from, r.to]));

Then, update the checkFile function:

 async function checkFile(filePath: string, redirects: Redirect[]): Promise<void> {
   const content = await fs.readFile(filePath, 'utf-8');
   const links = extractLinks(content);
   const relativeFilePath = path.relative(rootDir, filePath);

-  links.forEach(link => {
-    const redirect = redirects.find(r => r.from === link);
-    if (redirect) {
-      warnings.push(formatWarning(relativeFilePath, link, redirect.to));
+  links.forEach(link => {
+    const toLink = redirectsMap.get(link);
+    if (toLink) {
+      warnings.push(formatWarning(relativeFilePath, link, toLink));
     }
   });
 }

Committable suggestion skipped: line range outside the PR's diff.

@saimeunt saimeunt closed this Nov 19, 2024
@saimeunt
Copy link
Author

Closing in favor of #1129

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.