Agent skill

Php Migration

by baserproject in baserproject/basercms

baserCMS の PHP バージョンアップ(8.2/8.4/8.5 ~)対応の非推奨・破壊的変更パターン集と修正レシピ。「暗黙的nullableの非推奨警告」「Creation of dynamic property ...

MITAuto-check passed

Install Php Migration

skills CLI
$ npx skills add baserproject/basercms --skill php-migration -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install baserproject/basercms php-migration --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/baserproject/basercms.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/php-migration .claude/skills/php-migration && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
php-migration
GitHub stars
190
Token cost
~2.8k tokens
SKILL.md length
682 words
Files
1
Skills in repo
15
Repo updated
First seen
Licence
MIT

At a glance

baserCMS の PHP バージョンアップ(8.2/8.4/8.5 ~)対応の非推奨・破壊的変更パターン集と修正レシピ。「暗黙的nullableの非推奨警告」「Creation of dynamic property ...

  • Works in 12 steps: 暗黙的 nullable 引数の非推奨 → fgetcsv() の $escape 非推奨 → ReflectionProperty::setValue()… → …
  • SKILL.md covers 大原則, PHP 8.2, PHP 8.4 and PHP 8.5(2025-11-20 リリース), plus 2 more sections
  • Calls php and git

What it does

Php Migration is an agent skill from baserproject/basercms. baserCMS の PHP バージョンアップ(8.2/8.4/8.5 ~)対応の非推奨・破壊的変更パターン集と修正レシピ。「暗黙的nullableの非推奨警告」「Creation of dynamic property ... is deprecated」「fgetcsv の escape 警告」「ReflectionProperty::setValue の非推奨」「(integer)/(boolean) 等の非正規キャスト非推奨」「null を配列オフセットに使う非推奨」「curlclose/imagedestroy 等の自動解放関数非推奨」等、PHP本体起因のアップグレード警告/エラーの調査・修正時に参照する。新しい PHP バージョン対応時は本書にバージョン別追記する。CakePHP本体起因の問題は cakephp-migration スキルを参照。

Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It works with PHP. The repository describes itself as: baserCMS : Based Website Development Project. The licence is MIT.

Example prompts

  • “Use the php-migration skill to basercm の PHP バージョンアップ(8.2/8.4/8.5 ~)対応の非推奨・破壊的変更パターン集と修正レシピ。「暗黙的nullableの非推奨警告」「Creation of dynamic property ..”
  • “/php-migration”

Workflow steps

12 steps, taken from the step headings in SKILL.md.

  1. 暗黙的 nullable 引数の非推奨
  2. fgetcsv() の $escape 非推奨
  3. ReflectionProperty::setValue() の単一引数呼び出し非推奨
  4. 内部関数の string 引数に null を渡すのが非推奨(実体は 8.1+)
  5. 【破壊的変更・致命的】予約クラス名(Array 等)を use で参照すると Fatal
  6. 非正規キャスト名の非推奨(影響大)
  7. null を配列オフセットに使うのが非推奨
  8. オブジェクトを自動解放するリソース解放関数の非推奨
  9. 非数値文字列のインクリメント非推奨
  10. sleep() / wakeup() のソフト非推奨
  11. $http_response_header の非推奨
  12. バッククォート演算子の非推奨

What it can do on your machine

Read from SKILL.md and the folder at commit 748b4f6. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • php
    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • php.net
    • eusonlito.github.io

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Php Migration loads about 2.8k tokens when it runs. Until then it costs about 100 tokens; SKILL.md has 682 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~100
When it runs · the whole SKILL.md, loaded when a task matches
~2.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from baserproject/basercms at commit 748b4f6, republished under its MIT licence (© baserproject). 682 words, ~2,781 tokens.

