Update the Deadlock Mod Manager server browser implementation to match the latest Deadworks Relay Mesh Protocol v1 spec at ../deadworks-relay/spec/PROTOCOL.md.

GPL-3.0Auto-check passedDevelopment

Install Deadworks Relay

skills CLI
$ npx skills add deadlock-mod-manager/deadlock-mod-manager --skill deadworks-relay -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install deadlock-mod-manager/deadlock-mod-manager deadworks-relay --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/deadlock-mod-manager/deadlock-mod-manager.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/deadworks-relay .claude/skills/deadworks-relay && rm -rf skills-src

Use ~/.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/

Facts

Skill name
deadworks-relay
GitHub stars
478
Token cost
~3.5k tokens
SKILL.md length
1,268 words
Files
1
Skills in repo
25
Repo updated
First seen
Licence
GPL-3.0

At a glance

Update the Deadlock Mod Manager server browser implementation to match the latest Deadworks Relay Mesh Protocol v1 spec at ../deadworks-relay/spec/PROTOCOL.md.

  • Works in 7 steps: Read the Current Spec → Build the Delta Table → Known Recurring Drift Points → …
  • The user asks to sync server browser with relay spec
  • SKILL.md covers Authoritative Spec Sources, Files Owned By This Skill, Step 1: Read the Current Spec and Step 2: Build the Delta Table, plus 6 more sections
  • Calls pnpm, bun and rg

What it does

Deadworks Relay is an agent skill from deadlock-mod-manager/deadlock-mod-manager. Update the Deadlock Mod Manager server browser implementation to match the latest Deadworks Relay Mesh Protocol v1 spec at ../deadworks-relay/spec/PROTOCOL.md. Use when the user asks to "sync server browser with relay spec", "update relay protocol", "match deadworks-relay spec", "update requiredmods schema", "regenerate relay types", or when changes land in ../deadworks-relay that affect protocol shapes (registration, heartbeat, list/get servers, gossip, auth challenge, relays.json).

Its SKILL.md is about 3.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development. The repository describes itself as: A mod manager for the Valve game Deadlock. The licence is GPL-3.0.

When your agent uses it

  • The user asks to sync server browser with relay spec
  • Update relay protocol
  • Match deadworks-relay spec
  • Update requiredmods schema

Example prompts

  • “sync server browser with relay spec”
  • “update relay protocol”
  • “match deadworks-relay spec”
  • “/deadworks-relay”

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. Read the Current Spec
  2. Build the Delta Table
  3. Known Recurring Drift Points
  4. Apply Changes In Layers
  5. Cache & Compatibility
  6. Verify
  7. Changeset

What it can do on your machine

Read from SKILL.md and the folder at commit cf1c98a. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • pnpm
    • bun
    • rg

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use pnpm, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Deadworks Relay loads about 3.5k tokens when it runs. Until then it costs about 126 tokens; SKILL.md has 1,268 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~126
When it runs · the whole SKILL.md, loaded when a task matches
~3.5k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from deadlock-mod-manager/deadlock-mod-manager at commit cf1c98a, republished under its GPL-3.0 licence (© deadlock-mod-manager). 1,268 words, ~3,534 tokens.

