@kevinrabun/judges 1.2.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/README.md +49 -13
  2. package/dist/evaluators/authentication.d.ts +3 -0
  3. package/dist/evaluators/authentication.d.ts.map +1 -0
  4. package/dist/evaluators/authentication.js +170 -0
  5. package/dist/evaluators/authentication.js.map +1 -0
  6. package/dist/evaluators/backwards-compatibility.d.ts +3 -0
  7. package/dist/evaluators/backwards-compatibility.d.ts.map +1 -0
  8. package/dist/evaluators/backwards-compatibility.js +146 -0
  9. package/dist/evaluators/backwards-compatibility.js.map +1 -0
  10. package/dist/evaluators/caching.d.ts +3 -0
  11. package/dist/evaluators/caching.d.ts.map +1 -0
  12. package/dist/evaluators/caching.js +146 -0
  13. package/dist/evaluators/caching.js.map +1 -0
  14. package/dist/evaluators/ci-cd.d.ts +3 -0
  15. package/dist/evaluators/ci-cd.d.ts.map +1 -0
  16. package/dist/evaluators/ci-cd.js +155 -0
  17. package/dist/evaluators/ci-cd.js.map +1 -0
  18. package/dist/evaluators/configuration-management.d.ts +3 -0
  19. package/dist/evaluators/configuration-management.d.ts.map +1 -0
  20. package/dist/evaluators/configuration-management.js +146 -0
  21. package/dist/evaluators/configuration-management.js.map +1 -0
  22. package/dist/evaluators/database.d.ts +3 -0
  23. package/dist/evaluators/database.d.ts.map +1 -0
  24. package/dist/evaluators/database.js +179 -0
  25. package/dist/evaluators/database.js.map +1 -0
  26. package/dist/evaluators/error-handling.d.ts +3 -0
  27. package/dist/evaluators/error-handling.d.ts.map +1 -0
  28. package/dist/evaluators/error-handling.js +180 -0
  29. package/dist/evaluators/error-handling.js.map +1 -0
  30. package/dist/evaluators/index.d.ts.map +1 -1
  31. package/dist/evaluators/index.js +48 -0
  32. package/dist/evaluators/index.js.map +1 -1
  33. package/dist/evaluators/logging-privacy.d.ts +3 -0
  34. package/dist/evaluators/logging-privacy.d.ts.map +1 -0
  35. package/dist/evaluators/logging-privacy.js +147 -0
  36. package/dist/evaluators/logging-privacy.js.map +1 -0
  37. package/dist/evaluators/maintainability.d.ts +3 -0
  38. package/dist/evaluators/maintainability.d.ts.map +1 -0
  39. package/dist/evaluators/maintainability.js +243 -0
  40. package/dist/evaluators/maintainability.js.map +1 -0
  41. package/dist/evaluators/portability.d.ts +3 -0
  42. package/dist/evaluators/portability.d.ts.map +1 -0
  43. package/dist/evaluators/portability.js +180 -0
  44. package/dist/evaluators/portability.js.map +1 -0
  45. package/dist/evaluators/rate-limiting.d.ts +3 -0
  46. package/dist/evaluators/rate-limiting.d.ts.map +1 -0
  47. package/dist/evaluators/rate-limiting.js +161 -0
  48. package/dist/evaluators/rate-limiting.js.map +1 -0
  49. package/dist/evaluators/scalability.d.ts.map +1 -1
  50. package/dist/evaluators/scalability.js +8 -3
  51. package/dist/evaluators/scalability.js.map +1 -1
  52. package/dist/evaluators/software-practices.d.ts.map +1 -1
  53. package/dist/evaluators/software-practices.js +14 -3
  54. package/dist/evaluators/software-practices.js.map +1 -1
  55. package/dist/evaluators/testing.d.ts.map +1 -1
  56. package/dist/evaluators/testing.js +6 -2
  57. package/dist/evaluators/testing.js.map +1 -1
  58. package/dist/evaluators/ux.d.ts +3 -0
  59. package/dist/evaluators/ux.d.ts.map +1 -0
  60. package/dist/evaluators/ux.js +175 -0
  61. package/dist/evaluators/ux.js.map +1 -0
  62. package/dist/index.d.ts +1 -1
  63. package/dist/index.js +3 -3
  64. package/dist/judges/authentication.d.ts +3 -0
  65. package/dist/judges/authentication.d.ts.map +1 -0
  66. package/dist/judges/authentication.js +34 -0
  67. package/dist/judges/authentication.js.map +1 -0
  68. package/dist/judges/backwards-compatibility.d.ts +3 -0
  69. package/dist/judges/backwards-compatibility.d.ts.map +1 -0
  70. package/dist/judges/backwards-compatibility.js +34 -0
  71. package/dist/judges/backwards-compatibility.js.map +1 -0
  72. package/dist/judges/caching.d.ts +3 -0
  73. package/dist/judges/caching.d.ts.map +1 -0
  74. package/dist/judges/caching.js +34 -0
  75. package/dist/judges/caching.js.map +1 -0
  76. package/dist/judges/ci-cd.d.ts +3 -0
  77. package/dist/judges/ci-cd.d.ts.map +1 -0
  78. package/dist/judges/ci-cd.js +34 -0
  79. package/dist/judges/ci-cd.js.map +1 -0
  80. package/dist/judges/configuration-management.d.ts +3 -0
  81. package/dist/judges/configuration-management.d.ts.map +1 -0
  82. package/dist/judges/configuration-management.js +34 -0
  83. package/dist/judges/configuration-management.js.map +1 -0
  84. package/dist/judges/database.d.ts +3 -0
  85. package/dist/judges/database.d.ts.map +1 -0
  86. package/dist/judges/database.js +34 -0
  87. package/dist/judges/database.js.map +1 -0
  88. package/dist/judges/error-handling.d.ts +3 -0
  89. package/dist/judges/error-handling.d.ts.map +1 -0
  90. package/dist/judges/error-handling.js +34 -0
  91. package/dist/judges/error-handling.js.map +1 -0
  92. package/dist/judges/index.d.ts.map +1 -1
  93. package/dist/judges/index.js +24 -0
  94. package/dist/judges/index.js.map +1 -1
  95. package/dist/judges/logging-privacy.d.ts +3 -0
  96. package/dist/judges/logging-privacy.d.ts.map +1 -0
  97. package/dist/judges/logging-privacy.js +34 -0
  98. package/dist/judges/logging-privacy.js.map +1 -0
  99. package/dist/judges/maintainability.d.ts +3 -0
  100. package/dist/judges/maintainability.d.ts.map +1 -0
  101. package/dist/judges/maintainability.js +34 -0
  102. package/dist/judges/maintainability.js.map +1 -0
  103. package/dist/judges/portability.d.ts +3 -0
  104. package/dist/judges/portability.d.ts.map +1 -0
  105. package/dist/judges/portability.js +34 -0
  106. package/dist/judges/portability.js.map +1 -0
  107. package/dist/judges/rate-limiting.d.ts +3 -0
  108. package/dist/judges/rate-limiting.d.ts.map +1 -0
  109. package/dist/judges/rate-limiting.js +34 -0
  110. package/dist/judges/rate-limiting.js.map +1 -0
  111. package/dist/judges/ux.d.ts +3 -0
  112. package/dist/judges/ux.d.ts.map +1 -0
  113. package/dist/judges/ux.js +34 -0
  114. package/dist/judges/ux.js.map +1 -0
  115. package/package.json +2 -2
  116. package/server.json +3 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portability.js","sourceRoot":"","sources":["../../src/judges/portability.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAoB;IAC/C,EAAE,EAAE,aAAa;IACjB,IAAI,EAAE,mBAAmB;IACzB,MAAM,EAAE,4CAA4C;IACpD,WAAW,EACT,6JAA6J;IAC/J,UAAU,EAAE,OAAO;IACnB,YAAY,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;4HAyB4G;CAC3H,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { JudgeDefinition } from "../types.js";
