netresearch / typo3-upgrade-effort-model-skill
Agent Skill for estimating TYPO3 LTS upgrade effort: risk multipliers, breaking-change baselines, version compatibility, Rector coverage, 7-phase assessment workflow
Package info
github.com/netresearch/typo3-upgrade-effort-model-skill
Type:ai-agent-skill
pkg:composer/netresearch/typo3-upgrade-effort-model-skill
Requires
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
- dev-main
- v1.4.1
- v1.4.0
- v1.3.2
- v1.3.1
- v1.3.0
- v1.2.1
- v1.2.0
- v1.1.0
- v1.0.1
- v1.0.0
- dev-fix/version-matrix-v14
- dev-release/v1.3.2
- dev-chore/composer-metadata
- dev-release/v1.3.1
- dev-release/v1.3.0
- dev-chore/trim-generic-bloat
- dev-fix/trigger-ownership
- dev-release/v1.2.1
- dev-feat/flux-cb-backend-previews-and-page-config
This package is auto-updated.
Last update: 2026-10-18 21:44:44 UTC
README
typo3-upgrade-effort-model-skill
Generic effort model for TYPO3 LTS major version upgrades. Provides per-version risk multipliers, breaking-change baselines, version-compatibility matrix, Rector coverage adjustments, and a 7-phase assessment workflow. Calibration-free — pair with your team's historical project data for tuned estimates.
🔌 Compatibility
Agent Skill following the open standard. Works with Claude Code, Cursor, GitHub Copilot, and any skills-compatible AI agent.
What this skill does
- v14 risk-multiplier table (Fluid 5 strict VHs, HashService removal, TSFE removal, asset-pipeline removal, magic finders, EXT:form hooks, …)
- per-extension baselines for v10→v14 paths
- TYPO3 ↔ PHP version-compatibility matrix
- generic extension classification (core / public-active / public-stale / customer-custom / heavily-customised)
- 7-phase assessment workflow with command-level detail
- Rector coverage discount per target version
What this skill does NOT do
- It doesn't supply your team's calibration factor — you measure that against your historical projects.
- It doesn't ship case studies for specific projects (those belong in your private estimator skill).
- It doesn't set deadlines or pricing — that's commercial, not technical.
Installation
Via Claude Code Marketplace
/plugin install typo3-upgrade-effort-model@netresearch-claude-code-marketplace
Via Composer
composer require netresearch/typo3-upgrade-effort-model-skill
Usage
Trigger on prompts like:
- "Estimate effort to upgrade TYPO3 11.5 to 14.3 LTS"
- "What's the risk level for upgrading our extension to v14?"
- "Should we skip-version v11 → v13 or go incremental?"
The skill walks the 7-phase workflow and produces an effort range per extension and per project. Apply your team's calibration factor on top.
Companion skills
typo3-conformance-skill— extension quality scoring (feeds risk multiplier)typo3-testing-skill— test coverage assessment (feeds regression risk)typo3-extension-upgrade-skill— performs the upgrade after the estimatetypo3-project-upgrade-skill— deployed-project upgrade workflow
For Netresearch-internal use with historical-data calibration, see coding-ai/typo3-upgrade-estimator-skill (which consumes this model).
Contributing
Issues and pull requests are welcome. Every commit needs a Signed-off-by trailer (git commit -s); the DCO check enforces it. The repository layout, commands and rules are indexed in AGENTS.md.
A change to SKILL.md or a reference that changes an answer the skill gives (a multiplier, a baseline, a workflow step) comes with a case in evals/evals.json that asserts the new answer.
Checks
The repository ships no executable code, so it has no behavioural tests. The checks validate the skill's structure, its evaluation cases, the syntax of every file, the agent index AGENTS.md and the CI files' match with the organisation template:
-
Skill Validation (
.github/workflows/lint.yml, callingvalidate.ymlofnetresearch/skill-repo-skill): skill structure and front matter (validate-skill.sh), manifest sync betweenplugin.jsonand.claude-plugin/plugin.json,SKILL.mdversion against the plugin version, markdownlint, yamllint, actionlint, JSON syntax, ShellCheck at severitystyle, ruff check and format, checkpoint schema. Steps that find no file of their kind (shell, Python, checkpoints) say so and pass. -
Eval Validation (
.github/workflows/eval-validate.yml): checks the structure ofevals/evals.jsonwithvalidate-evals.sh. It does not run the prompts against a model. -
Harness Verification (
.github/workflows/harness-verify.yml, callingharness-verify.ymlofnetresearch/skill-repo-skill):AGENTS.mdexists, has at most 150 lines, and every relative link in it resolves. Documentedmake,composerandnpm runcommands without a matching target or script, and build or CI files changed without anAGENTS.mdchange, are reported as warnings. -
Template Drift (
.github/workflows/check-template-drift.yml, callingcheck-template-drift.ymlofnetresearch/.github): fails when a file governed by theskilltemplate ofnetresearch/.githubdiffers from it..github/template.yamllists the intentional exceptions (lint.yml,release.yml).
Skill Validation runs on every pull request and on every push to main. Eval Validation runs on every pull request and on every push to main and master. Harness Verification and Template Drift run on pull requests into main and master; Template Drift also runs on pushes to main and master and in merge queues. To run the same checks locally:
pre-commit install --install-hooks # once per clone pre-commit run --all-files # exit 0 = all hooks passed
The hooks in .pre-commit-config.yaml run the same linters, the skill validator and the version-parity check; they use netresearch/skill-repo-skill at the pinned rev:, while CI uses its main. The skill-validator hook also compares the fields the two plugin manifests share. The eval check has no hook, and CI checks the manifests with sync-plugin-manifest.sh --check from main rather than with the pinned hook; with a checkout of netresearch/skill-repo-skill at <tools>, run both from the root of this repository:
bash <tools>/skills/skill-repo/scripts/sync-plugin-manifest.sh --check bash <tools>/skills/skill-repo/scripts/validate-evals.sh evals/evals.json
A failure names the file and the rule: an MD… rule for markdownlint, a yamllint rule name, an ERROR: line from validate-skill.sh, a FAIL: line from validate-evals.sh. WARNING: lines do not fail the check.
Dependencies
- Runtime: none. The skill is text. The commands in the references use tools of the assessed project (Composer, PHP,
jq, Rector), which the user provides. - Composer:
composer.jsonrequiresnetresearch/composer-agent-skill-pluginat^2.0, which installs the skill into a Composer project. There is no lock file; the package is consumed as a library. - CI: the workflows call shared workflows in
netresearch/skill-repo-skill,netresearch/.githubandnetresearch/typo3-ci-workflowsby@main; those pin third-party actions by commit SHA and ruff and ShellCheck by version;astral-sh/setup-uvinstalls the latest uv release.scorecard.ymlruns OpenSSF Scorecard through the shared workflow innetresearch/.githubon pushes tomainandmaster, weekly and on manual dispatch, not on pull requests. The pre-commit hooks are pinned byrev:in.pre-commit-config.yaml. - Updates: Renovate (
renovate.json, extending the organisation presetlocal>netresearch/renovate-config, with thepre-commitmanager enabled) opens update pull requests.auto-merge-deps.yml(onpull_request_target) passes pull requests from Renovate and Dependabot to the shared auto-merge workflow innetresearch/.github, together with the secretsPROJECT_APP_IDandPROJECT_APP_PRIVATE_KEY; the shared workflow skips other authors and pull requests labelleddeps-majorordeps-no-automerge. - Selection: a new dependency is added only when the skill or its checks cannot work without it, and is declared where its consumer reads it (
composer.jsonfor Composer,.pre-commit-config.yamlfor hooks).
Governance and policies
This repository follows the Netresearch organisation policies:
- Governance: ownership, roles, and how decisions are made and disputes resolved.
- Roadmap: planned and explicitly excluded work for the coming year.
- Handling of dependency and code analysis findings: thresholds, deadlines and the exception process for dependency (SCA) and static analysis (SAST) findings.
- Secret management: how CI and release credentials are stored, accessed and rotated.
- Access roster: who holds administrative and write access to this repository and the organisation.
The security assurance case for this skill (threat model, trust boundaries, countermeasures and limits) is in docs/SECURITY-ASSURANCE.md.
Checks that run on pull requests in this repository:
- Skill Validation (
lint.yml), Eval Validation (eval-validate.yml), Harness Verification (harness-verify.yml) and Template Drift (check-template-drift.yml), described under Checks. - Labeler (
labeler.yml, onpull_request_target): applies labels from.github/labeler.ymlthrough the shared workflow innetresearch/.github, which does not check out the pull request. - DCO: every commit carries a
Signed-off-bytrailer. - CodeQL default setup (a repository setting, not a workflow file) analyses the GitHub Actions workflows with the extended query suite.
- CodeRabbit (a GitHub App configured for the organisation, not a workflow file) reviews pull requests and reports a
CodeRabbitstatus; it is not a required check. - Security (
security.yml, on pull requests intomainand pushes tomain): Betterleaks secret scanning, zizmor workflow analysis, dependency review (pull requests only), andcomposer auditwith an Opengrep SAST scan (--config auto; which findings fail the check is set by the organisation rule). GitHub secret scanning with push protection is also enabled for this repository. - Branch protection on
mainrequires Skill Validation, Eval Validation, Secret Scanning, Composer Audit, SAST (Opengrep), dependency review, CodeQLAnalyze (actions)and DCO to pass before a merge; it is not enforced for repository admins.
License
Code: MIT. Documentation/content: CC-BY-SA-4.0. See LICENSE-MIT and LICENSE-CC-BY-SA-4.0.