Download SKILL.mdSave it as .claude/skills/php-migration/SKILL.md (or your agent's skills folder).
name
php-migration
description
baserCMS の PHP バージョンアップ(8.2/8.4/8.5 ~)対応の非推奨・破壊的変更パターン集と修正レシピ。「暗黙的nullableの非推奨警告」「Creation of dynamic property ... is deprecated」「fgetcsv の escape 警告」「ReflectionProperty::setValue の非推奨」「(integer)/(boolean) 等の非正規キャスト非推奨」「null を配列オフセットに使う非推奨」「curl_close/imagedestroy 等の自動解放関数非推奨」等、PHP本体起因のアップグレード警告/エラーの調査・修正時に参照する。新しい PHP バージョン対応時は本書にバージョン別追記する。CakePHP本体起因の問題は cakephp-migration スキルを参照。
license
MIT

PHP バージョン移行ガイド(baserCMS)

PHP のバージョンアップで遭遇した非推奨・破壊的変更と修正レシピ集。バージョン別に整理して育てる。CakePHP フレームワーク本体起因の問題は別スキル cakephp-migration を参照。

収録: PHP 8.2 / 8.4 / 8.5。新バージョン対応時は新しい「## PHP X.Y」節を追記する。 注意: PHP 8.5 は 9.0 の直前バージョン。9.0 で非推奨機能はすべて削除されるため、8.5 で出る非推奨警告は早めに潰しておく。

大原則

  • 「致命的エラー」と「非推奨警告」を区別する。デバッグモードでは非推奨警告が画面下部に表示され「エラー」に見えるが、logs/debug.log に debug: で出るものは警告(動作は継続)。Fatal/Exception が本当のエラー。
  • regression と既存failを切り分ける。git diff HEAD -- <file> で当該ファイルが自分の変更対象か確認。
  • 親クラスのシグネチャを変えたら、子クラス・インターフェースも揃える。
  • 全非推奨の網羅検出には Rector 等の静的解析が有効。

ユニットテストの実行方法・構文チェック・失敗の切り分けは basercms-unittest スキルを参照。php -l(構文チェック)では暗黙nullable等の非推奨警告も併せて出る。


PHP 8.2

動的プロパティの非推奨

未宣言プロパティへの代入が非推奨。Creation of dynamic property X::$prop is deprecated。

  • 対策A(推奨): クラスにプロパティを宣言する。
    php
    /** @var ThemeFoldersServiceInterface */
    protected $ThemeFoldersService;
    protected $_tempalteTypes = [];
    ※ コンストラクタで $this->Xxx = $this->getService(...) のように代入している箇所が典型。
  • 対策B: 多数の子クラスに波及する基底クラス(例: テスト基底 BcTestCase は400超のサブクラスを持つ)には #[\AllowDynamicProperties] を付与。属性は子クラスに継承されるため1箇所で済む。
    php
    #[\AllowDynamicProperties]
    class BcTestCase extends TestCase { ... }

PHP 8.4

1. 暗黙的 nullable 引数の非推奨

型 $x = null は暗黙 nullable で非推奨。明示的に ?型 にする。

php
// Before
function foo(int $contentId = null, BcAbstractDetector $agent = null)
// After
function foo(?int $contentId = null, ?BcAbstractDetector $agent = null)
  • 検出(正規表現): 先頭に ? が付かず 型 $name = null になっている引数にマッチ。 例: ([A-Za-z_\\][A-Za-z0-9_\\]*)\s+(\$[A-Za-z0-9_]+)\s*=\s*null(直前に ? が無いもの)。
  • 親クラスのシグネチャ変更時は子クラス/インターフェースも揃える。
  • 警告: Implicitly marking parameter $x as nullable is deprecated, the explicit nullable type must be used instead。
2. fgetcsv() の $escape 非推奨

$escape 引数の省略が非推奨。明示する。

php
// Before
$head = fgetcsv($fp, 10240);
// After
$head = fgetcsv($fp, 10240, ',', '"', '\\');
  • 独自実装(fgets+正規表現でCSVをパースする関数等)は fgetcsv を使っていないので対象外。実際に fgetcsv() を呼んでいる箇所のみ修正する。
3. ReflectionProperty::setValue() の単一引数呼び出し非推奨

静的でないプロパティは対象オブジェクトを渡す。

php
// Before
$property->setValue($value);
// After
$property->setValue($object, $value);
  • 警告: Calling ReflectionProperty::setValue() with a single argument is deprecated。
  • テスト用ユーティリティ(リクエスト生成やプライベートプロパティ操作のヘルパ)に潜みやすい。
  • 静的プロパティの場合は第1引数に null を渡す: setValue(null, $value)。これは 8.1〜8.5 すべてで有効(8.1 互換を壊さない)。
4. 内部関数の string 引数に null を渡すのが非推奨(実体は 8.1+)

parse_url(null) / version_compare($a, null) / str_replace(..., null) 等、?string でない引数に null を渡すと Passing null to parameter #N ($x) of type string is deprecated。(string) キャストで明示変換する。

php
// Before → After
parse_url($url);                       →  parse_url((string)$url);
version_compare($current, $required);  →  version_compare((string)$current, (string)$required);
  • 8.1 で導入された非推奨だが、移行作業(特に 8.4/8.5 への更新)で大量に顕在化するため本書にも収録。
  • 実行時に値が null のときだけ出るため静的 grep では拾い切れない。全テストログの Passing null to parameter を集計して発生元を特定する。

PHP 8.5(2025-11-20 リリース)

9.0 直前の最終マイナー。下記の大半は警告で動作は継続するが、9.0 で削除されるため対応する。アプリ/フレームワークに影響しやすい順に記載。※「0.」のみ警告ではなく致命的エラー(破壊的変更)なので最優先。

⚠️ PHP 8.1 互換を維持する間の注意(composer.json は "php": ">=8.1")。 8.5 の非推奨を「推奨どおりの置き換え先」で直すと、その置き換え先が 8.1 に存在せず 8.1 が Fatal で動かなくなるものがある。下記の ❌ 印は 8.1 を切るまで据え置き(8.5 で警告は出るが許容)にする。8.5 で動かすこと自体は 8.1 を壊さない(警告のみ)。

  • ❌ str_increment()(8.3+)→ 8.1 では $s++ のまま
  • ❌ http_get_last_response_headers()(8.4+)→ 8.1 では $http_response_header のまま
  • ❌ 名前空間付き PDO(Pdo\Mysql::ATTR_* 等, 8.4+)→ 8.1 では PDO::MYSQL_ATTR_* のまま

上記以外(非正規キャスト、null オフセット→''、自動解放関数の削除、バッククォート→shell_exec、case :、__serialize)は 8.1 でも安全に適用できる。

0. 【破壊的変更・致命的】予約クラス名(Array 等)を use で参照すると Fatal

8.5 で Array などが特別なクラス名として予約され、use ...\Array; や class Array が Fatal(警告ではない)になる。テスト収集(オートロード)段階で落ちるとスイート全体が起動不能になるため最優先。

Fatal error: Cannot use BcMail\Test\TestCase\Model\Array as Array because 'Array' is a special class name
  • baserCMS 実績: MailMessagesTableTest.php 冒頭に CakePHP2 時代の残骸 use ...\Array; / use ...\ClassRegistry;(いずれも実在しないクラスへのデッド import)が残っており、8.4 までは無害だったが 8.5 で Fatal 化。該当の use 行を削除して解消(参照箇所は markTestIncomplete 済みの未実行コード)。
  • 検出: grep -rnE "use [A-Za-z0-9_\\\\]+\\\\(Array|Object|Resource|Enum|Mixed|Never|Void|Null|False|True|Iterable|Numeric)\s*;" --include="*.php"。
  • 注意: 致命的なので php -l ではファイル単体で検出可能。だが全テスト前に grep で一掃しておくと、スイートが収集段階で落ちる事故を防げる。
1. 非正規キャスト名の非推奨(影響大)

(boolean) (integer) (double) (binary) が非推奨。正規名に置換する。

php
// Before → After
(boolean) → (bool)
(integer) → (int)
(double)  → (float)
(binary)  → (string)
  • 検出: grep -rnE "\((boolean|integer|double|binary)\)" --include="*.php"。
  • 古いコードに残りがち。機械的に置換可能。
2. null を配列オフセットに使うのが非推奨

$arr[null] / array_key_exists(null, $arr) 等で null をキーに使うのが非推奨(暗黙に "" 変換されていた)。明示的に空文字 "" を使う。

php
// Before
$arr[null] = $v;  array_key_exists(null, $arr);
// After
$arr[''] = $v;    array_key_exists('', $arr);
  • 変数がキーになる箇所($arr[$key] で $key が null になりうる)に注意。
  • 静的 grep では検出困難(実行時に値が null のときだけ出る)。全テストを 8.5 で流して grep "null as an array offset" phpunit.log で発生元(on line N of <file>)を集計するのが確実。
  • 修正方針: ① 代入/参照のキーを $key ?? ''(従来の暗黙変換と同等。set/get 両方を同じキーに揃えること)、② isset()/参照の手前で $key !== null && ガード、のいずれか。getData('batch') 等の null 返却を ?? '' で受けるのも有効。
  • baserCMS 実績(計 308 件): BcFileUploader(uploadingFiles[$bcUploadId] の set/get を ?? '' で整合)、BcUploadBehavior(oldEntity[$alias][$entity->_bc_upload_id] を ?? '')、MailMessagesTable($dists[$mailField->group_valid])、SearchIndexes/Contents/PermissionsController(getData('batch') ?? '')、BcTextHelper::arrayValue / BcUtil::decodeContent($key !== null && isset(...))。
3. オブジェクトを自動解放するリソース解放関数の非推奨

対象はリソースではなくオブジェクトになっており、GC で自動解放されるため明示的な close/free 呼び出しが非推奨。呼び出しを削除すればよい。

  • curl_close() / curl_share_close()(CurlHandle / CurlShareHandle)
  • finfo_close()(finfo)
  • imagedestroy()(GdImage)← 画像処理ユーティリティで使われがち
  • xml_parser_free()(XMLParser)
  • 検出: grep -rnE "\b(curl_close|curl_share_close|finfo_close|imagedestroy|xml_parser_free)\s*\(" --include="*.php"。
  • baserCMS 実績: Imageresizer.php・BcFileUploader.php の imagedestroy() 4箇所。単純削除でもよいが、ループ内のメモリ即時解放の意図を保つため unset($img) に置換(GdImage はオブジェクトなので参照を外せば GC が解放。>=8.1 で安全)。
Show full SKILL.md (292 more words)Show less
3-2. ReflectionProperty/Method::setAccessible() の非推奨(発生件数が最も多い)

setAccessible() は PHP 8.1 以降 no-op(private/protected も getValue/setValue/invoke で直接アクセス可)。8.5 で非推奨化。呼び出し行を削除すればよい(>=8.1 で安全)。

php
// Before
$property = new ReflectionProperty($obj, 'foo');
$property->setAccessible(true);   // ← この行を削除
$property->setValue($obj, $v);
  • baserCMS 実績: src/テスト合わせて33箇所(BcUtil/BcTestCase/BaserCorePlugin/PreviewController/BcDatabaseService ほか)。ホットパス(テスト基底等)にあるためランタイム発生件数が桁違いに多い(全テストで約6,300件 ≒ 8.5 非推奨の大半)。まずこれを潰すとログが激減する。
  • 一括削除(単独文に限定): sed -i -E "/^[[:space:]]*\$[A-Za-z0-9_]+->setAccessible\(true\);[[:space:]]*$/d" <file>。
  • 検出時の注意: grep パターンを ->setAccessible のように - で始めると grep がオプションと誤認して 0 件になる。grep -rn "setAccessible" のように - 始まりを避ける(または grep -e)。
4. 非数値文字列のインクリメント非推奨

$str++(非数値文字列)が非推奨。str_increment() を使う。※ str_increment() は 8.3+。8.1 維持中は $str++ のまま据え置く。

php
// Before
$code++;            // $code が 'AZ' 等
// After
$code = str_increment($code);
5. __sleep() / __wakeup() のソフト非推奨

__serialize() / __unserialize() を使う(PHP7 互換が不要なら移行)。

6. $http_response_header の非推奨

スーパーグローバル $http_response_header が非推奨。http_get_last_response_headers() を使う。※ http_get_last_response_headers() は 8.4+。8.1 維持中は $http_response_header のまま据え置く。

7. バッククォート演算子の非推奨

`command`(shell_exec() のエイリアス)が非推奨。shell_exec() を直接使う。

8. case 文を ; で終端するのが非推奨

case 1; は非推奨。case 1: にする。

  • 検出: grep -rnE "case\s+.+;\s*$" --include="*.php"(誤検出が多いので目視確認)。
8-2. array_key_exists(null, ...) の非推奨(serialize の不正形で誘発)

array_key_exists() の第1引数 null が非推奨(空文字を使う)。フレームワーク内部(CakePHP JsonView::_dataToSerialize)で出る場合、原因は自前コードの serialize オプションの不正形。setOption('serialize', ['foo', 'message' => $message]) のように変数名のリストに 'key' => 値 を混ぜると、$message が null のとき serialize 配列に 'message' => null が入り、array_key_exists(null, ...) が走る。

  • 修正: serialize はビュー変数名の羅列にする。['foo', 'message' => $message] → ['foo', 'message'](値は $this->set() 済み)。baserCMS 実績: MailMessagesController の index/view アクション。
  • 発生元がフレームワーク内のときの特定法: vendor を一時計測(if ($key === null) file_put_contents(..., var_export($serialize,true).getTraceAsString()))→ 該当プラグインのテストを流す → スタックトレースの先頭の自前コントローラを特定 → vendor を戻す。
8-3. ArrayObject にオブジェクトを backing array として渡す非推奨

new ArrayObject($obj) でオブジェクト(json_decode() の stdClass 等)を渡すのが非推奨。配列にキャストする。

  • 修正: new ArrayObject(json_decode($body)->devices) → new ArrayObject((array)json_decode($body)->devices)。baserCMS 実績: SitesControllerTest。
9. その他(該当時のみ)
  • PDO ドライバ固有の定数/メソッドが名前空間付きに移行(PDO::MYSQL_ATTR_* → Pdo\Mysql::ATTR_*、PDO::sqliteCreateFunction() → Pdo\Sqlite::createFunction() 等)。多くはフレームワーク内部だが、独自に DB ドライバ定数を使っていれば対応。PDO の "uri:" DSN スキームも非推奨。※ 名前空間付き PDO クラスは 8.4+。8.1 維持中は PDO::MYSQL_ATTR_* のまま据え置く。
  • openssl_pkey_derive() の $key_length、finfo_buffer() の $context 引数が非推奨(無視される)。
  • 非CLI SAPI での register_argc_argv INI が非推奨($_GET / $_SERVER['QUERY_STRING'] を使う)。
  • static クロージャへの bind 等、一部のクロージャ binding が非推奨。
  • clone null のエラーメッセージ変更(テスト影響): 8.4 まで __clone method called on non-object、8.5 は clone(): Argument #1 ($object) must be of type object, null given。null を clone する異常系を文字列一致で検証しているテストは期待値の更新が必要(baserCMS 実績: UploaderCategoriesControllerTest の Admin/Api 各 test_copy)。

⚠️ 全テスト実行時の連鎖エラーはまず再実行で切り分ける: 本コードベースは full-run で稀に「ある先行テストが global 状態(プラグイン設定 Configure 等)を汚染 → 以降ほぼ全テストが Application bootstrap で PluginCollection::create(): $config ... null given 等で連鎖エラー」という一過性の汚染が起きることがある。プラグイン単独スイート(例 plugins/baser-core/tests/TestCase)が通り、再実行でクリーンならコード起因ではなくフレーキー。isolation と再実行で必ず確認する。


調査の進め方(チェックリスト)

  1. php -l(構文チェック)や logs/debug.log で非推奨警告の発生ファイル・行を特定。
  2. 該当バージョン節のどのパターンか分類して修正。機械置換可能なもの(非正規キャスト等)は grep で一括検出。
  3. php -l で再確認(警告が消えたか)。
  4. 当該テストを --filter で単体確認 → 仕上げに全テスト再実行。

関連: フレームワーク起因(イベント戻り値・Association重複・ResultSet・FormProtection 等)は cakephp-migration スキルへ。


出典

© baserproject, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/php-migration of baserproject/basercms.

Open the folder on GitHubat commit 748b4f6

Compare with similar skills

Php Migration next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Php Migration compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Php Migration this skillbaserproject/basercms190—~2.8kAutomated safety check: PassMIT
Configuring Horizoncoollabsio/coolify63k4 repos~898Automated safety check: PassMIT
Tailwindcss Developmentanonaddy/anonaddy4.9k10 repos~865Automated safety check: PassMIT
Fortify Developmentcoollabsio/coolify63k4 repos~1.9kAutomated safety check: PassMIT
MCP Developmentcoollabsio/coolify63k1 repos~949Automated safety check: PassMIT
WooCommerce Code Reviewwoocommerce/woocommerce11k3 repos~1.1kAutomated safety check: PassCustom licence

Similar skills

  • Configuring Horizon

    coollabsio/coolify

    A skill your agent uses whenever the user mentions Horizon by name in a Laravel context.

    63k GitHub starsUsed in 4 repos~898 tokens
    Backend & APIsAuto-check passed
  • Tailwindcss Development

    anonaddy/anonaddy

    Always invoke when the user's message includes 'tailwind' in any form.

    4.9k GitHub starsUsed in 10 repos~865 tokens
    Frontend & DesignAuto-check passed
  • Fortify Development

    coollabsio/coolify

    ACTIVATE when the user works on authentication in Laravel. An agent skill from coollabsio/coolify.

    63k GitHub starsUsed in 4 repos~1.9k tokens
    Backend & APIsAuto-check passed
  • MCP Development

    coollabsio/coolify

    A skill your agent uses for Laravel MCP development. An agent skill from coollabsio/coolify.

    63k GitHub starsUsed in 1 repo~949 tokens
    Frontend & DesignAuto-check passed
  • WooCommerce Code Review

    woocommerce/woocommerce

    Reviews WooCommerce code changes against the project's standards, flagging backend PHP architecture, naming, documentation, data integrity and testing violations.

    11k GitHub starsUsed in 3 repos~1.1k tokens
    DevelopmentAuto-check passed
  • Sync Translations

    symfony/symfony

    Synchronize translation catalogs across maintained Symfony branches: find messages that newer branches added to the English catalogs but that are still missing from the oldest maintained branch…

    31k GitHub stars~1.9k tokensUpdated today
    Writing & ContentAuto-check passed

More from baserproject/basercms

All 15 skills in this repo
  • Basercms Security Advisory

    baserproject/basercms

    baserCMS のリポジトリセキュリティアドバイザリ(GHSA・triage含む)対応を、一覧取得→指摘検証→課題別の修正→プライベートフォーク/ブランチ/PR作成→ローカル検証まで一気通貫で扱う手順とスクリプト。「セキュリティアドバイザリを確認」「triageの脆弱性を検証」「アドバイザリごとにフォークとPRを作って」「脆弱性修正をプルリクにまとめて」等のときに使う。Copilot/GHAは…

    190 GitHub stars~1.4k tokensUpdated 2 days ago
    Auto-check passed
  • Basercms Core Plugin Convert

    baserproject/basercms

    baserCMS の「通常プラグイン(サードパーティ/単体配布)」を monorepo の「コアプラグイン」に昇格させる手順。「コアプラグインに変更」「コアプラグイン化」「通常プラグインをコアに昇格」「monorepo に取り込む」等のときに参照する。プラグイン名の規約変更(bc- プレフィックス付与・CamelCase→ハイフン区切り)、.git/シンボリックリンク/standalone…

    190 GitHub stars~3.1k tokensUpdated 2 days ago
    Auto-check passed
  • Basercms Plugin 5x Update

    baserproject/basercms

    baserCMS プラグインを 5.2系 から 5.3系(PHP 8.5 / CakePHP 5.2.x ベース、開発中)へ移行する際の baserCMS 固有の破壊的変更・非推奨・テスト基盤対応のレシピ集。「プラグインを5.3に対応」「baserCMS 5.3 マイグレーション」「PluginCollection::create(): $config null given」「Plugin…

    190 GitHub stars~2.3k tokensUpdated 2 days ago
    Auto-check passed
  • Basercms Release Note

    baserproject/basercms

    baserCMS の plugins/baser-core/VERSION.txt に、リリース分の変更履歴(NEW/CHG/BUG)をコミットログから生成して追記する手順。「VERSION.txt を更新して」「リリースノートを作って」「変更履歴をまとめて」「今回のリリース分の変更点を書き出して」「前回リリースからの差分を VERSION.txt…

    190 GitHub stars~1.6k tokensUpdated 2 days ago
    Auto-check passed
  • Basercms Unittest

    baserproject/basercms

    baserCMS(CakePHP5 / PHPUnit)のユニットテストをローカル Docker 環境で実行・調査する手順。「ユニットテストを実行して」「全テストを走らせて」「このテストだけ流して」「テスト失敗を調べて」「プラグイン単体でテストを動かしたい」「プラグインにテスト環境を導入したい」等のときに参照する。コンテナ名・実行コマンド・権限自動承認のためのコマンド整形・失敗の集計と切り分け方…

    190 GitHub stars~4.9k tokensUpdated 2 days ago
    Auto-check passed
  • Basercms4 Development

    baserproject/basercms

    baserCMS 4系(CakePHP 2.10ベース)+ jQuery プロジェクトの開発ルール集。「baserCMS 4 で開発」「4系のプラグインを修正」「CakePHP 2系のコードを書く」「app/Plugin 配下の Controller/Model/View」「テーマの…

    190 GitHub stars~877 tokensUpdated 2 days ago
    Auto-check passed

Works with

Questions about Php Migration

What does Php Migration do?

baserCMS の PHP バージョンアップ(8.2/8.4/8.5 ~)対応の非推奨・破壊的変更パターン集と修正レシピ。「暗黙的nullableの非推奨警告」「Creation of dynamic property ... Php Migration is an agent skill from baserproject/basercms.5 ~)対応の非推奨・破壊的変更パターン集と修正レシピ。「暗黙的nullableの非推奨警告」「Creation of dynamic property ...

