learning-window

learning-window is a skill for Claude Code, Codex from sonichi/sutando. It costs 16 tokens per session (1,926 once invoked), scanned A, original, MIT.

A workflow component that records which messages or events have been collected and plans the unread time ranges for each joined room. It keeps this learning progress in private state and does not run a permanent service.

In plain words
What is it for?
Use it to track bounded collection windows, persist successful receipts, and resume learning from the correct position.
Why use it?
It prevents missed or duplicated history when collecting information from multiple rooms, especially when a room is newly added or a collection fails.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one. Also seen: runs codex exec; mentions Codex.

Good fit Use it to track bounded collection windows, persist successful receipts, and resume learning from the correct position.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/sonichi/sutando/learning-window
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add sonichi/sutando --skill learning-window
Clone the repo
git clone --depth 1 https://github.com/sonichi/sutando

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for learning-window

README.md
[![agentmods](https://agentmods.dev/badge/skills/sonichi/sutando/learning-window/github.svg)](https://agentmods.dev/skills/sonichi/sutando/learning-window)
Your own site
<a href="https://agentmods.dev/skills/sonichi/sutando/learning-window"><img src="https://agentmods.dev/badge/skills/sonichi/sutando/learning-window/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for learning-window

Your own site · 80×15
<a href="https://agentmods.dev/skills/sonichi/sutando/learning-window"><img src="https://agentmods.dev/badge/skills/sonichi/sutando/learning-window.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 16 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,926 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00016 $0.01926
Opus 5.5 $0.00006 $0.00770
Sonnet 5.5 $0.00003 $0.00385
Haiku 4.5 $0.00002 $0.00193

Measured 8d ago against content hash e1b8ab657bb5, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

learning-window scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 8d ago.

The scan reads SKILL.md. This mod also ships 13 executable files (scripts/check_return.py, scripts/cloud_person_read.py, scripts/collection_claims.py, …), listed below but not scanned — reading those needs a real analyzer, not pattern matching.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

skills/learning-window/SKILL.md · 157 lines

How it starts

The opening of the file, as written. The whole thing — 157 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Learning window state

This optional workflow component owns learning collection checkpoints, not a resident gateway event cursor, task inbox, or transport lifecycle. It starts no resident daemon. Network reads delegate adapter-supplied capabilities and the existing cloud auth/HTTP owner. Core services do not depend on it.

The dispatcher supplies current joined membership for every configured scope. scripts/window_state.py:plan_windows returns each scope's earliest unread timestamp, including the immutable bootstrap timestamp for a newly joined room or newly configured scope. Never initialize a new room from another room's or scope's current timestamp.

After a trusted bounded collector returns a scope-qualified receipt, the dispatcher calls record_collection with the dedicated private state directory. The writer locks and validates state, atomically persists the complete receipt, then records collection progress only for rooms with covered available history. Failures and exhausted page budgets leave unread rooms at their prior position. The receipt's overall success flag cannot override a failed room. The persisted receipt contains unlearned events and must survive until its consumer commits them to a durable facts store.

Collection is not learning. This writer never advances a learned-facts cursor or claims dossiers changed. A recency-only update does not consume facts. Consumer acknowledgment and receipt retention need their own tested contract before unattended operation; never prune unlearned receipts to make a size gate pass.

scripts/collection_pass.py:collect_pass accepts an explicit configured scope list and injected membership/collector capabilities. It validates exact membership and window binding, persists partial receipts, and admits a consumer only when every configured scope has covered available history. It does not invoke a consumer or acknowledge facts. The optional dispatcher delegates to this contract. Direct model-authored receipt files are not trusted collector evidence. Same-user filesystem access can bypass any optional writer; do not claim this is all-provider authorization or mandatory protection of a legacy cursor.

command_collection.py:collect_commands invokes adapter-injected argument vectors for each configured hostname scope with strict rooms and bounded history commands. Credential/environment resolution belongs to those adapters. Partial strict failures are persisted with unread coverage; command timeouts and scope mismatches prevent consumer admission. No network command was exercised by its offline tests; adapter deployment and scheduled live runs need separate evidence. Scope exceptions retain their type and a fixed error_stages label for membership read/validation, history read, window order/validation or receipt persistence. Labels contain no exception text, command output or credentials; a history-read label alone does not distinguish network failure from command-output validation.

launch.sh manifest directory log detaches dispatch_collection.py with explicit manifest config, a dedicated private collection state directory and a caller resolved log path. It delegates interpreter selection to the repository Python resolver. A launch receipt means dispatcher requested, not consumer completion. The locked dispatcher performs collection before invoking the configured consumer argument vector and supplies every retained digest-verified bundle. No fact acknowledgment or receipt deletion is implemented; consumer exit stays unverified. Scope keys must match the canonical collector gateway hostname, not a Matrix homeserver alias. Private dispatcher wiring belongs to the caller's adapter.

Consumers run in their own process group. Before final readback and lock release, the dispatcher kills remaining group members and reaps its direct child, including on timeout, normal exit, and SIGTERM/SIGINT cancellation. A child deliberately escaping the group is outside this guarantee; this is not a sandbox.

Read the full file on GitHub · 157 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 8d ago First seen · 157 lines · 16 tokens per session scan A e1b8ab657bb5

Subscribe to this mod's changes

learning-window is a skill published in the GitHub repository sonichi/sutando (396 stars, last pushed today), licensed MIT. It adds 16 tokens to every session and 1,926 once invoked, about $0.0001 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-10-08.

Related

Other skills, from other repositories