.md file to compare - side-by-side diff against weekly-sweep
weekly-sweep
What it does for you
Flags any helper that's overdue so nothing quietly stalls.
What it produces
A recent result, so you can see the kind of work it returns.
loading…
How to get it
These run inside the Snappy workspace. Want this working in your business? I set skills like this up with you, in one focused week.
For developers how this skill is built, graded, and how it runs
at a glance- the short version
what's inside - the parts that make up a skill 2/4 present
A skill is just a few plain-text files. Only the main one is required. The rest are optional, added as the work needs them. This is what the skill is made of; how it runs is just below.
state/skills/weekly-sweep/SKILL.md
present
state/lib/weekly-sweep.ts
not present
state/bin/weekly-sweep/
not present
state/skills/weekly-sweep/AGENTS.md
present
how it runs - the shared frame every skill uses 5/5 present
Every skill runs the same way. One part does the work, a separate part checks it, and a short loader hands the AI exactly what it needs for the job. Anything this skill doesn't use shows a one-line note saying why, on purpose, not by accident.
state/log/evals.ndjson what it has learned - fixes written back in over time sample
When a run hits something this skill didn't handle, the fix gets written back into the skill so it doesn't happen again. FIXED means it was corrected on the spot. LOGGED means it's queued for a bigger rewrite. Either way, the skill gets a little better and never makes the same mistake twice.
- Loading feedback rows…
how the work flows- who makes it, who checks it
SKILL.md- the skill, written out in plain English
weekly-sweep
Lists agents that have not run within their expected cadence window and renders the results as an OpenUI Lang Card for quick triage.
Steps
- Load agent registry from
state/agents/*.json- collectid,name,lastRun, andcadence_hfor each. - For each agent, compute
elapsed = now - lastRunin hours. Mark overdue ifelapsed > cadence_h. - Sort overdue agents by
elapseddescending (most overdue first). - Emit an OpenUI Lang Card:
- Title: "Overdue Agents"
- For each overdue agent:
ListItemwithname, elapsed time in human-readable form (e.g. "3 days 4 hours overdue"), how long it has been overdue (i.e.elapsed - cadence_hin hours/days), and aTagshowing status (overdue). - Secondary line per item:
"Overdue by: <elapsed - cadence_h formatted>"so the reader sees both total elapsed AND how far past cadence the agent is. - Footer: total overdue count out of total agent count.
- Write eval row to
state/log/evals.ndjsonwith shape=lang-card, score based on whether the Lang card rendered without error.
Eval
Actor: the Steps above, executed by an agent. Auditor: shape validator - verifies Lang card renders (no unknown-component errors), list has at least one item.
Score convention:
1.0- Lang card rendered, overdue list non-empty, eval row written.0.5- Card rendered but overdue list empty (no agents found or all on schedule).0.0- Render error or eval row missing.
AGENTS.md- what the AI loads when this skill comes up
weekly-sweep - loader
Per-turn rules for the weekly-sweep skill. Full reference: state/skills/weekly-sweep/SKILL.md.
Critical Rules
- Data source is
state/agents/*.json- each file is a JSON agent config with at minimumid,name, and optionallylastRun(ISO timestamp) andcadence_h(number). Missingcadence_hdefaults to 168 (one week). MissinglastRun= treat as never run = always overdue. - Emit a Lang Card, not plain text. The output MUST be a
[[TOOL:Lang]]...[[/TOOL]]block containing OpenUI primitives:Card,CardHeader,ListBlock,ListItem,Tag. No HTML, no markdown table. - Write an eval row. Before exiting, append a row to
state/log/evals.ndjson:
echo '{"ts":"<ISO>","slug":"weekly-sweep","score":<0|0.5|1.0>,"shape":"lang-card","note":"<brief>"}' >> state/log/evals.ndjson
- Sort by most overdue first.
elapsed=now - lastRunin hours. Sort descending. - Human-readable elapsed. Show days + hours, not raw hours (e.g. "3 days 4 hrs", not "76 hours").
Commands
| operation | command |
|---|---|
| list agent files | ls ~/projects/snappy-os/state/agents/ |
| read single agent | cat ~/projects/snappy-os/state/agents/<name>.json |
| write eval row | echo '{"ts":"...","slug":"weekly-sweep","score":1.0,"shape":"lang-card"}' >> ~/projects/snappy-os/state/log/evals.ndjson |
Lang Card Template
[[TOOL:Lang]]
root = Card(
CardHeader("Overdue Agents"),
ListBlock([
ListItem("Agent Name — 3 days 4 hrs", Tag("overdue", color="red")),
...
]),
Text("<N> of <total> agents overdue")
)
[[/TOOL]]
Self-Test
- [ ] Load agent registry from
state/agents/*.json? - [ ] Compute elapsed and mark overdue where
elapsed > cadence_h? - [ ] Sort descending by elapsed?
- [ ] Emit
[[TOOL:Lang]]block with Card + ListBlock + Tags? - [ ] Write eval row to
state/log/evals.ndjson?
<!-- kernel-ok: historical attribution for the PID-loader pattern. -->
Self-correcting loader (PID feedback)
Before you finish, do two things:
1. Fix gaps (P - proportional). MANDATORY. If this loader didn't cover your case, edit it inline before logging.
2. Log the result.
echo "[$(date -u +%FT%TZ)] weekly-sweep: <what was missing or fixed> [FIXED|LOGGED] action_kind=<kind>" >> state/log/loader-feedback.logapi.ts- the code it can call
⚠ no api.ts - this skill has no typed action surface
scripts- helper scripts it can run
prose-only skill - no sidecar under state/bin/ yet. Steps, if any, are described in SKILL.md.
how we check it- the checks, plus the last 1 runs
| timestamp | verb | score | primary_issue | artifact |
|---|---|---|---|---|
| 2026-05-02 16:37Z | - | 1.00 | - | - |