Repository Analysis

pixel-agents-hq/pixel-agents

Pixel office.

12.6 Low AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of pixel-agents-hq/pixel-agents, a TypeScript project with 8,772 GitHub stars. SynthScan v2.0 examined 66,514 lines of code across 260 source files, recording 319 pattern matches distributed across 4 syntactic categories. The overall adjusted score of 12.6 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).

12.6
Adjusted Score
12.6
Raw Score
100%
Time Factor
2026-07-31
Last Push
8.8K
Stars
TypeScript
Language
66.5K
Lines of Code
260
Files
319
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 0MEDIUM 262LOW 57

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 319 distinct pattern matches across 4 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.

Decorative Section Separators261 hits · 778 pts
SeverityFileLineSnippetContext
MEDIUMcore/asyncapi.yaml76 # ── Top-level discriminated unions ────────────────────────────COMMENT
MEDIUMcore/asyncapi.yaml145 # ── Server message variants ────────────────────────────────────COMMENT
MEDIUMcore/asyncapi.yaml718 # ── Client message variants ────────────────────────────────────COMMENT
MEDIUMcore/asyncapi.yaml937 # ── Supporting schemas ─────────────────────────────────────────COMMENT
MEDIUMcore/src/schemas.ts12// ── Agent State ──────────────────────────────────────────────COMMENT
MEDIUMcore/src/schemas.ts44// ── Layout ───────────────────────────────────────────────────COMMENT
MEDIUMcore/src/schemas.ts88// ── Sprites & Assets ─────────────────────────────────────────COMMENT
MEDIUMcore/src/schemas.ts120// ── Hook Events ──────────────────────────────────────────────COMMENT
MEDIUMcore/src/schemas.ts132// ── Disposable ───────────────────────────────────────────────COMMENT
MEDIUMcore/src/constants.ts9// ── Hook API ─────────────────────────────────────────────────COMMENT
MEDIUMcore/src/constants.ts16// ── Display ──────────────────────────────────────────────────COMMENT
MEDIUMcore/src/constants.ts21// ── Transport ────────────────────────────────────────────────COMMENT
MEDIUMcore/src/adapter.ts16 // ── Per-adapter persisted state (agents + seats) ────────────────────COMMENT
MEDIUMcore/src/adapter.ts24 // ── User-level settings (shared file, namespaced per adapter) ─────COMMENT
MEDIUMcore/src/provider.ts12// ── Normalized Events (all provider types produce these) ──────COMMENT
MEDIUMcore/src/provider.ts65// ── Hook-based Provider (CLIs with hooks APIs) ────────────────COMMENT
MEDIUMcore/src/assets/loader.ts21// ── Helpers ──────────────────────────────────────────────────────────────────COMMENT
MEDIUMcore/src/assets/loader.ts35// ── Decoders ─────────────────────────────────────────────────────────────────COMMENT
MEDIUMcore/src/assets/constants.ts8// ── PNG / Asset Parsing ─────────────────────────────────────COMMENT
MEDIUMcore/src/assets/constants.ts21// ── Pet Sprite Dimensions (96×96 spritesheet) ──────────────COMMENT
MEDIUMcore/src/assets/constants.ts32// ── Carpet auto-tile parsing ────────────────────────────────COMMENT
MEDIUMcore/src/assets/pngDecoder.ts35// ── Sprite decoding ──────────────────────────────────────────COMMENT
MEDIUMcore/src/assets/manifestUtils.ts8// ── Manifest types ──────────────────────────────────────────COMMENT
MEDIUMcore/src/assets/build.ts16// ── Furniture catalog ─────────────────────────────────────────────────────────COMMENT
MEDIUMcore/src/assets/build.ts100// ── Asset index ───────────────────────────────────────────────────────────────COMMENT
MEDIUMserver/__tests__/configPersistence.test.ts27 // ── parseAreaMappings ────────────────────────────────────────COMMENT
MEDIUMserver/__tests__/configPersistence.test.ts85 // ── readConfig / writeConfig round-trip ──────────────────────COMMENT
MEDIUMserver/__tests__/backgroundAgents.test.ts238 // ── Unnamed spawn = Sub-agent (shadow-watched) ──────────────────────COMMENT
MEDIUMserver/__tests__/backgroundAgents.test.ts435 // ── Foreground spawns (open Agent tool, no async result) ───────────COMMENT
MEDIUMserver/__tests__/backgroundAgents.test.ts494 // ── Named spawn = Teammate ──────────────────────────────────────────COMMENT
MEDIUMserver/__tests__/backgroundAgents.test.ts609 // ── Shared gate ─────────────────────────────────────────────────────COMMENT
MEDIUMserver/__tests__/hookEventHandler.test.ts73 // ── PermissionRequest ───────────────────────────────────────COMMENT
MEDIUMserver/__tests__/hookEventHandler.test.ts122 // ── Notification ────────────────────────────────────────────COMMENT
MEDIUMserver/__tests__/hookEventHandler.test.ts160 // ── Stop ────────────────────────────────────────────────────COMMENT
MEDIUMserver/__tests__/hookEventHandler.test.ts208 // ── hookDelivered ───────────────────────────────────────────COMMENT
MEDIUMserver/__tests__/hookEventHandler.test.ts223 // ── Buffering ───────────────────────────────────────────────COMMENT
MEDIUMserver/__tests__/hookEventHandler.test.ts293 // ── Auto-discovery ──────────────────────────────────────────COMMENT
MEDIUMserver/__tests__/hookEventHandler.test.ts307 // ── Dispose ─────────────────────────────────────────────────COMMENT
MEDIUMserver/__tests__/hookEventHandler.test.ts315 // ── SessionStart ────────────────────────────────────────────COMMENT
MEDIUMserver/__tests__/hookEventHandler.test.ts384 // ── SessionEnd ──────────────────────────────────────────────COMMENT
MEDIUMserver/__tests__/hookEventHandler.test.ts466 // ── PreToolUse / PostToolUse ─────────────────────────────────COMMENT
MEDIUMserver/__tests__/hookEventHandler.test.ts541 // ── Pending external session confirmation ────────────────────COMMENT
MEDIUMserver/__tests__/hookEventHandler.test.ts585 // ── Resume ──────────────────────────────────────────────────COMMENT
MEDIUMserver/__tests__/hookEventHandler.test.ts687 // ── Provider-agnostic (optional transcript_path) ────────────COMMENT
MEDIUMserver/__tests__/hookEventHandler.test.ts766 // ── Basic subagent regression (Agent Teams feature OFF) ─────────────COMMENT
MEDIUMserver/__tests__/fileStateAdapter.test.ts102 // ── Per-namespace state file (agents + seats) ───────────────COMMENT
MEDIUMserver/__tests__/clientMessageHandler.test.ts83 // ── saveAreaMappings ─────────────────────────────────────────COMMENT
MEDIUMserver/__tests__/clientMessageHandler.test.ts128 // ── setShowAreas ─────────────────────────────────────────────COMMENT
MEDIUMserver/__tests__/clientMessageHandler.test.ts142 // ── handleWebviewReady ordering ──────────────────────────────COMMENT
MEDIUMserver/__tests__/fileWatcherDismissal.test.ts106 // ── dismissedJsonlFiles: user-close cooldown ───────────────────────COMMENT
MEDIUMserver/__tests__/fileWatcherDismissal.test.ts139 // ── clearDismissedFiles: permanent block ───────────────────────────COMMENT
MEDIUMserver/__tests__/fileWatcherDismissal.test.ts177 // ── seededMtimes: mtime-change detection ───────────────────────────COMMENT
MEDIUMserver/__tests__/fileWatcherDismissal.test.ts222 // ── pendingClearFiles: two-tick delay for /clear content ───────────COMMENT
MEDIUMserver/__tests__/fileWatcherDismissal.test.ts255 // ── scanForNewJsonlFiles (project-scan helper) ─────────────────────COMMENT
MEDIUMserver/__tests__/fileWatcherDismissal.test.ts528 // ── Constants sanity check ────────────────────────────────────────COMMENT
MEDIUMserver/__tests__/sessionRouter.test.ts18 // ── Session → Agent mapping ────────────────────────────────────────COMMENT
MEDIUMserver/__tests__/sessionRouter.test.ts43 // ── Pending external sessions ──────────────────────────────────────COMMENT
MEDIUMserver/__tests__/sessionRouter.test.ts68 // ── Event buffering ────────────────────────────────────────────────COMMENT
MEDIUMserver/__tests__/sessionRouter.test.ts114 // ── Lifecycle ──────────────────────────────────────────────────────COMMENT
MEDIUMserver/src/agentStateStore.ts52 // ── Adapter ──────────────────────────────────────────────────COMMENT
201 more matches not shown…
Hyper-Verbose Identifiers42 hits · 43 pts
SeverityFileLineSnippetContext
LOWserver/src/fileWatcher.ts572export function setTeammateRemovalCallback(cb: (teammateAgentId: number) => void): void {CODE
LOWserver/src/fileWatcher.ts582export function setTeammateRegisterCallback(CODE
LOWserver/src/fileWatcher.ts819export function scanForBackgroundAgentFiles(CODE
LOWserver/src/fileWatcher.ts950export function scanTeamConfigsForRemovals(agents: AgentStateStore): number[] {CODE
LOWserver/src/fileWatcher.ts1045export function adoptExternalSessionFromHook(CODE
LOWserver/src/fileWatcher.ts1235export function startExternalSessionScanning(CODE
LOWserver/src/fileWatcher.ts1547export function startStaleExternalAgentCheck(CODE
LOWserver/src/teamUtils.ts49export function hasPromotedBackgroundAgent(CODE
LOWserver/src/assetLoader.ts522export async function loadExternalCharacterSprites(CODE
LOWserver/src/assetLoader.ts584export function sendCharacterSpritesToWebview(CODE
LOWserver/src/transcriptParser.ts52export function setBackgroundAgentDetectedCallback(cb: (leadAgentId: number) => void): void {CODE
LOWserver/src/transcriptParser.ts61export function setBackgroundAgentCompletedCallback(CODE
LOWserver/src/transcriptParser.ts71export function notifyBackgroundAgentCompleted(leadAgentId: number, toolUseId: string): void {CODE
LOWwebview-ui/src/office/layout/layoutSerializer.ts27export function layoutToFurnitureInstances(furniture: PlacedFurniture[]): FurnitureInstance[] {CODE
LOWwebview-ui/src/office/sprites/carpetTiles.ts238function getDualColorizedCarpetSprite(CODE
LOWscripts/asset-manager.html1914function updateGroupMembershipDisplay(asset) {CODE
LOWscripts/jsonl-viewer.html1085function openDetailForCurrentSession(jumpToRecord) {CODE
LOWe2e/global-setup.ts91function patchProductJsonForWindows(vscodePath: string): void {CODE
LOWe2e/tests/claude/hooks-off/matrix.spec.ts44async function expectExternalAgentAdoption(frame: Frame): Promise<void> {CODE
LOWe2e/tests/claude/hooks-off/carpet.spec.ts273function firstDefaultFurnitureType(): string {CODE
LOWe2e/helpers/webview.ts497export async function configureHookServerTestSettings(frame: WebviewSurface): Promise<void> {CODE
LOWe2e/helpers/lifecycle.ts16export function withNamedInlineTeammateSession(CODE
LOWe2e/helpers/lifecycle.ts31export function withInlineTeammateSessions(CODE
LOWe2e/helpers/lifecycle.ts42export function withInlineTeammateSession(CODE
LOWe2e/helpers/team.ts51export function buildAssistantToolUseRecord(CODE
LOWe2e/helpers/team.ts59export function buildAssistantToolUseBatchRecord(CODE
LOWe2e/helpers/team.ts88export function buildUserToolResultRecord(CODE
LOWe2e/helpers/team.ts95export function buildUserToolResultBatchRecord(CODE
LOWe2e/helpers/team.ts117export function buildTeammateSpawnResultRecord(CODE
LOWe2e/helpers/team.ts136export function buildAsyncAgentLaunchResultRecord(toolUseId: string): Record<string, unknown> {CODE
LOWe2e/helpers/team.ts145export function buildBackgroundAgentDoneRecord(toolUseId: string): Record<string, unknown> {CODE
LOWe2e/helpers/team.ts159export function buildAssistantUsageRecord(cacheReadTokens: number): Record<string, unknown> {CODE
LOWe2e/helpers/external-monitor.ts15export function getExternalNarrationLogPath(tmpHome: string): string {CODE
LOWe2e/helpers/mock-claude.ts280export async function arrangeNextClaudeInvocation(CODE
LOWe2e/helpers/mock-claude.ts327export async function killTrackedExternalProcesses(): Promise<void> {CODE
LOWe2e/helpers/mock-claude.ts340export async function spawnExternalClaudeScenario(options: {CODE
LOWe2e/helpers/hooks.ts197export function notificationPermissionPrompt(sessionId: string): HookEventPayload {CODE
LOWe2e/helpers/internal-agent.ts59export async function spawnInternalAgentAndWait(CODE
LOWe2e/helpers/internal-agent.ts108export async function spawnInternalAgentAndWaitForInvocation(CODE
LOWe2e/helpers/office.ts71export async function expectOverlayVisibleWithTexts(CODE
LOWe2e/helpers/office.ts79export async function expectOverlayVisibleForAgent(CODE
LOWe2e/helpers/office.ts188export async function expectTeammateSeatedNextToLead(CODE
Over-Commented Block15 hits · 14 pts
SeverityFileLineSnippetContext
LOW.gitleaks.toml1# Gitleaks configurationCOMMENT
LOWserver/src/fileWatcher.ts1161 // mock-claude scenarios: tool_use at t=1s, scanner ticks at t=3s). If weCOMMENT
LOWserver/src/fileWatcher.ts1381 // external adoption. Newer harnesses run each spawned agent as its ownCOMMENT
LOWwebview-ui/src/office/engine/existingAgents.ts1// webview-ui/src/office/engine/existingAgents.tsCOMMENT
LOWscripts/asset-manager.html61 .add-mode-bar { padding: 5px 10px; background: #1a3a1a; border-bottom: 1px solid #2a5a2a; display: flex; gap: 10px; COMMENT
LOWe2e/playwright.config.ts41 },COMMENT
LOWe2e/tests/claude/hooks-off/lifecycle.spec.ts121 // but the user immediately types /resume (or aborts and runs claude --resume)COMMENT
LOWe2e/tests/claude/hooks-off/lifecycle.spec.ts781 //COMMENT
LOWe2e/tests/claude/hooks-off/lifecycle.spec.ts861 });COMMENT
LOWe2e/tests/claude/hooks-on/lifecycle.spec.ts1101 });COMMENT
LOWe2e/tests/claude/hooks-on/lifecycle.spec.ts1361 { timeout: 5_000 },COMMENT
LOWe2e/tests/claude/hooks-on/lifecycle.spec.ts1561 });COMMENT
LOWe2e/tests/claude/hooks-on/lifecycle.spec.ts1601 });COMMENT
LOWe2e/helpers/launch.ts121 // processes see the long path via %CD%. .native uses GetFinalPathNameByHandleWCOMMENT
LOWe2e/helpers/launch.ts201 // VS Code user settings for the isolated profile. Together withCOMMENT
Modern AI Meta-Vocabulary1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMCHANGELOG.md9- **Context gauge on every agent** ([#351](https://github.com/pixel-agents-hq/pixel-agents/pull/351)) — Shows each agentCODE