| Name | pyteam-skills JSON |
| Version |
1.0.2
JSON |
| download |
| home_page | None |
| Summary | Skill matrix and dashboard from Git repos |
| upload_time | 2025-10-28 10:25:13 |
| maintainer | None |
| docs_url | None |
| author | None |
| requires_python | >=3.9 |
| license | MIT |
| keywords |
dashboard
git
pydriller
skills
|
| VCS |
 |
| bugtrack_url |
|
| requirements |
No requirements were recorded.
|
| Travis-CI |
No Travis.
|
| coveralls test coverage |
No coveralls.
|
# ๐ง 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).

---
## ๐ 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)
```bash
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
```
For normal installation:
```bash
pip install pyteam-skills
```
---
## โก Quickstart
```bash
# 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`](https://github.com/hassanzaib512/pyteam-skills/blob/main/examples/config.example.yml?raw=1).
### 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
```bash
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](https://github.com/hassanzaib512)
---
[PyDriller]: https://github.com/ishepard/pydriller
Raw data
{
"_id": null,
"home_page": null,
"name": "pyteam-skills",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "dashboard, git, pydriller, skills",
"author": null,
"author_email": "Hassan Zaib Hayat <hassanzaibhayatske@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/e2/46/c3f02f648c3407888e7a527e962ed450c21d241da4eb7bca17790ba23d0c/pyteam_skills-1.0.2.tar.gz",
"platform": null,
"description": "# \ud83e\udde0 pyteam-skills\n\nGenerate a **team skill matrix** and interactive **dashboard** from your Git commit history. \nIt 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).\n\n\n\n---\n\n## \ud83d\ude80 Features\n\n- \ud83e\ude84 **Git mining** via [PyDriller]\n- \ud83e\udde9 **Skill mapping precedence:** `regex \u2192 path prefix \u2192 extension \u2192 Other`\n- \u2696\ufe0f **Weighted scoring** \u2014 with configurable parameters and **exponential recency decay**\n- \ud83d\udcca **Normalized skill matrix (1\u2013100)** \u2014 top contributor per skill = 100\n- \ud83d\udcc8 **Monthly trends** \u2014 per skill, normalized (1\u2013100)\n- \ud83c\udf17 **Static dashboard** \u2014 filters by Author, Skill, Month + dark mode + download JSON\n- \ud83e\uddf0 **CLI-powered workflow:** `init`, `scan`, `matrix`, `dashboard`\n- \ud83d\udea7 **More features coming soon!**\n\n---\n\n## \ud83d\udee0\ufe0f Installation (Development Mode)\n\n```bash\npython -m venv .venv && source .venv/bin/activate\npip install -e \".[dev]\"\n```\n\nFor normal installation:\n\n```bash\npip install pyteam-skills\n```\n\n---\n\n## \u26a1 Quickstart\n\n```bash\n# 1) Create a default configuration\npyteam-skills init --out config.yml\n\n# 2) Scan a Git repository\npyteam-skills scan --repo . --config config.yml --out artifacts/scan.json\n\n# 3) Export CSV artifacts\npyteam-skills matrix --scan artifacts/scan.json --out artifacts\n\n# 4) Generate the interactive dashboard\npyteam-skills dashboard --scan artifacts/scan.json --out artifacts/dashboard\n\n# 5) Open your dashboard in a browser\nopen artifacts/dashboard/index.html\n```\n\n---\n\n## \u2699\ufe0f Config Reference\n\nSee [`examples/config.example.yml`](https://github.com/hassanzaib512/pyteam-skills/blob/main/examples/config.example.yml?raw=1).\n\n### Skill Mapping Precedence\n\n1. **regex_skills** (first match wins) \n2. **path_skills** (longest prefix wins) \n3. **extension_skills** \n4. fallback \u2192 `[\"Other\"]`\n\n### Weight Parameters\n\n| Parameter | Description | Default |\n|------------|-------------|----------|\n| `lines_changed` | Weight for added + deleted lines | `1.0` |\n| `files_touched` | Weight per file touched | `0.3` |\n| `commit_bonus` | Constant bonus per commit | `0.2` |\n| `decay_half_life_days` | Half-life for exponential recency decay | `120` |\n\n---\n\n## \ud83e\uddea Development\n\n```bash\nmake format # Format code with black\nmake lint # Run ruff linter\nmake test # Run pytest\nmake all # Format + lint + test\n```\n\n---\n\n## \ud83d\udcdc License\n\nMIT License \u00a9 [Hassan Zaib Hayat](https://github.com/hassanzaib512)\n\n---\n\n[PyDriller]: https://github.com/ishepard/pydriller\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Skill matrix and dashboard from Git repos",
"version": "1.0.2",
"project_urls": {
"Homepage": "https://github.com/hassanzaib512/pyteam-skills",
"Issues": "https://github.com/hassanzaib512/pyteam-skills/issues"
},
"split_keywords": [
"dashboard",
" git",
" pydriller",
" skills"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "0d84dfc1f25a0b48cdd87d09e1c7ee6d222edf13f44d63d8088c2f88e395f0a4",
"md5": "638dd2d06c95ac44c610d868c5e6e758",
"sha256": "b11f02c1e598e9b6c68e6c7c2f80243221bb7fd6eca9c1f5eb2558495b5f5f7b"
},
"downloads": -1,
"filename": "pyteam_skills-1.0.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "638dd2d06c95ac44c610d868c5e6e758",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 15864,
"upload_time": "2025-10-28T10:25:10",
"upload_time_iso_8601": "2025-10-28T10:25:10.982584Z",
"url": "https://files.pythonhosted.org/packages/0d/84/dfc1f25a0b48cdd87d09e1c7ee6d222edf13f44d63d8088c2f88e395f0a4/pyteam_skills-1.0.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e246c3f02f648c3407888e7a527e962ed450c21d241da4eb7bca17790ba23d0c",
"md5": "ccdec4fa1c5ba03a9aa3c24322c7adf6",
"sha256": "bb913ea95f9f7ad4c989d8bed0b97587311d147df619bbda27ca68026c3dc762"
},
"downloads": -1,
"filename": "pyteam_skills-1.0.2.tar.gz",
"has_sig": false,
"md5_digest": "ccdec4fa1c5ba03a9aa3c24322c7adf6",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 126500,
"upload_time": "2025-10-28T10:25:13",
"upload_time_iso_8601": "2025-10-28T10:25:13.181310Z",
"url": "https://files.pythonhosted.org/packages/e2/46/c3f02f648c3407888e7a527e962ed450c21d241da4eb7bca17790ba23d0c/pyteam_skills-1.0.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-28 10:25:13",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "hassanzaib512",
"github_project": "pyteam-skills",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "pyteam-skills"
}