Claude-skill-registry eft-domain
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/eft-domain" ~/.claude/skills/majiayu000-claude-skill-registry-eft-domain && rm -rf "$T"
manifest:
skills/data/eft-domain/SKILL.mdsource content
EFT Domain Knowledge Skill
Game Context
Escape from Tarkov (EFT) is a hardcore tactical FPS with RPG elements. Players complete quests from traders to unlock gear, gain reputation, and progress toward the Kappa container (ultimate goal).
EFT-Tracker helps players track quest progress and visualize quest dependencies.
Quest System
Quest Status
type QuestStatus = "locked" | "available" | "completed";
- locked - Prerequisites not met (level or quest requirements)
- available - Can be started (all prerequisites met)
- completed - Already finished
Quest Types
type QuestType = | "standard" // Regular trader quests | "pvp_zone" // PVP Zone quests (Arena) | "reputation" // Fence reputation repair | "lightkeeper" // Lightkeeper questline | "faction_bear" // BEAR-only quests | "faction_usec" // USEC-only quests | "story" // Main story quests (1.0) | "prestige"; // Prestige quests (require The Collector)
Quest Dependencies
Quests can have prerequisites with different status requirements:
type RequirementStatusType = "complete" | "active" | "failed"; // Quest A requires Quest B to be completed { requiredQuest: questB, requirementStatus: ["complete"] } // Quest A requires Quest B to be active OR completed { requiredQuest: questB, requirementStatus: ["active", "complete"] }
Traders
| Trader | Specialty | Color |
|---|---|---|
| Prapor | Weapons, ammo | Red |
| Therapist | Medical, food | Purple |
| Fence | Scav items, reputation | Gray |
| Skier | Western weapons | Blue |
| Peacekeeper | NATO weapons, USD | Light Blue |
| Mechanic | Weapon mods | Yellow |
| Ragman | Armor, clothing | Orange |
| Jaeger | Survival, hunting | Green |
| Lightkeeper | Special endgame | Cyan |
| BTR Driver | Convoy quests | Olive |
| Ref | Arena quests | Pink |
Kappa Container
The Kappa Secure Container is the ultimate progression goal:
- Requires completing all "Kappa required" quests
- Quest: "The Collector" unlocks Kappa
flag on quests indicates if needed for KappakappaRequired: boolean
Kappa Progress Tracking
// Filter for Kappa-required quests only const kappaQuests = quests.filter((q) => q.kappaRequired); // Calculate Kappa progress const completed = kappaQuests.filter((q) => q.computedStatus === "completed"); const progress = (completed.length / kappaQuests.length) * 100;
Data Structures
Quest Interface
interface Quest { id: string; title: string; wikiLink: string | null; levelRequired: number; kappaRequired: boolean; questType: QuestType; factionName: string | null; // "BEAR" | "USEC" | null traderId: string; trader: Trader; objectives: Objective[]; dependsOn: QuestDependency[]; dependedOnBy: QuestDependent[]; }
Quest with Progress
interface QuestWithProgress extends Quest { progress: QuestProgress | null; computedStatus: QuestStatus; // Calculated based on dependencies }
tarkov.dev API
The app syncs quest data from tarkov.dev GraphQL API.
Key Endpoints
query { tasks { id name wikiLink minPlayerLevel kappaRequired taskRequirements { task { id } status } trader { id name } } }
Data Sync
Quest data is periodically synced and stored in the database. The sync process:
- Fetches all tasks from tarkov.dev
- Maps API structure to internal Quest model
- Updates database with new/changed quests
- Preserves user progress associations
Quest Tree Visualization
The quest tree uses ReactFlow to visualize dependencies:
- Nodes = Quests (colored by status)
- Edges = Dependencies (arrows show requirement direction)
- Layout = Hierarchical (dagre algorithm)
Node Colors
const statusColors = { locked: "gray", available: "cyan", completed: "green", };
Focus Mode
Double-click a quest to enter Focus Mode:
- Shows only the selected quest and its dependency chain
- Filters out unrelated quests
- ESC exits focus mode
Common Operations
Mark Quest Complete
await updateQuestProgress({ questId: quest.id, status: "completed", completedAt: new Date(), });
Get Next Available Quests
const nextQuests = quests.filter( (q) => q.computedStatus === "available" && q.levelRequired <= playerLevel );
Calculate Dependency Chain
function getDependencyChain(quest: Quest): Quest[] { const chain: Quest[] = [quest]; for (const dep of quest.dependsOn) { chain.push(...getDependencyChain(dep.requiredQuest)); } return chain; }
Wipe Cycles
EFT has periodic wipes that reset all player progress. The tracker supports:
- Resetting all quest progress for new wipe
- Preserving historical progress (optional)
- Quick-start options for returning players
Terminology Reference
| Term | Meaning |
|---|---|
| PMC | Private Military Contractor (main character) |
| SCAV | Scavenger (alternate play mode) |
| Wipe | Server reset of all progress |
| Kappa | Best secure container (5x3 slots) |
| Hideout | Player base for crafting |
| Labs | High-tier locked map |
| FIR | Found In Raid (item status) |
| Fence rep | Scav karma system |
Files Reference
| File | Purpose |
|---|---|
| Quest type definitions |
| API response types |
| Quest API routes |
| ReactFlow visualization |