一键导入
lina-community-commit-push-and-pr
手动触发:为 LinaPro 主仓库及 apps/lina-plugins 子模块完成提交、PR 前 rebase、推送、创建 PR, 主仓 CI 修复回路,以及 PR 合并后恢复原始分支并同步 main。禁止自动触发。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
手动触发:为 LinaPro 主仓库及 apps/lina-plugins 子模块完成提交、PR 前 rebase、推送、创建 PR, 主仓 CI 修复回路,以及 PR 合并后恢复原始分支并同步 main。禁止自动触发。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
手动触发:将主仓库与 apps/lina-plugins 对齐最新 main 后, 按提示在两侧各建独立分支;分支就绪后继续处理提示词中的后续请求。 必须用户手动触发,禁止自动触发该技能。
用于处理用户对已有实现的反馈分诊与执行闭环:先判断是否需要纳入 OpenSpec 活跃变更或新建变更,再完成根因分析、实现、验证和必要测试。凡是用户针对已有实现反馈 Bug、缺陷、改进点、建议或实现遗漏,即使没有明确提到“反馈”或 OpenSpec,也必须使用本技能。
用于审查 LinaPro OpenSpec 工作流中的代码变更和规范合规性。在完成 /opsx:apply 任务、 完成 lina-feedback 反馈修复、执行 /opsx:archive 归档前必须使用;在用户要求代码审查、 规范合规检查,或明确调用 /lina-review 时也必须使用。
审查 LinaPro 社区 GitHub Issues,并按项目规范和源码实现分类处理。 必须用户手动触发,禁止自动触发该技能。
先执行 lina-openspec-archive-changes 归档活跃变更,再执行 lina-openspec-archive-consolidate 做归档摘要。 必须用户手动触发,禁止自动触发。
排查并修复给定的 LinaPro GitHub Actions 失败问题;修复完成后保留本地改动, 禁止自动提交、推送或创建 PR。 必须用户手动触发,禁止自动触发该技能。
| name | lina-community-commit-push-and-pr |
| description | 手动触发:为 LinaPro 主仓库及 apps/lina-plugins 子模块完成提交、PR 前 rebase、推送、创建 PR, 主仓 CI 修复回路,以及 PR 合并后恢复原始分支并同步 main。禁止自动触发。 |
串联主仓库与apps/lina-plugins的提交、推送、PR与收尾。子模块有变更时先合子模块PR,再更新主仓库子模块指针并开主仓库PR。主仓库PR存活期间子模块修复走 fix 分支,禁止在子模块main上改代码。
linaproai/linapro。.gitmodules和git -C apps/lina-plugins remote -v读取,通常是linaproai/official-plugins。PR目标分支均固定为各自main。PR前:提交当前变更 → PR前rebase门禁 → 推送 → 创建PR。PR前rebase外,不使用--force、--force-with-lease、git reset --hard等历史重写,除非用户明确要求。main只读对齐,禁止在其上commit/push修复。 若当前在main且需改子模块,必须先switch -c fix/<main-branch>(或等价任务分支)。PR创建后停止,等用户已合并/继续;主仓库PR创建后停止。用户说继续后用gh pr view或远端main确认已合并,未合并则停止。PR未合并前若需改子模块,走阶段 2.5,不得进入阶段三。PR均MERGED后,切回流程开始时的原始分支并包含最新origin/main。rebase/子模块指针冲突时立即停止交用户;禁止自行解冲突或继续rebase。git status --short --branch
git branch --show-current
cat .gitmodules
git submodule status apps/lina-plugins
git -C apps/lina-plugins status --short --branch
git remote -v
git -C apps/lina-plugins remote -v
gh auth status
记录原始分支(收尾必用):
original_main_branch=$(git branch --show-current)
original_sub_branch=$(git -C apps/lina-plugins branch --show-current)
主仓库或子模块处于分离HEAD,或任一原始分支为空时停止,除非用户明确要求继续。
顺序:提交 → fetch origin main → rebase origin/main → 检查origin/main..HEAD → 推送 → 创建PR。不得用merge origin/main代替。
子模块:
git -C apps/lina-plugins fetch origin main
git -C apps/lina-plugins rebase origin/main
git -C apps/lina-plugins merge-base --is-ancestor origin/main HEAD
git -C apps/lina-plugins log --oneline --decorate origin/main..HEAD
主仓库:
git fetch origin main
git rebase origin/main
git merge-base --is-ancestor origin/main HEAD
git log --oneline --decorate origin/main..HEAD
origin/main..HEAD含无关/异常提交时不得开PR,报告后等用户决定。push非快进被拒时不得自动强推;需用户授权或改用新分支名。rebase冲突:停止,不推送、不开PR;禁止add/commit/rebase --continue|--skip|--abort,除非用户明确要求。可合并性先只读检查:
git merge-tree --write-tree HEAD origin/main
可自动合并时:
git merge --no-edit origin/main
git push origin "$(git branch --show-current)"
冲突则停止并报告;工作区已冲突时保留现场,不自动merge --abort,除非用户要求。
git -C apps/lina-plugins status --short --branch
git -C apps/lina-plugins diff --stat
git -C apps/lina-plugins diff --cached --stat
无内容更新则跳过,进入阶段二。
有更新时:
main,先切任务分支:sub_branch=$(git -C apps/lina-plugins branch --show-current)
if [ "$sub_branch" = "main" ]; then
git -C apps/lina-plugins switch -c "<task-branch>"
sub_branch=$(git -C apps/lina-plugins branch --show-current)
fi
<类型>[可选作用域]: <描述>):git -C apps/lina-plugins add -A
git -C apps/lina-plugins commit -m "<submodule-subject>"
PR前rebase门禁。PR;记录sub_pr_url/sub_branch。git -C apps/lina-plugins push origin "$sub_branch"
gh pr create \
--repo "<submodule-owner>/<submodule-repo>" \
--base main \
--head "$sub_branch" \
--title "<title>" \
--body-file -
PR地址后停止:请先 review 并合并该 submodule PR。合并完成后回复“已合并”或“继续”,我再更新主仓库 submodule 指针并创建主仓库 PR。
创建后不得进入阶段二。
条件:子模块无更新,或阶段一PR已确认MERGED。
main。git fetch origin main
git -C apps/lina-plugins fetch origin main
PR,确认已合并;未合并则停止。gh pr view "<submodule-pr-number-or-url>" \
--repo "<submodule-owner>/<submodule-repo>" \
--json number,state,mergeCommit,url,baseRefName,headRefName
origin/main(仅取指针,非修复工作区):git -C apps/lina-plugins switch main
git -C apps/lina-plugins merge --ff-only origin/main
git status --short --branch
git diff --submodule=log -- apps/lina-plugins
git diff --stat
main_branch=$(git branch --show-current)
git add apps/lina-plugins
# 已确认属于本次任务的其它路径再 git add
git commit -m "chore(plugins): update lina-plugins submodule"
PR前rebase门禁。PR;记录main_pr_url/main_branch。git push origin "$main_branch"
gh pr create \
--repo linaproai/linapro \
--base main \
--head "$main_branch" \
--title "<title>" \
--body-file -
若PR状态为CONFLICTING,按冲突处理;能自动合则合入origin/main并推送,否则停止。
主仓 PR 创建后:子模块切到 fix 分支,禁止停在main等待。
git -C apps/lina-plugins fetch origin main
git -C apps/lina-plugins switch main
git -C apps/lina-plugins merge --ff-only origin/main
sub_fix_branch="fix/${main_branch}"
git -C apps/lina-plugins switch -c "$sub_fix_branch"
若fix/${main_branch}已存在,则switch该分支并rebase origin/main(冲突则停)。
阶段二完成后停止:
请 review 主仓库 PR。若 CI/评审需改子模块:在 fix/<主仓分支> 上修改并走阶段 2.5,禁止在子模块 main 上提交。
主仓库 PR 合并后回复“已合并”或“继续收尾”。
触发:主仓库PR已开未合,且 CI/评审需要改代码。
门禁:
main且要改内容 → 先切/建fix/<main_branch>,禁止在main上commit/push。main_branch并push更新同一PR(用户要求新开PR除外)。子模块需改时:
fix/<main_branch>(基于最新origin/main)。PR前rebase → 推送 → 创建子模块 follow-upPR。PR。MERGED后:git -C apps/lina-plugins fetch origin main
git -C apps/lina-plugins switch main
git -C apps/lina-plugins merge --ff-only origin/main
# 主仓库任务分支上更新指针
git switch "$main_branch"
git add apps/lina-plugins
git commit -m "chore(plugins): update lina-plugins submodule"
# PR 前 rebase 门禁后
git push origin "$main_branch"
# 子模块回到 fix 分支待命
git -C apps/lina-plugins switch -c "fix/${main_branch}" 2>/dev/null \
|| git -C apps/lina-plugins switch "fix/${main_branch}"
git -C apps/lina-plugins merge --ff-only origin/main
main_branch提交、rebase、push即可。PR,不得提前阶段三。条件:本流程创建过的子模块/follow-up与主仓库PR均已MERGED;original_*非空;无未提交修复。
MERGED。gh pr view "<submodule-pr-or-followup>" \
--repo "<submodule-owner>/<submodule-repo>" \
--json number,state,mergeCommit,url
gh pr view "<framework-pr-number-or-url>" \
--repo linaproai/linapro \
--json number,state,mergeCommit,url
main。git fetch origin main
git -C apps/lina-plugins fetch origin main
origin/main。git -C apps/lina-plugins switch "$original_sub_branch"
git -C apps/lina-plugins merge --ff-only origin/main
--ff-only失败则按冲突处理;需人工选择时停止。
git switch "$original_main_branch"
git merge --ff-only origin/main
git status --short --branch
git merge-base --is-ancestor origin/main HEAD
git -C apps/lina-plugins status --short --branch
git -C apps/lina-plugins merge-base --is-ancestor origin/main HEAD
-u;落后或分叉则停止。git rev-list --left-right --count "origin/$original_main_branch"...HEAD
git -C apps/lina-plugins rev-list --left-right --count "origin/$original_sub_branch"...HEAD
git push origin "$original_main_branch"
git -C apps/lina-plugins push origin "$original_sub_branch"
通用:Summary、Tests(未跑则写Not run by this PR creation step.)、Related Issue(识别到用Resolves ...,否则说明无关联且不阻塞)。
主仓库另加Submodule:apps/lina-plugins从何 SHA 更新到何 SHA。
阶段一: 子模块分支/主题/推送目标、rebase与origin/main..HEAD、PR地址、等待合并提醒。
阶段二: 子模块对齐的main SHA、主仓库分支/主题、rebase检查、PR地址与可合并性、子模块当前 fix 分支、工作区是否干净、测试是否运行。
阶段 2.5: 修复落在哪一仓库/分支、子模块 follow-upPR(如有)、主仓库是否已 bump 指针并 push、下一步等待项。
阶段三: 已合并PR与 merge commit、两侧当前分支与是否含最新main/是否已推送、工作区是否干净、测试是否运行。