Repository: Tsuyoshi84/learn_tagalog
Pull request #329: chore: Set up Code Rabbit config
Author: login: Tsuyoshi84
Created: 2025-04-29T09:46:04Z | Merged: 2025-04-29T10:06:12Z



<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

- **Chores**
	- Added a configuration file to set detailed guidelines and automated review settings for code contributions.
	- Updated the CI workflow to trigger only on pull requests that modify source files, excluding documentation and specific configuration or metadata files.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->


Diff:
diff --git a/.coderabbit.yaml b/.coderabbit.yaml
new file mode 100644
index 0000000..01d8d29
--- /dev/null
+++ b/.coderabbit.yaml
@@ -0,0 +1,70 @@
+# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json
+language: "en-US"
+early_access: true
+tone_instructions: 'You are an expert code reviewer in Vue, VueUse, Nuxt, TypeScript, and NodeJS. You work in an enterprise software developer team, providing concise and clear code review advice.'
+reviews:
+  profile: "assertive"
+  request_changes_workflow: false
+  high_level_summary: true
+  poem: false
+  review_status: true
+  commit_status: true
+  collapse_walkthrough: false
+  auto_review:
+    enabled: true
+    drafts: false
+    base_branches: ["main"]
+  path_instructions:
+    - path: "**/*.spec.ts"
+      instructions: |
+        Review the following code. Ensure that:
+        - Use Vitest for unit testing.
+        - Explicitly import Vitest APIs (e.g., `import { describe, it } from 'vitest'`).
+        - Prefer `it` over `test` for naming test cases.
+    - path: "**/*.ts"
+      instructions: |
+        Review the following code. Ensure that:
+        - Use UPPER_CASE for constants.
+        - Use upper case for acronyms. For example, name `getURL` instead of `getUrl`.
+        - Utilize composables, naming them as use<MyComposable>.
+        - Use **PascalCase** for component file names (e.g., `components/MyComponent.vue`).
+        - Use `Modal` prefix for modal components (e.g., `LevelSelectorModal.vue`).
+        - Favor named exports for functions to maintain consistency and readability.
+        - Prefer function declarations over function expressions. However, when passing a function to a parameter, prefer using a function expression.
+        - Define function return types for better readability and type safety.
+        - Use type over interface when possible.
+        - Use literal union types over enums.
+        - Use `unknown` over `any`.
+        - Use `undefined` over `null` when possible.
+        - Prefer `for...of` statement over `forEach`. However, allow use of `forEach` when chaining.
+        - Avoid non-null assertion operator (`!`) unless absolutely sure the value cannot be `null` or `undefined`.
+        - Put `as const` on constant objects.
+        - Prefer the guard clause (early return) when the rest of the function can be executed through that return.
+        - Use `Set` postfix for Set object variables.
+        - Use `Map` postfix for Map object variables.
+        - Do not rely on Nuxt auto-import system. Import files explicitly.
+        - Put .ts extension when importing TypeScript file
+        - Prefer `shallowRef` over `ref` unless deep watching is needed.
+    - path: "**/*.vue"
+      instructions: |
+        Review the following code. Ensure that:
+        - Use Naive UI component to structure pages and layouts
+        - Use **PascalCase** for component file names (e.g., `components/MyComponent.vue`).
+        - In SFC file, define each section in order: `<script>`, `<template>`, `<style>`.
+        - Prefer Composition API `<script setup>` style.
+        - Use TypeScript.
+        - Use `defineModel` for v-model bindings.
+        - Use `useTemplateRef` introduced in Vue 3.5 when you need a template reference.
+        - Define `computed` type for better type safety. For example, `const nextLevel = computed<number>(() => currentLevel.value + 1)`.
+        - Define prop types by specifying `defineProps` generic rather than `Props` type. For example, `defineProps<{ level: number }>()`.
+        - Define emit types by specifying `defineEmits` generic rather than `Emits` type. For example, `defineEmits<{ (e: 'close'): void }>()`.
+        - Prefer type-only emit declarations introduced in Vue 3.3. For example, `defineEmits<{ change: [id: number] }>()`.
+        - Always add JSDoc to component props and emits.
+        - For a reactive variable, use `undefined` over `null` if the default value is not known.
+        - Avoid using index for `key` attribute when using `v-for`.
+        - Prefer `v-show` over `v-if` for conditional visibility.
+        - Specify `type` attribute for `<button>` elements.
+        - Pass an object to `<NuxtLink :to>` for better type safety. For example, `<NuxtLink :to="{ name: 'about' }">`.
+        - Use TailwindCSS for styling.
+chat:
+  auto_reply: true
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index f984eb2..5b4062f 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -4,6 +4,16 @@ on:
   pull_request:
     branches: ["main"]
     types: [opened, synchronize, reopened, ready_for_review]
