Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
92 commits
Select commit Hold shift + click to select a range
8aa234c
Add agentfeeds skill: LICENSE
verkyyi May 3, 2026
b549be8
Add agentfeeds skill: pyproject.toml
verkyyi May 3, 2026
fb89b7b
Add agentfeeds skill: SKILL.md
verkyyi May 3, 2026
1fbd472
Add agentfeeds skill: references/publishing.md
verkyyi May 3, 2026
c6078b4
Add agentfeeds skill: references/runtime-setup.md
verkyyi May 3, 2026
73223ae
Add agentfeeds skill: references/macos-personal-sources.md
verkyyi May 3, 2026
adc7b16
Add agentfeeds skill: references/template-authoring.md
verkyyi May 3, 2026
da54733
Add agentfeeds skill: references/background-refresh.md
verkyyi May 3, 2026
1720ff6
Add agentfeeds skill: catalog/INDEX.json
verkyyi May 3, 2026
224b301
Add agentfeeds skill: catalog/streams/tasks/linear-mine.yaml
verkyyi May 3, 2026
53ab5d3
Add agentfeeds skill: catalog/streams/tasks/todoist-today.yaml
verkyyi May 3, 2026
0870a8b
Add agentfeeds skill: catalog/streams/calendar/ics.yaml
verkyyi May 3, 2026
3a6e5ca
Add agentfeeds skill: catalog/streams/local/markdown-vault.yaml
verkyyi May 3, 2026
2cca715
Add agentfeeds skill: catalog/streams/local/directory-recent.yaml
verkyyi May 3, 2026
8549172
Add agentfeeds skill: catalog/streams/local/file.yaml
verkyyi May 3, 2026
4804113
Add agentfeeds skill: catalog/streams/local/git-status.yaml
verkyyi May 3, 2026
2dd3164
Add agentfeeds skill: catalog/streams/mac/mail-unread.yaml
verkyyi May 3, 2026
5f588b2
Add agentfeeds skill: catalog/streams/mac/calendar-today.yaml
verkyyi May 3, 2026
0ded0ad
Add agentfeeds skill: catalog/streams/mac/calendar-upcoming.yaml
verkyyi May 3, 2026
7bb22e7
Add agentfeeds skill: catalog/streams/mac/notes-recent.yaml
verkyyi May 3, 2026
08d10ec
Add agentfeeds skill: catalog/streams/mac/finder-recent-downloads.yaml
verkyyi May 3, 2026
b0ea5cb
Add agentfeeds skill: catalog/streams/mac/imessage-unread.yaml
verkyyi May 3, 2026
4791650
Add agentfeeds skill: catalog/streams/mac/reminders-pending.yaml
verkyyi May 3, 2026
96c8938
Add agentfeeds skill: catalog/streams/mac/safari-reading-list.yaml
verkyyi May 3, 2026
b3bacfc
Add agentfeeds skill: catalog/streams/notes/notion-recent.yaml
verkyyi May 3, 2026
a489e1a
Add agentfeeds skill: catalog/streams/news/rss-generic.yaml
verkyyi May 3, 2026
9961d00
Add agentfeeds skill: catalog/streams/dev/github-notifications.yaml
verkyyi May 3, 2026
662f8db
Add agentfeeds skill: catalog/streams/dev/github-issues.yaml
verkyyi May 3, 2026
53e2611
Add agentfeeds skill: catalog/streams/dev/github-prs.yaml
verkyyi May 3, 2026
70520dd
Add agentfeeds skill: catalog/streams/dev/github-releases.yaml
verkyyi May 3, 2026
748d4c5
Add agentfeeds skill: catalog/streams/dev/github-prs-mine.yaml
verkyyi May 3, 2026
c1dd214
Add agentfeeds skill: catalog/streams/finance/exchangerate.yaml
verkyyi May 3, 2026
20a1c7a
Add agentfeeds skill: catalog/streams/weather/openmeteo-current.yaml
verkyyi May 3, 2026
9f3856b
Add agentfeeds skill: catalog/streams/weather/openmeteo-forecast.yaml
verkyyi May 3, 2026
ed5a369
Add agentfeeds skill: catalog/schemas/envelope.v0.3.json
verkyyi May 3, 2026
eca6b73
Add agentfeeds skill: catalog/schemas/stream-definition.v0.3.json
verkyyi May 3, 2026
e10d3d9
Add agentfeeds skill: catalog/schemas/event-types/mac.reading-list-it…
verkyyi May 3, 2026
aef299e
Add agentfeeds skill: catalog/schemas/event-types/github.release.v1.json
verkyyi May 3, 2026
6e3d6ae
Add agentfeeds skill: catalog/schemas/event-types/github.notification…
verkyyi May 3, 2026
1232ea5
Add agentfeeds skill: catalog/schemas/event-types/github.pull-request…
verkyyi May 3, 2026
bf55a42
Add agentfeeds skill: catalog/schemas/event-types/todoist.task.v1.json
verkyyi May 3, 2026
b494e22
Add agentfeeds skill: catalog/schemas/event-types/linear.issue.v1.json
verkyyi May 3, 2026
9c7e54e
Add agentfeeds skill: catalog/schemas/event-types/mac.note.v1.json
verkyyi May 3, 2026
e6179d3
Add agentfeeds skill: catalog/schemas/event-types/rss-item.v1.json
verkyyi May 3, 2026
ce09623
Add agentfeeds skill: catalog/schemas/event-types/mac.imessage-thread…
verkyyi May 3, 2026
8df2453
Add agentfeeds skill: catalog/schemas/event-types/geo.earthquake.v1.json
verkyyi May 3, 2026
b1a390a
Add agentfeeds skill: catalog/schemas/event-types/local.markdown-docu…
verkyyi May 3, 2026
6866c22
Add agentfeeds skill: catalog/schemas/event-types/notion.page.v1.json
verkyyi May 3, 2026
db3f52c
Add agentfeeds skill: catalog/schemas/event-types/space.iss-location.…
verkyyi May 3, 2026
c6d0fb7
Add agentfeeds skill: catalog/schemas/event-types/ical-event.v1.json
verkyyi May 3, 2026
fec853f
Add agentfeeds skill: catalog/schemas/event-types/local.directory-ent…
verkyyi May 3, 2026
525e81d
Add agentfeeds skill: catalog/schemas/event-types/hn.story.v1.json
verkyyi May 3, 2026
788a00e
Add agentfeeds skill: catalog/schemas/event-types/local.command.v1.json
verkyyi May 3, 2026
6da3662
Add agentfeeds skill: catalog/schemas/event-types/finance.exchange-ra…
verkyyi May 3, 2026
4bbf871
Add agentfeeds skill: catalog/schemas/event-types/local.file.v1.json
verkyyi May 3, 2026
e17eed5
Add agentfeeds skill: catalog/schemas/event-types/local.git-status.v1…
verkyyi May 3, 2026
9a1798e
Add agentfeeds skill: catalog/schemas/event-types/mac.mail-message.v1…
verkyyi May 3, 2026
3a31593
Add agentfeeds skill: catalog/schemas/event-types/github.issue.v1.json
verkyyi May 3, 2026
8c1efbc
Add agentfeeds skill: catalog/schemas/event-types/weather.forecast.v1…
verkyyi May 3, 2026
34f36c5
Add agentfeeds skill: catalog/schemas/event-types/mac.reminder.v1.json
verkyyi May 3, 2026
4b37e65
Add agentfeeds skill: catalog/schemas/event-types/weather.observation…
verkyyi May 3, 2026
dcc297d
Add agentfeeds skill: agents/openai.yaml
verkyyi May 3, 2026
7ead084
Add agentfeeds skill: scripts/agentfeeds_fetch.py
verkyyi May 3, 2026
f784b41
Add agentfeeds skill: scripts/agentfeeds.py
verkyyi May 3, 2026
81a2c9a
Add agentfeeds skill: scripts/setup.py
verkyyi May 3, 2026
e0d400f
Add agentfeeds skill: scripts/evals/run_evals.py
verkyyi May 3, 2026
8e027a8
Add agentfeeds skill: scripts/macos/reminders_open.py
verkyyi May 3, 2026
e0cd096
Add agentfeeds skill: scripts/macos/calendar_today.py
verkyyi May 3, 2026
a60fbdd
Add agentfeeds skill: scripts/macos/mail_inbox_recent.py
verkyyi May 3, 2026
e4e551a
Add agentfeeds skill: scripts/polling/uninstall.py
verkyyi May 3, 2026
8c4eb1d
Add agentfeeds skill: scripts/polling/install.py
verkyyi May 3, 2026
6adf588
Add agentfeeds skill: scripts/lib/agentfeeds_runtime/constants.py
verkyyi May 3, 2026
a3ff6f4
Add agentfeeds skill: scripts/lib/agentfeeds_runtime/__init__.py
verkyyi May 3, 2026
d8f54d0
Add agentfeeds skill: scripts/lib/agentfeeds_runtime/commands.py
verkyyi May 3, 2026
913e464
Add agentfeeds skill: scripts/lib/agentfeeds_runtime/__main__.py
verkyyi May 3, 2026
c5d0714
Add agentfeeds skill: scripts/lib/agentfeeds_runtime/fetcher.py
verkyyi May 3, 2026
50a72e9
Add agentfeeds skill: scripts/lib/agentfeeds_runtime/polling/__init__.py
verkyyi May 3, 2026
b5ad37d
Add agentfeeds skill: scripts/lib/agentfeeds_runtime/polling/uninstal…
verkyyi May 3, 2026
3a56ed0
Add agentfeeds skill: scripts/lib/agentfeeds_runtime/polling/install.py
verkyyi May 3, 2026
5dd3ef9
Add agentfeeds skill: scripts/lib/agentfeeds_runtime/adapters/local_c…
verkyyi May 3, 2026
5ca4d4b
Add agentfeeds skill: scripts/lib/agentfeeds_runtime/adapters/rss.py
verkyyi May 3, 2026
15d8fe8
Add agentfeeds skill: scripts/lib/agentfeeds_runtime/adapters/ical.py
verkyyi May 3, 2026
ed93c89
Add agentfeeds skill: scripts/lib/agentfeeds_runtime/adapters/__init_…
verkyyi May 3, 2026
4c53724
Add agentfeeds skill: scripts/lib/agentfeeds_runtime/adapters/common.py
verkyyi May 3, 2026
1805a35
Add agentfeeds skill: scripts/lib/agentfeeds_runtime/adapters/http.py
verkyyi May 3, 2026
0c31f23
Add agentfeeds skill: scripts/lib/agentfeeds_runtime/adapters/local_s…
verkyyi May 3, 2026
a90757d
Add agentfeeds skill: scripts/lib/agentfeeds_runtime/adapters/mac_nat…
verkyyi May 3, 2026
b0e13ca
Add agentfeeds skill: scripts/lib/agentfeeds_runtime/adapters/local_f…
verkyyi May 3, 2026
046a18b
Add agentfeeds skill: assets/agentfeeds-demo.gif
verkyyi May 3, 2026
184fb84
Clean agentfeeds skill bundle
verkyyi May 3, 2026
a324c4b
Remove duplicate agentfeeds macOS scripts
verkyyi May 4, 2026
0b788a8
Reduce agentfeeds publish bundle
verkyyi May 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions skills/agentfeeds/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2026 Agent Feeds contributors

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
136 changes: 136 additions & 0 deletions skills/agentfeeds/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
---
name: agentfeeds
description: Use Agent Feeds for ambient awareness from continuously refreshed local streams under ~/.agentfeeds. Use at session start to install/check background refresh and insert a compact stream brief, and before web search or expensive source-specific queries when a prompt may be covered by changing local context such as RSS/news, GitHub, calendars, weather, local files, personal sources, templates, subscriptions, or subscribed stream state.
version: 0.1.1
author: verkyyi
license: MIT
metadata:
hermes:
tags: [Productivity, AI Agents, Personal Context, Local First]
---

