Skip to main content

🧠 pyteam-skills

Generate a team skill matrix and interactive dashboard from your Git commit history.
It mines repositories with PyDriller, maps files to skills (via extensions, paths, or regex), applies configurable weights with recency decay, and produces both CSV exports and a modern Tailwind dashboard (with dark mode + filters).

Dashboard Screenshot


🚀 Features

  • 🪄 Git mining via PyDriller
  • 🧩 Skill mapping precedence: regex → path prefix → extension → Other
  • ⚖️ Weighted scoring — with configurable parameters and exponential recency decay
  • 📊 Normalized skill matrix (1–100) — top contributor per skill = 100
  • 📈 Monthly trends — per skill, normalized (1–100)
  • 🌗 Static dashboard — filters by Author, Skill, Month + dark mode + download JSON
  • 🧰 CLI-powered workflow: init, scan, matrix, dashboard
  • 🚧 More features coming soon!

🛠️ Installation (Development Mode)

python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"

For normal installation:

pip install pyteam-skills

⚡ Quickstart

# 1) Create a default configuration
pyteam-skills init --out config.yml

# 2) Scan a Git repository
pyteam-skills scan --repo . --config config.yml --out artifacts/scan.json

# 3) Export CSV artifacts
pyteam-skills matrix --scan artifacts/scan.json --out artifacts

# 4) Generate the interactive dashboard
pyteam-skills dashboard --scan artifacts/scan.json --out artifacts/dashboard

# 5) Open your dashboard in a browser
open artifacts/dashboard/index.html

⚙️ Config Reference

See examples/config.example.yml.

Skill Mapping Precedence

  1. regex_skills (first match wins)
  2. path_skills (longest prefix wins)
  3. extension_skills
  4. fallback → ["Other"]

Weight Parameters

Parameter Description Default
lines_changed Weight for added + deleted lines 1.0
files_touched Weight per file touched 0.3
commit_bonus Constant bonus per commit 0.2
decay_half_life_days Half-life for exponential recency decay 120

🧪 Development

make format   # Format code with black
make lint     # Run ruff linter
make test     # Run pytest
make all      # Format + lint + test

📜 License

MIT License © Hassan Zaib Hayat


Metadata

Release files for pyteam-skills 1.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyteam-skills 1.0.2
File Size Uploaded
pyteam_skills-1.0.2.tar.gz 126.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyteam-skills 1.0.2
File Interpreter ABI Platform
pyteam_skills-1.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 142.4 kB

Release files / pyteam_skills-1.0.2.tar.gz

Download URL pyteam_skills-1.0.2.tar.gz
Size 126.5 kB
Tags Source
SHA-256 checksum
How to use checksums
bb913ea95f9f7ad4c989d8bed0b97587311d147df619bbda27ca68026c3dc762
BLAKE2b-256 checksum
How to use checksums
e246c3f02f648c3407888e7a527e962ed450c21d241da4eb7bca17790ba23d0c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / pyteam_skills-1.0.2-py3-none-any.whl

Download URL pyteam_skills-1.0.2-py3-none-any.whl
Size 15.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b11f02c1e598e9b6c68e6c7c2f80243221bb7fd6eca9c1f5eb2558495b5f5f7b
BLAKE2b-256 checksum
How to use checksums
0d84dfc1f25a0b48cdd87d09e1c7ee6d222edf13f44d63d8088c2f88e395f0a4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

1.0.2 This release

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page