Skip to content
Closed
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
10 changes: 10 additions & 0 deletions .cursor/skills/agoda-ioc-dependency-injection/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,16 @@ description: Enforces use of Agoda.IoC attribute-based dependency injection regi

# Agoda.IoC for Dependency Injection

## Requirement levels (RFC 2119)

The key words **MUST**, **MUST NOT**, **REQUIRED**, **SHALL**, **SHALL NOT**, **SHOULD**, **SHOULD NOT**, **RECOMMENDED**, **NOT RECOMMENDED**, **MAY**, and **OPTIONAL** in this document are to be interpreted as described in RFC 2119.

Interpretation for contributors and reviewers:
- **MUST / MUST NOT**: non-negotiable requirement (blocking)
- **SHOULD / SHOULD NOT**: strong default; deviations require explicit rationale
- **MAY / OPTIONAL**: context-dependent choice


Use [Agoda.IoC](https://github.com/agoda-com/Agoda.IoC) attribute-based registration in all C# **application** projects. Do NOT use it in **library/SDK** projects — libraries should not force a DI framework on their consumers.

## Why Attribute-Based Registration
Expand Down
10 changes: 10 additions & 0 deletions .cursor/skills/api-response-for-browser/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,16 @@ description: Enforces efficient API endpoint design when serving data to browser

# API Response Design for Browser Clients

## Requirement levels (RFC 2119)

The key words **MUST**, **MUST NOT**, **REQUIRED**, **SHALL**, **SHALL NOT**, **SHOULD**, **SHOULD NOT**, **RECOMMENDED**, **NOT RECOMMENDED**, **MAY**, and **OPTIONAL** in this document are to be interpreted as described in RFC 2119.

Interpretation for contributors and reviewers:
- **MUST / MUST NOT**: non-negotiable requirement (blocking)
- **SHOULD / SHOULD NOT**: strong default; deviations require explicit rationale
- **MAY / OPTIONAL**: context-dependent choice


## Rule

**Shape data on the server to match what the page needs. Minimise the number of HTTP requests per page.**
Expand Down
10 changes: 10 additions & 0 deletions .cursor/skills/csharp-async-patterns/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,16 @@ description: >-

# C# Async/Await Standards

## Requirement levels (RFC 2119)

The key words **MUST**, **MUST NOT**, **REQUIRED**, **SHALL**, **SHALL NOT**, **SHOULD**, **SHOULD NOT**, **RECOMMENDED**, **NOT RECOMMENDED**, **MAY**, and **OPTIONAL** in this document are to be interpreted as described in RFC 2119.

Interpretation for contributors and reviewers:
- **MUST / MUST NOT**: non-negotiable requirement (blocking)
- **SHOULD / SHOULD NOT**: strong default; deviations require explicit rationale
- **MAY / OPTIONAL**: context-dependent choice


## Always use async API versions

Prefer the async version of any method when it exists. No downsides.
Expand Down
10 changes: 10 additions & 0 deletions .cursor/skills/csharp-code-style/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,16 @@ description: >-

# C# Code Style Standards

## Requirement levels (RFC 2119)

The key words **MUST**, **MUST NOT**, **REQUIRED**, **SHALL**, **SHALL NOT**, **SHOULD**, **SHOULD NOT**, **RECOMMENDED**, **NOT RECOMMENDED**, **MAY**, and **OPTIONAL** in this document are to be interpreted as described in RFC 2119.

Interpretation for contributors and reviewers:
- **MUST / MUST NOT**: non-negotiable requirement (blocking)
- **SHOULD / SHOULD NOT**: strong default; deviations require explicit rationale
- **MAY / OPTIONAL**: context-dependent choice


## Naming conventions

Follow Resharper defaults for consistency.
Expand Down
10 changes: 10 additions & 0 deletions .cursor/skills/csharp-collections/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,16 @@ description: >-

# C# Collection Standards

## Requirement levels (RFC 2119)

The key words **MUST**, **MUST NOT**, **REQUIRED**, **SHALL**, **SHALL NOT**, **SHOULD**, **SHOULD NOT**, **RECOMMENDED**, **NOT RECOMMENDED**, **MAY**, and **OPTIONAL** in this document are to be interpreted as described in RFC 2119.

Interpretation for contributors and reviewers:
- **MUST / MUST NOT**: non-negotiable requirement (blocking)
- **SHOULD / SHOULD NOT**: strong default; deviations require explicit rationale
- **MAY / OPTIONAL**: context-dependent choice


## Do not use Arrays

No public method may return an Array (except `byte[]` for binary data). Use `List<T>`, `IEnumerable<T>`, `Dictionary<K,V>`, `HashSet<T>` instead. Arrays are only acceptable internally for performance-critical or raw binary scenarios.
Expand Down
10 changes: 10 additions & 0 deletions .cursor/skills/csharp-configuration/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,16 @@ description: >-

# C# Configuration Standards

## Requirement levels (RFC 2119)

The key words **MUST**, **MUST NOT**, **REQUIRED**, **SHALL**, **SHALL NOT**, **SHOULD**, **SHOULD NOT**, **RECOMMENDED**, **NOT RECOMMENDED**, **MAY**, and **OPTIONAL** in this document are to be interpreted as described in RFC 2119.

Interpretation for contributors and reviewers:
- **MUST / MUST NOT**: non-negotiable requirement (blocking)
- **SHOULD / SHOULD NOT**: strong default; deviations require explicit rationale
- **MAY / OPTIONAL**: context-dependent choice


## Config files: only for Consul bootstrap and secrets

For new projects, `web/app.config` should only contain:
Expand Down
10 changes: 10 additions & 0 deletions .cursor/skills/csharp-exception-handling/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,16 @@ description: >-

# C# Exception Handling Standards

## Requirement levels (RFC 2119)

The key words **MUST**, **MUST NOT**, **REQUIRED**, **SHALL**, **SHALL NOT**, **SHOULD**, **SHOULD NOT**, **RECOMMENDED**, **NOT RECOMMENDED**, **MAY**, and **OPTIONAL** in this document are to be interpreted as described in RFC 2119.

Interpretation for contributors and reviewers:
- **MUST / MUST NOT**: non-negotiable requirement (blocking)
- **SHOULD / SHOULD NOT**: strong default; deviations require explicit rationale
- **MAY / OPTIONAL**: context-dependent choice


## Be specific in what you catch

Catch the most specific exception type possible. Never catch `System.Exception` when you only handle a specific scenario.
Expand Down
10 changes: 10 additions & 0 deletions .cursor/skills/csharp-extension-methods/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,16 @@ description: >-

# C# Extension Method Standards

## Requirement levels (RFC 2119)

The key words **MUST**, **MUST NOT**, **REQUIRED**, **SHALL**, **SHALL NOT**, **SHOULD**, **SHOULD NOT**, **RECOMMENDED**, **NOT RECOMMENDED**, **MAY**, and **OPTIONAL** in this document are to be interpreted as described in RFC 2119.

Interpretation for contributors and reviewers:
- **MUST / MUST NOT**: non-negotiable requirement (blocking)
- **SHOULD / SHOULD NOT**: strong default; deviations require explicit rationale
- **MAY / OPTIONAL**: context-dependent choice


## When to write an extension method

Only when at least one is true:
Expand Down
10 changes: 10 additions & 0 deletions .cursor/skills/csharp-gui-testing/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,16 @@ description: >-

# C# GUI Testing Standards

## Requirement levels (RFC 2119)

The key words **MUST**, **MUST NOT**, **REQUIRED**, **SHALL**, **SHALL NOT**, **SHOULD**, **SHOULD NOT**, **RECOMMENDED**, **NOT RECOMMENDED**, **MAY**, and **OPTIONAL** in this document are to be interpreted as described in RFC 2119.

Interpretation for contributors and reviewers:
- **MUST / MUST NOT**: non-negotiable requirement (blocking)
- **SHOULD / SHOULD NOT**: strong default; deviations require explicit rationale
- **MAY / OPTIONAL**: context-dependent choice


## Use CSS selectors, not XPath

XPath is unfamiliar to most developers and adds noise. Since we identify elements with `data-selenium`, CSS selectors are sufficient.
Expand Down
10 changes: 10 additions & 0 deletions .cursor/skills/csharp-logging/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,16 @@ description: >-

# C# Logging Standards

## Requirement levels (RFC 2119)

The key words **MUST**, **MUST NOT**, **REQUIRED**, **SHALL**, **SHALL NOT**, **SHOULD**, **SHOULD NOT**, **RECOMMENDED**, **NOT RECOMMENDED**, **MAY**, and **OPTIONAL** in this document are to be interpreted as described in RFC 2119.

Interpretation for contributors and reviewers:
- **MUST / MUST NOT**: non-negotiable requirement (blocking)
- **SHOULD / SHOULD NOT**: strong default; deviations require explicit rationale
- **MAY / OPTIONAL**: context-dependent choice


## Log message guidelines

- Short but relevant messages
Expand Down
10 changes: 10 additions & 0 deletions .cursor/skills/csharp-service-design/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,16 @@ description: >-

# C# Service Design Standards

## Requirement levels (RFC 2119)

The key words **MUST**, **MUST NOT**, **REQUIRED**, **SHALL**, **SHALL NOT**, **SHOULD**, **SHOULD NOT**, **RECOMMENDED**, **NOT RECOMMENDED**, **MAY**, and **OPTIONAL** in this document are to be interpreted as described in RFC 2119.

Interpretation for contributors and reviewers:
- **MUST / MUST NOT**: non-negotiable requirement (blocking)
- **SHOULD / SHOULD NOT**: strong default; deviations require explicit rationale
- **MAY / OPTIONAL**: context-dependent choice


## Interfaces

Only create an interface if:
Expand Down
10 changes: 10 additions & 0 deletions .cursor/skills/csharp-testing-strategy/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,16 @@ description: Enforces the Honeycomb testing strategy for C# services. Prefer bla

# C# Testing Strategy

## Requirement levels (RFC 2119)

The key words **MUST**, **MUST NOT**, **REQUIRED**, **SHALL**, **SHALL NOT**, **SHOULD**, **SHOULD NOT**, **RECOMMENDED**, **NOT RECOMMENDED**, **MAY**, and **OPTIONAL** in this document are to be interpreted as described in RFC 2119.

Interpretation for contributors and reviewers:
- **MUST / MUST NOT**: non-negotiable requirement (blocking)
- **SHOULD / SHOULD NOT**: strong default; deviations require explicit rationale
- **MAY / OPTIONAL**: context-dependent choice


This skill follows the **Honeycomb testing model**: the bulk of tests should be integration tests that exercise real behavior through the HTTP boundary, not unit tests of internal classes. Unit tests are reserved for pure helper/utility methods with no dependencies.

## Test Pyramid vs Honeycomb
Expand Down
10 changes: 10 additions & 0 deletions .cursor/skills/csharp-testing/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,16 @@ description: >-

# C# Testing Standards

## Requirement levels (RFC 2119)

The key words **MUST**, **MUST NOT**, **REQUIRED**, **SHALL**, **SHALL NOT**, **SHOULD**, **SHOULD NOT**, **RECOMMENDED**, **NOT RECOMMENDED**, **MAY**, and **OPTIONAL** in this document are to be interpreted as described in RFC 2119.

Interpretation for contributors and reviewers:
- **MUST / MUST NOT**: non-negotiable requirement (blocking)
- **SHOULD / SHOULD NOT**: strong default; deviations require explicit rationale
- **MAY / OPTIONAL**: context-dependent choice


## Why we test

- Validate code does what we think it does
Expand Down
10 changes: 10 additions & 0 deletions .cursor/skills/csharp-web-structure/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,16 @@ description: >-

# C# Web Solution Structure Standards

## Requirement levels (RFC 2119)

The key words **MUST**, **MUST NOT**, **REQUIRED**, **SHALL**, **SHALL NOT**, **SHOULD**, **SHOULD NOT**, **RECOMMENDED**, **NOT RECOMMENDED**, **MAY**, and **OPTIONAL** in this document are to be interpreted as described in RFC 2119.

Interpretation for contributors and reviewers:
- **MUST / MUST NOT**: non-negotiable requirement (blocking)
- **SHOULD / SHOULD NOT**: strong default; deviations require explicit rationale
- **MAY / OPTIONAL**: context-dependent choice


## Presentation project

### View models / DTOs
Expand Down
10 changes: 10 additions & 0 deletions .cursor/skills/find-root-cause/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,16 @@ description: Enforces root-cause analysis before fixing bugs or resolving errors

# Find the Root Cause

## Requirement levels (RFC 2119)

The key words **MUST**, **MUST NOT**, **REQUIRED**, **SHALL**, **SHALL NOT**, **SHOULD**, **SHOULD NOT**, **RECOMMENDED**, **NOT RECOMMENDED**, **MAY**, and **OPTIONAL** in this document are to be interpreted as described in RFC 2119.

Interpretation for contributors and reviewers:
- **MUST / MUST NOT**: non-negotiable requirement (blocking)
- **SHOULD / SHOULD NOT**: strong default; deviations require explicit rationale
- **MAY / OPTIONAL**: context-dependent choice


## Core Rule

**Never patch symptoms. Always find and fix the root cause.** Before writing any fix, trace the problem to its origin. A fix that suppresses the symptom without addressing why it happened will fail again — or worse, hide the real issue until it causes broader damage.
Expand Down
10 changes: 10 additions & 0 deletions .cursor/skills/no-browser-datetime/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,16 @@ description: Enforces that Date objects and datetime types are never used in bro

# No DateTime in the Browser

## Requirement levels (RFC 2119)

The key words **MUST**, **MUST NOT**, **REQUIRED**, **SHALL**, **SHALL NOT**, **SHOULD**, **SHOULD NOT**, **RECOMMENDED**, **NOT RECOMMENDED**, **MAY**, and **OPTIONAL** in this document are to be interpreted as described in RFC 2119.

Interpretation for contributors and reviewers:
- **MUST / MUST NOT**: non-negotiable requirement (blocking)
- **SHOULD / SHOULD NOT**: strong default; deviations require explicit rationale
- **MAY / OPTIONAL**: context-dependent choice


## Rule

**Never use `Date` objects or datetime types in browser/frontend code.**
Expand Down
10 changes: 10 additions & 0 deletions .cursor/skills/no-test-code-in-production/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,16 @@ description: Enforces that mocks, stubs, fakes, and other test-only code are nev

# No Test Code in Production

## Requirement levels (RFC 2119)

The key words **MUST**, **MUST NOT**, **REQUIRED**, **SHALL**, **SHALL NOT**, **SHOULD**, **SHOULD NOT**, **RECOMMENDED**, **NOT RECOMMENDED**, **MAY**, and **OPTIONAL** in this document are to be interpreted as described in RFC 2119.

Interpretation for contributors and reviewers:
- **MUST / MUST NOT**: non-negotiable requirement (blocking)
- **SHOULD / SHOULD NOT**: strong default; deviations require explicit rationale
- **MAY / OPTIONAL**: context-dependent choice


## Core Rule

Never place mocks, stubs, fakes, spy implementations, or any test-only code in production source files. Test doubles belong exclusively in test files and test directories.
Expand Down
10 changes: 10 additions & 0 deletions .cursor/skills/preserve-existing-tests/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,16 @@ description: Prevents modification of existing tests and test data unless behavi

# Preserve Existing Tests

## Requirement levels (RFC 2119)

The key words **MUST**, **MUST NOT**, **REQUIRED**, **SHALL**, **SHALL NOT**, **SHOULD**, **SHOULD NOT**, **RECOMMENDED**, **NOT RECOMMENDED**, **MAY**, and **OPTIONAL** in this document are to be interpreted as described in RFC 2119.

Interpretation for contributors and reviewers:
- **MUST / MUST NOT**: non-negotiable requirement (blocking)
- **SHOULD / SHOULD NOT**: strong default; deviations require explicit rationale
- **MAY / OPTIONAL**: context-dependent choice


## Core Rule

**Never modify existing tests or test data.** If existing tests fail after your changes, that is a signal you may have introduced a bug — not that the tests are wrong.
Expand Down
10 changes: 10 additions & 0 deletions .cursor/skills/react-component-layout/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,16 @@ description: Enforces that React component code mirrors the visual layout of the

# React Component Layout

## Requirement levels (RFC 2119)

The key words **MUST**, **MUST NOT**, **REQUIRED**, **SHALL**, **SHALL NOT**, **SHOULD**, **SHOULD NOT**, **RECOMMENDED**, **NOT RECOMMENDED**, **MAY**, and **OPTIONAL** in this document are to be interpreted as described in RFC 2119.

Interpretation for contributors and reviewers:
- **MUST / MUST NOT**: non-negotiable requirement (blocking)
- **SHOULD / SHOULD NOT**: strong default; deviations require explicit rationale
- **MAY / OPTIONAL**: context-dependent choice


Structure React code so that reading it feels like looking at the UI. A developer should be able to glance at the JSX and immediately see the same major sections, divisions, and hierarchy that appear on screen.

## Core Principles
Expand Down
Loading