> 30-second auto-detection tour, then optional configuration of notifications, CLI allowlist, research CLAUDE.md rules, and LaTeX environment.
npx skills add https://github.com/fcakyon/labrat --skill setup
The plugin works correctly the moment it is installed. Most users never need to run setup. This skill exists to (1) show what was auto-detected on the user's system, and (2) let users opt into a few extras (notifications, allowlist, project CLAUDE.md, LaTeX).
Before asking any questions, print what the plugin already knows. No prompts, no decisions, just visibility.
Run these probes silently and present the results:
# Last few long-job launches the plugin would have flagged
recent_launches=$(history 200 2> /dev/null | grep -E '(python.*train|accelerate launch|torchrun|deepspeed|sbatch|tmux.*python)' | tail -5)
# What the agentic Stop hook would orient on for this project
project_orientation=""
[ -f README.md ] && project_orientation+="README.md found "
[ -f CLAUDE.md ] && project_orientation+="CLAUDE.md found "
[ -f .claude/CLAUDE.md ] && project_orientation+=".claude/CLAUDE.md found "
[ -f AGENTS.md ] && project_orientation+="AGENTS.md found "
Then present:
Lab Rat auto-detected the following:
Recent launches: <count> training-job patterns in shell history
Project orientation: ${project_orientation:-no README / CLAUDE.md / AGENTS.md found at project root}
This is what the hooks and agentic Stop hook will use. No configuration needed.
The plugin works on the first prompt. Hooks fire silently when there is nothing to flag.
Want to configure any extras? (notifications, allowlist, CLAUDE.md, LaTeX) [y/N]
If the user says no, you are done. If yes, walk them through the optional steps below.
Use AskUserQuestion:
Which extras would you like to set up?
1. Notifications: get alerts when long tasks complete (ntfy / slack / email)
2. CLI Allowlist: auto-approve safe commands used in research workflows
3. Research CLAUDE.md: add research integrity rules to your project
4. LaTeX Environment: detect and configure LaTeX / BibTeX toolchain
Enter numbers separated by commas (e.g., 1,3,4), or "all":
Ask which notification method:
How would you like to receive notifications?
1. ntfy.sh: free, works over SSH, no account needed
2. Slack: webhook to a channel
3. Email: via sendmail / msmtp
Enter number:
Based on selection:
.env as NTFY_TOPIC=<topic>. Test with curl -d "labrat test" ntfy.sh/<topic>.env as SLACK_WEBHOOK_URL=<url>. Test with curl POST.env as NOTIFICATION_EMAIL=<email>. Test with sendmailShow the user a list of safe, non-destructive commands commonly used in research:
{
"allowedTools": [
"Read",
"Glob",
"Grep",
"Bash(pdflatex *)",
"Bash(biber *)",
"Bash(bibtex *)",
"Bash(python -c *)",
"Bash(uv run *)",
"Bash(git status)",
"Bash(git diff *)",
"Bash(git log *)",
"Bash(nvidia-smi)",
"Bash(htop)",
"Bash(df -h)",
"Bash(wc -l *)",
"Bash(du -sh *)"
]
}
Ask for confirmation, then merge into .claude/settings.json.
Present the following research integrity rules to add to the project's CLAUDE.md:
## Research Integrity Rules
- Code is the source of truth. When paper text and code disagree, the code is correct
unless the user explicitly states otherwise.
- Never state a numerical result without tracing it to a specific file, log, or code output.
If you cannot find the source, say so explicitly.
- Never assume domain-specific technical behavior. Verify against code before making claims
about how methods, losses, architectures, or training procedures work.
- When editing paper text, change ONLY what was requested. Do not remove existing content,
add unrequested sections, or "improve" surrounding text unless asked.
- Citation integrity: verify author names, venue, and year against DBLP before adding or
modifying any BibTeX entry. Flag any citation detail you cannot verify.
- Edit code locally, commit, push, then `git pull` on the GPU host. Never edit tracked code
in place over SSH.
Ask the user to confirm, then:
Follow the LaTeX setup.
See paper search setup.
The plugin avoids configuration on purpose. If a user really wants to override:
~/.claude/settings.json and set "hooks.<event>.<matcher>.disabled": true (Claude Code's standard mechanism)Take fcakyon/labrat-setup 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.