Rams

Design review for UI code: 291 rules, scored 0-100 with fixes and git-applyable patches.

Sollte ich dies verwenden

Qualität und Sicherheit

A
Qualität der Beschreibung
100%
Vollständigkeit des Schemas
83%
Qualität der Benennung
90%
Risiko der Vergiftung
100%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~1,671Tokens (Tool-Definitionen)
~3.5 KBTypische Antwortgröße
Mittlere Auswirkung auf die Aufmerksamkeit (1.31% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

{
  "mcpServers": {
    "rams": {
      "url": "https://worker.rams.ai/mcp"
    }
  }
}

Remote-Endpunkte

https://worker.rams.ai/mcpstreamable-http

Was es kann

Tool-Inventar

Tools (4)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢usage

Check how many Rams reviews this workspace has used and has left (rolling 30 days, shared between the GitHub App and MCP). Free to call — does not consume a review.

Eingabe-Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢review_files(files, context, via)

Run a Rams design review over UI files (React, Vue, Svelte, CSS). Returns a 0-100 score (criticals cap it: one caps at 59, two at 49, three or more at 39), issues with severity, category, file:line, and concrete fixes. Call it whenever UI code has been written or changed: before committing, when the user asks how the design looks, or to check your own work after editing a component. Reviewing the handful of files you just touched is the normal case — it is cheap, and you do not need to ask permission first. Only a whole-codebase audit (dozens of files across many batches) is worth checking with the user, since it consumes the calling agent's context and a large share of their model allowance; prefer the highest-traffic screens in that case.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "files": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "description": "File path, e.g. src/components/Button.tsx"
          },
          "content": {
            "type": "string",
            "description": "Full file content"
          }
        },
        "required": [
          "path",
          "content"
        ],
        "additionalProperties": false
      },
      "minItems": 1,
      "maxItems": 20,
      "description": "UI files to review (up to 20)"
    },
    "context": {
      "type": "string",
      "description": "Short label for this review, e.g. the feature or branch name"
    },
    "via": {
      "type": "string",
      "description": "Set to \"rules\" when this call is made because of a standing instruction in a rules file (e.g. CLAUDE.md). Omit when a person asked for the review."
    }
  },
  "required": [
    "files"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "score": {
      "type": "number",
      "description": "0-100; confirmed criticals cap it — one at 59, two at 49, three or more at 39"
    },
    "direction": {
      "type": "string",
      "description": "What the change is trying to be — judgment before findings"
    },
    "summary": {
      "type": "string"
    },
    "detectedCounts": {
      "type": "object",
      "properties": {
        "critical": {
          "type": "number"
        },
        "serious": {
          "type": "number"
        },
        "moderate": {
          "type": "number"
        }
      },
      "required": [
        "critical",
        "serious",
        "moderate"
      ],
      "additionalProperties": false
    },
    "issues": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "severity": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "file": {
            "type": "string"
          },
          "line": {
            "type": "number"
          },
          "fix": {
            "type": "string",
            "description": "The fix as prose/code"
          },
          "patch": {
            "type": "string",
            "description": "RAMS-121: unified diff against the submitted file content, git-apply-able. Present only when the fix locates unambiguously."
          }
        },
        "required": [
          "severity",
          "category",
          "title",
          "message",
          "file",
          "line"
        ],
        "additionalProperties": false
      }
    },
    "reviewsUsed": {
      "type": "number"
    },
    "reviewsLimit": {
      "type": [
        "number",
        "null"
      ],
      "description": "null = unlimited (Team overage applies instead)"
    }
  },
  "required": [
    "score",
    "summary",
    "detectedCounts",
    "issues",
    "reviewsUsed",
    "reviewsLimit"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡quick_review(files, context, via)

Fast design check over the UI files you just changed. Returns issues with severity, category and file:line, in about 10 seconds. Cheap: five quick checks cost one review credit (two on the free plan), so a whole editing session spends a fraction of one review. Use this one CONSTANTLY: after writing or editing a component, before committing, whenever you want to know if what you just wrote is sound. You do not need to ask the user first. It returns no score and no ready-made patch: fix the issues yourself in the files you already have open. When the user wants a score to keep, a patch to apply, or a review to quote, use review_files instead.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "files": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "description": "File path, e.g. src/components/Button.tsx"
          },
          "content": {
            "type": "string",
            "description": "Full file content"
          }
        },
        "required": [
          "path",
          "content"
        ],
        "additionalProperties": false
      },
      "minItems": 1,
      "maxItems": 20,
      "description": "The UI files you just changed"
    },
    "context": {
      "type": "string",
      "description": "Short label, e.g. the component or feature name"
    },
    "via": {
      "type": "string",
      "description": "Set to \"rules\" when this call is made because of a standing instruction in a rules file (e.g. CLAUDE.md). Omit when a person asked for the review."
    }
  },
  "required": [
    "files"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢verify_fixes(files, issues)

Re-check previous review_files findings against updated file contents. Returns fixed vs still-present per finding. Much cheaper and faster than a full re-review; does NOT consume review quota. Use after applying fixes.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "files": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "description": "File path, e.g. src/components/Button.tsx"
          },
          "content": {
            "type": "string",
            "description": "Full file content"
          }
        },
        "required": [
          "path",
          "content"
        ],
        "additionalProperties": false
      },
      "minItems": 1,
      "maxItems": 20,
      "description": "The updated UI files (same paths as the original review)"
    },
    "issues": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "severity": {
            "type": "string",
            "enum": [
              "critical",
              "serious",
              "moderate"
            ]
          },
          "category": {
            "type": "string"
          },
          "rule": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "file": {
            "type": "string"
          },
          "line": {
            "type": "number"
          },
          "current": {
            "type": "string",
            "description": "The flagged code from the original finding"
          }
        },
        "required": [
          "severity",
          "category",
          "file",
          "line"
        ],
        "additionalProperties": false
      },
      "minItems": 1,
      "maxItems": 30,
      "description": "The findings to verify, as returned by review_files"
    }
  },
  "required": [
    "files",
    "issues"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "fixed": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "file": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "severity": {
            "type": "string"
          }
        },
        "required": [
          "file",
          "severity"
        ],
        "additionalProperties": false
      }
    },
    "present": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "file": {
            "type": "string"
          },
          "line": {
            "type": "number"
          },
          "title": {
            "type": "string"
          },
          "severity": {
            "type": "string"
          }
        },
        "required": [
          "file",
          "line",
          "severity"
        ],
        "additionalProperties": false
      }
    },
    "allClear": {
      "type": "boolean",
      "description": "true when nothing remains, including no remaining criticals"
    }
  },
  "required": [
    "fixed",
    "present",
    "allClear"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet4 Tools
verifiziertVersion nicht aufgezeichnet4 Tools