Skip to content
cccskills
FreePublished on GitHubEnglish overview

AnnualReports

Find and fetch vendor cybersecurity reports, then compare their findings on topics such as ransomware, breaches, cloud security, and AI. Analyses identify the reports consulted and cite each figure by vendor, year, and report, including where sources disagree.

OriginalShow the original description

Aggregate several hundred cybersecurity annual reports from CrowdStrike, Mandiant, IBM, Verizon, Microsoft, CISA, OWASP, Wiz, Palo Alto across 19+ categories (threat intel, ransomware, breaches, AppSec, cloud, AI, identity, pentest). Intents: UPDATE, ANALYZE, FETCH. USE WHEN annual reports, threat reports, vendor reports, ransomware trends, breach stats, DBIR, IBM Cost of Breach, threat landscape, CISO report, CVE trends. NOT FOR real-time threat feeds or live CVE lookup.

danielmiessler/LifeOS19,636 stars(GitHub 19,636 + cccskills 0)

Run score Not tested

See how to install

Good for

  • Find reports in a cybersecurity topic area
  • Fetch a specific vendor report
  • Compare ransomware findings across reports
  • Refresh the report catalog

Overview

What it does

AnnualReports searches cybersecurity reports published by multiple vendors and public organizations, using a category or vendor name. It can fetch a specific report and save a summary, refresh the list of sources, or analyze trends across reports on topics such as threats, ransomware, data breaches, cloud security, and AI. Analyses identify the vendor, year, and report behind each figure. When sources disagree, their findings are presented separately.

When it helps

Use it to find annual reports or compare ransomware trends, breach statistics, and threat developments across multiple publishers. It can also help locate a particular report, such as a CISO report, DBIR, or IBM Cost of Breach.

Example requests

  • “Compare ransomware findings across vendor reports.”
  • “List available threat reports by category.”
  • “Refresh the annual report catalog.”

Notes

This skill is not intended for real-time threat feeds or searches for newly published CVE information. Full PDFs for many reports require registration. Publication timing can lag behind the data covered; for example, a 2026 edition may use 2025 data.

This overview was written by AI (OpenAI Codex) from the public SKILL.md. Check the original below for the exact behavior.

Document check

AI checked the SKILL.md for operations that need care and for setup requirements. The score comes only from actually running the skill (hands-on test).

SafetyAre sending data, deleting files, and running commands disclosed?
BPartly lackingUpdates rewrite the catalog, and fetch requests may send a contact address.
Easy setupDoes it need few tools or API keys, and are they documented?
BPartly lackingIt requires bun; setup instructions are referenced separately in Setup.md.

Not counted in the score. Rated by AI (OpenAI Codex) as of Oct 28, 2026. Treat it as a guide and read the original before installing.

Disagree? Request a re-evaluation

Tell us which point is wrong and why. No login needed. We will check it against the SKILL.md, redo the evaluation, and show the result here.

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

Files included (6)

  • SKILL.md6.6 KB
  • Data/sources.json96.4 KB
  • Setup.md2.2 KB
  • Tools/FetchReport.ts8.1 KB
  • Tools/ListSources.ts5.9 KB
  • Tools/UpdateSources.ts8.0 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

AnnualReports - Security Report Aggregation

Contents: Ideal State · Anti-criteria · Intent Routing · Tool contract · Data & Config · Gotchas · Examples

Keeps one indexed catalog of several hundred annual cybersecurity reports, fetches the ones that answer a question, and synthesizes trends across vendors with every figure traceable to its source.

Source: awesome-annual-security-reports

Ideal State

  • UPDATE leaves Data/sources.json refreshed from the upstream awesome-annual-security-reports GitHub list, and the counts of added and removed reports are reported.
  • FETCH leaves a summary of the requested vendor report page saved under Reports/<vendor>/, with a note that most full PDFs need registration, and a listing request returns the reports in the asked category with their direct URLs; a requested fetch that could not be completed is reported as unavailable.
  • An ANALYZE answer names the vendors consulted, and also the ones absent from the answer. A ransomware synthesis that skipped Sophos says so, because the gap changes how much weight the numbers carry.
  • In an ANALYZE answer, every figure carries its vendor, its year, and the report it came from, and where vendors disagree, the disagreement is named and both numbers stand.
  • The publication lag is stated once (2026 reports cover 2025 data) so a trend read isn't mistaken for this-minute data.

Anti-criteria

  • Never silently average disagreeing vendors' numbers into one clean figure that no source actually published.
  • Never attribute a figure to the wrong report year, and never ship a stat without its vendor, year and report.
  • Never leave a requested fetch unavailable without reporting it.
  • Never conflate different vendors' terminology: each vendor has their own threat actor naming conventions.

Intent Routing

The skill is one intent with three modes, UPDATE, ANALYZE and FETCH, each run through a tool in § Tool contract.

FileRead when
Setup.mdfirst install, the optional PREFERENCES.md, proving the tools work

Tool contract

ModeTriggerTool
UPDATE"update the annual reports", refresh report sources from GitHubTools/UpdateSources.ts
ANALYZE"analyze X reports", trends/insights across vendorsTools/ListSources.ts + content analysis
FETCH"download/fetch report Y", specific vendor reportTools/FetchReport.ts
# Update sources from GitHub
bun run ${LIFEOS_SKILL_DIR}/Tools/UpdateSources.ts

