evolve

Update personas and practices from latest Rust ecosystem research. Self-improving knowledge base.

Evolve: Self-Improving Knowledge Base

Update the rust-claude starter's reference files based on new research, blog posts, and ecosystem developments. This skill keeps the knowledge base current.

Steps

1. Gather input

If the user provided an argument:

  • If it is a file path, read the file (supports markdown, PDF, plain text).
  • If it is a URL, use WebFetch to retrieve its content.

Then run the evolve fetch script to gather additional ecosystem updates:

bash skills/evolve/scripts/evolve.sh

This script fetches recent posts from key Rust ecosystem sources.

2. Read current reference files

Read the current state of the knowledge base:

  • references/personas.md -- persona definitions, heuristics, and patterns
  • references/patterns.md -- approved patterns and anti-patterns

Understand what is already documented so you can identify what is new, changed, or deprecated.

3. Identify updates

Analyze the gathered content against the current reference files. Look for:

  • New patterns: Techniques, idioms, or crate recommendations that have emerged
  • Deprecated practices: Patterns that are now considered anti-patterns or have better alternatives
  • Updated recommendations: Changes in best practices (e.g., new async patterns, new error handling crates)
  • Persona updates: New talks, blog posts, or projects from tracked personas that reveal updated thinking
  • Ecosystem shifts: Major version releases, crate replacements, or toolchain changes

4. Generate proposed changes

For each identified update, generate a clear diff showing:

  • Which file is affected
  • What the current text says
  • What it should say instead
  • Why (cite the source)

Present this as a numbered list of proposed changes, formatted so the user can review each one individually.

5. Ask for approval

Present the proposed changes to the user and ask them to approve, reject, or modify each one. Use a format like:

Proposed changes to reference files:

1. [references/patterns.md] Add: Tower middleware pattern for request tracing
   Source: Tokio blog, 2025-03-15
   → Approve / Reject / Modify?

2. [references/personas.md] Update: Lerche section with new Tower 0.5 patterns
   Source: tower-rs changelog
   → Approve / Reject / Modify?

Wait for the user to respond before applying any changes.

6. Apply approved changes

For each approved change, edit the relevant reference file. Be surgical -- do not rewrite entire sections when a targeted edit suffices.

7. Log the evolution

Append an entry to references/changelog.md documenting what changed and why:

## YYYY-MM-DD

### Sources consulted
- [source 1]
- [source 2]

### Changes applied
- [references/patterns.md] Added Tower middleware pattern for request tracing
- [references/personas.md] Updated Lerche section with Tower 0.5 patterns

### Changes rejected
- [description and reason]

If references/changelog.md does not exist, create it with a header:

# rust-claude Evolution Changelog

Record of updates to the knowledge base, with sources and rationale.