plugins/devkit/skills/chronicle/SKILL.md
Views the user's screen and several hours of screen-recording history via the Chronicle (Codex screen recording) feature: reads the latest per-display frame, greps OCR sidecars (*.ocr.jsonl) for recent on-screen text, inspects historical 1-minute frames across multiple displays, and consults Chronicle memories. Use when the user makes a reference to their recent work, for which it'd be helpful to see the screen. This skill MUST be used whenever you need to resolve ambiguity in a user request, where the user hasn't specified enough context to do the task. Examples include disambiguating the specific user/app/document/error the user is referring to. You must also use this skill if the user asks about any question regarding Chronicle or asks what you can see from the screen. Chronicle is passive observation only; for actively driving or automating a browser, use web:automating-browser instead.
npx skillsauth add sumik5/sumik-claude-plugin chronicleInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill allows you to view the user's screen. This skill is enabled because the user has enabled the Codex screen recording (Chronicle) feature, which records a rolling buffer of the past several hours of work to $TMPDIR/chronicle/screen_recording.
$TMPDIR/codex_chronicle/chronicle-started.pid is valid (i.e., exists and process is running). If the pidfile is invalid, do not use this skill. This applies EVEN IF there are seemingly-fresh videos in the screen_recording folder; the user may have just recently disabled Chronicle. Regardless, the takeaway is that recordings cannot be fresh when Chronicle isn't running; therefore, you shouldn't treat the videos as fresh. (Note: when communicating Chronicle status to the user, don't mention the pidfile. That's an implementation detail.)Ensure you follow preconditions before using the skill.
Chronicle has two primary outputs: screen recordings and memories.
# Raw screen recordings (ephemeral; not persisted)
$TMPDIR/chronicle/screen_recording/
├── <segment_timestamp>-display-<display_id>-latest.jpg - latest frame for this segment (started at <segment_timestamp>) + display, overwritten on every captured frame
├── <segment_timestamp>-display-<display_id>.capture - ephemeral capture segment marker
├── <segment_timestamp>-display-<display_id>.capture.json - metadata for this segment; contains segment timestamp and display ID but no app information
├── <segment_timestamp>-display-<display_id>.ocr.jsonl - append-only OCR history for the segment (created using Apple Vision OCR), one JSON object per material text change
└── 1min/
└── <segment_timestamp>-display-<display_id>/
└── frame-<frame_index>-<minute_bucket>Z.jpg - historical privacy-filtered frames from segment start to end
# Memories (persisted indefinitely; referenced in Codex Memories; see original implementation at https://github.com/openai/codex for more info)
~/.codex/memories/extensions/chronicle/
├── instructions.md - instructions for how to use the Chronicle memories
└── resources/
├── <utc_timestamp>-<4_alpha_chars>-10min-<slug_description>.md - markdown summary of the last 10 minutes of screen recordings, updated every minute
└── <utc_timestamp>-<4_alpha_chars>-6h-<slug_description>.md - markdown summary of the last 6 hours of screen recordings, updated every hour
The most common workflow is to read the latest frame of the screen recording for a given display, which represents the user's most recent work.
rg over *.ocr.jsonl to find relevant terms or timestamps, then inspect the matching sparse frames in screen_recording/1min/ for visual confirmation.date command to get the current UTC timestamp and compare it against the recording files you're inspecting to understand if the recordings are fresh or stale (e.g. from a previous recording session).tools
FastAPI (Python) web API development guide covering fundamentals (routing, path/query params, Pydantic models, request/response, error handling), data persistence (SQLAlchemy, SQLModel, async DB, MongoDB, CRUD, Alembic migrations), dependency injection (Depends, dependency_overrides, scopes/lifespan), auth & security (OAuth2, JWT, CORS), async & concurrency (async/await, Starlette, BackgroundTasks, WebSocket, SSE/streaming), testing (TestClient, pytest, httpx, mocking), production deployment & scaling (uvicorn/gunicorn, Docker, optimization), generative-AI services (model serving, streaming, concurrency), and microservice/GraphQL/OpenAPI patterns. MUST load when fastapi is in pyproject.toml/requirements.txt or .py files import fastapi. For Python language/tooling fundamentals (uv/ruff/mypy, packaging, non-FastAPI patterns), use lang:developing-python. For REST/HTTP-spec design, versioning, and API test strategy, use developing-web-apis. For Node.js/Fastify backend services, use building-nodejs-services.
development
studying(スタディング, member.studying.jp)のコースレッスン一覧URLから、配下の「スマート問題集」 「セレクト過去問集(学科試験対策・実技試験対策)」の全問題(問題文・選択肢・正解・解説)を科目単位で 取得し、1科目1JSONファイルに保存する。出力は creating-flashcards スキルへ渡して科目ごとに Anki フラッシュカード化できる。 Use when studying のコースレッスン一覧URL(https://member.studying.jp/course/id/<course_id>/ 形式) を渡され「問題を全部保存したい」「Anki カードにしたい」等と言われたとき。 補足トリガー: studying, スタディング, 資格試験, スマート問題集, セレクト過去問集, 問題集, JSON 保存, Anki 連携。 ブラウザ操作自体の汎用ガイドは web:automating-browser、E2E テストは web:testing-e2e-with-playwright を使う。本スキルは studying 専用の収集ワークフロー + bundled script(scripts/collect-studying.sh) +ログイン認証を提供する。
development
Whizlabs のコース practice test 一覧URLから、配下の全クイズ(Free Test・Practice Test 1〜N 等)を practice mode で巡回し、各問題(問題文・選択肢・正解・解説・参考資料)を取得して 1 クイズ 1 JSON ファイルに 保存する。出力は creating-flashcards スキルへ渡してクイズごとに Anki フラッシュカード化できる。 Use when Whizlabs のコースURL(/learn/course/<slug>/<course-id>/pt 形式)を渡され 「問題を全部保存したい」「Anki カードにしたい」等と言われたとき。 補足トリガー: whizlabs, ホイズラボ, 資格試験, 問題集, practice test, quiz 収集, JSON 保存, Anki 連携。 ブラウザ操作自体の汎用ガイドは web:automating-browser、E2E テストは web:testing-e2e-with-playwright を使う。 本スキルは Whizlabs 専用の収集ワークフロー + bundled script(scripts/collect-whizlabs.sh)+ ログイン認証(agent-browser Auth Vault)を提供する。
development
Guides production Flutter app development with Dart targeting iOS, Android, web, and desktop from a single codebase, including project setup, the widget system (Stateless/Stateful, Material and Cupertino), layout, theming and animation, state management (setState, Provider, Riverpod, BLoC/Cubit, Redux, GetX), navigation and routing (Navigator, go_router, auto_route), networking and backends (http, dio, REST, Firebase, GraphQL), local persistence, responsive multi-platform design, architecture patterns (Clean Architecture, BLoC, MVVM), the pub.dev package ecosystem, widget and integration testing, performance optimization, and build and store release. REQUIRED when creating, implementing, modifying, testing, or shipping a Flutter app, or when pubspec.yaml lists the flutter SDK. For the Dart language itself (types, null safety, OOP, async, collections), use developing-dart. For native iOS/iPadOS apps in Swift/SwiftUI, use developing-ios-apps. For Apple HIG UI/UX decisions, use applying-apple-hig.