Initial skills documentation — 25 categories, all SKILL.md + references + scripts

This commit is contained in:
root
2026-07-15 17:42:20 -04:00
commit 1b4fcd4427
976 changed files with 188344 additions and 0 deletions
@@ -0,0 +1,101 @@
---
name: recurring-information-scout
description: "Periodic cron-driven information scanning — search the web for new products, vehicles, competitors, or market entries, cross-reference against a known database, de-duplicate against prior scans, and produce a structured delta report. Designed for weekly/daily cron jobs that keep a reference database fresh."
version: 1.0.0
author: Sho'Nuff
tags: [research, cron, scanning, database-maintenance, periodic, monitoring]
---
# Recurring Information Scout
Umbrella for cron-driven periodic scanning tasks. Covers the workflow of searching the web for newly announced entities (products, vehicles, competitors, market entries), cross-referencing against a known database, checking what was reported in prior scans, and producing a clean delta report.
## Triggers
- Cron job that scans for new vehicles/products/competitors and reports delta
- Periodic market scan against a reference database
- "Check if anything new appeared since last week"
- Database maintenance cron that requires web research to keep fresh
## Workflow
### Phase 1: Load Prior Context
Always start by checking what was found in PREVIOUS scans of this same cron job. This avoids reporting the same vehicle/product twice across runs.
Use `session_search(query="<cron-job-name> or <topic>", limit=5, sort="newest")` to find recent prior runs. Extract the list of previously-reported items from those sessions to build a de-duplication blocklist.
**Key technique:** Don't just read the summary — extract the ACTUAL count of items found in each prior run and add them to your de-duplication check.
### Phase 2: Verify Current Database State
Read the live database file (JSON, CSV, whatever format) and build a full list of entities already present. This gives you the primary de-duplication set.
For JSON databases with a pattern like `{Make: {Model: {Year: HP, ...}}}`:
```python
import json
v = json.load(open('/path/to/database.json'))
# Check if a specific make/model exists
exists = make in v and model in v[make]
```
### Phase 3: Search Fresh Sources (Parallel)
Batch independent web searches for:
- General industry query: `"2025 2026 new [category] [attribute] announced"`
- Event-specific queries (e.g., current auto shows, trade events happening this week)
- Niche/startup queries for small-volume producers
- **Expanded model-year window:** Include BOTH `"2025"` and `"2026"` model years separately. A vehicle announced as a 2025 model in early 2025 won't appear in a "2026 new" search. Run queries for both current and previous model year to catch announcements that aged out of the news window.
- **Manufacturer press sites** (e.g., audi-mediacenter.com, lamborghini.com/news, ford.com/performance) — search directly for recent press releases from the OEM's media portal. These often contain confirmations months before automotive press picks them up.
Use `web_search` (up to 10 results) for each independent angle. Fire them in parallel with a single assistant turn.
**MCP Exa Search:** When the `mcp__exa__web_search_exa` tool is available (via an Exa MCP server), prefer it over `web_search` for this phase. Exa's semantic search catches niche and boutique manufacturers (Zenvo, McMurtry, Denza) that keyword-based search often misses — it indexes both major press and deep sources. Exa's date-sorted results also help identify which findings are genuinely new vs. old news being recirculated. When using Exa, set `numResults=10` and phrase queries as natural-language descriptions of the ideal page rather than keyword lists.
### Phase 4: Deep-Dive on Findings
For each candidate found in Phase 3:
1. Extract the specific page with `web_extract` to get confirmed specs
2. Verify against the Phase 2 database state — is it REALLY absent?
3. Check against the Phase 1 prior-report blocklist — was it already reported but not added?
4. Build a structured entry: Make, Model, Year, HP/Spec, Source URL
### Phase 5: Cross-Reference Prior Reports Against Database
De-duplication is NOT a single pass. A vehicle reported in a prior run may be:
- **Already added to the database** — silently skip (it was caught)
- **Still absent from the database** — re-report it with a note that it's been pending since the earlier date
Use python to iterate the prior reports' known item list against the live database state and flag any that are still missing.
### Phase 6: Compile and Deliver Report
Structure the output by:
1. **New discoveries today** — items found THIS run that were in neither prior reports nor the database
2. **Accumulated from prior reports still missing** — items flagged on earlier dates that remain absent from the database
3. **Database corrections** — items in the DB with wrong specs that need updating
4. **Patterns / recommendations** — trends noticed (e.g., boutique builders appearing, need for "custom" entry option on forms)
Use a consistent format:
```
| # | Make | Model | Year | HP | Notes | Source |
```
When the DB needs updating, include specific instructions at the bottom.
## Pitfalls
- **session_search de-duplication is approximate** — FTS5 can miss some prior sessions. Always cross-reference at the data level (check the actual database file), not just via search results.
- **Prior reports may have missed items that were already in the DB** — always verify each prior-run claim against the actual file before re-reporting it as "still missing."
- **Cron context means no user follow-up** — everything you need must be gathered in one pass. You cannot ask "should I add this" so use judgment: report findings clearly and let the user decide.
- **News is time-bound** — a Goodwood FoS debuts article published July 9 is only fresh for about a week. Don't report July debuts as new discoveries in August. Use `web_extract` timestamps or search sort by date.
- **Small/deep sources matter** — the big auto news sites cover Ferraris and Porsches. Goodwood FoS entry lists, niche hypercar blogs, and Chinese auto shows catch the Zenvo/Denza/McMurtry ones. Don't rely on a single source.
- **Deliver findings as the final response, not via send_message** — cron jobs deliver output as the response text. Put the primary content directly in your response.
- **When the user isn't present** (cron context), structure the report for mobile-friendly reading — no pipe tables, ASCII-only if the delivery channel is Telegram or phone.
## Linked Files
See `references/exotic-vehicle-scout-workflow.md` for the specific implementation of this skill for the Apex Track Experience vehicle database cron job, including the exact de-duplication and cross-referencing patterns used.
See `references/apex-track-experience-vehicle-db.md` for the vehicle database schema, file locations, and known corrections.
@@ -0,0 +1,75 @@
# Apex Track Experience Vehicle Database Reference
## File Locations
| Copy | Path | Purpose |
|------|------|---------|
| **Canonical** | `/root/docker/docuseal/data/vehicles.json` | The pretty-printed comprehensive version (~2,277 lines, 47 makes, 373 models) |
| **Dev/Mockup** | `/root/portal-mockup/vehicles.json` | Flat-format version used in portal mockups (~234 lines, simpler structure) |
| **Live served** | `https://core.itpropartner.com/vehicles.json` | Served via Caddy from `/var/www/static/vehicles.json` — the DocuSeal form fetches this URL |
## Schema
```json
{
"Make Name": {
"Model Name": {
"YYYY": HP,
"YYYY+1": HP
}
}
}
```
- Years are **strings**, not integers (`"2024"` not `2024`)
- Makes are capitalized English names: `"Mercedes-AMG"`, `"Gordon Murray Automotive"`
- Each model entry lists year-HP pairs; a model existing at one HP doesn't mean it exists at that HP for all years
## Coverage Rules
- **Years:** 2015+ for production cars
- **Threshold:** 400+ HP (though this scout focuses on 500+ HP for the Apex Track Experience)
- **All makes globally** — including Chinese, Korean, boutique
- **All body styles** — coupe, sedan, SUV, pickup, convertible, wagon
## Currently Missing (As of Jul 11, 2026)
### Entire Makes Not in DB (needs new key added):
- Denza (BYD sub-brand, Denza Z at 1,582 hp)
- Gordon Murray Automotive (T.33 at 615 hp, T.33 Spider at 607 hp)
- Zenvo (Aurora at 1,850 hp)
- AC Cars (Cobra GT Coupe at 720 hp)
- McMurtry (Speirling Pure at 1,000 hp)
- Apollo (Evo at 789 hp)
- Ruf (B8 prototype at 1,000+ hp, pre-production)
- Sanrivatti (hypercar, 1,000+ hp, startup/development stage)
- Toyota (GR GT at 641 hp)
- Renault (5 Turbo 3E at 555 hp)
### Models Missing Under Existing Makes:
- Ferrari: 12Cilindri (819hp), 12Cilindri Manuale (819hp), 296 Speciale (869hp), 296 Speciale Aperta (869hp), Amalfi (631hp), 849 Testarossa (1,036hp)
- Aston Martin: DB12 S (690hp), DBX S (717hp), Vantage S, Valiant (735hp), Vanquish Volante (824hp)
- Pagani: Huayra 70 Derecho (852hp), Utopia Roadster (864hp)
- Bentley: Supersports (657hp), Torcal EV SUV (~1,139hp)
- Maserati: MC20 GT2 Stradale (631hp), MCPura (621hp)
- Mercedes-AMG: PureSpeed (577hp), CLA 45 4Matic+ Electric (680hp), GT 63 S E Performance Coupe 2-door (805hp), GT 4-Door Coupe EV (1,153hp, 2027)
- BMW: M5 G90 2025+ (717hp — separate from older 617hp M5), M5 Touring G99 (717hp), iX5, i3 50 xDrive
- Porsche: N/A (comprehensive)
- GMC: Hummer EV 3X Pickup 2026 (1,160hp — DB has earlier years at 830-1000hp, needs 2026 entry added)
- Ford: Mustang GTD (815hp)
- Dodge: Charger Daytona Scat Pack EV (670hp), Charger Daytona R/T EV (536hp)
- Ram: 1500 TRX SRT 777hp (2027), 1500 SRT Rumble Bee Hellcat (2027)
- Cadillac: Lyriq-V (615hp, 2026), Optiq-V (519hp, 2026)
- Chevrolet: Blazer EV SS (615hp, 2025), Corvette ZR1X (2027, 1,250hp)
- Genesis: G80 Magma (525hp)
- Audi: Nuvolari (1,001hp)
- Polestar: 6 (884hp)
- Jaguar: Type 01 GT (986+ hp)
- Hyundai: N Vision 74 (~800hp)
- Alfa Romeo: 33 Stradale (620hp gas / 750hp EV)
- Bugatti: Tourbillon (1,775hp)
- Rimac: Nevera R (2,107hp)
- Hennessey: Venom F5-M Evolution (2,031hp — base Venom F5 is in DB at 1,817hp)
### Spec Corrections Needed:
- Aston Martin Valhalla: DB says 998hp → should be 1,064hp
@@ -0,0 +1,80 @@
# Exotic Vehicle Scout — Implementation Notes
Specific implementation details for the Apex Track Experience vehicle database cron job.
## Database
**Location:** `/root/portal-mockup/vehicles.json` (dev/mockup copy) and `/var/www/static/vehicles.json` (live, served via core.itpropartner.com/vehicles.json)
**Schema:** `{Make: {Model: {Year: HP, ...}, ...}}`
- Makes are top-level keys (capitalized: "Ferrari", "Mercedes-AMG")
- Models are sub-keys (capitalized: "296 Speciale", "Mustang GTD")
- Years are string keys (not integers): `{"2025": 819, "2026": 819}`
- Years span from 2015 onward (the database covers 2015+ per initial requirement)
**Duplicates exist:** There are TWO copies — `/root/portal-mockup/vehicles.json` (flat format with single-line years, ~234 lines, simpler) and `/root/docker/docuseal/data/vehicles.json` (pretty-printed, ~2,277 lines, comprehensive). The DocuSeal copy is the canonical one.
## De-duplication Check Pattern
In Python:
```python
import json
v = json.load(open('/root/portal-mockup/vehicles.json'))
def is_in_db(make, model):
"""Check if a make+model combination exists in the vehicle database."""
if make in v:
models = v[make]
if model in models:
return True
# Also check partial matches (e.g., 'Mustang GTD' vs 'Mustang GT')
matches = [m for m in models.keys() if model.lower() in m.lower()]
if matches:
return True
return False
```
For partial matches, be precise: "Corvette ZR1X" vs "Corvette ZR1" — these are DIFFERENT models. Use python to list ALL models under a make and manually review ambiguous cases.
## Prior-Report Cross-Reference
Use `session_search(query="exotic-vehicle-scout", limit=5, sort="newest")` to find prior cron runs. Each run delivers a full report with a table of findings. Extract those findings and check each one against the live DB:
```python
# For each prior report's claimed new-find list:
for item in prior_findings:
still_missing = not is_in_db(item['make'], item['model'])
# If still missing, include in the "accumulated" section
```
## Key Sources for Vehicle Research
- **Exa Search (MCP via `web_search_exa`)** — best single source for niche/boutique brands (Zenvo, Denza, McMurtry). Semantic search catches what keyword search misses. Returns publication dates for recency filtering. Set `numResults=10`. Use natural-language page descriptions, not keyword lists.
- **Goodwood Festival of Speed entry lists** (July, annual) — catches boutique/hypercar debuts
- **motor1.com** — good factory-style coverage of all industry events
- **CarThrottle** — catches niche/meme-worthy debuts (Ruf B8, Apollo Evo)
- **roadandtrack.com / thedrive.com** — performance-focused journalism
- **Manufacturer press sites** — for official HP figures (ferrari.com, pagani.com, audi-mediacenter.com, lamborghini.com/news, ford.com/performance)
- **carscoops / carnewschina** — Chinese-market vehicles (BYD/Denza, Xiaomi, Nio)
- **caranddriver.com/future-cars** — aggregated future vehicle guide
## Known Model Name Variations
When checking the DB, you need to account for inconsistencies in model naming:
- "Corvette Stingray" != "Stingray" — always use full manufacturer model names
- "M5" in DB currently ends at 2024/617hp — the 2025+ G90 generation (717hp) needs separate entries
- "GT 63 S 4-Door" is in the DB but "GT 63 S E Performance Coupe" (2-door, 805hp) is NOT
- "Ioniq 5 N" vs "IONIQ 5 N" — capitalization differs but python dict check is case-sensitive; check `.lower()` on both sides
## Apex Track Experience Event
- Date: September 19, 2026
- Invites: Any vehicle 500+ HP regardless of body style or drivetrain
- Registration form: DocuSeal-based, fetches make/model from vehicles.json dropdown
- Known gaps: "custom/homebuilt" option needed for prototype/low-volume builds
## Database Corrections (Known)
- Aston Martin Valhalla: DB says 998 hp, actual is 1,064 hp (1,079 PS)
- BMW M5 (G90): 2025+ entries at 717 hp are missing (DB ends at 2024/617hp)
- Polestar 6 (884 hp, 2026): missing — DB only has Polestar 1
@@ -0,0 +1,48 @@
# Session: Jul 11, 2026 — Exotic Vehicle Scout Run
This was a model run of the `recurring-information-scout` workflow. Key patterns:
## Batching Strategy
9 web searches in 3 parallel batches (3 searches each) to maximize coverage:
- General "new exotic car announcements July 2026"
- "New hypercar/supercar 2026 revealed"
- "New performance SUV 2026-2027"
- Event-specific: Goodwood FoS 2026 (the main event happening that week)
- Chinese market: Denza BYD etc.
- Korean market: Genesis Magma
- Startup/boutique: McMurtry, Apollo, Sanrivatti
## Deep-Dive Pattern
After initial search, extracted Goodwood FoS debuts from Motor1 and CarThrottle (both covered the same event with different niche angles). Cross-referenced:
1. Motor1: Encyclopedic event entry list with all manufacturers and model names
2. CarThrottle: Journalistic writeup with HP figures and quirky details (Ruf B8 flat-eight, Apollo Evo Ferrari V12)
3. Manufacturer press sites (Hennessey, Pagani) for exact figures
## Prior-Session Cross-Reference
Used `session_search(query="exotic-vehicle-scout", limit=5, sort="newest")` which returned 3 prior runs (Jul 8, 9, 10). Also found a deeper prior session from Jul 5/7 about the initial vehicles.json build. Extracted all claimed missing vehicles from these reports.
Then ran a Python script to check every claimed missing vehicle against `/root/portal-mockup/vehicles.json`:
- 41 vehicles from prior reports still missing
- 16 that were already in the DB (either added between runs or mis-classified)
- 3 spec corrections needed (Valhalla 998->1064, M5 missing 2025+ generation, Polestar 6 missing entirely)
## De-duplication Bug
The prior report from Jul 10 listed 6 vehicles as "new" that were actually already flagged on Jul 9. Without cross-referencing the prior reports against each other, these get double-counted. The Phase 5 step (cross-referencing prior reports) catches this.
## Goodwood FoS 2026 Timing
The festival runs July 9-12, 2026. The Jul 11 run caught debuts that were JUST announced on Jul 9-10:
- Hennessey Venom F5-M Evolution (Goodwood debut)
- McMurtry Speirling Pure production version (Goodwood debut)
- Pagani Huayra 70 Derecho (world premiere at Goodwood)
- Apollo Evo production version (Goodwood debut)
- McLaren 788HS (Goodwood debut)
- Zenvo Aurora Tur production prototype (Goodwood debut)
- Ruf B8 prototype (Goodwood debut)
This was the most productive single run because the event concentrated many debuts in one week.