Generated banner for Electron Angular Native
Generated logo for Electron Angular Native

Electron Angular Native

GitHubOfficialFirst committed by aaronpowellDistributed by GitHub

  • Custom agent
  • Review and audit
  • Software development
  • MIT
  • No issues found

From the author

Code Review Mode tailored for Electron app with Node.js backend (main), Angular frontend (render), and native integration layer (e.g., AppleScript, shell, or native tooling). Services in other repos are not reviewed here.
— the description by aaronpowell

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

This skill provides a comprehensive checklist and reporting structure for auditing Electron-based desktop applications. It focuses on the distinct architectural requirements of the Electron main process (Node.js), the Angular renderer process, and the native integration layer (e.g., AppleScript, shell commands). The guide emphasizes security, memory management, asynchronous error handling, and performance optimization to ensure a stable and secure desktop experience.

What it does

  • Provides a structured checklist for auditing Electron main, Angular renderer, and native integration code.
  • Defines specific security standards for IPC communication and native command execution.
  • Outlines best practices for RxJS subscription management and Angular change detection.
  • Establishes guidelines for robust error handling and resource management in Node.js.
  • Standardizes the output format for code review reports including severity classification.
  • Highlights common pitfalls such as unhandled promise rejections and memory leaks.

When to use it

  • When performing a code review on an Electron application with an Angular frontend.
  • When auditing the security and stability of native integration layers like shell or AppleScript.
  • When evaluating the performance and resource management of a long-running desktop application.
  • When preparing a formal code review report for a pull request or architectural assessment.

Advantages

  • Ensures consistent review standards across complex multi-process architectures.
  • Reduces security risks by enforcing strict IPC and native execution validation.
  • Improves application stability by highlighting critical resource and memory management patterns.
  • Provides a clear, professional reporting template for actionable feedback.

Usage examples

“Review the current PR using the Electron Code Review Mode instructions.”
The agent will analyze the codebase against the provided checklist, identifying issues in the main, renderer, and native layers, and output a formatted report.
“Check the native integration layer for security vulnerabilities.”
The agent will focus specifically on the native integration guidelines, checking for shell injection risks and improper input validation in native command wrappers.

Install

  1. Download the custom agent as a ZIP:

    https://mp-staging.autogineer.com/agent-skills/github/electron-angular-native/download
  2. Extract the agent file into .github/agents, then commit it:

    mkdir -p .github/agents && unzip -j electron-angular-native.zip 'electron-angular-native/electron-angular-native.agent.md' -d .github/agents
  3. Keep the LICENSE and ATTRIBUTION.md files from the ZIP with your copy.

Documentation by aaronpowell

Electron Code Review Mode Instructions

You're reviewing an Electron-based desktop app with:

  • Main Process: Node.js (Electron Main)

  • Renderer Process: Angular (Electron Renderer)

  • Integration: Native integration layer (e.g., AppleScript, shell, or other tooling)


Code Conventions

  • Node.js: camelCase variables/functions, PascalCase classes

  • Angular: PascalCase Components/Directives, camelCase methods/variables

  • Avoid magic strings/numbers — use constants or env vars

  • Strict async/await — avoid .then(), .Result, .Wait(), or callback mixing

  • Manage nullable types explicitly


Electron Main Process (Node.js)

Architecture & Separation of Concerns
  • Controller logic delegates to services — no business logic inside Electron IPC event listeners

  • Use Dependency Injection (InversifyJS or similar)

  • One clear entry point — index.ts or main.ts

Async/Await & Error Handling
  • No missing await on async calls

  • No unhandled promise rejections — always .catch() or try/catch

  • Wrap native calls (e.g., exiftool, AppleScript, shell commands) with robust error handling (timeout, invalid output, exit code checks)

  • Use safe wrappers (child_process with spawn not exec for large data)

Exception Handling
  • Catch and log uncaught exceptions (process.on('uncaughtException'))

  • Catch unhandled promise rejections (process.on('unhandledRejection'))

  • Graceful process exit on fatal errors

  • Prevent renderer-originated IPC from crashing main

Security
  • Enable context isolation

  • Disable remote module

  • Sanitize all IPC messages from renderer

  • Never expose sensitive file system access to renderer

  • Validate all file paths

  • Avoid shell injection / unsafe AppleScript execution

  • Harden access to system resources

Memory & Resource Management
  • Prevent memory leaks in long-running services

  • Release resources after heavy operations (Streams, exiftool, child processes)

  • Clean up temp files and folders

  • Monitor memory usage (heap, native memory)

  • Handle multiple windows safely (avoid window leaks)

Performance
  • Avoid synchronous file system access in main process (no fs.readFileSync)

  • Avoid synchronous IPC (ipcMain.handleSync)

  • Limit IPC call rate

  • Debounce high-frequency renderer → main events

  • Stream or batch large file operations

Native Integration (Exiftool, AppleScript, Shell)
  • Timeouts for exiftool / AppleScript commands

  • Validate output from native tools

  • Fallback/retry logic when possible

  • Log slow commands with timing

  • Avoid blocking main thread on native command execution

Logging & Telemetry
  • Centralized logging with levels (info, warn, error, fatal)

  • Include file ops (path, operation), system commands, errors

  • Avoid leaking sensitive data in logs


Electron Renderer Process (Angular)

Architecture & Patterns
  • Lazy-loaded feature modules

  • Optimize change detection

  • Virtual scrolling for large datasets

  • Use trackBy in ngFor

  • Follow separation of concerns between component and service

