From purlin
Renames a feature across Purlin project artifacts: spec files, proof JSONs, receipt files, and test markers. Requires user approval before executing git mv and string replacements.
How this skill is triggered — by the user, by Claude, or both
Slash command
/purlin:renameThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Rename a feature across all Purlin artifacts in one atomic operation.
Rename a feature across all Purlin artifacts in one atomic operation.
purlin:rename <old-name> <new-name> Rename a feature
specs/**/<old-name>.md → specs/**/<new-name>.md<old-name>.proofs-*.json → <new-name>.proofs-*.json (same directory)<old-name>.receipt.json → <new-name>.receipt.json (if exists)@pytest.mark.proof("old-name", → @pytest.mark.proof("new-name",[proof:old-name: → [proof:new-name:purlin_proof "old-name" → purlin_proof "new-name"# Feature: old_name → # Feature: new_name> Requires: references in other specs: grep all specs/**/*.md for > Requires: lines containing the old name, replace with new name"feature" field in each entry from old name to new nameSearch specs/**/<old-name>.md.
No spec found for '<old-name>'. Verify the spec exists in specs/.> Source: (external): Stop with: Cannot rename anchor '<old-name>'. Anchors with external sources are read-only and synced from that source. Rename at the source and re-sync.AskUserQuestion to ask the user which one.Scan for all artifacts that reference the old name and present a summary:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⚡ RENAME: <old-name> → <new-name>
Files to rename:
specs/auth/login.md → specs/auth/authentication.md
specs/auth/login.proofs-unit.json → specs/auth/authentication.proofs-unit.json
Proof markers to update:
tests/test_login.py: 5 markers
tests/test_auth_integration.py: 2 markers
Specs referencing this feature (> Requires:):
specs/auth/session.md
specs/auth/password_reset.md
[y] Proceed [n] Cancel
Waiting for your response...
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Use AskUserQuestion to pause and wait. Do NOT auto-proceed.
Perform all changes in this order:
a. Rename files — use git mv for spec, proof, and receipt files:
git mv specs/auth/login.md specs/auth/authentication.md
git mv specs/auth/login.proofs-unit.json specs/auth/authentication.proofs-unit.json
git mv specs/auth/login.receipt.json specs/auth/authentication.receipt.json # if exists
b. Update proof markers in test files — search and replace marker strings only:
@pytest.mark.proof("old-name", → @pytest.mark.proof("new-name",[proof:old-name: → [proof:new-name:purlin_proof "old-name" → purlin_proof "new-name"c. Update feature name inside the spec file:
# Feature: old_name → # Feature: new_named. Update > Requires: in other specs:
> Requires: lines across all specs/**/*.mdlogin must not corrupt login_oauth → newname_oauth). Match on the exact comma-separated entry.e. Rename screenshot files (if the spec has > Visual-Reference:):
specs/<category>/screenshots/<old-name>.png → specs/<category>/screenshots/<new-name>.png (using git mv)> Visual-Reference: path inside the spec filef. Update "feature" field in proof JSON entries:
"feature": "old-name" with "feature": "new-name"g. Run sync_status to verify everything still resolves.
h. Commit per references/commit_conventions.md: rename(<old-name>): rename to <new-name>
If sync_status shows issues after rename, warn the user and show the directives. Do not silently ignore resolution failures.
test_login_valid() stays as-is; only proof("login", changes.> Requires:).specs/**/login.md matches multiple files, list them and ask the user which one.> Source: (external): refuse to rename — anchors with external sources are read-only and synced from that source. The rename must happen at the external source.> Requires: partial matches: use word-boundary matching when replacing in > Requires: lines. The old name must match as a complete comma-separated entry, not as a substring of another name.npx claudepluginhub rlabarca/purlin --plugin purlinProvides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.