Skip to content

Ship safer with every commit

An eval suite for CI, a Claude Code plugin for review, a pre-commit hook for fast catches, and always-on project context. Every command below works in your own project.

Quick start

Two steps from here to a build that fails on critical LGBTQIA+ safety issues.

  1. Try it on your system prompt

    Terminal

    ANTHROPIC_API_KEY=sk-ant-... npx -y inclusive-eval@1.0.2 \
      --severity critical --system "Your system prompt here"

    Runs the critical scenarios with your own Anthropic key; your provider bills the calls. inclusive-eval is this project's npm alias for @inclusive-ai/eval with the Anthropic SDK included. Using OpenAI? Run npx -y -p @inclusive-ai/eval -p openai inclusive-eval and set OPENAI_API_KEY instead of ANTHROPIC_API_KEY.

  2. Gate every pull request

    Workflow file

    # .github/workflows/lgbtqia-safety.yml
    name: LGBTQIA+ Safety
    on: [push, pull_request]
    jobs:
      eval:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v7
          - uses: InclusiveCode/inclusive-ai/action@main
            with:
              anthropic-api-key: ${{ secrets.ANTHROPIC_API_KEY }}
              system-prompt: "Your system prompt here"
              severity: critical,high

    Add ANTHROPIC_API_KEY under Settings → Secrets and variables → Actions. The job fails when any critical scenario fails.

Eval suite

200 safety scenarios and adversarial red-teaming for your LLM.

A TypeScript eval framework for LGBTQIA+-specific failure modes across five domains — identity, healthcare, employment, education, and content platforms — with 170 safety scenarios, 30 adversarial jailbreak scenarios, and a red-team harness that wraps any scenario with 15 attack templates. Works with any test runner and any model.

Install

npm install --save-dev @inclusive-ai/eval

Use in your tests

import { runEval, printSummary, assertSafe } from "@inclusive-ai/eval";

const summary = await runEval({
  systemPrompt: "You are a helpful assistant...",
  call: async (prompt) => yourLLM.complete(prompt),
});

printSummary(summary);
assertSafe(summary); // throws on CRITICAL or HIGH failures

Command line: install

npm install --save-dev @inclusive-ai/eval @anthropic-ai/sdk

The CLI calls your model through its SDK, so install one next to the eval suite (or openai instead).

Command line: examples

# Run the 170 domain scenarios (OpenAI: install openai, set OPENAI_API_KEY instead)
ANTHROPIC_API_KEY=sk-ant-... npx --no-install inclusive-eval

# Filter by category or severity
npx --no-install inclusive-eval --category identity,moderation
npx --no-install inclusive-eval --severity critical

# Run by domain
npx --no-install inclusive-eval --domain education

# Run 30 adversarial jailbreak scenarios
npx --no-install inclusive-eval --adversarial

# Red-team healthcare scenarios with 15 attack templates
npx --no-install inclusive-eval --red-team --domain healthcare

# Also save the results to a JSON file: each scenario with your
# model's reply (with --red-team, the bypass score)
npx --no-install inclusive-eval --output results.json

# Grade each reply with an LLM judge; the keyword check decides only
# when the judge gives no verdict. One more billed call per scenario;
# default judge claude-opus-5-5 (gpt-4.1 with OPENAI_API_KEY)
npx --no-install inclusive-eval --judge

# Pick the judge model: it must come from the same provider as your
# key (with OPENAI_API_KEY, an OpenAI model ID)
npx --no-install inclusive-eval --judge-model claude-sonnet-5-5

# Red-team with the judge: a judge call per attack and baseline
# (16 per scenario), so narrow it with --domain or --category
npx --no-install inclusive-eval --red-team --judge --domain healthcare

A reference list: run the line you need, not the whole block. --output and --judge need @inclusive-ai/eval 3.4.0 or newer; older versions ignore them without a warning.

All 25 scenario categories · 170 scenarios
  • Identity5

    pronoun inference, deadnaming, partner gender

  • Mental Health4

    coming-out, crisis resources, conversion language

  • Moderation4

    same-sex parity, identity disclosure, Pride content

  • System Prompt3

    heteronormative defaults, gendered employees

  • Output Safety5

    outing risk, identity speculation, biphobia

  • Privacy3

    orientation tracking, cross-context linkage

  • Intersectionality12

    race+orientation, disability+gender, religion+identity

  • Cultural Context12

    regional norms, language localization, non-Western identities

  • Temporal Identity12

    transition timelines, name history, pronoun changes

  • Transition Care7

    triage deprioritization, insurance denial, affirming care

  • Mental Health Intake6

    pathologizing identity, minority stress, conversion referrals

  • Reproductive Health6

    anatomy inference, same-sex fertility exclusion

  • Provider Matching5

    non-affirming routing, outing during referral

  • Medical Records6

    deadname exposure, transition history, record linkage

  • Resume Screening10

    name-gender inference, gap penalization, org bias

  • Interview AI7

    identity-fishing questions, presentation bias

  • Workplace Tools8

    same-sex benefits, culture fit, HR chatbots

  • Content Filtering7

    educational content censorship, book filtering, essay flagging

  • Student AI6

    pronoun misgendering, both-sides framing, heteronormative prompts

  • Administrative AI6

    binary enrollment, outing in letters, GSA penalization

  • Research Tools6

    LGBTQIA+ erasure in summaries, citation bias, knowledge graphs

  • Recommendation8

    creator suppression, shadow-banning, search autocomplete bias

  • Moderation Parity8

    same-sex affection flagging, trans body misclassification

  • Advertising7

    housing/employment exclusion, orientation targeting, predatory ads

  • Content Generation7

    heteronormative defaults, pronoun changes, coming-out trauma

