Index of every page on this site: llms.txt
All skills
tristanmanchester avatar

/tracking-pettracer-location

@3323bc9
Run it yourself

Retrieve and interpret an authorised owner's PetTracer collar inventory, latest known GPS fix, or bounded location history. Use for explicit PetTracer work, not generic pet questions or tracking a person. Distinguish measurement time, contact time, missing data, and stale fixes.

Use this Skill: https://skilld.dev/gh/tristanmanchester/agent-skills/tracking-pettracer-location

Nothing lands on disk. Nothing to clean up.

Fork this Skill

Edit a local copy. It keeps the author and licence.

SKILL.md

≈77 tokens for metadata: the name and description. ≈1.3k when used: this file. ≈917 more on demand in 1 file.

Description uses 3.9% of example budget

Before choosing a Skill, your Agent reads its name and description. All available Skills share that space.

  • A shorter description leaves more room for other Skills. This entry exceeds our 1% size suggestion.

In our Claude Code example, all Skill names and descriptions share 8,000 characters. This Skill uses ≈309 characters, or 3.9%.

The 1% threshold is a size suggestion. Longer descriptions can still fit.

Your model, settings, and other Skills decide how much text your Agent can read.

Example settings and source

The example uses a 200k-token context and default Claude Code settings. The count includes the name, description, separators, and when_to_use when present. Codex also counts local file paths.

Skit's source and limits: Codex 0.160.1, Claude Code 2.1.292.

PetTracer location evidence

Keep this skill: it solves a specific owner's lookup task. No current official public developer API or replacement CLI was established during this review. The portal helper is therefore explicitly unofficial, not a vendor-supported client or a guarantee of live tracking. Prefer the official app/portal when its behaviour or the account contract differs.

Establish the target and permission

Use only an account/collar the user owns or is authorised to inspect. Confirm the actual device ID against the account inventory and official app before interpreting coordinates as the pet's location. A HomeStation's configured position is not a collar GPS fix. An absent device-type field remains unverified; do not infer type from an arbitrary name or the first item in a response.

Resolve SKILL_DIR to this installed skill directory. Set PETTRACER_TOKEN privately, or PETTRACER_USERNAME and PETTRACER_PASSWORD for an authorised login. Never ask for credentials in chat or pass them in command arguments. The helper does not store or print tokens and does not accept arbitrary API origins or credential redirects.

python "$SKILL_DIR/scripts/pettracer.py" list
python "$SKILL_DIR/scripts/pettracer.py" locate --device-id 12345 --max-age-seconds 900

Replace the sample ID with the verified collar ID. The 900-second default is a local reporting threshold, not a manufacturer guarantee or the right threshold for every tracking mode. recent means the supplied measurement timestamp passes that chosen threshold; it does not mean the pet has stayed at those coordinates.

Read timestamps literally

Use only timeMeasure to compute fix age. Keep timeDb and lastContact separate; new database activity/contact cannot make an old position fresh. Reject timezone- less dates rather than silently calling them UTC. Unknown times and future times are explicit states, never fresh by default. Display the actual fix time/timezone and age alongside retrieval time.

The helper validates finite latitude/longitude ranges and preserves zero values. It does not estimate a battery percentage or convert raw signal/accuracy fields without a verified calibration/units contract. acc and horiPrec remain separate raw quality fields with unverified units; do not call either a metre-radius merely because a community integration did. home is a device flag, not proof the pet is inside a precise geofence.

History

Use an explicit timezone-aware window, at most seven days per helper request:

python "$SKILL_DIR/scripts/pettracer.py" history --device-id 12345 \
  --from-time 2026-09-13T06:00:00+02:00 --to-time 2026-09-13T12:00:00+02:00

These are example times, not the current requested interval. The helper preserves provider order and states completeness is unverified. Check returned timestamps against the requested interval; unknown/out-of-window points remain labelled. Sort or deduplicate deliberately for a route, preserving originals and gaps. Straight lines between sparse GPS fixes are not the actual path travelled.

Live updates and modes

For immediate owner search/live mode use the official app/portal. A subscription to updates does not itself command the collar to obtain a new fix. Changing modes can affect battery and device behaviour; do not change settings as a side effect of a location read. The old unbounded watcher is removed; retained protocol notes in portal and streaming describe the evidence needed for an explicitly scoped new integration, not a tested live client.

Do not promise continuous watching or future notification unless an authorised running service/scheduler has actually been established. A failed stream or no GPS fix is not evidence that the pet is safe, stationary, indoors, or at home.

Return an honest location result

State the selected collar, latest valid measured coordinates, measurement time, age/freshness state, and relevant missing/quality data. Report last contact separately. A map link can disclose precise location to a third party; include it only as appropriate to the user's request and keep raw history private. Do not overstate accuracy, reverse-geocode a precise address without need, or infer human routines.

Exit zero means the read was processed, not that a recent GPS fix exists. Inspect last_fix.freshness and device_type_verified. Missing/invalid fixes, schema errors, auth failures, and empty history are different outcomes. Per-request socket timeout and a 2 MiB response bound are not a total wall-clock SLA. There are no automatic retries or re-login loops; verify an unexpected endpoint/schema before retrying.

Maintainers: python -m unittest discover -s "$SKILL_DIR/tests" -v tests parsing, selection, request boundaries, and mocked transport. No live account or collar was queried in this review. Vendor operational help: https://help.pettracer.com/.

History results retain each original record and label its measurement time as inside, outside, or unknown relative to the requested inclusive window. This is separate from fix age. A non-object lastPos is a schema error, not evidence of no GPS fix.

Source: SKILL.md on GitHub

skilld matched fixed text patterns in SKILL.md and file names. Patterns miss obfuscated code.

skilld run checks every file with the same patterns. It asks for approval before it loads a Skill with a behavior marked Needs approval.

1 alert1mo5 checks · Risk SAFE
  • Gen Agent Trust Hub1mo

    This skill enables tracking of PetTracer GPS collars by interfacing with their web portal API. It provides tools for fetching current location, location history, and live updates via WebSocket. The skill handles authentication securely through environment variables and focuses on providing structured location data for the agent to process. The low verdict reflects the inherent surface for indirect prompt injection from the external API.

  • Socket1mo

    No alerts

  • Snyk1mo

    Risk: LOW · No issues

  • Runlayer7mo

    4/8 files flagged

  • ZeroLeaks6mo

    Score: 93/100 · 2 sections analyzed

Signed by skilld at 3323bc9. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 2 weeks ago.

Steadyupdated last month
metadata
{
  "version": "1.0.0",
  "reviewed": "2026-09-13"
}
Other metadata
compatibility
Optional Python 3.10+ standard-library helper uses the unofficial PetTracer portal protocol. It requires authorised credentials for live reads; vendor API stability and current field semantics are not guaranteed.

README badge

README badge for tristanmanchester/agent-skills/tracking-pettracer-location