From agent-almanac
Evolves existing skills by refining content in-place or creating advanced variants. Assesses gaps, applies changes, updates version metadata, syncs registry/cross-references. Use for outdated steps, feedback gaps, complexity upgrades.
npx claudepluginhub pjt222/agent-almanacThis skill is limited to using the following tools:
Improve, extend, or create an advanced variant of a skill that was originally authored with `create-skill`. This procedure covers the maintenance side of the skill lifecycle: assessing gaps, applying targeted improvements, bumping versions, and keeping the registry and cross-references in sync.
Applies targeted improvements to existing pm-skills skills from feedback, validation reports, or convention changes. Previews file diffs, writes on confirmation, suggests version bump.
Updates existing SKILL.md files by refining procedures, expanding pitfalls, syncing related skills, and bumping versions. Use for outdated references, thin pitfalls, broken links, or unclear instructions.
Updates existing jaan-to skills to comply with standards via git branching, structure analysis, spec validation, documentation sync, and PR creation.
Share bugs, ideas, or general feedback.
Improve, extend, or create an advanced variant of a skill that was originally authored with create-skill. This procedure covers the maintenance side of the skill lifecycle: assessing gaps, applying targeted improvements, bumping versions, and keeping the registry and cross-references in sync.
create-r-package and create-r-package-advanced)Read the existing SKILL.md and evaluate each section against the quality checklist:
| Section | What to Check | Common Issues |
|---|---|---|
| Frontmatter | All required fields present, description < 1024 chars | Missing tags, stale version |
| When to Use | 3-5 concrete trigger conditions | Vague or overlapping triggers |
| Inputs | Required vs optional clearly separated | Missing defaults for optional inputs |
| Procedure | Each step has code + Expected + On failure | Missing On failure blocks, pseudocode instead of real commands |
| Validation | Each item is binary pass/fail | Subjective criteria ("code is clean") |
| Common Pitfalls | 3-6 with cause and avoidance | Too generic ("be careful") |
| Related Skills | 2-5 valid skill references | Stale references to renamed/removed skills |
# Read the skill
cat skills/<skill-name>/SKILL.md
# Check frontmatter parses
head -20 skills/<skill-name>/SKILL.md
# Verify related skills still exist
grep -oP '`[\w-]+`' skills/<skill-name>/SKILL.md | sort -u
Expected: A list of specific gaps, weaknesses, or improvement opportunities.
On failure: If the SKILL.md doesn't exist or has no frontmatter, this skill doesn't apply — use create-skill instead to author it from scratch.
Identify and categorize what triggered the evolution:
| Trigger | Example | Typical Scope |
|---|---|---|
| User feedback | "Step 3 is unclear" | Refinement |
| Tooling change | New API version, deprecated command | Refinement |
| Discovered pitfall | Common failure not documented | Refinement |
| Complexity upgrade | Skill is too shallow for real use | Refinement or variant |
| New related skills | Adjacent skill was added | Refinement (cross-refs) |
| Advanced use case | Power users need deeper coverage | Variant |
Document the specific changes needed before editing. List each change with its target section.
Expected: A concrete list of changes (e.g., "Add On failure to Step 4", "Add new Step 6 for edge case X", "Update Related Skills to include new-skill").
On failure: If the changes are unclear, consult the user for clarification before proceeding. Vague evolution goals produce vague improvements.
Use this decision matrix to determine whether to refine in-place or create a variant:
| Criteria | Refinement (in-place) | Advanced Variant (new skill) |
|---|---|---|
| Skill ID | Unchanged | New ID: <skill>-advanced |
| File path | Same SKILL.md | New directory |
| Version bump | Patch or minor | Starts at 1.0 |
| Complexity | May increase | Higher than original |
| Registry | No new entry | New entry added |
| Symlinks | No change | New symlinks needed |
| Original skill | Modified directly | Left intact, gains cross-reference |
Refinement: Choose when improving quality, fixing gaps, or adding modest new content. The skill keeps its identity.
Variant: Choose when the evolved version would double the length, change the target audience, or require substantially different inputs. The original stays as-is for simpler use cases.
Expected: A clear decision — refinement or variant — with rationale.
On failure: If unsure, default to refinement. You can always extract a variant later; it's harder to merge one back.
Edit the existing SKILL.md directly:
# Open for editing
# Add/revise procedure steps
# Strengthen Expected/On failure pairs
# Add tables or examples
# Update When to Use triggers
# Revise Inputs if scope changed
Follow these editing rules:
# Create the variant directory
mkdir -p skills/<skill-name>-advanced/
# Copy the original as a starting point
cp skills/<skill-name>/SKILL.md skills/<skill-name>-advanced/SKILL.md
# Edit the variant:
# - Change `name` to `<skill-name>-advanced`
# - Update `description` to reflect the advanced scope
# - Raise `complexity` (e.g., intermediate → advanced)
# - Reset `version` to "1.0"
# - Add/expand procedure steps for the advanced use case
# - Reference the original in Related Skills as a prerequisite
Expected: The SKILL.md (refined or new variant) passes the assessment checklist from Step 1.
On failure: If a step edit breaks the document structure, use git diff to review changes and revert partial edits with git checkout -- <file>.
Required when translations exist. This step applies to both human authors and AI agents following this procedure. Do not skip — stale
source_commitvalues causenpm run validate:translationsto report false staleness warnings across all locales.
Check whether translations exist for the evolved skill and update them to reflect the new source state:
# Check for existing translations
ls i18n/*/skills/<skill-name>/SKILL.md 2>/dev/null
SOURCE_COMMIT=$(git rev-parse HEAD)
source_commit in each translated file's frontmatter:for locale_file in i18n/*/skills/<skill-name>/SKILL.md; do
sed -i "s/^source_commit: .*/source_commit: $SOURCE_COMMIT/" "$locale_file"
done
evolve(<skill-name>): <description of changes>
Translations flagged for re-sync: de, zh-CN, ja, es
Changed sections: <list sections that changed>
npm run translation:status
No action needed. Proceed to Step 5.
Defer translation of new variants until the variant stabilizes (1-2 versions). Translating a v1.0 variant that may change substantially by v1.2 wastes effort. Add translations after the variant has been refined at least once.
Expected: All translated files have source_commit updated to the current commit. The commit message notes which locales need re-translation and which sections changed. npm run translation:status exits 0.
On failure: If sed fails to match the frontmatter field, the translated file may have non-standard formatting. Open it manually and verify it has source_commit in its YAML frontmatter. If the field is missing, the file was not scaffolded correctly — re-scaffold with npm run translate:scaffold.
Bump the version field in frontmatter following semver conventions:
| Change Type | Version Bump | Example |
|---|---|---|
| Typo fix, wording clarification | Patch: 1.0 → 1.1 | Fixed unclear sentence in Step 3 |
| New step, new pitfall, new table | Minor: 1.0 → 2.0 | Added Step 7 for edge case handling |
| Restructured procedure, changed inputs | Major: 1.0 → 2.0 | Reorganized from 5 to 8 steps |
Also update:
complexity if the scope expanded (e.g., basic → intermediate)tags if the coverage area changeddescription if the skill's scope is materially differentExpected: Frontmatter version reflects the magnitude of changes. New variants start at "1.0".
On failure: If you forget to bump the version, the next evolution will have no way to distinguish the current state from the previous one. Always bump before committing.
No registry changes are needed (path unchanged). Update cross-references only if Related Skills changed in other skills:
# Check if any skill references the evolved skill
grep -r "<skill-name>" skills/*/SKILL.md
Add the new skill to skills/_registry.yml:
- id: <skill-name>-advanced
path: <skill-name>-advanced/SKILL.md
complexity: advanced
language: multi
description: One-line description of the advanced variant
Then:
total_skills at the top of the registry# Project-level
ln -s ../../skills/<skill-name>-advanced .claude/skills/<skill-name>-advanced
# Global
ln -s /mnt/d/dev/p/agent-almanac/skills/<skill-name>-advanced ~/.claude/skills/<skill-name>-advanced
Expected: Registry total_skills matches find skills -name SKILL.md | wc -l. Cross-references are bidirectional.
On failure: If the registry count is wrong, run find skills -name SKILL.md | wc -l to get the true count and correct the registry. For broken symlinks, use readlink -f to debug resolution.
Run the full validation checklist:
version was bumped (refinement) or set to "1.0" (variant)total_skills count matches actual skill count on diskgit diff shows no accidental deletions from the original contentsource_commit updated or translations flagged for re-sync# Verify frontmatter
head -20 skills/<skill-name>/SKILL.md
# Count skills on disk vs registry
find skills -name SKILL.md | wc -l
grep total_skills skills/_registry.yml
# Check symlinks (for variants)
ls -la .claude/skills/<skill-name>-advanced
readlink -f .claude/skills/<skill-name>-advanced/SKILL.md
# Review all changes
git diff
Expected: All checklist items pass. The evolved skill is ready to commit.
On failure: Address each failing item individually. The most common post-evolution issue is a stale total_skills count — always verify it last.
version field reflects the changes madetotal_skills matches actual count on disk_registry.yml with correct path.claude/skills/ and ~/.claude/skills/git diff confirms no accidental content removalsource_commit updated or translations flagged for re-syncversion in frontmatter before committing.git diff before committing.total_skills count must be incremented. Forgetting this causes validation failures in other skills that check the registry.ls i18n/*/skills/<skill-name>/SKILL.md and update source_commit in each translated file's frontmatter, or flag them for re-translation in the commit message. Skipping this causes npm run validate:translations to report stale warnings.git mv on NTFS-mounted paths (WSL): On /mnt/ paths, git mv for directories can create broken permissions (d?????????). Use mkdir -p + copy files + git rm the old path instead. See the environment guide troubleshooting section.create-skill — foundation for authoring new skills; evolve-skill assumes this was followed originallycommit-changes — commit the evolved skill with a descriptive messageconfigure-git-repository — version-controlled skill changessecurity-audit-codebase — review evolved skills for accidentally included secrets