agentskills.codes
TA

taxonomy-management

Manage the skill taxonomy: add new skills, deprecate old ones, review and approve pending skill proposals from imports or employee free-text input, check for duplicates, and invalidate taxonomy cache. Use when HR needs to update taxonomy or clear a backlog of unreviewed skill proposals.

Install

mkdir -p .claude/skills/taxonomy-management && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/15863" && unzip -o skill.zip -d .claude/skills/taxonomy-management && rm skill.zip

Installs to .claude/skills/taxonomy-management

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Manage the skill taxonomy: add new skills, deprecate old ones, review and approve pending skill proposals from imports or employee free-text input, check for duplicates, and invalidate taxonomy cache. Use when HR needs to update taxonomy or clear a backlog of unreviewed skill proposals.
287 chars✓ has a “when” triggerlonger than Claude Code's old 250-char listing cap (fine on current versions)

About this skill

Taxonomy Management

Guided workflow for HR Coordinators to safely add, deprecate, and review taxonomy skills.

Adding a New Skill

-- 1. Check for duplicates first
SELECT id, name, category, is_active
FROM skills
WHERE similarity(name, '<new_skill_name>') > 0.4
   OR lower(name) LIKE lower('%<keyword>%');

If no duplicate:

# Via API (preferred — auto-generates embedding)
curl -X POST http://localhost:8000/api/skills \
  -H "Authorization: Bearer <HR_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Kubernetes",
    "category": "HARD",
    "description": "Container orchestration platform"
  }'

After adding, invalidate taxonomy cache:

docker compose exec redis redis-cli keys "taxonomy:*" | xargs docker compose exec redis redis-cli del

Deprecating a Skill

Soft-delete only — never hard-delete (employees may reference it):

-- 1. Check how many employees use this skill
SELECT COUNT(*) FROM employee_skills
WHERE skill_id = '<skill_id>' AND proficiency_level IS NOT NULL;

-- 2. Soft-delete
UPDATE skills SET is_active = FALSE WHERE id = '<skill_id>';

Then bust cache:

docker compose exec redis redis-cli keys "taxonomy:*" | xargs docker compose exec redis redis-cli del
docker compose exec redis redis-cli keys "search:*" | xargs docker compose exec redis redis-cli del

Reviewing Pending Skill Proposals

Skills proposed from import or employee free-text have approved_by IS NULL and is_active = FALSE:

SELECT id, name, category, created_at, created_by,
       (SELECT email FROM employees WHERE id = s.created_by) AS proposed_by
FROM skills s
WHERE approved_by IS NULL AND is_active = FALSE
ORDER BY created_at ASC;

To approve:

UPDATE skills
SET is_active = TRUE, approved_by = '<hr_employee_id>'
WHERE id = '<skill_id>';

To reject (leave inactive, optionally map to existing skill):

-- Map rejected proposal to existing taxonomy entry in employee_skills
UPDATE employee_skills
SET skill_id = '<existing_skill_id>'
WHERE skill_id = '<proposed_skill_id>';

-- Then delete the proposal (only safe after reassigning all references)
DELETE FROM skills WHERE id = '<proposed_skill_id>' AND approved_by IS NULL;

Finding Duplicates

SELECT name, category, COUNT(*) AS count
FROM skills
WHERE is_active = TRUE
GROUP BY name, category
HAVING COUNT(*) > 1;

-- Fuzzy duplicates (pg_trgm)
SELECT a.id, a.name, b.id, b.name, similarity(a.name, b.name) AS sim
FROM skills a, skills b
WHERE a.id < b.id
  AND a.category = b.category
  AND similarity(a.name, b.name) > 0.7
  AND a.is_active = TRUE AND b.is_active = TRUE
ORDER BY sim DESC;

After Any Taxonomy Change

Always bust both caches:

docker compose exec redis redis-cli keys "taxonomy:*" | xargs docker compose exec redis redis-cli del
docker compose exec redis redis-cli keys "search:*" | xargs docker compose exec redis redis-cli del

Search skills

Search the agent skills registry