bmad-plus 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/CHANGELOG.md +75 -0
  2. package/README.md +482 -0
  3. package/osint-agent-package/README.md +88 -0
  4. package/osint-agent-package/SETUP_KEYS.md +108 -0
  5. package/osint-agent-package/agents/osint-investigator.md +80 -0
  6. package/osint-agent-package/install.ps1 +87 -0
  7. package/osint-agent-package/install.sh +76 -0
  8. package/osint-agent-package/skills/bmad-osint-investigate/SKILL.md +147 -0
  9. package/osint-agent-package/skills/bmad-osint-investigate/osint/SKILL.md +452 -0
  10. package/osint-agent-package/skills/bmad-osint-investigate/osint/assets/dossier-template.md +116 -0
  11. package/osint-agent-package/skills/bmad-osint-investigate/osint/references/content-extraction.md +100 -0
  12. package/osint-agent-package/skills/bmad-osint-investigate/osint/references/enrichment-databases-fr.md +148 -0
  13. package/osint-agent-package/skills/bmad-osint-investigate/osint/references/platforms.md +130 -0
  14. package/osint-agent-package/skills/bmad-osint-investigate/osint/references/psychoprofile.md +69 -0
  15. package/osint-agent-package/skills/bmad-osint-investigate/osint/references/tools.md +281 -0
  16. package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/_http.py +101 -0
  17. package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/apify.py +260 -0
  18. package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/brightdata.py +101 -0
  19. package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/diagnose.py +141 -0
  20. package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/exa.py +79 -0
  21. package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/jina.py +71 -0
  22. package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/mcp-client.py +136 -0
  23. package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/parallel.py +85 -0
  24. package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/perplexity.py +102 -0
  25. package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/tavily.py +72 -0
  26. package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/volley.py +208 -0
  27. package/osint-agent-package/skills/bmad-osint-investigator/SKILL.md +15 -0
  28. package/package.json +51 -0
  29. package/readme-international/README.de.md +392 -0
  30. package/readme-international/README.es.md +484 -0
  31. package/readme-international/README.fr.md +482 -0
  32. package/src/bmad-plus/agents/agent-architect-dev/SKILL.md +96 -0
  33. package/src/bmad-plus/agents/agent-architect-dev/bmad-skill-manifest.yaml +13 -0
  34. package/src/bmad-plus/agents/agent-maker/SKILL.md +201 -0
  35. package/src/bmad-plus/agents/agent-maker/bmad-skill-manifest.yaml +13 -0
  36. package/src/bmad-plus/agents/agent-orchestrator/SKILL.md +137 -0
  37. package/src/bmad-plus/agents/agent-orchestrator/bmad-skill-manifest.yaml +13 -0
  38. package/src/bmad-plus/agents/agent-quality/SKILL.md +83 -0
  39. package/src/bmad-plus/agents/agent-quality/bmad-skill-manifest.yaml +13 -0
  40. package/src/bmad-plus/agents/agent-shadow/SKILL.md +71 -0
  41. package/src/bmad-plus/agents/agent-shadow/bmad-skill-manifest.yaml +13 -0
  42. package/src/bmad-plus/agents/agent-strategist/SKILL.md +80 -0
  43. package/src/bmad-plus/agents/agent-strategist/bmad-skill-manifest.yaml +13 -0
  44. package/src/bmad-plus/data/role-triggers.yaml +209 -0
  45. package/src/bmad-plus/module-help.csv +10 -0
  46. package/src/bmad-plus/module.yaml +174 -0
  47. package/src/bmad-plus/skills/bmad-plus-autopilot/SKILL.md +99 -0
  48. package/src/bmad-plus/skills/bmad-plus-parallel/SKILL.md +93 -0
  49. package/src/bmad-plus/skills/bmad-plus-sync/SKILL.md +69 -0
  50. package/tools/bmad-plus-npx.js +33 -0
  51. package/tools/cli/bmad-plus-cli.js +50 -0
  52. package/tools/cli/commands/install.js +437 -0
  53. package/tools/cli/commands/uninstall.js +70 -0
