Llama, local and offline.
A local Llama runs entirely on your machine, which is exactly where sensitive casework belongs. The skills are plain Markdown, so you load a SKILL.md into the model's system prompt — through an Ollama Modelfile, a llama.cpp flag, or an agent framework — and the methodology rides along on every turn.
Path A — Ollama Modelfile.
Bake a skill into a custom model with a SYSTEM block. Paste the skill's contents between the triple quotes:
# Modelfile FROM llama3.1:8b SYSTEM """ Follow this investigative methodology exactly, including its stop-points. Cite every finding to a source with a timestamp. <paste the contents of skills/seed-discovery-from-email/SKILL.md here> """
Then build and run it:
ollama create osint-seed-discovery -f ./Modelfile ollama run osint-seed-discovery "Work up jane.doe@example.com."
One model per skill (or per themed group of skills) keeps each one sharp. Name them by case type so ollama list reads like a toolkit.
Path B — llama.cpp & agent frameworks.
Download & unzip
<bundle>/skills/<slug>/SKILL.md.llama.cpp — pass it as the system prompt
./llama-cli -m llama-3.1-8b-instruct.gguf \
--system-prompt-file \
skills/ssl-certificate-pivoting/SKILL.md \
-p "Who runs shellco-llc.com?"CrewAI / LangChain — load it as context
In an agent framework, read the skill file and pass it as the agent's backstory, system message, or a knowledge document:
from pathlib import Path
from crewai import Agent
skill = Path(
"skills/username-enumeration-across-platforms/SKILL.md"
).read_text()
investigator = Agent(
role="OSINT investigator",
goal="Follow the loaded methodology exactly; cite every finding.",
backstory=skill, # the SKILL.md drives the behavior
llm="ollama/llama3.1:8b",
)Or use the ~/.skills convention
Skill-aware local harnesses look in a ~/.skills directory. Copy the bundle's skills there, one folder each:
mkdir -p ~/.skills cp -r osint-foundations/skills/* ~/.skills/ # ~/.skills/ # seed-discovery-from-email/SKILL.md # ssl-certificate-pivoting/SKILL.md # …
Run a case
Give the model a real task. It should name the methodology it's applying and move through the steps in order, instead of guessing.
Smaller local models (7–8B) follow a methodology well when one skill is in the system prompt, but they get fuzzy if you cram many in. Keep the active skill set tight, and prefer the Modelfile-per-skill approach over one giant system prompt. A larger Llama (70B) holds more skills at once before quality slips.
One skill in the prompt beats fifty in the folder.
The ~/.skills directory can hold your whole library, but only load what a case needs into context. A local model's context window is the real budget — don't paste 600 skills into one system prompt and expect crisp tradecraft. Select per case; build a named Modelfile for the case types you run often.
