Synthèse automatique
Cette skill organise la livraison en deux temps : elle valide, commite et pousse une sous-branche puis ouvre ou réutilise une pull request, avant de revenir sur la branche principale pour exécuter le flux handle-pr.
Points forts
- Applique des barrières bloquantes avant tout commit : lint, type-check, tests, scan des console.log, any explicites et assertions non-null, plus la vérification de synchronisation des specs
- Réutilise les règles existantes de trellis-ship et de pr-handler au lieu de redéfinir une seconde fois la qualité et la procédure de fusion
- Réutilise une PR déjà ouverte au lieu d'en créer une deuxième, et crée par défaut une Draft PR avec un corps structuré (Summary, Changes, Test Plan, Related Issues)
- Interdit explicitement les pratiques destructrices : push --force, checkout -f, reset --hard, --no-verify, et impose un rapport final structuré même en cas d'échec
Limites
- Fortement couplée à l'écosystème Trellis : le dépôt doit contenir .cursor/commands/trellis-ship.md, trellis-finish-work.md et .agents/skills/pr-handler/SKILL.md, sinon la skill ne peut pas s'exécuter
- Suppose git, gh et pnpm disponibles, et s'arrête sur les conflits de fusion ou un arbre de travail sale sans les résoudre à la place de l'utilisateur
- La vérification de synchronisation des specs peut bloquer la création de la PR même quand le code est prêt
À utiliser lorsqu'une politique de dépôt interdit de livrer directement sur master/main et impose une PR depuis une sous-branche suivie d'une livraison depuis la branche principale.
À éviter sur un dépôt sans les fichiers de workflow Trellis et sans pr-handler, ou lorsque vous êtes déjà sur la branche principale et souhaitez simplement commiter.
Analyse de sécurité
PrudenceThis is a legitimate git/PR delivery workflow with explicit safeguards against force-push, hard reset, forced checkout, and skipped hooks. It does not exfiltrate secrets or run obfuscated/destructive commands, but it uses powerful shell, git, network, and package-script execution capabilities, so it merits caution rather than safe.
- •Runs repository-defined package scripts via `pnpm install`, `pnpm lint`, `pnpm type-check`, and `pnpm test`, which can execute arbitrary project code.
- •Performs git write/network operations: commits, pushes to `origin`, and creates PRs via `gh`.
- •Delegates merge/ship actions to `pr-handler`, expanding the effective scope beyond this file.
- •Relies on repository-local Trellis command and skill files as authoritative workflow instructions.
Exemples
ship sub — run the quality gates, commit and push my current feature branch, and open a draft PR against main.Create a PR from this feature branch, then check out main and run the handle-pr flow to validate and merge it.子分支提 PR 再由主分支合并:在当前 feature 分支提交推送并建 PR,然后切回 main 按 pr-handler 完成交付。name: ship-sub description: 子分支交付技能。用于用户要求“ship sub”、“子分支提 PR 再由主分支合并”、“feature branch ship”、“先创建 PR 再 handle-pr 交付”等场景。流程是在当前非主分支执行 finish-work/ship 级检查,提交并推送子分支,创建或复用 PR,然后切回主分支按 pr-handler 流程完成 handle-pr 交付。 license: MIT allowed-tools: Shell, Read, Write, Glob, Grep metadata: short-description: 子分支提交 PR,主分支 handle-pr 交付
Ship Sub
Overview
把一次完整交付拆成两个责任边界:
- 子分支 负责 review、spec 同步检查、commit、push、创建或复用 PR。
- 主分支 负责接手该 PR,执行
handle-pr的验证、合并、spec 更新与最终 ship。
这适用于不能直接在 master/main 上 ship 的仓库流程。它复用 .cursor/commands/trellis-ship.md 的质量门和 .agents/skills/pr-handler/SKILL.md 的主分支交付流程,但不重复定义两套规则。
前置条件
- 当前仓库必须是 Trellis 工作流仓库,并存在:
.cursor/commands/trellis-ship.md.cursor/commands/trellis-finish-work.md.agents/skills/pr-handler/SKILL.md
- 当前分支必须是 子分支,不能是
master/main,也不能是 detached HEAD。 - 本地必须可以使用
git、gh、pnpm。 - 如存在 task 目录,优先读取
task.json的base_branch、branch、pr_url。
工作流
1. 收集上下文
先确认:
- 当前分支名:
git branch --show-current - 工作区状态:
git status --short - 目标主分支:
- 优先
task.json.base_branch - 其次
origin/HEAD - 最后回退为
master或main
- 优先
- 当前 task:
- 优先
.trellis/.current-task - 其次从当前分支名匹配
.trellis/tasks/*/task.json
- 优先
若当前就在目标主分支上,立即中止,并告知用户这个技能只适用于子分支交付。
2. 子分支质量门
在当前子分支执行与 trellis-ship 一致的阻断检查:
pnpm lintpnpm type-checkpnpm test- 对变更源文件扫描:
console.log- 显式
any - 非空断言
!
同时执行 trellis-ship.md 里的 Spec 文档同步检查。命中触发条件而 spec 未同步时,必须中止;不要带着 spec 缺口继续创建 PR。
如果依赖缺失导致命令失败,可先尝试 pnpm install 再重跑一次;仍失败时,把失败原因明确报出,不要假装通过。
3. 子分支提交与推送
质量门通过后,在子分支完成提交:
- 查看变更:
git status、git diff --stat、git log --oneline -5 - 暂存变更时排除明显不应提交的文件:
.trellis/workspace/.agent-log- 凭证、密钥、
.env
- 使用 Conventional Commits
- 如仓库中可用
git-commit技能,优先按该技能的约定生成 commit message
推送规则:
- 默认
git push origin <current-branch> - 只有在本轮已经明确执行过 rebase / history rewrite 时,才使用
--force-with-lease - 绝不使用
--force
4. 创建或复用 PR
优先直接使用 gh:
gh pr list --head <current-branch> --base <base-branch> --json number,url,state,isDraft
gh pr create --draft --base <base-branch> --head <current-branch> --title "<title>" --body "<body>"
规则:
- 若该分支已有 PR,直接复用并输出 URL,不重复创建
- 默认创建 Draft PR
- PR 标题优先使用最新 commit message;必要时再精简成人类可读标题
- PR body 至少包含:
- Summary
- Changes
- Test Plan
- Related Issues
不要默认调用 .trellis/scripts/task.sh create-pr 或 .trellis/scripts/multi-agent/create-pr.sh 作为本技能的 PR 创建步骤,因为它们会在创建 PR 后写回 task.json,容易把子分支重新弄脏,影响后续切换主分支。
5. 切回主分支执行 Handle PR
拿到 PR URL 或编号后:
git checkout <base-branch>git pull origin <base-branch>- 读取
.agents/skills/pr-handler/SKILL.md - 按
pr-handler的五阶段流程处理该 PR
这里的主分支阶段不是“再造一个简化版”,而是直接复用现有 pr-handler:
- Discovery
- Validation Gate
- Local Merge
- Update Spec
- Ship
如果切换主分支前发现本地还有未提交改动,必须先停下并解释阻塞原因;不要在脏工作区上强行 checkout。
6. 结束条件
只有同时满足以下条件,才算完成:
- 子分支变更已经提交并推送
- PR 已创建或已确认存在
- 主分支
handle-pr已成功完成 - 本地仓库上下文最终回到
master/main
如果因为合并冲突、验证失败或本地脏状态导致流程中断,要明确指出是中断在:
- 子分支质量门
- 子分支推送 / PR 创建
- 主分支 handle-pr
输出要求
执行该技能时,最终至少汇报:
- 当前子分支
- 目标主分支
- 子分支 commit hash 与 commit message
- PR 编号 / URL
handle-pr最终结果- 当前本地所在分支
若中途失败,也要按同样结构汇报已完成部分和阻塞点。
安全规则
- 绝不在
master/main上直接执行“子分支阶段”的 commit/push/PR 创建 - 绝不
git push --force - 绝不
git checkout -f - 绝不
git reset --hard - 绝不跳过 hooks(
--no-verify) - spec 未同步时绝不继续创建 PR
- 主分支阶段必须以
pr-handler的真实验证结果为准,不得自行宣称完成
Du fichier au premier essai
Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.
Consulter la source et ses fichiers annexesCe téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.
1. Télécharger le fichier
Télécharger SKILL.mdDepuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/ship-sub-ms1aw4g0/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.
Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.
mkdir -p '.skill-downloads/ship-sub-ms1aw4g0' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/ship-sub-ms1aw4g0/download' --output '.skill-downloads/ship-sub-ms1aw4g0/SKILL.md.part' && mv '.skill-downloads/ship-sub-ms1aw4g0/SKILL.md.part' '.skill-downloads/ship-sub-ms1aw4g0/SKILL.md'2. Vérifier les prérequis
Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.
Outils déclarés par l’auteur (à vérifier dans votre agent) : Shell, Read, Write, Glob, Grep
Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.
Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.
3. Charger la skill
Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.
Claude Code
test -f '.skill-downloads/ship-sub-ms1aw4g0/SKILL.md' && test -s '.skill-downloads/ship-sub-ms1aw4g0/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/ship-sub' && cp -R '.skill-downloads/ship-sub-ms1aw4g0' '.claude/skills/ship-sub'Cursor
test -f '.skill-downloads/ship-sub-ms1aw4g0/SKILL.md' && test -s '.skill-downloads/ship-sub-ms1aw4g0/SKILL.md' && mkdir -p '.cursor/skills' && test ! -e '.cursor/skills/ship-sub' && cp -R '.skill-downloads/ship-sub-ms1aw4g0' '.cursor/skills/ship-sub'OpenSkills
OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.
Installation officielle d’OpenSkillsopenskills install './.skill-downloads/ship-sub-ms1aw4g0'openskills read 'ship-sub-ms1aw4g0'La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.
Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.
openskills syncMode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.
4. Faire un premier essai
Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :
Lis .skill-downloads/ship-sub-ms1aw4g0/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.
Configurer un canal de discussion avec SecretRefs
DevOps
Configurez des canaux de discussion avec des commandes non interactives, les secrets étant uniquement des SecretRefs. Couvre les étapes de collecte, modification, réparation et vérification.
Enquêter sur les échecs CI de ClickHouse
DevOps
Investigue un échec CI de ClickHouse de bout en bout à partir d'une URL de PR ou de rapport S3. Récupère les tests échoués, classe flaky vs vraie régression, et cherche des issues/fixes existants.
Revue de PR Ansible
DevOps
Examine une PR Ansible selon le processus standardisé du projet, incluant la validation des changelogs, la couverture de tests et le suivi des commentaires.