agentsclimarketplace

Investigation skill poirot

Skill VasileiosMalt/investigation-skill-poirot

A meticulous, multi-modal investigation agent. Given a case directory, Poirot ingests all evidence (text, images, audio, video), cross-examines every modality with intelligence and precision, and produces a structured investigation report with logical inferences, patterns, and conclusions. Named after Hercule Poirot — "the little grey cells" are always working.From its SKILL.md

Install
npx -y skills add VasileiosMalt/investigation-skill-poirot

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

11.4 KB, ~2.7k tokens by cl100k_base, as published. Nobody here has run it

Poirot — Investigation AI Agent Skill

"The impossible could not have happened, therefore the impossible must be possible in spite of appearances." — Hercule Poirot

Purpose

Poirot is a deep, multi-modal investigation skill. When given a case directory, it:

  1. Reads and internalises all textual evidence — building a knowledge base, identifying patterns, and understanding the case narrative.
  2. Analyses every image with a sophisticated VQA/VLLM pipeline — linking visual findings directly to case relevance.
  3. Analyses audio and video files — transcription, anomaly detection, behavioural analysis.
  4. Synthesises ALL findings across modalities — building logical inferences, uncovering connections, and producing a meticulous final report.

Poirot never speculates without evidence. Every claim is grounded in a cited source.


Agent Installation Instructions

If Poirot is not yet installed or dependencies are missing, the agent can install it autonomously:

  1. Python Dependencies:
    pip install -r requirements.txt
    
  2. System Dependencies (ffmpeg) (required for video/audio analysis):
    • macOS: brew install ffmpeg
    • Linux (Ubuntu/Debian): sudo apt install ffmpeg -y
    • Windows (PowerShell): winget install ffmpeg or choco install ffmpeg -y

Running Poirot

Automatic pipeline (recommended)

python scripts/poirot_run.py --case /path/to/case/directory

This single command runs all five phases automatically, in order, and writes every report to <case_dir>/_poirot_output/.

Options:

FlagDefaultDescription
--case DIR(required)Case directory containing all evidence files
--output-dir DIR<case_dir>/_poirot_outputWhere to write all phase outputs
--env FILEauto-searchedPath to a .env file with API keys / model config
--skip-phases N[,N](none)Skip specific phases, e.g. --skip-phases 3,4
--no-routeroffSkip live model fetch; use static .env / default models

Automatic model routing

Before the first analysis phase, Poirot:

  1. Scans the case directory — detects which modalities are present (text / image / audio / video).
  2. Fetches the live model list from your configured provider (OpenAI, Anthropic, Google, etc.).
  3. Classifies each available model by capability: vision, audio, context window, reasoning tier.
  4. Assigns the optimal model to each investigation task:
TaskPreference
ckb_generationLong-context + strong reasoning
classificationFast/cheap text model
image_analysisBest vision model available
doe_parsingVision model (DOE = Directly Observed Elements)
deep_drillPremium vision model (only invoked on anomalies)
audio_transcriptionNative ASR model; falls back to local Whisper
video_analysisVision + large-context preferred
dte_parsingFast text (transcript element extraction)
synthesisStrongest available reasoning model

The routing plan is saved to _poirot_output/routing_plan.json for inspection.


API keys & model configuration

API keys are fully optional. Three modes:

ModeWhenHow
AgentNo key, no provider setPoirot emits prompts; the calling AI agent handles LLM calls natively
LocalPOIROT_LOCAL_URL setvLLM / Ollama / LM Studio — no key needed
CloudAPI key presentFull live model fetch + optimal routing

Supply credentials via any of these methods (highest priority first):

  1. Shell environment variableexport OPENAI_API_KEY=sk-...
  2. .env file — copy .env.example.env and fill in values
  3. Interactive prompt — Poirot will ask when run in a terminal
  4. Nothing — Poirot enters agent passthrough mode automatically

Quick start with a .env file:

cp scripts/../.env.example .env
# Edit .env — uncomment and fill in only the keys you need
python scripts/poirot_run.py --case /path/to/case

Supported providers: openai · anthropic · openrouter · google · groq · together · mistral · local

Local / vLLM (no key needed):

POIROT_LOCAL_URL=http://localhost:11434/v1
POIROT_LOCAL_MODEL=llava

See .env.example and references/model_endpoints.md for the full list of configurable variables.


File Map

FilePurpose
SKILL.mdThis index. Entry point and workflow overview.
steps/01-ingest-case.mdPhase 1: Scan case dir, read text, build notes, detect patterns
steps/02-classify-evidence.mdPhase 2: Classify and route all evidence files by type
steps/03-image-analysis.mdPhase 3: VQA / VLLM image intelligence pipeline
steps/04-audio-video-analysis.mdPhase 4: Audio transcription, video frame & behaviour analysis
steps/05-synthesis-report.mdPhase 5: Cross-modal synthesis, inference, final report
references/supported_formats.mdAll supported file formats per modality
references/model_endpoints.mdModel API options: OpenRouter, OpenAI, local, and more
scripts/poirot_run.pyMain entrypoint--case orchestrator for the full pipeline
scripts/env_config.pyEnv loader: .env parsing, provider auto-detect, interactive prompts
scripts/model_router.pyLive model fetcher + capability classifier + task routing plan builder
scripts/ingest_case.pyPython: Case folder scanner and text note extractor
scripts/classify_evidence.pyPython: LLM-based evidence type classifier/router
scripts/run_image_analysis.pyPython: Core VQA pipeline with question router
scripts/run_audio_video_analysis.pyPython: Audio/video analysis pipeline
scripts/synthesize_report.pyPython: Final cross-modal report builder
.env.exampleTemplate for API keys and model configuration
examples/sample_case_investigation.mdExample session with a mock case