+    paths:
+      - "**/*.*"
+      - "!**/*.md"
+      - "!.coderabbit.yaml"
+      - "!.cursorrules"
+      - "!.cursor/**"
+      - "!.vscode/**"
+      - "!.github/dependabot.yml"
+      - "!.github/copilot-instructions.md"
+      - "!.github/PULL_REQUEST_TEMPLATE/**"
 
 jobs:
   test:


Reviews:
user: login: coderabbitai[bot]
body: **Actionable comments posted: 0**

<details>
<summary>🧹 Nitpick comments (1)</summary><blockquote>

<details>
<summary>.coderabbit.yaml (1)</summary><blockquote>

`73-73`: **Add a trailing newline at end of file.**

YAMLlint reports a missing newline at EOF. Please ensure the file ends with a newline character.

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

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 73-73: no new line character at the end of file

(new-line-at-end-of-file)

</details>

</details>

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used: .coderabbit.yaml**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 1816d3a559150dee9c50b81b36a13fa47afa7b19 and 1839a0d0fbfcb3fc46d78c1d6e952d842eea5454.

</details>

<details>
<summary>📒 Files selected for processing (2)</summary>

* `.coderabbit.yaml` (1 hunks)
* `.github/workflows/ci.yml` (1 hunks)

</details>

<details>
<summary>🧰 Additional context used</summary>

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

<details>
<summary>.coderabbit.yaml</summary>

[error] 73-73: no new line character at the end of file

(new-line-at-end-of-file)

</details>

</details>

</details>

<details>
<summary>🔇 Additional comments (2)</summary><blockquote>

<details>
<summary>.coderabbit.yaml (1)</summary>

`1-73`: **Configuration for CodeRabbit AI integration looks solid.**

The new `.coderabbit.yaml` aligns with the provided schema and sets helpful, context-aware guidelines for TypeScript, Vue SFCs, and test files. The review profile, enabled features, and auto-review rules are correctly scoped to your Nuxt/TypeScript/NodeJS project.

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

<details>
<summary>🪛 YAMLlint (1.35.1)</summary>

[error] 73-73: no new line character at the end of file

(new-line-at-end-of-file)

</details>

</details>

</details>
<details>
<summary>.github/workflows/ci.yml (1)</summary>

`7-16`: **Restrict CI to relevant file changes with path filters.**

The new `paths` filter prevents CI runs on docs and certain configs (including `.coderabbit.yaml`). Please verify that the negative patterns for dotfiles (e.g., `.cursorrules`, `.cursor/**`) work as expected under GitHub Actions’ glob rules. Consider testing a sample PR or reviewing the docs to confirm.

</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-29T09:49:02Z
user: login: coderabbitai[bot]
body: **Actionable comments posted: 2**

<details>
<summary>📜 Review details</summary>

**Configuration used: .coderabbit.yaml**
**Review profile: ASSERTIVE**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 1839a0d0fbfcb3fc46d78c1d6e952d842eea5454 and 319d9ce488ac2a3dbf05174ddf5ff4972efde9a6.

</details>

<details>
<summary>📒 Files selected for processing (1)</summary>

* `.coderabbit.yaml` (1 hunks)

</details>

<details>
<summary>🔇 Additional comments (3)</summary><blockquote>

<details>
<summary>.coderabbit.yaml (3)</summary>

