Skip to main content

incremental-cache-cli-modes

Use when implementing incremental caches, cache invalidation, cache stats, cache summary, list/import/export/prune/clear cache CLI modes, or CLI side-effect/reporting paths where normal analysis output and diagnostic output must not interfere.

Ir para a instalação

Informações da origem

Repositório
Calvin-Corbett/thomas
Última atividade na origem
9 de setembro de 2026 às 02:49
Idioma detectado do SKILL.md
inglês
Estrelas
4
Forks
0

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
incremental-cache-cli-modes
description
Use when implementing incremental caches, cache invalidation, cache stats, cache summary, list/import/export/prune/clear cache CLI modes, or CLI side-effect/reporting paths where normal analysis output and diagnostic output must not interfere.
# Incremental Cache And CLI Modes Use this for tools that add incremental analysis, persistent file caches, cache hit/miss metrics, or cache-management CLI flags. ## Core Workflow 1. Map every CLI flag into one of these categories before coding: - **analysis modes**: run normal analysis and optionally use/update the cache. - **side-effect-only modes**: clear, prune, import, export, stats, summary, list cached files. - **hybrid modes**: warm cache, force rescan, analysis with cache metrics. 2. Side-effect-only modes must not accidentally run the normal analysis/report pipeline unless the spec explicitly requires it. 3. Keep report output ownership separate from diagnostics. If formatters or output-file code may close or replace `stdout`, print cache stats/summary/list output through a live stream that you own, or return before the formatter path closes it. 4. Cache entries must be keyed by both file content and effective analysis configuration, not by path alone. 5. Preserve user-visible result semantics when serving from cache: issue severity, confidence, CWE, line number/range, filename, code snippets when applicable, skipped files, and exit codes. ## Required Edge Checks Run or create focused checks for: - first run misses, second run hits; - modified file rescans and updates cached results; - deleted file does not appear as a stale cached issue; - severity/confidence/test/profile/config changes invalidate cache entries; - `--force-rescan` bypasses reads but still writes fresh entries; - `--warm-cache` populates cache without reporting issues and exits successfully; - stats/summary/list/clear/prune/import/export work with and without positional targets; - cache corruption, incompatible format versions, and partial files are ignored without crashing; - cache size limits are enforced after writes and stats still report `cache_file_size_bytes`. ## Output Rules - Cache stats and summaries are operational output, not scan findings. Do not route them through a formatter that may close the output file or suppress stdout. - When a flag is meant to answer a cache question, print the answer before returning from the CLI command path. - If the CLI accepts targets with a stats/list flag, treat targets as optional context for locating config/cache, not as a reason to run a full scan unless the contract says so. - If normal analysis output and cache diagnostics can both be requested, make their ordering deterministic and test the combined path. ## Implementation Pattern - Centralize cache serialization/deserialization in a small module. - Store `format_version`, file content hash, effective config hash, timestamp, and serialized issue records. - Keep invalidation reasons explicit: `not_cached`, `file_changed`, `config_changed`, `expired`, `corrupt`, or equivalent. - Keep cache metrics on the manager/session object and expose them to JSON or machine-readable formatters under a stable `cache_info` object. - Test the CLI as a subprocess for stream ownership, because direct function tests often miss closed-stdout bugs.
Ver no GitHub