# Agent Feeds

Agent Feeds is a local-first ambient context layer for agents. A background fetcher keeps changing stream state warm on disk so agents can answer from local, inspectable context before re-searching, querying, processing, or asking the user to repeat information.

Use this skill at session start, when managing feeds/subscriptions/templates, and before web search or expensive source-specific work if subscribed local state may already cover the prompt.

Requires shell access, Python 3.11+, and either `pip` or `uv` for setup. Background polling is supported on macOS, Linux, FreeBSD, and WSL-style POSIX environments. The bundle includes a frozen template catalog for first use; network access is needed for setup, remote catalog updates, and public feed refreshes.

## Command Map

Use the bundled scripts from the skill root:

```bash
python3 scripts/setup.py
python3 scripts/agentfeeds.py brief
python3 scripts/agentfeeds.py search <topic> --json
python3 scripts/agentfeeds.py streams health --json
python3 scripts/agentfeeds.py streams read <subscription-id> --limit 20 --json
python3 scripts/agentfeeds.py streams find <query> --json
python3 scripts/agentfeeds.py templates find <query>
python3 scripts/agentfeeds.py subscribe <template-id> [key=value ...] --dry-run --json
python3 scripts/agentfeeds.py subscribe <template-id> [key=value ...]
python3 scripts/agentfeeds.py refresh --stream <subscription-id>
```

