contribute

Git-Town Contribution Workflow — STOP AND READ

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "contribute" with this command: npx skills add terrylica/cc-skills/terrylica-cc-skills-contribute

Git-Town Contribution Workflow — STOP AND READ

This workflow guides you through a complete contribution cycle using git-town.

⛔ WORKFLOW ENFORCEMENT

YOU MUST USE GIT-TOWN COMMANDS. RAW GIT BRANCH COMMANDS ARE FORBIDDEN.

Step ✅ Correct ❌ Forbidden

Create branch git town hack

git checkout -b

Update branch git town sync

git pull , git fetch , git merge

Create PR git town propose

Manual GitHub UI

Merge PR git town ship

git merge

  • git push

Phase 0: Preflight — MANDATORY

Step 0.1: Create TodoWrite

TodoWrite with todos:

  • "[Contribute] Phase 0: Verify fork workflow is configured" | in_progress
  • "[Contribute] Phase 0: Check workspace is clean" | pending
  • "[Contribute] Phase 0: Sync with upstream" | pending
  • "[Contribute] Phase 1: GATE - Confirm feature branch creation" | pending
  • "[Contribute] Phase 1: Create feature branch with git town hack" | pending
  • "[Contribute] Phase 2: Implement changes" | pending
  • "[Contribute] Phase 2: Commit changes (raw git allowed here)" | pending
  • "[Contribute] Phase 2: Sync branch before PR" | pending
  • "[Contribute] Phase 3: GATE - Confirm PR creation" | pending
  • "[Contribute] Phase 3: Create PR with git town propose" | pending
  • "[Contribute] Phase 4: (Optional) Ship PR with git town ship" | pending

Step 0.2: Verify Fork Workflow Configured

/usr/bin/env bash << 'VERIFY_FORK_EOF' echo "=== FORK WORKFLOW VERIFICATION ==="

Check remotes

ORIGIN=$(git remote get-url origin 2>/dev/null) UPSTREAM=$(git remote get-url upstream 2>/dev/null)

if [[ -z "$UPSTREAM" ]]; then echo "❌ FATAL: upstream remote not configured" echo "Run: /git-town-workflow:fork to configure" exit 1 fi

echo "✅ origin: $ORIGIN" echo "✅ upstream: $UPSTREAM"

Check git-town config

SYNC_UPSTREAM=$(git config git-town.sync-upstream 2>/dev/null) if [[ "$SYNC_UPSTREAM" != "true" ]]; then echo "⚠️ WARNING: git-town.sync-upstream is not true" echo "Run: git config git-town.sync-upstream true" fi

Check current branch

CURRENT_BRANCH=$(git branch --show-current) echo "Current branch: $CURRENT_BRANCH"

VERIFY_FORK_EOF

If verification fails:

AskUserQuestion with questions:

  • question: "Fork workflow is not configured. Run fork setup first?" header: "Setup Required" options:
    • label: "Yes, run /git-town-workflow:fork now" description: "Configure fork workflow first"
    • label: "No, abort" description: "Cannot proceed without fork setup" multiSelect: false

Step 0.3: Check Workspace Clean

/usr/bin/env bash -c 'git status --porcelain'

If workspace has changes:

AskUserQuestion with questions:

  • question: "Workspace has uncommitted changes. How to proceed?" header: "Dirty Workspace" options:
    • label: "Stash changes (Recommended)" description: "git stash, create branch, git stash pop"
    • label: "Commit changes first" description: "Create commit before new branch"
    • label: "Discard changes" description: "WARNING: Loses uncommitted work"
    • label: "Abort" description: "Handle manually" multiSelect: false

Step 0.4: Sync with Upstream

ALWAYS sync before creating feature branch:

git town sync

If conflicts occur:

  • Display conflict files

  • Wait for user to resolve

  • Run git town continue

Phase 1: Create Feature Branch

Step 1.1: GATE — Confirm Branch Creation

AskUserQuestion with questions:

  • question: "What is the feature branch name?" header: "Branch Name" options:
    • label: "feat/{feature-name}" description: "Standard feature branch"
    • label: "fix/{bug-name}" description: "Bug fix branch"
    • label: "docs/{doc-name}" description: "Documentation branch"
    • label: "Enter custom name" description: "I'll provide the full branch name" multiSelect: false

Step 1.2: Create Branch with git-town

⛔ NEVER use git checkout -b . ALWAYS use:

git town hack {branch-name}

This command:

  • Fetches from origin and upstream

  • Creates branch from updated main

  • Sets up tracking correctly

  • Updates parent chain

Step 1.3: Verify Branch Created

/usr/bin/env bash << 'VERIFY_BRANCH_EOF' BRANCH=$(git branch --show-current) echo "Current branch: $BRANCH"

Verify parent is main

git town branch VERIFY_BRANCH_EOF

Phase 2: Implement & Commit

Step 2.1: Implement Changes

User implements their changes here.

(This phase is handled by the user or other skills)

Step 2.2: Stage and Commit (Raw git allowed)

Raw git IS allowed for commits:

git add . git commit -m "feat: description of change"

Commit message format:

  • feat:

  • New feature

  • fix:

  • Bug fix

  • docs:

  • Documentation

  • refactor:

  • Code refactoring

  • test:

  • Tests

  • chore:

  • Maintenance

Step 2.3: Sync Before PR

⛔ NEVER use git pull or git push . ALWAYS use:

git town sync

This:

  • Pulls changes from upstream/main

  • Rebases/merges feature branch

  • Pushes to origin (your fork)

If conflicts:

AskUserQuestion with questions:

  • question: "Sync encountered conflicts. What next?" header: "Conflicts" options:
    • label: "I'll resolve conflicts manually" description: "Fix conflicts, then run: git town continue"
    • label: "Skip conflicting changes" description: "Run: git town skip (may lose changes)"
    • label: "Abort sync" description: "Run: git town undo" multiSelect: false

Phase 3: Create Pull Request

Step 3.1: GATE — Confirm PR Creation

AskUserQuestion with questions:

  • question: "Ready to create a pull request to upstream?" header: "Create PR" options:
    • label: "Yes, create PR to upstream" description: "Run: git town propose"
    • label: "No, keep working" description: "Continue development, create PR later"
    • label: "Create draft PR" description: "Create PR but mark as draft" multiSelect: false

Step 3.2: Create PR with git-town

⛔ NEVER create PR manually. ALWAYS use:

git town propose

This:

  • Pushes latest changes to origin

  • Opens browser to create PR

  • Targets correct upstream repository

  • Fills in branch info

For draft PR:

git town propose --draft

Step 3.3: Verify PR Created

/usr/bin/env bash -c 'gh pr view --json url,state,title'

Phase 4: Ship (After PR Approved)

Step 4.1: GATE — Confirm Ship

AskUserQuestion with questions:

  • question: "Has your PR been approved and ready to merge?" header: "Ship PR" options:
    • label: "Yes, ship it (merge to main)" description: "Run: git town ship"
    • label: "Not yet, PR is pending review" description: "Wait for approval"
    • label: "PR was merged via GitHub UI" description: "Just cleanup local branches" multiSelect: false

Step 4.2: Ship with git-town

⛔ NEVER merge manually. ALWAYS use:

git town ship

This:

  • Verifies PR is approved

  • Merges to main

  • Deletes feature branch (local + remote)

  • Updates local main

Step 4.3: Post-Ship Cleanup

/usr/bin/env bash << 'CLEANUP_EOF' echo "=== POST-SHIP STATUS ==="

Show current branch

git branch --show-current

Show recent commits on main

git log --oneline -5

Verify feature branch deleted

git branch -a | grep -v "^*" | head -10

echo "✅ Ship complete" CLEANUP_EOF

Stacked Branches (Advanced)

Creating Child Branches

If your feature needs to be split into smaller PRs:

On feature branch, create child

git town append child-feature

Creates stack:

main

└── feature

└── child-feature

Navigating Stacks

git town up # Go to parent branch git town down # Go to child branch git town branch # Show full stack hierarchy

Shipping Stacks

Ship from bottom up:

git town ship feature # Ships feature first git town ship child-feature # Then ship child

Error Recovery

Undo Last git-town Command

git town undo

Continue After Resolving Conflicts

git town continue

Skip Conflicting Branch in Sync

git town skip

Check git-town Status

git town status

Quick Reference Card

┌─────────────────────────────────────────────────────────┐ │ GIT-TOWN CONTRIBUTION FLOW │ ├─────────────────────────────────────────────────────────┤ │ │ │ 1. SYNC git town sync │ │ ↓ │ │ 2. BRANCH git town hack feature-name │ │ ↓ │ │ 3. COMMIT git add . && git commit -m "..." │ │ ↓ │ │ 4. SYNC git town sync │ │ ↓ │ │ 5. PR git town propose │ │ ↓ │ │ 6. SHIP git town ship (after approval) │ │ │ ├─────────────────────────────────────────────────────────┤ │ ⚠️ FORBIDDEN: git checkout -b, git pull, git merge │ │ ✅ ALLOWED: git add, git commit, git log, git diff │ └─────────────────────────────────────────────────────────┘

Arguments

  • [feature-name]

  • Optional: Branch name for new feature

  • --pr

  • Skip to PR creation (branch already exists)

  • --ship

  • Skip to ship (PR already approved)

Examples

Start new contribution

/git-town-workflow:contribute feat/add-dark-mode

Create PR for existing branch

/git-town-workflow:contribute --pr

Ship after PR approved

/git-town-workflow:contribute --ship

Troubleshooting

Issue Cause Solution

Sync failed Merge conflicts Resolve conflicts, then git town sync

Branch parent wrong git-town config mismatch git town branch to view/fix hierarchy

Propose failed No remote tracking branch git town sync first to push

Ship blocked Branch not on main Merge PR first, or use --ignore-parent

"Cannot ship" Uncommitted changes Commit or stash changes first

PR already exists Re-running propose Use --pr flag to view existing PR

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

chezmoi-workflows

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

multi-agent-e2e-validation

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

doppler-workflows

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

multi-agent-performance-profiling

No summary provided by upstream source.

Repository SourceNeeds Review