external/ag-shared/prompts/skills/pr-create/SKILL.md
Commit current changes (if any), push the branch, and open a pull request.
Read and follow all conventions in .rulesync/skills/git-conventions/SKILL.md.
If the user provides a command option of help:
gh) must be available.gh (gh auth status).origin.Gather all necessary context in parallel:
git status
git log --oneline -10
git branch --show-current
git remote -v
Determine:
CURRENT_BRANCH).Scan the external/ directory for symlinked directories that resolve to separate git repos with changes. These need their own branches and PRs before the outer repo's PR is created.
Identify symlinked repo candidates:
for dir in external/*/; do
[ -L "${dir%/}" ] && [ -d "$(readlink -f "${dir%/}")/.git" ] && echo "${dir%/}"
done
Skip any directory that is NOT a symlink (e.g., external/ag-shared is a real directory tracked in the outer repo — ignore it).
For each symlinked repo found, check for uncommitted or unpushed changes:
RESOLVED_PATH="$(readlink -f "<symlink>")"
git -C "$RESOLVED_PATH" status --porcelain
git -C "$RESOLVED_PATH" log --oneline @{upstream}..HEAD 2>/dev/null
If there are no uncommitted changes AND no unpushed commits, skip that repo silently.
For each symlinked repo WITH changes, create a matching branch, commit, push, and open a PR:
CURRENT_BRANCH or the topic branch name determined in STEP 4) for traceability.git -C "$RESOLVED_PATH" checkout -b <branch-name> 2>/dev/null || git -C "$RESOLVED_PATH" checkout <branch-name>
git -C "$RESOLVED_PATH" add -A
git -C "$RESOLVED_PATH" commit -m "$(cat <<'EOF'
Update for <outer-repo-name>: <brief description>
EOF
)"
git -C "$RESOLVED_PATH" push -u origin <branch-name>
cd "$RESOLVED_PATH" && gh pr create --title "<title>" --body "$(cat <<'EOF'
Companion PR for changes in <outer-repo-name>.
EOF
)"
SYMLINKED_REPO_PRS for the final report.If no symlinked repos have changes, proceed to the next step without comment.
Note: This step may execute before the outer repo's topic branch is fully determined (STEP 4). If a topic branch has not yet been created, defer symlinked repo processing until after STEP 4 and execute it between STEP 4 and STEP 5. The key requirement is that symlinked repo PRs are created BEFORE the outer repo's PR (STEP 7).
Determine the correct base branch for the PR:
bX.Y.Z release branch:
git log --oneline --decorate --all | head -30
git merge-base --is-ancestor origin/latest HEAD && echo "descends from latest"
latest (the main branch).bX.Y.Z branch (and not latest), use that release branch as the base.Store the result as BASE_BRANCH.
If currently on latest or a bX.Y.Z branch, a new topic branch is required:
${ARGUMENTS} contains a JIRA ticket (e.g., AG-12345): use ag-12345/<descriptive-slug><initials>/<descriptive-slug> (derive initials from git config user.name, or ask the user)${ARGUMENTS}.git checkout -b <branch-name>
If already on a topic branch (not latest or bX.Y.Z), continue on the current branch.
If there are uncommitted changes:
git diff
git diff --staged
git status
git add -A).git commit -m "$(cat <<'EOF'
<commit message>
EOF
)"
If there are no uncommitted changes and no unpushed commits, inform the user there is nothing to submit and STOP.
Push the branch to the remote, setting the upstream:
git push -u origin <branch-name>
Create the PR using gh:
gh pr create --base <BASE_BRANCH> --title "<title>" --body "$(cat <<'EOF'
<body>
EOF
)"
Follow git-conventions (see Pull Requests section). If JIRA-linked, include "Fix #AG-XXXX" at the end of the body.
Output the PR URL and a brief summary. If any symlinked repo PRs were created in STEP 2, include them as well:
PR created: <URL>
Base: <BASE_BRANCH> ← Head: <branch-name>
Title: <title>
If SYMLINKED_REPO_PRS is non-empty, also report:
Companion PRs (symlinked repos):
<repo-name>: <URL>
<repo-name>: <URL>
${ARGUMENTS} can optionally include:
AG-12345) - used for branch naming, commit prefix, and PR title.--base <branch> - override the base branch detection.Examples:
/pr-create - infer everything from current state and changes./pr-create AG-12345 Add tooltip delay support - JIRA-linked PR./pr-create Fix axis label overlap for long text - no-JIRA PR./pr-create --base b13.0.0 - target a specific release branch.