`python3 scripts/agentfeeds.py` is the agent-facing CLI. `python3 scripts/agentfeeds_fetch.py` is an internal refresh worker used by polling and wrappers; prefer `agentfeeds.py refresh` in agent instructions. Runtime state defaults to `~/.agentfeeds/`; treat the file layout as an implementation detail except when debugging or editing a scaffolded local template.

Vocabulary:

- Template: reusable feed definition. Some templates are ready to subscribe with no parameters; others require parameters.
- Subscription: configured active instance of a template.
- Stream: refreshed readable data for an active subscription.

References to load only when needed:

- Runtime setup details: `references/runtime-setup.md`
- Template authoring details: `references/template-authoring.md`
- Background refresh details: `references/background-refresh.md`
- macOS personal source setup: `references/macos-personal-sources.md`

Built-in templates come from the standalone catalog repo `https://github.com/verkyyi/agentfeeds-catalog` and are cached locally; user-local templates live under `~/.agentfeeds/templates/`.
The release bundle includes a frozen built-in catalog fallback so first-run discovery does not depend on GitHub being reachable.

## Session Start

At the start of each session:

1. If the bundled CLI fails because dependencies are missing, run `python3 scripts/setup.py`.
2. Check background refresh with `python3 scripts/agentfeeds.py admin polling status --json`; if missing, run `python3 scripts/agentfeeds.py admin polling install`.
3. Check stream health with `python3 scripts/agentfeeds.py streams health --json`.
4. Generate stable compact context with `python3 scripts/agentfeeds.py brief`.
5. If the host supports prompt slots, place the exact brief output in a system-level or persistent context slot so stable stream metadata can benefit from model-side prompt caching.

