Loading...
Loading...
Keep AI tooling files (.claude, .codex, .cursor, .windsurf, .augment, .kiro, .cline, .roo, .gemini, etc.) on dev branch but exclude them from main/master. Use when managing branches, creating PRs to main, merging to main, or setting up a repo's branch strategy for AI-assisted development. Triggers on git merge/PR operations targeting main or master.
npx skill4agent add skingford/skills git-clean-maindevmainmasterdevmainmastermainmasterdev# AI Agent Platforms
.claude/ ← Claude Code skills, commands, settings
.codex/ ← Codex/OpenAI configuration
.augment/ ← Augment Code
.devin/ ← Devin (Cognition AI)
.bolt/ ← Bolt.new
.v0/ ← Vercel v0
.replit/ ← Replit AI
# AI-Enhanced IDEs
.cursor/ ← Cursor editor state
.windsurf/ ← Windsurf (Codeium)
.trae/ ← Trae (ByteDance)
.kiro/ ← Kiro (Amazon)
.junie/ ← Junie (JetBrains)
.aide/ ← Aide IDE
# AI Coding Assistants
.cline/ ← Cline
.roo/ ← Roo Code
.continue/ ← Continue.dev
.cody/ ← Sourcegraph Cody
.aider/ ← Aider
.copilot/ ← GitHub Copilot
.tabnine/ ← Tabnine
.codeium/ ← Codeium
.gemini/ ← Google Gemini
.amazonq/ ← Amazon Q Developer
# Config & Rules Files
openspec/ ← OpenSpec change proposals and specs
skills-lock.json ← Installed skills lock file
AGENTS.md ← OpenAI Codex agent instructions
.cursorrules ← Cursor rules
.cursorignore ← Cursor editor ignore
.windsurfrules ← Windsurf rules
.clinerules ← Cline rules
.roomodes ← Roo Code modes
.aider.conf.yml ← Aider config
.aiderignore ← Aider ignoredevmainmastermain/master ─────●────────●────────●──────── Clean (no AI files)
↑ ↑ ↑
dev ─────●───●───●───●────●───●────●──────── Has AI tooling files
│ │ │
feature/ ─┘ └────────┘ Branch from devdevmainmasterdevdev.gitignoremainmastermainmaster.gitignore# AI tooling (kept on dev, excluded from main)
# AI Agent Platforms
.claude/
.codex/
.augment/
.devin/
.bolt/
.v0/
.replit/
# AI-Enhanced IDEs
.cursor/
.windsurf/
.trae/
.kiro/
.junie/
.aide/
# AI Coding Assistants
.cline/
.roo/
.continue/
.cody/
.aider/
.copilot/
.tabnine/
.codeium/
.gemini/
.amazonq/
# Config & Rules Files
openspec/
skills-lock.json
AGENTS.md
.cursorrules
.cursorignore
.windsurfrules
.clinerules
.roomodes
.aider.conf.yml
.aiderignoremaindevmain#!/bin/bash
# merge-to-main.sh — Merge dev into main excluding AI tooling files
set -e
AI_FILES=(
# AI Agent Platforms
".claude"
".codex"
".augment"
".devin"
".bolt"
".v0"
".replit"
# AI-Enhanced IDEs
".cursor"
".windsurf"
".trae"
".kiro"
".junie"
".aide"
# AI Coding Assistants
".cline"
".roo"
".continue"
".cody"
".aider"
".copilot"
".tabnine"
".codeium"
".gemini"
".amazonq"
# Config & Rules Files
"openspec"
"skills-lock.json"
"AGENTS.md"
".cursorrules"
".cursorignore"
".windsurfrules"
".clinerules"
".roomodes"
".aider.conf.yml"
".aiderignore"
)
# Switch to main and merge dev
git checkout main
git merge dev --no-commit --no-ff
# Remove AI tooling files from the merge
for item in "${AI_FILES[@]}"; do
if [ -e "$item" ]; then
git rm -rf --cached "$item" 2>/dev/null || true
rm -rf "$item" 2>/dev/null || true
fi
done
# Commit the clean merge
git commit -m "merge dev into main (AI tooling files excluded)"
# Switch back to dev
git checkout dev# .github/workflows/clean-merge.yml
name: Clean Merge to Main
on:
workflow_dispatch:
push:
branches: [dev]
jobs:
clean-merge:
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/dev'
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
- name: Configure git
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
- name: Clean merge to main
run: |
git checkout main
git merge dev --no-commit --no-ff || true
# Remove AI tooling files
AI_ITEMS=".claude .codex .augment .devin .bolt .v0 .replit"
AI_ITEMS="$AI_ITEMS .cursor .windsurf .trae .kiro .junie .aide"
AI_ITEMS="$AI_ITEMS .cline .roo .continue .cody .aider .copilot .tabnine .codeium .gemini .amazonq"
AI_ITEMS="$AI_ITEMS openspec skills-lock.json AGENTS.md .cursorrules .cursorignore .windsurfrules .clinerules .roomodes .aider.conf.yml .aiderignore"
for item in $AI_ITEMS; do
git rm -rf --cached "$item" 2>/dev/null || true
rm -rf "$item" 2>/dev/null || true
done
# Only commit if there are changes
if ! git diff --cached --quiet; then
git commit -m "merge dev into main (AI tooling excluded)"
git push origin main
fi
git checkout devdevmain.gitignoremaingit checkout main
ls -la .claude .codex .augment .cursor .windsurf .cline .roo .kiro .gemini openspec skills-lock.json 2>&1
# Should show "No such file or directory" for all# Create a clean branch from dev
git checkout -b clean/release-to-main dev
# Remove AI files
git rm -rf \
.claude .codex .augment .devin .bolt .v0 .replit \
.cursor .windsurf .trae .kiro .junie .aide \
.cline .roo .continue .cody .aider .copilot .tabnine .codeium .gemini .amazonq \
openspec skills-lock.json AGENTS.md .cursorrules .cursorignore .windsurfrules .clinerules .roomodes .aider.conf.yml .aiderignore \
2>/dev/null
git commit -m "chore: remove AI tooling files for main merge"
# Push and create PR to main
git push origin clean/release-to-main
gh pr create --base main --title "chore: merge dev to main" --body "Clean merge excluding AI tooling files"| File/Directory | Purpose | Keep on dev | Exclude from main |
|---|---|---|---|
| AI Agent Platforms | |||
| Claude Code skills, commands, settings | Yes | Yes |
| Codex / OpenAI configuration | Yes | Yes |
| Augment Code | Yes | Yes |
| Devin (Cognition AI) | Yes | Yes |
| Bolt.new | Yes | Yes |
| Vercel v0 | Yes | Yes |
| Replit AI | Yes | Yes |
| AI-Enhanced IDEs | |||
| Cursor editor state | Yes | Yes |
| Windsurf (Codeium) | Yes | Yes |
| Trae (ByteDance) | Yes | Yes |
| Kiro (Amazon) | Yes | Yes |
| Junie (JetBrains) | Yes | Yes |
| Aide IDE | Yes | Yes |
| AI Coding Assistants | |||
| Cline | Yes | Yes |
| Roo Code | Yes | Yes |
| Continue.dev | Yes | Yes |
| Sourcegraph Cody | Yes | Yes |
| Aider | Yes | Yes |
| GitHub Copilot | Yes | Yes |
| Tabnine | Yes | Yes |
| Codeium | Yes | Yes |
| Google Gemini | Yes | Yes |
| Amazon Q Developer | Yes | Yes |
| Config & Rules Files | |||
| Change proposals, specs, designs | Yes | Yes |
| Installed skills versions | Yes | Yes |
| OpenAI Codex agent instructions | Yes | Yes |
| Cursor rules | Yes | Yes |
| Cursor editor ignore | Yes | Yes |
| Windsurf rules | Yes | Yes |
| Cline rules | Yes | Yes |
| Roo Code modes | Yes | Yes |
| Aider config | Yes | Yes |
| Aider ignore | Yes | Yes |
| Keep on Both | |||
| Claude Code project instructions | Keep | Keep |
Note:is typically kept on both branches as it serves as project documentation too. Exclude it only if you prefer.CLAUDE.md
npx skills add skingford/skills --skill git-clean-main -g -y