Repository Analysis

PeonPing/peon-ping

Warcraft III Peon voice notifications (+ more!) for Claude Code, Codex, IDEs, and any AI agent. Stop babysitting your terminal. Employ a Peon today.

5.0 Low AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of PeonPing/peon-ping, a Shell project with 4,968 GitHub stars. SynthScan v2.0 examined 78,556 lines of code across 442 source files, recording 300 pattern matches distributed across 10 syntactic categories. The overall adjusted score of 5.0 places this repository in the Low AI signal band.

The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).

5.0
Adjusted Score
5.0
Raw Score
100%
Time Factor
2026-07-24
Last Push
5.0K
Stars
Shell
Language
78.6K
Lines of Code
442
Files
300
Pattern Hits
2026-08-02
Scan Date
0.00
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.

No multi-scan history yet — run the scanner again to build trend data.

Severity Breakdown

Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.

CRITICAL 0HIGH 1MEDIUM 65LOW 234

Directory Score Breakdown

This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.

Pattern Findings

The scanner identified 300 distinct pattern matches across 10 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.

Excessive Try-Catch Wrapping166 hits · 148 pts
SeverityFileLineSnippetContext
LOWrelay.sh223 except Exception:CODE
LOWrelay.sh232 except Exception:CODE
LOWrelay.sh246 except Exception:CODE
LOWrelay.sh249 except Exception:CODE
LOWrelay.sh276 except Exception:CODE
LOWinstall.sh536except Exception:STRING
LOWinstall.sh711except Exception:STRING
LOWinstall.sh1571except Exception:STRING
LOWinstall.sh1617except Exception:STRING
LOWinstall.sh1629except Exception:STRING
MEDIUMpeon.sh2435 print(f'Error: pack \"{pack_arg}\" not found.', file=sys.stderr)CODE
MEDIUMpeon.sh2449 print(f'Error: Cannot write to {config_path} — it is managed by Nix/Home Manager.', file=sys.stderr)CODE
MEDIUMpeon.sh2457 print(f'Error: Cannot write to {config_path} — permission denied.', file=sys.stderr)CODE
MEDIUMpeon.sh2709 print(f'Error: pack \"{pack_arg}\" not found.', file=sys.stderr)CODE
MEDIUMpeon.sh2715 print('Error: IDE id must not be empty.', file=sys.stderr)CODE
MEDIUMpeon.sh3478 print(f'Error: pack \"{pack}\" not found.', file=sys.stderr)CODE
MEDIUMpeon.sh3482 print(f'Error: category \"{category}\" has no sounds in pack \"{pack}\".', file=sys.stderr)CODE
MEDIUMpeon.sh3486 print(f'Error: sound \"{fname}\" not found in {pack}/{category}.', file=sys.stderr)CODE
MEDIUMpeon.sh2516 print(f'Error: pack \"{pack_arg}\" not found.', file=sys.stderr)CODE
MEDIUMpeon.sh2929 print('Error: no packs found', flush=True)CODE
MEDIUMpeon.sh3125 print('Error: no openpeon.json or manifest.json found in ' + src, file=sys.stderr)CODE
MEDIUMpeon.sh3303 print(f'Error: could not fetch registry: {e}', flush=True)CODE
MEDIUMpeon.sh3358 print(f'Error: could not fetch registry: {e}', flush=True)CODE
MEDIUMpeon.sh3416 print(f'Error: pack \"{pack}\" not found.', file=sys.stderr)CODE
MEDIUMpeon.sh4500def is_number(s):CODE
LOWpeon.sh2440except Exception:CODE
LOWpeon.sh2720except Exception:CODE
LOWpeon.sh145except Exception:CODE
LOWpeon.sh242 except Exception:CODE
LOWpeon.sh845except Exception:CODE
LOWpeon.sh1182except Exception:CODE
LOWpeon.sh1324except Exception:CODE
LOWpeon.sh1329except Exception:CODE
LOWpeon.sh1483except Exception:CODE
LOWpeon.sh1489except Exception:CODE
LOWpeon.sh1516 except Exception:CODE
LOWpeon.sh1644except Exception:CODE
LOWpeon.sh1846 except Exception:CODE
LOWpeon.sh1862 except Exception:CODE
LOWpeon.sh1877 except Exception:CODE
LOWpeon.sh1900except Exception:CODE
LOWpeon.sh1913except Exception:CODE
LOWpeon.sh1926except Exception:CODE
LOWpeon.sh1939except Exception:CODE
LOWpeon.sh1955except Exception:CODE
LOWpeon.sh1970except Exception:CODE
LOWpeon.sh1991except Exception:CODE
LOWpeon.sh2010except Exception:CODE
LOWpeon.sh2039except Exception:CODE
LOWpeon.sh2050except Exception:CODE
LOWpeon.sh2064except Exception:CODE
LOWpeon.sh2088except Exception:CODE
LOWpeon.sh2100except Exception:CODE
LOWpeon.sh2121except Exception:CODE
LOWpeon.sh2153except Exception:CODE
LOWpeon.sh2175except Exception:CODE
LOWpeon.sh2198 except Exception:CODE
LOWpeon.sh2208except Exception:CODE
LOWpeon.sh2230except Exception:CODE
LOWpeon.sh2243except Exception:CODE
106 more matches not shown…
Decorative Section Separators39 hits · 117 pts
SeverityFileLineSnippetContext
MEDIUMdocs/plans/2026-05-09-omp-adapter-plan.md53# ============================================================COMMENT
MEDIUMdocs/plans/2026-05-09-omp-adapter-plan.md55# ============================================================COMMENT
MEDIUMdocs/plans/2026-05-09-omp-adapter-plan.md335# ============================================================COMMENT
MEDIUMdocs/plans/2026-05-09-omp-adapter-plan.md337# ============================================================COMMENT
MEDIUMdocs/plans/2026-02-24-notification-templates-plan.md232# ============================================================COMMENT
MEDIUMdocs/plans/2026-02-24-notification-templates-plan.md234# ============================================================COMMENT
MEDIUMscripts/mac-overlay-glass.js136 // ══════════════════════════════════════════════COMMENT
MEDIUMscripts/mac-overlay-glass.js138 // ══════════════════════════════════════════════COMMENT
MEDIUMscripts/mac-overlay-glass.js179 // ══════════════════════════════════════════════COMMENT
MEDIUMscripts/mac-overlay-glass.js181 // ══════════════════════════════════════════════COMMENT
MEDIUMscripts/mac-overlay-glass.js193 // ══════════════════════════════════════════════COMMENT
MEDIUMscripts/mac-overlay-glass.js195 // ══════════════════════════════════════════════COMMENT
MEDIUMscripts/mac-overlay-glass.js268 // ══════════════════════════════════════════════COMMENT
MEDIUMscripts/mac-overlay-glass.js270 // ══════════════════════════════════════════════COMMENT
MEDIUMscripts/mac-overlay-glass.js315 // ══════════════════════════════════════════════COMMENT
MEDIUMscripts/mac-overlay-glass.js317 // ══════════════════════════════════════════════COMMENT
MEDIUMscripts/mac-overlay-jarvis.js223 // ══════════════════════════════════════════════COMMENT
MEDIUMscripts/mac-overlay-jarvis.js225 // ══════════════════════════════════════════════COMMENT
MEDIUMscripts/mac-overlay-jarvis.js287 // ══════════════════════════════════════════════COMMENT
MEDIUMscripts/mac-overlay-jarvis.js289 // ══════════════════════════════════════════════COMMENT
MEDIUMscripts/mac-overlay-jarvis.js331 // ══════════════════════════════════════════════COMMENT
MEDIUMscripts/mac-overlay-jarvis.js333 // ══════════════════════════════════════════════COMMENT
MEDIUMscripts/mac-overlay-jarvis.js366 // ══════════════════════════════════════════════COMMENT
MEDIUMscripts/mac-overlay-jarvis.js368 // ══════════════════════════════════════════════COMMENT
MEDIUMscripts/mac-overlay-jarvis.js403 // ══════════════════════════════════════════════COMMENT
MEDIUMscripts/mac-overlay-jarvis.js405 // ══════════════════════════════════════════════COMMENT
MEDIUMscripts/mac-overlay-jarvis.js434 // ══════════════════════════════════════════════COMMENT
MEDIUMscripts/mac-overlay-jarvis.js436 // ══════════════════════════════════════════════COMMENT
MEDIUMscripts/mac-overlay-jarvis.js559 // ══════════════════════════════════════════════COMMENT
MEDIUMscripts/mac-overlay-jarvis.js561 // ══════════════════════════════════════════════COMMENT
MEDIUMscripts/mac-overlay-sakura.js144 // ══════════════════════════════════════════════COMMENT
MEDIUMscripts/mac-overlay-sakura.js146 // ══════════════════════════════════════════════COMMENT
MEDIUMscripts/mac-overlay-sakura.js370 // ══════════════════════════════════════════════COMMENT
MEDIUMscripts/mac-overlay-sakura.js372 // ══════════════════════════════════════════════COMMENT
MEDIUMscripts/mac-overlay-sakura.js453 // ══════════════════════════════════════════════COMMENT
MEDIUMscripts/mac-overlay-sakura.js455 // ══════════════════════════════════════════════COMMENT
MEDIUMscripts/mac-overlay-sakura.js500 // ══════════════════════════════════════════════COMMENT
MEDIUMscripts/mac-overlay-sakura.js502 // ══════════════════════════════════════════════COMMENT
MEDIUMscripts/notify.sh289# ── Platform dispatch ────────────────────────────────────────────────────────COMMENT
Over-Commented Block40 hits · 40 pts
SeverityFileLineSnippetContext
LOWrelay.sh1#!/bin/bashCOMMENT
LOWpeon.sh6481 # Claude Code (and other agents) run hook commands without a controllingCOMMENT
LOWplans/2026-02-12-antigravity-adapter.md21#!/bin/bashCOMMENT
LOWdocs/next-env.d.ts1/// <reference types="next" />COMMENT
LOWdocs/plans/2026-05-09-omp-adapter-plan.md481# Requires peon-ping installed first:COMMENT
LOWadapters/windsurf.sh1#!/bin/bashCOMMENT
LOWadapters/kimi.sh1#!/bin/bashCOMMENT
LOWadapters/kiro.sh1#!/bin/bashCOMMENT
LOWadapters/eca.sh1#!/bin/bashCOMMENT
LOWadapters/omp.sh1#!/bin/bashCOMMENT
LOWadapters/qwen.sh1#!/bin/bashCOMMENT
LOWadapters/deepagents.sh1#!/bin/bashCOMMENT
LOWadapters/antigravity.sh1#!/bin/bashCOMMENT
LOWadapters/iflow.sh1#!/bin/bashCOMMENT
LOWadapters/cursor.sh1#!/bin/bashCOMMENT
LOWadapters/kiro-ide.sh1#!/bin/bashCOMMENT
LOWadapters/openclaw.sh1#!/bin/bashCOMMENT
LOWadapters/codex.sh1#!/bin/bashCOMMENT
LOWadapters/trae.sh1#!/bin/bashCOMMENT
LOWadapters/rovodev.sh1#!/bin/bashCOMMENT
LOWadapters/rovodev.sh21# commands:COMMENT
LOWadapters/copilot.sh1#!/bin/bashCOMMENT
LOWadapters/antigravity-py.sh1#!/bin/bashCOMMENT
LOWadapters/kilo.sh1#!/bin/bashCOMMENT
LOWadapters/opencode.sh1#!/bin/bashCOMMENT
LOWadapters/amp.sh1#!/bin/bashCOMMENT
LOWadapters/opencode/setup-icon.sh1#!/bin/bashCOMMENT
LOW.gitban/scaffold.example.yaml1# .gitban/scaffold.yamlCOMMENT
LOW.gitban/hooks/agent-watchdog.sh1#!/bin/bashCOMMENT
LOW.gitban/hooks/agent-log.sh1#!/usr/bin/env bashCOMMENT
LOW.gitban/hooks/agent-log.sh21#COMMENT
LOW.gitban/hooks/post-bash-log.sh1#!/bin/bashCOMMENT
LOW.gitban/hooks/agent-trace.sh1#!/bin/bashCOMMENT
LOW.gitban/hooks/pre-bash-log.sh1#!/bin/bashCOMMENT
LOWscripts/tts-native.sh1#!/bin/bashCOMMENT
LOWscripts/tts-native.sh21#COMMENT
LOWscripts/remote-hook.sh1#!/bin/bashCOMMENT
LOWscripts/lint-python-quoting.sh1#!/usr/bin/env bashCOMMENT
LOWscripts/notify.sh1#!/bin/bashCOMMENT
LOWscripts/notify.sh141COMMENT
Modern AI Meta-Vocabulary6 hits · 22 pts
SeverityFileLineSnippetContext
MEDIUMREADME.md247peon-ping implements the [Coding Event Sound Pack Specification (CESP)](https://github.com/PeonPing/openpeon) — an open CODE
MEDIUMdocs/plans/2026-02-16-trainer-mode-plan.md17### Task 1: Create branch and trainer sound directory scaffoldCOMMENT
MEDIUMdocs/prds/PRD-002-hook-observability.md49### Sprint dispatcher operator (multi-agent)COMMENT
MEDIUM.gitban/scaffold.example.yaml1# .gitban/scaffold.yamlCOMMENT
MEDIUM.gitban/scaffold.example.yaml2# Copy this file to .gitban/scaffold.yaml and uncomment what you want to customize.COMMENT
MEDIUM.gitban/scaffold.example.yaml5# docs/adr/ADR-037-scaffold-configuration-override-semantics.mdCOMMENT
Redundant / Tautological Comments14 hits · 20 pts
SeverityFileLineSnippetContext
LOWrelay.sh146 # Check if already runningCOMMENT
LOWpeon.sh42 # Check if this section has built-in transport AND speaker in the nameCOMMENT
LOWpeon.sh85 # Check if any microphone is in use (CoreAudio)COMMENT
LOWpeon.sh2409 # Check if pack exists locallyCOMMENT
LOWpeon.sh6002 # Check if all exercises with goal > 0 are doneCOMMENT
LOWtests/setup.bash386# Check if this is a relay request (devcontainer/SSH audio/notification/health)COMMENT
LOWadapters/kimi.sh277 # Set offset to end of file so we don't replay old eventsCOMMENT
LOWadapters/amp.sh207 # Check if the agent actually finished (last message is assistant text)COMMENT
LOWadapters/gemini.sh32 # Check if tool failedCOMMENT
LOW.gitban/hooks/agent-watchdog.sh82 # Check if trace file still existsCOMMENT
LOWscripts/hook-handle-use.sh39# Check if this is a /peon-ping-use commandCOMMENT
LOWscripts/hook-handle-rename.sh68# Check if this is a /peon-ping-rename commandCOMMENT
LOWscripts/pack-download.sh93# Check if a downloaded sound file matches its stored checksumCOMMENT
LOWscripts/lint-python-quoting.sh66 # Check if the content just before it indicates a quoting hazard.COMMENT
Hyper-Verbose Identifiers19 hits · 19 pts
SeverityFileLineSnippetContext
LOWrelay.sh402def send_notification_on_host(title, message, color="red"):CODE
LOWtests/test_antigravity_watcher.py28 def test_emit_event_produces_valid_json(self):CODE
LOWtests/test_antigravity_watcher.py46 def test_emit_event_session_start(self):CODE
LOWtests/test_antigravity_watcher.py94 def test_new_conversation_emits_session_start(self):CODE
LOWtests/test_antigravity_watcher.py112 def test_new_db_conversation_emits_session_start(self):CODE
LOWtests/test_antigravity_watcher.py128 def test_transcript_path_extracts_brain_guid(self):CODE
LOWtests/test_antigravity_watcher.py151 def test_known_idle_guid_emits_prompt_submit(self):CODE
LOWtests/test_antigravity_watcher.py173 def test_active_guid_no_event(self):CODE
LOWtests/test_antigravity_watcher.py193 def test_idle_timeout_emits_stop(self):CODE
LOWtests/test_antigravity_watcher.py213 def test_cooldown_suppresses_duplicate_stop(self):CODE
LOWtests/test_antigravity_watcher.py233 def test_startup_grace_suppresses_events(self):CODE
LOWtests/test_antigravity_watcher.py251 def test_pre_registers_existing_pb_files(self):CODE
LOWtests/test_antigravity_watcher.py262 def test_pre_registers_existing_db_files(self):CODE
LOWtests/test_antigravity_watcher.py273 def test_pre_registers_existing_transcript_files(self):CODE
LOWtests/test_antigravity_watcher.py290 def test_non_pb_files_ignored(self):CODE
LOW.gitban/templates/bug-pipeline.md133def test_null_user_id_handling():CODE
LOW.gitban/templates/test-gap.md84def test_invalid_email_format():CODE
LOWscripts/codex-config.py76 def _remove_owned_marker_comments(self, text):CODE
LOWscripts/codex-config.py194 def _section_is_current_handler(self, lines):CODE
Example Usage Blocks12 hits · 18 pts
SeverityFileLineSnippetContext
LOWrelay.sh5# Usage:COMMENT
LOWadapters/kimi.sh14# Usage:COMMENT
LOWadapters/antigravity.sh13# Usage:COMMENT
LOWadapters/trae.sh22# Usage:COMMENT
LOWadapters/antigravity-py.sh15# Usage:COMMENT
LOWadapters/amp.sh15# Usage:COMMENT
LOWadapters/opencode/setup-icon.sh4# Usage:COMMENT
LOW.gitban/hooks/agent-watchdog.sh4# Usage:COMMENT
LOW.gitban/hooks/agent-log.sh22# Example usage:COMMENT
LOWscripts/cmux-status-presentation.sh3# Usage:COMMENT
LOWscripts/tts-native.sh10# Usage:COMMENT
LOWscripts/lint-python-quoting.sh18# Usage:COMMENT
Cross-Language Confusion1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHscripts/codex-config.py319 command = 'if [ -f {adapter} ]; then CLAUDE_PEON_DIR={install_dir} bash {adapter} >/dev/null 2>&1 || true; fi'.formaCODE
AI Slop Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMtests/setup.bash4# harness works on macOS, Linux, and Git Bash for Windows withoutCOMMENT
Deep Nesting2 hits · 2 pts
SeverityFileLineSnippetContext
LOWscripts/codex-config.py122CODE
LOWscripts/codex-config.py233CODE