`1-4`: **Configuration adheres to schema**  
The root-level settings—including the `$schema` directive, `language`, `early_access`, and `tone_instructions`—all conform to the CodeRabbit schema. The `language` value `en-US` is valid, and the `tone_instructions` string is under the 250-character limit.

---

`5-16`: **Review settings are well defined**  
The `reviews` section correctly sets an assertive profile, enables high-level summaries, commit statuses, and auto-review on `main`. Defaults for other flags (e.g., `request_changes_workflow`, `poem`, `collapse_walkthrough`) are explicitly set for clarity.

---

`71-72`: **Chat settings are valid**  
The `chat` section correctly enables automatic replies (`auto_reply: true`). Other chat integrations and issue-creation settings will fall back to their defaults as intended.

</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-29T09:55:32Z
user: login: Tsuyoshi84
state: COMMENTED
author_association: OWNER
submitted_at: 2025-04-29T10:00:36Z
user: login: coderabbitai[bot]
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-29T10:01:01Z

Review comments:
diff_hunk: @@ -0,0 +1,72 @@
+# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json
+language: "en-US"
+early_access: true
+tone_instructions: 'You are an expert code reviewer in Vue, VueUse, Nuxt, TypeScript, and NodeJS. You work in an enterprise software developer team, providing concise and clear code review advice.'
path: .coderabbit.yaml
user: login: coderabbitai[bot]
body: _🧹 Nitpick (assertive)_

**Use consistent quoting style**  
The file currently mixes double quotes (e.g., `"en-US"`) and single quotes for strings. For better readability, consider standardizing on one style—typically double quotes for YAML string literals.

<details>
<summary>🤖 Prompt for AI Agents (early access)</summary>

```
In .coderabbit.yaml around lines 2 to 4, the file uses mixed quoting styles for string values, with double quotes for "en-US" and single quotes for tone_instructions. To improve readability and maintain consistency, change the single quotes around tone_instructions to double quotes so that all string literals use double quotes uniformly.
```

</details>

<!-- This is an auto-generated comment by CodeRabbit -->
created_at: 2025-04-29T09:55:31Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,72 @@
+# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json
+language: "en-US"
+early_access: true
+tone_instructions: 'You are an expert code reviewer in Vue, VueUse, Nuxt, TypeScript, and NodeJS. You work in an enterprise software developer team, providing concise and clear code review advice.'
+reviews:
+  profile: "assertive"
+  request_changes_workflow: false
+  high_level_summary: true
+  poem: false
+  review_status: true
+  commit_status: true
+  collapse_walkthrough: false
+  auto_review:
+    enabled: true
+    drafts: false
+    base_branches: ["main"]
+  path_instructions:
+    - path: "**/*.ts"
+      instructions: |
+        Review the following code. Ensure that:
+        - Use UPPER_CASE for constants.
+        - Use upper case for acronyms. For example, name `getURL` instead of `getUrl`.
+        - Utilize composables, naming them as use<MyComposable>.
+        - Use **PascalCase** for component file names (e.g., `components/MyComponent.vue`).
+        - Use `Modal` prefix for modal components (e.g., `LevelSelectorModal.vue`).
+        - Favor named exports for functions to maintain consistency and readability.
+        - Prefer function declarations over function expressions. However, when passing a function to a parameter, prefer using a function expression.
+        - Define function return types for better readability and type safety.
+        - Use type over interface when possible.
+        - Use literal union types over enums.
+        - Use `unknown` over `any`.
+        - Use `undefined` over `null` when possible.
+        - Prefer `for...of` statement over `forEach`. However, allow use of `forEach` when chaining.
+        - Avoid non-null assertion operator (`!`) unless absolutely sure the value cannot be `null` or `undefined`.
+        - Put `as const` on constant objects.
+        - Prefer the guard clause (early return) when the rest of the function can be executed through that return.
+        - Use `Set` postfix for Set object variables.
+        - Use `Map` postfix for Map object variables.
+        - Do not rely on Nuxt auto-import system. Import files explicitly.
+        - Put .ts extension when importing TypeScript file
+        - Prefer `shallowRef` over `ref` unless deep watching is needed.
+
+    - path: "**/*.vue"
+      instructions: |
+        Review the following code. Ensure that:
+        - Use Naive UI component to structure pages and layouts
+        - Use **PascalCase** for component file names (e.g., `components/MyComponent.vue`).
+        - In SFC file, define each section in order: `<script>`, `<template>`, `<style>`.
+        - Prefer Composition API `<script setup>` style.
+        - Use TypeScript.
+        - Use `defineModel` for v-model bindings.
+        - Use `useTemplateRef` introduced in Vue 3.5 when you need a template reference.
+        - Define `computed` type for better type safety. For example, `const nextLevel = computed<number>(() => currentLevel.value + 1)`.
+        - Define prop types by specifying `defineProps` generic rather than `Props` type. For example, `defineProps<{ level: number }>()`.
+        - Define emit types by specifying `defineEmits` generic rather than `Emits` type. For example, `defineEmits<{ (e: 'close'): void }>()`.
+        - Prefer type-only emit declarations introduced in Vue 3.3. For example, `defineEmits<{ change: [id: number] }>()`.
+        - Always add JSDoc to component props and emits.
+        - For a reactive variable, use `undefined` over `null` if the default value is not known.
+        - Avoid using index for `key` attribute when using `v-for`.
+        - Prefer `v-show` over `v-if` for conditional visibility.
+        - Specify `type` attribute for `<button>` elements.
+        - Pass an object to `<NuxtLink :to>` for better type safety. For example, `<NuxtLink :to="{ name: 'about' }">`.
+        - Use TailwindCSS for styling.
+
+    - path: "**/*.spec.ts"
+      instructions: |
path: .coderabbit.yaml
user: login: coderabbitai[bot]
body: _🛠️ Refactor suggestion_

