원클릭으로
backport-commit
// Port changes from a specific Git commit to the current branch by manually applying the diff, avoiding cherry-pick when it would introduce complex conflicts.
// Port changes from a specific Git commit to the current branch by manually applying the diff, avoiding cherry-pick when it would introduce complex conflicts.
Update the project CHANGES.md with issues from a given GitHub milestone, with correct categorization and references.
Create a user-facing GitHub issue from a PR, separating the WHAT from the HOW, with correct milestone, project, labels, and issue type.
Fetch information from Taiga public API for the Penpot project (id 345963) — issues, user stories, and tasks, without authentication.
Evaluate Clojure code via nREPL using the standalone tools/nrepl-eval.mjs CLI tool.
| name | backport-commit |
| description | Port changes from a specific Git commit to the current branch by manually applying the diff, avoiding cherry-pick when it would introduce complex conflicts. |
Port changes from a specific Git commit to the current branch by manually
applying the diff, avoiding git cherry-pick when it would introduce
complex conflicts.
Use this skill whenever the user asks to backport a commit, especially when:
git cherry-pick is explicitly ruled out ("do not use cherry-pick")# Verify the commit exists and understand what it does
git log --oneline -1 <commit-sha>
# Get the full diff (including new/deleted files)
git show <commit-sha>
# Capture the original commit message for later reuse
git log --format='%B' -1 <commit-sha>
From the file paths in the diff, determine which Penpot modules are affected
(frontend, backend, common, render-wasm, etc.) and read their AGENTS.md
files before making any changes. If a module has no AGENTS.md, skip
that step — verify with ls <module>/AGENTS.md first.
For every file the diff touches, read the current version on disk to understand context and ensure correct placement before editing.
Process every hunk in the diff using the appropriate tool:
| Diff action | Tool to use |
|---|---|
| Modify existing file | edit — use enough surrounding context in oldString to uniquely match the location |
| Add new file | write — include proper license header and namespace conventions matching project style |
| Delete file | bash rm <path> |
| Rename/move file | bash mv <old> <new>, then apply any content changes with edit |
Tip: Group nearby hunks from the same file into a single
editcall. Use separate calls when hunks are far apart to keepoldStringshort and unambiguous.
Repeat until all hunks in the diff are ported.
Run lint, check-fmt, and tests for every affected module (see each
module's AGENTS.md for the exact commands). If the formatter auto-fixes
indentation, verify the logic is still semantically correct. All checks must
pass before moving on.
If the original commit added or modified a CHANGES.md entry, port that entry
too — adapting wording and version references for the target branch.
Ask the commiter sub-agent to create a commit. Stage all relevant files
(exclude unrelated untracked files) and provide the original commit message as
a reference, adapting it as needed for the target branch context.
commiter agent handles formatting