← ClaudeAtlas

acquiring-skill-locklisted

Acquire a per-project lock for the current skill.
Acendas/shipyard · ★ 2 · AI & Automation · score 70
Install: claude install-skill Acendas/shipyard
# Acquiring a Skill Lock Shipyard tracks one active skill per project at a time, in two lock files under the data dir: - `<SHIPYARD_DATA>/.active-session.json` — held by **planning** skills (`/ship-discuss`, `/ship-sprint`, `/ship-quick`'s planning phase). - `<SHIPYARD_DATA>/.active-execution.json` — held by **execution** skills (`/ship-execute`, `/ship-review`, `/ship-quick`'s execution phase). These are mutually exclusive: a planning session in one terminal must release before an execution skill starts in another, and vice versa. The lock is what prevents two terminals from racing on the same sprint. **v3.7.0: both files are CLI-owned.** `bin/skill-lock.mjs` (`shipyard-data lock acquire|release|check|status`) is the single writer. No skill body Reads or Writes these files directly anymore — the PreToolUse hook denies any model Write/Edit to either basename, same as the pipeline cursors. Run the CLI, act on its exit code and JSON stdout line, and echo its stderr text (block message or recovery note) verbatim to the user. ## The Lock Shape (for reference — never hand-construct this) A held lock: ```json { "skill": "ship-execute", "sprint": "sprint-007", "wave": 2, "started": "2026-05-08T14:23:00Z", "session_id": "01HXY1Z2A3B4C5D6E7F8G9H0J1", "cleared": null, "depth": 1 } ``` A released (soft-deleted) lock: `{"skill": null, "cleared": "<iso>"}` — the file is never `unlink`ed, only overwritten in place. `depth` replaces the old ad-hoc "same-session re-ent