The default brief avoids volatile timestamps. Use `python3 scripts/agentfeeds.py brief --include-freshness` only for freshness/debugging questions.

If health reports errors, missing state, or stale state, continue with available local context but tell the user ambient awareness is degraded when it affects the answer.

## Answering Flow

When a user prompt may be covered by subscribed changing context:

1. Search local state first: `python3 scripts/agentfeeds.py search <topic> --json`.
2. If matches are non-stale and answer the prompt, read the matching stream with `python3 scripts/agentfeeds.py streams read <subscription-id> --limit 20 --json` and answer from local state.
3. Refresh on demand only when the user asks about current/time-bounded data, the stream is older than 2x its poll interval, or the user explicitly asks to refresh. Use `python3 scripts/agentfeeds.py refresh --stream <subscription-id>`, then search/read again.
4. If health shows a fetch error or missing state, explain the degraded source and ask for reconfiguration only when needed.
5. Use web search or source-specific external tools only when local streams do not cover the prompt, are stale and cannot refresh, or the user explicitly asks for outside/current web information beyond subscribed data.

Use `streams find` only for stream metadata discovery. Use top-level `search` for content snippets.

## Subscribe And Manage

When the user asks to subscribe to a source:

1. Search built-ins first with `python3 scripts/agentfeeds.py templates find <query>`.
2. Inspect likely matches with `python3 scripts/agentfeeds.py templates show <template-id> --json`.
3. Prefer a built-in template when it fits the source shape and auth model.
4. Collect only required parameters, preview with `python3 scripts/agentfeeds.py subscribe <template-id> [key=value ...] --dry-run --json`, then subscribe with `python3 scripts/agentfeeds.py subscribe <template-id> [key=value ...]`.
5. Confirm with `python3 scripts/agentfeeds.py streams health --json` and, if useful, one stream read.

