Removes the 24 user-personalized .md sources (salva.md per persona) and
_user_context.md from the shared library. They now live in /personalized/
at the repo root which is gitignored — the public/shared persona library
no longer ships user-private content.
The build picks them up automatically via the personalized source scanning
introduced in the previous commit. Output paths (generated/<slug>-personas/)
remain visible for build-artifact identification.
Other users who clone the repo:
- Get the shared library: personas/<codename>/general.md + specializations
- Create their own /personalized/<codename>/salva.md to customize
- Adjust config.user.personalized_* keys as needed
Personalized variants (default trigger: salva.md) compile to a separate
top-level folder so generated/<persona>/ stays clean of per-user content.
Both the trigger variant filename(s) and the output folder name are
config-driven via config.user — the build is truly user-agnostic.
Build changes:
- Module-level _RUNTIME dict cached by configure_runtime(config) at startup
- resolve_personalized_variants(config) — config.user.personalized_variants
- resolve_personalized_output_dirname(config) — slug-derives from
user.name (e.g. "Salva" → "salva-personas") with explicit override key
- resolve_personalized_source_dirname(config) — defaults to literal
"personalized" (gitignorable, user-name-independent)
- iter_persona_output_dirs() — single helper used by all install_*()
functions to transparently iterate both layouts
- build_persona() routes salva variants based on _RUNTIME at write time
- build_skills_index() also scans <repo>/personalized/skills/ so personal
skills (with user-private data) merge into the shared skill index
- main() picks up persona dirs from BOTH personas/ and personalized/
New config keys (all optional):
- user.personalized_variants
- user.personalized_output_folder
- user.personalized_source_folder
Output layout (e.g. for user.name="Salva"):
- generated/<persona>/general.{json,yaml,prompt.md} (shared)
- generated/<persona>/<spec>.{json,yaml,prompt.md} (shared)
- generated/salva-personas/<persona>/salva.{json,yaml,prompt.md} (private)
Source layout:
- personas/<persona>/general.md, <spec>.md (committed)
- personalized/<persona>/salva.md (gitignored)
- personalized/skills/<skill>/SKILL.md (gitignored)
- personalized/_user_context.md (gitignored)
Adds /personalized/ to .gitignore. Documents the new layout in CLAUDE.md
and README.md. Maps linkedin-content-strategy → herald/forge/frodo/ghost
in the default skill persona map.
Replace single-line entry in references/bellingcat-own-repos.md with
dedicated subsection for the Bellingcat open-source-research-notebooks
repo (298★, MIT, last updated 2026-04-28).
Adds:
- Full notebook catalog: 6 Bellingcat-developed + 7 community + 1 intro
- Direct Colab links for every notebook (no install friction — analyst
runs in 30s)
- Difficulty level (easy/medium) per notebook
- Persona affinity per notebook (oracle/wraith/frodo/scribe/marshal/
centurion/herald/specter mapped per use case)
- "When to reach for which notebook" decision table mapping
investigation triggers (lead is a phone / email / username / face /
shadow / Russian VK / video etc.) to the right notebook
- "Why this is the highest-leverage Bellingcat repo" rationale: zero
install, form-driven inputs, reproducibility-first, maintained, MIT
Stays within bellingcat-osint-toolkit skill — no fragmentation.
References file: 374 → 443 lines.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Comprehensive reference for the 46 active non-fork repos in the
github.com/bellingcat org — tools Bellingcat ships as code (vs the
external tools they curate, which the existing 12 category refs cover).
Sections:
- Power tools (auto-archiver, octosuite, telegram-phone-number-checker,
snscrape, vk-url-scraper, whisperbox-transcribe, EDGAR) with install
commands + key invocations
- Geolocation toolbox (ShadowFinder, instagram-location-search,
osm-search, geoclustering, search-grid-generator, ColourHighlighter,
rgb-viz)
- Satellite / Earth Engine (sar-interference-tracker, cloud-free-subregion,
Multispectral Imagery Explorer, umbra-open-data-tracker, ee_forest_area_tracker)
- Social-media scrapers (TikTok, Reddit, YouTube, Odysee, GETTR, Facebook,
cisticola coordinator)
- People search (name-variant-search, alias-generator)
- Telegram (phone-checker, group-joiner, gesara-entity-viz)
- Companies / finance (EDGAR, sugartrail)
- Aircraft tracking (adsb-history)
- Image triage (smart-image-sorter via HuggingFace)
- Web-history forensics (wayback-google-analytics, uniform-timezone)
- Conflict tracking (ukraine-timemap, iran-conflict-damage-proxy-map,
vis-tj-kg-map-2022)
- Research methodologies (RS4OSINT, open-source-research-notebooks,
open-questions, quitobaquito, twitter-geocode-searches)
- Council / government records (CouncilSearcher)
- Persona affinity quick-pivot table for all 13 personas
Each entry has stars, language, use case, persona affinity, and (where
useful) the exact install + first-use commands. SKILL.md updated to
reference the new file in the layout tree and "when to load" table.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds install_feynman() that deploys personas as Feynman/Pi custom subagents
and shared skills into the Feynman runtime layout, mirroring the established
opencode pattern.
Layout:
- Personas → ~/.feynman/agent/agents/<codename>.md (Pi-spec frontmatter:
name, description, thinking, tools, output, defaultProgress,
inheritProjectContext, inheritSkills, systemPromptMode)
- Skills → ~/.feynman/agent/skills/<name>/ (SKILL.md + references/ +
scripts/ + data/, plus _platform-mapping.md sibling for feynman-skills
relative refs)
Defaults & safety:
- thinking inferred per domain (high for cybersec/intel/military/academia/
law/history/strategy, medium otherwise)
- tools allowlist tighter for offensive (cybersec) and intel/research roles;
Pi defaults otherwise
- Builtin agents (researcher/reviewer/writer/verifier) protected: persona
with same codename is skipped unless --skill-force overrides
- Skill topic filter shares OPENCODE_TOPICS vocabulary; new
--feynman-topics flag mirrors --opencode-topics
- Manifest-tracked stale cleanup never deletes builtins
- purge_skills defaults False (preserves user-installed skills)
Variants:
- --install feynman → live deploy to ~/.feynman/agent/
- --install feynman-archive → review layout to personas/{agents,skills}-
feynman-archive/ without touching ~/.feynman/
Tested via feynman-archive: 111 persona agents + 1051 skills emitted (516
filtered out by default topic policy). Frontmatter validated against the
real ~/.feynman/agent/agents/ files of a working install.
Adds feynman to the 'all' bundle and updates CLAUDE.md install table +
.gitignore for archive directories.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
skills-archive/, agents-opencode-archive/, agents-claude-archive/ are
local source-of-truth (~240MB total) consumed by opc-skills / opc-agents,
not committed (similar to generated/).
Conflict fix: --install opencode wipes ~/.config/opencode/skills/ on every
build, which clobbers the work of external managers like opc-skills. New flag
--no-purge skips that wipe so opc-skills' enabled set survives a rebuild.
New install target opencode-archive: instead of writing to ~/.config/opencode/,
it regenerates personas/skills-archive/ + personas/agents-opencode-archive/
(the source-of-truth that opc-skills + opc-agents consume). This lets the
build pipeline stay decoupled from runtime install dirs.
install_opencode() now accepts agents_dest / skills_dest overrides for the
archive target. Live target behavior unchanged.
Agent emission was only writing general.json for each persona (29 files),
skipping 82 variants. Non-general variants now install as:
<codename>-<variant>.md with mode: subagent + hidden: true
Key changes to install_opencode agent-emission half:
- Loop every *.json in each persona dir, not just general.json
- Enforce opencode identifier regex ^[a-z0-9]+(-[a-z0-9]+)*$ with sanitizer
- Non-general variants are always subagent (hidden:true is undefined on
mode:primary per opencode docs); permission tier still follows domain
- Add permission.task block gating subagent dispatch
- Wrap description in double quotes with backslash/quote escaping so any
special chars (&, :, quotes) can't corrupt the YAML frontmatter
- Variant identity surfaced in both description ("Variant: x") and body
header "[x]" so prompts self-identify
Stale-agent cleanup via sidecar manifest (.personas-manifest.json):
prior emission list is tracked so re-runs prune removed variants without
touching any hand-authored agents in agents/.
Result: 29 -> 111 agents installed, 9 primary + 102 subagent, all
picker-clean (Tab cycles 9 canonical offensive personas; variants reach
via @codename-variant or task dispatch).
Skills-install half intentionally untouched — direct-to-active remains
the correct default for users who don't layer opc-skills on top.
- install_opencode: deploys 29 personas as agents + 1011 skills to
~/.config/opencode/{agents,skills}/. Uses OpenCode's markdown+YAML
agent format (mode/color/permission) and SKILL.md format.
- Topic filter with sensible defaults (drops marketing/biz ~514 skills).
CLI: --opencode-topics security-offensive,coding-backend,...
- Clone of swisskyrepo/InternalAllTheThings (168 MD, 1.7MB) added to
_shared/ as a reference trove for AD attack paths, ADCS ESC1-15,
Kerberos delegation, NTLM relay/coerce, lateral movement, persistence.
- NEO redteam + VORTEX cloud-ad personas reference the new KB with
MITRE ATT&CK TTP mapping pointers.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Previously wrote .yml files to ~/.claude/agents/ which Claude Code ignores —
only native .md with YAML frontmatter (name/description/tools/color) appears
in the subagent picker. Now 29 personas are spawnable via
Agent(subagent_type=<codename>) alongside native agents.
Also:
- Tool scoping per domain: offensive/dev get Bash+Write, intel/analysis
stay read-only (Read, Glob, Grep, WebFetch, WebSearch)
- Slash command naming normalized: /persona-neo-general.prompt
→ /persona-neo (general) + /persona-neo-redteam (variants)
- Legacy .yml agents purged on each install
- Domain-based color palette for /agents picker grouping
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
install_claude() now creates both:
- 111 slash commands in ~/.claude/commands/ (persona-neo-general etc.)
- 29 agent .yml files in ~/.claude/agents/ (visible in /agents menu)
Each agent includes Soul, Methodology, Behavior sections + mapped skills.
Agents appear alongside GSD agents in the /agents picker.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Bulk cleanup: replaced ProudSec/Born2beRoot with generic "organizasyon"
across all 22 SOUL.md files. Git URL (git.born2beroot.net) preserved
as it's the actual server address.
Enhanced Dvalin with full Knowledge Hub section + 4-phase methodology.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Full hierarchy: Odin(CEO) → Thor(CTO)/Freya(CMO)/Frigg(COO)/Heimd(PM)
with all 23 agents visible in the architecture overview.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Updated persona variant tables with new variants (c2-hunting, source-verification, frontend-design)
- Added Skills column showing mapped skills per persona
- Added full Paperclip Company Agents table (23 agents with roles, reporting, skills)
- Fixed variant counts (27→27 cyber, 27→29 intel, 5→7 engineering)
- Removed company name references from Paperclip agent SOUL.md files
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- ASCII persona tree, architecture diagram, escalation flow
- Complete variant table for all 29 personas (108 variants)
- Config-driven build system documentation
- Integration examples (Python, CLI, multi-persona switching)
- New user onboarding guide
- Updated stats to reflect current state
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Hidden dot-prefix removed for ergonomic shell navigation.
Still gitignored — build output is user-specific.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>