# List all sources (no argument prints every category with its current count)
bun run ${LIFEOS_SKILL_DIR}/Tools/ListSources.ts [category]
bun run ${LIFEOS_SKILL_DIR}/Tools/ListSources.ts --search <term>   # match vendor or report name
bun run ${LIFEOS_SKILL_DIR}/Tools/ListSources.ts --vendor <name>   # every report from one vendor

# Fetch a specific report (vendor and name match as case-insensitive substrings)
bun run ${LIFEOS_SKILL_DIR}/Tools/FetchReport.ts <vendor> <report-name>
bun run ${LIFEOS_SKILL_DIR}/Tools/FetchReport.ts --url <url>       # fetch a page not in the catalog
bun run ${LIFEOS_SKILL_DIR}/Tools/FetchReport.ts --list-cached     # list summaries already saved under Reports/

Data & Config

Optional user preferences live at <configRoot>/LIFEOS/USER/CUSTOMIZATIONS/SKILLS/AnnualReports/PREFERENCES.md (configRoot is $CLAUDE_CONFIG_DIR when set, else ~/.claude). When it exists, apply it over the defaults; when it does not, the defaults stand. The skill needs no account or secret. First install and the proof commands: Setup.md.

A seed catalog ships with the skill, so ListSources and FetchReport work on a fresh install; UPDATE refreshes it from upstream. If the catalog is deleted, the tools exit with the instruction to run Tools/UpdateSources.ts.

  • Data/sources.json - All report sources with metadata (ships as a seed, rewritten by Tools/UpdateSources.ts)
  • Reports/ - Downloaded report files (created by Tools/FetchReport.ts on first fetch)

Gotchas

  • Category counts drift with the upstream list. Tools/ListSources.ts prints the current ones. The shipped seed (parsed 2026-10-14) holds 492 reports across 21 categories.
  • UPDATE reports counts, never entries. It prints New reports and Removed reports counts only, and --diff lists only new category keys. Report the counts as printed and never present a list of changed entries the tool did not print.
  • A failed fetch saves nothing. A fetch error, an HTTP error status, a PDF URL or an unknown report prints the reason to stderr and exits 1, with no summary file written. Report the reason as unavailable.
  • Requests declare this tool. FetchReport sends LifeOS-AnnualReports/1.0, plus the contact address from Config.md when set (see Setup.md), so a vendor site can see who is fetching.

Examples

User: "Update the annual reports"
→ UPDATE
→ Data/sources.json matches the upstream README, and the counts of added and removed reports are reported
User: "What threat reports are available?"
→ FETCH listing
→ The Global Threat Intelligence category's reports, each with its vendor and direct URL
User: "Analyze ransomware reports"
→ ANALYZE
→ A cross-vendor trend analysis where every figure names its vendor, year and report, and the vendors left out are named

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Compare a component's own design needs with the goals of the larger system through three structured passes. The result identifies conflicts, recommends an appropriate scope, and assesses whether the proposed design fits the whole.

  • Choosing between a service, a library, and inline code
  • Comparing feature requests with product goals
  • Checking how new components fit an existing system
danielmiessler/LifeOS19.6KUpdated Oct 28, 2026

Aphorisms

FreeSummary

Find quotes that fit a text’s themes, with attribution and a short reason for each suggestion. Add sourced quotes, research thinkers, and organize a quote collection by theme and usage history to avoid repetition.

  • Finding a fitting quote for a newsletter
  • Saving sourced quotes without duplicates
  • Researching a thinker’s quotes by theme
danielmiessler/LifeOS19.6KUpdated Oct 28, 2026

Art

FreeSummary

Create blog illustrations, technical diagrams, comparisons, comics, and icons through workflows tailored to each format. The skill guides composition, color, and model selection, then stages generated images for review before they are used in a project.

  • Creating blog header illustrations
  • Explaining a system with a technical diagram
  • Visualizing comparisons and timelines
danielmiessler/LifeOS19.6KUpdated Oct 28, 2026

ArtDirection

FreeSummary

Assess the visual quality of images, films, slides, and site captures against a brief and craft criteria. Two vision judges score the work and rank defects, guiding bounded revision; delivery is gated on a passing critique, with human calibration labels recorded separately.

  • Reviewing a render and listing the most important visual defects
  • Iterating on a film or slide deck until it meets a defined bar
  • Checking whether an image reads as professional
danielmiessler/LifeOS19.6KUpdated Oct 28, 2026

ArXiv

FreeSummary

Find arXiv papers by topic, research category, or paper ID. Retrieve titles, authors, abstracts, and links, check new submissions, and add AlphaXiv's AI-generated overviews when available to help decide which papers to read.

  • Checking new AI and machine learning papers
  • Finding papers on a specific research topic
  • Looking up a paper by its ID or arXiv URL
danielmiessler/LifeOS19.6KUpdated Oct 28, 2026

Assay

FreeSummary

Evaluate prompts, models, and agents with code checks or calibrated model judges, then compare results across repeated trials or A/B runs. It reports reliability measures and can turn subjective decisions into structured judgment questions and evaluation pipelines.

  • Checking whether an AI output meets stated requirements
  • Comparing two prompts or models with paired trials
  • Running repeated evaluations to measure reliability
danielmiessler/LifeOS19.6KUpdated Oct 28, 2026

See all skills by danielmiessler

Report a problem with this skill