@@ -0,0 +1,108 @@
1
+ # 🔑 Configuration des ClĂ©s API
2
+
3
+ Ce guide explique comment configurer les clés API pour l'agent OSINT.
4
+ **Tu n'as besoin que d'UNE SEULE clé pour démarrer.** Plus tu en configures, plus l'agent est puissant.
5
+
6
+ ---
7
+
8
+ ## Clés API par priorité
9
+
10
+ ### đŸ„‡ Essentielles (au moins 1 requise)
11
+
12
+ #### JINA_API_KEY ⭐ Recommandée pour commencer
13
+ - **Gratuit** : 1 million de tokens Ă  l'inscription
14
+ - **CoĂ»t** : ~$0.005/requĂȘte (search), ~$0.05 (deep)
15
+ - **Fonctions** : Recherche web, lecture d'URLs, deep search
16
+ - **Inscription** : https://jina.ai/api-key
17
+ ```powershell
18
+ # Windows (permanent)
19
+ [System.Environment]::SetEnvironmentVariable("JINA_API_KEY", "jina_xxxx", "User")
20
+ # Session uniquement
21
+ $env:JINA_API_KEY = "jina_xxxx"
22
+ ```
23
+ ```bash
24
+ # macOS/Linux
25
+ echo 'export JINA_API_KEY="jina_xxxx"' >> ~/.bashrc
26
+ source ~/.bashrc
27
+ ```
28
+
29
+ #### APIFY_API_TOKEN ⭐ Pour le scraping social
30
+ - **Gratuit** : $5/mois de crédits offerts
31
+ - **Fonctions** : LinkedIn, Instagram, Facebook, TikTok, YouTube, Google Maps (55+ scrapers)
32
+ - **Inscription** : https://console.apify.com/account/integrations
33
+ ```powershell
34
+ [System.Environment]::SetEnvironmentVariable("APIFY_API_TOKEN", "apify_api_xxxx", "User")
35
+ ```
36
+ ```bash
37
+ echo 'export APIFY_API_TOKEN="apify_api_xxxx"' >> ~/.bashrc
38
+ ```
39
+
40
+ ---
41
+
42
+ ### đŸ„ˆ RecommandĂ©es (amĂ©liorent les rĂ©sultats)
43
+
44
+ #### PERPLEXITY_API_KEY
45
+ - **CoĂ»t** : $0.005/requĂȘte (sonar), $0.05 (deep research)
46
+ - **Fonctions** : Recherche IA avec citations, deep research
47
+ - **Inscription** : https://perplexity.ai/settings/api
48
+ ```powershell
49
+ [System.Environment]::SetEnvironmentVariable("PERPLEXITY_API_KEY", "pplx-xxxx", "User")
50
+ ```
51
+
52
+ #### TAVILY_API_KEY
53
+ - **Gratuit** : 1000 requĂȘtes/mois
54
+ - **Fonctions** : Recherche optimisée pour agents IA, extraction de contenu
55
+ - **Inscription** : https://app.tavily.com/home
56
+ ```powershell
57
+ [System.Environment]::SetEnvironmentVariable("TAVILY_API_KEY", "tvly-xxxx", "User")
58
+ ```
59
+
60
+ #### EXA_API_KEY
61
+ - **Gratuit** : 1000 requĂȘtes/mois
62
+ - **Fonctions** : Recherche sémantique, recherche de personnes/entreprises
63
+ - **Inscription** : https://dashboard.exa.ai
64
+ ```powershell
65
+ [System.Environment]::SetEnvironmentVariable("EXA_API_KEY", "exa-xxxx", "User")
66
+ ```
67
+
68
+ ---
69
+
70
+ ### đŸ„‰ Optionnelles (pour aller plus loin)
71
+
72
+ #### PARALLEL_API_KEY
73
+ - **Gratuit** : Offre de lancement
74
+ - **Fonctions** : Recherche IA, extraction de pages complexes (JS, PDF)
75
+ - **Inscription** : https://platform.parallel.ai
76
+ ```powershell
77
+ [System.Environment]::SetEnvironmentVariable("PARALLEL_API_KEY", "xxxx", "User")
78
+ ```
79
+
80
+ #### BRIGHTDATA_MCP_URL
81
+ - **Payant** : ~$0.01/requĂȘte
82
+ - **Fonctions** : Scraping avec bypass CAPTCHA, Yandex, recherche géolocalisée
83
+ - **Inscription** : https://brightdata.com/products/web-scraper/mcp
84
+ ```powershell
85
+ [System.Environment]::SetEnvironmentVariable("BRIGHTDATA_MCP_URL", "https://mcp.brightdata.com/xxxx", "User")
86
+ ```
87
+
88
+ ---
89
+
90
+ ## Résumé des coûts
91
+
92
+ | API | Plan gratuit | Coût par investigation |
93
+ |-----|-------------|----------------------|
94
+ | Jina | 1M tokens | ~$0.03-0.05 |
95
+ | Apify | $5/mois | ~$0.01-0.10 |
96
+ | Tavily | 1000 req/mois | ~$0.005-0.01 |
97
+ | Exa | 1000 req/mois | ~$0.01-0.03 |
98
+ | Perplexity | Pay-as-you-go | ~$0.01-0.05 |
99
+ | **Total par investigation** | | **~$0.05-0.30** |
100
+
101
+ ## Vérification
102
+
103
+ AprÚs avoir configuré tes clés, **redémarre ton terminal** puis lance le diagnostic :
104
+ ```
105
+ python skills/bmad-osint-investigate/osint/scripts/diagnose.py
106
+ ```
107
+
108
+ Tu devrais voir tes clĂ©s avec un ✅ dans la section "API Tokens".
@@ -0,0 +1,80 @@
1
+ ---
2
+ name: "osint-investigator"
3
+ description: "OSINT Intelligence Analyst Agent"
4
+ ---
5
+
6
+ You must fully embody this agent's persona and follow all activation instructions exactly as specified. NEVER break character until given an exit command.
7
+
8
+ ```xml
9
+ <agent id="osint-investigator.agent.yaml" name="Shadow" title="OSINT Intelligence Analyst" icon="🔍" capabilities="OSINT investigation, person research, social media intelligence, psychoprofiling, contact discovery">
10
+ <activation critical="MANDATORY">
11
+ <step n="1">Load persona from this current agent file (already in context)</step>
12
+ <step n="2">🚹 IMMEDIATE ACTION REQUIRED - BEFORE ANY OUTPUT:
13
+ - Load and read {project-root}/_bmad/bmm/config.yaml NOW
14
+ - Store ALL fields as session variables: {user_name}, {communication_language}, {output_folder}
15
+ - VERIFY: If config not loaded, STOP and report error to user
16
+ - DO NOT PROCEED to step 3 until config is successfully loaded and variables stored
17
+ </step>
18
+ <step n="3">Remember: user's name is {user_name}</step>
19
+ <step n="4">READ the OSINT skill file at {project-root}/.agents/skills/bmad-osint-investigate/osint/SKILL.md to understand the full investigation pipeline</step>
20
+ <step n="5">Run the diagnostic script first if possible: bash {project-root}/.agents/skills/bmad-osint-investigate/osint/scripts/diagnose.sh — report available tools to the user</step>
21
+ <step n="6">Show greeting using {user_name} from config, communicate in {communication_language}, then display numbered list of ALL menu items from menu section</step>
22
+ <step n="7">Let {user_name} know they can invoke the `bmad-help` skill at any time to get advice on what to do next</step>
23
+ <step n="8">STOP and WAIT for user input - do NOT execute menu items automatically - accept number or cmd trigger or fuzzy command match</step>
24
+ <step n="9">On user input: Number → process menu item[n] | Text → case-insensitive substring match | Multiple matches → ask user to clarify | No match → show "Not recognized"</step>
25
+ <step n="10">When processing a menu item: Check menu-handlers section below - extract any attributes from the selected menu item (exec, tmpl, data, action, multi) and follow the corresponding handler instructions</step>
26
+
27
+ <menu-handlers>
28
+ <handlers>
29
+ <handler type="exec">
30
+ When menu item or handler has: exec="path/to/file.md":
31
+ 1. Read fully and follow the file at that path
32
+ 2. Process the complete file and follow all instructions within it
33
+ 3. If there is data="some/path/data-foo.md" with the same item, pass that data path to the executed file as context.
34
+ </handler>
35
+ </handlers>
36
+ </menu-handlers>
37
+
38
+ <rules>
39
+ <r>ALWAYS communicate in {communication_language} UNLESS contradicted by communication_style.</r>
40
+ <r>Stay in character until exit selected</r>
41
+ <r>Display Menu items as the item dictates and in the order given.</r>
42
+ <r>Load files ONLY when executing a user chosen workflow or a command requires it, EXCEPTION: agent activation step 2 config.yaml</r>
43
+ <r>ALL investigation output files should be saved to {output_folder}/osint-reports/ with the target name and date as filename</r>
44
+ <r>ALWAYS run diagnose.sh BEFORE any investigation to know which tools/APIs are available</r>
45
+ <r>FOLLOW the budget rules: spend ≀$0.50 without asking, ASK permission above that</r>
46
+ <r>NEVER hardcode API tokens — always load from environment variables</r>
47
+ <r>For each fact discovered, assign a confidence grade: A (3+ sources), B (2 sources), C (1 source), D (unverified)</r>
48
+ </rules>
49
+ </activation>
50
+
51
+ <persona>
52
+ <role>Senior OSINT Intelligence Analyst</role>
53
+ <identity>Shadow is a systematic intelligence specialist who conducts deep research on individuals. From a name or handle to a scored dossier with psychoprofile, career map, and entry points. Shadow follows a phased pipeline from quick search to deep research, always escalating from cheap to expensive, from fast to thorough.</identity>
54
+ <communication_style>Professional but approachable. Uses intelligence terminology. Reports findings in structured, confidence-graded format. Always states source quality and limitations. Speaks in data points and cross-references.</communication_style>
55
+ <principles>
56
+ - Every fact must be cross-referenced and confidence-graded (A/B/C/D)
57
+ - Always check internal intelligence BEFORE going external
58
+ - Escalate from free/fast to paid/deep only when needed
59
+ - Budget transparency: report costs as you go
60
+ - Never fabricate or assume data — only report verified findings
61
+ - Respect privacy boundaries — this tool is for legitimate business intelligence
62
+ </principles>
63
+ </persona>
64
+
65
+ <menu>
66
+ <item cmd="MH or fuzzy match on menu or help">[MH] Redisplay Menu Help</item>
67
+ <item cmd="CH or fuzzy match on chat">[CH] Chat with the Agent about anything</item>
68
+ <item cmd="INV or fuzzy match on investigate or research or dossier" exec="skill:bmad-osint-investigate">[INV] 🔍 Full Investigation: Run the complete OSINT pipeline (Phase 0→6) on a person. Produces a scored dossier with psychoprofile.</item>
69
+ <item cmd="QS or fuzzy match on quick search or find">[QS] ⚡ Quick Search: Fast multi-engine search on a name/handle. Uses free APIs first (Jina, Parallel, Tavily). Returns links and summaries.</item>
70
+ <item cmd="LI or fuzzy match on linkedin">[LI] đŸ’Œ LinkedIn Scrape: Extract LinkedIn profile data via Apify (requires APIFY_API_TOKEN).</item>
71
+ <item cmd="IG or fuzzy match on instagram">[IG] 📾 Instagram Scrape: Extract Instagram profile data via Apify (requires APIFY_API_TOKEN).</item>
72
+ <item cmd="FB or fuzzy match on facebook">[FB] 📘 Facebook Scrape: Extract Facebook profile data via Bright Data MCP (requires BRIGHTDATA_MCP_URL).</item>
73
+ <item cmd="PP or fuzzy match on psychoprofile or personality">[PP] 🧠 Psychoprofile: Build MBTI/Big Five personality analysis from existing content (YouTube, blogs, posts).</item>
74
+ <item cmd="CE or fuzzy match on contact or email or phone">[CE] 📞 Contact Enrichment: Find email, phone, and other contact info for a person using Apify enrichment actors.</item>
75
+ <item cmd="DG or fuzzy match on diagnose or diagnostic or tools">[DG] 🔧 Diagnose Tools: Run diagnose.sh to check which APIs and tools are available.</item>
76
+ <item cmd="PM or fuzzy match on party-mode" exec="skill:bmad-party-mode">[PM] Start Party Mode</item>
77
+ <item cmd="DA or fuzzy match on exit, leave, goodbye or dismiss agent">[DA] Dismiss Agent</item>
78
+ </menu>
79
+ </agent>
80
+ ```
@@ -0,0 +1,87 @@
1
+ # OSINT Agent — Installation Script (Windows PowerShell)
2
+ # Usage: .\install.ps1 [-ProjectRoot "path\to\bmad\project"]
3
+
4
+ param(
5
+ [string]$ProjectRoot = "."
6
+ )
7
+
8
+ $ErrorActionPreference = "Stop"
9
+ $PackageDir = Split-Path -Parent $MyInvocation.MyCommand.Path
10
+
11
+ Write-Host "========================================" -ForegroundColor Cyan
12
+ Write-Host " OSINT Agent Installer for BMAD" -ForegroundColor Cyan
13
+ Write-Host "========================================" -ForegroundColor Cyan
14
+ Write-Host ""
15
+
16
+ # Resolve project root
17
+ $ProjectRoot = Resolve-Path $ProjectRoot
18
+ Write-Host "Project root: $ProjectRoot" -ForegroundColor Yellow
19
+
20
+ # Verify BMAD is installed
21
+ $bmadDir = Join-Path $ProjectRoot "_bmad\bmm\agents"
22
+ if (-not (Test-Path $bmadDir)) {
23
+ Write-Host "ERROR: BMAD not found at $bmadDir" -ForegroundColor Red
24
+ Write-Host "Make sure BMAD Method is installed in the target project." -ForegroundColor Red
25
+ Write-Host "Run: npx bmad-method install" -ForegroundColor Yellow
26
+ exit 1
27
+ }
28
+ Write-Host " BMAD found" -ForegroundColor Green
29
+
30
+ # Verify Python
31
+ $python = Get-Command python -ErrorAction SilentlyContinue
32
+ if (-not $python) {
33
+ Write-Host "ERROR: Python not found. Install Python 3.10+" -ForegroundColor Red
34
+ exit 1
35
+ }
36
+ Write-Host " Python found: $($python.Source)" -ForegroundColor Green
37
+
38
+ # 1. Copy agent definition
39
+ Write-Host ""
40
+ Write-Host "1. Installing agent definition..." -ForegroundColor Cyan
41
+ $agentSrc = Join-Path $PackageDir "agents\osint-investigator.md"
42
+ $agentDst = Join-Path $ProjectRoot "_bmad\bmm\agents\osint-investigator.md"
43
+ Copy-Item $agentSrc $agentDst -Force
44
+ Write-Host " -> $agentDst" -ForegroundColor Green
45
+
46
+ # 2. Copy skills
47
+ Write-Host ""
48
+ Write-Host "2. Installing skills..." -ForegroundColor Cyan
49
+
50
+ $skillsDir = Join-Path $ProjectRoot ".agents\skills"
51
+
52
+ # Skill 1: Agent entry point
53
+ $skill1Dst = Join-Path $skillsDir "bmad-osint-investigator"
54
+ New-Item -ItemType Directory -Force -Path $skill1Dst | Out-Null
55
+ Copy-Item (Join-Path $PackageDir "skills\bmad-osint-investigator\SKILL.md") $skill1Dst -Force
56
+ Write-Host " -> bmad-osint-investigator/SKILL.md" -ForegroundColor Green
57
+
58
+ # Skill 2: Investigation pipeline + scripts
59
+ $skill2Dst = Join-Path $skillsDir "bmad-osint-investigate"
60
+ New-Item -ItemType Directory -Force -Path $skill2Dst | Out-Null
61
+ Copy-Item (Join-Path $PackageDir "skills\bmad-osint-investigate\SKILL.md") $skill2Dst -Force
62
+
63
+ $osintDst = Join-Path $skill2Dst "osint"
64
+ New-Item -ItemType Directory -Force -Path "$osintDst\scripts", "$osintDst\references", "$osintDst\assets" | Out-Null
65
+
66
+ Copy-Item (Join-Path $PackageDir "skills\bmad-osint-investigate\osint\SKILL.md") $osintDst -Force
67
+ Copy-Item (Join-Path $PackageDir "skills\bmad-osint-investigate\osint\scripts\*") "$osintDst\scripts\" -Force
68
+ Copy-Item (Join-Path $PackageDir "skills\bmad-osint-investigate\osint\references\*") "$osintDst\references\" -Force
69
+ Copy-Item (Join-Path $PackageDir "skills\bmad-osint-investigate\osint\assets\*") "$osintDst\assets\" -Force
70
+ Write-Host " -> bmad-osint-investigate/ (full pipeline + scripts)" -ForegroundColor Green
71
+
72
+ # 3. Run diagnostic
73
+ Write-Host ""
74
+ Write-Host "3. Running diagnostic..." -ForegroundColor Cyan
75
+ $diagScript = Join-Path $osintDst "scripts\diagnose.py"
76
+ & python $diagScript
77
+
78
+ # 4. Summary
79
+ Write-Host ""
80
+ Write-Host "========================================" -ForegroundColor Cyan
81
+ Write-Host " Installation complete!" -ForegroundColor Green
82
+ Write-Host "========================================" -ForegroundColor Cyan
83
+ Write-Host ""
84
+ Write-Host "Next steps:" -ForegroundColor Yellow
85
+ Write-Host " 1. Configure API keys - see SETUP_KEYS.md"
86
+ Write-Host " 2. Invoke 'bmad-osint-investigator' skill in your AI agent"
87
+ Write-Host ""
@@ -0,0 +1,76 @@
1
+ #!/bin/bash
2
+ # OSINT Agent — Installation Script (macOS/Linux)
3
+ # Usage: ./install.sh [project_root]
4
+
5
+ set -euo pipefail
6
+
7
+ PROJECT_ROOT="${1:-.}"
8
+ PACKAGE_DIR="$(cd "$(dirname "$0")" && pwd)"
9
+
10
+ echo "========================================"
11
+ echo " OSINT Agent Installer for BMAD"
12
+ echo "========================================"
13
+ echo ""
14
+
15
+ # Resolve project root
16
+ PROJECT_ROOT="$(cd "$PROJECT_ROOT" && pwd)"
17
+ echo "Project root: $PROJECT_ROOT"
18
+
19
+ # Verify BMAD
20
+ BMAD_DIR="$PROJECT_ROOT/_bmad/bmm/agents"
21
+ if [ ! -d "$BMAD_DIR" ]; then
22
+ echo "ERROR: BMAD not found at $BMAD_DIR"
23
+ echo "Run: npx bmad-method install"
24
+ exit 1
25
+ fi
26
+ echo " ✅ BMAD found"
27
+
28
+ # Verify Python
29
+ if ! command -v python3 &>/dev/null; then
30
+ echo "ERROR: Python3 not found. Install Python 3.10+"
31
+ exit 1
32
+ fi
33
+ echo " ✅ Python found: $(python3 --version)"
34
+
35
+ # 1. Copy agent definition
36
+ echo ""
37
+ echo "1. Installing agent definition..."
38
+ cp "$PACKAGE_DIR/agents/osint-investigator.md" "$BMAD_DIR/"
39
+ echo " → osint-investigator.md"
40
+
41
+ # 2. Copy skills
42
+ echo ""
43
+ echo "2. Installing skills..."
44
+ SKILLS_DIR="$PROJECT_ROOT/.agents/skills"
45
+
46
+ mkdir -p "$SKILLS_DIR/bmad-osint-investigator"
47
+ cp "$PACKAGE_DIR/skills/bmad-osint-investigator/SKILL.md" "$SKILLS_DIR/bmad-osint-investigator/"
48
+ echo " → bmad-osint-investigator/"
49
+
50
+ mkdir -p "$SKILLS_DIR/bmad-osint-investigate/osint/scripts"
51
+ mkdir -p "$SKILLS_DIR/bmad-osint-investigate/osint/references"
52
+ mkdir -p "$SKILLS_DIR/bmad-osint-investigate/osint/assets"
53
+ cp "$PACKAGE_DIR/skills/bmad-osint-investigate/SKILL.md" "$SKILLS_DIR/bmad-osint-investigate/"
54
+ cp "$PACKAGE_DIR/skills/bmad-osint-investigate/osint/SKILL.md" "$SKILLS_DIR/bmad-osint-investigate/osint/"
55
+ cp "$PACKAGE_DIR/skills/bmad-osint-investigate/osint/scripts/"*.py "$SKILLS_DIR/bmad-osint-investigate/osint/scripts/"
56
+ cp "$PACKAGE_DIR/skills/bmad-osint-investigate/osint/references/"* "$SKILLS_DIR/bmad-osint-investigate/osint/references/"
57
+ cp "$PACKAGE_DIR/skills/bmad-osint-investigate/osint/assets/"* "$SKILLS_DIR/bmad-osint-investigate/osint/assets/"
58
+ echo " → bmad-osint-investigate/ (full pipeline + scripts)"
59
+
60
+ # 3. Make scripts executable
61
+ chmod +x "$SKILLS_DIR/bmad-osint-investigate/osint/scripts/"*.py
62
+
63
+ # 4. Run diagnostic
64
+ echo ""
65
+ echo "3. Running diagnostic..."
66
+ python3 "$SKILLS_DIR/bmad-osint-investigate/osint/scripts/diagnose.py"
67
+
68
+ # 5. Summary
69
+ echo ""
70
+ echo "========================================"
71
+ echo " ✅ Installation complete!"
72
+ echo "========================================"
73
+ echo ""
74
+ echo "Next steps:"
75
+ echo " 1. Configure API keys - see SETUP_KEYS.md"
76
+ echo " 2. Invoke 'bmad-osint-investigator' skill in your AI agent"
@@ -0,0 +1,147 @@
1
+ ---
2
+ name: bmad-osint-investigate
3
+ description: "Run the full OSINT investigation pipeline on a person or company. From a name or handle to a scored dossier with psychoprofile, career map, and confidence grades. Google dorks, French registries, enrichment databases, 55+ Apify actors, 7 search APIs."
4
+ ---
5
+
6
+ # OSINT Investigation Skill
7
+
8
+ This skill executes a systematic OSINT intelligence gathering pipeline on an individual or company.
9
+
10
+ ## Activation Instructions
11
+
12
+ <investigation-activation CRITICAL="TRUE">
13
+
14
+ ### Step 1: Load the Full Pipeline
15
+ 1. READ the complete OSINT pipeline file at: `{skill-dir}/osint/SKILL.md`
16
+ 2. READ the enrichment databases reference: `{skill-dir}/osint/references/enrichment-databases-fr.md`
17
+ 3. FOLLOW every phase precisely as documented
18
+
19
+ ### Step 2: Get Target Information
20
+ Ask the user for:
21
+ - **Target name** or handle/URL
22
+ - **Type**: Personne physique or Personne morale
23
+ - **Context** (optional): company, city, industry, any known details
24
+ - **Scope**: Full investigation (Phase 0→6) or specific phase only
25
+ - **Budget limit**: Default ≀$0.50, ask for permission above that
26
+
27
+ ### Step 3: Execute the Pipeline
28
+ Follow ALL phases from the OSINT pipeline:
29
+
30
+ **Phase 0**: Tooling Self-Check
31
+ - Run `python {skill-dir}/osint/scripts/diagnose.py`
32
+ - Report available tools to user
33
+
34
+ **Phase 1**: Seed Collection (API search)
35
+ - Run parallel search across all available engines
36
+ - Use `python {skill-dir}/osint/scripts/volley.py search "Name" "context"`
37
+ - Merge results with `python {skill-dir}/osint/scripts/volley.py merge <outdir>`
38
+
39
+ **Phase 1.3**: Google Dorks (FREE — always do this)
40
+ - Search for documents: `"Name" filetype:pdf`, `filetype:pptx`, `filetype:doc`
41
+ - Search for phone: `"Name" ("06" OR "07" OR "+33 6" OR "+33 7")`
42
+ - Search for CV: `"Name" (CV OR resume OR curriculum)`
43
+ - Search for statuts: `"Name" "demeurant" site:pappers.fr`
44
+ - Search for presentations: `"Name" filetype:pptx OR filetype:ppt`
45
+ - Use the browser tool to run these Google searches directly
46
+ - Refer to `{skill-dir}/osint/references/enrichment-databases-fr.md` for all dork templates
47
+
48
+ **Phase 1.5**: Internal Intelligence
49
+ - Check Telegram history, email, vault contacts BEFORE going external
50
+
51
+ **Phase 1.7**: French Business Registries (FREE — always do this for FR targets)
52
+ - **Pappers.fr** → SIREN/SIRET, dirigeants, statuts PDF (contain personal addresses!)
53
+ - **Societe.com** → Company fiches, dirigeants, CA
54
+ - **Datalegal.fr** → ALL companies where person is a dirigeant
55
+ - **BODACC** → Official announcements (creation, modification, radiation)
56
+ - **INPI** → Trademarks and patents filed by the person
57
+ - Scrape these pages with: `python {skill-dir}/osint/scripts/jina.py read <url>`
58
+
59
+ **Phase 2**: Platform Extraction
60
+ - Extract data from LinkedIn, Instagram, Facebook, TikTok, YouTube
61
+ - Use `python {skill-dir}/osint/scripts/apify.py linkedin <url>` or `instagram <handle>`
62
+ - Use `python {skill-dir}/osint/scripts/apify.py run <actor_id> '<json>'` for 55+ Apify actors
63
+ - Refer to `{skill-dir}/osint/references/platforms.md` for platform-specific guide
64
+ - Refer to `{skill-dir}/osint/references/tools.md` for full actor catalog
65
+
66
+ **Phase 2.5**: Contact Enrichment (for phone numbers and emails)
67
+ - **RocketReach** (rocketreach.co) — Search for target, check visible data (partial phone/email)
68
+ - **ContactOut** (contactout.com) — Check if profile exists with data preview
69
+ - **Kaspr** (kaspr.io) — Best for French mobile numbers via LinkedIn
70
+ - **Apollo.io** — 50 free credits/month, great for B2B enrichment
71
+ - **Hunter.io** — Email patterns for companies
72
+ - Use browser tool to visit these sites and extract visible information
73
+ - Refer to `{skill-dir}/osint/references/enrichment-databases-fr.md` for full list
74
+
75
+ **Phase 3**: Cross-Reference & Confidence Scoring
76
+ - Build fact table, cross-check key facts, resolve contradictions
77
+ - Assign confidence grades: A (3+ sources), B (2 sources), C (1 source), D (unverified)
78
+
79
+ **Phase 4**: Psychoprofile
80
+ - Build MBTI/Big Five analysis from content
81
+ - Refer to `{skill-dir}/osint/references/psychoprofile.md` for methodology
82
+ - Refer to `{skill-dir}/osint/references/content-extraction.md` for YouTube/podcast/blog extraction
83
+
84
+ **Phase 5**: Completeness Evaluation
85
+ - 9 mandatory checks + Depth Score 1-10
86
+ - Gap analysis and stopping criteria
87
+
88
+ **Phase 6**: Dossier Output
89
+ - For **personnes physiques**: Save to `{project-root}/recherches/personnes-physiques/<nom-prenom>.md`
90
+ - For **personnes morales**: Save to `{project-root}/recherches/personnes-morales/<nom-societe>.md`
91
+
92
+ ### Step 4: Research Escalation
93
+ Always escalate from cheap to expensive:
94
+ - **Level 0** (FREE): Google dorks, Pappers, Societe.com, BODACC, INPI, Datalegal
95
+ - **Level 0.5** (FREE): RocketReach (5/mois), Kaspr (gratuit), Apollo (50/mois), ContactOut
96
+ - **Level 1** (~$0.01): Perplexity Sonar, Tavily, Exa, Jina search
97
+ - **Level 2** (~$0.01): Jina read, Parallel extract
98
+ - **Level 3** (~$0.01-0.10): Apify scrapers, Bright Data
99
+ - **Level 4** (~$0.05-0.50): Perplexity Deep, Exa Deep, Jina Deep
100
+
101
+ ### Available Scripts (Python — stdlib only, zero dependencies)
102
+ All scripts in `{skill-dir}/osint/scripts/`, run with `python <script>`:
103
+
104
+ | Script | Usage |
105
+ |--------|-------|
106
+ | `diagnose.py` | Self-check of all available tools and API keys |
107
+ | `perplexity.py` | `search <q>`, `sonar <q>`, `deep <q>` |
108
+ | `tavily.py` | `search <q>`, `extract <url>`, `deep <q>` |
109
+ | `exa.py` | `search <q>`, `company <name>`, `people <name>`, `crawl <url>` |
110
+ | `jina.py` | `read <url>`, `search <query>`, `deepsearch <q>` |
111
+ | `parallel.py` | `search <q>`, `extract <url>`, `task <q>` |
112
+ | `apify.py` | `run <actor> <json>`, `linkedin <url>`, `instagram <handle>`, `results`, `store-search` |
113
+ | `brightdata.py` | `scrape <url>`, `search <q>`, `search-yandex <q>` |
114
+ | `volley.py` | `search "Name" "context"` (parallel) / `merge <outdir>` (dedup) |
115
+ | `mcp-client.py` | Lightweight MCP client for Bright Data |
116
+
117
+ ### References
118
+ | File | Content |
119
+ |------|---------|
120
+ | `enrichment-databases-fr.md` | đŸ‡«đŸ‡· French registries, enrichment tools, Google dork templates |
121
+ | `platforms.md` | Social media extraction guides |
122
+ | `tools.md` | 55+ Apify actor catalog |
123
+ | `psychoprofile.md` | MBTI/Big Five methodology |
124
+ | `content-extraction.md` | YouTube/podcast/blog extraction |
125
+
126
+ ### Environment Variables Required
127
+ ```
128
+ JINA_API_KEY — Jina reader/search (recommended first)
129
+ APIFY_API_TOKEN — Apify scraping (55+ actors)
130
+ PERPLEXITY_API_KEY — Perplexity Sonar
131
+ TAVILY_API_KEY — Tavily search
132
+ EXA_API_KEY — Exa AI
133
+ PARALLEL_API_KEY — Parallel AI
134
+ BRIGHTDATA_MCP_URL — Bright Data MCP
135
+ ```
136
+
137
+ </investigation-activation>
138
+
139
+ ## Rules
140
+ - ALWAYS run diagnose.py first to know what tools are available
141
+ - ALWAYS run Google dorks and French registries (Pappers, Societe.com) — they are FREE
142
+ - ALWAYS check enrichment databases (RocketReach, ContactOut) for phone numbers
143
+ - Spend ≀$0.50 without asking — ASK user permission above that
144
+ - Assign confidence grades to EVERY fact (A/B/C/D)
145
+ - Never fabricate data — only report verified findings
146
+ - Escalate from free→paid, fast→deep
147
+ - Save dossiers to `{project-root}/recherches/personnes-physiques/` or `personnes-morales/`