Skip to content
OSINT Tradecraft
OSINT Tradecraft
Investigation skills · Vol. 8
Docs · Install · DeepSeek

DeepSeek, in the system prompt.

DeepSeek has no plugin runtime — but the skills are plain Markdown, so you just put the methodology where the model reads it. For the API, that's the system message. For a harness like Open WebUI or LangChain, that's a context document or a skills directory. Either way: select the skill, load its text, ask your question.

§ 01

Path A — the DeepSeek API.

Read the relevant SKILL.md from your unzipped bundle and pass its contents as the system message. The model then follows that methodology for the turn.

from openai import OpenAI  # DeepSeek is OpenAI-API-compatible
from pathlib import Path

client = OpenAI(api_key="YOUR_DEEPSEEK_KEY",
                base_url="https://api.deepseek.com")

skill = Path(
    "osint-foundations/skills/seed-discovery-from-email/SKILL.md"
).read_text()

resp = client.chat.completions.create(
    model="deepseek-chat",
    messages=[
        {"role": "system",
         "content": "Follow this investigative methodology exactly, "
                    "including its stop-points. Cite every finding "
                    "to a source.\n\n" + skill},
        {"role": "user",
         "content": "Work up jane.doe@example.com."},
    ],
)
print(resp.choices[0].message.content)

Load one skill (or a few related ones) per call — whichever the task needs. Concatenate two or three SKILL.md files into the system message when a case spans them; don't paste the whole library.

§ 02

Path B — an agent harness.

1

Download & unzip

From your dashboard, download the bundle and unzip it. The skill files sit under <bundle>/skills/<slug>/SKILL.md.
2

Drop skills into the harness

Most local harnesses read context documents from a directory. Point yours at the skill files:

# Open WebUI — add SKILL.md files as documents in a
# "Knowledge" collection, then attach the collection to
# a DeepSeek model preset.

# LangChain — load them as context documents:
from langchain_community.document_loaders import TextLoader
docs = TextLoader(
    "skills/ssl-certificate-pivoting/SKILL.md"
).load()
3

Route to the skill

Prepend a short directive so the harness uses the loaded skill instead of improvising:

You have one or more SKILL.md methodologies in context.
Identify the matching skill, follow its numbered steps in
order, honor its stop-points, and cite each finding to a
source with a timestamp. If no skill fits, say so.
4

Run a case

Give it a real task. The model should name the skill it's applying and move through the methodology phase by phase, rather than free-associating.

What to expect

DeepSeek won't auto-discover skills the way Claude Code does — nothing scans a folder for you. You decide which SKILL.md goes into context for a given case. That's a feature: you control exactly which methodology the model is working from, and you can read it yourself first.

Match the skill load to the context window.

DeepSeek's context is generous but not infinite, and a system prompt stuffed with 600 skills degrades reasoning long before it overflows. Select per case: load the two or three SKILL.md files the task actually needs. If you want broad auto-routing across the whole library, that's what the Claude Code plugin install is for.

Install · DeepSeek · OSINT Tradecraft