Installation
April 26, 2026 · View on GitHub
These skills are plain Markdown files. Installing them depends on which Claude surface you're using.
Claude Code (CLI)
Claude Code looks for skills in ~/.claude/skills/ by default.
Method 1: Direct copy
git clone https://github.com/elementalsouls/Claude-OSINT.git
cd Claude-OSINT
# Optional: populate full SKILL.md content from bundled full-skills (one-time after clone)
./scripts/sync-skill-content.sh
# Copy both skills into your local Claude Code skills directory
mkdir -p ~/.claude/skills
cp -r skills/osint-methodology ~/.claude/skills/
cp -r skills/offensive-osint ~/.claude/skills/
Method 2: Symlink (stays in sync with git pull)
git clone https://github.com/elementalsouls/Claude-OSINT.git ~/.local/share/Claude-OSINT
mkdir -p ~/.claude/skills
ln -sf ~/.local/share/Claude-OSINT/skills/osint-methodology ~/.claude/skills/osint-methodology
ln -sf ~/.local/share/Claude-OSINT/skills/offensive-osint ~/.claude/skills/offensive-osint
cd ~/.local/share/Claude-OSINT
./scripts/sync-skill-content.sh # one-time
Then git -C ~/.local/share/Claude-OSINT pull && ./scripts/sync-skill-content.sh periodically.
Verify install
Start a new Claude Code session and type:
What ports should I probe to find Swagger or OpenAPI specs on a webapp?
Claude should pull the 28-path Swagger wordlist from the offensive-osint skill. If it doesn't, see troubleshooting below.
Claude.ai (Pro / Team / Enterprise)
- Open https://claude.ai
- Create a new Project (or open an existing one).
- Click Add knowledge → Files.
- Upload both
skills/osint-methodology/SKILL.mdandskills/offensive-osint/SKILL.md. - (Optional) Also upload
tests/smoke-test-prompts.mdfor self-test reference. - Save.
In any conversation within that Project, the skills are available as system knowledge.
Claude API (Anthropic SDK)
Attach the skill content as part of the system prompt:
from anthropic import Anthropic
client = Anthropic()
with open("skills/osint-methodology/SKILL.md") as f:
methodology = f.read()
with open("skills/offensive-osint/SKILL.md") as f:
arsenal = f.read()
system_prompt = f"""You are an OSINT recon assistant for authorized red-team engagements.
You have access to two skills that you should reference whenever relevant:
=== SKILL: osint-methodology ===
{methodology}
=== SKILL: offensive-osint ===
{arsenal}
"""
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=4096,
system=system_prompt,
messages=[{"role": "user", "content": "Plan a 4-hour external recon on acme.com (in-scope BB)"}]
)
print(response.content[0].text)
Claude Agent SDK / Cowork mode
These platforms typically auto-discover skills in ~/.claude/skills/. Install via the Claude Code method above and they'll be available.
If you're building a custom agent with the SDK, attach SKILL.md content to your agent's system prompt as shown in the API method.
Cursor / other AI IDEs
Most AI IDEs allow custom system-prompt injection. Use the API method above as a template.
Troubleshooting
"Claude doesn't seem to know about the skill"
- Verify the file is at
~/.claude/skills/<skill-name>/SKILL.md(not~/.claude/skills/<skill-name>.md). - Restart Claude Code.
- In a fresh session, ask: "Do you have access to a skill named offensive-osint?" — Claude should confirm.
- Check the YAML frontmatter is intact (begins with
---and ends with---).
"The skill loads but doesn't trigger on my prompt"
The skill's triggers: list controls auto-activation. If your prompt's wording isn't in the list, Claude may not pull the skill.
- Try rephrasing with a phrase from the SKILL.md
triggers:list. - If your phrasing is a common practitioner term, open an issue to add it.
"I get the structured-outline SKILL.md, not the full content"
By default we ship structured-outline SKILL.md files (small, fast to load). To get full inline content:
cd <repo>
./scripts/sync-skill-content.sh
This populates skills/*/SKILL.md with the full content from docs/full-skills/*.SKILL.full.md.
"Skill is too large for my model's context"
Both skills together are ~5,500 lines / ~150 KB. This fits comfortably in modern Claude context windows (200K+). If you're using an older model with smaller context:
- Use the structured-outline SKILL.md files (don't run sync-skill-content.sh).
- Or attach only one skill at a time, depending on the task.
- Or run a model with larger context (Claude Sonnet 4.6+, Opus 4.6+).
"I want to filter the skill content"
Edit skills/<skill-name>/SKILL.md directly. Both files are plain Markdown. You can comment out sections you don't need or split them into multiple smaller skills.
Verifying skill version
Both SKILL.md files declare version: in the YAML frontmatter. Current: 2.1. Check via:
grep "^version:" skills/*/SKILL.md
Uninstalling
rm -rf ~/.claude/skills/osint-methodology ~/.claude/skills/offensive-osint
Or remove the symlinks if you used method 2 above.