**Ensure test-specific rules don’t get overshadowed by general TS rules**  
The `**/*.ts` path-instruction will match all TypeScript files, including your test files (`*.spec.ts`), potentially causing both TS and test guidelines to merge. To prevent this overlap, either restrict the general TS rule or reorder the entries so that the spec rule comes first.  

Here’s one way to reorder:

```diff
 path_instructions:
-    - path: "**/*.ts"
+    - path: "**/*.spec.ts"
+      instructions: |
+        Review the following code. Ensure that:
+        - Use Vitest for unit testing.
+        - Explicitly import Vitest APIs (e.g., `import { describe, it } from 'vitest'`).
+        - Prefer `it` over `test` for naming test cases.
+    - path: "**/*.ts"
     instructions: |
       Review the following code. Ensure that:
       - Use UPPER_CASE for constants.
       ...
-    - path: "**/*.vue"
+    - path: "**/*.vue"
     instructions: |
       Review the following code. Ensure that:
       - Use Naive UI component to structure pages and layouts
       ...
```



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

<details>
<summary>🤖 Prompt for AI Agents (early access)</summary>

```
In the .coderabbit.yaml file between lines 17 and 66, the general TypeScript rules under the "**/*.ts" path currently apply to all TS files including test files (*.spec.ts), causing test-specific rules to be merged with general TS rules. To fix this, reorder the path_instructions so that the "**/*.spec.ts" entry appears before the "**/*.ts" entry, ensuring test-specific rules are applied first and not overshadowed by the general TS rules. Alternatively, restrict the "**/*.ts" path to exclude spec files explicitly.
```

</details>

<!-- This is an auto-generated reply by CodeRabbit -->