Agentic Operation — The Agent Runs the Scripts

Poirot is not a fixed pipeline you follow blindly. The agent is the investigator. The scripts are tools. Use them with judgment.

Core principle

Read the output of each phase. Decide what the case needs next. Run the appropriate script. Repeat.

poirot_run.py is a convenience — it runs all five phases in sequence for standard cases. But the agent may and should deviate from that sequence whenever the evidence demands it.


When to run scripts individually

Each script is a standalone tool. Call any of them directly at any point:

ScriptRun it when...
ingest_case.pyNew files are added to the case dir mid-investigation
classify_evidence.pyThe initial classification looks wrong or incomplete
run_image_analysis.pyA specific image needs re-analysis with different questions
run_audio_video_analysis.pyA recording needs deeper pass after text findings changed context
synthesize_report.pyNew findings warrant an updated synthesis before all phases are done
model_router.pyYou want to inspect the routing plan or re-route with different modalities

Agent decision loop

After each phase or script run, the agent must ask:

  1. What did I just learn? — Read the output files. Extract new facts.
  2. Does this change what I need to analyse? — A text document mentioning a specific timestamp changes what to look for in video. A suspicious image may require going back and re-reading text files.
  3. Is the current routing plan still optimal? — New findings may warrant a stronger model for the next step. Re-run model_router.py if needed.
  4. What is the highest-value next action? — More image passes? Audio deep-drill? Or is synthesis warranted now?
  5. Is there enough [E]-status evidence to close the case? — If yes, run synthesis. If not, drill deeper.

Permitted deviations from the default pipeline

The agent may:

  • Run Phase 3 (images) before Phase 2 (classification) if the case description makes image priority obvious.
  • Re-run synthesize_report.py multiple times as findings accumulate.
  • Run run_image_analysis.py on a single specific file with targeted arguments.
  • Skip a phase entirely if the evidence clearly does not warrant it.
  • Invoke run_audio_video_analysis.py a second time on a subset of files after textual context changes.
  • Add --skip-phases to poirot_run.py when re-running only specific phases after new evidence.

The agent must not:

  • Skip Phase 1 (ingestion) — the CKB is the foundation of all reasoning.
  • Run synthesis before at least one multimodal analysis pass if multimodal evidence exists.
  • Re-run scripts without reading their previous output first.

How to run scripts directly

All scripts share a common pattern. Examples:

# Re-analyse one specific image with a focused question
python scripts/run_image_analysis.py \
  --evidence _poirot_output/evidence_manifest.json \
  --ckb _poirot_output/case_knowledge_base.md \
  --output-dir _poirot_output

# Re-run synthesis after new findings
python scripts/synthesize_report.py \
  --ckb _poirot_output/case_knowledge_base.md \
  --image-report _poirot_output/image_analysis_report.json \
  --av-report _poirot_output/av_analysis_report.json \
  --output-dir _poirot_output

# Inspect / rebuild routing plan
python scripts/model_router.py --provider openai --modalities text,image,audio

The POIROT_ROUTING_PLAN environment variable (set by poirot_run.py) is available to all subprocesses for reading the active routing plan without re-fetching.


Output Contract

The final output MUST be a structured Poirot Investigation Report with:

  • ## Case Overview — Summary from textual evidence
  • ## Key Observations — Only observations relevant to the case; trivial details omitted
  • ## Evidence Log — Per-file findings; images include direct file links
  • ## Cross-Modal Inferences — Patterns and connections across text + image + AV
  • ## Assumptions & Hypotheses — Clearly marked as assumptions, grounded in evidence
  • ## Conclusion — Poirot's final assessment

Core Principles

  1. The agent is the investigator — the scripts are tools. Run them with judgment, not as a fixed checklist.
  2. Relevance over volume — Only include findings that matter to the case. Noise is the enemy.
  3. Cite everything — Every claim references the source file or timestamp.
  4. Image evidence includes a direct link[filename](file://path/to/image) format.
  5. Suspicious ≠ conclusive — Flag suspicions as hypotheses, not facts.
  6. Read before you re-run — Always read a script's output before deciding whether to run another pass.
  7. New context changes everything — A finding in one modality may invalidate or reframe findings in another. Go back and re-analyse when it does.
  8. Question before analysis — The image/AV question router must determine what to ask before expensive model calls.
  9. Routing is live, not fixed — The model assigned to a task at start may not be optimal later. Re-route if needed.

What ships with it: 25 files

2126.2 KB alongside SKILL.md, 8 of them executable

assets/

Gives 0 of the 12 instructions most video audio skills give in ~2.7k tokens

Counted across 622 of the 795 authors here whose files we hold, read 2026-08-07

  • Read individual rule files for detailed explanationsin 21 of 622, across 10 files
  • Render final videoin 13 of 622, across 6 files
  • Use WAV PCM 16kHz mono audio formatin 12 of 622, across 3 files
  • Use this skill when dealing with Remotion codein 11 of 622, across 4 files
  • Save generated audio to a WAV filein 11 of 622, across 4 files
  • Handle conversion errors gracefullyin 10 of 622, across 6 files
  • Add captions to videos alwaysin 10 of 622, across 4 files
  • Generate music from text descriptions using MusicGenin 9 of 622, across 2 files
  • Do not skip pipeline layersin 9 of 622, across 3 files
  • Do not make one tool do everythingin 9 of 622, across 3 files
  • Use Azure Document Intelligence for complex PDFsin 9 of 622, across 4 files
  • Never ask the user to paste their full API keyin 9 of 622, across 3 files

Said here and by no other author read

  • run scripts individually with judgement
  • read output before re-running any script
  • re-analyse evidence when new context emerges
  • include direct file links for image evidence
  • flag suspicions as hypotheses
  • determine questions before expensive model calls

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 326,367. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.