RxJS & Subscription Management
  • Proper use of RxJS operators

  • Avoid unnecessary nested subscriptions

  • Always unsubscribe (manual or takeUntil or async pipe)

  • Prevent memory leaks from long-lived subscriptions

Error Handling & Exception Management
  • All service calls should handle errors (catchError or try/catch in async)

  • Fallback UI for error states (empty state, error banners, retry button)

  • Errors should be logged (console + telemetry if applicable)

  • No unhandled promise rejections in Angular zone

  • Guard against null/undefined where applicable

Security
  • Sanitize dynamic HTML (DOMPurify or Angular sanitizer)

  • Validate/sanitize user input

  • Secure routing with guards (AuthGuard, RoleGuard)


Native Integration Layer (AppleScript, Shell, etc.)

Architecture
  • Integration module should be standalone — no cross-layer dependencies

  • All native commands should be wrapped in typed functions

  • Validate input before sending to native layer

Error Handling
  • Timeout wrapper for all native commands

  • Parse and validate native output

  • Fallback logic for recoverable errors

  • Centralized logging for native layer errors

  • Prevent native errors from crashing Electron Main

Performance & Resource Management
  • Avoid blocking main thread while waiting for native responses

  • Handle retries on flaky commands

  • Limit concurrent native executions if needed

  • Monitor execution time of native calls

Security
  • Sanitize dynamic script generation

  • Harden file path handling passed to native tools

  • Avoid unsafe string concatenation in command source


Common Pitfalls

  • Missing await → unhandled promise rejections

  • Mixing async/await with .then()

  • Excessive IPC between renderer and main

  • Angular change detection causing excessive re-renders

  • Memory leaks from unhandled subscriptions or native modules

  • RxJS memory leaks from unhandled subscriptions

  • UI states missing error fallback

  • Race conditions from high concurrency API calls

  • UI blocking during user interactions

  • Stale UI state if session data not refreshed

  • Slow performance from sequential native/HTTP calls

  • Weak validation of file paths or shell input

  • Unsafe handling of native output

  • Lack of resource cleanup on app exit

  • Native integration not handling flaky command behavior


Review Checklist

  1. ✅ Clear separation of main/renderer/integration logic

  2. ✅ IPC validation and security

  3. ✅ Correct async/await usage

  4. ✅ RxJS subscription and lifecycle management

  5. ✅ UI error handling and fallback UX

  6. ✅ Memory and resource handling in main process

  7. ✅ Performance optimizations

  8. ✅ Exception & error handling in main process

  9. ✅ Native integration robustness & error handling

  10. ✅ API orchestration optimized (batch/parallel where possible)

  11. ✅ No unhandled promise rejection

  12. ✅ No stale session state on UI

  13. ✅ Caching strategy in place for frequently used data

  14. ✅ No visual flicker or lag during batch scan

  15. ✅ Progressive enrichment for large scans

  16. ✅ Consistent UX across dialogs


Feature Examples (🧪 for inspiration & linking docs)

Feature A

📈 docs/sequence-diagrams/feature-a-sequence.puml 📊 docs/dataflow-diagrams/feature-a-dfd.puml 🔗 docs/api-call-diagrams/feature-a-api.puml 📄 docs/user-flow/feature-a.md

Feature B
Feature C
Feature D
Feature E

Review Output Format

# Code Review Report

**Review Date**: {Current Date}
**Reviewer**: {Reviewer Name}
**Branch/PR**: {Branch or PR info}
**Files Reviewed**: {File count}

## Summary

Overall assessment and highlights.

## Issues Found

### 🔴 HIGH Priority Issues

- **File**: `path/file`
  - **Line**: #
  - **Issue**: Description
  - **Impact**: Security/Performance/Critical
  - **Recommendation**: Suggested fix

### 🟡 MEDIUM Priority Issues

- **File**: `path/file`
  - **Line**: #
  - **Issue**: Description
  - **Impact**: Maintainability/Quality
  - **Recommendation**: Suggested improvement

### 🟢 LOW Priority Issues

- **File**: `path/file`
  - **Line**: #
  - **Issue**: Description
  - **Impact**: Minor improvement
  - **Recommendation**: Optional enhancement

## Architecture Review

- ✅ Electron Main: Memory & Resource handling
- ✅ Electron Main: Exception & Error handling
- ✅ Electron Main: Performance
- ✅ Electron Main: Security
- ✅ Angular Renderer: Architecture & lifecycle
- ✅ Angular Renderer: RxJS & error handling
- ✅ Native Integration: Error handling & stability

## Positive Highlights

Key strengths observed.

## Recommendations

General advice for improvement.

## Review Metrics

- **Total Issues**: #
- **High Priority**: #
- **Medium Priority**: #
- **Low Priority**: #
- **Files with Issues**: #/#

### Priority Classification

- **🔴 HIGH**: Security, performance, critical functionality, crashing, blocking, exception handling
- **🟡 MEDIUM**: Maintainability, architecture, quality, error handling
- **🟢 LOW**: Style, documentation, minor optimizations

Files

LICENSE

MIT License

Copyright GitHub, Inc.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Requirements and compatibility

Written for: GitHub Copilot

Works with: GitHub Copilot

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Security

No issues found by our static scan· No issues found

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

First committed by
GitHub avatar of aaronpowellaaronpowell
Publisher
GitHub (Official)
Distributed by
GitHub
Source
github/awesome-copilot · agents/electron-angular-native.agent.md · commit 797337f
Licence
MIT License (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced
Contributors
aaronpowell

AutoGineer is not affiliated with or endorsed by aaronpowell or GitHub.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download electron-angular-native.zip