Skill v1.0.0
currentLLM-judged scan90/100version: "1.0.0" name: building-schedules description: Use when the user wants a multi-target, mosaic, or unattended imaging night on the Seestar - composes a schedule with the schedule tools and starts the scheduler.
Building schedules
- Inspect.
get_scheduleto see what already exists. Do not clobber a schedule the user wants to keep; ask first. - Create.
create_schedulestarts a new empty schedule. - Add items.
- Generic item:
add_schedule_item(action, params)for actions such as wait/park/start-imaging steps. Physical actions (scope_park,scope_move_to_horizon,reboot,shutdown) are refused unlessconfirm=true; pass it only after the user explicitly confirms that item. - Mosaic:
schedule_mosaic(target_name, ra, dec, session_time_sec, ra_num, dec_num, panel_overlap_percent=20, gain=80, is_use_lp_filter, is_use_autofocus, is_j2000).ra_num x dec_numis the panel grid;session_time_secis the total across the grid (the tool converts it to per-panelpanel_time_sec). - Timing:
add_schedule_item("wait_until", {"local_time": "HH:MM"})holds until a clock time;add_schedule_item("wait_for", {"timer_sec": N})waits a duration. Use await_untilas the first item so an early start waits for darkness. start_mosaicruns a single mosaic directly without a stored schedule.- Field gotcha: if you ever build a
start_mosaicitem by hand viaadd_schedule_item, put the per-panel time in `panel_time_sec`, notsession_time_sec— the device tolerates the legacysession_time_sec, but the web schedule page only readspanel_time_secand will error without it. Preferschedule_mosaic, which handles this for you.
- Review. Call
get_scheduleagain and summarise the order and total time for the user. - Run.
start_schedulerlaunches an unattended run and requiresconfirm=true; pass it only after the user confirms the reviewed plan. Stop withstop_scheduler. - Persist.
export_schedule(filepath)saves a schedule to a file;import_schedule(filepath)loads one. Offer export after building a good plan.
Planning a whole night
When the user wants "tonight"/"tomorrow night" across many targets: work out the dark window (astronomical dusk→dawn) and the moon (phase, and when it rises/sets) for the device's location — get_device_state reports location_lon_lat. Schedule moon-tolerant targets (open/globular clusters, bright galaxy cores, and emission nebulae with is_use_lp_filter=true) while the moon is up, and save faint broadband/reflection targets for after moonset. Order targets near their culmination, and anchor the start (and the moonset handover) with wait_until items.
For a large timed plan, building item-by-item is many calls and risks out-of-order appends; it is cleaner to assemble the full schedule JSON (a {"list": [ {action, params, schedule_item_id}, … ]} dict — mosaic items use panel_time_sec) and load it in one import_schedule(filepath) call, then get_schedule to review.
End long unattended schedules with a park step, and confirm with the user before any physical action (see safety).