Department of Vibe Code Assessment

Report Card

Student: josephmqiu/game-theory-modelTerm: March 22, 2026
Grade
0
Needs Work

Grades by Subject

Subject
Grade
Score
Issues
Security
A
100
Dependencies
B
82
2
Documentation
A
100
Test Coverage
A
94
1
Code Structure
F
0
75
Error Handling
B
82
3
Share on X

Teacher's Comments

Joseph, I’ve graded 374 files and over half a million lines of code across this project and, frankly, it feels like you handed in a novel instead of homework. The test coverage and security look surprisingly sharp, so you did some reading — but the sprawling 2000-line files and nine levels of nesting in skia-canvas.tsx read like a cry for help. You need to break down this monster before it breaks you (or the build). Show me you can organize your thoughts as well as you cover your tests next time.

Error Handling:Three issues isn’t perfect, but at least you’re catching some flames instead of letting them roast the whole kitchen.
Code Structure:Zero points and 75 issues — this isn't a codebase, it's a spaghetti sculpture. Please see me after class.
Test Coverage:A solid 94 and just one issue; well, well, someone actually bothered to do their homework.
Security:Perfect score and zero issues — consider this your shining halo in an otherwise dim report.
Dependencies:Two issues mean you’ve got room to clean up your imports before they clutter the hallways.
Documentation:Flawless at 100; your README might actually be readable, which is a rare treat.

Areas for Improvement

(81)
high·electron/main.ts

Large file (769 lines) — this is a real problem

769 LOC, threshold is 400
electron/main.ts is 769 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.
high·server/agents/analysis-agent.ts

Large file (969 lines) — this is a real problem

969 LOC, threshold is 400
server/agents/analysis-agent.ts is 969 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.
high·server/api/ai/chat.ts

Large file (1230 lines) — this is a real problem

1230 LOC, threshold is 400
server/api/ai/chat.ts is 1230 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.
high·server/services/ai/claude-adapter.ts

Large file (825 lines) — this is a real problem

825 LOC, threshold is 400
server/services/ai/claude-adapter.ts is 825 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.
high·server/services/ai/codex-adapter.ts

Large file (1229 lines) — this is a real problem

1229 LOC, threshold is 400
server/services/ai/codex-adapter.ts is 1229 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.
high·server/services/analysis-service.ts

Large file (2030 lines) — this is a real problem

2030 LOC, threshold is 400
server/services/analysis-service.ts is 2030 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.
high·src/canvas/skia/skia-canvas.tsx

Large file (1037 lines) — this is a real problem

1037 LOC, threshold is 400
src/canvas/skia/skia-canvas.tsx is 1037 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.
high·src/canvas/skia/skia-canvas.tsx

Deep nesting detected (9 levels) — refactor this

Max nesting depth: 9
src/canvas/skia/skia-canvas.tsx has 9 levels of nesting. Use early returns, extract helper functions, or restructure conditionals to flatten the code.
high·src/canvas/skia/skia-engine.ts

Large file (1289 lines) — this is a real problem

1289 LOC, threshold is 400
src/canvas/skia/skia-engine.ts is 1289 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.
high·src/canvas/skia/skia-renderer.ts

Large file (1631 lines) — this is a real problem

1631 LOC, threshold is 400
src/canvas/skia/skia-renderer.ts is 1631 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.
high·src/canvas/skia/skia-renderer.ts

Deep nesting detected (9 levels) — refactor this

Max nesting depth: 9
src/canvas/skia/skia-renderer.ts has 9 levels of nesting. Use early returns, extract helper functions, or restructure conditionals to flatten the code.
high·src/components/panels/ai-chat-panel.tsx

Large file (785 lines) — this is a real problem

785 LOC, threshold is 400
src/components/panels/ai-chat-panel.tsx is 785 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.
high·src/components/panels/entity-overlay-card.tsx

Large file (1386 lines) — this is a real problem

