Skip to main content
skill CX Codex

write-the-intel-brief — Claude Code skill: reports that survive

Turns investigation findings into a defensible intelligence product: judgements up front, source and timestamp on every claim, observation kept apart from inference.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add UseOSINT/Skills --skill write-the-intel-brief -a claude-code
Open on GitHub

What write-the-intel-brief does

The skill imposes an order on report writing. Every claim is sorted into one of three buckets: observation, inference, assessment. Blur them and a conclusion slips into the text wearing the grammar of a fact. "The account is operated from Lisbon" is not the same sentence as "posting times cluster in UTC+0/+1", and only one of them holds up under questioning.

Each retained claim then gets a source, a UTC retrieval timestamp, a source-reliability grade and an archive reference. For material that might become evidence, the skill adds chain of custody: who collected it, with which tool and version, plus a hash of the stored file (sha256sum file on Linux, shasum -a 256 file on macOS). Keep the original untouched and work on copies. A screenshot with no hash and no capture method is worth very little.

Judgements come first: the answer to the objective question, its probability and confidence, then the two or three judgements the decision rests on. Probability draws on one ordered ladder of terms, and a numeric percentage never shares a sentence with a word from it. Confidence is a separate axis, so "highly likely, low confidence" is a legitimate and honest line when everything rests on a single unverifiable source. Negative findings and gaps belong in the body, not buried at the end, and "checked, absent" is not the same as "could not check". The source text is truncated, so read the skill itself for the full sequence.

What it helps with

  • write up an investigation so it survives cross-examination
  • keep observation, inference and assessment visually distinct
  • attach source, timestamp and archived copy to every claim
  • document negative findings and gaps with the scope searched
  • build an evidence pack with chain of custody and file hashes

Example prompts for the agent

  • Turn these findings into an intel brief: judgements first, source and timestamp on every claim
  • Sort my investigation notes into observations, inferences and assessments
  • Write up the evidence pack with file hashes, chain of custody and negative findings

How to install write-the-intel-brief

1Skills CLI (Vercel)

npx skills add UseOSINT/Skills --skill write-the-intel-brief -a claude-code

2Manually: put the files in place

~/.claude/skills/write-the-intel-brief/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/write-the-intel-brief/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about write-the-intel-brief

How do I install write-the-intel-brief in Claude?

Run npx skills add UseOSINT/Skills --skill write-the-intel-brief -a claude-code. The skill lands at ~/.claude/skills/write-the-intel-brief/SKILL.md.

What does write-the-intel-brief do?

It builds an intelligence product step by step: sorts claims into observation, inference and assessment, requires a source and timestamp for each, leads with the judgements, and writes up negative findings and gaps separately.

How is probability different from confidence here?

Probability is how likely the judgement is to be true; confidence is how good the evidence underneath it is. The skill keeps them apart, so "highly likely, low confidence" is a valid formulation.

Source text

SKILL.md · MIT
---
name: write-the-intel-brief
description: >-
  Turn findings into a defensible intelligence product — BLUF key judgements, standardised
  estimative probability language, per-claim sourcing with timestamps and archived copies,
  separated observation, inference and assessment, documented negative findings and gaps,
  chain of custody and hashing, and redaction of uninvolved parties. Use when writing an
  intelligence report, due-diligence memo, evidence pack or executive summary, or when asked
  to write up an investigation so it survives challenge. Applies to regulated compliance
  reporting, litigation and disclosure, board and investment committee reporting, and
  law-enforcement referral. Reference at useosint.com/skills/write-the-intel-brief.
disable-model-invocation: true
---

# Write the intel brief

The report is the only part of the investigation anyone else sees, so it is the
only part that can be wrong in public. The failure that destroys credibility
isn't a missed source — it's a sentence that reads as fact and is actually an
inference. "The account is operated from Lisbon" versus "posting times cluster
in UTC+0/+1, consistent with Iberian working hours." One survives cross-
examination.

## Step 1 — Sort every claim into observation, inference, or assessment

Three categories, never blurred, ideally visually distinct in the text.

- **Observation** — what you saw, with source and timestamp. "The registry
  record retrieved 2024-03-11 lists A. Kestrel as director."
- **Inference** — a logical step from observations, with the step shown. "The
  same registrant email appears on both domains, so they were registered by one
  party."
- **Assessment** — your analytic judgement, carrying probability and confidence.
  "We assess it is likely the two companies are commonly controlled."

Any sentence where you cannot say which category it belongs to is a sentence
that has smuggled a conclusion into the evidence. Rewrite it. Verbs betray the
category: *is, lists, shows* for observation; *indicates, implies* for
inference; *we assess, we judge* for assessment. Watch out for "appears to be",
which pretends to be observation and is inference.

**Done when** every claim is tagged and no inference is written in the
grammatical form of an observation.

## Step 2 — Attach source, timestamp, and an archived copy to every claim

A claim with no source does not go in the report. Not in a footnote, not
"multiple sources" — the specific one, per claim.