✅ Addressed in commit df025be
created_at: 2025-04-29T09:55:31Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,72 @@
+# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json
+language: "en-US"
+early_access: true
+tone_instructions: 'You are an expert code reviewer in Vue, VueUse, Nuxt, TypeScript, and NodeJS. You work in an enterprise software developer team, providing concise and clear code review advice.'
+reviews:
+  profile: "assertive"
+  request_changes_workflow: false
+  high_level_summary: true
+  poem: false
+  review_status: true
+  commit_status: true
+  collapse_walkthrough: false
+  auto_review:
+    enabled: true
+    drafts: false
+    base_branches: ["main"]
+  path_instructions:
+    - path: "**/*.ts"
+      instructions: |
+        Review the following code. Ensure that:
+        - Use UPPER_CASE for constants.
+        - Use upper case for acronyms. For example, name `getURL` instead of `getUrl`.
+        - Utilize composables, naming them as use<MyComposable>.
+        - Use **PascalCase** for component file names (e.g., `components/MyComponent.vue`).
+        - Use `Modal` prefix for modal components (e.g., `LevelSelectorModal.vue`).
+        - Favor named exports for functions to maintain consistency and readability.
+        - Prefer function declarations over function expressions. However, when passing a function to a parameter, prefer using a function expression.
+        - Define function return types for better readability and type safety.
+        - Use type over interface when possible.
+        - Use literal union types over enums.
+        - Use `unknown` over `any`.
+        - Use `undefined` over `null` when possible.
+        - Prefer `for...of` statement over `forEach`. However, allow use of `forEach` when chaining.
+        - Avoid non-null assertion operator (`!`) unless absolutely sure the value cannot be `null` or `undefined`.
+        - Put `as const` on constant objects.
+        - Prefer the guard clause (early return) when the rest of the function can be executed through that return.
+        - Use `Set` postfix for Set object variables.
+        - Use `Map` postfix for Map object variables.
+        - Do not rely on Nuxt auto-import system. Import files explicitly.
+        - Put .ts extension when importing TypeScript file
+        - Prefer `shallowRef` over `ref` unless deep watching is needed.
+
+    - path: "**/*.vue"
+      instructions: |
+        Review the following code. Ensure that:
+        - Use Naive UI component to structure pages and layouts
+        - Use **PascalCase** for component file names (e.g., `components/MyComponent.vue`).
+        - In SFC file, define each section in order: `<script>`, `<template>`, `<style>`.
+        - Prefer Composition API `<script setup>` style.
+        - Use TypeScript.
+        - Use `defineModel` for v-model bindings.
+        - Use `useTemplateRef` introduced in Vue 3.5 when you need a template reference.
+        - Define `computed` type for better type safety. For example, `const nextLevel = computed<number>(() => currentLevel.value + 1)`.
+        - Define prop types by specifying `defineProps` generic rather than `Props` type. For example, `defineProps<{ level: number }>()`.
+        - Define emit types by specifying `defineEmits` generic rather than `Emits` type. For example, `defineEmits<{ (e: 'close'): void }>()`.
+        - Prefer type-only emit declarations introduced in Vue 3.3. For example, `defineEmits<{ change: [id: number] }>()`.
+        - Always add JSDoc to component props and emits.
+        - For a reactive variable, use `undefined` over `null` if the default value is not known.
+        - Avoid using index for `key` attribute when using `v-for`.
+        - Prefer `v-show` over `v-if` for conditional visibility.
+        - Specify `type` attribute for `<button>` elements.
+        - Pass an object to `<NuxtLink :to>` for better type safety. For example, `<NuxtLink :to="{ name: 'about' }">`.
+        - Use TailwindCSS for styling.
+
+    - path: "**/*.spec.ts"
+      instructions: |
path: .coderabbit.yaml
user: login: Tsuyoshi84
body: I fixed that in [df025be](https://github.com/Tsuyoshi84/learn_tagalog/pull/329/commits/df025be95e1cd6fc2bf0be916eb2749e9e7bd2f8)
created_at: 2025-04-29T10:00:36Z
author_association: OWNER
diff_hunk: @@ -0,0 +1,72 @@
+# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json
+language: "en-US"
+early_access: true
+tone_instructions: 'You are an expert code reviewer in Vue, VueUse, Nuxt, TypeScript, and NodeJS. You work in an enterprise software developer team, providing concise and clear code review advice.'
+reviews:
+  profile: "assertive"
+  request_changes_workflow: false
+  high_level_summary: true
+  poem: false
+  review_status: true
+  commit_status: true
+  collapse_walkthrough: false
+  auto_review:
+    enabled: true
+    drafts: false
+    base_branches: ["main"]
+  path_instructions:
+    - path: "**/*.ts"
+      instructions: |
+        Review the following code. Ensure that:
+        - Use UPPER_CASE for constants.
+        - Use upper case for acronyms. For example, name `getURL` instead of `getUrl`.
+        - Utilize composables, naming them as use<MyComposable>.
+        - Use **PascalCase** for component file names (e.g., `components/MyComponent.vue`).
+        - Use `Modal` prefix for modal components (e.g., `LevelSelectorModal.vue`).
+        - Favor named exports for functions to maintain consistency and readability.
+        - Prefer function declarations over function expressions. However, when passing a function to a parameter, prefer using a function expression.
+        - Define function return types for better readability and type safety.
+        - Use type over interface when possible.
+        - Use literal union types over enums.
+        - Use `unknown` over `any`.
+        - Use `undefined` over `null` when possible.
+        - Prefer `for...of` statement over `forEach`. However, allow use of `forEach` when chaining.
+        - Avoid non-null assertion operator (`!`) unless absolutely sure the value cannot be `null` or `undefined`.
+        - Put `as const` on constant objects.
+        - Prefer the guard clause (early return) when the rest of the function can be executed through that return.
+        - Use `Set` postfix for Set object variables.
+        - Use `Map` postfix for Map object variables.
+        - Do not rely on Nuxt auto-import system. Import files explicitly.
+        - Put .ts extension when importing TypeScript file
+        - Prefer `shallowRef` over `ref` unless deep watching is needed.
+
+    - path: "**/*.vue"
+      instructions: |
+        Review the following code. Ensure that:
+        - Use Naive UI component to structure pages and layouts
+        - Use **PascalCase** for component file names (e.g., `components/MyComponent.vue`).
+        - In SFC file, define each section in order: `<script>`, `<template>`, `<style>`.
+        - Prefer Composition API `<script setup>` style.
+        - Use TypeScript.
+        - Use `defineModel` for v-model bindings.
+        - Use `useTemplateRef` introduced in Vue 3.5 when you need a template reference.
+        - Define `computed` type for better type safety. For example, `const nextLevel = computed<number>(() => currentLevel.value + 1)`.
+        - Define prop types by specifying `defineProps` generic rather than `Props` type. For example, `defineProps<{ level: number }>()`.
+        - Define emit types by specifying `defineEmits` generic rather than `Emits` type. For example, `defineEmits<{ (e: 'close'): void }>()`.
+        - Prefer type-only emit declarations introduced in Vue 3.3. For example, `defineEmits<{ change: [id: number] }>()`.
+        - Always add JSDoc to component props and emits.
+        - For a reactive variable, use `undefined` over `null` if the default value is not known.
+        - Avoid using index for `key` attribute when using `v-for`.
+        - Prefer `v-show` over `v-if` for conditional visibility.
+        - Specify `type` attribute for `<button>` elements.
+        - Pass an object to `<NuxtLink :to>` for better type safety. For example, `<NuxtLink :to="{ name: 'about' }">`.
+        - Use TailwindCSS for styling.
+
+    - path: "**/*.spec.ts"
+      instructions: |
path: .coderabbit.yaml
user: login: coderabbitai[bot]
body: @Tsuyoshi84 Thanks for implementing that fix! The reordering of the path instructions will ensure that your test-specific guidelines are properly applied to spec files without being overshadowed by the general TypeScript rules. Good job! 👍

---

<!-- This is an auto-generated comment: tweet message by coderabbit.ai -->

If you found this review helpful, would you consider giving us a shout-out on [X](https://twitter.com/intent/tweet?related=CodeRabbitAI&text=Avoid%20test%20rules%20being%20overridden%20by%20general%20TS%20rules!%20Reorder%20your%20path_instructions%20so%20%60**%2F*.spec.ts%60%20comes%20before%20%60**%2F*.ts%60%20for%20clear%2C%20precise%20linting.%20Try%20%40coderabbitai%20%F0%9F%9B%A0%EF%B8%8F%E2%9C%A8&url=https%3A%2F%2Fgithub.com%2FTsuyoshi84%2Flearn_tagalog%2Fpull%2F329%23discussion_r2065967166)?

Thank you for using CodeRabbit!

<!-- end of auto-generated comment: tweet message by coderabbit.ai -->




<!-- <agentComponentType>chat-answer</agentComponentType> -->

<!-- <rawResChunk><answer>@Tsuyoshi84 Thanks for implementing that fix! The reordering of the path instructions will ensure that your test-specific guidelines are properly applied to spec files without being overshadowed by the general TypeScript rules. Good job! 👍

---

&lt;!-- This is an auto-generated comment: tweet message by coderabbit.ai --&gt;

If you found this review helpful, would you consider giving us a shout-out on [X](https://twitter.com/intent/tweet?related=CodeRabbitAI&text=Avoid%20test%20rules%20being%20overridden%20by%20general%20TS%20rules!%20Reorder%20your%20path_instructions%20so%20%60**%2F*.spec.ts%60%20comes%20before%20%60**%2F*.ts%60%20for%20clear%2C%20precise%20linting.%20Try%20%40coderabbitai%20%F0%9F%9B%A0%EF%B8%8F%E2%9C%A8&url=https%3A%2F%2Fgithub.com%2FTsuyoshi84%2Flearn_tagalog%2Fpull%2F329%23discussion_r2065967166)?

Thank you for using CodeRabbit!

&lt;!-- end of auto-generated comment: tweet message by coderabbit.ai --&gt;

</answer></rawResChunk> -->

<!-- This is an auto-generated reply by CodeRabbit -->
created_at: 2025-04-29T10:01:01Z
author_association: CONTRIBUTOR

PR comments:
user: login: vercel[bot]
created_at: 2025-04-29T09:46:06Z
body: [vc]: #ntvMo1C+qJPb0fcaRaywt0ViFsihMPivJgAzxVt9r7g=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHMiOlt7Im5hbWUiOiJsZWFybi10YWdhbG9nIiwiaW5zcGVjdG9yVXJsIjoiaHR0cHM6Ly92ZXJjZWwuY29tL3RzdXlvc2hpODRzLXByb2plY3RzL2xlYXJuLXRhZ2Fsb2cvNTdrbXBYanUyc0xCNjRoYzRyc2tQd3FURko1bSIsInByZXZpZXdVcmwiOiJsZWFybi10YWdhbG9nLWdpdC1jaG9yZS1yYWJiaXQtdHN1eW9zaGk4NHMtcHJvamVjdHMudmVyY2VsLmFwcCIsIm5leHRDb21taXRTdGF0dXMiOiJERVBMT1lFRCIsImxpdmVGZWVkYmFjayI6eyJyZXNvbHZlZCI6MCwidW5yZXNvbHZlZCI6MCwidG90YWwiOjAsImxpbmsiOiJsZWFybi10YWdhbG9nLWdpdC1jaG9yZS1yYWJiaXQtdHN1eW9zaGk4NHMtcHJvamVjdHMudmVyY2VsLmFwcCJ9LCJyb290RGlyZWN0b3J5IjpudWxsfV19
**The latest updates on your projects**. Learn more about [Vercel for Git ↗︎](https://vercel.link/github-learn-more)

| Name | Status | Preview | Comments | Updated (UTC) |
| :--- | :----- | :------ | :------- | :------ |
| **learn-tagalog** | ✅ Ready ([Inspect](https://vercel.com/tsuyoshi84s-projects/learn-tagalog/57kmpXju2sLB64hc4rskPwqTFJ5m)) | [Visit Preview](https://learn-tagalog-git-chore-rabbit-tsuyoshi84s-projects.vercel.app) | 💬 [**Add feedback**](https://vercel.live/open-feedback/learn-tagalog-git-chore-rabbit-tsuyoshi84s-projects.vercel.app?via=pr-comment-feedback-link) | Apr 29, 2025 9:59am |


author_association: NONE
user: login: coderabbitai[bot]
created_at: 2025-04-29T09:46:12Z
body: <!-- This is an auto-generated comment: summarize by coderabbit.ai -->
<!-- This is an auto-generated comment: rate limited by coderabbit.ai -->

> [!WARNING]
> ## Rate limit exceeded
> 
> @Tsuyoshi84 has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait **2 minutes and 6 seconds** before requesting another review.
> 
> <details>
> <summary>⌛ How to resolve this issue?</summary>
> 
> After the wait time has elapsed, a review can be triggered using the `@coderabbitai review` command as a PR comment. Alternatively, push new commits to this PR.
> 
> We recommend that you space out your commits to avoid hitting the rate limit.
> 
> </details>
> 
> 
> <details>
> <summary>🚦 How do rate limits work?</summary>
> 
> CodeRabbit enforces hourly rate limits for each developer per organization.
> 
> Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.
> 
> Please see our [FAQ](https://docs.coderabbit.ai/faq) for further information.
> 
> </details>
> 
> <details>
> <summary>📥 Commits</summary>
> 
> Reviewing files that changed from the base of the PR and between 319d9ce488ac2a3dbf05174ddf5ff4972efde9a6 and df025be95e1cd6fc2bf0be916eb2749e9e7bd2f8.
> 
> </details>
> 
> <details>
> <summary>📒 Files selected for processing (1)</summary>
> 
> * `.coderabbit.yaml` (1 hunks)
> 
> </details>

<!-- end of auto-generated comment: rate limited by coderabbit.ai -->
<!-- walkthrough_start -->

## Walkthrough

A new `.coderabbit.yaml` configuration file was introduced to define explicit code review rules and AI assistant behavior for a Vue, Nuxt, TypeScript, and NodeJS codebase. The file details naming conventions, coding style, import rules, and framework-specific requirements for TypeScript, Vue, and test files. Additionally, the GitHub Actions CI workflow (`ci.yml`) was modified to restrict workflow runs to pull requests that alter source code or relevant files, excluding documentation and certain configuration files from triggering the CI pipeline.

## Changes

| File(s)                    | Change Summary                                                                                                                                                                                                                                                                                                                                                      |
|----------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `.coderabbit.yaml`          | Added a configuration file specifying CodeRabbit AI review settings, language, review profile, and detailed path-specific review instructions for TypeScript, Vue, and test files. Enforces naming conventions, coding styles, import/export rules, framework usage, and accessibility standards. Enables auto-review for non-draft PRs on main branch and auto-reply in chat. |
| `.github/workflows/ci.yml` | Updated the CI workflow to restrict runs to pull requests that modify source code or relevant files, explicitly excluding markdown, certain configuration files, editor settings, and GitHub metadata files from triggering the workflow. No changes to jobs, steps, or permissions.                                                                                 |

## Sequence Diagram(s)

```mermaid
sequenceDiagram
    participant Developer
    participant GitHub
    participant CodeRabbit

    Developer->>GitHub: Open Pull Request (PR)
    GitHub->>GitHub: Check changed files against ci.yml paths filter
    alt Source code or relevant file changed
        GitHub->>GitHub: Trigger CI workflow
    else Only excluded files changed
        GitHub--xGitHub: Skip CI workflow
    end

    Developer->>CodeRabbit: PR with code changes
    CodeRabbit->>CodeRabbit: Apply .coderabbit.yaml review rules
    CodeRabbit-->>Developer: Automated code review and feedback
```

<!-- walkthrough_end -->
<!-- internal state start -->


<!-- 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 -->

<!-- internal state end -->
<!-- tips_start -->

---

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

<details>
<summary>❤️ Share</summary>

- [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai)
- [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai)
- [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai)
- [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)

</details>

<details>
<summary>🪧 Tips</summary>

### Chat

There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai?utm_source=oss&utm_medium=github&utm_campaign=Tsuyoshi84/learn_tagalog&utm_content=329):

- 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 generate docstrings` to [generate docstrings](https://docs.coderabbit.ai/finishing-touches/docstrings) for this PR.
- `@coderabbitai generate sequence diagram` to generate a sequence diagram of the changes in this 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](https://docs.coderabbit.ai) for detailed information on how to use CodeRabbit.
- Join our [Discord Community](http://discord.gg/coderabbit) to get help, request features, and share feedback.
- Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.

</details>

<!-- tips_end -->
author_association: CONTRIBUTOR