1386 LOC, threshold is 400
src/components/panels/entity-overlay-card.tsx is 1386 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.
high·src/components/shared/agent-settings-dialog.tsx

Large file (922 lines) — this is a real problem

922 LOC, threshold is 400
src/components/shared/agent-settings-dialog.tsx is 922 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.
high·src/mcp/server.ts

Large file (1675 lines) — this is a real problem

1675 LOC, threshold is 400
src/mcp/server.ts is 1675 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.
high·src/mcp/tools/design-skeleton.ts

Deep nesting detected (9 levels) — refactor this

Max nesting depth: 9
src/mcp/tools/design-skeleton.ts has 9 levels of nesting. Use early returns, extract helper functions, or restructure conditionals to flatten the code.
high·src/services/ai/design-canvas-ops.ts

Deep nesting detected (8 levels) — refactor this

Max nesting depth: 8
src/services/ai/design-canvas-ops.ts has 8 levels of nesting. Use early returns, extract helper functions, or restructure conditionals to flatten the code.
high·src/services/ai/design-parser.ts

Deep nesting detected (11 levels) — refactor this

Max nesting depth: 11
src/services/ai/design-parser.ts has 11 levels of nesting. Use early returns, extract helper functions, or restructure conditionals to flatten the code.
high·src/services/ai/design-validation-fixes.ts

Deep nesting detected (15 levels) — refactor this

Max nesting depth: 15
src/services/ai/design-validation-fixes.ts has 15 levels of nesting. Use early returns, extract helper functions, or restructure conditionals to flatten the code.
high·src/services/ai/design-validation.ts

Deep nesting detected (19 levels) — refactor this

Max nesting depth: 19
src/services/ai/design-validation.ts has 19 levels of nesting. Use early returns, extract helper functions, or restructure conditionals to flatten the code.
high·src/services/ai/icon-resolver.ts

Large file (1059 lines) — this is a real problem

1059 LOC, threshold is 400
src/services/ai/icon-resolver.ts is 1059 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.
high·src/services/ai/icon-resolver.ts

Deep nesting detected (10 levels) — refactor this

Max nesting depth: 10
src/services/ai/icon-resolver.ts has 10 levels of nesting. Use early returns, extract helper functions, or restructure conditionals to flatten the code.
high·src/stores/ai-store.ts

Deep nesting detected (8 levels) — refactor this

Max nesting depth: 8
src/stores/ai-store.ts has 8 levels of nesting. Use early returns, extract helper functions, or restructure conditionals to flatten the code.
high·src/stores/document-store.ts

Large file (767 lines) — this is a real problem

767 LOC, threshold is 400
src/stores/document-store.ts is 767 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.
high·src/types/entity.ts

Large file (841 lines) — this is a real problem

841 LOC, threshold is 400
src/types/entity.ts is 841 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.
high·src/uikit/kit-utils.ts

Deep nesting detected (9 levels) — refactor this

Max nesting depth: 9
src/uikit/kit-utils.ts has 9 levels of nesting. Use early returns, extract helper functions, or restructure conditionals to flatten the code.
high·src/uikit/kits/shadcn-kit.ts

Large file (765 lines) — this is a real problem

765 LOC, threshold is 400
src/uikit/kits/shadcn-kit.ts is 765 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.
high

No lock file found (package-lock.json, yarn.lock, or pnpm-lock.yaml)

Missing lock file
Add a lock file to ensure reproducible installs. Run `npm install`, `yarn install`, or `pnpm install` to generate one.
medium·scripts/electron-dev.ts

High console.log density (7 instances) — likely debug code left in production

7 console.log calls in 138 lines
In scripts/electron-dev.ts, there are 7 console.log statements. Replace with a proper logging library or remove debug logs before shipping.
medium·src/services/ai/design-validation-fixes.ts

High console.log density (8 instances) — likely debug code left in production

8 console.log calls in 393 lines
In src/services/ai/design-validation-fixes.ts, there are 8 console.log statements. Replace with a proper logging library or remove debug logs before shipping.
medium·src/services/ai/design-validation.ts

High console.log density (8 instances) — likely debug code left in production

8 console.log calls in 584 lines
In src/services/ai/design-validation.ts, there are 8 console.log statements. Replace with a proper logging library or remove debug logs before shipping.
medium

Low test-to-source ratio (22.1%)

58 test files, 276 source files
Test coverage is below average (22.1%). Consider adding more test coverage, especially for edge cases.
medium·server/agents/analysis-agent.ts

Deep nesting detected (7 levels) — getting hard to follow

Max nesting depth: 7
server/agents/analysis-agent.ts has 7 levels of nesting. Use early returns, extract helper functions, or restructure conditionals to flatten the code.
medium·server/services/ai/claude-adapter.ts

Deep nesting detected (6 levels) — getting hard to follow

Max nesting depth: 6
server/services/ai/claude-adapter.ts has 6 levels of nesting. Use early returns, extract helper functions, or restructure conditionals to flatten the code.
medium·server/services/entity-graph-service.ts

Large file (534 lines) — should probably split this

534 LOC, threshold is 400
server/services/entity-graph-service.ts is 534 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.
medium·server/services/revalidation-service.ts

Large file (505 lines) — should probably split this

505 LOC, threshold is 400
server/services/revalidation-service.ts is 505 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.
medium·src/canvas/canvas-layout-engine.ts

Large file (510 lines) — should probably split this

510 LOC, threshold is 400
src/canvas/canvas-layout-engine.ts is 510 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.
medium·src/canvas/canvas-text-measure.ts

Deep nesting detected (6 levels) — getting hard to follow

Max nesting depth: 6
src/canvas/canvas-text-measure.ts has 6 levels of nesting. Use early returns, extract helper functions, or restructure conditionals to flatten the code.
medium·src/canvas/skia/skia-engine.ts

Deep nesting detected (6 levels) — getting hard to follow

Max nesting depth: 6
src/canvas/skia/skia-engine.ts has 6 levels of nesting. Use early returns, extract helper functions, or restructure conditionals to flatten the code.
medium·src/canvas/skia/skia-overlays.ts

Large file (645 lines) — should probably split this

645 LOC, threshold is 400
src/canvas/skia/skia-overlays.ts is 645 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.
medium·src/canvas/skia/skia-path-utils.ts

Deep nesting detected (6 levels) — getting hard to follow

Max nesting depth: 6
src/canvas/skia/skia-path-utils.ts has 6 levels of nesting. Use early returns, extract helper functions, or restructure conditionals to flatten the code.
medium·src/components/panels/chat-message.tsx

Large file (707 lines) — should probably split this

707 LOC, threshold is 400
src/components/panels/chat-message.tsx is 707 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.
medium·src/components/panels/layout-section.tsx

Large file (540 lines) — should probably split this

540 LOC, threshold is 400
src/components/panels/layout-section.tsx is 540 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.
medium·src/components/panels/node-preview-svg.tsx

Large file (511 lines) — should probably split this

511 LOC, threshold is 400
src/components/panels/node-preview-svg.tsx is 511 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.
medium·src/components/panels/node-preview-svg.tsx

Deep nesting detected (6 levels) — getting hard to follow

Max nesting depth: 6
src/components/panels/node-preview-svg.tsx has 6 levels of nesting. Use early returns, extract helper functions, or restructure conditionals to flatten the code.
medium·src/mcp/tools/batch-design.ts

Large file (535 lines) — should probably split this

535 LOC, threshold is 400
src/mcp/tools/batch-design.ts is 535 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.
medium·src/mcp/tools/batch-design.ts

Deep nesting detected (7 levels) — getting hard to follow

