Skip to content

Conversation

@ari1110
Copy link

@ari1110 ari1110 commented Nov 24, 2025

Description

Screencast

Checklist

@raycastbot raycastbot added the new extension Label for PRs with new extensions label Nov 24, 2025
@raycastbot
Copy link
Collaborator

raycastbot commented Nov 24, 2025

Congratulations on your new Raycast extension! 🚀

You can expect an initial review within five business days.

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

@ari1110 ari1110 marked this pull request as ready for review November 24, 2025 21:16
@greptile-apps
Copy link
Contributor

greptile-apps bot commented Nov 24, 2025

Greptile Overview

Greptile Summary

This PR adds a new sports-scores extension that provides live sports scores and schedules from ESPN for multiple leagues (NFL, NBA, MLB, NHL, NCAA Football, NCAA Basketball, and EPL).

Key Changes:

  • Multi-sport support with smart search and league filtering
  • Dynamic game details with sport-specific layouts for pre-game, live, and post-game states
  • Date navigation with both daily and weekly modes for football
  • Smart caching strategy (30s) to optimize API calls and prevent redundant requests
  • Good error handling throughout with fallback to empty arrays

Issues Found:

  • Configuration files (.prettierrc and eslint.config.js) use custom settings instead of Raycast's standard templates (already flagged in previous reviews)
  • Missing metadata folder with screenshots - new extensions with view commands should include screenshots per Raycast documentation

Overall Assessment:
Well-structured extension with comprehensive features, good error handling, and thoughtful UX. The code quality is solid with proper use of usePromise, loading states, and caching. The configuration issues are minor style concerns that should be addressed for consistency with Raycast standards.

Confidence Score: 4/5

  • This PR is safe to merge with minor style adjustments needed
  • Score reflects solid code quality with good error handling and architecture, but deducted one point for missing metadata folder (required for new extensions with view commands) and non-standard configuration files that need updating to match Raycast standards
  • Pay attention to configuration files (.prettierrc and eslint.config.js) which need to be updated to Raycast standards, and ensure the metadata folder with screenshots is added before merging

Important Files Changed

File Analysis

Filename Score Overview
extensions/sports-scores/.prettierrc 2/5 Uses custom Prettier config (singleQuote: true, printWidth: 100) instead of Raycast standard
extensions/sports-scores/eslint.config.js 2/5 Uses custom ESLint config instead of standard Raycast template
extensions/sports-scores/src/index.tsx 4/5 Main component has good error handling in usePromise and proper loading states, complex logic well-structured
extensions/sports-scores/src/api/espn.ts 4/5 API module has good caching strategy and error handling with fallback to empty arrays

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.

21 files reviewed, 2 comments

Edit Code Review Agent Settings | Greptile

Comment on lines +1 to +4
{
"singleQuote": true,
"printWidth": 100
}
Copy link
Contributor

Choose a reason for hiding this comment

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

style: Use Raycast's standard Prettier configuration instead of custom settings

Suggested change
{
"singleQuote": true,
"printWidth": 100
}
{
"printWidth": 120,
"singleQuote": false
}

Context Used: Rule from dashboard - Extensions should use the standard Raycast Prettier configuration: `{"printWidth": 120, "singleQuote... (source)

Comment on lines +1 to +20
const prettier = require("eslint-config-prettier/flat");
const typescript = require("typescript-eslint");
const raycast = require("@raycast/eslint-plugin");
const js = require("@eslint/js");
const globals = require("globals");

module.exports = [
js.configs.recommended,
...typescript.configs.recommended,
{
languageOptions: {
ecmaVersion: 2022,
globals: {
...globals.node,
},
},
},
...raycast.configs.recommended, // Spread the array here
prettier,
];
Copy link
Contributor

Choose a reason for hiding this comment

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

style: Use the standard Raycast ESLint template

Suggested change
const prettier = require("eslint-config-prettier/flat");
const typescript = require("typescript-eslint");
const raycast = require("@raycast/eslint-plugin");
const js = require("@eslint/js");
const globals = require("globals");
module.exports = [
js.configs.recommended,
...typescript.configs.recommended,
{
languageOptions: {
ecmaVersion: 2022,
globals: {
...globals.node,
},
},
},
...raycast.configs.recommended, // Spread the array here
prettier,
];
const { defineConfig } = require("eslint/config");
const raycastConfig = require("@raycast/eslint-config");
module.exports = defineConfig([
...raycastConfig,
]);

@pernielsentikaer
Copy link
Collaborator

Hi @ari1110👋

Thanks for your contribution 🔥

Did you see similar extensions in the store before building this (we should try to enhance if possible)

Raycast Store: Sportssync by @daniyalmaster693

@pernielsentikaer pernielsentikaer marked this pull request as draft November 24, 2025 22:06
@ari1110
Copy link
Author

ari1110 commented Nov 25, 2025

Hi @pernielsentikaer

Nice to meet you! Yes, I did check out what was currently available, but it wasn't windows compatible. I also think what I've implemented is a much simpler version of just scoreboard information rather than what Daniyal has pushed to the store. I think there's room, if anything for both to co-exist.

Let me know your thoughts.

@ari1110 ari1110 marked this pull request as ready for review November 25, 2025 23:22
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.

21 files reviewed, 3 comments

Edit Code Review Agent Settings | Greptile

@pernielsentikaer
Copy link
Collaborator

Hi 👋

That it's not compabile with Windows is the least, you could open a PR with that enhancement - they do feel pretty related actually, what do you think @daniyalmaster693

In our Extensions Guidelines you'll see that you should try to enhance rather than creating a new extension
1764629583825

Is there some places you think it's way different that couldn't be enhanced?

@pernielsentikaer pernielsentikaer marked this pull request as draft December 1, 2025 22:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

new extension Label for PRs with new extensions

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants