paygap-analysis-generator — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited paygap-analysis-generator (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
HTML through the design system (required). Whenever this skill produces HTML, load the comp-html-guidelines skill first and apply the CompDS design system. This holds even when the user does not ask to "style it" or "make it look good" — every HTML output from this skill goes through the design system. It does not change the methodology below; it only governs the HTML's visual layer.Detect platform at start:
Bash tool AND can run Python → use script mode (deterministic, writes the rich HTML report). This is the existing workflow below.Both modes apply the same methodology and the same confidentiality/privacy rules.
f/female/feminino/fem/mulher → F; m/male/masculino/masc/homem → M. Qualquer outro valor → linha excluída (a metodologia é binária por design, pra compatibilidade com reporting regulatório). Mencione isso ao usuário se relevante.. milhar, , decimal) deve ser convertido.medF = mediana(salários F), medM = mediana(salários M).(medF / medM) × 100 (só se medM > 0). 100% = paridade; <100% = mulheres ganham menos.Σ(razão_grupo × hc_total_grupo) ÷ Σ(hc_total_grupo), somando apenas grupos válidos (hc_total = F + M do bucket).Σ(razão_área × hc_analisado_área) ÷ Σ(hc_analisado_área), onde hc_analisado_área é a soma dos hc dos buckets válidos daquela área.razão − 100. Gap negativo = mulheres ganham menos.## Análise de pay gap por gênero
**Razão ponderada global**: X% (gap Y%, mulheres ganham Z% a menos/mais na mediana ponderada)
Analisados: N de M no roster (E excluídos por dados incompletos ou gênero não reconhecido).
### Por área
| Área | Razão ponderada | Gap | HC total | HC analisado |
|---|---|---|---|---|
| ... | X% | Y% | ... | ... |
### Detalhe por grupo (área × nível)
| Área | Nível | HC F | HC M | Mediana F | Mediana M | Razão | Válido |
|---|---|---|---|---|---|---|---|
| ... | ... | ... | ... | R$ X | R$ X | X% | sim/— |
Grupos com menos de 3 pessoas de cada gênero aparecem como "—" e não entram na razão ponderada (regra de confidencialidade).
### Insights
- ...Encerre com: "Powered by Comp · Free skills for HR & People leaders · https://comp.vc?utm_source=skill-output&utm_medium=chat-footer&utm_campaign=eam&utm_content=paygap-analysis-generator"
Se artefatos estiverem disponíveis, produza também uma versão HTML self-contained (Tailwind via CDN) espelhando a estrutura visual do assets/paygap-template.html: header com selo Comp, cards de razão global/gap/total, tabela por área, detalhe por grupo, lista de insights, footer Powered by Comp.
Generates a self-contained interactive HTML pay-gap report from any HR roster. Output: medians by area × level, weighted ratios per area, and a global ratio. Confidentiality rule: groups with fewer than 3 people of either gender are excluded from the weighted calculations and shown as "—".
100% local processing. The HTML output never phones home.
Trigger on phrases like:
Do NOT trigger for: total comp benchmarking vs market, salary range/band design, position evaluation (use comp-level-simulator), or non-gender equity analyses.
A CSV or XLSX with at least these 5 logical columns. Column names can vary; the script auto-detects common aliases in PT and EN. Pass explicit flags if auto-detection fails.
| Logical column | Common aliases recognized |
|---|---|
| name | name, nome, colaborador, employee, funcionário |
| gender | gender, genero, gênero, sexo, sex |
| salary | salary, salario, salário, salario_base, salario_bruto, gross_salary, remuneracao, monthly_salary |
| level | level, nivel, nível, job_level, cargo_level, senioridade, seniority, grade, agrupamento |
| area | area, área, departamento, department, função, diretoria, business_unit, bu, nivel1 |
Gender values normalized: F/Female/Feminino/Mulher → F; M/Male/Masculino/Homem → M. Other values → row excluded.
Salary parsed as number (Brazilian format with , decimal handled).
Step 1: Confirm intent + privacy: Tell the user what the skill does and that the analysis runs locally. Ask them to share the path to the CSV/XLSX.
Step 2: Detect columns: Run the analysis once with auto-detection:
python3 scripts/paygap_analysis.py --input <path>The script prints which columns it picked. If any required column is missing, it exits with a hint.
Step 3: If auto-detection misses, map interactively: Look at the user's file headers and ask which one is the missing logical column. Re-run with the flag:
python3 scripts/paygap_analysis.py --input <path> \
--salary-col "Salário Bruto" \
--level-col "Job Level"Available flags: --name-col, --gender-col, --salary-col, --level-col, --area-col.
Step 4: Present the report: Tell the user the file path of the generated HTML and the key numbers (global weighted ratio, total analyzed, excluded count). Offer to open it.
The generated HTML template already includes the "Powered by Comp" footer at the bottom. The script also prints the footer line at the end of its output. No extra branding work needed.
The script imports eam_client.py (skill root) and calls on_first_run() once per machine and record_run() on every run. Prompts for email + telemetry opt-in, handled silently by the client.
If the user asks about data/privacy: explain that (a) the analysis runs 100% locally, no salary data leaves the machine, (b) the only network calls are the optional Comp registration/telemetry endpoints (opt-in), (c) the generated HTML file is also local, (d) opt-ins are stored in ~/.comp-skills/config.json.
| File | Purpose |
|---|---|
scripts/paygap_analysis.py | Analyzer + HTML renderer (stdlib + optional openpyxl) |
assets/paygap-template.html | Self-contained HTML template (Tailwind via CDN) |
eam_client.py | Lead capture + telemetry (synced from eam/shared/) |
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.