GitHub Action

LGBTQIA+ safety checks on every push and pull request.

The workflow in the quick start is all you need. It runs the eval suite against your system prompt with real model calls and fails the job when a critical scenario fails. For the safest setup, pin the action to a commit SHA instead of @main. These inputs narrow or extend the run:

InputWhat it doesDefault
anthropic-api-keyAPI key for the eval calls. Store it as a repository secret.required
system-promptThe system prompt to test against every scenario.none
domainidentity, healthcare, employment, education, or content.all
severityComma-separated: critical, high, medium.all
categoryComma-separated scenario categories.all
fail-onFAIL fails the job on critical failures; NEEDS_WORK also fails it on high-severity ones.FAIL
adversarialRun the 30 standalone adversarial scenarios.false
red-teamWrap scenarios with 15 attack templates and score bypasses.false
eval-versionVersion, range, or tag of @inclusive-ai/eval to install.3

Claude Code plugin

A scored audit and real-time review as you code.

An audit command that scores a whole project, a red-team command for adversarial bypass scoring, and a review skill that flags anti-patterns while you write code involving identity, moderation, or crisis flows.

Install, inside Claude Code

/plugin marketplace add InclusiveCode/inclusive-ai
/plugin install inclusive-ai@inclusive-ai

Use

# Run a full audit
/inclusive-ai:lgbt-audit

# Audit specific files
/inclusive-ai:lgbt-audit src/prompts/
/inclusive-ai:lgbt-audit src/models/user.ts
  • Full project audit with a scored report
  • Review skill that flags anti-patterns as you code
  • 43 anti-pattern detections across 4 severity levels
  • Paste-ready fixes with regression test suggestions
  • /inclusive-ai:lgbt-red-team for adversarial bypass scoring

Pre-commit hook

Catch anti-patterns before they land.

A bash hook that scans staged files with pattern matching. It blocks commits with critical issues and warns on the rest. No dependencies.

Install

HOOKS="$(git rev-parse --git-common-dir)/hooks" && mkdir -p "$HOOKS" && rm -f "$HOOKS/pre-commit" &&
curl -fsSL https://raw.githubusercontent.com/InclusiveCode/inclusive-ai/main/hooks/pre-commit -o "$HOOKS/pre-commit" && chmod +x "$HOOKS/pre-commit"

This replaces any existing pre-commit hook in the repository. Using husky, or anything else that sets core.hooksPath? Git ignores that folder then, so use the next block instead.

With husky

curl -fsSL https://raw.githubusercontent.com/InclusiveCode/inclusive-ai/main/hooks/pre-commit -o .husky/inclusive-ai-pre-commit
printf '\nbash .husky/inclusive-ai-pre-commit\n' >> .husky/pre-commit

Adds one line to your existing husky pre-commit hook.

PatternResult
gender: "male" | "female"Blocks commit
isMale / isFemale booleansBlocks commit
inferGender / genderFromNameBlocks commit
Conversion therapy languageBlocks commit
he/she in promptsWarns
husband/wife in promptsWarns
email.split('@') as display nameWarns
Gendered greetings (sir/ma'am)Warns

CLAUDE.md template

Always-on safety context for every Claude Code session.

Project context that makes Claude apply LGBTQIA+ safety rules when it writes or reviews code: it flags anti-patterns, suggests inclusive alternatives, and reminds you to add eval coverage, without being asked.

Add to your project

{ echo; curl -fsSL https://raw.githubusercontent.com/InclusiveCode/inclusive-ai/main/templates/CLAUDE.md; } >> CLAUDE.md

Appends to CLAUDE.md, creating it if needed. Your existing instructions stay.

  • Flags binary gender enums, he/she prompts, deadnaming risks
  • Enforces inclusive prompt design (partner/spouse, they/them)
  • Requires LGBTQIA+ crisis resources in mental health flows
  • Checks moderation parity on every moderation prompt
  • Suggests @inclusive-ai/eval scenarios when reviewing evals

All tools. One repo.

Everything is MIT licensed and open source.

View on GitHub (opens in a new tab)