2
+ export declare const rateLimitingJudge: JudgeDefinition;
3
+ //# sourceMappingURL=rate-limiting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limiting.d.ts","sourceRoot":"","sources":["../../src/judges/rate-limiting.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,eAAO,MAAM,iBAAiB,EAAE,eAiC/B,CAAC"}
@@ -0,0 +1,34 @@
1
+ export const rateLimitingJudge = {
2
+ id: "rate-limiting",
3
+ name: "Judge Rate Limiting",
4
+ domain: "Rate Limiting & Throttling",
5
+ description: "Evaluates code for API rate limiting, request throttling, backoff strategies, quota management, and protection against abuse and resource exhaustion.",
6
+ rulePrefix: "RATE",
7
+ systemPrompt: `You are Judge Rate Limiting — an API gateway architect and abuse prevention specialist who has defended high-traffic systems against DDoS, scraping, credential stuffing, and resource exhaustion attacks.
8
+
9
+ YOUR EVALUATION CRITERIA:
10
+ 1. **Rate Limiting Middleware**: Are API endpoints protected by rate limiting? Is there per-user, per-IP, or per-API-key throttling? Is rate limiting completely absent?
11
+ 2. **Rate Limit Headers**: Are standard rate limit headers returned (X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, Retry-After)?
12
+ 3. **Backoff Strategy**: When calling external APIs, is exponential backoff implemented? Are retries bounded? Is jitter added to prevent thundering herd?
13
+ 4. **Request Size Limits**: Are request body sizes limited? Are file upload sizes restricted? Can an attacker send arbitrarily large payloads?
14
+ 5. **Pagination Limits**: Are list/query endpoints paginated with enforced maximum page sizes? Can a single request return unbounded results?
15
+ 6. **Concurrent Request Limits**: Is there protection against a single client making too many concurrent requests? Are connection pools bounded?
16
+ 7. **Quota Management**: Are there usage quotas for API consumers? Are quotas enforced and communicated? Are quota overages handled gracefully?
17
+ 8. **Abuse Detection**: Are there patterns for detecting abusive behavior (scraping, credential stuffing, enumeration)? Are suspicious patterns flagged or blocked?
18
+ 9. **Outbound Rate Limiting**: When calling external services, are outbound request rates managed? Are rate limits of upstream APIs respected?
19
+ 10. **Graceful Degradation Under Load**: Does the application degrade gracefully when overwhelmed? Are there circuit breakers? Is there load shedding?
20
+
21
+ RULES FOR YOUR EVALUATION:
22
+ - Assign rule IDs with prefix "RATE-" (e.g. RATE-001).
23
+ - Reference IETF RFC 6585 (429 Too Many Requests), API rate limiting best practices, and DDoS mitigation patterns.
24
+ - Distinguish between internal services (may need lighter limits) and public APIs (must have strict limits).
25
+ - Consider both inbound (protecting your service) and outbound (respecting others') rate limits.
26
+ - Score from 0-100 where 100 means comprehensive rate limiting.
27
+
28
+ ADVERSARIAL MANDATE:
29
+ - Your role is adversarial: assume rate limiting is absent or insufficient and actively hunt for problems. Do not give the benefit of the doubt.
30
+ - Never praise or compliment the code. Report only problems, risks, and deficiencies.
31
+ - If you are uncertain whether something is an issue, flag it — false positives are preferred over missed rate limiting gaps.
32
+ - Absence of findings does not mean rate limiting is adequate. It means your analysis reached its limits. State this explicitly.`,
33
+ };
34
+ //# sourceMappingURL=rate-limiting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limiting.js","sourceRoot":"","sources":["../../src/judges/rate-limiting.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iBAAiB,GAAoB;IAChD,EAAE,EAAE,eAAe;IACnB,IAAI,EAAE,qBAAqB;IAC3B,MAAM,EAAE,4BAA4B;IACpC,WAAW,EACT,uJAAuJ;IACzJ,UAAU,EAAE,MAAM;IAClB,YAAY,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;iIAyBiH;CAChI,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { JudgeDefinition } from "../types.js";
2
+ export declare const uxJudge: JudgeDefinition;
3
+ //# sourceMappingURL=ux.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ux.d.ts","sourceRoot":"","sources":["../../src/judges/ux.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,eAAO,MAAM,OAAO,EAAE,eAiCrB,CAAC"}
@@ -0,0 +1,34 @@
1
+ export const uxJudge = {
2
+ id: "ux",
3
+ name: "Judge UX",
4
+ domain: "User Experience & Interface Quality",
5
+ description: "Evaluates code for user experience patterns including loading states, error feedback, responsive design, mobile-friendliness, and interaction quality.",
6
+ rulePrefix: "UX",
7
+ systemPrompt: `You are Judge UX — a UX engineer and frontend architect who bridges design and engineering, specializing in performance perception, error communication, and inclusive interaction design.
8
+
9
+ YOUR EVALUATION CRITERIA:
10
+ 1. **Loading States**: Are loading indicators shown during async operations? Is there feedback when the user initiates an action? Are skeleton screens or spinners used?
11
+ 2. **Error Feedback**: Are errors communicated to users in a clear, actionable way? Are generic "Something went wrong" messages avoided? Do errors suggest next steps?
12
+ 3. **Responsive Design**: Does the UI adapt to different screen sizes? Are media queries or responsive frameworks used? Is content readable on mobile?
13
+ 4. **Form UX**: Are forms validated with inline feedback? Are error messages placed near the relevant field? Are required fields marked? Is there auto-save or draft preservation?
14
+ 5. **Navigation & Wayfinding**: Is navigation intuitive? Are breadcrumbs provided? Can users always find their way back? Are deep links supported?
15
+ 6. **Performance Perception**: Are optimistic updates used? Is there pagination or infinite scroll for large lists? Are perceived loading times minimized?
16
+ 7. **Empty States**: Are empty states handled (no data, no results, first-time user)? Do they provide guidance on what to do next?
17
+ 8. **Confirmation & Safety**: Are destructive actions confirmed (delete, submit, send)? Can actions be undone? Are users warned about data loss?
18
+ 9. **Mobile & Touch**: Are touch targets large enough (48x48px)? Are hover-dependent interactions avoided? Is the interface usable without a mouse?
19
+ 10. **Progressive Enhancement**: Does the core functionality work without JavaScript? Are there graceful fallbacks for unsupported features?
20
+
21
+ RULES FOR YOUR EVALUATION:
22
+ - Assign rule IDs with prefix "UX-" (e.g. UX-001).
23
+ - Reference Nielsen's Heuristics, Material Design guidelines, and WCAG criteria where applicable.
24
+ - Distinguish between "functional" and "user-friendly."
25
+ - Consider diverse users: slow connections, small screens, assistive technology.
26
+ - Score from 0-100 where 100 means excellent user experience.
27
+
28
+ ADVERSARIAL MANDATE:
29
+ - Your role is adversarial: assume the user experience is poor and actively hunt for problems. Do not give the benefit of the doubt.
30
+ - Never praise or compliment the code. Report only problems, risks, and deficiencies.
31
+ - If you are uncertain whether something is an issue, flag it — false positives are preferred over missed UX issues.
32
+ - Absence of findings does not mean the UX is good. It means your analysis reached its limits. State this explicitly.`,
33
+ };
34
+ //# sourceMappingURL=ux.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ux.js","sourceRoot":"","sources":["../../src/judges/ux.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,OAAO,GAAoB;IACtC,EAAE,EAAE,IAAI;IACR,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE,qCAAqC;IAC7C,WAAW,EACT,wJAAwJ;IAC1J,UAAU,EAAE,IAAI;IAChB,YAAY,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;sHAyBsG;CACrH,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kevinrabun/judges",
3
- "version": "1.2.0",
4
- "description": "18 specialized judges that evaluate AI-generated code for security, cost, and quality.",
3
+ "version": "1.4.0",
4
+ "description": "30 specialized judges that evaluate AI-generated code for security, cost, and quality.",
5
5
  "mcpName": "io.github.KevinRabun/judges",
6
6
  "type": "module",
7
7
  "main": "dist/index.js",
package/server.json CHANGED
@@ -2,17 +2,17 @@
2
2
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
3
3
  "name": "io.github.KevinRabun/judges",
4
4
  "title": "Judges Panel",
5
- "description": "18 specialized judges that evaluate AI-generated code for security, cost, and quality.",
5
+ "description": "30 specialized judges that evaluate AI-generated code for security, cost, and quality.",
6
6
  "repository": {
7
7
  "url": "https://github.com/kevinrabun/judges",
8
8
  "source": "github"
9
9
  },
10
- "version": "1.2.0",
10
+ "version": "1.4.0",
11
11
  "packages": [
12
12
  {
13
13
  "registryType": "npm",
14
14
  "identifier": "@kevinrabun/judges",
15
- "version": "1.2.0",
15
+ "version": "1.4.0",
16
16
  "transport": {
17
17
  "type": "stdio"
18
18
  }