# NousResearch/hermes-agent · Skills create: protect pre-existing directories from deletion

## Open now

- 0 issues, 2 PRs open on GitHub.
- PR #119562: fix(skills): _create_skill no longer rmtrees a pre-existing directory when the security scan blocks
- PR #119634: fix(skills): refuse to adopt an occupied directory on create

These issues and PRs address a bug where the skill creation process would incorrectly remove a pre-existing directory when a security scan blocked the operation. The fix ensures that only directories created during the current operation are cleaned up on failure.

## TL;DR

- 6 member(s): 0 open issue(s), 1 closed issue(s), 2 open PR(s), 1 merged PR(s), 2 PR(s) closed without merging.
- A fix was merged to main in PR #120437. Verify it addresses your case.
- **Recommended:** read PR #120437 (and any competing PRs below) before filing. Confirm the merged change covers your symptom.

## Maintainer resolution verdict

- Internal-tracker verdict over this cluster's issue members: `resolved` · deciding PR(s): `pr-120437`. This is distinct from the fix status above. Weigh it yourself.

## How this cluster was grouped

- Link evidence (`STRUCTURAL_SPANNING`): every member is connected by structural evidence: shared changed files, or a closing/superseded reference.
- Pairwise link density `0.33`: the share of member pairs that carry a link, counting a structural link in full and a relevance-only link at 0.36. `1.00` means every pair is linked.

## Closed / duplicate issues

- #119534: fix(skills): _create_skill rmtrees a pre-existing directory when the security scan blocks

## Prior & competing PRs

- **#120437: fix(skills): create never deletes a directory it did not make**. merged to main · fix tier `verified`
  - maintainer direction: category `merged`
  - files: `tests/tools/test_skill_manage_batch.py`, `tests/tools/test_skill_manager_tool.py`, `tools/skill_manager_batch.py`, `tools/skill_manager_tool.py`
- **#119535: fix(skills): don't rmtree a pre-existing dir when a create's scan blocks**. closed without merge
  - maintainer direction: category `implemented_elsewhere`; implication `superseded`; refs `334f40ee31`, `#120437`, `#119534`
- **#119562: fix(skills): _create_skill no longer rmtrees a pre-existing directory when the security scan blocks**. open
  - maintainer direction: category `silent_close`; implication `active`
  - files: `tests/tools/test_skill_create_blocked_scan.py`, `tools/skill_manager_tool.py`
- **#119634: fix(skills): refuse to adopt an occupied directory on create**. open
  - maintainer direction: category `silent_close`; implication `active`
  - files: `tests/tools/test_skill_create_occupied_directory.py`, `tools/skill_manager_tool.py`
- **#120280: fix(skills): undo only this call's writes when a create scan blocks (#119534)**. closed without merge
  - maintainer direction: category `superseded_by_pr`; implication `superseded`; refs `334f40ee31`, `#120437`, `#119534`

## Fix status

- Merged to main in PR #120437 (cited above). No release data is tracked. Verify downstream.
- Fix last verified (merged) `2026-09-24`.
- Subsystem: `skills`
