sokrates-landscape-config

Creates and validates Sokrates landscape configurations aggregating multiple repository analyses into portfolio reports.

3|1|Updated Aug 26, 2026
One-click install
npx skills add https://github.com/zeljkoobrenovic/sokrates-skills --skill sokrates-landscape-config-zeljkoobrenovic
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: sokrates-landscape-config
Source: https://github.com/zeljkoobrenovic/sokrates-skills/tree/main/skills/config/sokrates-landscape-config
Command: npx skills add https://github.com/zeljkoobrenovic/sokrates-skills --skill sokrates-landscape-config-zeljkoobrenovic

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) and references (resource) components.

What problem does it solve? Combining many Sokrates repository analyses into one landscape report requires configuration Sokrates cannot infer: how repositories group into sub-landscapes, which tags matter, who the people behind email addresses are, and which accounts are bots. Misconfigured regexes silently match nothing, duplicate repository names collide, and contributors land in an "Undefined Team" — all discovered only after a slow report run. ## Core Features & Use Cases - Landscape bootstrap and tuning: Creates and edits _sokrates_landscape/config.json plus config-tags.json, config-teams.json, and config-people.json, covering thresholds, virtual sub-landscapes by repository-name patterns, tags, teams, bots, and contributor identity merging. - Pre-run checker: The check_landscape.py script re-implements Sokrates' discovery and matching rules to preview which repositories are found or excluded, which tags and virtual landscapes each gets, and how the contributor pipeline (ignore → transform → people → threshold → bots → teams) resolves — before running updateLandscape. - Use Case: An engineering org with 80 analyzed repositories wants them grouped by team with merged contributor identities. The skill sets up virtual landscapes and people configs, then the checker flags two regexes that do not compile and five active contributors matching no team. ## Quick Start Ask the AI to set up a Sokrates landscape over your analysis root and run the checker to preview repository discovery, tags, and team assignments before generating the report.

Frequently Asked Questions about sokrates-landscape-config

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I combine multiple Sokrates repository analyses into one report?

Place each repository analysis as `<folder>/<repo>/_sokrates/reports/data/data.zip` under one analysis root, then run `sokrates updateLandscape -analysisRoot <root>`. The landscape config in `_sokrates_landscape/config.json` controls grouping, tags, teams, and contributor merging.

How do I group repositories into sub-landscapes in Sokrates?

Use folder sub-landscapes when repositories already live in meaningful folders, or virtual landscapes with `includeRepoNamePatterns` when grouping by naming convention. Virtual landscape patterns are case-sensitive, full-string regexes on the repository's metadata name.

Why is a repository or contributor missing from my Sokrates landscape?

Common causes are duplicate or blank metadata names (first found wins), LOC or contributor thresholds, stale last-commit dates, and `ignoreContributors` regexes. The check_landscape.py script previews discovery and shows exactly why each repository or contributor is excluded.

How do I merge contributor identities in a Sokrates landscape?

Run `sokrates updateLandscapePeopleConfigByUserName` to generate `config-people.json` grouping identities by user name, then hand-fix remaining cases. Use `transformContributorEmails` operations to normalize emails (strip GitHub noreply prefixes, unify domains) before people matching.

Why does my Sokrates regex pattern not match anything?

Sokrates treats invalid regexes as non-matching without any error, and name-based matching (tags, virtual landscapes) is case-sensitive full-string while people and team matching is case-insensitive. The checker compile-checks every regex and reports which ones fail.