Who Is Actor
by @wscats
This skill should be used ONLY when the user EXPLICITLY and UNAMBIGUOUSLY requests a Git repository commit-history analysis that produces aggregate collabora...
clawhub install who-is-actor๐ About This Skill
name: who-is-actor license: MIT description: > This skill should be used when the user wants to analyze a Git repository and profile each developer's commit habits, work habits, development efficiency, code style, code quality, and engagement index โ all without installing any extra packages or running any custom scripts. It relies purely on native git CLI commands (and standard Unix text-processing utilities already present on the host) and AI-driven interpretation. Trigger phrases include "analyze repository" "profile developers" "commit habits" "developer report card" "ไปฃ็ ๅๆ" "็ ๅๆ็" "ๅผๅ่ ็ปๅ" "ๆไบคไน ๆฏ" "ๅทฅไฝไน ๆฏ" "ๅไธๅบฆ".
Who Is Actor โ Git Repository Developer Profiling Skill
> ๐ Project Repository: https://github.com/wscats/who-is-actor
Zero *install* dependencies, zero scripts. Collects data purely through native git commands and standard Unix text utilities (cut, sort, awk, grep, etc. โ already present on most systems), interpreted by AI, to generate a serious, direct, and unsparing report card for every developer.
> "Zero dependency" clarification: This skill installs nothing โ no pip packages, no npm modules, no custom scripts. However, it does require the following standard system binaries to be available on the host: git, cut, sort, uniq, awk, grep, sed, wc, head. These are pre-installed on virtually all Unix-like systems (macOS, Linux). On Windows, use Git Bash or WSL.
๐ฌ Natural Language (Recommended)
You don't need to memorize any commands or parameters โ simply describe what you need in any language:
English
๐ฌ "Analyze the repository at /path/to/my-project"
๐ฌ "Profile all developers in this repo"
๐ฌ "Who are the most active contributors in /path/to/my-project?"
๐ฌ "Compare commit habits of Alice and Bob"
๐ฌ "Show me the code quality report for this project since 2024-01-01"
๐ฌ "What does each developer's work pattern look like on branch main?"
๐ฌ "Give me an honest review of every contributor's strengths and weaknesses"
๐ฌ "Is there a bus-factor risk in /path/to/my-project?"
ไธญๆ
๐ฌ "ๅๆไธไธ /path/to/my-project ่ฟไธชไปๅบ"
๐ฌ "ๅธฎๆ็็่ฟไธช้กน็ฎ้ๆฏไธชๅผๅ่
็ๆไบคไน ๆฏ"
๐ฌ "ๅฏนๆฏไธไธ Alice ๅ Bob ็็ ๅๆ็"
๐ฌ "็ๆ่ฟไธชไปๅบ็ๅผๅ่
็ปๅๆฅๅ"
๐ฌ "่ฟไธช้กน็ฎ็ไปฃ็ ่ดจ้ๆไนๆ ท๏ผ"
๐ฌ "ไป 2024 ๅนด 1 ๆๅผๅง๏ผๅๆ main ๅๆฏ็ๆไบค่ฎฐๅฝ"
๐ฌ "ๅข้้่ฐ็ไปฃ็ ้ฃๆ ผๆๅฅฝ๏ผ่ฐ้่ฆๆน่ฟ๏ผ"
๐ฌ "็็่ฟไธชไปๅบๆๆฒกๆๅทดๅฃซๅ ๅญ้ฃ้ฉ"
ๆฅๆฌ่ช
๐ฌ "ใใฎใชใใธใใชใฎ้็บ่
ใๅๆใใฆใใ ใใ /path/to/my-project"
๐ฌ "ๅ้็บ่
ใฎใณใใใ็ฟๆ
ฃใๆฏ่ผใใฆใใ ใใ"
๐ฌ "ใใฎใใญใธใงใฏใใฎใณใผใๅ่ณชใฌใใผใใไฝๆใใฆใใ ใใ"
๐ฌ "ใใผใ ใฎ้็บๅน็ใ่ฉไพกใใฆใใ ใใ"
ํ๊ตญ์ด
๐ฌ "์ด ์ ์ฅ์์ ๊ฐ๋ฐ์ ํ๋กํ์ ๋ถ์ํด ์ฃผ์ธ์ /path/to/my-project"
๐ฌ "๊ฐ ๊ฐ๋ฐ์์ ์ปค๋ฐ ์ต๊ด์ ๋น๊ตํด ์ฃผ์ธ์"
๐ฌ "์ด ํ๋ก์ ํธ์ ์ฝ๋ ํ์ง ๋ณด๊ณ ์๋ฅผ ๋ง๋ค์ด ์ฃผ์ธ์"
๐ฌ "ํ์ ๊ฐ๋ฐ ํจ์จ์ฑ์ ํ๊ฐํด ์ฃผ์ธ์"
Espaรฑol
๐ฌ "Analiza el repositorio en /path/to/my-project"
๐ฌ "Compara los hรกbitos de commit de todos los desarrolladores"
๐ฌ "Dame un informe de calidad del cรณdigo de este proyecto"
๐ฌ "ยฟQuiรฉn es el desarrollador mรกs activo del equipo?"
Franรงais
๐ฌ "Analyse le dรฉpรดt situรฉ ร /path/to/my-project"
๐ฌ "Compare les habitudes de commit de chaque dรฉveloppeur"
๐ฌ "Gรฉnรจre un rapport de qualitรฉ du code pour ce projet"
๐ฌ "Qui est le contributeur le plus actif de l'รฉquipe ?"
Deutsch
๐ฌ "Analysiere das Repository unter /path/to/my-project"
๐ฌ "Vergleiche die Commit-Gewohnheiten aller Entwickler"
๐ฌ "Erstelle einen Code-Qualitรคtsbericht fรผr dieses Projekt"
๐ฌ "Wer ist der aktivste Entwickler im Team?"
โ๏ธ Parameters
| Parameter | Description | Required | Default |
|-----------|-------------|----------|---------|
| repo_path | Absolute path to the target Git repository | โ
Yes | โ |
| authors | Comma-separated display names (emails NOT accepted) | No | All contributors |
| since | Start date in ISO format (YYYY-MM-DD) | No | Full history |
| until | End date in ISO format (YYYY-MM-DD) | No | Full history |
| branch | Target branch to analyze | No | Active branch |
What you get: A structured Markdown report with a summary table, per-developer profiles (six-dimension radar scores, strengths/weaknesses, improvement suggestions), team comparison, and bus-factor risk alerts.
Security Specification
> All shell command parameters MUST be strictly validated before execution to prevent command injection attacks.
Dry-Run Mode (Recommended for First Use)
Before executing any commands, the agent SHOULD offer a dry-run mode that:
1. Collects and validates all parameters per the rules below 2. Constructs the full list of shell commands that *would* be executed 3. Prints every command to the user for review WITHOUT executing any of them 4. Waits for explicit user approval before proceeding to actual execution
To trigger dry-run mode, the user can say:
๐ฌ "Show me the commands first before running them"
๐ฌ "Do a dry run on /path/to/repo"
๐ฌ "ๅ
ๅๅบ่ฆๆง่ก็ๅฝไปค๏ผไธ่ฆ่ฟ่ก"
> This allows the user to verify that every command strictly matches the whitelist below.
Command Whitelist (Only These Commands Are Allowed)
This skill only permits the following predefined read-only git subcommands. No other shell commands may be executed:
| Allowed Command | Purpose | Modifies Repo? |
|----------------|---------|----------------|
| git -C | Verify the path is a valid Git repository | โ Read-only |
| git -C | Get contributor list and commit counts | โ Read-only |
| git -C | Get commit history details | โ Read-only |
| git -C | Get change statistics | โ Read-only |
Strictly Prohibited Command Types:
git push, git commit, git merge, git rebase, git reset, git checkout, git branch -dcurl, wget, python, node, bash -c, sh, eval, rm, cp, mv>, >>, tee (pipe | is only allowed to connect read-only text-processing tools: cut, sort, uniq, awk, grep, wc, sed, head)git fetch, git pull, git clone, git remote> If the AI agent attempts to execute a command outside the whitelist, the user should immediately reject execution.
Input Validation Rules (Must Be Completed Before Any Git Command)
1. repo_path (Repository Path) Validation:
- Must be an absolute path (starting with /)
- Must NOT contain any of these dangerous characters or substrings: ;, |, &, $, ` `, (, ), >, <, \n, \r, $(), ..
- Path must be a real, existing Git repository (verified via git -C returning true)
- If validation fails, immediately abort and report the error to the user โ no subsequent commands may be executed
2. author (Author Name) Validation:
- Only allowed characters: letters (a-z A-Z), digits (0-9), spaces, hyphens (-), underscores (_), dots (.)
- The @ symbol is NOT allowed (email format is prohibited to align with privacy protection rules)
- Regex whitelist: ^[a-zA-Z0-9 _.-]+$
- Maximum length: 128 characters
- If input contains @, prompt the user to use the author's display name instead, then skip that author
3. since / until (Date Parameters) Validation:
- Must match ISO date format: ^[0-9]{4}-[0-9]{2}-[0-9]{2}$
- If validation fails, ignore the parameter and warn the user
4. branch (Branch Name) Validation:
- Only allowed characters: letters, digits, /, -, _, .
- Regex whitelist: ^[a-zA-Z0-9/_.-]+$
- Must NOT contain the .. substring
- If validation fails, use the default branch and warn the user
Privacy Protection Rules
(author name) to identify developers, never %ae (author email). uses -sn instead of -sne to avoid leaking email addresses. parameter only accepts display names, NOT email addresses. Input validation rejects values containing @. parameter matches against both name and email fields. Since this skill prohibits email-format values, --author will only match via the name portion and will not utilize the email field.Sensitive Data Filtering Rules (Mandatory)
Before sending any data to the AI model for analysis, the agent MUST apply the following filtering:
1. Commit messages are processed locally for statistics only:
- The agent collects commit message lengths (character counts) and keyword matches (e.g., fix, feat, revert) locally via shell commands.
- Full commit message text MUST NOT be forwarded verbatim to the AI model. Instead, send only aggregated metrics (average length, keyword counts, conventional commit compliance rate).
- If the user explicitly requests to see specific commit messages, the agent MUST:
1. First apply all redaction patterns listed below
2. Truncate each message to a maximum of 120 characters
3. Display redacted messages only in the final user-facing report, never in intermediate AI prompts
4. Warn the user that commit messages may contain sensitive information
2. Automatic redaction of secret patterns:
Before any text (commit messages, filenames, branch names) is included in the AI prompt, the agent MUST scan for and redact the following patterns:
- API keys / tokens: strings matching (?i)(api[_-]?key|token|secret|password|credential|auth)[=:]\s*\S+
- AWS keys: AKIA[0-9A-Z]{16}
- Private keys: -----BEGIN .* PRIVATE KEY-----
- Connection strings: (?i)(mysql|postgres|mongodb|redis)://\S+
- Generic secrets: any string longer than 20 characters containing only alphanumeric characters that appears after = or : in a key-value pattern
- Replace matched content with [REDACTED]
3. Filename filtering:
- Filenames are collected only to determine file extensions for language/type statistics.
- Full file paths SHOULD NOT be sent to the AI model unless the user explicitly requests file-level analysis.
- If full paths are sent, redact any path components that match common secret file patterns: .env, .credentials, *secret*, *password*, *token*.
Repository Path Scope Rules
) or access files outside the repository root. commands targeting the validated repository are permitted.) and inform the user.Enforcement Verification Protocol
Because this is an instruction-only skill (no executable code), safety guarantees depend on the AI agent correctly implementing the rules above. Users SHOULD verify enforcement before trusting the skill on sensitive repositories.
Verification steps (run on a safe test repository first):
1. Dry-run test: Ask the agent to analyze a test repo using dry-run mode. Verify that:
- Every proposed command appears in the Command Whitelist table above
- No commands use %ae (email format) or -sne flags
- All user-supplied values (path, author, dates) are properly quoted
2. Input validation test: Deliberately provide invalid inputs and verify rejection:
"Analyze /tmp/test; rm -rf /" -> agent MUST reject (dangerous characters)
"Profile author user@email.com" -> agent MUST reject (@ not allowed)
"Analyze since 2024-13-99" -> agent MUST reject or warn (invalid date)
"Analyze branch ../../etc/passwd" -> agent MUST reject (.. not allowed)
3. Data filtering test: After a dry-run, ask the agent:
"What data will you send to the AI model?"
The agent should confirm it sends only aggregated metrics (counts, averages, percentages), NOT raw commit messages or full file paths.4. Redaction test: If commit messages are requested, verify that:
- Messages are truncated to <=120 characters
- Patterns like API_KEY=xxx appear as [REDACTED]
- Messages appear only in the final report, not in intermediate processing
> If any verification step fails, do NOT use the skill on sensitive repositories. Report the failure to the skill maintainer.
Use Cases
Core Principles
> Install nothing, run no scripts. All data collection is done exclusively through native git commands (git log, git shortlog, git diff --stat, etc.). The AI is responsible for interpretation and evaluation.
> Security first. All user inputs must pass the validation rules above before being incorporated into shell commands. Any validation failure must result in termination or graceful degradation โ never skip validation.
Workflow
Step 1: Confirm Analysis Parameters
Confirm the following with the user (use defaults if not specified):
| Parameter | Description | Default | |-----------|-------------|---------| | Repository Path | Absolute path to the target Git repository | (Required) | | Target Authors | Specific developers to analyze; leave blank for all | All contributors | | Date Range | Start/end dates in ISO format | Full repository history | | Branch | Target branch for analysis | Current active branch |
> โ ๏ธ Before executing Step 2, ALL parameters MUST be validated according to the "Security Specification" above. Parameters that fail validation MUST NOT be used in command construction.
Step 2: Data Collection (Pure Git Commands)
Execute the following git commands in sequence to collect raw data. All commands run against the target repository directory โ no dependencies need to be installed.
> In the examples below, , , etc. are placeholders for validated safe values from Step 1.
#### 2.1 Contributor Overview
# List all contributors with commit counts (no email to protect privacy)
git -C shortlog -sn --all
#### 2.2 Per-Author Commit Details
For each author to be analyzed, execute the following commands (append --since, --until, parameters if a date range or branch was specified):
# Detailed commit log: hash, author name, date, message, file stats (no email)
git -C log --author="" --pretty=format:"%H|%an|%aI|%s" --numstatCommit count per hour of day (for work habit analysis)
git -C log --author="" --pretty=format:"%aI" | cut -c12-13 | sort | uniq -c | sort -rnCommit count per day of week (1=Mon, 7=Sun)
git -C log --author="" --pretty=format:"%ad" --date=format:"%u" | sort | uniq -c | sort -rnLines added/deleted summary
git -C log --author="" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2 } END { printf "added: %s, deleted: %s\n", add, subs }'Commit message lengths
git -C log --author="" --pretty=format:"%s" | awk '{ print length }'File types touched
git -C log --author="" --pretty=tformat: --name-only | grep -oE '\.[^./]+$' | sort | uniq -c | sort -rn | head -20Commits per day (for frequency analysis)
git -C log --author="" --pretty=format:"%ad" --date=short | sort | uniq -c | sort -rn | head -20Recent rework detection: files modified multiple times within 7-day windows
git -C log --author="" --pretty=format:"%ad %s" --date=short --name-only | head -200
#### 2.3 Code Quality Signals
# Bug fix commits (messages containing fix/bug/hotfix/patch)
git -C log --author="" --grep="fix\|bug\|hotfix\|patch" --oneline -i | wc -lRevert commits
git -C log --author="" --grep="revert" --oneline -i | wc -lLarge commits (>500 lines changed)
git -C log --author="" --pretty=format:"%H" --shortstat | grep -E "([5-9][0-9]{2}|[0-9]{4,}) insertion" | wc -lMerge commits
git -C log --author="" --merges --oneline | wc -lConventional commit check (feat/fix/chore/docs/style/refactor/test/perf/ci/build)
git -C log --author="" --pretty=format:"%s" | grep -cE "^(feat|fix|chore|docs|style|refactor|test|perf|ci|build)(\(.+\))?:"
#### 2.4 Team-Level Data
# Files with only one contributor (bus factor risk)
git -C log --pretty=format:"%an" --name-only | sort | uniq -c | sort -rn | head -30Active date range per author
git -C log --author="" --pretty=format:"%ad" --date=short | sort | sed -n '1p;$p'
Step 3: AI Analysis & Evaluation
Based on the collected raw data, analyze each developer across the following six dimensions, assigning a score of 1โ10 for each:
#### ๐ Dimension 1: Commit Habits
Analysis Factors:
Scoring Criteria:
#### โฐ Dimension 2: Work Habits
Analysis Factors:
Scoring Criteria:
> Note: Late-night/weekend coding is not inherently "bad," but persistent patterns may indicate process or resource issues.
#### ๐ Dimension 3: Development Efficiency
Analysis Factors:
Scoring Criteria:
#### ๐จ Dimension 4: Code Style
Analysis Factors:
Scoring Criteria:
#### ๐ Dimension 5: Code Quality
Analysis Factors:
Scoring Criteria:
#### ๐ Dimension 6: Engagement Index
> โ ๏ธ Usage Restriction: This index is intended solely as a macro-level reference for team collaboration patterns. It is strictly prohibited to use it as a basis for individual performance reviews, layoff decisions, compensation adjustments, or any other HR decisions. Users should understand the limitations of this index and bear corresponding ethical responsibility.
> Note: This index aims to objectively measure visible participation levels in the code repository as a supplementary reference. Git records only reflect code commit activity and do not represent a developer's full body of work (design, code review, communication, mentoring, etc. are not captured by Git).
Calculation Method (composite of the following signals, 0โ100 scale, lower = higher visible engagement):
| Signal | Weight | Description | |--------|--------|-------------| | Very low daily commits (<0.3) | 25% | Output during active days is too low | | Low active-day ratio (<30%) | 20% | Large time span but few actual working days | | Very low or negative net code growth | 20% | More code deleted than written | | Careless commit messages (avg <15 chars) | 15% | Not taking commit records seriously | | High churn rate + high rework rate | 20% | Large amount of wasted effort |
Levels:
> Important: This index is calculated solely from Git commit records and cannot reflect code reviews, architecture design, technical discussions, team mentoring, or other work that doesn't produce commits. A high score does NOT equal "slacking," and a low score does NOT equal "efficient." Please make judgments only after understanding the full context.
Step 4: Generate Report
The final report MUST include the following structure:
#### 4.1 Summary Table
| Developer | Commits | Lines +/- | Daily Avg | Weekend% | Late-Night% | Bug Fix% | Churn Rate | Engagement | Overall Score | |-----------|---------|-----------|-----------|----------|-------------|----------|------------|------------|---------------| | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
#### 4.2 Individual Developer Profiles
For each developer, output:
1. Data Dashboard: Key metrics for all six dimensions 2. AI Commentary: Serious, direct assessment of strengths and weaknesses (no sugarcoating) 3. Improvement Suggestions: Specific, actionable recommendations for each weakness 4. Six-Dimension Radar Score: 1โ10 per dimension 5. Overall Score: Weighted average (Commit Habits 15%, Work Habits 15%, Dev Efficiency 25%, Code Style 15%, Code Quality 20%, Engagement Index inverse 10%) 6. One-Line Summary: A sharp, memorable sentence summarizing this developer
#### 4.3 Team Cross-Comparison
Commentary Style Requirements
Important Notes
commands โ no pip packages, no Python/Node scripts installed or executed, cut, sort, uniq, awk, grep, sed, wc, head โ these must be available on the host (pre-installed on most Unix-like systems)Ethical Use Policy
Reports generated by this skill should adhere to the following principles:
1. Supplementary reference, NOT a decision-making basis: Reports are for internal team reference only, to help understand collaboration patterns and areas for improvement. They are strictly prohibited from being used directly for performance reviews, layoff decisions, compensation adjustments, or other HR decisions. 2. Transparency: If using this tool within a team, it is recommended to inform all analyzed team members in advance. 3. Full context: Any citation of the report should include complete limitation disclaimers to avoid being taken out of context. 4. Critique the work, not the person: The goal is to improve team collaboration processes and individual work methods, not to judge a person's worth.