Skip to content

fix: sync claude-code-config with renamed skills + clean stale symlinks#189

Merged
vredchenko merged 1 commit intomainfrom
fix/stale-claude-skills-config
Apr 14, 2026
Merged

fix: sync claude-code-config with renamed skills + clean stale symlinks#189
vredchenko merged 1 commit intomainfrom
fix/stale-claude-skills-config

Conversation

@vredchenko
Copy link
Copy Markdown
Collaborator

Summary

Two related fixes surfaced while running uvx smartem-workspace check --fix:

  1. Config was stale after commit 151c4fe which renamed and removed several skills but never updated core/claude-code-config.json (nor the bundled copy shipped with smartem-workspace).
  2. No cleanup for broken symlinks — the check tool created symlinks but never removed stale ones when config evolved.

Config changes

Before After
database-admin database (renamed)
technical-writer tech-writer (renamed)
playwright-skill playwright (renamed)
github removed (merged into git)
ascii-art removed (deleted in 151c4fe)

Both core/claude-code-config.json (served via GitHub raw, network-first) and the bundled fallback at packages/smartem-workspace/smartem_workspace/config/claude-code-config.json are synced.

check.py enhancement

Adds detection + fix for stale broken symlinks in .claude/skills/. Three safety constraints ensure we never clobber user-created skills:

  1. Must be a symlink (is_symlink())
  2. Target must not exist (not entry.exists() — follows symlinks, returns False when broken)
  3. Name must not be in the expected skills list (avoids double-handling of known skills)

Regular files, regular dirs, and valid symlinks (regardless of target) are left alone.

Version bump

smartem-workspace 0.6.0 -> 0.6.1 so the check.py improvement reaches PyPI users.

Test plan

  • uv run ruff check . clean
  • uv run ruff format --check . clean
  • uv run pytest -q — 16 tests pass
  • Manually verified current workspace .claude/skills/ contains only valid symlinks (no regression)
  • After merge: tag smartem-workspace-v0.6.1 to trigger PyPI publish
  • After release: re-run uvx smartem-workspace check --fix on a workspace with stale symlinks to verify cleanup behavior end-to-end

…oken symlinks

The skills config in core/claude-code-config.json was never updated after
commit 151c4fe renamed and removed several skills. This caused
`smartem-workspace check --fix` to report missing skills and fail to create
symlinks for targets that no longer exist.

- Rename database-admin -> database
- Rename technical-writer -> tech-writer
- Rename playwright-skill -> playwright
- Remove github (merged into git)
- Remove ascii-art (deleted)
- Sync bundled copy in packages/smartem-workspace/

Also enhance check.py to detect and remove stale broken symlinks under
.claude/skills/ during --fix. The cleanup is constrained to entries that
are (1) symlinks, (2) whose target does not exist, and (3) whose name is
not in the expected skills list -- so user-created skills and valid
symlinks are never touched.

Bump smartem-workspace version 0.6.0 -> 0.6.1.
@github-actions github-actions bot added the component:smartem-workspace smartem-workspace CLI tool for multi-repo management label Apr 14, 2026
@vredchenko vredchenko merged commit 30dbfe4 into main Apr 14, 2026
13 checks passed
@vredchenko vredchenko deleted the fix/stale-claude-skills-config branch April 14, 2026 12:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

component:smartem-workspace smartem-workspace CLI tool for multi-repo management

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant