Guidelines for when and how to update Claude Code skills after codebase changes. Use after completing significant features, architectural changes, or discovering new patterns/anti-patterns...
This skill helps development agents know when and how to update the ChainGraph skill tree after making codebase changes.
Skills should stay current but not churn constantly. Update skills for meaningful changes that affect how future agents should work.
┌─────────────────────────────────────┐
│ SKILL UPDATE DECISION │
└─────────────────────────────────────┘
│
┌────────────────┴────────────────┐
│ │
▼ ▼
┌──────────────┐ ┌──────────────┐
│ UPDATE │ │ DON'T UPDATE │
└──────────────┘ └──────────────┘
• New architecture • Bug fixes
• New patterns • Small features
• New anti-patterns • Refactoring
• API changes • Test changes
• Critical constraints • Documentation
Ask: "Which skills would an agent need to know about this change?"
| Change Type | Likely Affected Skills |
|---|---|
| New Effector pattern | effector-patterns |
| Frontend architecture | frontend-architecture |
| New port type | port-system, types-architecture |
| DBOS workflow change | dbos-patterns, executor-architecture |
| Subscription change | subscription-sync |
| New node pattern | node-creation, types-architecture |
Add Pattern: New recommended way to do something
## Patterns
### New: Using usePortValue hook
Prefer `usePortValue(portKey)` over direct store subscription...
Add Anti-Pattern: New thing to avoid
## Anti-Patterns
### Avoid: Direct $portValues subscription in components
❌ Bad: `useUnit($portValues)` - causes re-render on ANY port change
✅ Good: `usePortValue(portKey)` - subscribes to single port
Update Example: Code example is outdated
// Updated: Now uses ports-v2 API
const value = usePortValue(portKey)
Update File Reference: File moved or renamed
| `src/store/ports-v2/stores.ts` | Port value stores (was ports/stores.ts) |
Deprecate Pattern: Old way is no longer recommended
### Deprecated: Legacy port stores
The `ports/` store is deprecated. Use `ports-v2/` instead.
Migration guide: [link to migration docs]
### Using CommandController (added after dd543528)
After significant development work, ask:
If any are YES, update the relevant skill(s).
| Skill Type | Update Frequency |
|---|---|
Foundation (chaingraph-concepts) |
Rarely - core concepts stable |
Package (*-architecture) |
Monthly - as architecture evolves |
Technology (*-patterns) |
When patterns discovered/deprecated |
Feature (port-system, etc.) |
When feature area changes significantly |
Meta (skill-*) |
When skill conventions change |
Changes made:
echo-detection.ts in ports-v2/$pendingPortMutations storeSkills to update:
optimistic-updates (Primary)
$pendingPortMutations storefrontend-architecture (Reference)
echo-detection.ts to Key Fileseffector-patterns (Optional)
Changes made:
ArrayPort.tsxSkills to update: NONE
Changes made:
ports/ → ports-v2/Skills to update:
frontend-architecture
ports/effector-patterns
port-system
When updating skills, use clear commit messages:
docs(skills): update effector-patterns with new sample() usage
- Added pattern for combining multiple sources
- Documented anti-pattern for nested samples
- Updated Key Files with new store locations
Periodically review skills for staleness:
| Metric | Healthy | Needs Review |
|---|---|---|
| Last updated | < 3 months | > 6 months |
| Key Files exist | All exist | Files missing |
| Patterns work | Code compiles | Outdated syntax |
| Anti-patterns relevant | Still problematic | Fixed in codebase |
skill-authoring - For creating new skills