Write the tool layer
.sightkick/ sits beside .sightmap/ and every *.yaml inside it merges into one manifest. A tool is params, steps and a returns shape. ensure_view scopes it to one view in the corpus.
version: 1
name: flights
tools:
- name: search_flights
description: Search flights for a route and date.
ensure_view: FlightSearch
params:
- { name: origin, type: string, required: true }
- { name: destination, type: string, required: true }
steps:
- fill: { query: OriginInput, value: "{{origin}}" }
- fill: { query: DestinationInput, value: "{{destination}}" }
- click: { query: SearchButton }
- wait_for: { query: 'FareCard#0' }
returns:
list:
rows: FareCard
fields: { fare: price, stops: stops }
Every name here — FareCard, price, stops — is a component or property declared in .sightmap/. A name the corpus does not have is a compile error with the candidates printed.