bmad-plus 0.12.1 → 0.12.2

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 (156) hide show
  1. package/CHANGELOG.md +612 -580
  2. package/README.md +90 -115
  3. package/osint-agent-package/agents/osint-investigator.md +12 -0
  4. package/osint-agent-package/skills/bmad-osint-investigate/osint/SKILL.md +491 -482
  5. package/osint-agent-package/skills/bmad-osint-investigate/osint/assets/dossier-template.md +126 -126
  6. package/osint-agent-package/skills/bmad-osint-investigate/osint/assets/lawful-basis-record.md +48 -48
  7. package/osint-agent-package/skills/bmad-osint-investigate/osint/references/content-extraction.md +100 -100
  8. package/osint-agent-package/skills/bmad-osint-investigate/osint/references/gdpr-osint.md +48 -48
  9. package/osint-agent-package/skills/bmad-osint-investigate/osint/references/platforms.md +130 -130
  10. package/osint-agent-package/skills/bmad-osint-investigate/osint/references/psychoprofile.md +69 -69
  11. package/osint-agent-package/skills/bmad-osint-investigate/osint/references/tools.md +281 -281
  12. package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/mcp-client.py +136 -136
  13. package/package.json +104 -91
  14. package/readme-international/README.de.md +596 -594
  15. package/readme-international/README.es.md +613 -611
  16. package/readme-international/README.fr.md +611 -609
  17. package/src/bmad-plus/agents/agent-shadow/SKILL.md +18 -0
  18. package/src/bmad-plus/data/role-triggers.yaml +52 -0
  19. package/src/bmad-plus/module.yaml +283 -283
  20. package/src/bmad-plus/packs/pack-animated/animated-website-agent.md +325 -325
  21. package/src/bmad-plus/packs/pack-animated/templates/animated-website-workflow.md +55 -55
  22. package/src/bmad-plus/packs/pack-backup/backup-agent.md +71 -71
  23. package/src/bmad-plus/packs/pack-backup/templates/backup-workflow.md +51 -51
  24. package/src/bmad-plus/packs/pack-dev-studio/README.md +162 -162
  25. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/analyst-agent.md +73 -73
  26. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/document-project.md +61 -61
  27. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/domain-research.md +95 -95
  28. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/market-research.md +95 -95
  29. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/prfaq.md +134 -134
  30. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/product-brief.md +80 -80
  31. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/tech-writer-agent.md +73 -73
  32. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/technical-research.md +95 -95
  33. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/architect-agent.md +73 -73
  34. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/create-architecture.md +73 -73
  35. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/create-epics-stories.md +92 -92
  36. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/generate-project-context.md +80 -80
  37. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/implementation-readiness.md +90 -90
  38. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-01-init.md +153 -153
  39. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-01b-continue.md +173 -173
  40. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-02-context.md +224 -224
  41. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-03-starter.md +329 -329
  42. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-04-decisions.md +318 -318
  43. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-05-patterns.md +359 -359
  44. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-06-structure.md +379 -379
  45. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-07-validation.md +361 -361
  46. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-08-complete.md +81 -81
  47. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/checkpoint-preview.md +67 -67
  48. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/code-review-steps/step-01-gather-context.md +85 -85
  49. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/code-review-steps/step-02-review.md +35 -35
  50. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/code-review-steps/step-03-triage.md +49 -49
  51. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/code-review-steps/step-04-present.md +131 -131
  52. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/code-review.md +89 -89
  53. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/correct-course.md +300 -300
  54. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/create-story.md +428 -428
  55. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/dev-agent.md +73 -73
  56. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/dev-story-checklist.md +80 -80
  57. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/dev-story.md +484 -484
  58. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/investigate.md +193 -193
  59. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/qa-e2e-tests.md +175 -175
  60. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/quick-dev.md +110 -110
  61. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/retrospective.md +1511 -1511
  62. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/sprint-planning.md +298 -298
  63. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/sprint-status.md +296 -296
  64. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/create-prd.md +29 -29
  65. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/create-ux-design.md +74 -74
  66. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/edit-prd.md +29 -29
  67. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/pm-agent.md +73 -73
  68. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/prd.md +89 -89
  69. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/ux-designer-agent.md +73 -73
  70. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/validate-prd.md +29 -29
  71. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/advanced-elicitation.md +141 -141
  72. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/adversarial-review.md +37 -37
  73. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/bmad-help.md +75 -75
  74. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/brainstorming.md +6 -6
  75. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/customize.md +110 -110
  76. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/distillator.md +176 -176
  77. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/edge-case-hunter.md +67 -67
  78. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/editorial-review-prose.md +86 -86
  79. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/editorial-review-structure.md +179 -179
  80. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/index-docs.md +66 -66
  81. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/party-mode.md +127 -127
  82. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/shard-doc.md +105 -105
  83. package/src/bmad-plus/packs/pack-dev-studio/dev-studio-orchestrator.md +120 -120
  84. package/src/bmad-plus/packs/pack-dev-studio/shared/architecture-decision-template.md +12 -12
  85. package/src/bmad-plus/packs/pack-dev-studio/shared/bwml-spec.md +328 -328
  86. package/src/bmad-plus/packs/pack-dev-studio/shared/module-help.csv +32 -32
  87. package/src/bmad-plus/packs/pack-dev-studio/upstream-sync.yaml +81 -81
  88. package/src/bmad-plus/packs/pack-seo/SKILL.md +171 -171
  89. package/src/bmad-plus/packs/pack-seo/checklist.md +140 -140
  90. package/src/bmad-plus/packs/pack-seo/pagespeed-playbook.md +320 -320
  91. package/src/bmad-plus/packs/pack-seo/ref/audit-schema.json +187 -187
  92. package/src/bmad-plus/packs/pack-seo/ref/cwv-thresholds.md +87 -87
  93. package/src/bmad-plus/packs/pack-seo/ref/eeat-criteria.md +123 -123
  94. package/src/bmad-plus/packs/pack-seo/ref/geo-signals.md +167 -167
  95. package/src/bmad-plus/packs/pack-seo/ref/hreflang-rules.md +153 -153
  96. package/src/bmad-plus/packs/pack-seo/ref/quality-gates.md +133 -133
  97. package/src/bmad-plus/packs/pack-seo/ref/schema-catalog.md +91 -91
  98. package/src/bmad-plus/packs/pack-seo/ref/schema-templates.json +356 -356
  99. package/src/bmad-plus/packs/pack-seo/requirements.txt +17 -0
  100. package/src/bmad-plus/packs/pack-seo/scripts/seo_apis.py +456 -0
  101. package/src/bmad-plus/packs/pack-seo/scripts/seo_crawl.py +359 -0
  102. package/src/bmad-plus/packs/pack-seo/scripts/seo_fetch.py +304 -0
  103. package/src/bmad-plus/packs/pack-seo/scripts/seo_parse.py +255 -0
  104. package/src/bmad-plus/packs/pack-seo/scripts/seo_report.py +410 -0
  105. package/src/bmad-plus/packs/pack-seo/scripts/seo_screenshot.py +202 -0
  106. package/src/bmad-plus/packs/pack-seo/seo-chief.md +294 -294
  107. package/src/bmad-plus/packs/pack-seo/seo-judge.md +241 -241
  108. package/src/bmad-plus/packs/pack-seo/seo-scout.md +171 -171
  109. package/src/bmad-plus/packs/pack-seo/templates/seo-audit-workflow.md +241 -241
  110. package/src/bmad-plus/packs/pack-shield/README.md +6 -6
  111. package/src/bmad-plus/packs/pack-shield/SKILL.md +2 -2
  112. package/src/bmad-plus/packs/pack-shield/categories/accessibility-esg/csrd-agent.md +11 -11
  113. package/src/bmad-plus/packs/pack-shield/categories/accessibility-esg/section508-agent.md +11 -11
  114. package/src/bmad-plus/packs/pack-shield/categories/accessibility-esg/wcag-agent.md +11 -11
  115. package/src/bmad-plus/packs/pack-shield/categories/ai-governance/eu-ai-act-agent.md +11 -11
  116. package/src/bmad-plus/packs/pack-shield/categories/ai-governance/iso42001-agent.md +11 -11
  117. package/src/bmad-plus/packs/pack-shield/categories/ai-governance/nist-ai-rmf-agent.md +11 -11
  118. package/src/bmad-plus/packs/pack-shield/categories/cybersecurity/cis-controls-agent.md +11 -11
  119. package/src/bmad-plus/packs/pack-shield/categories/cybersecurity/ism-agent.md +11 -11
  120. package/src/bmad-plus/packs/pack-shield/categories/cybersecurity/iso27001-agent.md +11 -11
  121. package/src/bmad-plus/packs/pack-shield/categories/cybersecurity/nis2-agent.md +11 -11
  122. package/src/bmad-plus/packs/pack-shield/categories/cybersecurity/nist-800-53-agent.md +11 -11
  123. package/src/bmad-plus/packs/pack-shield/categories/cybersecurity/nist-csf-agent.md +11 -11
  124. package/src/bmad-plus/packs/pack-shield/categories/defense-export/cmmc-agent.md +11 -11
  125. package/src/bmad-plus/packs/pack-shield/categories/defense-export/ear-agent.md +11 -11
  126. package/src/bmad-plus/packs/pack-shield/categories/defense-export/itar-agent.md +11 -11
  127. package/src/bmad-plus/packs/pack-shield/categories/defense-export/tsa-agent.md +11 -11
  128. package/src/bmad-plus/packs/pack-shield/categories/industry-compliance/dora-agent.md +11 -11
  129. package/src/bmad-plus/packs/pack-shield/categories/industry-compliance/fedramp-agent.md +11 -11
  130. package/src/bmad-plus/packs/pack-shield/categories/industry-compliance/hipaa-agent.md +11 -11
  131. package/src/bmad-plus/packs/pack-shield/categories/industry-compliance/pci-dss-agent.md +11 -11
  132. package/src/bmad-plus/packs/pack-shield/categories/industry-compliance/soc2-agent.md +11 -11
  133. package/src/bmad-plus/packs/pack-shield/categories/industry-compliance/swift-csp-agent.md +11 -11
  134. package/src/bmad-plus/packs/pack-shield/shield-orchestrator.md +1 -1
  135. package/tools/build/check-counts.js +628 -0
  136. package/tools/build/generated-adapters/.codex/AGENTS.md +1 -1
  137. package/tools/build/generated-adapters/.cursor/rules/bmad-plus.mdc +1 -1
  138. package/tools/build/generated-adapters/.opencode/AGENTS.md +1 -1
  139. package/tools/build/generated-adapters/AGENTS.md +1 -1
  140. package/tools/build/generated-adapters/CLAUDE.md +1 -1
  141. package/tools/build/generated-adapters/CONVENTIONS.md +1 -1
  142. package/tools/build/generated-adapters/GEMINI.md +1 -1
  143. package/tools/cli/commands/autoconfig.js +470 -470
  144. package/tools/cli/commands/doctor.js +233 -233
  145. package/tools/cli/commands/install.js +598 -501
  146. package/tools/cli/commands/memory-journal-cmd.js +311 -311
  147. package/tools/cli/commands/memory.js +195 -195
  148. package/tools/cli/commands/scan.js +348 -348
  149. package/tools/cli/commands/uninstall.js +101 -101
  150. package/tools/cli/commands/update.js +134 -134
  151. package/tools/cli/i18n.js +845 -845
  152. package/tools/cli/lib/README-memory-journal.md +125 -125
  153. package/tools/cli/lib/ide-config.js +267 -259
  154. package/tools/cli/lib/python-provision.js +508 -508
  155. package/tools/cli/lib/stack-detect.js +102 -102
  156. package/tools/cli/lib/validate.js +50 -50
