# 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.

- Skill: `ecnu-icalk/node-js-lock-manager-with-encapsulated-termination` (Agent Skill)
- Install (CLI): `npx skillmds@latest add ecnu-icalk/node-js-lock-manager-with-encapsulated-termination`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ecnu-icalk/node-js-lock-manager-with-encapsulated-termination/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ECNU-ICALK (https://skillmd.com/u/ecnu-icalk)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/ecnu-icalk/node-js-lock-manager-with-encapsulated-termination

---


# 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

