typo3-core-contributions について
TYPO3 コアの貢献者向けに、問題分析、コード変更、テスト、Gerrit レビュー、CI の手順を案内するスキルです。コアの Gerrit フローと t3o sites の GitLab フローを区別します。
主な機能
- 01TYPO3 貢献ワークフローの案内
- 02Gerrit へのパッチ投稿とレビュー
- 03コミット形式と Change-Id の案内
- 04CI ログとテストのトラブル対応
- 05t3o GitLab の個別フロー
活用シーン
- 01TYPO3 コアパッチの準備
- 02リベースと Gerrit レビューの更新
- 03TYPO3 CI ジョブ失敗の調査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ netresearch/ typo3-core-contributions-skill --skill typo3-core-contributionsインストール後、Claude Code で/typo3-core-contributionsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/account-setup.mdcommit-message-format.mdcommit-msg-hook.mdddev-setup-workflow.mdforge-api.mdgerrit-review-patterns.mdgerrit-workflow.mdmodern-typo3-patterns.mdproving-a-test.mdt3o-gitlab-workflow.mdtroubleshooting.mdscripts/create-commit-message.pycreate-forge-issue.shquery-forge-metadata.shsetup-typo3-coredev.sht3o-gitlab.pyvalidate-commit-message.pyverify-prerequisites.sh詳細
TYPO3 コアへの貢献
使用するタイミング — ホスト名で振り分ける
review.typo3.org(Gerrit)、forge.typo3.org(Redmine)、git.typo3.org/typo3/CI/cms(CI ログ)はコアです。Forge の課題、パッチ、レビュー、コミット形式、チェリーピック、リベースなど、以下のすべてが対象です。git.typo3.org/services/t3o-sites/** は t3o サイト用の通常の GitLab です。Gerrit はなく、refs/for/main に意味はありません。まず references/t3o-gitlab-workflow.md を読んでください。
前提条件
${CLAUDE_SKILL_DIR}/scripts/verify-prerequisites.sh を実行します。TYPO3.org アカウント、Gerrit SSH(ssh -p 29418 <user>@review.typo3.org)、Gerrit に登録したメールアドレスと一致する Git メールアドレスが必要です。
ワークフロー
- セットアップ:
${CLAUDE_SKILL_DIR}/scripts/setup-typo3-coredev.sh - ブランチ:
git checkout -b feature/<issue>-description - 分析:まず根本原因、再現方法、影響を受けるバージョンを確認します
- 開発:修正とテストを行い、typo3-conformance-skill で検証します。修正がない場合に各テストが失敗することを証明します —
references/proving-a-test.md - コミット:以下の形式を使用し、
Resolves: #<issue>とReleases:を記述します - プッシュ:
git push origin HEAD:refs/for/main%wip— 通常のプッシュはWIPではありません。レビュアーが投票し、コミットを修正すると投票が無効になります - CI:すべてのジョブが完了するまで待ち、
git.typo3.org/typo3/CI/cms/-/jobs/<id>で実際のログを読みます。失敗はすべて、1 回の amend+push で修正します - レビュー可能にする:
git push origin HEAD:refs/for/main%readyまたは Gerrit UI の「Start Review」 - レビュー:Change-Id を保持してコミットを修正します。まずレビュアーのパッチセットを取得します:
git fetch origin refs/changes/XX/NNNNN/N && git reset --soft FETCH_HEAD - 更新:
git commit --amend && git push origin HEAD:refs/for/main
コミット形式
[TYPE] Subject (imperative mood, max 52 chars)
How and why (not what). Wrap at 72 chars.
Resolves: #12345
Releases: main, 13.4, 12.4
[BUGFIX] [FEATURE](main のみ)[TASK] [DOCS] [SECURITY]。破壊的変更の場合は [!!!] を使用し、Releases: main のみを指定します。すべてのコミットに Resolves: を必ず記述し、Related: は使用しません。
CI のデバッグ
失敗したジョブのログをすべて読み、推測で判断しないでください。すべての問題を 1 つのパッチセットで修正します。ローカルでは:
./Build/Scripts/runTests.sh -s unit && ./Build/Scripts/runTests.sh -s functional
./Build/Scripts/cglFixMyCommit.sh && ./Build/Scripts/runTests.sh -s phpstan
主な操作
| タスク | コマンド |
|---|---|
| Gerrit にプッシュ | git push origin HEAD:refs/for/main%wip |
| レビュー可能にする | git push origin HEAD:refs/for/main%ready |
| リベース | git fetch origin && git rebase origin/main |
| パッチをチェリーピック | git fetch origin refs/changes/XX/NNNNN/N && git cherry-pick FETCH_HEAD |
| フックをインストール | cp Build/git-hooks/commit-msg .git/hooks/ && chmod +x .git/hooks/commit-msg |
| メールアドレスの不一致を修正 | GIT_COMMITTER_EMAIL="registered@email" git commit --amend --no-edit |
| Forge API | ${CLAUDE_SKILL_DIR}/scripts/create-forge-issue.sh、references/forge-api.md |
| t3o GitLab | python3 ${CLAUDE_SKILL_DIR}/scripts/t3o-gitlab.py access|issue|note|mr create|mr update|mr show|pipeline status|pipeline wait|link|probe |
参考資料
| トピック | ファイル |
|---|---|
| アカウントのセットアップ | references/account-setup.md |
| コミット形式 | references/commit-message-format.md |
| Gerrit ワークフロー | references/gerrit-workflow.md |
| レビューパターン | references/gerrit-review-patterns.md |
| 最新のパターン | references/modern-typo3-patterns.md |
| DDEV のセットアップ | references/ddev-setup-workflow.md |
| Forge API | references/forge-api.md |
| git.typo3.org 上の t3o サイト | references/t3o-gitlab-workflow.md |
| コミットフック | references/commit-msg-hook.md |
| テストの証明 | references/proving-a-test.md |
| トラブルシューティング | references/troubleshooting.md |