bmad-plus 0.12.1 → 0.13.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 (176) hide show
  1. package/CHANGELOG.md +637 -580
  2. package/README.md +123 -120
  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 +106 -91
  14. package/readme-international/README.de.md +625 -594
  15. package/readme-international/README.es.md +642 -611
  16. package/readme-international/README.fr.md +640 -609
  17. package/src/bmad-plus/agents/agent-orchestrator/SKILL.md +2 -0
  18. package/src/bmad-plus/agents/agent-shadow/SKILL.md +18 -0
  19. package/src/bmad-plus/data/role-triggers.yaml +52 -0
  20. package/src/bmad-plus/module.yaml +333 -283
  21. package/src/bmad-plus/packs/pack-animated/animated-website-agent.md +325 -325
  22. package/src/bmad-plus/packs/pack-animated/templates/animated-website-workflow.md +55 -55
  23. package/src/bmad-plus/packs/pack-backup/backup-agent.md +71 -71
  24. package/src/bmad-plus/packs/pack-backup/templates/backup-workflow.md +51 -51
  25. package/src/bmad-plus/packs/pack-dev-studio/README.md +162 -162
  26. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/analyst-agent.md +73 -73
  27. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/document-project.md +61 -61
  28. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/domain-research.md +95 -95
  29. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/market-research.md +95 -95
  30. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/prfaq.md +134 -134
  31. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/product-brief.md +80 -80
  32. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/tech-writer-agent.md +73 -73
  33. package/src/bmad-plus/packs/pack-dev-studio/categories/analysis/technical-research.md +95 -95
  34. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/architect-agent.md +73 -73
  35. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/create-architecture.md +73 -73
  36. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/create-epics-stories.md +92 -92
  37. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/generate-project-context.md +80 -80
  38. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/implementation-readiness.md +90 -90
  39. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-01-init.md +153 -153
  40. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-01b-continue.md +173 -173
  41. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-02-context.md +224 -224
  42. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-03-starter.md +329 -329
  43. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-04-decisions.md +318 -318
  44. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-05-patterns.md +359 -359
  45. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-06-structure.md +379 -379
  46. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-07-validation.md +361 -361
  47. package/src/bmad-plus/packs/pack-dev-studio/categories/architecture/steps/step-08-complete.md +81 -81
  48. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/checkpoint-preview.md +67 -67
  49. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/code-review-steps/step-01-gather-context.md +85 -85
  50. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/code-review-steps/step-02-review.md +35 -35
  51. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/code-review-steps/step-03-triage.md +49 -49
  52. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/code-review-steps/step-04-present.md +131 -131
  53. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/code-review.md +89 -89
  54. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/correct-course.md +300 -300
  55. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/create-story.md +428 -428
  56. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/dev-agent.md +73 -73
  57. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/dev-story-checklist.md +80 -80
  58. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/dev-story.md +484 -484
  59. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/investigate.md +193 -193
  60. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/qa-e2e-tests.md +175 -175
  61. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/quick-dev.md +110 -110
  62. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/retrospective.md +1511 -1511
  63. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/sprint-planning.md +298 -298
  64. package/src/bmad-plus/packs/pack-dev-studio/categories/implementation/sprint-status.md +296 -296
  65. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/create-prd.md +29 -29
  66. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/create-ux-design.md +74 -74
  67. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/edit-prd.md +29 -29
  68. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/pm-agent.md +73 -73
  69. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/prd.md +89 -89
  70. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/ux-designer-agent.md +73 -73
  71. package/src/bmad-plus/packs/pack-dev-studio/categories/planning/validate-prd.md +29 -29
  72. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/advanced-elicitation.md +141 -141
  73. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/adversarial-review.md +37 -37
  74. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/bmad-help.md +75 -75
  75. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/brainstorming.md +6 -6
  76. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/customize.md +110 -110
  77. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/distillator.md +176 -176
  78. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/edge-case-hunter.md +67 -67
  79. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/editorial-review-prose.md +86 -86
  80. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/editorial-review-structure.md +179 -179
  81. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/index-docs.md +66 -66
  82. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/party-mode.md +127 -127
  83. package/src/bmad-plus/packs/pack-dev-studio/categories/utilities/shard-doc.md +105 -105
  84. package/src/bmad-plus/packs/pack-dev-studio/dev-studio-orchestrator.md +120 -120
  85. package/src/bmad-plus/packs/pack-dev-studio/shared/architecture-decision-template.md +12 -12
  86. package/src/bmad-plus/packs/pack-dev-studio/shared/bwml-spec.md +328 -328
  87. package/src/bmad-plus/packs/pack-dev-studio/shared/module-help.csv +32 -32
  88. package/src/bmad-plus/packs/pack-dev-studio/upstream-sync.yaml +81 -81
  89. package/src/bmad-plus/packs/pack-seo/SKILL.md +171 -171
  90. package/src/bmad-plus/packs/pack-seo/checklist.md +140 -140
  91. package/src/bmad-plus/packs/pack-seo/pagespeed-playbook.md +320 -320
  92. package/src/bmad-plus/packs/pack-seo/ref/audit-schema.json +187 -187
  93. package/src/bmad-plus/packs/pack-seo/ref/cwv-thresholds.md +87 -87
  94. package/src/bmad-plus/packs/pack-seo/ref/eeat-criteria.md +123 -123
  95. package/src/bmad-plus/packs/pack-seo/ref/geo-signals.md +167 -167
  96. package/src/bmad-plus/packs/pack-seo/ref/hreflang-rules.md +153 -153
  97. package/src/bmad-plus/packs/pack-seo/ref/quality-gates.md +133 -133
  98. package/src/bmad-plus/packs/pack-seo/ref/schema-catalog.md +91 -91
  99. package/src/bmad-plus/packs/pack-seo/ref/schema-templates.json +356 -356
  100. package/src/bmad-plus/packs/pack-seo/requirements.txt +17 -0
  101. package/src/bmad-plus/packs/pack-seo/scripts/seo_apis.py +456 -0
  102. package/src/bmad-plus/packs/pack-seo/scripts/seo_crawl.py +359 -0
  103. package/src/bmad-plus/packs/pack-seo/scripts/seo_fetch.py +303 -0
  104. package/src/bmad-plus/packs/pack-seo/scripts/seo_parse.py +255 -0
  105. package/src/bmad-plus/packs/pack-seo/scripts/seo_report.py +409 -0
  106. package/src/bmad-plus/packs/pack-seo/scripts/seo_screenshot.py +202 -0
  107. package/src/bmad-plus/packs/pack-seo/seo-chief.md +294 -294
  108. package/src/bmad-plus/packs/pack-seo/seo-judge.md +241 -241
  109. package/src/bmad-plus/packs/pack-seo/seo-scout.md +171 -171
  110. package/src/bmad-plus/packs/pack-seo/templates/seo-audit-workflow.md +241 -241
  111. package/src/bmad-plus/packs/pack-shield/README.md +6 -6
  112. package/src/bmad-plus/packs/pack-shield/SKILL.md +2 -2
  113. package/src/bmad-plus/packs/pack-shield/categories/accessibility-esg/csrd-agent.md +11 -11
  114. package/src/bmad-plus/packs/pack-shield/categories/accessibility-esg/section508-agent.md +11 -11
  115. package/src/bmad-plus/packs/pack-shield/categories/accessibility-esg/wcag-agent.md +11 -11
  116. package/src/bmad-plus/packs/pack-shield/categories/ai-governance/eu-ai-act-agent.md +11 -11
  117. package/src/bmad-plus/packs/pack-shield/categories/ai-governance/iso42001-agent.md +11 -11
  118. package/src/bmad-plus/packs/pack-shield/categories/ai-governance/nist-ai-rmf-agent.md +11 -11
  119. package/src/bmad-plus/packs/pack-shield/categories/cybersecurity/cis-controls-agent.md +11 -11
  120. package/src/bmad-plus/packs/pack-shield/categories/cybersecurity/ism-agent.md +11 -11
  121. package/src/bmad-plus/packs/pack-shield/categories/cybersecurity/iso27001-agent.md +11 -11
  122. package/src/bmad-plus/packs/pack-shield/categories/cybersecurity/nis2-agent.md +11 -11
  123. package/src/bmad-plus/packs/pack-shield/categories/cybersecurity/nist-800-53-agent.md +11 -11
  124. package/src/bmad-plus/packs/pack-shield/categories/cybersecurity/nist-csf-agent.md +11 -11
  125. package/src/bmad-plus/packs/pack-shield/categories/defense-export/cmmc-agent.md +11 -11
  126. package/src/bmad-plus/packs/pack-shield/categories/defense-export/ear-agent.md +11 -11
  127. package/src/bmad-plus/packs/pack-shield/categories/defense-export/itar-agent.md +11 -11
  128. package/src/bmad-plus/packs/pack-shield/categories/defense-export/tsa-agent.md +11 -11
  129. package/src/bmad-plus/packs/pack-shield/categories/industry-compliance/dora-agent.md +11 -11
  130. package/src/bmad-plus/packs/pack-shield/categories/industry-compliance/fedramp-agent.md +11 -11
  131. package/src/bmad-plus/packs/pack-shield/categories/industry-compliance/hipaa-agent.md +11 -11
  132. package/src/bmad-plus/packs/pack-shield/categories/industry-compliance/pci-dss-agent.md +11 -11
  133. package/src/bmad-plus/packs/pack-shield/categories/industry-compliance/soc2-agent.md +11 -11
  134. package/src/bmad-plus/packs/pack-shield/categories/industry-compliance/swift-csp-agent.md +11 -11
  135. package/src/bmad-plus/packs/pack-shield/shield-orchestrator.md +1 -1
  136. package/src/bmad-plus/skills/bmad-plus-autopilot/SKILL.md +1 -1
  137. package/tools/bmad-plus-npx.js +4 -2
  138. package/tools/build/adapters.config.js +60 -51
  139. package/tools/build/check-counts.js +626 -0
  140. package/tools/build/check-install-contract.js +298 -0
  141. package/tools/build/generate-adapters.js +252 -56
  142. package/tools/build/generate.js +187 -10
  143. package/tools/build/generated-adapters/.codex/AGENTS.md +20 -7
  144. package/tools/build/generated-adapters/.cursor/rules/bmad-plus.mdc +20 -7
  145. package/tools/build/generated-adapters/.opencode/AGENTS.md +20 -7
  146. package/tools/build/generated-adapters/AGENTS.md +20 -7
  147. package/tools/build/generated-adapters/CLAUDE.md +20 -7
  148. package/tools/build/generated-adapters/CONVENTIONS.md +20 -7
  149. package/tools/build/generated-adapters/GEMINI.md +20 -7
  150. package/tools/build/module.template.yaml +82 -0
  151. package/tools/cli/bmad-plus-cli.js +16 -1
  152. package/tools/cli/commands/autoconfig.js +470 -470
  153. package/tools/cli/commands/doctor.js +205 -233
  154. package/tools/cli/commands/install.js +543 -501
  155. package/tools/cli/commands/memory-journal-cmd.js +311 -311
  156. package/tools/cli/commands/memory.js +195 -195
  157. package/tools/cli/commands/scan.js +348 -348
  158. package/tools/cli/commands/uninstall.js +209 -101
  159. package/tools/cli/commands/update-check.js +31 -0
  160. package/tools/cli/commands/update-policy.js +39 -0
  161. package/tools/cli/commands/update.js +123 -134
  162. package/tools/cli/i18n.js +905 -845
  163. package/tools/cli/lib/README-memory-journal.md +125 -125
  164. package/tools/cli/lib/ide-config.js +10 -259
  165. package/tools/cli/lib/install-manifest.js +17 -0
  166. package/tools/cli/lib/installed-adapters.js +89 -0
  167. package/tools/cli/lib/npm-runner.js +177 -0
  168. package/tools/cli/lib/pack-copy.js +62 -66
  169. package/tools/cli/lib/packs.js +437 -3
  170. package/tools/cli/lib/python-provision.js +508 -508
  171. package/tools/cli/lib/stack-detect.js +102 -102
  172. package/tools/cli/lib/update-check.js +153 -0
  173. package/tools/cli/lib/update-dispatch.js +182 -0
  174. package/tools/cli/lib/update-policy.js +90 -0
  175. package/tools/cli/lib/update-transaction.js +334 -0
  176. 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.