Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: CI

on:
push:
branches: [main]
pull_request:
branches: [main]

jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: 22
cache: npm

- run: npm ci

- name: Lint
run: npm run lint

- name: Format check
run: npm run format:check

- name: Type check
run: npm run typecheck

- name: Build
run: npm run build
1 change: 1 addition & 0 deletions .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
npx lint-staged
4 changes: 4 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
node_modules
dist
.raycast
raycast-env.d.ts
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,10 @@ Set the **Config File Path** preference in Raycast to point to your `config.yaml

```yaml
bookmarks:
- title: 'GitHub'
url: 'https://github.com'
- title: 'Google Cloud Console'
url: 'https://console.cloud.google.com'
- title: "GitHub"
url: "https://github.com"
- title: "Google Cloud Console"
url: "https://console.cloud.google.com"
```

Each entry requires `title` and `url` fields. Comments (`#`) can be used to organize bookmarks by category.
Expand Down
494 changes: 247 additions & 247 deletions config.yaml

Large diffs are not rendered by default.

49 changes: 49 additions & 0 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import raycastConfig from "@raycast/eslint-config";
import importPlugin from "eslint-plugin-import-x";
import reactHooks from "eslint-plugin-react-hooks";
import tseslint from "typescript-eslint";

export default tseslint.config(
...raycastConfig,

// Type-checked rules (requires parserOptions.projectService)
{
languageOptions: {
parserOptions: {
projectService: true,
tsconfigRootDir: import.meta.dirname,
},
},
rules: {
"@typescript-eslint/no-floating-promises": "error",
"@typescript-eslint/no-misused-promises": "error",
"@typescript-eslint/await-thenable": "error",
"@typescript-eslint/no-explicit-any": "error",
"@typescript-eslint/no-unnecessary-type-assertion": "warn",
"@typescript-eslint/require-await": "warn",
},
},

// Import ordering & validation
importPlugin.flatConfigs.recommended,
importPlugin.flatConfigs.typescript,
{
rules: {
"import-x/order": [
"warn",
{
groups: ["builtin", "external", "internal", "parent", "sibling", "index"],
"newlines-between": "always",
alphabetize: { order: "asc" },
},
],
"import-x/no-duplicates": "error",
},
},

// React hooks
{
plugins: { "react-hooks": reactHooks },
rules: reactHooks.configs.recommended.rules,
},
);
Loading
Loading