סקיל Yeet
yeet הוא סקיל לקלוד קוד שמבצע את כל זרימת הסיום ברצף אחד: staging, קומיט, דחיפה, ופתיחת pull request ב-GitHub, באמצעות ה-gh CLI. במקום להריץ ידנית את כל הפקודות בכל פעם, פקודה אחת לוקחת את השינויים מהעבודה ועד PR פתוח. הסקיל יוצר ענף אם צריך, מבצע קומיט תמציתי, דוחף עם מעקב, מאתר תבנית PR של המאגר אם קיימת, ופותח PR כטיוטה עם כותרת וגוף שמשקפים את השינוי האמיתי. הוא מקפיד לא לשנות סטטוס של PR קיים. בפרויקטי הפיתוח שאני מוביל, סגירת מעגל מהירה מקוד ל-PR שומרת על קצב. במדריך תקבלו את כל ההנחיות, ארבעה תרחישי שימוש, וצ'קליסט איכות.
פקודת התקנה
npx skills add openai/skills@yeet -g -y
ההתקנה מתבצעת דרך מנהל החבילות הרשמי של הסקילים בפקודה אחת. הסקיל הוא קובץ Markdown פתוח מהמאגר של OpenAI, ומופעל כשמבקשים לבצע קומיט, דחיפה ופתיחת PR ברצף אחד. דורש את gh CLI מאומת. אפשר להוריד ולבדוק את הקוד דרך הכפתורים שבראש העמוד.
מה הסקיל כולל?
הסקיל מתעד זרימת סיום בפקודה אחת: יצירת ענף, קומיט תמציתי, דחיפה עם מעקב, איתור תבנית PR, ופתיחת PR טיוטה עם כותרת וגוף שמשקפים את השינוי, בלי לשנות PR קיים.
קוד הסקיל המלא
---
name: "yeet"
description: "Use only when the user explicitly asks to stage, commit, push, and open a GitHub pull request in one flow using the GitHub CLI (`gh`)."
---
## Prerequisites
- Require GitHub CLI `gh`. Check `gh --version`. If missing, ask the user to install `gh` and stop.
- Require authenticated `gh` session. Run `gh auth status`. If not authenticated, ask the user to run `gh auth login` (and re-run `gh auth status`) before continuing.
## Naming conventions
- Branch: `{description}` when starting from main/master/default.
- Commit: `{description}` (terse).
- PR title: `{description}` summarizing the full diff.
## PR template discovery
Before creating the PR, resolve the repository root and look for the active GitHub PR template from there:
```shell
repo_root="$(git rev-parse --show-toplevel)"
```
Template candidates, in order:
- `.github/pull_request_template.md`
- `.github/PULL_REQUEST_TEMPLATE.md`
- One `*.md` file under `.github/pull_request_template/`
- One `*.md` file under `.github/PULL_REQUEST_TEMPLATE/`
Use paths as emitted from the repository root, such as `.github/pull_request_template.md`, not `./.github/pull_request_template.md`.
If exactly one template is found, read it before composing the final PR body and pass it to `gh pr create` with `--template "$template"`.
If multiple template files are found, stop before PR creation and ask which template to use. If no template exists, use the fallback body shape in this skill.
## Workflow
- If on main/master/default, create a branch: `git checkout -b "{description}"`
- Otherwise stay on the current branch.
- Confirm status, then stage everything: `git status -sb` then `git add -A`.
- Commit tersely with the description: `git commit -m "{description}"`
- Run checks if not already. If checks fail due to missing deps/tools, install dependencies and rerun once.
- Push with tracking: `git push -u origin $(git branch --show-current)`
- If git push fails due to workflow auth errors, pull from master and retry the push.
- Discover and read the repository PR template, if any.
- Check whether the current branch already has a PR: `gh pr view "$(git branch --show-current)" --json number,isDraft,url`
- If a PR already exists, update that PR in place. Do not create another PR, and do not change whether the existing PR is draft or ready for review.
- If no PR exists, open a new draft PR:
- With one template: `GH_PROMPT_DISABLED=1 GIT_TERMINAL_PROMPT=0 gh pr create --draft --fill --template "$template" --head "$(git branch --show-current)"`
- Without a template: `GH_PROMPT_DISABLED=1 GIT_TERMINAL_PROMPT=0 gh pr create --draft --fill --head "$(git branch --show-current)"`
- Edit the PR title and body so they reflect the actual net change in the diff.
- Write the PR description to a temp file with real newlines and pass it via `--body-file` or `gh pr edit --body-file` to avoid `\n`-escaped markdown.
## Determining the PR
When updating a PR created earlier in the flow, infer the PR from the current branch when possible:
```shell
git branch --show-current
gh pr view "$(git branch --show-current)" --json number --jq '.number'
```
If this finds an existing PR, preserve its current review state. Never convert an existing ready-for-review PR back to draft as part of `yeet`; only new PRs created by this flow should start as draft.
## PR Title
Format: `<type>(<scope>): <subject>`
`<scope>` is optional. A scope consist of a noun describing a section of the codebase (component, service or subsytem).
### Example
```
feat: add hat wobble
^--^ ^------------^
| |
| +-> Summary in present tense.
|
+-------> Type: chore, docs, feat, fix, refactor, style, or test.
```
More Examples:
- `feat`: (new feature for the user, not a new feature for build script)
- `fix`: (bug fix for the user, not a fix to a build script)
- `docs`: (changes to the documentation)
- `style`: (formatting, missing semi colons, etc; no production code change)
- `refactor`: (refactoring production code, eg. renaming a variable)
- `test`: (adding missing tests, refactoring tests; no production code change)
- `chore`: (updating grunt tasks etc; no production code change)
## PR Body Contents
When invoked, use `gh` to edit the pull request body and title to reflect the contents of the specified PR. Make sure to check the existing pull request body to see if there is key information that should be preserved. For example, NEVER remove an image in the existing pull request body, as the author may have no way to recover it if you remove it.
When a repository PR template exists, adapt the final PR body to that template. Preserve meaningful headings, required checklists, and repo-specific prompts, but replace placeholder text with net-diff-specific content or `N/A` where the template asks for it. Do not discard template sections just because the fallback shape below is shorter.
It is critically important to explain _why_ the change is being made. If the current conversation in which this skill is invoked has discussed the motivation, be sure to capture this in the pull request body.
The body should also explain _what_ changed, but this should appear after the _why_.
Limit discussion to the _net change_ of the commit. It is generally frowned upon to discuss changes that were attempted but later undone in the course of the development of the pull request. When rewriting the pull request body, you may need to eliminate details such as these when they are no longer appropriate / of interest to future readers.
Avoid references to absolute paths on my local disk. When talking about a path that is within the repository, simply use the repo-relative path.
Default to omitting `Verification`. Add it only when you have behavioral evidence worth preserving for reviewers: a reproduced bug, a before/after check, a targeted test that exercises the changed behavior, or a manual scenario with input and observed outcome. Do not use it for generic commands or automation results such as package tests, type checks, linters, formatters, pre-commit/pre-push hooks, or CI status.
If the repository template requires a validation or verification section, keep that section and avoid generic filler: include meaningful commands/results, a targeted manual scenario, or `Not run` with a reason.
Use professional Markdown:
- Put code, paths, commands, flags, and identifiers in backticks.
- Use fenced code blocks for shell transcripts or multi-line examples.
- Use GitHub permalinks when citing existing code relevant to the change.
- Reference relevant issues or related PRs, but do not reference the PR in its own body.
### Suggested PR Body Shape
Use this as a fallback when the repository does not have a PR template:
```markdown
## Why
Describe the user-facing or maintainer-facing problem, including cause and effect where useful.
## What Changed
Describe the net implementation change in concise prose.
```
מה זה yeet ולמה הסקיל הזה שונה?
yeet פותר את החזרתיות שבסיום עבודה: אותן פקודות שוב ושוב, add, commit, push, ואז פתיחת PR עם כותרת וגוף. כל שלב קטן, אבל ביחד זה חיכוך שחוזר בכל פיצ'ר. קל גם לשכוח שלב או לכתוב גוף PR רשלני. הסקיל מאחד הכל לזרימה אחת מסודרת מהקוד ועד PR פתוח.
מה שמייחד אותו הוא הטיפול החכם ב-PR. הסקיל לא רק דוחף, אלא מאתר את תבנית ה-PR של המאגר אם קיימת, ומתאים אליה את הגוף. הוא פותח PR כטיוטה כברירת מחדל, וכותב כותרת בפורמט מקובל וגוף שמסביר קודם למה השינוי נעשה ואז מה השתנה. אם כבר קיים PR לענף, הוא מעדכן אותו במקום ולא יוצר חדש, ולא משנה את סטטוס הסקירה שלו. כך הזרימה בטוחה ולא דורסת עבודה קיימת.
ההבדל מורגש בקצב. במקום שרשרת פקודות ידנית בכל פעם, פקודה אחת סוגרת את המעגל. בשילוב עם סקיל requesting-code-review, אפשר לפתוח PR מסודר ולבקש סקירה ברצף, וזה צירוף חזק לזרימת עבודה חלקה.
מה yeet נותן לקלוד קוד?
הסקיל מוסיף לקלוד זרימת סיום בפקודה אחת: ענף, קומיט, דחיפה ו-PR, עם תבנית מאגר, גוף שמשקף את השינוי, וטיפול בטוח ב-PR קיים.
זרימה אחת מהקוד ל-PR
הסקיל מבצע את כל שרשרת הסיום ברצף אחד: יוצר ענף אם מתחילים מ-main, מבצע staging וקומיט תמציתי, ודוחף עם מעקב. במקום להריץ כל פקודה ידנית בכל פעם, פקודה אחת לוקחת את השינויים מהעבודה ועד דחיפה מוכנה ל-PR.
גוף PR שמשקף את השינוי
הסקיל כותב כותרת PR בפורמט מקובל וגוף שמסביר קודם למה השינוי נעשה ואז מה השתנה, מוגבל לשינוי הנקי. הוא משתמש ב-Markdown מקצועי עם backticks לקוד ונתיבים. כך ה-PR מובן לסוקרים, ולא רק רשימת קבצים.
התאמה לתבנית המאגר
הסקיל מאתר את תבנית ה-PR של המאגר אם קיימת, ומתאים אליה את הגוף: שומר על כותרות, צ'קליסטים ושדות נדרשים, וממלא תוכן אמיתי במקום placeholder. אם יש כמה תבניות, הוא עוצר ושואל. כך ה-PR תואם למוסכמות הצוות.
טיפול בטוח ב-PR קיים
אם כבר קיים PR לענף, הסקיל מעדכן אותו במקום ולא יוצר כפול, ולא משנה את סטטוס הסקירה שלו. הוא גם שומר מידע קיים בגוף, למשל תמונות, ולא מוחק אותן. כך הזרימה לא דורסת עבודה קיימת ולא הופכת PR מוכן בחזרה לטיוטה.
ארבע היכולות הופכות את קלוד לסוגר מעגל מהיר ובטוח. בעבודות שלי, מעבר חלק מקוד ל-PR מסודר בפקודה אחת חסך שרשרת פקודות חוזרת וגוף PR רשלני.
למי הסקיל הזה מתאים?
מפתחים שפותחים הרבה PR-ים: זה הקהל המובהק. מי שסוגר פיצ'רים בקצב מריץ את אותה שרשרת פקודות שוב ושוב. הסקיל מאחד הכל לפקודה אחת, כך שהמעבר מקוד ל-PR מסודר הופך מיידי.
צוותים עם תבנית PR: כשלמאגר יש תבנית PR, חשוב למלא אותה נכון. הסקיל מאתר את התבנית ומתאים אליה את הגוף, כך שכל PR תואם למוסכמות הצוות בלי מאמץ ידני.
מי שמקפיד על גוף PR איכותי: PR טוב מסביר למה ומה. בשילוב עם סקיל finishing-a-development-branch, אפשר לסגור ענף בצורה מסודרת עם PR שמסביר את השינוי.
בוני אוטומציות זרימת עבודה: זרימת git חלקה היא חלק מהתהליך. גם בעבודות אוטומציה שלי, איחוד שלבי הסיום לפקודה אחת מפחית חיכוך ושומר על קצב.
מי שמעדכן PR קיים: לא כל דחיפה היא PR חדש. הסקיל מזהה PR קיים לענף ומעדכן אותו במקום, בלי ליצור כפול או לשנות את סטטוס הסקירה. כך עדכון עבודה קיימת בטוח ומסודר.
מי שפחות יתאים: מי שעובד מחוץ ל-GitHub, או שמעדיף לשלוט ידנית בכל שלב של ה-git, יזדקק לזרימה אחרת. הסקיל מבריק דווקא בסגירת מעגל מהירה מקוד ל-PR ב-GitHub.
איך yeet עזר לי בפרויקטים אמיתיים
מקוד ל-PR בפקודה אחת
סיימתי פיצ'ר ורציתי לפתוח PR. במקום add, commit, push ואז יצירת PR ידנית, פקודה אחת ביצעה את הכל: ענף, קומיט תמציתי, דחיפה, ו-PR טיוטה עם גוף שמשקף את השינוי. סגרתי את המעגל בשניות במקום בשרשרת פקודות חוזרת.
PR שתאם לתבנית המאגר
למאגר הייתה תבנית PR עם צ'קליסט ושדות. הסקיל איתר אותה והתאים את הגוף: שמר על הכותרות והצ'קליסט, ומילא תוכן אמיתי במקום placeholder. ה-PR יצא תואם למוסכמות הצוות, בלי שאצטרך להעתיק ולמלא את התבנית ידנית.
גוף PR שהסביר את הלמה
בעבר כתבתי גופי PR רשלניים. הסקיל כתב גוף שמסביר קודם למה השינוי נעשה ואז מה השתנה, ממוקד בשינוי הנקי. הסוקרים הבינו את ההקשר מיד, והסקירה הייתה מהירה יותר כי לא היו צריכים לנחש את המוטיבציה.
עדכון PR קיים בלי כפילות
דחפתי שינוי נוסף לענף שכבר היה לו PR. הסקיל זיהה את ה-PR הקיים ועדכן אותו במקום, בלי ליצור כפול ובלי לשנות את סטטוס הסקירה. גם תמונה שהייתה בגוף נשמרה. העבודה הקיימת לא נדרסה, והכל נשאר מסודר.
ארבעת המקרים מראים שזרימת סיום מאוחדת חוסכת חיכוך. כשפקודה אחת לוקחת מקוד ל-PR מסודר, מתאימה לתבנית המאגר, ומטפלת בבטחה ב-PR קיים, סגירת המעגל הופכת מהירה ועקבית בלי שרשרת פקודות חוזרת.
סיכום
סקיל yeet הוא כלי מצוין לכל מי שפותח PR-ים ב-GitHub. הוא מבצע staging, קומיט, דחיפה ופתיחת PR ברצף אחד, מאתר את תבנית המאגר, כותב גוף שמשקף את השינוי, ומטפל בבטחה ב-PR קיים בלי לשנות את סטטוס הסקירה.
אם אתם מתחילים, בפעם הבאה שתסיימו פיצ'ר, בקשו מקלוד לסגור את המעגל עם הסקיל. תראו כיצד פקודה אחת לוקחת אתכם מקוד ל-PR מסודר. משם, סיום עבודה הופך מהיר ועקבי.
בפוסטים הבאים אמשיך לסקור את הסקילים החזקים ביותר לפיתוח ולזרימת עבודה. האתר של דביר נעמן מרכז את כל הכלים, השיטות והליווי שאני מציע לעסקים שרוצים נוכחות דיגיטלית מנצחת עם בינה מלאכותית.
שיתוף הסקיל
שאלות ותשובות
מה זה בעצם הסקיל yeet?
זה סקיל לקלוד קוד שמבצע את כל זרימת הסיום ברצף אחד: staging, קומיט, דחיפה ופתיחת pull request ב-GitHub, באמצעות ה-gh CLI. במקום להריץ את כל הפקודות ידנית, פקודה אחת לוקחת את השינויים מהעבודה ועד PR פתוח, עם כותרת וגוף שמשקפים את השינוי האמיתי.
האם הסקיל פותח PR חדש בכל פעם?
לא. הסקיל בודק תחילה אם כבר קיים PR לענף הנוכחי. אם כן, הוא מעדכן אותו במקום ולא יוצר כפול, ולא משנה את סטטוס הסקירה שלו. רק כשאין PR קיים הוא פותח חדש, וכטיוטה כברירת מחדל. כך הזרימה בטוחה ולא דורסת עבודה קיימת ולא הופכת PR מוכן בחזרה לטיוטה.
איך מתקינים את הסקיל בקלוד קוד?
בפקודה אחת דרך מנהל החבילות הרשמי של הסקילים, כפי שמופיע בקופסת ההתקנה למעלה. הסקיל הוא קובץ Markdown פתוח מהמאגר של OpenAI, ודורש את gh CLI מאומת. אחרי ההתקנה בקשו לבצע קומיט, דחיפה ופתיחת PR ברצף, והסקיל יבצע את כל הזרימה.
מה צריך כדי שהסקיל יעבוד?
צריך את gh CLI מותקן ומאומת. הסקיל בודק את הגרסה ואת מצב ההתחברות, ואם חסר הוא מבקש להתקין או להתחבר עם gh auth login לפני שהוא ממשיך. הסקיל עצמו לא מכיל מפתחות או סיסמאות; הוא נשען על ההתחברות הסטנדרטית שלכם ל-GitHub, כך שהפעולות מאובטחות ובשליטתכם.
איך הסקיל מתמודד עם תבנית PR של המאגר?
הסקיל מאתר את תבנית ה-PR של המאגר בנתיבים המקובלים. אם נמצאת תבנית אחת, הוא קורא אותה ומתאים אליה את הגוף: שומר על כותרות, צ'קליסטים ושדות נדרשים, וממלא תוכן אמיתי במקום placeholder. אם יש כמה תבניות, הוא עוצר ושואל באיזו להשתמש, וכשאין תבנית הוא משתמש במבנה ברירת מחדל.
איך נראה גוף ה-PR שהסקיל כותב?
הגוף מסביר קודם למה השינוי נעשה ואז מה השתנה, ממוקד בשינוי הנקי בלבד. הוא משתמש ב-Markdown מקצועי, עם backticks לקוד, נתיבים ופקודות, ובלוקי קוד לדוגמאות. הסקיל גם שומר מידע קיים חשוב בגוף PR קיים, למשל תמונות, ולא מוחק אותן. כך ה-PR ברור ושימושי לסוקרים.
מה הפורמט של כותרת ה-PR והקומיט?
הכותרת בפורמט מקובל של סוג ותחום אופציונלי ונושא, למשל feat או fix עם תיאור תמציתי בזמן הווה. סוגים נפוצים כוללים feat לפיצ'ר, fix לתיקון, docs לתיעוד, refactor, style, test ו-chore. הקומיט תמציתי ומתאר את השינוי. כך ההיסטוריה וה-PR-ים קריאים ועקביים.
האם הסקיל מתאים גם למתחילים ב-git?
כן, ואף עוזר להם. הסקיל מבצע את כל שרשרת הסיום נכון ובסדר הנכון, כולל יצירת ענף, קומיט, דחיפה עם מעקב ופתיחת PR מסודר. כך מי שלא בקיא בכל הפקודות מקבל זרימה תקינה בפקודה אחת, ולומד תוך כדי את הפורמט הנכון של קומיטים ושל גוף PR איכותי.