一键导入
renovate-integration
Approval-gated workflow for integrating Renovate updates across the OSOCE superproject and submodules with strict branch and safety controls.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Approval-gated workflow for integrating Renovate updates across the OSOCE superproject and submodules with strict branch and safety controls.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | renovate-integration |
| description | Approval-gated workflow for integrating Renovate updates across the OSOCE superproject and submodules with strict branch and safety controls. |
| license | MIT |
| metadata | {"author":"Lombiq Technologies","version":"1.1"} |
Use this skill to safely integrate Renovate dependency updates in OSOCE and its submodules.
<WORK_ITEM_KEY>.Initialization prompt:
Please provide the Jira work item / issue key to use (e.g. OSOE-123).
After key capture, declare:
STATE: INITIALIZED
WORK ITEM KEY: <WORK_ITEM_KEY>
git push unless explicitly instructed by the user.renovate/* branches.dev. Never push directly to dev on any repo — all changes must go through PRs on issue/<WORK_ITEM_KEY> branches.issue/<WORK_ITEM_KEY>.<WORK_ITEM_KEY>: — the key is already encoded in the branch name.At the top of every response, declare exactly one state:
| State | Description |
|---|---|
INITIALIZED | Work item key captured, ready to begin |
ANALYSIS | Phase 1: reviewing Renovate branches |
AWAITING_APPROVAL | Waiting for user approval |
IMPLEMENTATION | Phase 2: applying changes |
PR_CREATION | Phase 3-4: GitHub Actions and PR work |
FINALIZATION | Phase 5: merge and cleanup |
Required state: ANALYSIS
Actions:
scripts/git/analyze-renovate-branches.sh to discover all eligible renovate/* branches across the superproject and every submodule. The script applies the same age/merge filters as checkout-latest-renovate.sh but lists every eligible branch (not just one per repo) with diffs and commit logs. Do not write your own git commands to discover renovate branches — always use this script.scripts/git/checkout-latest-renovate.sh (dry-run or read its output) to confirm which single branch per submodule the checkout script would select.Constraints:
scripts/git/checkout-latest-renovate.sh or scripts/git/analyze-renovate-branches.sh.Completion output:
STATE: AWAITING_APPROVAL
STATUS: Awaiting approval for Phase 1 (Analysis)
Required state: IMPLEMENTATION
Gate: proceed only after APPROVED: Phase 1
Actions:
scripts/git/checkout-latest-renovate.sh to check out the selected renovate branches. Always use this script — never generate replacement commands.issue/<WORK_ITEM_KEY> branch — leave the renovate branch checked out. The existing Renovate PR will suffice.issue/<WORK_ITEM_KEY> from origin/dev and merge all applicable renovate branches into it.issue/<WORK_ITEM_KEY>, always use merge commits (not fast-forward): pass --no-ff to git merge so a merge commit is always created.renovate/* branches identified during Phase 1 analysis into issue/<WORK_ITEM_KEY> in each affected submodule.renovate/* branch in the superproject itself (e.g. origin/renovate/non-breaking-dependency-versions). If one exists and is eligible, merge it into issue/<WORK_ITEM_KEY> in the superproject instead of manually editing the same files./property:RunAnalyzersDuringBuild=true to surface analyzer violations (especially important when analyzer packages like Meziantou.Analyzer are updated).issue/<WORK_ITEM_KEY> branches in those submodules if they don't already have one, merge any applicable renovate branches into them, and commit the warning fixes.EqualsOrdinalIgnoreCase and similar extension methods from Lombiq.HelpfulLibraries (declared in namespace System; so no extra using is needed) over raw string.Equals(…, StringComparison.…) calls.issue/<WORK_ITEM_KEY>.Completion output:
STATE: AWAITING_APPROVAL
STATUS: Awaiting approval for Phase 2 (Implementation)
Required state: PR_CREATION
Gate: proceed only after APPROVED: Phase 2
Actions:
tools/Lombiq.GitHub.Actions has changes (e.g. lock file maintenance in asset-lint), its internal workflow/action @dev references must be temporarily updated to @issue/<WORK_ITEM_KEY> so CI can resolve them from the issue branch.Lombiq/GitHub-Actions/...@dev references to @issue/<WORK_ITEM_KEY> in every .yml file under tools/Lombiq.GitHub.Actions/.github/ (both actions/ and workflows/). Use a targeted regex that matches only @dev when it is immediately preceded by a path under Lombiq/GitHub-Actions/ — do not do a global @dev replacement, as that will also change refs to other repos (e.g. Lombiq/PowerShell-Analyzers) that do not have an issue/<WORK_ITEM_KEY> branch and will cause CI to fail..github/workflows/*.yml files the same way — replace only Lombiq/GitHub-Actions/...@dev with @issue/<WORK_ITEM_KEY>, leaving any other repo refs (e.g. Lombiq/PowerShell-Analyzers/...@dev) unchanged.@dev in Phase 5 (Finalization).Required state: PR_CREATION
Gate: proceed only after APPROVED: Phase 2
Actions:
issue/<WORK_ITEM_KEY> branches to all repos that have one (submodules with multiple renovate branches or additional changes, and the superproject).dev, referencing <WORK_ITEM_KEY> in the PR description.issue/<WORK_ITEM_KEY> branches, targeting dev, referencing <WORK_ITEM_KEY> in the description.Update dependencies: Microsoft.NET.Test.Sdk 18.0.1 → 18.3.0, Swashbuckle.AspNetCore 10.1.4 → 10.1.5.gh run list.run-windows-build label to the PR (using gh pr edit --add-label run-windows-build) to trigger the Windows build, then wait for it to succeed too.Completion output:
STATE: AWAITING_APPROVAL
STATUS: Awaiting approval for Phase 4 (PR Creation) — all CI checks passed.
Required state: FINALIZATION
Gate: proceed only after APPROVED: Phase 4
Actions:
tools/Lombiq.GitHub.Actions: revert all @issue/<WORK_ITEM_KEY> references back to @dev in every .yml file under .github/ (both actions/ and workflows/). Commit on the issue/<WORK_ITEM_KEY> branch and push. This ensures @dev self-references land on dev when the PR is merged..github/workflows/*.yml files: revert the same @issue/<WORK_ITEM_KEY> → @dev replacements.dev:
issue/<WORK_ITEM_KEY> branches (these were created in Phase 4). Use gh pr merge --merge --admin — the --admin flag is required to bypass merge queues and branch protection rules that are common in these repos. Never use git push origin dev or git merge directly onto dev.dev head (git fetch origin dev && git checkout origin/dev in each submodule).[skip ci] in commit messages for submodule pointer updates and reference reverts. Do not wait for CI on these commits.dev only when explicitly approved.dev in the superproject itself (git fetch origin dev && git checkout origin/dev).Completion output:
STATE: FINALIZATION
STATUS: Complete
Always use the scripts below instead of generating equivalent inline commands or new scripts. The scripts encode the canonical filtering logic (age cutoff, merge check) and must be the single source of truth.
renovate/* branches in the superproject and every submodule.checkout-latest-renovate.sh) so newly-pushed Renovate branches are always visible.checkout-latest-renovate.sh.diff --stat and commit log against origin/dev for every eligible branch.checkout-latest-renovate.sh which only processes submodules).MAX_AGE_DAYS (default: 5).renovate/* branch per repository.MAX_AGE_DAYS).origin/dev.analyze-renovate-branches.sh and merged during Phase 2.Trigger self-update when user feedback is general, reusable, and project-wide, including:
Do not self-update for one-off, situational, or hypothetical feedback.
When self-update is required:
Should I persist this change into the renovate-integration skill?CONFIRM SKILL UPDATESKILL.md, README.md, and scripts/* as needed.CHANGELOG.md with date, summary, and reason.OSOCE is a superproject with extensive Git submodule usage. Submodules track dev via .gitmodules.
Relevant Renovate config files:
renovate.json5renovate-osoce.json5renovate-osoce-submodule.json5renovate-osoce-orchard-core-submodule.json5Key repository areas (non-exhaustive):
src/Modules/*src/Libraries/*src/Themes/*src/Utilities/*test/*tools/*