Skip to content

Conversation

@1weiho
Copy link
Contributor

@1weiho 1weiho commented Jan 5, 2026

Description

It's a Raycast extension for next-lens — a Next.js App Router tool that scans your project and instantly lists API routes and page routes in the terminal, web UI, and MCP.

Screencast

next-lens-1 next-lens-2 next-lens-3

Checklist

- docs: add screenshots
- docs: update readme
- chore: remove file path subtitle
- feat: add configurable next-lens port with validation
- chore: improve not connect to next-lens message
- refactor: rename next-lens client file name
- feat: init next-lens extension
@raycastbot
Copy link
Collaborator

Congratulations on your new Raycast extension! 🚀

Due to our current reduced availability, the initial review may take up to 10-15 business days.

Once the PR is approved and merged, the extension will be available on our Store.

@1weiho 1weiho marked this pull request as ready for review January 5, 2026 15:08
@greptile-apps
Copy link
Contributor

greptile-apps bot commented Jan 5, 2026

Greptile Summary

Adds a new Raycast extension for next-lens, a Next.js App Router tool that scans projects to list API and page routes. The extension provides two commands: one for listing API routes with HTTP method filtering, and another for listing page routes with loading/error status indicators. Both commands support opening files in the user's preferred IDE and include proper error handling when the next-lens CLI integration is not running.

  • Clean TypeScript implementation with proper type definitions and React hooks
  • Follows all Raycast extension guidelines including Prettier configuration (printWidth: 120, singleQuote: false)
  • Uses modern ESLint flat config format with proper imports
  • Includes proper metadata screenshots and CHANGELOG with {PR_MERGE_DATE} placeholder
  • Proper keyboard shortcut platform capitalization (macOS and Windows)
  • Uses native fetch API (no unnecessary imports)
  • Port validation with user-friendly error messages

Confidence Score: 5/5

  • This PR is safe to merge with no issues found
  • The extension is well-implemented with proper error handling, follows all Raycast coding standards and custom rules, includes required metadata and documentation, and demonstrates clean TypeScript code with appropriate type safety
  • No files require special attention

Important Files Changed

Filename Overview
extensions/next-lens/package.json Configuration follows Raycast standards with correct Prettier settings, proper platform support, and well-defined commands and preferences
extensions/next-lens/src/list-api-routes.tsx Well-structured component with proper error handling, filtering functionality, and correct keyboard shortcut platform capitalization
extensions/next-lens/src/list-page-routes.tsx Clean implementation with good error handling and proper action panel organization for viewing multiple file types
extensions/next-lens/src/next-lens-client.ts Robust client with port validation, user-friendly error handling, and proper use of native fetch API

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

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

Additional Comments (5)

  1. extensions/next-lens/src/next-lens-client.ts, line 9-10 (link)

    syntax: Remove manual Preferences interface definition. Raycast auto-generates type definitions in raycast-env.d.ts when the extension runs based on your package.json preferences configuration.

    Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

    Context Used: Rule from dashboard - What: Don't manually define Preferences for getPreferenceValues() or commends Argument interfa... (source)

  2. extensions/next-lens/src/list-api-routes.tsx, line 18-19 (link)

    syntax: Remove manual Preferences interface definition. Raycast auto-generates type definitions in raycast-env.d.ts based on your package.json preferences.

    Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

    Context Used: Rule from dashboard - What: Don't manually define Preferences for getPreferenceValues() or commends Argument interfa... (source)

  3. extensions/next-lens/src/list-page-routes.tsx, line 17-18 (link)

    syntax: Remove manual Preferences interface definition. Raycast auto-generates type definitions in raycast-env.d.ts based on your package.json preferences.

    Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

    Context Used: Rule from dashboard - What: Don't manually define Preferences for getPreferenceValues() or commends Argument interfa... (source)

  4. extensions/next-lens/package.json, line 4 (link)

    style: Use title case for the extension title.

    Why: Title case improves readability and maintai... (source)

    Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

    Context Used: Rule from dashboard - What: Use title case for titles in package.json.

  5. extensions/next-lens/package.json, line 5 (link)

    style: Grammar issue: "the extension" should be removed or changed to "in the extension" for clarity.

    Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

11 files reviewed, 5 comments

Edit Code Review Agent Settings | Greptile

- fix: description grammar
- fix: don\'t manually define Preferences for getPreferenceValues()
@1weiho
Copy link
Contributor Author

1weiho commented Jan 5, 2026

@greptile-apps please review again

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

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

Additional Comments (4)

  1. extensions/next-lens/package.json, line 4 (link)

    style: title should use Title Case per style guide

    Why: Title case improves readability and maintai... (source)

    Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

    Context Used: Rule from dashboard - What: Use title case for titles in package.json.

  2. extensions/next-lens/src/list-api-routes.tsx, line 116-121 (link)

    style: add Windows keyboard shortcuts since extension supports Windows platform

    Context Used: Rule from dashboard - What: Ensure platforms only contains macOS and/or Windows, with macOS as the default when undefine... (source)

  3. extensions/next-lens/src/list-page-routes.tsx, line 88-102 (link)

    style: add Windows keyboard shortcuts since extension supports Windows platform

    Context Used: Rule from dashboard - What: Ensure platforms only contains macOS and/or Windows, with macOS as the default when undefine... (source)

  4. extensions/next-lens/src/list-page-routes.tsx, line 105-114 (link)

    style: add Windows keyboard shortcuts since extension supports Windows platform

    Context Used: Rule from dashboard - What: Ensure platforms only contains macOS and/or Windows, with macOS as the default when undefine... (source)

11 files reviewed, 4 comments

Edit Code Review Agent Settings | Greptile

- chore: support windows shortcut
- fix: title should use Title Case per style guide
@1weiho
Copy link
Contributor Author

1weiho commented Jan 5, 2026

@greptile-apps please review again

@1weiho 1weiho changed the title Add next-lens extension Add Next Lens extension Jan 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants