Guide

How to write a skill spec for egocentric data collection

Name the task, geometry, condition budget, reject rule and one acceptance test.
By the Firsthand capture teamLast updated September 23, 2026

Short answer

A skill spec is the written contract for a capture program. It names the exact task, the geometry that must stay in frame, an explicit hour budget per condition, the reject rule, and one acceptance test a reviewer can apply. Sharp specs produce coverage; vague specs only produce hours.

What goes in a skill spec?

A skill spec turns "collect egocentric data" into something you can measure cell by cell. It has five parts: the named skill, the geometry that must be visible, the condition budget in hours, the reject rule, and a single acceptance test. Everything else is commentary.

kitchen_knife_dice.yaml
skill_id: kitchen/knife_dice
one_line: Dice an onion into ~8 mm cubes with a chef's knife.

must_contain:
  - both hands visible at grasp and at first cut
  - the board and the onion in frame for the whole episode
  - the completed pile in frame at episode end

conditions:
  daylight:      120 h
  low_light:      40 h        # evening kitchen, single overhead
  cluttered:      60 h        # counter left as found
  failure_cases:  20 h        # slips, roll-aways, recoveries

reject_if:
  - the cut is off-frame for more than 2 s
  - a second person's hands enter the manipulation region
  - depth invalid over 35 % of the board region

accept_metric: >
  A held-out reviewer can name the verb and noun from the
  first 15 frames without reading the label.

The five rules that make a spec trainable

Name the verb and the noun
Not "cooking". Dice, pour, decant, torque, fold, scan.
State the geometry
What must be in frame, at which moment, and for how long.
Budget conditions explicitly
Hours per condition cell, including failure cases.
Write the reject rule first
If you cannot write it, the skill is not specified yet.
Give one acceptance test
Something a reviewer can apply in fifteen frames.

The reject rule is the part teams skip and the part that matters most. It is what lets a reviewer accept or reject a batch without a meeting.

Why budget by condition instead of total hours?

A policy fails on the conditions it never saw, not on the ones it saw a lot of. Budgeting by condition cell — daylight, low light, cluttered, failure cases — means the coverage report tells you where the data is thin before training does. A single hour count hides exactly the gap that will hurt you.

Firsthand designs the first draft of the spec with you on a call, hands it back as a file for your repository, and reports fill rates against it per batch. Both sides look at the same document when a batch is accepted.

Check it against the sample pack.

40 episodes across 4 environments, delivered in the exact schema these guides describe.