adam-s-daniel/adam-local
Adam's machine-bound skills that need local resources (WSL/Windows homes, local files, a signed-in browser): PDF tooling, Claude Code session/settings/memory management, skill sync, school bell schedule.
Compare pairs of PDFs (name.pdf + name<suffix>.pdf in the same folder) to determine whether they would produce identical printouts and whether their embedded text differs — e.g. to safely delete redundant "-signed" or "-needsocr" duplicates. Recursively finds every pair under a directory, rasterizes pages and compares hashes, and diffs extracted text. Triggers: "compare pdf pairs", "find duplicate pdfs", "are these pdfs identical", "which suffixed pdfs can I delete", "dedupe scanned pdfs".
Launch a detached, interactive Claude Code session inside WSL from a Windows Claude Code session — in a specific repo/folder, optionally remote-controllable and optionally seeded with an initial prompt. Use this WHENEVER the user wants to open / launch / spawn / start / fire off a separate (or background, detached, standalone, "and ignore it") Claude session in WSL, in a given directory, especially so it shows up in their remote Claude sessions list, even if they don't name every detail. It handles the Windows→WSL launch quirks that silently break naive attempts: ConPTY via Windows Terminal, PowerShell path passing, session-id vs initial-prompt openers, prompt quoting, and the workspace-trust gate.
Inventory, clean up, and migrate Claude Code auto-memory stores found under ~/.claude/projects/<munged-path>/memory/ on this machine. Use this skill to list every memory store with its decoded project path, file count, size, and freshness; to identify ORPHANED stores whose original workspace no longer exists (so a human can review and delete them); and to migrate a chosen store into a repo's git-tracked .claude/memory/ directory so the memory travels with the repo across machines and is visible to hosted/cloud Claude sessions. Trigger on requests like "clean up claude memory", "migrate claude memory", "inventory memory stores", "orphaned memory", "sync memory across machines", "make memory portable", or any mention of ~/.claude/projects or autoMemoryDirectory. LOCAL-ONLY: this skill reads and writes files under this machine's ~/.claude directory and CANNOT run in a hosted/cloud Claude session that has no local ~/.claude on disk — do not invoke it there.
Batch-OCR scanned PDFs flagged as needing OCR, then visually review results with a WPF side-by-side comparison tool.
Audit PDF files to determine whether OCR (optical character recognition) is needed to make them fully text-searchable. Use this skill whenever the user asks about PDF searchability, OCR status, whether PDFs have embedded text, which PDFs are scans, or wants to audit/inventory a folder of PDFs for text extraction readiness. Also triggers for: "which PDFs need OCR", "are my PDFs searchable", "do these PDFs have text layers", "audit my PDFs", "find scanned PDFs".
Rename already-searchable PDFs in a specified folder to descriptive, date-prefixed names, proposing each name from the PDF's own content and prompting for per-file confirmation or edit before applying. Use after running ocr-pdfs to clean up scanner-output filenames like "Scan from 2024-03-15.pdf", "QuickScan_001.pdf", or "Document(47).pdf" — or for any folder of PDFs that already have text layers but unhelpful filenames. Triggers: "rename my pdfs", "clean up pdf filenames", "rename searchable pdfs", "give my pdfs descriptive names", "rename scanned pdfs", "tidy pdf names".
Sync Claude Code settings.json between a Windows home and a WSL home. Triggers on requests to "sync Claude Code settings", "merge my settings.json", "keep WSL and Windows Claude settings in sync", or mentions of reconciling %USERPROFILE%\.claude\settings.json with ~/.claude/settings.json in WSL. Backs up both files with an Eastern-time-stamped prefix, then merges per property (union for permissions.allow/deny and spinnerVerbs.verbs; more-recently-modified-wins with optional prompt for scalars like theme, model, effortLevel, tui, verbose, etc.; statusLine and defaultShell are kept per-file). Preserves each file's native newline format (CRLF for Windows, LF for WSL) and UTF-8 BOM presence. Windows-only (needs PowerShell 7+ and access to the WSL UNC share, e.g. \\wsl.localhost\Ubuntu\...). Use when the user wants the two settings.json files reconciled, not when they want a single file edited in place.
Sync local skill folders from git repos to Claude.ai (and other agent targets) via the upload-skill API. Trigger when the user says "sync skills", "push skills to Claude", "upload skill", or after editing SKILL.md files locally. Requires a claude.ai tab open in Chrome (uses browser session cookies via javascript_tool). Works on Adam's computer wherever the agentskills clones live, but the helper does not guess where: it scans its own checkout, and any other clone must be named with --repos or $AGENTSKILLS_REPOS.
Handle "Access is denied" from powershell.exe or pwsh.exe run inside WSL — Register-ScheduledTask / Set-ScheduledTask on a RunLevel=HighestAvailable task, a service change (Set-Service, Stop-Service, New-Service), an LSA rights grant such as "Log on as a batch job" (SeBatchLogonRight, secedit, ntrights), an HKLM registry write, or any other change to Windows state from a WSL session. Use it BEFORE attempting such a write from WSL and the moment one is denied. PowerShell run from WSL inherits the elevation of the session that launched WSL, and an agent's session is not elevated: reads succeed (Get-ScheduledTask, Get-Service, the registry) so the surface looks available, writes that need elevation fail, and no flag, retry, Start-Process -Verb RunAs, schtasks, sudo, SYSTEM principal or downgraded RunLevel fixes it. Compose the command from WSL, export what it will overwrite (Export-ScheduledTask), then hand the operator the exact line for an elevated Windows prompt and say it needs elevation.
Answer questions about the current or next class period, break, passing period, lunch, or bell at Walter Johnson High School (WJ / WJHS, Bethesda MD). Use whenever the user asks about Walter Johnson's schedule — "when does lunch end", "what period is it right now", "when's the next break", "is school on today", "what time do classes end" — or mentions WJ bells, periods, or dismissal. Knows all six WJ bell-schedule variants (regular, early dismissal, 2-hour delay, homeroom, two assembly variants) plus spring testing-day adjusted schedules, and relies on the agent's judgment — informed by the user's subscribed WJHS calendar, web search, and other context — to pick which one applies today.