Commit Graph

7 Commits

Author SHA1 Message Date
salvacybersec
cbb28903fb feat(build): user-agnostic personalized variant routing
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.
2026-05-07 16:49:01 +03:00
salvacybersec
3778fa1694 feat(install): add --install feynman target for Pi-runtime deployment
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>
2026-05-01 12:24:41 +03:00
salva
5a8bb7c5ec chore: gitignore personas archive folders
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/).
2026-04-30 23:48:17 +03:00
salvacybersec
d2add20055 reorganize 2026-04-11 21:19:12 +03:00
salvacybersec
bbaf50af77 chore: add config.yaml to gitignore — personal settings stay local
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 10:35:47 +03:00
salvacybersec
4865ec8204 fix: rename .generated → generated for easy access
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>
2026-03-22 10:35:15 +03:00
salvacybersec
19ef1da170 init: project structure, templates, build system
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 00:26:28 +03:00