Each source needs: the URL or the tool and its exact query; the UTC date-time
you retrieved it; the source-reliability grade (see `investigate-anything`); and
an archive reference. Live URLs rot, and hostile subjects delete. Archive
everything you cite, at the moment you cite it, using `read-deleted-pages` —
cite the snapshot alongside the live URL, and keep a local copy too, since
public archives can themselves be removed on request.

For anything that might become evidence, add chain of custody: who collected
it, when, with what tool and version, and a cryptographic hash of the stored
file (`sha256sum file` on Linux, `shasum -a 256 file` on macOS). Record the hash
in the report, keep the original untouched, and work on copies. A screenshot
with no hash, no timestamp and no capture method is worth very little; the
underlying HTML, headers, and image files are worth more.

**Done when** every retained claim has source, retrieval timestamp, grade, and
archive reference, and evidentiary items also have hashes.

## Step 3 — Lead with the judgements

Assume the reader stops after the first half page — because they will. BLUF:
the answer to the objective question first, in plain language, with its
probability and confidence. Then the two or three judgements that carry the
decision. Background, method and detail come after, for the reader who needs to
audit you.

A key judgement is one sentence, one judgement, with its estimative term, its
confidence, and the reason compressed to a clause. If a judgement needs a
paragraph of setup to make sense, it isn't a judgement yet.

**Done when** the objective question is answered in the first paragraph, and
the answer would still be defensible if nothing else were read.

## Step 4 — Use the probability ladder, and only it

"Possibly" everywhere is how a report says nothing at length. Standardise on one
ordered set of terms and use them consistently:

**almost certainly · highly likely · likely · roughly even chance · unlikely ·
highly unlikely · remote**

Rules that make it work: never use a term outside the ladder; never mix in a
numeric percentage in the same sentence as a word, since readers anchor on the
number; never use "possible" as an estimate, because everything not excluded is
possible; and print the ladder in the report so the reader maps words to ranges
the same way you did. Full table with ranges, the near-synonyms to avoid, and
worked rewrites: [reference/estimative-language.md](reference/estimative-language.md).

**Probability and confidence are different axes.** Probability is how likely the
judgement is to be true. Confidence is how good the evidence underneath it is —
source quality, corroboration, and the presence of gaps or plausible deception.
You can legitimately write "highly likely, low confidence": the evidence points
strongly one way but rests on a single unverifiable source. That sentence is
honest and useful. Collapsing the two into one word is not.

**Done when** every assessment carries one ladder term and a stated confidence
level, with the reason for the confidence given.

## Step 5 — Write the negative findings

Juniors delete these because they feel like failure. They are frequently the
most useful content in the report: they are what stops the next analyst
repeating the work, and in due diligence and pre-employment contexts the
absence of adverse findings is the deliverable.

State what you looked for, where you looked, and what you did not find —
distinguishing "checked, absent" from "could not check". "No sanctions or
enforcement listings for the subject in the OFAC, UK, and EU consolidated lists,
checked 2024-03-11" is a finding. "No adverse media found" without naming the
sources searched, the languages, and the date range is not a finding, it is a
shrug. Record rejected leads and candidates too, with the reason for rejection.

**Done when** searched-and-empty, could-not-check, and rejected-candidate items
are each written up with scope and dates.

## Step 6 — Document method and gaps

Reproducibility is what separates an intelligence product from an opinion.
Record the tools with versions, the exact queries and dorks, the databases and
their coverage dates, the languages searched, and anything that shaped the
result: rate limiting, geo-restricted content, paywalls, a persona's access
level, deleted material recovered only from archives.

Gaps go in the body, not buried at the end: what could not be established, why
(no public registry in that jurisdiction, platform requires authentication,
records are sealed), and what would close it — a records request, a subpoena, a
site visit. Naming the closed source is a service to whoever reads it.

**Done when** another analyst could re-run the collection from the report alone
and get the same result, and every unanswered objective question has a named
reason and a route.

## Step 7 — Minimise, redact, and format for the audience

Collect broadly, publish narrowly. Remove everything not needed for the
objective — especially data about uninvolved third parties who appeared in the
collection: family members, neighbours, co-residents at an address, bystanders
in photographs, unrelated people sharing the subject's name. Redact rather than
delete where the item explains a reasoning step, and say what was redacted and
why, so the redaction itself is auditable. Never publish full national-ID
numbers, payment card numbers, credentials, or plaintext passwords from breach
data; reference them by type and partial value. Keep the unredacted case file
separately, encrypted, under the retention limit in
[../../ETHICS.md](../../ETHICS.md).

Then match the format to the reader:

| Audience | Shape |
|---|---|
| Client or executive | One-page BLUF, judgements with probability and confidence, business implication, no tool names in the body |
| Incident responder | Judgements plus a machine-usable indicator table (selectors, first/last seen, confidence) and the raw artefacts |
| Legal or regulatory | Observation-only body, inferences separated and labelled, chain of custody and hashes per exhibit, method appendix, nothing redacted without a log |
| Internal handover | The graph from `graph-the-network`, the collection plan with what was and wasn't done, and every dead end |

