> Load FIRST before searching code in eden/. Contains component-to-file maps, key type names, and architecture diagrams for EdenFS, Sapling, and Mononoke. Tells you exactly which files to read for any task. References contain per-component quick reference tables.
npx skills add https://github.com/facebook/sapling --skill eden_research
Oncalls: scm_client_infra · scm_server_infra · sapling
Eden is Meta's source control ecosystem comprising three major sub-projects that together provide fast, scalable version control for massive monorepos. EdenFS lazily virtualizes the filesystem, Sapling provides the CLI, and Mononoke serves as the backend.
eden/common/Developer's machine Meta's servers
┌──────────────────────────────────┐ ┌──────────────────────────────────┐
│ Sapling CLI (eden/scm/) │ │ Mononoke (eden/mononoke/) │
│ Rust + Python │ oncall: sapling │ │ Rust │ oncall: scm_server_infra │
│ User commands: sl status, │ │ │
│ sl commit, sl goto, sl rebase │ │ ┌────────────────────────────┐ │
│ │ │ │ │ SLAPI Server │ │
│ ▼ │ │ │ (servers/slapi/) │ │
│ EdenFS (eden/fs/) │ │ │ EdenAPI REST endpoints │ │
│ C++ │ oncall: scm_client_infra │ │ └───────────┬────────────────┘ │
│ Virtual filesystem daemon │ │ │ │
│ Lazy-loads files on demand │ │ ┌───────────▼────────────────┐ │
│ │ │ │ │ Mononoke API │ │
│ ┌────▼─────────────────┐ │ │ │ (mononoke_api/) │ │
│ │ SaplingBackingStore │─── EdenAPI ──▶│ └───────────┬────────────────┘ │
│ │ (Rust FFI bridge) │ │ │ │ │
│ └──────────────────────┘ │ │ ┌───────────▼────────────────┐ │
│ │ │ │ Blobstore Stack │ │
│ ┌──────────────────────────┐ │ │ │ prefix→cache→multiplex │ │
│ │ eden/common/ │ │ │ │ →pack→sqlblob/manifold │ │
│ │ Shared: ImmediateFuture, │ │ │ └────────────────────────────┘ │
│ │ PathFuncs, FaultInjector,│ │ │ │
│ │ TraceBus, RefPtr │ │ │ ┌────────────────────────────┐ │
│ └──────────────────────────┘ │ │ │ SCS Server (Thrift) │ │
│ │ │ │ (servers/scs/) │ │
└──────────────────────────────────┘ └──────────────────────────────────┘
Also: eden/integration/ (Python, end-to-end tests), eden/addons/ (TypeScript, Interactive Smartlog UI).
User process reads file
→ Kernel VFS → EdenFS FsChannel (FUSE/NFS/PrjFS)
→ Dispatcher → InodeMap → FileInode
→ materialized? → Overlay (local disk)
→ non-materialized? → BlobAccess → ObjectStore
→ BlobCache hit? → return
→ miss → SaplingBackingStore (Rust FFI)
→ EdenAPI HTTP → Mononoke SLAPI Server
→ Mononoke API → Blobstore Stack → storage
sl commit)User runs `sl commit`
→ Sapling CLI (Rust command dispatch)
→ workingcopy lib: scan EdenFS for changes (Thrift: getScmStatusV2)
→ EdenFS: diff working copy vs parent commit
→ Sapling: create commit object
→ EdenAPI client → Mononoke: upload trees + files + commit
sl goto)User runs `sl goto <rev>`
→ Sapling CLI → EdenFS Thrift: checkOutRevision()
→ EdenServiceHandler → EdenMount::checkout()
→ rootInode->checkout() → computeCheckoutActions(): diff old→new tree
→ CheckoutAction::run(): materialize/dematerialize inodes
→ FsChannel: invalidate kernel caches
EdenFS exposes a Thrift API defined in eden/fs/service/eden.thrift and streamingeden.thrift. Conventions:
*Request structs, return *Response structsMountId (containing mountPoint path) as the first fieldeden/fs/cli_rs/edenfs-client/src/client/mock_service.rsHTTP-based API between Sapling/EdenFS clients and Mononoke server. Endpoints defined in eden/mononoke/servers/slapi/. Client library at eden/scm/lib/edenapi/. See the CREATING_ENDPOINTS skill for adding new endpoints.
path/to/File.cpp:line)file_path:function_name() in execution orderAlways include concrete code pointers. Never give a pure prose answer without referencing actual code.
Follow these tiers in order. Stop at the first tier that answers the question.
Tier 1 — Answer from skill content (seconds):
Check this skill's Architecture, Cross-Cutting Data Flows, and Component Overview sections for high-level "What is X?", "Where is X?", and "How do X and Y connect?" questions. If the question is about a specific component, load the appropriate reference from references/ (see Detailed References section below).
Tier 2 — Read source files directly (under 1 min):
Use the Detailed References table below to load the appropriate reference, which contains Component Overview and Quick Reference tables for the relevant component. Then read source files directly. Also check the relevant CLAUDE.md (eden/fs/.claude/CLAUDE.md, eden/scm/.claude/CLAUDE.md, etc.) for additional architecture context. This handles most "How does X work?", "Trace X", and implementation questions.
Tier 3 — Spawn subagents for deep exploration (3-5 min):
Only when Tiers 1-2 are insufficient — e.g., tracing across multiple subsystems, understanding rarely-documented internals, or questions about code with no skill/CLAUDE.md coverage. Spawn one meta_codesearch:code_search subagent per subsystem, launched in parallel. If a subagent fails or returns nothing useful, fall back to this skill's static content and point to eden/fs/docs/. Don't retry.
For component-specific information (component overview, quick reference, key concepts), load the appropriate reference:
| Component | Reference | When to Load |
|-----------|-----------|--------------|
| EdenFS | references/edenfs.md | Inodes, ObjectStore, FUSE/NFS/PrjFS, Thrift service |
| Sapling | references/sapling.md | CLI commands, Rust libraries, Python interop, .t tests |
| Mononoke | references/mononoke.md | SLAPI/SCS/Git servers, blobstore, derived data, facets |
| Integration | eden/integration/.claude/CLAUDE.md | End-to-end tests with real EdenFS daemon |
| Endpoints | ../CREATING_ENDPOINTS/SKILL.md | Adding new EdenAPI/SLAPI endpoints |
Assists in writing high-quality content by conducting research, adding citations, improving hooks, iterating on outlines, and providing real-time feedback on each section. Transforms your writing process from solo effort to collaborative partnership.
Identifies high-quality leads for your product or service by analyzing your business, searching for target companies, and providing actionable contact strategies. Perfect for sales, business development, and marketing professionals.
Use this skill to query your Google NotebookLM notebooks directly from Claude Code for source-grounded, citation-backed answers from Gemini. Browser automation, library management, persistent auth. Drastically reduced hallucinations through document-only responses.
Efficient database search tool for bioRxiv preprint server. Use this skill when searching for life sciences preprints by keywords, authors, date ranges, or categories, retrieving paper metadata, downloading PDFs, or conducting literature reviews.
Query and analyze scholarly literature using the OpenAlex database. This skill should be used when searching for academic papers, analyzing research trends, finding works by authors or institutions, tracking citations, discovering open access publications, or conducting bibliometric analysis across 240M+ scholarly works. Use for literature searches, research output analysis, citation analysis, and academic database queries.
Access USPTO APIs for patent/trademark searches, examination history (PEDS), assignments, citations, office actions, TSDR, for IP analysis and prior art searches.
Multiagent AI system for scientific research assistance that automates research workflows from data analysis to publication. This skill should be used when generating research ideas from datasets, developing research methodologies, executing computational experiments, performing literature searches, or generating publication-ready papers in LaTeX format. Supports end-to-end research pipelines with customizable agent orchestration.
Automated LLM-driven hypothesis generation and testing on tabular datasets. Use when you want to systematically explore hypotheses about patterns in empirical data (e.g., deception detection, content analysis). Combines literature insights with data-driven hypothesis testing. For manual hypothesis formulation use hypothesis-generation; for creative ideation use scientific-brainstorming.
Take facebook/eden_research from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.