@@ -1,126 +1,126 @@
1
- 🔍 **OSINT: {FULL_NAME}**
2
- *{one_line_summary}*
3
-
4
- ---
5
-
6
- **⚖️ governance / lawful basis** *(Phase −1 gate — required before this dossier exists)*
7
- - controller: {controller_name}
8
- - lawful basis (Art. 6): {basis} {legitimate_interest_balancing_ref_if_LI}
9
- - special-category condition (Art. 9, if psychoprofile): {art9_condition_or_NA}
10
- - purpose: {specific_purpose}
11
- - retention: {retention_period} · DSAR/erasure contact: {dsar_contact}
12
- - recorded: {date} · see `assets/lawful-basis-record.md`
13
-
14
- ---
15
-
16
- **контакты и соцсети**
17
- - telegram: {handle} {status}
18
- - linkedin: {url} {status}
19
- - instagram: {handle} {status}
20
- - facebook: {url} {status}
21
- - email: {email} {status}
22
- - телефон: {phone} {status}
23
- - другое: {any_other}
24
-
25
- ---
26
-
27
- **биография**
28
-
29
- - дата рождения: {dob_only_if_confirmed_A_or_B}
30
- - возраст: {age}
31
- - место рождения: {birthplace}
32
- - образование: {education}
33
-
34
- **карьера:**
35
- - **{year}** — {role}, {company} ({age_at_time})
36
- - **{year}** — {role}, {company}
37
- - ...
38
- - **сейчас** — {current_role}, {current_company}
39
-
40
- паттерн карьеры: {career_pattern_description}
41
-
42
- ---
43
-
44
- **текущая ситуация**
45
- - роль: {current_role}
46
- - компания: {current_company} — {company_description}
47
- - локация: {current_location}
48
-
49
- ---
50
-
51
- **из переписки** 🔒
52
- *секция на основе Telegram/email — не для внешнего использования*
53
-
54
- - характер общения: {formal_informal_emoji_patterns}
55
- - темы: {what_they_discuss_ask_about}
56
- - стиль: {response_speed_active_hours_language}
57
- - контекст отношений: {cold_warm_hot_business_personal}
58
- - упомянутые люди: {colleagues_partners_from_conversations}
59
- - {any_deal_terms_pricing_discussed}
60
-
61
- ---
62
-
63
- **психопрофиль**
64
-
65
- **MBTI: {type} ({confidence})**
66
- - E/I: {assessment} — {evidence}
67
- - S/N: {assessment} — {evidence}
68
- - T/F: {assessment} — {evidence}
69
- - J/P: {assessment} — {evidence}
70
-
71
- **стиль коммуникации:**
72
- - голос: {voice_description}
73
- - ритм: {rhythm_description}
74
- - эмодзи: {emoji_pattern}
75
- - формальный vs неформальный: {delta_between_linkedin_and_telegram}
76
- - ключевые маркеры: {markers}
77
-
78
- **ценности (по действиям):**
79
- - {value_1}
80
- - {value_2}
81
- - {value_3}
82
-
83
- ---
84
-
85
- **личное**
86
- - семья: {family_only_confirmed}
87
- - питомцы: {pets_only_confirmed}
88
- - увлечения: {hobbies}
89
- - стиль жизни: {lifestyle}
90
-
91
- ---
92
-
93
- **наблюдения**
94
- - {observation_1_contradictions_or_patterns}
95
- - {observation_2}
96
- - {observation_3}
97
-
98
- ---
99
-
100
- **карта достоверности**
101
- - A (подтверждено, 2+ источника): {list_of_A_facts}
102
- - B (вероятно, 1 надёжный источник): {list_of_B_facts}
103
- - C (выведено, косвенные данные): {list_of_C_facts}
104
- - D (не подтверждено): {list_of_D_facts}
105
-
106
- ---
107
-
108
- **точки входа**
109
- - {approach_1_shared_connections_or_topics}
110
- - {approach_2}
111
- - {approach_3}
112
-
113
- ---
114
-
115
- **пробелы**
116
- - {gap_1_what_not_found}
117
- - {gap_2}
118
-
119
- ---
120
-
121
- **метрики**
122
- - depth score: {score}/10
123
- - coverage: {passed}/{total} checks
124
- - источников: {source_count} ({source_types_list})
125
- - внутренняя разведка: {yes_no_what_checked}
126
- - потрачено: ${total_cost}
1
+ 🔍 **OSINT: {FULL_NAME}**
2
+ *{one_line_summary}*
3
+
4
+ ---
5
+
6
+ **⚖️ governance / lawful basis** *(Phase −1 gate — required before this dossier exists)*
7
+ - controller: {controller_name}
8
+ - lawful basis (Art. 6): {basis} {legitimate_interest_balancing_ref_if_LI}
9
+ - special-category condition (Art. 9, if psychoprofile): {art9_condition_or_NA}
10
+ - purpose: {specific_purpose}
11
+ - retention: {retention_period} · DSAR/erasure contact: {dsar_contact}
12
+ - recorded: {date} · see `assets/lawful-basis-record.md`
13
+
14
+ ---
15
+
16
+ **контакты и соцсети**
17
+ - telegram: {handle} {status}
18
+ - linkedin: {url} {status}
19
+ - instagram: {handle} {status}
20
+ - facebook: {url} {status}
21
+ - email: {email} {status}
22
+ - телефон: {phone} {status}
23
+ - другое: {any_other}
24
+
25
+ ---
26
+
27
+ **биография**
28
+
29
+ - дата рождения: {dob_only_if_confirmed_A_or_B}
30
+ - возраст: {age}
31
+ - место рождения: {birthplace}
32
+ - образование: {education}
33
+
34
+ **карьера:**
35
+ - **{year}** — {role}, {company} ({age_at_time})
36
+ - **{year}** — {role}, {company}
37
+ - ...
38
+ - **сейчас** — {current_role}, {current_company}
39
+
40
+ паттерн карьеры: {career_pattern_description}
41
+
42
+ ---
43
+
44
+ **текущая ситуация**
45
+ - роль: {current_role}
46
+ - компания: {current_company} — {company_description}
47
+ - локация: {current_location}
48
+
49
+ ---
50
+
51
+ **из переписки** 🔒
52
+ *секция на основе Telegram/email — не для внешнего использования*
53
+
54
+ - характер общения: {formal_informal_emoji_patterns}
55
+ - темы: {what_they_discuss_ask_about}
56
+ - стиль: {response_speed_active_hours_language}
57
+ - контекст отношений: {cold_warm_hot_business_personal}
58
+ - упомянутые люди: {colleagues_partners_from_conversations}
59
+ - {any_deal_terms_pricing_discussed}
60
+
61
+ ---
62
+
63
+ **психопрофиль**
64
+
65
+ **MBTI: {type} ({confidence})**
66
+ - E/I: {assessment} — {evidence}
67
+ - S/N: {assessment} — {evidence}
68
+ - T/F: {assessment} — {evidence}
69
+ - J/P: {assessment} — {evidence}
70
+
71
+ **стиль коммуникации:**
72
+ - голос: {voice_description}
73
+ - ритм: {rhythm_description}
74
+ - эмодзи: {emoji_pattern}
75
+ - формальный vs неформальный: {delta_between_linkedin_and_telegram}
76
+ - ключевые маркеры: {markers}
77
+
78
+ **ценности (по действиям):**
79
+ - {value_1}
80
+ - {value_2}
81
+ - {value_3}
82
+
83
+ ---
84
+
85
+ **личное**
86
+ - семья: {family_only_confirmed}
87
+ - питомцы: {pets_only_confirmed}
88
+ - увлечения: {hobbies}
89
+ - стиль жизни: {lifestyle}
90
+
91
+ ---
92
+
93
+ **наблюдения**
94
+ - {observation_1_contradictions_or_patterns}
95
+ - {observation_2}
96
+ - {observation_3}
97
+
98
+ ---
99
+
100
+ **карта достоверности**
101
+ - A (подтверждено, 2+ источника): {list_of_A_facts}
102
+ - B (вероятно, 1 надёжный источник): {list_of_B_facts}
103
+ - C (выведено, косвенные данные): {list_of_C_facts}
104
+ - D (не подтверждено): {list_of_D_facts}
105
+
106
+ ---
107
+
108
+ **точки входа**
109
+ - {approach_1_shared_connections_or_topics}
110
+ - {approach_2}
111
+ - {approach_3}
112
+
113
+ ---
114
+
115
+ **пробелы**
116
+ - {gap_1_what_not_found}
117
+ - {gap_2}
118
+
119
+ ---
120
+
121
+ **метрики**
122
+ - depth score: {score}/10
123
+ - coverage: {passed}/{total} checks
124
+ - источников: {source_count} ({source_types_list})
125
+ - внутренняя разведка: {yes_no_what_checked}
126
+ - потрачено: ${total_cost}
@@ -1,48 +1,48 @@
1
- # Lawful Basis Record — OSINT investigation (GDPR Phase −1 gate)
2
-
3
- Complete this BEFORE profiling a named natural person. It doubles as the ROPA
4
- (Record of Processing Activities) entry for this investigation. Governed by Shield (GRC).
5
-
6
- ## 1. Parties
7
- - **Controller:** {who decides why/how — org or person}
8
- - **Operator / analyst:** {who runs the investigation}
9
- - **Data subject:** {named person} — category: {public figure | employee | counterparty | other}
10
-
11
- ## 2. Purpose (purpose limitation — GDPR Art. 5(1)(b))
12
- - **Specific purpose:** {e.g. pre-contract due diligence on a supplier director; NOT "find everything"}
13
- - **Why OSINT is necessary & proportionate for this purpose:** {justification}
14
-
15
- ## 3. Lawful basis — GDPR Art. 6(1)
16
- Select ONE and justify:
17
- - [ ] (a) Consent — attach/reference the consent record
18
- - [ ] (b) Contract — necessary for a contract with the data subject
19
- - [ ] (c) Legal obligation — cite the obligation
20
- - [ ] (d) Vital interests
21
- - [ ] (e) Public task
22
- - [ ] (f) **Legitimate interest** — complete the 3-part balancing test below
23
-
24
- **Legitimate Interest Assessment (if (f)):**
25
- - Purpose test (is there a legitimate interest?): {…}
26
- - Necessity test (is OSINT necessary, or is there a less intrusive way?): {…}
27
- - Balancing test (do the person's rights/freedoms override?): {…}
28
-
29
- ## 4. Special-category data — GDPR Art. 9 (REQUIRED if building a psychoprofile)
30
- Inferring personality (MBTI/Big Five), health, political opinions, religion, sexual
31
- orientation, etc. is special-category processing. Select an Art. 9(2) condition:
32
- - [ ] (a) Explicit consent
33
- - [ ] (e) Data manifestly made public by the data subject (document how)
34
- - [ ] (f) Legal claims
35
- - [ ] other: {cite}
36
- - **If none applies → do NOT build the psychoprofile.** Keep the factual dossier only.
37
-
38
- ## 5. Data-subject rights & retention
39
- - **Retention period:** {e.g. 90 days after purpose fulfilled, then delete}
40
- - **DSAR / erasure contact:** {email/process to honor access, rectification, erasure, objection}
41
- - **Transparency:** how/whether the data subject is or will be informed (Art. 14), or the exemption relied on.
42
-
43
- ## 6. Sign-off
44
- - Basis confirmed by: {name} · date: {date}
45
- - Shield review (if enterprise/high-risk): {ref or N/A}
46
-
47
- > If sections 2–4 cannot be completed, the Phase −1 gate FAILS: decline the
48
- > named-person profiling and use the non-personal research paths instead.
1
+ # Lawful Basis Record — OSINT investigation (GDPR Phase −1 gate)
2
+
3
+ Complete this BEFORE profiling a named natural person. It doubles as the ROPA
4
+ (Record of Processing Activities) entry for this investigation. Governed by Shield (GRC).
5
+
6
+ ## 1. Parties
7
+ - **Controller:** {who decides why/how — org or person}
8
+ - **Operator / analyst:** {who runs the investigation}
9
+ - **Data subject:** {named person} — category: {public figure | employee | counterparty | other}
10
+
11
+ ## 2. Purpose (purpose limitation — GDPR Art. 5(1)(b))
12
+ - **Specific purpose:** {e.g. pre-contract due diligence on a supplier director; NOT "find everything"}
13
+ - **Why OSINT is necessary & proportionate for this purpose:** {justification}
14
+
15
+ ## 3. Lawful basis — GDPR Art. 6(1)
16
+ Select ONE and justify:
17
+ - [ ] (a) Consent — attach/reference the consent record
18
+ - [ ] (b) Contract — necessary for a contract with the data subject
19
+ - [ ] (c) Legal obligation — cite the obligation
20
+ - [ ] (d) Vital interests
21
+ - [ ] (e) Public task
22
+ - [ ] (f) **Legitimate interest** — complete the 3-part balancing test below
23
+
24
+ **Legitimate Interest Assessment (if (f)):**
25
+ - Purpose test (is there a legitimate interest?): {…}
26
+ - Necessity test (is OSINT necessary, or is there a less intrusive way?): {…}
27
+ - Balancing test (do the person's rights/freedoms override?): {…}
28
+
29
+ ## 4. Special-category data — GDPR Art. 9 (REQUIRED if building a psychoprofile)
30
+ Inferring personality (MBTI/Big Five), health, political opinions, religion, sexual
31
+ orientation, etc. is special-category processing. Select an Art. 9(2) condition:
32
+ - [ ] (a) Explicit consent
33
+ - [ ] (e) Data manifestly made public by the data subject (document how)
34
+ - [ ] (f) Legal claims
35
+ - [ ] other: {cite}
36
+ - **If none applies → do NOT build the psychoprofile.** Keep the factual dossier only.
37
+
38
+ ## 5. Data-subject rights & retention
39
+ - **Retention period:** {e.g. 90 days after purpose fulfilled, then delete}
40
+ - **DSAR / erasure contact:** {email/process to honor access, rectification, erasure, objection}
41
+ - **Transparency:** how/whether the data subject is or will be informed (Art. 14), or the exemption relied on.
42
+
43
+ ## 6. Sign-off
44
+ - Basis confirmed by: {name} · date: {date}
45
+ - Shield review (if enterprise/high-risk): {ref or N/A}
46
+
47
+ > If sections 2–4 cannot be completed, the Phase −1 gate FAILS: decline the
48
+ > named-person profiling and use the non-personal research paths instead.
@@ -1,100 +1,100 @@
1
- # Content Extraction Guide
2
-
3
- When you find a content platform (YouTube, podcast, blog, conference talks) -
4
- **extract everything immediately.** Don't just note the URL and move on.
5
-
6
- ## Principle
7
-
8
- Content platforms are the richest source for psychoprofile and real personality.
9
- LinkedIn is a resume. Instagram is a highlight reel. YouTube/podcasts are unfiltered.
10
-
11
- A person talking for 20 minutes on camera reveals more than 100 LinkedIn posts.
12
-
13
- ## YouTube
14
-
15
- ### Discovery
16
- ```bash
17
- # Search for channel
18
- web_search "site:youtube.com <Name> <context>"
19
- bash skills/osint/scripts/exa.sh search "<Name> youtube channel"
20
- ```
21
-
22
- ### Channel metadata
23
- ```bash
24
- # Fetch channel page - subscriber count, video count, about
25
- web_fetch "https://www.youtube.com/@<handle>"
26
- # Or channel page
27
- bash skills/osint/scripts/jina.sh read "https://www.youtube.com/@<handle>/about"
28
- ```
29
-
30
- ### Transcript extraction (CRITICAL)
31
- Pick 3-5 most viewed or most recent videos. Extract transcripts:
32
- ```bash
33
- # Fetch video page - title, description, comments
34
- web_fetch "https://www.youtube.com/watch?v=<id>"
35
- # Get auto-generated transcript via Jina
36
- bash skills/osint/scripts/jina.sh read "https://www.youtube.com/watch?v=<id>"
37
- ```
38
-
39
- If transcripts unavailable via fetch, try:
40
- ```bash
41
- bash skills/osint/scripts/brightdata.sh scrape "https://www.youtube.com/watch?v=<id>"
42
- ```
43
-
44
- ### What to extract from YouTube:
45
- - **Topics** - what they talk about = what they care about
46
- - **Speaking style** - formal/casual, speed, filler words, humor
47
- - **Vocabulary** - jargon level, code-switching between languages
48
- - **Self-presentation** - humble/confident/arrogant, claims vs evidence
49
- - **Recurring themes** - across videos, what keeps coming back
50
- - **Guest interactions** - how they treat guests, who they invite
51
- - **Comment section** - audience demographics, sentiment
52
- - **Upload frequency** - consistency = discipline trait
53
- - **Video titles** - clickbait vs informative = marketing approach
54
- - **Playlists** - how they organize knowledge = thinking structure
55
-
56
- ### Budget: 3-5 video transcripts via Jina = ~$0.02-0.05
57
-
58
- ## Podcasts / Audio Appearances
59
-
60
- Search for podcast appearances:
61
- ```bash
62
- web_search "<Name> podcast interview"
63
- bash skills/osint/scripts/exa.sh search "<Name> podcast episode guest"
64
- ```
65
-
66
- Podcast interviews are gold - the host asks personal questions.
67
- Look for: origin story, career pivots, failures mentioned, mentors named.
68
-
69
- ## Blog / Personal Website
70
-
71
- ```bash
72
- web_fetch "<personal-site>"
73
- bash skills/osint/scripts/jina.sh read "<blog-url>"
74
- # Crawl multiple pages
75
- bash skills/osint/scripts/exa.sh crawl "<blog-url>"
76
- ```
77
-
78
- Extract: writing style, topics, frequency, tone evolution over time.
79
-
80
- ## Conference Talks / Speaker Bios
81
-
82
- ```bash
83
- web_search "<Name> speaker conference talk"
84
- web_search "site:youtube.com <Name> conference keynote"
85
- ```
86
-
87
- Speaker bios at conferences are often more honest than LinkedIn -
88
- written for specific audience, include unique details.
89
-
90
- ## Rule: Immediate Deep Extraction
91
-
92
- When you discover ANY content platform during Phase 1-2:
93
-
94
- 1. **STOP** current task
95
- 2. **Extract** 3-5 pieces of content immediately
96
- 3. **Analyze** for psychoprofile signals
97
- 4. **Resume** original task with enriched data
98
-
99
- Do NOT bookmark for later. Later = never.
100
- The insight from 3 YouTube transcripts outweighs 10 LinkedIn connections.
1
+ # Content Extraction Guide
2
+
3
+ When you find a content platform (YouTube, podcast, blog, conference talks) -
4
+ **extract everything immediately.** Don't just note the URL and move on.
5
+
6
+ ## Principle
7
+
8
+ Content platforms are the richest source for psychoprofile and real personality.
9
+ LinkedIn is a resume. Instagram is a highlight reel. YouTube/podcasts are unfiltered.
10
+
11
+ A person talking for 20 minutes on camera reveals more than 100 LinkedIn posts.
12
+
13
+ ## YouTube
14
+
15
+ ### Discovery
16
+ ```bash
17
+ # Search for channel
18
+ web_search "site:youtube.com <Name> <context>"
19
+ bash skills/osint/scripts/exa.sh search "<Name> youtube channel"
20
+ ```
21
+
22
+ ### Channel metadata
23
+ ```bash
24
+ # Fetch channel page - subscriber count, video count, about
25
+ web_fetch "https://www.youtube.com/@<handle>"
26
+ # Or channel page
27
+ bash skills/osint/scripts/jina.sh read "https://www.youtube.com/@<handle>/about"
28
+ ```
29
+
30
+ ### Transcript extraction (CRITICAL)
31
+ Pick 3-5 most viewed or most recent videos. Extract transcripts:
32
+ ```bash
33
+ # Fetch video page - title, description, comments
34
+ web_fetch "https://www.youtube.com/watch?v=<id>"
35
+ # Get auto-generated transcript via Jina
36
+ bash skills/osint/scripts/jina.sh read "https://www.youtube.com/watch?v=<id>"
37
+ ```
38
+
39
+ If transcripts unavailable via fetch, try:
40
+ ```bash
41
+ bash skills/osint/scripts/brightdata.sh scrape "https://www.youtube.com/watch?v=<id>"
42
+ ```
43
+
44
+ ### What to extract from YouTube:
45
+ - **Topics** - what they talk about = what they care about
46
+ - **Speaking style** - formal/casual, speed, filler words, humor
47
+ - **Vocabulary** - jargon level, code-switching between languages
48
+ - **Self-presentation** - humble/confident/arrogant, claims vs evidence
49
+ - **Recurring themes** - across videos, what keeps coming back
50
+ - **Guest interactions** - how they treat guests, who they invite
51
+ - **Comment section** - audience demographics, sentiment
52
+ - **Upload frequency** - consistency = discipline trait
53
+ - **Video titles** - clickbait vs informative = marketing approach
54
+ - **Playlists** - how they organize knowledge = thinking structure
55
+
56
+ ### Budget: 3-5 video transcripts via Jina = ~$0.02-0.05
57
+
58
+ ## Podcasts / Audio Appearances
59
+
60
+ Search for podcast appearances:
61
+ ```bash
62
+ web_search "<Name> podcast interview"
63
+ bash skills/osint/scripts/exa.sh search "<Name> podcast episode guest"
64
+ ```
65
+
66
+ Podcast interviews are gold - the host asks personal questions.
67
+ Look for: origin story, career pivots, failures mentioned, mentors named.
68
+
69
+ ## Blog / Personal Website
70
+
71
+ ```bash
72
+ web_fetch "<personal-site>"
73
+ bash skills/osint/scripts/jina.sh read "<blog-url>"
74
+ # Crawl multiple pages
75
+ bash skills/osint/scripts/exa.sh crawl "<blog-url>"
76
+ ```
77
+
78
+ Extract: writing style, topics, frequency, tone evolution over time.
79
+
80
+ ## Conference Talks / Speaker Bios
81
+
82
+ ```bash
83
+ web_search "<Name> speaker conference talk"
84
+ web_search "site:youtube.com <Name> conference keynote"
85
+ ```
86
+
87
+ Speaker bios at conferences are often more honest than LinkedIn -
88
+ written for specific audience, include unique details.
89
+
90
+ ## Rule: Immediate Deep Extraction
91
+
92
+ When you discover ANY content platform during Phase 1-2:
93
+
94
+ 1. **STOP** current task
95
+ 2. **Extract** 3-5 pieces of content immediately
96
+ 3. **Analyze** for psychoprofile signals
97
+ 4. **Resume** original task with enriched data
98
+
99
+ Do NOT bookmark for later. Later = never.
100
+ The insight from 3 YouTube transcripts outweighs 10 LinkedIn connections.
@@ -1,48 +1,48 @@
1
- # GDPR & OSINT — governance for the investigate skill
2
-
3
- This pack performs OSINT on named individuals, including psychoprofiling. That is
4
- personal-data processing (GDPR + analogous laws such as UK GDPR, LGPD, CCPA/CPRA).
5
- BMAD+ **keeps** this capability and **governs** it — the Phase −1 lawful-basis gate
6
- in `SKILL.md` makes lawful use explicit and auditable rather than removing the pack.
7
- (Decision: keep + govern, 2026-07-02.)
8
-
9
- ## Why this matters
10
- - Profiling and evaluating personal aspects is regulated (GDPR Art. 4(4), Art. 22, Recital 71).
11
- - Inferring personality, health, political/religious views, or sexual orientation is
12
- **special-category** processing (Art. 9) — a higher bar than ordinary personal data.
13
- - "Publicly available" ≠ "no rules apply." Scraping public profiles is still processing;
14
- you still need a lawful basis and must respect purpose limitation and data-subject rights.
15
-
16
- ## The gate, in one line
17
- No lawful basis + specific purpose recorded (`assets/lawful-basis-record.md`) → no
18
- named-person profiling. Non-personal research (company/product/market, public entities)
19
- is unaffected.
20
-
21
- ## Legitimate interest (the common basis)
22
- When relying on Art. 6(1)(f), complete the 3-part LIA in the record:
23
- 1. **Purpose** — a real, specific legitimate interest (due diligence, fraud/security, journalism).
24
- 2. **Necessity** — OSINT is necessary and proportionate; no less-intrusive route.
25
- 3. **Balancing** — the person's rights/freedoms do not override; consider their reasonable
26
- expectations, the sensitivity of the data, and any special-category inference (which
27
- usually tips the balance and requires an Art. 9 condition instead).
28
-
29
- ## Special-category / psychoprofile
30
- Only build the psychoprofile (MBTI/Big Five, etc.) with a valid **Art. 9(2)** condition
31
- (typically explicit consent, or data manifestly made public by the subject). Otherwise
32
- keep the factual dossier and skip the personality inference.
33
-
34
- ## Data-subject rights & retention
35
- - Define a **retention period**; delete when the purpose is met.
36
- - Provide a **DSAR/erasure** path (access, rectification, erasure, objection).
37
- - Consider **transparency** (Art. 14) or a documented exemption.
38
-
39
- ## Prohibited / out of scope
40
- - No profiling without a recorded basis + purpose.
41
- - No use for unlawful discrimination, harassment, stalking, or unauthorized surveillance.
42
- - No special-category inference without an Art. 9 condition.
43
-
44
- ## Related BMAD+ assets
45
- - `SKILL.md` → Phase −1 gate.
46
- - `assets/lawful-basis-record.md` → gate record + ROPA entry.
47
- - Shield (GRC) pack → `gdpr-agent`, `legitimate-interest`, `dpia-sentinel`, `privacy-notice-gen`
48
- for DPIA, LIA, ROPA, and privacy-notice generation at scale.
1
+ # GDPR & OSINT — governance for the investigate skill
2
+
3
+ This pack performs OSINT on named individuals, including psychoprofiling. That is
4
+ personal-data processing (GDPR + analogous laws such as UK GDPR, LGPD, CCPA/CPRA).
5
+ BMAD+ **keeps** this capability and **governs** it — the Phase −1 lawful-basis gate
6
+ in `SKILL.md` makes lawful use explicit and auditable rather than removing the pack.
7
+ (Decision: keep + govern, 2026-07-02.)
8
+
9
+ ## Why this matters
10
+ - Profiling and evaluating personal aspects is regulated (GDPR Art. 4(4), Art. 22, Recital 71).
11
+ - Inferring personality, health, political/religious views, or sexual orientation is
12
+ **special-category** processing (Art. 9) — a higher bar than ordinary personal data.
13
+ - "Publicly available" ≠ "no rules apply." Scraping public profiles is still processing;
14
+ you still need a lawful basis and must respect purpose limitation and data-subject rights.
15
+
16
+ ## The gate, in one line
17
+ No lawful basis + specific purpose recorded (`assets/lawful-basis-record.md`) → no
18
+ named-person profiling. Non-personal research (company/product/market, public entities)
19
+ is unaffected.
20
+
21
+ ## Legitimate interest (the common basis)
22
+ When relying on Art. 6(1)(f), complete the 3-part LIA in the record:
23
+ 1. **Purpose** — a real, specific legitimate interest (due diligence, fraud/security, journalism).
24
+ 2. **Necessity** — OSINT is necessary and proportionate; no less-intrusive route.
25
+ 3. **Balancing** — the person's rights/freedoms do not override; consider their reasonable
26
+ expectations, the sensitivity of the data, and any special-category inference (which
27
+ usually tips the balance and requires an Art. 9 condition instead).
28
+
29
+ ## Special-category / psychoprofile
30
+ Only build the psychoprofile (MBTI/Big Five, etc.) with a valid **Art. 9(2)** condition
31
+ (typically explicit consent, or data manifestly made public by the subject). Otherwise
32
+ keep the factual dossier and skip the personality inference.
33
+
34
+ ## Data-subject rights & retention
35
+ - Define a **retention period**; delete when the purpose is met.
36
+ - Provide a **DSAR/erasure** path (access, rectification, erasure, objection).
37
+ - Consider **transparency** (Art. 14) or a documented exemption.
38
+
39
+ ## Prohibited / out of scope
40
+ - No profiling without a recorded basis + purpose.
41
+ - No use for unlawful discrimination, harassment, stalking, or unauthorized surveillance.
42
+ - No special-category inference without an Art. 9 condition.
43
+
44
+ ## Related BMAD+ assets
45
+ - `SKILL.md` → Phase −1 gate.
46
+ - `assets/lawful-basis-record.md` → gate record + ROPA entry.
47
+ - Shield (GRC) pack → `gdpr-agent`, `legitimate-interest`, `dpia-sentinel`, `privacy-notice-gen`
48
+ for DPIA, LIA, ROPA, and privacy-notice generation at scale.