API Audit
briiirussell/cybersecurity-skills
Audit REST, GraphQL, and RPC APIs against the OWASP API Security Top 10 (2023).
LiteLLM-RS Authentication Architecture. An agent skill from majiayu000/litellm-rs.
$ npx skills add majiayu000/litellm-rs --skill auth-architecture -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install majiayu000/litellm-rs auth-architecture --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/majiayu000/litellm-rs.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/auth-architecture .claude/skills/auth-architecture && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "auth-architecture" agent skill from https://github.com/majiayu000/litellm-rs/tree/main/.claude/skills/auth-architecture into .claude/skills/auth-architecture/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "auth-architecture", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/majiayu000/litellm-rs/tree/main/.claude/skills/auth-architectureType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add majiayu000/litellm-rs --skill auth-architecture -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install majiayu000/litellm-rs auth-architecture --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/majiayu000/litellm-rs.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/auth-architecture .agents/skills/auth-architecture && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "auth-architecture" agent skill from https://github.com/majiayu000/litellm-rs/tree/main/.claude/skills/auth-architecture into .agents/skills/auth-architecture/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "auth-architecture", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add majiayu000/litellm-rs --skill auth-architecture -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install majiayu000/litellm-rs auth-architecture --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/majiayu000/litellm-rs.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/auth-architecture .cursor/skills/auth-architecture && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "auth-architecture" agent skill from https://github.com/majiayu000/litellm-rs/tree/main/.claude/skills/auth-architecture into .cursor/skills/auth-architecture/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "auth-architecture", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/majiayu000/litellm-rs.git --path .claude/skills/auth-architecture--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add majiayu000/litellm-rs --skill auth-architecture -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install majiayu000/litellm-rs auth-architecture --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/majiayu000/litellm-rs.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/auth-architecture .gemini/skills/auth-architecture && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "auth-architecture" agent skill from https://github.com/majiayu000/litellm-rs/tree/main/.claude/skills/auth-architecture into .gemini/skills/auth-architecture/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "auth-architecture", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install majiayu000/litellm-rs auth-architectureInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add majiayu000/litellm-rs --skill auth-architecture -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/majiayu000/litellm-rs.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/auth-architecture .github/skills/auth-architecture && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "auth-architecture" agent skill from https://github.com/majiayu000/litellm-rs/tree/main/.claude/skills/auth-architecture into .github/skills/auth-architecture/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "auth-architecture", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add majiayu000/litellm-rs --skill auth-architecture -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install majiayu000/litellm-rs auth-architecture --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/majiayu000/litellm-rs.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/auth-architecture .opencode/skills/auth-architecture && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "auth-architecture" agent skill from https://github.com/majiayu000/litellm-rs/tree/main/.claude/skills/auth-architecture into .opencode/skills/auth-architecture/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "auth-architecture", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
auth-architectureLiteLLM-RS Authentication Architecture. An agent skill from majiayu000/litellm-rs.
Auth Architecture is an agent skill from majiayu000/litellm-rs. LiteLLM-RS Authentication Architecture. Covers JWT + API Key + RBAC multi-method auth, DashMap-backed rate limiting, the actix-web middleware pipeline, and credential management (gw- prefixed keys, HMAC hashing). Use when adding auth methods, debugging JWT/API-key validation, implementing RBAC permission checks, or tuning rate limiting and auth configuration.
Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 7 other files (for example `reference/configuration.md`, `reference/error-types.md` and `reference/middleware-pipeline.md`).
It sits in Backend & APIs, covering Authentication, Authorization and RBAC and Model routing and gateways. It works with OpenAI and Rust. The repository describes itself as: Self-hosted Rust LLM gateway with OpenAI-compatible APIs, load balancing, failover, and a reusable Rust kernel. The licence is MIT.
6 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit ed3f4d9. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are rust).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Auth Architecture loads about 1.9k tokens when it runs. Until then it costs about 95 tokens; SKILL.md has 483 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from majiayu000/litellm-rs at commit ed3f4d9, republished under its MIT licence (© majiayu000). 483 words, ~1,908 tokens.
.claude/skills/auth-architecture/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.AuthSystem (src/auth/system.rs) composes three subsystems behind one authenticate() entry point:
pub struct AuthSystem {
config: Arc<AuthConfig>,
storage: Arc<StorageLayer>,
jwt: Arc<JwtHandler>, // src/auth/jwt/types.rs
api_key: Arc<ApiKeyHandler>, // src/auth/api_key/creation.rs
rbac: Arc<RbacSystem>, // src/auth/rbac/system.rs
}AuthSystem::authenticate(auth_method, context) -> Result<AuthResult> dispatches on
AuthMethod::{Jwt, ApiKey, Session, None} (src/auth/types.rs). Session auth is a
stub that always rejects ("Session authentication is not yet implemented").
Semantic rejections return AuthResult { success: false, error: Some(..) };
infrastructure failures return Err(GatewayError).
Wired in src/server/http.rs (actix runs wraps in reverse registration order, so
the request path is outermost-first):
RequestIdMiddleware -> AuditMiddleware -> IpAccessMiddleware -> CORS/Metrics
-> AuthMiddleware (src/server/middleware/auth.rs)
-> RateLimitMiddleware (src/server/middleware/rate_limit.rs)
-> SecurityHeadersMiddleware -> handlerAuthMiddleware per request: public-route bypass → fail-closed check when both
auth methods are disabled (allow_anonymous gate) → brute-force lockout via
AuthRateLimiter → credential extraction → authentication → endpoint/operation
authorization → insert User / ApiKey into request extensions.
extract_auth_method_with_api_key_header (src/server/middleware/helpers.rs)
resolves credentials in this priority order:
Authorization: Bearer <jwt> → AuthMethod::JwtAuthorization: ApiKey <key> → AuthMethod::ApiKeyAuthorization: gw-... (raw key, no scheme) → AuthMethod::ApiKeyauth.api_key_header, default Authorization)X-API-Key fallback (when the configured header differs)session=<id> cookie → AuthMethod::SessionThere is no Bearer sk- form: gateway keys are gw- prefixed, and a raw
sk-... value matches nothing.
Keys are generated by generate_api_key() in src/utils/auth/crypto/keys.rs:
a fixed gw prefix plus 32 alphanumeric characters (gw-<32 chars>, 35 total).
They are hashed — never stored in plaintext:
// src/utils/auth/crypto/keys.rs
pub fn generate_api_key() -> String; // "gw-" + 32 alphanumerics
pub fn hash_api_key(api_key: &str, hmac_secret: Option<&str>) -> String;
pub fn extract_api_key_prefix(api_key: &str) -> String; // "gw-a...mnop" display onlyhash_api_key computes HMAC-SHA256 when api_key_hmac_secret is configured,
otherwise plain SHA-256. Argon2 is used only for user passwords
(src/utils/auth/crypto/password.rs), never for API keys.
ApiKeyHandler::new(storage: Arc<StorageLayer>, hmac_secret: Option<String>)
stores keys through the database layer and looks them up by full hash
(find_api_key_by_hash) — there is no prefix lookup.
impl ApiKeyHandler {
pub async fn create_key(&self, user_id: Option<Uuid>, team_id: Option<Uuid>,
name: String, permissions: Vec<String>) -> Result<(ApiKey, String)>; // (stored, raw)
pub async fn verify_key(&self, raw_key: &str) -> Result<Option<(ApiKey, Option<User>)>>;
pub async fn verify_key_detailed(&self, raw_key: &str) -> Result<ApiKeyVerification>;
}Verification rejects inactive or expired keys and keys whose owner user is
missing/inactive; it refreshes last_used_at throttled to once per 5 minutes
(LAST_USED_THROTTLE) via an in-memory DashMap<Uuid, Instant> cache.
Names must be 1–255 chars without control characters; permissions must be from
VALID_PERMISSIONS (creation.rs): *, system.admin, analytics.read,
api.chat, api.embeddings, api.images, and dotted read/write/delete grants
on users, teams, api_keys (e.g. users.read, api_keys.delete).
Management lives on the same handler: revoke_key, list_user_keys,
update_permissions, update_expiration, regenerate_key (returns a new raw
key), cleanup_expired_keys (src/auth/api_key/management.rs).
Single role: String (not a role list), plus token identity fields
(src/auth/jwt/types.rs):
pub struct Claims {
pub sub: Uuid, // user ID
pub iat: u64, pub exp: u64,
pub iss: String, // fixed "litellm-rs"
pub aud: String, // "api" for access, "refresh" for refresh tokens
pub jti: String, // UUID token ID
pub role: String,
pub permissions: Vec<String>,
pub team_id: Option<Uuid>,
pub session_id: Option<String>,
pub token_type: TokenType, // Access | Refresh | PasswordReset |
} // EmailVerification | InvitationJwtHandler::new(config: &AuthConfig) builds HS256 signing keys from
jwt_secret; lifetime comes from jwt_expiration. There is no configurable
audience field — audiences are hard-coded per token kind.
impl JwtHandler {
pub async fn create_access_token(&self, user_id: Uuid, role: String,
permissions: Vec<String>, team_id: Option<Uuid>, session_id: Option<Uuid>)
-> Result<String>;
pub async fn create_refresh_token(&self, user_id: Uuid,
session_id: Option<String>) -> Result<String>; // exp = expiration * 24
pub async fn create_token_pair(...) -> Result<TokenPair>;
pub async fn verify_access_token(&self, token: &str) -> Result<Claims>;
pub async fn verify_refresh_token(&self, token: &str) -> Result<Uuid>;
}For both public creation methods, team_id must currently be None; passing Some(...)
returns BadRequest("Active team selection requires verified membership").
Team-scoped access tokens and token pairs are created only through the crate-private
create_access_token_for_verified_team / create_token_pair_for_verified_team paths
after active membership has been verified.
verify_access_token enforces aud == "api" and rejects unknown team-scope
versions; verify_refresh_token enforces aud == "refresh" plus
token_type == Refresh. JWT decode failures map to
GatewayError::Auth("JWT error: ...").
auth: YAML surface, validation rules, top-level rate_limit: section© majiayu000, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 6 other files in .claude/skills/auth-architecture of majiayu000/litellm-rs.
Open the folder on GitHubat commit ed3f4d9
Auth Architecture next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Auth Architecture this skillmajiayu000/litellm-rs | 118 | — | ~1.9k | Automated safety check: Pass | MIT | |
| API Auditbriiirussell/cybersecurity-skills | 413 | — | ~2.8k | Automated safety check: Notes | MIT | |
| Springboot Securityaffaan-m/ECC | 277k | 5 repos | ~2k | Automated safety check: Pass | MIT | |
| API Security Designvinayaklatthe/microsoft-security-skills | 175 | — | ~2.2k | Automated safety check: Pass | MIT | |
| Laravel Securityaffaan-m/ECC | 277k | 3 repos | ~2k | Automated safety check: Pass | MIT | |
| API Security Best Practicesdavila7/claude-code-templates | 33k | 8 repos | ~5.8k | Automated safety check: Pass | MIT |
briiirussell/cybersecurity-skills
Audit REST, GraphQL, and RPC APIs against the OWASP API Security Top 10 (2023).
affaan-m/ECC
Spring Security best practices for authn/authz, validation, CSRF, secrets, headers, rate limiting, and dependency security in Java Spring Boot services.
vinayaklatthe/microsoft-security-skills
Guidance for designing secure APIs on Azure - authentication, authorization, gateway controls, input validation, rate limiting, secret management, and runtime threat detection - aligned to OWASP API…
affaan-m/ECC
Laravel security best practices for authn/authz, validation, CSRF, mass assignment, file uploads, secrets, rate limiting, and secure deployment.
davila7/claude-code-templates
Implement secure API design patterns including authentication, authorization, input validation, rate limiting, and protection against common API vulnerabilities
rand/cc-polymath
Automatically discover API design skills when working with REST APIs, GraphQL schemas, API authentication, OAuth, JWT, rate limiting, API versioning, error handling, or endpoint design.
majiayu000/litellm-rs
LiteLLM-RS response caching architecture. An agent skill from majiayu000/litellm-rs.
majiayu000/litellm-rs
LiteLLM-RS Configuration Architecture. An agent skill from majiayu000/litellm-rs.
majiayu000/litellm-rs
LiteLLM-RS Error Handling Architecture. An agent skill from majiayu000/litellm-rs.
majiayu000/litellm-rs
LiteLLM-RS Observability Architecture. An agent skill from majiayu000/litellm-rs.
majiayu000/litellm-rs
LiteLLM-RS provider system in two tiers - data-driven OpenAI-compatible catalog entries auto-routed through OpenAILikeProvider, plus code-based provider modules implementing the LLMProvider trait…
majiayu000/litellm-rs
LiteLLM-RS Routing Architecture. An agent skill from majiayu000/litellm-rs.
Categories
LiteLLM-RS Authentication Architecture. An agent skill from majiayu000/litellm-rs. Auth Architecture is an agent skill from majiayu000/litellm-rs. LiteLLM-RS Authentication Architecture.
Auth Architecture fits situations like: adding auth methods; debugging JWT/API-key validation; implementing RBAC permission checks; tuning rate limiting and auth configuration.
Run `npx skills add majiayu000/litellm-rs --skill auth-architecture -a claude-code`. Or copy the skill folder (.claude/skills/auth-architecture in majiayu000/litellm-rs) into .claude/skills/auth-architecture in your project. Claude Code loads it when a task matches its description.
Run `npx skills add majiayu000/litellm-rs --skill auth-architecture -a codex`. Or copy the skill folder (.claude/skills/auth-architecture in majiayu000/litellm-rs) into .agents/skills/auth-architecture in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add majiayu000/litellm-rs --skill auth-architecture -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/auth-architecture, .gemini/skills/auth-architecture, .github/skills/auth-architecture and .opencode/skills/auth-architecture in your project.
SKILL.md names no scripts, command-line tools or credentials: Auth Architecture is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Auth Architecture is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.9k tokens (SKILL.md is roughly 7.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Auth Architecture: API Audit (briiirussell/cybersecurity-skills, 413 stars), Springboot Security (affaan-m/ECC, 277k stars), API Security Design (vinayaklatthe/microsoft-security-skills, 175 stars) and Laravel Security (affaan-m/ECC, 277k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
majiayu000 (a GitHub user) maintains it in majiayu000/litellm-rs, which has 118 GitHub stars. The repository holds 9 skills in this directory. The repository was last updated on October 11, 2026.
Source: majiayu000/litellm-rs on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.