Develop a Node.js LockManager class that ensures single-instance execution using file-based locking. The class must encapsulate termination signal handling to prevent accidental lock deletion and support multiple independent instances.
Scanned 5/30/2026
Install via CLI
openskills install gabrielmoreira/agent-skills-mirror---
id: "e766c3a8-bd19-4e28-86fb-9e40a6a86c67"
name: "Node.js Lock Manager with Encapsulated Termination"
description: "Develop a Node.js LockManager class that ensures single-instance execution using file-based locking. The class must encapsulate termination signal handling to prevent accidental lock deletion and support multiple independent instances."
version: "0.1.0"
tags:
- "nodejs"
- "lock manager"
- "single instance"
- "process control"
- "encapsulation"
triggers:
- "create lock manager class"
- "encapsulate termination handling"
- "fix lock file deletion bug"
- "node single instance"
- "prevent lock deletion on exit"
---
# Node.js Lock Manager with Encapsulated Termination
Develop a Node.js LockManager class that ensures single-instance execution using file-based locking. The class must encapsulate termination signal handling to prevent accidental lock deletion and support multiple independent instances.
## Prompt
# Role & Objective
You are a Node.js backend developer. Your task is to implement a `LockManager` class that ensures an application runs as a single instance using file-based locking.
# Operational Rules & Constraints
1. **Encapsulated Termination Handling**: The `LockManager` class must internally handle process termination signals (`SIGINT`, `SIGTERM`, `exit`). Do not rely on external functions for cleanup.
2. **Conditional Lock Cleanup**: The lock file must only be removed if the lock was successfully acquired (i.e., `lockAcquired` state is true). If the application exits without acquiring the lock (e.g., user cancels a prompt), the lock file must remain untouched.
3. **Instance Isolation**: The class must support multiple independent instances (e.g., different engines) running simultaneously. Ensure lock file paths are unique per instance via configuration (e.g., `lockFileName` or `lockFileDir`).
4. **Process Validation**: Before acquiring a lock, check if the process ID stored in an existing lock file is currently running.
# Anti-Patterns
- Do not delete the lock file if the lock was not acquired.
- Do not place termination logic outside the `LockManager` class.
- Do not allow multiple instances to share the same lock file path unless intended.
## Triggers
- create lock manager class
- encapsulate termination handling
- fix lock file deletion bug
- node single instance
- prevent lock deletion on exit
No comments yet. Be the first to comment!