home / skills / dirnbauer / webconsulting-skills / typo3-core-contributions

typo3-core-contributions skill

/skills/typo3-core-contributions

npx playbooks add skill dirnbauer/webconsulting-skills --skill typo3-core-contributions

Review the files below or copy the command above to add this skill to your agents.

Files (3)
SKILL.md
6.0 KB
---
name: typo3-core-contributions
description: TYPO3 Core contribution workflow. Use when working with Forge issues, submitting patches to Gerrit, or contributing docs.
version: 1.0.0
typo3_compatibility: "13.0 - 14.x"
triggers:
  - core
  - contributions
  - gerrit
  - forge
  - patch
---

# TYPO3 Core Contributions Skill

Guide for TYPO3 Core contribution workflow from account setup to patch submission.

## When to Use

- Forge issue URLs (e.g., `https://forge.typo3.org/issues/105737`)
- Contributing patches, fixing TYPO3 bugs
- Gerrit review workflow, rebasing, CI failures

## Prerequisites

Before contributing, ensure you have:

1. **TYPO3.org Account**: Register at https://my.typo3.org/
2. **Gerrit SSH Key**: Upload to https://review.typo3.org/settings/#SSHKeys
3. **Git Config**: Email must match your Gerrit account

```bash
# Verify git config
git config --global user.name "Your Name"
git config --global user.email "[email protected]"

# Add Gerrit remote
git remote add gerrit ssh://[email protected]:29418/Packages/TYPO3.CMS.git
```

## Environment Setup

### Clone TYPO3 Core

```bash
# Clone via Gerrit
git clone ssh://[email protected]:29418/Packages/TYPO3.CMS.git
cd TYPO3.CMS

# Or clone from GitHub (read-only mirror)
git clone https://github.com/TYPO3/typo3.git
cd typo3

# Add Gerrit remote for pushing
git remote add gerrit ssh://[email protected]:29418/Packages/TYPO3.CMS.git
```

### Install Commit Hook

```bash
# Install commit-msg hook for Change-Id
scp -p -P 29418 [email protected]:hooks/commit-msg .git/hooks/
chmod +x .git/hooks/commit-msg
```

## Contribution Workflow

### 1. Find or Create Issue

- Check existing issues: https://forge.typo3.org/projects/typo3cms-core/issues
- Create new issue if needed with detailed description

### 2. Create Feature Branch

```bash
# Update main branch
git checkout main
git pull origin main

# Create feature branch
git checkout -b feature/105737-fix-cache-issue
```

### 3. Implement Changes

- Follow TYPO3 coding guidelines
- Write tests (unit, functional)
- Update documentation if needed

### 4. Commit with Proper Format

```bash
git add .
git commit
```

**Commit Message Format:**

```
[TYPE] Subject line (imperative, max 52 chars)

Description explaining how and why the change was made.
Can be multiple paragraphs.

Resolves: #12345
Releases: main, 13.4
```

### 5. Push to Gerrit

```bash
# Push for review
git push gerrit HEAD:refs/for/main
```

## Commit Message Format

### Types

| Type | Description |
|------|-------------|
| `[BUGFIX]` | Bug fix |
| `[FEATURE]` | New feature |
| `[TASK]` | Refactoring, cleanup, maintenance |
| `[DOCS]` | Documentation only |
| `[SECURITY]` | Security fix (coordinate with security team) |
| `[!!!]` | Breaking change prefix (e.g., `[!!!][TASK]`) |

### Required Footer

```
Resolves: #12345
Releases: main, 13.4
```

- `Resolves:` - Issue number on forge.typo3.org
- `Releases:` - Target branches (main, 13.4, 12.4)

### Example Commit Messages

**Bug Fix:**
```
[BUGFIX] Fix cache invalidation for page translations

The cache was not properly invalidated when updating
translated page properties. This patch ensures the
cache is cleared for all language variants.

Resolves: #105737
Releases: main, 13.4
```

**Breaking Change:**
```
[!!!][TASK] Remove deprecated DataHandler hooks

The legacy hooks have been deprecated since v12 and
are now removed. Use PSR-14 events instead.

See migration guide in the documentation.

Resolves: #98765
Releases: main
```

## Gerrit Workflow

### Update Existing Patch

When changes are requested:

```bash
# Make changes
# ...

# Amend commit (keep same Change-Id!)
git add .
git commit --amend

# Push again
git push gerrit HEAD:refs/for/main
```

### Rebase on Latest Main

```bash
# Fetch latest
git fetch origin main

# Rebase
git rebase origin/main

# Force push (allowed for your own patches)
git push gerrit HEAD:refs/for/main --force
```

### Cherry-pick to Other Branches

After approval on main:

```bash
# Switch to target branch
git checkout 13.4
git pull origin 13.4

# Cherry-pick with original Change-Id
git cherry-pick -x <commit-hash>

# Push for review
git push gerrit HEAD:refs/for/13.4
```

## Code Review

### Review States

| Vote | Meaning |
|------|---------|
| +2 | Approved, ready for merge |
| +1 | Looks good, needs second review |
| 0 | Comment only |
| -1 | Changes needed |
| -2 | Major issues, do not merge |

### CI Requirements

All patches must pass:
- [ ] Coding standards (PHP-CS-Fixer)
- [ ] PHPStan level 8
- [ ] Unit tests
- [ ] Functional tests
- [ ] Acceptance tests (if applicable)

## Troubleshooting

### Push Rejected

```bash
# Missing Change-Id
# Ensure commit hook is installed
scp -p -P 29418 [email protected]:hooks/commit-msg .git/hooks/

# Amend to add Change-Id
git commit --amend
```

### Merge Conflicts

```bash
# Rebase on latest
git fetch origin main
git rebase origin/main

# Resolve conflicts
# Edit conflicting files
git add .
git rebase --continue

# Push updated patch
git push gerrit HEAD:refs/for/main --force
```

### CI Failures

1. Check CI output at review.typo3.org
2. Run tests locally:

```bash
# Run specific test suite
Build/Scripts/runTests.sh -s unit
Build/Scripts/runTests.sh -s functional

# Run PHP-CS-Fixer
Build/Scripts/runTests.sh -s cgl
```

## Related Skills

- **typo3-ddev**: Local development environment
- **typo3-testing**: Writing tests for patches
- **typo3-conformance**: Code quality validation

## Resources

- **Gerrit**: https://review.typo3.org/
- **Forge**: https://forge.typo3.org/
- **Contribution Guide**: https://docs.typo3.org/m/typo3/guide-contributionworkflow/main/en-us/
- **Git Setup**: https://docs.typo3.org/m/typo3/guide-contributionworkflow/main/en-us/Setup/Git/

---

## Credits & Attribution

This skill is based on the excellent work by
**[Netresearch DTT GmbH](https://www.netresearch.de/)**.

Original repository: https://github.com/netresearch/typo3-core-contributions-skill

**Copyright (c) Netresearch DTT GmbH** - Methodology and best practices  
Adapted by webconsulting.at for this skill collection