aeo-track
Skill13 starsChanged 6 months agoMITView on GitHub
Schedule recurring aeo-baseline runs without standing up Airflow, cron-monitor, or any external service. Generates a platform-appropriate scheduled job (launchd on macOS, cron on Linux), a wrapper shell script that loads the workspace's .env and runs aeo-baseline --yes, and tracks install state so the schedule can be inspected or removed cleanly. Default is dry-run — pass --apply to actually install. Multiple workspaces can be scheduled independently; state lives under ~/.aeo-track/<workspace-id>/. Use when a user wants to: set up daily/weekly visibility tracking, automate aeo-baseline so trends accumulate, see what's currently scheduled, or remove a previously-installed schedule.
- Reads credentials
In this repository22 other files it gives its agents.
- aeo-ai-overview-simulatorSkill
- aeo-analytics-freeSkill
- aeo-baselineSkill
- aeo-cannibalization-detectorSkill
- aeo-citation-gap-finderSkill
- aeo-competitor-monitorSkill
- aeo-content-freeSkill
- aeo-entity-extractorSkill
- aeo-freshness-decay-trackerSkill
- aeo-grounding-query-mapperSkill
- aeo-initSkill
- aeo-multi-prompt-strategySkill
- aeo-optimizeSkill
- aeo-pack-ai-toolsSkill
- aeo-pack-b2b-saasSkill
- aeo-pack-local-servicesSkill
- aeo-prompt-frequency-analyzerSkill
- aeo-prompt-question-finderSkill
- aeo-prompt-research-freeSkill
- aeo-reportSkill
- aeo-schemaSkill
- aeo-source-authority-profilerSkill
The file
We split this skill into the rules it gives an agent
3 rules. About 0 are common, 1 is distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 49
Run from inside the workspace directory (the one containing aeo.config.json), or pass --workdir PATH.
- Distinctive: line 106
After scheduled runs accumulate, check the log:
- Very specific: line 124
No retry logic at the schedule layer — if a scheduled run fails, the next one tries fresh.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
AEO Track
Source: github.com/psyduckler/aeo-skills Part of: AEO Skills Suite
The scheduling layer for AEO visibility tracking. One command per workspace, one schedule, no infrastructure.
Requirements
- Python 3.9+ (stdlib only)
- macOS (launchd) OR Linux (cron)
- An
aeo.config.jsonin the workspace directory (runaeo-initfirst) aeo-baselineinstalled somewhere this skill can find it
Usage
# Dry-run: see what would be installed
python3 scripts/track.py --install --schedule daily
# Actually install
python3 scripts/track.py --install --schedule daily --apply
# Custom schedule and time
python3 scripts/track.py --install --schedule weekly --hour 8 --apply
# Inspect current install
python3 scripts/track.py --status
# Remove
python3 scripts/track.py --remove --applyRun from inside the workspace directory (the one containing aeo.config.json), or pass --workdir PATH.
How it works
- Generates a wrapper script at
~/.aeo-track/<id>/run.shthat:cds into the workspace directory- Sources
.envfrom that directory if present (loadsGEMINI_API_KEY) - Runs
python3 /path/to/aeo-baseline/scripts/baseline.py --yes - Appends stdout/stderr to
aeo-data/aeo-track.log
- Installs a scheduled job that invokes the wrapper:
- macOS →
~/Library/LaunchAgents/ai.skills.aeo-track.<id>.plist+launchctl load - Linux →
crontab -lline with a unique marker for safe removal
- macOS →
- Records state at
~/.aeo-track/<id>/state.jsonso--statusand--removeknow what to do.
<id> is sha1(absolute_workdir)[:12] — same workspace → same ID. Different workspaces don't collide.
Options
| Option | Description |
--install | (Default) Set up the schedule |
--remove | Tear down the schedule |
--status | Show install info for the workspace |
--workdir PATH | Workspace directory (default: cwd) |
--baseline-script PATH | Absolute path to baseline.py (auto-detected if omitted) |
--schedule SPEC | daily (default) | weekly | hourly | 'every Nm' |
--hour N | Hour-of-day for daily/weekly (default: 9) |
--minute N | Minute (default: 0) |
--apply | Actually install/remove (default is print-only) |
Schedule syntax
--schedule value | macOS launchd | Linux cron |
daily | StartCalendarInterval{Hour, Minute} | <min> <hour> * * * |
weekly | StartCalendarInterval{Weekday=1, Hour, Minute} | <min> <hour> * * 1 (Monday) |
hourly | StartCalendarInterval{Minute} | <min> * * * * |
every 15m | StartInterval=900 | */15 * * * * |
Setting up the API key
The wrapper script sources .env from the workspace dir if present. Put your API key there:
# In the workspace dir
cat > .env <<'EOF'
GEMINI_API_KEY=your_key_here
EOF
echo .env >> .gitignoreBoth launchd and cron run with minimal shell environment by default, so the scheduled job won't see env vars from your interactive shell. The .env file is the bridge.
Inspect logs
After scheduled runs accumulate, check the log:
tail -f aeo-data/aeo-track.logEach run produces a fresh evidence file in aeo-data/run_<timestamp>.json — same format as a manual aeo-baseline invocation.
Idempotency
- Re-installing (with
--apply) on the same workspace replaces the previous schedule. On macOS this unloads + reloads the plist; on Linux it strips matching lines fromcrontab -lbefore appending the new one. --remove --applyis safe to run even if nothing is installed.- State is per-workspace, so installing in multiple project directories doesn't collide.
Limitations (v0)
- Windows is not supported for
--apply. The dry-run still prints the wrapper script so you can wire it into Task Scheduler manually. - The wrapper runs with the user's environment, so cron-style limits on subprocess resource usage apply.
- No retry logic at the schedule layer — if a scheduled run fails, the next one tries fresh.
aeo-baselineitself retries failed API calls internally. --statusconfirms launchd has the job loaded; for cron it only checks the recorded state file (runcrontab -l | grep aeo-trackfor the live view).
Pairs With
- aeo-init — creates the
aeo.config.jsonthat this skill schedules - aeo-baseline — the script that actually runs on each tick
- aeo-report (coming) — reads the accumulated baselines and generates trend reports
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

