Git Workflow Steps¶
The Git plugin exposes reusable public workflow steps through GitPlugin.get_steps(). These steps are grouped here by workflow intent so authors can discover related building blocks more easily.
For full contract details for every public step, including documented inputs, outputs, and return behavior, see the detailed step reference.
Functional groups¶
Summary¶
| Step | Group | Used by built-in workflows |
|---|---|---|
get_status |
Status and Inspection | commit-ai |
get_current_branch |
Status and Inspection | create-pr-ai |
get_base_branch |
Status and Inspection | - |
create_commit |
Commits | commit-ai |
push |
Commits | commit-ai, create-pr-ai |
ai_generate_commit_message |
Commits | commit-ai |
save_current_branch |
Branching | - |
restore_original_branch |
Branching | - |
checkout |
Branching | - |
pull |
Branching | - |
create_branch |
Branching | - |
show_uncommitted_diff_summary |
Diff Summaries | commit-ai |
show_branch_diff_summary |
Diff Summaries | create-pr-ai |
create_worktree |
Worktrees | - |
remove_worktree |
Worktrees | - |
worktree_commit |
Worktrees | - |
worktree_push |
Worktrees | - |
Status and Inspection¶
Use these steps to inspect repository state and expose branch metadata to later steps.
get_status: retrieve repository status and exposegit_statusto the workflow contextget_current_branch: resolve the currently checked out branch nameget_base_branch: resolve the base branch used by Git workflows
Commits¶
Use these steps to prepare commit content and publish branch changes.
create_commit: create a commit from workflow commit message datapush: push the current branch to the configured remoteai_generate_commit_message: generate a commit message from local changes using AI
Branching¶
Use these steps to switch, create, and restore branches during a workflow.
save_current_branch: save the current branch in workflow contextrestore_original_branch: restore the saved branch later in the workflowcheckout: switch to a branch from workflow context or paramspull: update the current branch from the configured remotecreate_branch: create a new branch from workflow-provided branch data
Diff Summaries¶
Use these steps when a workflow needs human-readable or AI-friendly summaries of Git changes.
show_uncommitted_diff_summary: summarize local uncommitted changesshow_branch_diff_summary: summarize branch-level changes relative to the base branch
Worktrees¶
Use these steps to isolate workflow work in dedicated worktrees.
create_worktree: create a worktree for isolated workremove_worktree: remove a worktree when finishedworktree_commit: commit changes inside a specific worktreeworktree_push: push a branch from a specific worktree
Detailed Step Contracts¶
The summaries above show what each git step is for. The sections below show the documented contract for each public step: what it expects from ctx.data, what it saves back, and what result types it may return.
Expand a step to see its workflow usage, required context, inputs, outputs, and result behavior.
How to read these contracts:
Inputs (from ctx.data)= values the step expects before it runs.Outputs (saved to ctx.data)= metadata keys saved for later steps when the step returnsSuccessorSkip.Returns= the workflow result type (Success,Skip,Error,Exit), not a separate payload.
Status and Inspection¶
get_status
Retrieves the current git status and saves it to the context.
Workflow usage
Used by built-in workflows: commit-ai
Available to later steps: git_status
Requires
| Name | Type | Description |
|---|---|---|
ctx.git |
- | An initialized GitClient. |
Inputs (from ctx.data)
None documented.
Outputs (saved to ctx.data)
| Name | Type | Description |
|---|---|---|
git_status |
GitStatus | The full git status object, which includes the is_clean flag. |
Returns
| Result | Saved for later steps | Description |
|---|---|---|
Success |
git_status |
If there are changes to commit (workflow continues) |
Exit |
- | If working directory is clean (stops commit workflow; parent continues) |
Error |
- | If the GitClient is not available or the git command fails. |
get_current_branch
Retrieves the current git branch name and saves it to the context.
Workflow usage
Available to later steps: pr_head_branch
Requires
| Name | Type | Description |
|---|---|---|
ctx.git |
- | An initialized GitClient. |
Inputs (from ctx.data)
None documented.
Outputs (saved to ctx.data)
| Name | Type | Description |
|---|---|---|
pr_head_branch |
str | The name of the current branch, to be used as the head branch for a PR. |
Returns
| Result | Saved for later steps | Description |
|---|---|---|
Success |
pr_head_branch |
If the current branch was retrieved successfully. |
Error |
- | If the GitClient is not available or the git command fails. |
get_base_branch
Retrieves the configured main/base branch name and saves it to the context.
Workflow usage
Available to later steps: pr_base_branch
Requires
| Name | Type | Description |
|---|---|---|
ctx.git |
- | An initialized GitClient. |
Inputs (from ctx.data)
None documented.
Outputs (saved to ctx.data)
| Name | Type | Description |
|---|---|---|
pr_base_branch |
str | The name of the base branch, to be used as the base branch for a PR. |
Returns
| Result | Saved for later steps | Description |
|---|---|---|
Success |
pr_base_branch |
If the base branch was retrieved successfully. |
Error |
- | If the GitClient is not available or the git command fails. |
Commits¶
create_commit
Creates a git commit.
Workflow usage
Used by built-in workflows: commit-ai
Available to later steps: commit_hash
Requires
| Name | Type | Description |
|---|---|---|
ctx.git |
- | An initialized GitClient. |
Inputs (from ctx.data)
| Name | Type | Description |
|---|---|---|
git_status |
GitStatus | The git status object, used to check if the working directory is clean. |
commit_message |
str | The message for the commit. |
all_files |
bool, optional | Whether to commit all modified and new files. Defaults to True. |
no_verify |
bool, optional | Skip pre-commit and commit-msg hooks. Defaults to False. |
commit_hash |
str, optional | If present, indicates a commit was already created. |
Outputs (saved to ctx.data)
| Name | Type | Description |
|---|---|---|
commit_hash |
str | The hash of the created commit. |
Returns
| Result | Saved for later steps | Description |
|---|---|---|
Success |
commit_hash |
If the commit was created successfully. |
Error |
- | If the GitClient is not available, or the commit operation fails. |
Skip |
commit_hash |
If there are no changes to commit or a commit was already created. |
push
Pushes changes to a remote repository.
Workflow usage
Used by built-in workflows: commit-ai
Available to later steps: pr_head_branch
Requires
| Name | Type | Description |
|---|---|---|
ctx.git |
- | An initialized GitClient. |
Inputs (from ctx.data)
None documented.
Outputs (saved to ctx.data)
| Name | Type | Description |
|---|---|---|
pr_head_branch |
str | The name of the branch that was pushed. |
Returns
| Result | Saved for later steps | Description |
|---|---|---|
Success |
pr_head_branch |
If the push was successful. |
Error |
- | If the push operation fails. |
ai_generate_commit_message
Generate a commit message using AI based on the current changes.
Workflow usage
Used by built-in workflows: commit-ai
Available to later steps: commit_message
Requires
| Name | Type | Description |
|---|---|---|
ctx.git |
- | An initialized GitClient. |
ctx.ai |
- | An initialized AIClient. |
Inputs (from ctx.data)
| Name | Type | Description |
|---|---|---|
git_status |
- | Current git status with changes. |
Outputs (saved to ctx.data)
| Name | Type | Description |
|---|---|---|
commit_message |
str | AI-generated commit message. |
Returns
| Result | Saved for later steps | Description |
|---|---|---|
Success |
commit_message |
If the commit message was generated successfully. |
Error |
- | If the operation fails. |
Skip |
commit_message |
If no changes, AI not configured, or user declined. |
Branching¶
save_current_branch
Save current branch and stash uncommitted changes.
Workflow usage
Available to later steps: original_branch, has_stashed_changes
Inputs (from ctx.data)
None documented.
Outputs (saved to ctx.data)
| Name | Type | Description |
|---|---|---|
original_branch |
str | Name of the branch the user was on |
has_stashed_changes |
bool | Whether changes were stashed |
Returns
| Result | Saved for later steps | Description |
|---|---|---|
Success |
original_branch, has_stashed_changes |
Branch saved and changes stashed if needed |
Error |
- | Git operation failed |
restore_original_branch
Restore original branch and pop stashed changes.
Workflow usage
Inputs (from ctx.data)
| Name | Type | Description |
|---|---|---|
original_branch |
str | Name of the branch to restore |
has_stashed_changes |
bool | Whether to pop stashed changes |
Outputs (saved to ctx.data)
None documented.
Returns
| Result | Saved for later steps | Description |
|---|---|---|
Success |
- | Branch restored and changes popped if needed |
Error |
- | Git operation failed |
checkout
Checkout a Git branch.
Workflow usage
Inputs (from ctx.data)
| Name | Type | Description |
|---|---|---|
branch |
str | Branch name to checkout |
Outputs (saved to ctx.data)
None documented.
Returns
| Result | Saved for later steps | Description |
|---|---|---|
Success |
- | Branch checked out successfully |
Error |
- | Git operation failed |
pull
Pull from Git remote.
Workflow usage
Inputs (from ctx.data)
| Name | Type | Description |
|---|---|---|
remote |
str, optional | Remote name (defaults to "origin") |
branch |
str, optional | Branch name (defaults to current branch) |
Outputs (saved to ctx.data)
None documented.
Returns
| Result | Saved for later steps | Description |
|---|---|---|
Success |
- | Pull completed successfully |
Error |
- | Git operation failed |
create_branch
Create a new Git branch.
Workflow usage
Inputs (from ctx.data)
| Name | Type | Description |
|---|---|---|
new_branch |
str | Name of the branch to create |
start_point |
str, optional | Starting point for the branch (defaults to HEAD) |
delete_if_exists |
bool, optional | Delete the branch if it already exists (default: False) |
checkout |
bool, optional | Checkout the new branch after creation (default: True) |
Outputs (saved to ctx.data)
None documented.
Returns
| Result | Saved for later steps | Description |
|---|---|---|
Success |
- | Branch created successfully |
Error |
- | Git operation failed |
Diff Summaries¶
show_uncommitted_diff_summary
Show uncommitted changes and let the user select which files to include
Workflow usage
Used by built-in workflows: commit-ai
Inputs (from ctx.data)
None documented.
Outputs (saved to ctx.data)
None documented.
Returns
| Result | Saved for later steps | Description |
|---|---|---|
Success |
- | Files selected and saved to context |
Exit |
- | No files selected by the user |
Skip |
- | Could not retrieve diff stat |
show_branch_diff_summary
Show summary of branch changes (git diff base...head --stat).
Workflow usage
Inputs (from ctx.data)
| Name | Type | Description |
|---|---|---|
pr_head_branch |
str | Head branch name |
Outputs (saved to ctx.data)
None documented.
Returns
| Result | Saved for later steps | Description |
|---|---|---|
Success |
- | Always (even if no changes, for workflow continuity) |
Worktrees¶
create_worktree
Create a temporary git worktree in detached HEAD mode from remote main branch.
Workflow usage
Inputs (from ctx.data)
None documented.
Outputs (saved to ctx.data)
None documented.
Returns
| Result | Saved for later steps | Description |
|---|---|---|
Success |
- | If the worktree is created successfully. |
Error |
- | If the Git client is unavailable or worktree creation fails. |
remove_worktree
Remove a git worktree.
Workflow usage
Inputs (from ctx.data)
None documented.
Outputs (saved to ctx.data)
None documented.
Returns
| Result | Saved for later steps | Description |
|---|---|---|
Success |
- | If the worktree is removed successfully or is already gone. |
Error |
- | If cleanup fails. |
worktree_commit
Create a commit in a worktree.
Workflow usage
Inputs (from ctx.data)
None documented.
Outputs (saved to ctx.data)
None documented.
Returns
| Result | Saved for later steps | Description |
|---|---|---|
Success |
- | If the commit is created in the worktree. |
Error |
- | If required context is missing or the git command fails. |
worktree_push
Push from a worktree.
Workflow usage
Inputs (from ctx.data)
None documented.
Outputs (saved to ctx.data)
None documented.
Returns
| Result | Saved for later steps | Description |
|---|---|---|
Success |
- | If the branch is pushed from the worktree. |
Error |
- | If required context is missing or the git command fails. |
Docstring-based reference¶
The semiautomated step inventory reads public step docstrings from code and validates that each exposed step documents:
RequiresInputs (from ctx.data)when applicableOutputs (saved to ctx.data)when applicableReturns
The generated machine-readable inventory lives under docs/plugins/_generated/.
For this project, the inventory is maintained through:
.titan/workflows/sync-plugin-docs.yaml.titan/workflows/validate-plugin-docs.yaml.titan/steps/sync_plugin_docs.py.titan/steps/validate_plugin_docs.py