Default to answering first. Subscribe only when the user explicitly asks to subscribe, asks about a recurring topic, or a follow-up would clearly benefit from warm local state. If the user names a category rather than a source, list candidate templates and ask which source they mean.

For unsubscribe:

```bash
python3 scripts/agentfeeds.py streams list
python3 scripts/agentfeeds.py unsubscribe <subscription-id>
```

If the user names a template instead of a concrete subscription, list matching active streams and ask which one to remove.

## Template Strategy

Balance built-in templates and local authoring this way:

- Use built-in templates for common source classes, stable public APIs, shared schemas, and anything many operators would reuse.
- Use parameterized built-ins for source families: RSS/Atom URLs, GitHub repos, iCalendar URLs, weather coordinates, public JSON APIs.
- Use local templates for private files, private dashboards, one-off APIs, local tools, experimental sources, and operator-specific commands.
- Do not author a local template until built-ins have been checked and no suitable template fits.
- If a local template proves broadly useful, suggest upstreaming it to the catalog rather than keeping many near-duplicate local templates.
- Prefer local/private read-only sources before suggesting public feeds when the user wants personal context.

When no built-in template fits:

```bash
python3 scripts/agentfeeds.py admin templates adapters
python3 scripts/agentfeeds.py admin templates scaffold <adapter-kind> <template-id>
python3 scripts/agentfeeds.py admin templates validate
python3 scripts/agentfeeds.py admin templates test <template-id> key=value
```

Read `references/template-authoring.md` before editing scaffolded template YAML.

For `local_command` templates, use argv arrays only. Only create command templates for explicitly requested or approved read-only commands. Avoid commands that mutate files, cloud resources, accounts, or external services. New `local_command` templates are pending and cannot run until approved by the operator.

After scaffolding or installing a `local_command` template, tell the user to run `python3 scripts/agentfeeds.py admin templates approve-command <template-id> [key=value ...]` themselves in an interactive terminal. Do not approve on the user's behalf, even if asked. Explain that approval is tied to the exact template and command digest, and edits revoke it.

For macOS personal context, prefer the built-in `mac/*` templates from the bundled catalog. They do not require local-command approval, but macOS may ask the user to grant Calendar, Reminders, Automation, or Full Disk Access permissions on first refresh.

## Safety Rules

- Use `subscribe` and `unsubscribe` for subscription changes.
- Use `agentfeeds.py refresh` for refreshes.
- Do not hand-write state or status files.
- Do not include secret values in template YAML. Use `{{secret:name}}` references and tell the user to set values with `python3 scripts/agentfeeds.py admin secrets set <name>`.
- Treat Agent Feeds as warm changing context, not durable memory, semantic search, or a data warehouse.
7 changes: 7 additions & 0 deletions skills/agentfeeds/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
interface:
display_name: "Agent Feeds"
short_description: "Use warm local feeds for ambient personal context"
default_prompt: "Use $agentfeeds to check background refresh, insert my stream brief, and help subscribe local or Mac personal sources."

policy:
allow_implicit_invocation: true
Binary file added skills/agentfeeds/assets/agentfeeds-demo.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading