mvanhorn/last30days-skill · error
engine: resolve user cache dir (set %s to override): %w
Error message
engine: resolve user cache dir (set %s to override): %w
What it means
Error "engine: resolve user cache dir (set %s to override): %w" thrown in mvanhorn/last30days-skill.
Source
Thrown at mcp/internal/engine/extract.go:66
// Reset the sync.Once so a follow-up call can retry rather than
// permanently caching the error. Retry is the right default when
// the failure is transient (e.g., disk full, parent dir restored).
resetOnce(cacheDir)
return "", extractErr
}
return cacheDir, nil
}
// EnsureUserCache wraps Ensure with the OS user cache dir (or the
// LAST30DAYS_CACHE_DIR override) as base. Production callers use this; tests
// use Ensure with an explicit temp dir.
func EnsureUserCache(src fs.FS, version string) (string, error) {
if override := os.Getenv(CacheEnvOverride); override != "" {
return Ensure(src, override, version)
}
base, err := os.UserCacheDir()
if err != nil {
return "", fmt.Errorf("engine: resolve user cache dir (set %s to override): %w", CacheEnvOverride, err)
}
return Ensure(src, base, version)
}
func ensureLocked(src fs.FS, cacheDir, version string) error {
if sentinelMatches(cacheDir, version) {
return nil
}
tmpDir := cacheDir + ".tmp"
if err := os.RemoveAll(tmpDir); err != nil {
return fmt.Errorf("engine: clean tmp cache: %w", err)
}
if err := os.MkdirAll(tmpDir, 0o755); err != nil {
return fmt.Errorf("engine: create tmp cache (%s, set %s to override): %w", tmpDir, CacheEnvOverride, err)
}
if err := extractAll(src, tmpDir); err != nil {
_ = os.RemoveAll(tmpDir)
return errView on GitHub (pinned to c7460f6114)
Solutions
- Set the cache dir override environment variable (LAST30DAYS_CACHE_DIR) to a writable directory so the engine does not need to resolve the OS user cache dir.
- Fix the environment so os.UserCacheDir() works: set HOME (Unix) or APPDATA (Windows) to a valid directory.
When it happens
Trigger: Fires during engine cache extraction when the OS user cache directory cannot be resolved (e.g. XDG_CACHE_HOME/HOME unset or invalid). Set the override environment variable named in the message to point at a writable directory.
Common situations: See trigger scenarios.
AI-assisted analysis of mvanhorn/last30days-skill@c7460f6114 (2026-08-15).
Data as JSON: /api/errors/c50676f33a59e365.
Report an issue: GitHub.