Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message
upgrading
sandermuller/boost-skills
claude-code
php
sandermuller
boost-skills

Canonical structure for UPGRADING.md in a Composer package. When to maintain one, what to put in it.

Install
php artisan boost:add-skill sandermuller/boost-skills

Save this content to: .claude/skills/upgrading/SKILL.md

# Upgrading

## When to apply

- Asked to write/update an UPGRADING.md
- Shipping a MAJOR or breaking minor release
- Pre-1.0 package with breaking change

## When to maintain UPGRADING.md

You need one if:
- You ship MAJOR releases with breaking changes
- Pre-1.0 minor bumps regularly break public API
- Migration involves more than "find/replace one symbol"

You DON'T need one if:
- Your package is fully additive (CHANGELOG is enough)
- Pre-1.0 alpha and you don't care about backporting

## Structure

```markdown
# Upgrading

## From 1.x to 2.0

### Removed

- `Foo::oldMethod()` — use `Foo::newMethod()` instead.
  ```php
  // before
  $foo->oldMethod($x);
  // after
  $foo->newMethod($x);
  ```

### Changed

- `Foo::doIt()` now returns `Result` instead of `bool`.
  Adapt callers:
  ```php
  // before
  if ($foo->doIt()) { /* ... */ }
  // after
  $result = $foo->doIt();
  if ($result->ok()) { /* ... */ }
  ```

### Added (no migration needed)

- (briefly list to spare users from chasing the CHANGELOG)
```

## Voice

- Imperative ("Replace X with Y") not narrative ("We've changed X to Y")
- Code blocks for every migration with concrete before/after
- Section per major version range. Append, never rewrite history.

## Anti-patterns

- "Migration is automatic" with no rector rule shipped — users want
  proof, not promises
- Stale entries from versions nobody uses anymore (compact after 2 majors)
- Duplicating CHANGELOG — UPGRADING is about *how to migrate*, not
  *what changed*

Upgrading

When to apply

  • Asked to write/update an UPGRADING.md
  • Shipping a MAJOR or breaking minor release
  • Pre-1.0 package with breaking change

When to maintain UPGRADING.md

You need one if:

  • You ship MAJOR releases with breaking changes
  • Pre-1.0 minor bumps regularly break public API
  • Migration involves more than "find/replace one symbol"

You DON'T need one if:

  • Your package is fully additive (CHANGELOG is enough)
  • Pre-1.0 alpha and you don't care about backporting

Structure

# Upgrading

## From 1.x to 2.0

### Removed

- `Foo::oldMethod()` — use `Foo::newMethod()` instead.
  ```php
  // before
  $foo->oldMethod($x);
  // after
  $foo->newMethod($x);

Changed

  • Foo::doIt() now returns Result instead of bool. Adapt callers:
    // before
    if ($foo->doIt()) { /* ... */ }
    // after
    $result = $foo->doIt();
    if ($result->ok()) { /* ... */ }
    

Added (no migration needed)

  • (briefly list to spare users from chasing the CHANGELOG)

## Voice

- Imperative ("Replace X with Y") not narrative ("We've changed X to Y")
- Code blocks for every migration with concrete before/after
- Section per major version range. Append, never rewrite history.

## Anti-patterns

- "Migration is automatic" with no rector rule shipped — users want
  proof, not promises
- Stale entries from versions nobody uses anymore (compact after 2 majors)
- Duplicating CHANGELOG — UPGRADING is about *how to migrate*, not
  *what changed*
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
oxygen/data
oxygen/core
jengo/base
xiloryx/log-collector
a21ns1g4ts/filament-stripe
la-php/laravel-admin
artisan-build/community-prompts
vleroy/smart
ayles-software/laravel-australian-public-holidays
cboxdk/laravel-id-spatie
cboxdk/laravel-id-billing
cboxdk/laravel-id-billing-bridge
simple-as-fuck/php-performance-log
hsluv/hsluv
seampact/codegen
seampact/hooks
seampact/ir
mehedimi/laravel-amp-mail
happones/laravel-vue-i18n-generator
jwerd/inertia-table