home / skills / talmolab / sleap / sleap-support

sleap-support skill

/.claude/skills/sleap-support

This skill streamlines sleap support by scaffolding investigations, extracting posts, and drafting friendly, actionable responses for talmolab/sleap issues.

npx playbooks add skill talmolab/sleap --skill sleap-support

Review the files below or copy the command above to add this skill to your agents.

Files (4)
SKILL.md
8.0 KB
---
name: sleap-support
description: >
  Handle SLEAP GitHub support workflow for issues and discussions. Use when
  the user says "support", provides a GitHub issue/discussion number like "#2512",
  or asks to investigate a user report from talmolab/sleap. Scaffolds investigation
  folders, downloads posts with images, analyzes problems, and drafts friendly responses.
---

# SLEAP Support Workflow

Handle GitHub issues and discussions from `talmolab/sleap` with a systematic investigation process.

## Quick Start

When given an issue/discussion number:

```bash
# Check both issues AND discussions (users often post in wrong category)
gh issue view 2512 --repo talmolab/sleap --json number,title,body,author,createdAt,comments 2>/dev/null || \
gh api repos/talmolab/sleap/discussions/2512 2>/dev/null
```

## Workflow Steps

### 1. Create Investigation Folder

First, check if an investigation already exists:

```bash
ls -d scratch/*-*2512* 2>/dev/null || echo "No existing investigation"
```

If none exists, create one:

```bash
mkdir -p scratch/$(date +%Y-%m-%d)-{issue|discussion}-2512-{short-description}
```

### 2. Fetch Post Content

**For Issues:**
```bash
gh issue view NUMBER --repo talmolab/sleap --json number,title,body,author,createdAt,comments,labels > scratch/.../issue.json
```

**For Discussions:**
```bash
gh api repos/talmolab/sleap/discussions/NUMBER > scratch/.../discussion.json
```

### 3. Download Images

Extract image URLs from the post body and download:

```bash
# Parse markdown image links: ![alt](url)
grep -oP '!\[.*?\]\(\K[^)]+' scratch/.../issue.json | while read url; do
  wget -P scratch/.../images/ "$url"
done
```

### 4. Create USER_POST.md

Convert the JSON to readable markdown with inline images:

```markdown
# Issue/Discussion #NUMBER: Title

**Author**: @username
**Created**: YYYY-MM-DD
**Platform**: (extract from post if mentioned)
**SLEAP Version**: (extract from post if mentioned)

## Original Post

[post body with images referenced inline]

## Comments

[any replies]
```

### 5. Write Investigation README

Create `scratch/.../README.md`:

```markdown
# Investigation: Issue/Discussion #NUMBER

**Date**: YYYY-MM-DD
**Post**: https://github.com/talmolab/sleap/{issues|discussions}/NUMBER
**Author**: @username
**Type**: Bug Report | Usage Question | Feature Request

## Summary

[1-2 sentence summary of the issue]

## Key Information

- **Platform**: Windows/macOS/Linux
- **SLEAP Version**: X.Y.Z
- **GPU**: (if relevant)
- **Dataset**: (if described)

## Preliminary Analysis

[Initial thoughts on what might be happening]

## Areas to Investigate

- [ ] Check area 1
- [ ] Check area 2

## Files

- `USER_POST.md` - Original post content
- `images/` - Downloaded screenshots
- `RESPONSE_DRAFT.md` - Draft response (when ready)
```

### 6. Check Release History First

**Before deep investigation, check if the issue was already fixed:**

```bash
# Get user's SLEAP version from their post (look for sleap doctor output or sleap.__version__)
USER_VERSION="1.4.0"  # example

# Check sleap releases for fixes
gh release list --repo talmolab/sleap --limit 20
gh release view v1.5.0 --repo talmolab/sleap --json body -q '.body' | grep -i "fix"

# For sleap-io issues
gh release list --repo talmolab/sleap-io --limit 10
gh release view v0.6.0 --repo talmolab/sleap-io --json body -q '.body'

# For sleap-nn/training issues
gh release list --repo talmolab/sleap-nn --limit 10
gh release view v0.2.0 --repo talmolab/sleap-nn --json body -q '.body'
```

**If a fix exists in a newer version:**
- Response should guide user to upgrade
- Include the specific version with the fix
- Mention what was fixed (link to PR/issue if available)

**If investigating an unfixed bug:**
- Checkout the user's version to see their actual code:

```bash
# Clone repos if not present
[ -d scratch/repos/sleap-io ] || gh repo clone talmolab/sleap-io scratch/repos/sleap-io
[ -d scratch/repos/sleap-nn ] || gh repo clone talmolab/sleap-nn scratch/repos/sleap-nn

# Checkout user's version
cd scratch/repos/sleap-io && git fetch --tags && git checkout v0.5.0
cd scratch/repos/sleap-nn && git fetch --tags && git checkout v0.1.5

# Now you're looking at the code they're actually running
```

**Use `git blame` to find potential culprits:**

```bash
# Find when a suspicious function was last changed
git blame -L 50,100 sleap/io/main.py

# Check if a line was changed recently
git log --oneline -5 -- path/to/file.py

# Find the commit that introduced a specific change
git log -S "function_name" --oneline
```

### 7. Analyze and Reproduce

Determine the issue type:

**Usage Question**: Check if documentation covers this. Common topics:
- Model configuration (skeleton, training params)
- Multi-animal vs single-animal tracking
- Inference and tracking settings
- Data format questions

**Bug Report**: Try to reproduce. Check:
- Version-specific issues
- Platform-specific behavior
- GPU/CUDA compatibility
- Data corruption signs

**Feature Request**: Note for tracking, no immediate action needed.

### 8. Determine Data Needs

**When to request SLP file:**
- Inference/tracking issues that can't be diagnosed from logs
- "Labels not showing" or display issues
- Merging or import problems
- Corruption or data loss reports

**Suggest upload to `https://slp.sh`** - our SLP file sharing service.

**If SLP provided:** Download and analyze:
```bash
sio show path/to/file.slp --summary
sio show path/to/file.slp --videos
sio show path/to/file.slp --skeleton
```

### 9. Draft Response

Create `RESPONSE_DRAFT.md` following this structure:

```markdown
Hi @{username},

Thanks for the post!

[Restate understanding: "If I understand correctly, you're seeing X when you try to Y..."]

[Provide solution OR request more info]

[If requesting info, give EXPLICIT instructions:]
- Use `sleap doctor` CLI for diagnostics
- Provide copy-paste terminal commands
- Assume non-technical user

Let us know if that works for you!

Cheers,

:heart: Talmo & Claude :robot:

<details>
<summary><b>Extended technical analysis</b></summary>

[Detailed investigation notes, code traces, version checks]

</details>
```

## Response Tone Guidelines

- **Opening**: Bright and positive ("Thanks for the post!", "Great question!")
- **Body**: Clear, concise, non-technical language
- **Instructions**: Step-by-step, assume terminal newbie
- **Closing**: Encouraging ("Let us know if that works for you!")
- **Signature**: `:heart: Talmo & Claude :robot:`

## When Requesting User Actions

**Terminal commands must be copy-paste ready:**

```bash
# Good - one-liner, no environment activation needed
sleap doctor

# Good - uses uvx for isolated execution
uvx sio show your_file.slp --summary

# Bad - assumes environment knowledge
source activate sleap && python -c "import sleap; print(sleap.__version__)"
```

## Related Repositories

**For data/I/O issues** - Check `talmolab/sleap-io`:
- Local: `../sleap-io` (preferred)
- Clone if needed: `gh repo clone talmolab/sleap-io scratch/repos/sleap-io`
- Key docs: `sleap-io/docs/examples.md`, `sleap-io/docs/formats/SLP.md`
- CLI: `sio show --help` for inspection commands

**For training/inference issues** - Check `talmolab/sleap-nn`:
- Local: `../sleap-nn` (preferred)
- Clone if needed: `gh repo clone talmolab/sleap-nn scratch/repos/sleap-nn`
- Topics: Model configs, training params, evaluation metrics, tracking

## Common Patterns

### Instance Duplication
- Check track assignment logic
- Look for ID switching during tracking
- May need `sleap-track` with different settings

### Training Issues
- GPU memory: suggest reducing batch size
- Loss not decreasing: check learning rate, augmentation
- NaN losses: data normalization issues

### Import/Export Issues
- Format compatibility (H5 vs SLP versions)
- Missing video paths
- Skeleton definition mismatches

### GUI Issues
- Qt/PySide6 version conflicts
- Display scaling on high-DPI
- Video codec issues

## Confirmation Before Posting

**ALWAYS** confirm with the developer before posting:
1. Show the full draft response
2. Ask: "Does this look good to post?"
3. Wait for explicit approval

**Never post automatically** - support responses represent the project.

Overview

This skill handles SLEAP GitHub support workflow for issues and discussions related to talmolab/sleap. It scaffolds investigation folders, downloads post content and images, analyzes reports, and drafts friendly, copy-paste-ready responses. Use it when a user says “support”, provides an issue/discussion number like “#2512”, or asks to investigate a user report.

How this skill works

Given an issue or discussion number, the skill checks both issues and discussions, creates a dated investigation folder if none exists, and saves the post JSON. It extracts and downloads images, converts the post into a USER_POST.md, and creates an investigation README with a concise summary, key info, and next steps. The skill checks recent releases for fixes, can checkout specific tagged versions to reproduce, runs targeted analysis steps (reproduce, data checks, platform/GPU checks), and generates a polite RESPONSE_DRAFT.md with explicit troubleshooting commands.

When to use it

  • User asks for support or uses the word “support”.
  • A GitHub issue or discussion number is provided (e.g., “#2512”).
  • You need a reproducible investigation folder and clear artifacts (post JSON, images).
  • You want a step-by-step draft reply that non-technical users can follow.
  • You need to check whether a reported problem was fixed in a later release.

Best practices

  • Always check both issues and discussions since users post in either.
  • Create a dated investigation folder and include USER_POST.md and images for traceability.
  • Look for the user’s SLEAP version early; check recent releases before deep work.
  • When asking users for info, provide copy-paste terminal commands and assume minimal terminal experience.
  • Draft responses with a short summary, explicit next steps, and an extended technical section hidden behind details.
  • Always obtain explicit approval from a developer before posting the response.

Example use cases

  • User posts GUI display issue with screenshots and asks why labels aren’t showing.
  • A bug report mentions a crash during inference; reproduce on the reported version and check GPU/CUDA compatibility.
  • User reports tracking ID switches; analyze tracking settings and suggest sleap-track options.
  • Someone uploads an SLP file with corrupted labels; request SLP via slp.sh and run sio show diagnostics.
  • Feature request discussion where you summarize and mark for tracking with no immediate action.

FAQ

What do I do if a fix exists in a newer release?

Tell the user to upgrade and cite the specific version containing the fix. Include simple upgrade steps and link to the release or PR if available.

When should I ask for an SLP file?

Request an SLP when logs and screenshots aren’t enough: display problems, label visibility, merging/import issues, or suspected corruption. Provide slp.sh as the upload option and give exact commands to inspect the file.