You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Streamlines agent guidelines by introducing a top-level `AGENTS.md` file and refactoring existing guidelines into more specific, scoped files.
This improves discoverability and focuses guidance for different areas of the project.
# Agent Guidelines for the Exceptionless Repository
2
2
3
-
You are contributing to **Exceptionless**, a real-time error monitoring platform. Backend services run on .NET 10; the SPA lives in `src/Exceptionless.Web/ClientApp` (Svelte 5 + TypeScript).
3
+
You are an expert engineer working on Exceptionless, a production-grade real-time error monitoring platform handling billions of requests. Your changes must maintain backward compatibility, performance, and reliability. Approach each task methodically: research existing patterns, make surgical changes, and validate thoroughly.
4
4
5
-
## Quick Start
6
-
7
-
Run `Exceptionless.AppHost` from your IDE. Aspire automatically starts all required services (Elasticsearch, Redis, Mailpit) with proper ordering. The Aspire dashboard opens at the assigned localhost port.
5
+
**Craftsmanship Mindset**: Every line of code should be intentional, readable, and maintainable. Write code you'd be proud to have reviewed by senior engineers. Prefer simplicity over cleverness. When in doubt, favor explicitness and clarity.
8
6
9
-
**Alternative (infrastructure only):**
7
+
## Quick Start
10
8
11
-
```bash
12
-
cd docker && docker compose up -d elasticsearch redis mail
13
-
```
9
+
Run `Exceptionless.AppHost` from your IDE. Aspire automatically starts all required services (Elasticsearch, Redis) with proper ordering. The Aspire dashboard opens at the assigned localhost port, resources and logs can be accessed via the Aspire MCP.
14
10
15
11
## Scoped Guidance
16
12
@@ -27,7 +23,7 @@ Follow the AGENTS.md closest to the code you're changing:
27
23
28
24
### Prerequisites
29
25
30
-
-**.NET SDK 10.0** — pinned in `global.json`
26
+
-**.NET SDK 10.0**
31
27
-**Node 24+**
32
28
-**npm** — use the committed `package-lock.json`
33
29
@@ -56,46 +52,168 @@ npm run build
56
52
## Project Structure
57
53
58
54
```text
59
-
src/
55
+
src
60
56
├── Exceptionless.AppHost # Aspire orchestrator (start here for full stack)
61
57
├── Exceptionless.Core # Domain logic and services
- Follow `.editorconfig` (4 spaces, file-scoped namespaces, usings outside namespaces, braces for all control blocks).
76
-
-**C#:** Use explicit types when obvious; `var` is acceptable elsewhere per `.editorconfig`. Private fields `_camelCase`, static fields `s_camelCase`, public members PascalCase. Honor nullable annotations; keep files trimmed with a final newline.
77
-
-**TypeScript/Svelte:** Follow ESLint/Prettier config and the frontend AGENTS. Use kebab-case filenames, prefer named imports, avoid namespace imports except allowed barrels/shadcn. Always await async work and keep single-line control statements wrapped in braces.
78
-
-**Accessibility:** Meet WCAG 2.2 AA; ensure keyboard navigation, semantic landmarks, correct roles/labels, and proper alt text. Follow the frontend AGENTS for detailed patterns.
79
-
- Avoid unnecessary abstractions; match existing patterns before introducing new ones.
80
-
-**Comments:** Keep minimal; prefer self-explanatory code and existing patterns.
70
+
### Style & Formatting
71
+
72
+
- Follow `.editorconfig` rules strictly—4 spaces, file-scoped namespaces, usings outside namespaces, braces for all control blocks
73
+
- Run formatters before committing: `dotnet format` for C#, `npm run format` for frontend
74
+
- Match existing file style; minimize diffs
75
+
- No code comments unless necessary—code should be self-explanatory
76
+
77
+
### C# Conventions
78
+
79
+
-**Naming:** Private fields `_camelCase`. public members PascalCase
80
+
-**Types:** Use explicit types when obvious; `var` is acceptable elsewhere per `.editorconfig`
81
+
-**Nullable:** Honor nullable annotations and treat warnings as errors
82
+
-**Async:** Use `Async` suffix, pass `CancellationToken` through call chains, prefer `ValueTask<T>` for hot paths
83
+
-**Resources:** Always dispose properly with `using` statements or `IAsyncDisposable`
- Respect existing layering: keep domain logic in `Exceptionless.Core`, concrete implementations in `Exceptionless.Insulation`, hosting concerns in `Exceptionless.Web`, and background work in `Exceptionless.Job`.
6
-
- Reuse existing services and option classes; prefer dependency injection over static access.
7
-
- When touching configuration, prefer appsettings and options binding; avoid hardcoding secrets or connection info.
Copy file name to clipboardExpand all lines: src/Exceptionless.Web/AGENTS.md
-2Lines changed: 0 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,7 +1,5 @@
1
1
# Web API Guidelines (Exceptionless.Web)
2
2
3
-
## Scope
4
-
5
3
Applies to the ASP.NET Core host in `src/Exceptionless.Web`, including controllers, middleware, configuration, and API-facing code. The Svelte SPA lives in `ClientApp`; the legacy Angular client is under `ClientApp.angular` (avoid changes there unless explicitly requested).
0 commit comments