Max nesting depth: 7
src/mcp/tools/batch-design.ts has 7 levels of nesting. Use early returns, extract helper functions, or restructure conditionals to flatten the code.
medium·src/mcp/utils/node-operations.ts

Deep nesting detected (6 levels) — getting hard to follow

Max nesting depth: 6
src/mcp/utils/node-operations.ts has 6 levels of nesting. Use early returns, extract helper functions, or restructure conditionals to flatten the code.
medium·src/mcp/utils/svg-node-parser.ts

Large file (561 lines) — should probably split this

561 LOC, threshold is 400
src/mcp/utils/svg-node-parser.ts is 561 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.
medium·src/mcp/utils/svg-node-parser.ts

Deep nesting detected (6 levels) — getting hard to follow

Max nesting depth: 6
src/mcp/utils/svg-node-parser.ts has 6 levels of nesting. Use early returns, extract helper functions, or restructure conditionals to flatten the code.
medium·src/services/ai/ai-service.ts

Deep nesting detected (7 levels) — getting hard to follow

Max nesting depth: 7
src/services/ai/ai-service.ts has 7 levels of nesting. Use early returns, extract helper functions, or restructure conditionals to flatten the code.
medium·src/services/ai/design-canvas-ops.ts

Large file (713 lines) — should probably split this

713 LOC, threshold is 400
src/services/ai/design-canvas-ops.ts is 713 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.
medium·src/services/ai/design-validation.ts

Large file (584 lines) — should probably split this

584 LOC, threshold is 400
src/services/ai/design-validation.ts is 584 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.
medium·src/services/ai/orchestrator-sub-agent.ts

Large file (548 lines) — should probably split this

548 LOC, threshold is 400
src/services/ai/orchestrator-sub-agent.ts is 548 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.
medium·src/services/ai/orchestrator-sub-agent.ts

Deep nesting detected (6 levels) — getting hard to follow

Max nesting depth: 6
src/services/ai/orchestrator-sub-agent.ts has 6 levels of nesting. Use early returns, extract helper functions, or restructure conditionals to flatten the code.
medium·src/services/ai/orchestrator.ts

Large file (549 lines) — should probably split this

549 LOC, threshold is 400
src/services/ai/orchestrator.ts is 549 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.
medium·src/stores/entity-graph-store.ts

Large file (566 lines) — should probably split this

566 LOC, threshold is 400
src/stores/entity-graph-store.ts is 566 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.
medium·src/uikit/kits/shadcn-kit-extra.ts

Large file (676 lines) — should probably split this

676 LOC, threshold is 400
src/uikit/kits/shadcn-kit-extra.ts is 676 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.
medium·package.json

High dependency count (58)

58 production dependencies
Review your 58 dependencies. Some may be unused or replaceable with built-in alternatives.
low·server/api/ai/chat.ts

Deep nesting detected (5 levels) — common in real code

Max nesting depth: 5
server/api/ai/chat.ts has 5 levels of nesting. Use early returns, extract helper functions, or restructure conditionals to flatten the code.
low·server/api/ai/connect-agent.ts

Large file (485 lines) — barely over threshold

485 LOC, threshold is 400
server/api/ai/connect-agent.ts is 485 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.
low·server/evals/code-graders.ts

Deep nesting detected (5 levels) — common in real code

Max nesting depth: 5
server/evals/code-graders.ts has 5 levels of nesting. Use early returns, extract helper functions, or restructure conditionals to flatten the code.
low·server/evals/eval-runner.ts

Deep nesting detected (5 levels) — common in real code

Max nesting depth: 5
server/evals/eval-runner.ts has 5 levels of nesting. Use early returns, extract helper functions, or restructure conditionals to flatten the code.
low·server/services/entity-graph-service.ts

Deep nesting detected (5 levels) — common in real code

Max nesting depth: 5
server/services/entity-graph-service.ts has 5 levels of nesting. Use early returns, extract helper functions, or restructure conditionals to flatten the code.
low·server/services/revalidation-service.ts