Template with all sections, and the evidentiary variant:
[reference/report-template.md](reference/report-template.md).

**Done when** the report contains no third-party data the objective doesn't
need, and the format matches the named audience.

## Where this goes wrong

- **Inference laundering.** An inference stated on page 2, repeated as
  background on page 5, cited as established on page 8. Watch for your own
  claims re-entering as facts.
- **Confidence inflation from volume.** Forty low-grade items feel like a lot.
  Grade quality, not count; check for circular reporting before any
  corroboration claim.
- **The hedge that means nothing.** "It cannot be ruled out that" is true of
  everything. Either estimate it or drop it.
- **Screenshots as evidence.** Trivially forged and easily misread. Cite the
  archived original; use a screenshot only as an illustration next to it.
- **Report written from memory.** Reconstructing sources afterwards produces
  citations to pages that no longer say what you remember. Cite as you collect.
- **The wrong-person catastrophe.** Everything above is fine and the subject is
  the wrong human being. Restate the discriminators in the report and show which
  evidence ties the findings to *that* individual specifically.
- **Distribution.** Once sent, it is copied forever. Mark handling, name the
  recipients, and assume onward sharing.

## Confidence grading

- **High confidence** — multiple independently collected sources, at least one
  authoritative primary record, consistent, no plausible deception, no material
  gap.
- **Moderate confidence** — credible sourcing with partial corroboration, or a
  gap that does not touch the core judgement.
- **Low confidence** — single source, unverifiable sourcing, significant gaps,
  or a live possibility of manipulation. Still publishable — say why it is low
  and what would raise it.

State the confidence next to the judgement, not in a preamble the reader skips.

## Worked example

Objective: does the supplier share control with a barred entity?

BLUF: "It is **likely** (moderate confidence) that Nordvale Trading and the
barred entity share beneficial control."

Observation: both filings name the same accountancy firm; both domains resolve
to a registrant email `[email protected]` (retrieved 2024-03-11,
archived). Inference: a shared registrant email indicates one registering party.
Assessment: likely common control — moderate, not high, because the beneficial
owner is undisclosed in that jurisdiction and a nominee arrangement remains
untested.

Negative finding included: the shared home address reported by three
people-search sites was traced to one broker feed carrying an identical
misspelling; recorded as circular and excluded. Redacted: two co-residents at
that address, unrelated to the objective. Gap named: UBO register is
non-public; a formal request would close it.

## Pivots

The report is the terminal product; it consumes rather than produces selectors.
Take the entity map from `graph-the-network`, the archived copies from
`read-deleted-pages`, and the scope statement from `investigate-anything`.
Unresolved indicators go back to the workflow that produces them.

## Legal notes

An OSINT report about a living person is personal data in its own right, and the
subject may have access rights to it in some jurisdictions — write every line as
if the subject will read it, because they may be entitled to. Reports likely to
be used in proceedings need the evidentiary format from Step 7 and unbroken
custody; a report assembled loosely and reformatted later cannot recover
custody it never had. Breach-derived material carries its own handling
constraints — see `what-leaked-about-you` — and quoting credentials into a
report can itself be unlawful processing.

© UseOSINT · MIT · UseOSINT/Skills

Similar skills

Everything for Security →

From the same set25

geolocate-from-pixels Extracts location and timestamp data from outdoor photos and video using visual cues alone, without EXIF or GPS metadata. Built for verification, fact-checking, and GEOINT. CX Codex +1 1,800installs secrets-in-file-metadata Pulls EXIF, XMP, IPTC and Office or PDF properties with exiftool: GPS, camera serial, authors, timestamps. Useful when you need to know where a file came from. CX Codex +1 1,800installs investigate-anything Router and baseline methodology for investigations into people, companies, or domains. It turns loose requests into falsifiable questions and sets collection plans. CX Codex +1 1,800installs what-an-email-reveals Walks an email address through MX checks, Gravatar, corporate format inference, breach exposure and full header analysis. Built for phishing triage and invoice fraud. CX Codex +1 1,800installs whose-number-is-this Structured phone OSINT workflow covering E.164 normalisation, carrier and VoIP detection, messaging app checks, and search engine string permutations. CX Codex +1 1,800installs find-anyone Builds a corroborated profile of a specific person from public records. Binds the name to a second selector first so two namesakes never merge. CX Codex +1 1,800installs hunt-a-handle Sweeps a username across hundreds of platforms with sherlock, maigret and WhatsMyName, then helps you tell real accounts of one person from lookalikes. CX Codex +1 1,800installs recon-a-domain-passively Builds a complete asset inventory for a domain, its subdomains, and infrastructure without sending packets to the target. Helpful for third-party risk reviews and M&A diligence. CX Codex +1 1,800installs

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor