Finalize a validated change: commit → push → PR → close out the ticket.
Preconditions: the operator has manually verified the change works. This skill does not run the test suite. It does not hard-require GitHub CLI — the PR host is resolved per
references/vcs-host-detection.md
.
-
Confirm branch is not the base branch. Resolve base via
references/build-tool-detection.md#base_branch
. If
git rev-parse --abbrev-ref HEAD
equals the base, abort with a clear message — never commit on
/the base branch.
-
Confirm a worktree or feature branch exists. If on a detached HEAD or a suspicious state, abort.
-
Stage and commit changes.
- Write a commit subject in the configured language per
references/output-preferences.md
and the project's convention if detectable (Conventional Commits if prior commits follow it — check ).
- Include a 1–3 sentence body only if the diff needs motivation; otherwise subject-only.
- Never add or AI credit.
- Run commit via HEREDOC to preserve formatting.
-
-
Create the PR. Resolve the create command via
references/vcs-host-detection.md
(
.turkit.yaml → vcs.pr_create
, else
, else
, else the manual fallback).
- Title: short, under 70 chars ().
- Body: delegate to (or re-use its output if already generated this session). Write it to a temp file and pass it as so multi-line markdown never has to be shell-quoted.
- Detect CLIs with / before choosing a fallback. Do not treat "CLI missing" as an error when the manual fallback is available.
- If a configured custom command is blocked by the host/tool sandbox, do not bypass approval. Print the exact manual command plus title/body/branch and use the manual fallback output.
- No PR host available (no config, no , no ): do not fail. Print the title + body and the pushed branch name, and tell the operator to open the PR in their host UI or CLI. Report with
PR : opened manually — <branch>
and the line carrying the number the operator assigns (or if unknown).
-
Mark the ticket Done. Via
references/issue-tracker-detection.md
. If no tracker, skip silently.
-
Report. Emit the
Output format block exactly — no prose before it, no prose after it. The bare
MUST be the very last line of the entire response so the operator (and other tools) can extract it without parsing.
The final response of this skill MUST end with this exact block. Fill placeholders, keep field labels and order intact, keep the blank line before
, and emit nothing after the number: