ShellRS
ShellRS is a free, open-source SSH client written in Rust: host management, terminals, WinSCP-style SFTP and port forwarding in one GPU-rendered window, for macOS, Windows and Linux.
The labelers — labeling web tools for the Cornerman labeling team (HTML/JS + Apps Script)
Developer toolsJavaScript · HTMLGitHub @cornerman-aiOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗The labelers — the web tools the labeling team uses to produce Cornerman's training labels. One folder per labeler; every tool saves straight to the Box Labeled Data Sheet via the shared Apps Script backend (no login).
Start here: https://cornerman-ai.github.io/labeler/ — the landing page lists every labeler. First-time Sheet/Apps-Script setup: SETUP.md.
| Folder | What it labels | Why it exists |
|---|---|---|
punch/ | Punches in a round: start/end time + type per hand | The main tool. Its labels are the training corpus for the punch classifier |
unusable/ | Stretches of a video where the BlazePose skeleton can't be used (with a reason), a reviewed mark per video, and the whole-video retirement into Skeleton Problems | The unusable-footage pass, made AFTER extraction (the skeleton doesn't exist while rounds and punches are labeled); feeds the roll detector's exclusion mask and the skeleton-usability model |
impact/ | The exact impact frame of each labeled punch | Trained the impact-frame spotter |
punch_directions/ | 16-way (22.5°) direction of straight punches | Trained the axiality (punch-direction) model that three rules gate on |
bodyshot/ | Head vs body, one short clip per punch | Refines punch-type labels where head/body was ambiguous |
callout/ | Called-out combos in guided rounds vs what was actually thrown | Measures how well users follow the app's callouts |
rules/ | Form-rule spot checks on rounds | Ground truth for rules-engine tuning |
chin_tuck_1.0/ | Three chin-vs-shoulder questions per sampled frame | Current chin labeling. Repeated samples measure each labeler's self-agreement ceiling |
chin_tuck_0.0/ | One verdict (tucked/level/air) per sampled frame | The original chin labeler, frozen for reference. Has no data of its own — reads 1.0's chin_frames.json/frames/ by relative path |
uppercut_drop/ | How far the punching hand drops before each uppercut: Great / Good / Bad / Very bad / Can't tell, one looping clip per labeled uppercut, ~10 % blind repeats | The coach's ratings set the cut-offs of the "keep your hand up before the uppercut" score |
roll_eyes/ | Do the eyes stay up through each roll: Good / Mid / Bad / Can't tell (with a reason) + a comment, one looping clip per labeled roll, ~10 % blind repeats; the name admin shows the model's head angle and every rater's answers | The coach's ratings set the cut-off of the "keep your eyes up when you roll" rule |
roll_legs/ | Does the boxer use the legs to get under the punch in each roll — Uses the legs / Doesn't / Can't tell (with a reason) + a comment, on the roll eyes clips; the scale is one PASS block in roll_legs.js, an example per rating, ~10 % blind repeats; admin shows the skeleton's knee bend and lean | The coach's ratings set the cut-off on the knee bend |
roll_shoulders/ | Do the shoulders rotate through the roll — Good / Bad / Can't tell (with a reason) + a comment, on the roll eyes clips, frontal rolls only; the scale is one PASS block in roll_shoulders.js, an example per rating, ~10 % blind repeats; admin shows the skeleton's shoulder turn | The coach's ratings set the cut-off on the shoulder turn |
bag_bite/ | Does each punch on the heavy bag snap or push — two buttons, Snapping / Pushing, + a comment, one looping clip per punch cropped to the boxer, the skeleton on it and beside it with the facing angle; 200 punches, each once; admin shows every rater's answers | The coach's ratings say what rule 41 (punches stuck in the bag) should measure |
guard_drop/ | Hands-down moments in a round | Ground truth for the guard-drop rule |
hip_rotation/ | Rotation-quality rubric per punch | Ground truth behind the hip-rotation rule |
bladedness/ | Pairwise "which stance is more squared?" (shoulder pairs + hip pairs), plus the coach review where the coach scores curated frontal frames | The too-squared/too-bladed research — pair judgements calibrate the candidate metrics; the coach review is the expert reference |
axiality/ | Review of ground truth vs model direction predictions | QA pass on the axiality model |
Every labeler shows the same slim top bar — "👤 Your name:" until filled,
then "👤 Name · change" (shared/labeler_name.js). Pages that had their own
name field (chin tuck, bladedness pairs) get it hidden and auto-synced; the
bar is the one UI everywhere. The name is sent as the
labeler field on every save — the Apps Script routes rows/tabs by it, unchanged.
No more per-person URLs; an old ?labeler= link still works as a one-time seed.
Pages with their own name inputs (chin tuck, bladedness pairs, orientation) stay
in sync with the same stored name automatically.
shared/player.js — the video player + Sheet-posting core every video labeler usesshared/ui.js — the chrome every video page shares (transport icons, volume, speed menu, timeline scroll-zoom and ⌘ keys, picture zoom, folds, click-to-type time, status chips, name field, shortcuts sheet); punch/ui.js keeps only the punch page's own (strip dragging, round spans, context menu)shared/labeler_name.js — the ask-once labeler identity (see above)shared/style.css — common stylingshared/videos.json — which videos the video-based labelers list (regenerate with shared/build_videos_json.py)apps_script/Code.js — the Google Apps Script backend (deployed as a Web App; auto-deploys from master via GitHub Actions — see apps_script/README.md); labels land in the Sheet at Drive Cornerman/data/labels/labeling_team/shared/.cornerman-backend/ml/research/<topic>/) and committed here so
GitHub Pages hosts it.Retired labelers live in cornerman-archive/legacy-labelers/ (orientation, 2026-08-07 — its 8-bin labels shipped as the ankle-orientation constants).