Deep nesting detected (5 levels) — common in real code

Max nesting depth: 5
server/services/revalidation-service.ts has 5 levels of nesting. Use early returns, extract helper functions, or restructure conditionals to flatten the code.
low·server/services/revision-diff.ts

Large file (430 lines) — barely over threshold

430 LOC, threshold is 400
server/services/revision-diff.ts is 430 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.
low·src/canvas/skia/skia-font-manager.ts

Large file (420 lines) — barely over threshold

420 LOC, threshold is 400
src/canvas/skia/skia-font-manager.ts is 420 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.
low·src/components/panels/ai-chat-handlers.ts

Large file (431 lines) — barely over threshold

431 LOC, threshold is 400
src/components/panels/ai-chat-handlers.ts is 431 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.
low·src/mcp/server.ts

Deep nesting detected (5 levels) — common in real code

Max nesting depth: 5
src/mcp/server.ts has 5 levels of nesting. Use early returns, extract helper functions, or restructure conditionals to flatten the code.
low·src/mcp/tools/node-crud.ts

Deep nesting detected (5 levels) — common in real code

Max nesting depth: 5
src/mcp/tools/node-crud.ts has 5 levels of nesting. Use early returns, extract helper functions, or restructure conditionals to flatten the code.
low·src/mcp/tools/open-document.ts

Deep nesting detected (5 levels) — common in real code

Max nesting depth: 5
src/mcp/tools/open-document.ts has 5 levels of nesting. Use early returns, extract helper functions, or restructure conditionals to flatten the code.
low·src/services/ai/ai-service.ts

Large file (478 lines) — barely over threshold

478 LOC, threshold is 400
src/services/ai/ai-service.ts is 478 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.
low·src/services/ai/analysis-client.ts

Large file (455 lines) — barely over threshold

455 LOC, threshold is 400
src/services/ai/analysis-client.ts is 455 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.
low·src/services/ai/analysis-client.ts

Deep nesting detected (5 levels) — common in real code

Max nesting depth: 5
src/services/ai/analysis-client.ts has 5 levels of nesting. Use early returns, extract helper functions, or restructure conditionals to flatten the code.
low·src/services/ai/orchestrator.ts

Deep nesting detected (5 levels) — common in real code

Max nesting depth: 5
src/services/ai/orchestrator.ts has 5 levels of nesting. Use early returns, extract helper functions, or restructure conditionals to flatten the code.
low·src/services/ai/role-resolver.ts

Large file (426 lines) — barely over threshold

426 LOC, threshold is 400
src/services/ai/role-resolver.ts is 426 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.
low·src/services/analysis/analysis-persistence.ts

Large file (479 lines) — barely over threshold

479 LOC, threshold is 400
src/services/analysis/analysis-persistence.ts is 479 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.
low·src/services/entity/entity-to-pennode.ts

Deep nesting detected (5 levels) — common in real code

Max nesting depth: 5
src/services/entity/entity-to-pennode.ts has 5 levels of nesting. Use early returns, extract helper functions, or restructure conditionals to flatten the code.
low·src/stores/agent-settings-store.ts

Deep nesting detected (5 levels) — common in real code

Max nesting depth: 5
src/stores/agent-settings-store.ts has 5 levels of nesting. Use early returns, extract helper functions, or restructure conditionals to flatten the code.
low·src/stores/canvas-store.ts

Deep nesting detected (5 levels) — common in real code

Max nesting depth: 5
src/stores/canvas-store.ts has 5 levels of nesting. Use early returns, extract helper functions, or restructure conditionals to flatten the code.
low·src/utils/svg-parser.ts

Large file (448 lines) — barely over threshold

448 LOC, threshold is 400
src/utils/svg-parser.ts is 448 lines long. Break it into smaller, focused modules. Each file should have one clear responsibility.