Download SKILL.mdSave it as .claude/skills/deadworks-relay/SKILL.md (or your agent's skills folder).
name
deadworks-relay
description
Update the Deadlock Mod Manager server browser implementation to match the latest Deadworks Relay Mesh Protocol v1 spec at ../deadworks-relay/spec/PROTOCOL.md. Use when the user asks to "sync server browser with relay spec", "update relay protocol", "match deadworks-relay spec", "update required_mods schema", "regenerate relay types", or when changes land in ../deadworks-relay that affect protocol shapes (registration, heartbeat, list/get servers, gossip, auth challenge, relays.json).

Sync Server Browser With Deadworks Relay Spec

Bring the DMM server browser stack (relay client, API service, desktop UI) into compliance with the latest Deadworks Relay Mesh Protocol v1 defined at ../deadworks-relay/spec/PROTOCOL.md and the canonical TypeScript types at ../deadworks-relay/packages/protocol/src/index.ts.

The reference spec lives outside this monorepo. Always re-read it before making changes — it evolves independently.

Authoritative Spec Sources

Treat these as the single source of truth, in priority order:

  1. ../deadworks-relay/packages/protocol/src/index.ts — canonical TS types (ModRequirement, ServerListItem, RegistrationPayload, HeartbeatPayload, AuthConfig, PendingChallenge, etc.).
  2. ../deadworks-relay/spec/PROTOCOL.md — formal protocol prose (endpoints, error codes, gossip rules, auth flow, visibility semantics).
  3. ../deadworks-relay/relays.json — bootstrap manifest example (verifies RelaysManifest shape).
  4. ../deadworks-relay/apps/relay-server/ — reference relay implementation. Use as a sanity check, never as spec.

If protocol/src/index.ts and PROTOCOL.md disagree, prefer the TS file but flag the discrepancy to the user.

Files Owned By This Skill

These are the files the protocol shape flows through. Update them together:

LayerFileRole
Relay clientpackages/relay-client/src/schemas.tsZod schemas mirroring spec response shapes
Relay clientpackages/relay-client/src/client.tsHTTP calls to /api/v1/servers, /api/v1/servers/{id}, /api/v1/relays, relays.json
Relay clientpackages/relay-client/src/index.tsRe-exports
Shared schemaspackages/shared/src/schemas/server-browser.schemas.tsDMM-facing schemas (with aggregation extras like source_relay)
API aggregatorapps/api/src/services/server-browser.tsFans out across relays, dedupes, paginates
API resolverapps/api/src/services/server-mods-resolver.tsMaps required_mods entries to local DMM mods
API discoveryapps/api/src/services/relay-discovery.tsLoads relays.json, tracks per-relay health
API routerapps/api/src/routers/v2/servers.tsoRPC routes that expose the schemas
Desktop APIapps/desktop/src/lib/api.tsClient wrappers used by the UI
Desktop hooksapps/desktop/src/hooks/use-server-browser-data.ts, use-server-join.tsReact Query hooks
Desktop UIapps/desktop/src/components/server-browser/**Server table, detail panel, join dialog, mods section

Step 1: Read the Current Spec

Before any edits, read in this order:

  1. ../deadworks-relay/packages/protocol/src/index.ts (full file)
  2. ../deadworks-relay/spec/PROTOCOL.md (sections 1–12 and the auth + gossip prose)
  3. The current DMM relay-client and shared schemas listed above

Compare each TS interface in protocol/src/index.ts to the matching Zod schema in DMM. Build a mental delta table before touching code.

Step 2: Build the Delta Table

For every protocol type, classify it:

ClassificationAction
Identical shapeNo change
New optional fieldAdd to schema with .optional() (and .default(...) only when the spec mandates a default for absent values)
New required fieldAdd as required, propagate through aggregator/UI, plan migration for cached payloads
Renamed fieldUpdate schema + every consumer in one pass; do not leave shims unless explicitly requested
Removed fieldRemove from schema and every consumer; check for stale UI references (grep for the old name)
Changed type/enumUpdate schema; check .catch(...) fallbacks in zod (e.g. VisibilitySchema.catch("public") is intentional — preserve unknown-value tolerance unless the spec narrows it)

Present the delta table to the user before making non-trivial changes.

Step 3: Known Recurring Drift Points

These are the fields most likely to be out of sync — check them every run:

required_mods[] shape (highest churn)

Spec (ModRequirement in protocol/src/index.ts):

ts
{ id: string; provider: "gamebanana" | "custom"; url: string; version?: string }

If the DMM ModRequirementSchema in packages/relay-client/src/schemas.ts and packages/shared/src/schemas/server-browser.schemas.ts does not match, update both. Then audit:

  • apps/api/src/services/server-mods-resolver.ts — currently treats req.name as a URL and runs a GAMEBANANA_URL_RE regex against it. With the new shape, key off req.provider === "gamebanana" and parse the GameBanana ID from req.url. For provider === "custom", the URL is a direct download — currently DMM has no resolution path for this; mark as unknown_scheme (or add a new reason like custom_provider) and surface clearly to the user.
  • ResolvedRequirementSchema (name/version fields) — keep name as the human label (req.id) when displaying, but surface url and provider so the UI can deep-link.
  • apps/desktop/src/components/server-browser/server-detail/mods-section.tsx and server-row.tsx — display id (or a friendly fallback derived from the URL), not the raw URL.
  • apps/desktop/src/components/server-browser/server-join/requirement-row.tsx — the "Not in DMM" badge logic must distinguish unknown_scheme (custom provider) from not_in_database.
auth_config flattening

The spec sends auth as a nested auth_config object on registration but flattens it on the public list/get response (auth_required, auth_providers, auth_public_key, auth_prompt_message, auth_prompt_url). DMM consumes only the flattened form. Verify this is still true on each spec sync.

gateway_url

Top-level on both registration and list responses. DMM already honors this in server-join/join-action.ts (opens externally, takes precedence over connect code). Do not regress that ordering.

Visibility enum

Spec set: public, unlisted, private, password. Server lists only return public and password (per §5). DMM keeps the full enum since getServer(id) may return unlisted. Preserve .catch("public") to tolerate future additions from older clients.

relays.json

Schema is { version: 1, relays: [{ url, region? }] }. RelaysManifestSchema must use z.literal(1) for the version field.

Show full SKILL.md (575 more words)Show less

Step 4: Apply Changes In Layers

Work outside-in. Do not start from the UI; types must flow downward.

  1. Relay client schemas (packages/relay-client/src/schemas.ts)
    • Mirror the spec exactly. This package is the boundary with the relay mesh.
    • Use .optional().default(...) for fields the spec marks optional with a documented default; use plain .optional() otherwise.
    • Run pnpm --filter @deadlock-mods/relay-client build (or tsgo --noEmit) to type-check.
  2. Relay client transport (packages/relay-client/src/client.ts)
    • Add/remove methods to match new endpoints (e.g. if events, auth challenge, or gossip endpoints become client-relevant).
    • Keep the circuit breaker and retry behavior — those are DMM concerns, not protocol.
  3. Shared schemas (packages/shared/src/schemas/server-browser.schemas.ts)
    • The DMM-facing schema extends the relay shape with aggregation fields (source_relay, source_region). Keep those.
    • Mirror any field additions/renames from the relay schemas.
  4. API services (apps/api/src/services/*.ts)
    • server-browser.ts: dedup logic keys on id; touch only if pagination/sorting fields change.
    • server-mods-resolver.ts: rewrite parser whenever ModRequirement shape changes (see drift section above).
    • relay-discovery.ts: only changes if relays.json shape or /api/v1/relays shape changes.
  5. API router (apps/api/src/routers/v2/servers.ts)
    • oRPC types are derived from the schemas, so this rarely changes — but rebuild types and check the output.
  6. Desktop API client (apps/desktop/src/lib/api.ts)
    • Type imports flow from @deadlock-mods/shared. If schemas were renamed, update imports.
  7. Desktop hooks and components
    • Find every component that reads a changed field: rg "required_mods\.|server\.auth_|gateway_url|connect_code|password_protected" apps/desktop/src/components/server-browser
    • Update display logic. Respect i18n: any new user-facing string must go through react-i18next (see apps/desktop/src/locales/).

Step 5: Cache & Compatibility

The API aggregator caches list/detail responses in Redis (CACHE_TTL.SERVERS_LIST, CACHE_TTL.SERVER_DETAIL, CACHE_TTL.SERVERS_FACETS). When response shape changes:

  • Bump cache key versions in apps/api/src/services/server-browser.ts (buildListCacheKey, the literal server-browser:detail: and server-browser:facets) — e.g. server-browser:v2:detail:. This avoids serving stale payloads parsed against the new schema.
  • Document the bump in the changeset.

Step 6: Verify

Run each of these and fix issues before stopping:

bash
pnpm --filter @deadlock-mods/relay-client check-types
pnpm --filter @deadlock-mods/shared check-types
pnpm --filter @deadlock-mods/api check-types
pnpm --filter @deadlock-mods/desktop check-types
pnpm lint:fix
pnpm format:fix

Then exercise the path manually if changes are user-visible:

  1. Start the local relay sim per ../deadworks-relay/README.md:
    bash
    cd ../deadworks-relay && bun install && bun run sim:dev
  2. Point DMM API at it (RELAYS_JSON_URL=http://127.0.0.1:3000/relays.json or the local seed file).
  3. Open the server browser tab in the desktop app and confirm:
    • List renders, region/game-mode/password filters work.
    • Detail panel shows mods, required mods, players.
    • Join action: gateway URL opens externally if present; otherwise connect code copies.
    • Auth-protected servers show the shield icon and prompt message.

If the relay sim is not available, at minimum write a Vitest case that parses a fixture payload generated from ../deadworks-relay/packages/protocol/src/index.ts types.

Step 7: Changeset

Per .cursor/rules/090-changesets.mdc, create a changeset for any user-visible change. Use a minor bump if the public DMM API client surface changes; patch otherwise.

Example body:

Sync relay client and server browser with Deadworks Relay protocol v1
spec at <commit-or-date>. Updates `required_mods` shape to
`{ id, provider, url, version }` and adjusts the resolver to parse
GameBanana IDs from `url` instead of `name`. Bumps server browser
cache keys to invalidate stale Redis payloads.

Hard Rules

  • NEVER read the deadworks-relay TS sources by guessing — always re-read protocol/src/index.ts and spec/PROTOCOL.md at the start of the task. The spec evolves between runs of this skill.
  • NEVER rename a field in only one layer. If required_mods[].id changes, update the relay-client schema, shared schema, resolver, and every UI consumer in the same change.
  • NEVER weaken validation by switching strict zod fields to z.any() to silence type errors. If the spec genuinely allows arbitrary shape, use z.unknown() and gate consumers explicitly.
  • NEVER drop the source_relay / source_region fields from the DMM-facing schemas — those are DMM's aggregation metadata, not part of the relay spec.
  • NEVER hand-edit anything inside ../deadworks-relay/. It is a sibling repo and not part of this workspace.
  • ALWAYS bump cache key versions (Step 5) when response shape changes. Stale Redis payloads parsed against a new zod schema will break the API.
  • ALWAYS run the check-types commands in Step 6 before declaring done.

© deadlock-mod-manager, GPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/deadworks-relay of deadlock-mod-manager/deadlock-mod-manager.

Open the folder on GitHubat commit cf1c98a

Compare with similar skills

Deadworks Relay 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.

Deadworks Relay compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Deadworks Relay this skilldeadlock-mod-manager/deadlock-mod-manager478—~3.5kAutomated safety check: PassGPL-3.0
Vercel Composition Patternssupabase/supabase111k58 repos~726Automated safety check: PassMIT
Finishing a Development Branchobra/superpowers297k5 repos~1.9kAutomated safety check: PassMIT
Typescript Advanced Typesrolling-scopes/rsschool-app10k25 repos~4.2kAutomated safety check: PassMPL-2.0
PR Babysitteropeninterpreter/openinterpreter69k3 repos~4.2kAutomated safety check: PassApache-2.0
Code Review ChecklistshareAI-lab/learn-claude-code78k4 repos~1.1kAutomated safety check: PassMIT

Similar skills

  • Official

    React composition patterns that scale. An agent skill from supabase/supabase.

    111k GitHub starsUsed in 58 repos~726 tokens
    DevelopmentAuto-check passed
  • Walks the last step of a branch: confirm tests pass, detect the git environment, ask how to integrate, carry out your choice and clean up the worktree.

    297k GitHub starsUsed in 5 repos~1.9k tokens
    DevelopmentAuto-check passed
  • Typescript Advanced Types

    rolling-scopes/rsschool-app

    Master TypeScript's advanced type system including generics, conditional types, mapped types, template literals, and utility types for building type-safe applications.

    10k GitHub starsUsed in 25 repos~4.2k tokens
    DevelopmentAuto-check passed
  • PR Babysitter

    openinterpreter/openinterpreter

    Watches an open GitHub pull request until it merges, handling review comments, diagnosing CI failures and retrying flaky checks along the way.

    69k GitHub starsUsed in 3 repos~4.2k tokens
    DevelopmentAuto-check passed
  • Code Review Checklist

    shareAI-lab/learn-claude-code

    Reviews code against a five-part checklist covering security, correctness, performance, maintainability and testing, and reports findings in a fixed format.

    78k GitHub starsUsed in 4 repos~1.1k tokens
    DevelopmentAuto-check passed
  • Greploop

    onyx-dot-app/onyx

    Iteratively improves a PR (GitHub), MR (GitLab), or shelved changelist (Perforce) until Greptile gives it a 5/5 confidence score with zero unresolved comments.

    32k GitHub starsUsed in 4 repos~3.3k tokens
    DevelopmentAuto-check passed

More from deadlock-mod-manager/deadlock-mod-manager

All 25 skills in this repo
  • Skill Creator

    deadlock-mod-manager/deadlock-mod-manager

    Create new agent skills following the Agent Skills specification.

    478 GitHub starsUsed in 1 repo~2.9k tokens
    Auto-check passed
  • Create Auth Skill

    deadlock-mod-manager/deadlock-mod-manager

    Scaffold and implement authentication in TypeScript/JavaScript apps using Better Auth.

    478 GitHub starsUsed in 4 repos~3.4k tokens
    Auto-check passed
  • Opensrc

    deadlock-mod-manager/deadlock-mod-manager

    Fetch source code for npm, PyPI, or crates.io packages and GitHub/GitLab repos to provide AI agents with implementation context beyond types and docs.

    478 GitHub stars~910 tokensUpdated yesterday
    Auto-check passed
  • Security Review

    deadlock-mod-manager/deadlock-mod-manager

    Security code review for Tauri/Rust/TypeScript desktop apps and Hono/oRPC APIs.

    478 GitHub stars~1.8k tokensUpdated yesterday
    Auto-check passed
  • Babysit

    deadlock-mod-manager/deadlock-mod-manager

    Stay on one pull request until it is merge-ready, fixing the highest-priority blocker and telling the user when it is green.

    478 GitHub stars~1.8k tokensUpdated yesterday
    Auto-check passed
  • Changeset

    deadlock-mod-manager/deadlock-mod-manager

    Generate a changeset file describing the current PR's changes.

    478 GitHub stars~1.2k tokensUpdated yesterday
    Auto-check passed

Categories

Questions about Deadworks Relay

What does Deadworks Relay do?

Update the Deadlock Mod Manager server browser implementation to match the latest Deadworks Relay Mesh Protocol v1 spec at ../deadworks-relay/spec/PROTOCOL.md. Deadworks Relay is an agent skill from deadlock-mod-manager/deadlock-mod-manager.md.

When should I use Deadworks Relay?

Deadworks Relay fits situations like: the user asks to sync server browser with relay spec; update relay protocol; match deadworks-relay spec; update requiredmods schema.

How do I install Deadworks Relay in Claude Code?

Run `npx skills add deadlock-mod-manager/deadlock-mod-manager --skill deadworks-relay -a claude-code`. Or copy the skill folder (.agents/skills/deadworks-relay in deadlock-mod-manager/deadlock-mod-manager) into .claude/skills/deadworks-relay in your project. Claude Code loads it when a task matches its description.

How do I install Deadworks Relay in Codex?

Run `npx skills add deadlock-mod-manager/deadlock-mod-manager --skill deadworks-relay -a codex`. Or copy the skill folder (.agents/skills/deadworks-relay in deadlock-mod-manager/deadlock-mod-manager) into .agents/skills/deadworks-relay in your project. Codex loads it when a task matches its description.

Can I use Deadworks Relay in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add deadlock-mod-manager/deadlock-mod-manager --skill deadworks-relay -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/deadworks-relay, .gemini/skills/deadworks-relay, .github/skills/deadworks-relay and .opencode/skills/deadworks-relay in your project.

What does Deadworks Relay need to run?

Going by SKILL.md and its folder, Deadworks Relay needs the command-line tools its instructions call (pnpm, bun and rg).

Does Deadworks Relay access the network?

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.

Is Deadworks Relay safe to install?

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.

What licence does Deadworks Relay use?

Deadworks Relay is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Deadworks Relay use?

About 3.5k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Deadworks Relay?

Skills that share tags, products or a category with Deadworks Relay: Vercel Composition Patterns (supabase/supabase, 111k stars), Finishing a Development Branch (obra/superpowers, 297k stars), Typescript Advanced Types (rolling-scopes/rsschool-app, 10k stars) and PR Babysitter (openinterpreter/openinterpreter, 69k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Deadworks Relay?

deadlock-mod-manager (a GitHub organization) maintains it in deadlock-mod-manager/deadlock-mod-manager, which has 478 GitHub stars. The repository holds 25 skills in this directory. The repository was last updated on October 10, 2026.

Source: deadlock-mod-manager/deadlock-mod-manager on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.