Skip to content

Conversation

@matholamew
Copy link
Contributor

Description

This extension provides a quick and fun way to generate creative reasons to say "No" to requests, powered by the No-as-a-Service API (naas.isalman.dev).

Features:

  • Dynamic Rejection: Fetches a random, humorous, or professional rejection reason from the API.
  • Seamless Integration: Includes a "Copy to Clipboard" action as the primary response for quick sharing.
  • Manual Refresh: Supports Cmd + R to get a new reason instantly if the first one doesn't fit.
  • Custom Branding: Custom icons for both the extension and the primary command to match the Raycast aesthetic.

Screencast

No-as-a-service

Checklist

No-as-a-service

@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.

@greptile-apps
Copy link
Contributor

greptile-apps bot commented Jan 7, 2026

Greptile Summary

This PR adds a new "No as a Service" extension that fetches humorous rejection reasons from the NaaS API (naas.isalman.dev). The implementation is clean and follows Raycast extension patterns:

  • Uses useFetch hook with keepPreviousData for smooth UX
  • Provides copy-to-clipboard as primary action
  • Includes refresh action with standard keyboard shortcut
  • Proper error handling with toast notifications

Missing requirement: The extension has a view-type command but is missing the required metadata/ folder with screenshots for the Raycast store listing.

Confidence Score: 4/5

  • This PR is safe to merge once the metadata folder with screenshots is added.
  • The code implementation is solid with proper error handling and follows established patterns. Score reduced from 5 due to missing metadata folder which is a store requirement for view-type commands.
  • The extension directory needs a metadata/ folder with screenshots before publishing to the store.

Important Files Changed

Filename Overview
extensions/no-as-a-service/src/random-no.tsx Main command implementation - uses useFetch to get random "no" reasons from API with proper error handling and copy-to-clipboard action.
extensions/no-as-a-service/package.json Extension manifest with proper configuration, dependencies, and command definition.
extensions/no-as-a-service/CHANGELOG.md Changelog with proper {PR_MERGE_DATE} placeholder for initial version.

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 (2)

  1. extensions/no-as-a-service/src/random-no.tsx, line 46 (link)

    syntax: The icon arrow-clockwise.png doesn't exist in the assets folder. Use the built-in Raycast icon instead by importing Icon from @raycast/api and using Icon.ArrowClockwise.

    Also add Icon to the import on line 1:

    import { Detail, ActionPanel, Action, showToast, Toast, Icon } from "@raycast/api";
  2. extensions/no-as-a-service/CHANGELOG.md, line 3 (link)

    style: Per repository guidelines, use {PR_MERGE_DATE} placeholder instead of hardcoded date.

    Context Used: Rule from dashboard - What: Changelog entries must use {PR_MERGE_DATE} placeholder in titles, be placed at the top of th... (source)

6 files reviewed, 2 comments

Edit Code Review Agent Settings | Greptile

<Action
title="Get Another No"
onAction={() => revalidate()}
shortcut={{ modifiers: ["cmd"], key: "r" }}
Copy link
Contributor

Choose a reason for hiding this comment

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

suggestion: use common keyboard shortcuts

If you can can use common keyboard shortcuts for this, you can also better support windows users.

References:

Copy link
Contributor

@0xdhrv 0xdhrv left a comment

Choose a reason for hiding this comment

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

Minor suggestion

@0xdhrv
Copy link
Contributor

0xdhrv commented Jan 7, 2026

Hi 👋

Thanks for your contribution 💪

I have now tested your extension, and I have some feedback ready for you:

I'm looking forward to testing this extension again 🔥

I converted this PR into a draft until it's ready for the review, please press the button Ready for review when it's ready and we'll have a look 😊

Feel free to contact me here or at Slack if you have any questions.

@0xdhrv 0xdhrv marked this pull request as draft January 7, 2026 18:11
@matholamew
Copy link
Contributor Author

Thanks for the suggestion! I've updated the code to use Keyboard.Shortcut.Common.Refresh for better cross-platform support.

@matholamew matholamew marked this pull request as ready for review January 7, 2026 18:35
@greptile-apps
Copy link
Contributor

greptile-apps bot commented Jan 7, 2026

Greptile found no issues!

From now on, if a review finishes and we haven't found any issues, we will not post anything, but you can confirm that we reviewed your changes in the status check section.

This feature can be toggled off in your Code Review Settings by deselecting "Create a status check for each PR".

@0xdhrv 0xdhrv assigned 0xdhrv and unassigned pernielsentikaer Jan 8, 2026
Copy link
Contributor

@0xdhrv 0xdhrv left a comment

Choose a reason for hiding this comment

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

Hey 👋

Thank you for your contribution 🔥

This looks good to me 🚀

@0xdhrv 0xdhrv merged commit 575ed2f into raycast:main Jan 8, 2026
13 checks passed
@github-actions
Copy link
Contributor

github-actions bot commented Jan 8, 2026

Published to the Raycast Store:
https://raycast.com/nedini/no-as-a-service

@raycastbot
Copy link
Collaborator

🎉 🎉 🎉

We've rewarded your Raycast account with some credits. You will soon be able to exchange them for some swag.

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.

4 participants