Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use whenever the user asks about a motor-vehicle statute, citation, contributing factor, OR a Canadian personal-injury fact pattern — always query Specter's Harvester API before answering. The API auto-routes between two collections (US statutes + Canadian PI case law).
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-06 | ✗→✓ | ▲ Improved | 65% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 29% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 15% | 0% |
| case-11 | ✗→✓ | ▲ Improved | -39% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 41% | 0% |
Specter's Harvester is a FastAPI service that fronts two Chroma collections:
| Collection | Contents | When the API uses it | |---|---|---| | specter_statutes | 384 US motor-vehicle statutes (CA, TX, FL, PA, IL, OH) | default — any US-jurisdiction or generic query | | canada_pi_cases | 340 real Canadian PI cases (CanLII, with damages, injury type, plaintiff_won, deciding_factor) | auto-routed when the query mentions Canada / Ontario / Quebec / Toronto / ONSC / ONCA / canlii / etc., or when ?jurisdiction=Canada or ?state=CA-CAN is passed |
Every citation the user sees should come from the Harvester (or, on miss, from a verified web source). Never fabricate.
search first; ask follow-ups only after showing what hit.lookup_citationsearchaskfactor filter (see categories below).For Canadian fact-pattern queries especially, call search first with whatever the user said, even if it's vague. Show the top hits, THEN ask any follow-ups. The Canada corpus is fact-pattern-indexed — thin queries still return relevant cases. Demanding more facts before searching wastes the corpus.
The helper module sits next to this SKILL.md:
pythonimport sys from pathlib import Path sys.path.insert(0, str(Path(__file__).parent)) # if running ad hoc from client import lookup_citation, search, ask, healthz, list_factors
In OpenClaw, prefer running it via exec:
bashcd ~/Specter && python3 -m openclaw.skills.harvester_query.client lookup "Cal. Veh. Code § 23152(a)" cd ~/Specter && python3 -m openclaw.skills.harvester_query.client search "drunk driving" --state CA --factor "DUI/DWI" cd ~/Specter && python3 -m openclaw.skills.harvester_query.client ask "what statutes cover hit and run in CA"
Or from Python:
pythonfrom openclaw.skills.harvester_query.client import lookup_citation, search, ask
lookup_citation(citation: str) -> dict | NoneExact match by citation string. Returns the full record or None if not in the Harvester.
search(q: str, *, state=None, factor=None, pi_only=False, k=10) -> list[dict]Semantic search. state is a 2-letter code ("CA", "TX"). factor must be one of the 17 canonical categories.
ask(question: str, *, state=None, factor=None, k=8) -> list[dict]Same as search but framed as a question. Use this when the user hands you a natural-language query.
healthz() -> dictCheap liveness check. Use to confirm the API is running before reporting a miss.
list_factors() -> list[str]The 17 categories. Useful for synonym mapping in voice.
Specter's voice rules (see SOUL.md): 2–3 lines max by default. Cite, don't quote.
Good: > Cal. Veh. Code § 22350. Basic speed law — drive no faster than reasonable for conditions. > leginfo.legislature.ca.gov
Bad: > Of course! Pursuant to California Vehicle Code Section 22350, "no person shall drive a vehicle…" (wall of text)
Always include the source_url from the record. Never include a citation without one — per hackathon ground rules, records without a real source URL don't count.
If lookup_citation returns None or search/ask returns []:
healthz() — if the API is down, say so plainly.Never paper over a miss with a guess.
DUI/DWI
Driving Too Fast For Conditions
Failure to Maintain Lane
Failure to Obey Traffic Control Device
Failure to Use/Activate Horn
Failure to Yield at a Yield Sign
Failure to Yield the Right-of-Way
Fleeing a Police Officer
Fleeing the Scene of a Collision
Following Too Closely
Improper Lane of Travel
Improper Passing
Improper Starting
Improper Stopping
Improper Turning
Reckless Driving
Using a Wireless Telephone/Texting While DrivingIf the user uses a synonym, map internally and answer in their words.
Other measured skills in the registry, with their headline benchmark lift.