How do I install Php Migration in Claude Code?

Run `npx skills add baserproject/basercms --skill php-migration -a claude-code`. Or copy the skill folder (.agents/skills/php-migration in baserproject/basercms) into .claude/skills/php-migration in your project. Claude Code loads it when a task matches its description.

How do I install Php Migration in Codex?

Run `npx skills add baserproject/basercms --skill php-migration -a codex`. Or copy the skill folder (.agents/skills/php-migration in baserproject/basercms) into .agents/skills/php-migration in your project. Codex loads it when a task matches its description.

Can I use Php Migration in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add baserproject/basercms --skill php-migration -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/php-migration, .gemini/skills/php-migration, .github/skills/php-migration and .opencode/skills/php-migration in your project.

What does Php Migration need to run?

Going by SKILL.md and its folder, Php Migration needs the command-line tools its instructions call (php and git).

Does Php Migration access the network?

SKILL.md names 2 domains. As links in the text: php.net and eusonlito.github.io. This is read from the text; nothing was executed.

Is Php Migration safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Php Migration use?

Php Migration is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Php Migration use?

About 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Php Migration?

Skills that share tags, products or a category with Php Migration: Configuring Horizon (coollabsio/coolify, 63k stars), Tailwindcss Development (anonaddy/anonaddy, 4.9k stars), Fortify Development (coollabsio/coolify, 63k stars) and MCP Development (coollabsio/coolify, 63k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Php Migration?

baserproject (a GitHub organization) maintains it in baserproject/basercms, which has 190 GitHub stars. The repository holds 15 skills in this directory. The repository was last updated on October 5, 2026.

Source: baserproject/basercms on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.