Diagnose systemd-managed EdenFS failures, restarts, health, and lifecycle timelines.
The materials indicate this is an open-source, prompt-only/documentation-oriented skill with no required secrets and no declared remote endpoints, so overall risk is low. It mainly provides EdenFS/systemd troubleshooting guidance, but it references local diagnostic commands and log locations, so least-privilege use and care around production systems are still advisable.
The material explicitly states that no keys or environment variables are required. There is no indication of requesting tokens, cookies, or long-lived credentials, nor obvious credential collection or exfiltration.
No remote endpoints are declared, and the system flags it as prompt-only. The README only mentions links/monitoring queries for human reference, with no evidence that the skill itself actively sends user data to external services.
As a Skill artifact, it is primarily troubleshooting guidance and command suggestions. Although it lists local commands such as systemctl, eden status, and machinectl shell, there is no evidence that the skill ships executable components or automatically runs code.
The documentation directs users to inspect local system state and logs, such as `/var/facebook/logs/edenfs_upgrade.log`, `/var/log/messages`, and systemd/Eden status output. This is normal local data access for troubleshooting, but it may expose system and user-environment details, so access should be minimized as needed.
The source is the open-source GitHub repository `facebook/sapling`, which provides reasonable auditability, and the system already flags it as open-source. Although the star count, maintenance status, and license metadata are limited or unclear, the material shows no clear supply-chain red flags such as closed-source exfiltration, spoofed origin, or deceptive packaging.
Copy the install command and let the AI configure it · recommended for beginners
Please install the "edenfs-systemd-triage" skill from askskill: 1. Download https://raw.githubusercontent.com/facebook/sapling/main/eden/.llms/skills/edenfs-systemd-triage/SKILL.md 2. Save it as ~/.claude/skills/edenfs-systemd-triage/SKILL.md 3. Reload skills and tell me it's ready
Help me investigate why EdenFS is down on this Linux devserver. Check its systemd-managed state, recent failure causes, whether auto-restarts happened, and suggest next troubleshooting steps.
A report covering current EdenFS service state, key systemd events, likely root causes, and actionable troubleshooting steps.
Using systemd and EdenFS-related information, build a lifecycle timeline for EdenFS on this host, including starts, stops, restarts, upgrades, and abnormal events, and explain how it reached its current state.
A chronological event timeline plus a summary of the key transitions that led to the current state.
Check whether edenfs_upgrade, edenfs_restarter, and related systemd timers/services are misbehaving. Analyze recent trigger history, failures, and whether they caused EdenFS restarts or downtime.
A health assessment of upgrade and timer jobs, notable anomalies, and an impact analysis on EdenFS availability.
This skill helps EdenFS team members understand, monitor, and triage systemd-managed EdenFS.
Systemd manages the EdenFS daemon lifecycle on Linux (devservers and OnDemands). When EdenFS exits unexpectedly (crash, OOM-kill), systemd automatically restarts it — no user intervention needed.
Two systemd components to know:
| Component | What it does | Scope |
|---|---|---|
[email protected] | User-scoped service managing the edenfs daemon lifecycle (auto-restart on failure) | Per-user (systemctl --user) |
edenfs_upgrade.timer | System-scoped hourly timer that runs edenfs_restarter to upgrade edenfs gracefully | System-wide (systemctl) |
Config gate: [experimental] systemd-managed-lifecycle = true in eden config.
Read the reference file that matches your need:
| Need | Reference File | When to Read |
|---|---|---|
| Understand the architecture | references/architecture.md | How systemd-managed EdenFS works, service unit file, lifecycle operations |
| Check health & monitor | references/monitoring.md | Scuba queries, dashboards, success rate metrics, rollout monitoring |
| Build a lifecycle timeline | references/timeline.md | Reconstruct chronological EdenFS events from Scuba + local logs + systemd properties to understand how the system reached its current state |
| Triage a specific failure | references/triage-playbook.md | Step-by-step procedures for common failure scenarios |
| Identify known failure patterns | references/common-failures.md | Error signatures, root causes, and fixes for known issues |
When triaging an EdenFS systemd issue, start here:
eden config | grep systemd-managededen status --debug/var/facebook/logs/edenfs_upgrade.log and /var/log/messagesIf you need to run commands on a user's machine via sush, you cannot use su — you must use:
machinectl shell <username>@.host /usr/local/bin/eden status --debug
These are read-only and safe to execute automatically:
# Check if systemd-managed
eden config | grep systemd-managed
# Full service status with systemd details
eden status --debug
# Check eden version mismatch
eden version
# Check systemd service properties (restart policy, crash counters, timestamps)
systemctl --user show edenfs@home-$(whoami)-local-.eden.service \
--property=Id,Type,Restart,RestartUSec,StartLimitIntervalUSec,StartLimitBurst,NRestarts,ExecMainStartTimestamp,ExecMainPID,ExecMainCode,ExecMainStatus,ActiveState,SubState,Result,InvocationID,ActiveEnterTimestamp,ActiveExitTimestamp,InactiveEnterTimestamp,InactiveExitTimestamp
# Check eden logs for recent errors
eden debug log | tail -50
# Check startup log
cat <state_dir>/.edenfs_startup.log
# Check system messages for edenfs service events
grep 'edenfs@' /var/log/messages | tail -20
# Check edenfs_upgrade logs
tail -50 /var/facebook/logs/edenfs_upgrade.log
# Check kernel OOM kills
dmesg | grep -i -E '(edenfs|oom|killed)' | tail -20
# Check dbus connectivity (needed for systemctl --user)
python3 -c "import socket; s=socket.socket(socket.AF_UNIX,socket.SOCK_STREAM); s.settimeout(1); s.connect('/run/user/$(id -u)/bus'); print('alive'); s.close()"
# Check linger (needed for user services to persist)
loginctl show-user $(whoami) --property=Linger
CRITICAL: Scuba uses the short hostname (e.g., devvm21611.cco0), NOT the FQDN returned by hostname (e.g., devvm21611.cco0.facebook.com). Always strip the .facebook.com suffix:
hostname | sed 's/\.facebook\.com$//'
…
Learn to build EdenAPI/SLAPI endpoints with streaming and non-streaming patterns.
Locate Eden code components, key types, and architecture before reading files.
Create a Mononoke server-side hook with 3-diff split (tests, wiring, implementation), unit tests, and integration tests
Write and run Markdown-driven end-to-end tests for Relay apps.
Get idiomatic Relay guidance for React code, debugging, and code reviews.
Understand the Pyre/Pysa architecture and locate key implementations quickly.