obsidian-experiment-log
Records an experiment's protocol, progress snapshots, results, and next decision in its canonical Obsidian project log.
Skill by Vepricov
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/vepricov-obsidian-experiment-log
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/obsidian-experiment-log
What's inside
- Skill name
obsidian-experiment-log- Description
- Records an experiment's protocol, progress snapshots, results, and next decision in its canonical Obsidian project log. Use when the user launches, monitors, or finishes a training run, asks to log an experiment, update a results table, or promote a finished result into a stable finding.
- License
- MIT
- Instructions
- 220 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Obsidian Experiment Log
Use this skill whenever project work changes the experimental state — either because a new run is being designed, launched, monitored, or completed, or because results need to be promoted into stable findings.
## Role in the workflow
Covers two layers:
1. **Operations** — how to launch, monitor, and chain real training runs on remote servers
2. **Notes** — the run's live page with its convergence plot, inside the work in `~/brainlab`
Both layers must be applied together. A finished experiment with no notes is invisible to future agents; a beautifully written note with no actual run is fiction.
---
## Layer 1 — Operations (running the experiments)
### Two execution modes — pick by user intent
| Mode | When to use | Reference |
|---|---|---|
| **Live monitor with /loop** | Multi-hour runs needing post-finish actions (kill tmux, refresh plot, launch next from queue, write final into table). User says "следи / поставь N ранов / запусти когда освободится". | [[personal/Knowledge/autonomous-experiment-loop]] |
| **Push queue (per-GPU lane)** | Set-and-forget N items, no trigger logic, no chained actions. User says "поставь очередь на ночь". | [[personal/Knowledge/server-run-queue]] |
The live-monitor mode is the default for warmup-style hypothesis studies. The push queue is for compute-burning ablations where order matters but events don't.
### Launch primitive (tmux + pipe-pane)
Every training run = one tmux session whose pane is piped to a log file. Survives ssh drop, log stays parseable.
```bash
ssh SERVER "tmux new-session -d -s SESSION_NAME && \
tmux pipe-pane -t SESSION_NAME:0 'cat >> /abs/path/logs/RUN.txt' && \
tmux send-keys -t SESSION_NAME 'source ~/venv/bin/activate' Enter && sleep 1 && \
tmux send-keys -t SESSION_NAME 'cd ~/repo' Enter && \
tmux send-keys -t SESSION_NAME 'GPU=N WS=X LR=Y SEED=Z bash scripts/param_run.sh' Enter"
```
Critical ordering:
- `tmux new-session -d -s NAME` first, **then** `pipe-pane`, **then** `send-keys`. Collapsing them (`tmux new -d -s NAME 'cmd'`) races the pane setup → empty log.
- Verify within 60–90 s: `tmux capture-pane -t NAME:0 -p | tail -10` should show `Iter=` lines. If only optimizer-init lines after 60 s, the run is stuck — kill and investigate before scheduling the next tick.
### Parametrized launcher (one script per experiment family)
Don't write one bash script per run. One parametrized script per family, env-var-controlled:
```bash
ITERS=${ITERS:-32000}
GPU=${GPU:-0}
LR=${LR:-1e-3}
WS=${WS:-10}
SEED=${SEED:-0}
# ... --lr $LR --warmup_steps $WS --seed $SEED ...
```
Adding `SEED=42` for reproducibility reruns becomes a one-line edit (`SEED=${SEED:-0}` + `--seed $SEED`). No fork. Default unchanged so prior runs unaffected.
### The /loop prompt (state lives in the prompt, not the agent)
```
AUTONOMOUS <study> on <server>.
CURRENT active runs (N):
- `session_1` (GPU X, ~Ys/iter, last iter, last val)
DONE so far: <seed=0 finals>
PLANNED queue: <ordered list of configs>
GPU plan: <which finish → which launch>
Each tick: ssh SERVER 'grep ">Eval" logs/<files>; nvidia-smi'
TRIGGERS:
(a) GPU >50GB free AND <30% util AND next item not running → launch
(b) running session hits target iter → record final, kill tmux, refresh plot, launch next
(c) ALL queue done → write final results section, STOP loop
Launch template: <one-line tmux+pipe-pane command>
CONSTRAINTS: paper-canonical hypers only. 30-min cadence. NO other launches.
```
The agent re-receives this verbatim every 30 min via `ScheduleWakeup(1800, /loop ...)`. Nothing in the model's head; state lives entirely in server logs + the prompt itself.
### Trigger semantics
| Trigger | Action | Don't forget |
|---|---|---|
| `last_eval_iter == target_iter` | record final, `tmux kill-session -t NAME`, refresh plot | check pane shows `wandb` sync + shell prompt — confirms clean exit, not OOM |
| GPU `>50GB free AND <30% util` | launch next queued config | re-check 60 s after launch that `Iter=` appears in log |
| **Same iter for two consecutive ticks** | **investigate stall before next tick** | check pane (`tmux capture-pane`) for traceback; check `df -h /data` for disk-full |
| All queue items finished | write final summary section + STOP loop (no ScheduleWakeup) | refresh plot one last time, add MemPalace drawer |
### GPU contention on shared servers
Other users grab freed GPUs in seconds. Two rules:
1. **Don't assume the GPU you freed is the GPU you'll reclaim.** After `kill-session`, log GPU map immediately. If now-owned by someone else, find a different free GPU.
2. **Safe envelope on H200 (141GB):** `>50GB free AND <30% util` for ~24GB models. Tighten or loosen per server class.
```bash
# GPU state
ssh SERVER 'nvidia-smi --query-gpu=index,memory.used,memory.free,utilization.gpu --format=csv,noheader'
# Ownership (who runs what)
ssh SERVER 'nvidia-smi --query-compute-apps=gpu_uuid,pid,used_memory,process_name --format=csv,noheader'
```
Map UUID → index using `--query-gpu=index,gpu_uuid`.
### Two failure modes to design for
**Same iter as last tick — process is stuck or dead.** Don't blindly schedule another tick. Capture the pane (`tmux capture-pane -t NAME:0 -p | tail -20`), look for: Python traceback, wandb upload + shell prompt (= clean finish you didn't notice), or silence (= true hang).
**Disk full mid-checkpoint.** `torch.save` fails partial writes with `RuntimeError: [enforce fail at inline_container.cc:...] . unexpected pos N vs 0`. Check `df -h /data`. If >95% full, **do not restart** — it will crash again. Accept partial result, document, move on.
### Brutal honest reporting
If a run crashed, write "crashed at iter X with traceback Y", not "may not have completed". If a finding rests on a partial trajectory, say so explicitly — "Q3 didn't finish; trajectory at 84% (val 3.072) consistent with Q1 at same %; inferred final ~3.04". Reviewers see through hedge-words; agents shouldn't generate them.From Vepricov/claude-brainlab, MIT.
More from Vepricov/claude-brainlab
- 0.657score
obsidian-project-memory
Vepricov
Maintains canonical project context and durable research decisions in the mapped Obsidian knowledge base.
SkillAFreshness: A★ 33Claude Code +9 - 0.657score
obsidian-markdown
Vepricov
Writes and edits Obsidian Flavored Markdown with valid wikilinks, embeds, properties, callouts, comments, and tables.
SkillAFreshness: A★ 33Claude Code +9 - 0.657score
obsidian-project-bootstrap
Vepricov
Creates or repairs the Obsidian knowledge base and folder mappings for an existing research repository.
SkillAFreshness: A★ 33Claude Code +9 - 0.657score
obsidian-bases
Vepricov
Creates and edits Obsidian Bases (.base) files with filters, formulas, views, and summaries in valid YAML.
SkillAFreshness: A★ 33Claude Code +9 - 0.657score
obsidian-literature-workflow
Vepricov
Develops project-linked reading notes and literature synthesis from papers stored in the Obsidian knowledge base or Zotero.
SkillAFreshness: A★ 33Claude Code +9 - 0.657score
doc-coauthoring
Vepricov
Co-authors a technical document, proposal, or specification through context gathering, targeted drafting, and reader-testing review.
SkillAFreshness: A★ 33Claude Code +9 - 0.657score
bug-detective
Vepricov
Investigates software failures, exceptions, and errors by tracing execution, reproducing the problem, and testing the suspected cause.
SkillAFreshness: A★ 33Claude Code +9 - 0.657score
json-canvas
Vepricov
Creates and edits Obsidian Canvas (.canvas) files with nodes, edges, groups, and layout following JSON Canvas Spec 1.0.
SkillAFreshness: A★ 33Claude Code +9 - 0.657score
git-workflow
Vepricov
Prepares commits, branches and pull requests following the repository's existing Git conventions, including Conventional Commits messages and merge strategy.
SkillAFreshness: A★ 33Claude Code +9 - 0.657score
kaggle-learner
Vepricov
Extracts reusable ML techniques, code patterns, and feature engineering ideas from Kaggle competition winning solutions and maps where they apply.
SkillAFreshness: A★ 33Claude Code +9 - 0.657score
diagnose
Vepricov
Diagnoses hard bugs and performance regressions by building a reproducible feedback loop and testing competing causal hypotheses.
SkillAFreshness: A★ 33Claude Code +9 - 0.657score
operon-obsidian-setup
Vepricov
Installs or repairs the laboratory's Operon task boards and project views in an Obsidian vault.
SkillAFreshness: A★ 33Claude Code +9
Signals
- Stars
- 33
- Forks
- 5
- Open issues
- 1
- Last commit (this folder)
- Oct 16, 2026 (13 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/Vepricov/claude-brainlab
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from Vepricov
- 0.657score
json-canvas
Vepricov
Creates and edits Obsidian Canvas (.canvas) files with nodes, edges, groups, and layout following JSON Canvas Spec 1.0.
SkillAFreshness: A★ 33Claude Code +9 - 0.657score
git-workflow
Vepricov
Prepares commits, branches and pull requests following the repository's existing Git conventions, including Conventional Commits messages and merge strategy.
SkillAFreshness: A★ 33Claude Code +9 - 0.657score
bug-detective
Vepricov
Investigates software failures, exceptions, and errors by tracing execution, reproducing the problem, and testing the suspected cause.
SkillAFreshness: A★ 33Claude Code +9 - 0.657score
diagnose
Vepricov
Diagnoses hard bugs and performance regressions by building a reproducible feedback loop and testing competing causal hypotheses.
SkillAFreshness: A★ 33Claude Code +9 - 0.657score
doc-coauthoring
Vepricov
Co-authors a technical document, proposal, or specification through context gathering, targeted drafting, and reader-testing review.
SkillAFreshness: A★ 33Claude Code +9 - 0.657score
kaggle-learner
Vepricov
Extracts reusable ML techniques, code patterns, and feature engineering ideas from Kaggle competition winning solutions and maps where they apply.
SkillAFreshness: A★ 33Claude Code +9
Cite this page
obsidian-experiment-log skill. Agent Mart. https://agentmart.dev/skills/vepricov-obsidian-experiment-log (last updated 2026-10-24)