Files
managing-apps/.cursor/commands/push-dev.md

9.6 KiB

push-dev

When to Use

Use this command when you want to:

  • Stage all modified files
  • Commit with a descriptive message
  • Push directly to the dev branch

Execution Steps

Step 1: Check Current Branch

Run: git branch --show-current to get the current branch name.

If not on dev:

  • Warn: "⚠️ You're not on dev branch. Current branch: [branch]. Switching to dev..."
  • Switch to dev: git checkout dev
  • Pull latest changes: git pull origin dev

If already on dev:

  • Pull latest changes: git pull origin dev
  • Continue to Step 2

Step 2: Stage All Changes

Run: git add .

Show what will be committed: git status

If no changes to commit:

  • Inform: "No changes detected. All files are already committed or there are no modified files."
  • Check: git status to see current state
  • STOP: No need to proceed

Step 3: Detect Modified Projects and Build

Before committing, verify the code builds successfully for production. Only build projects where files have been modified.

Step 3.1: Identify Modified Files

Get list of modified files: git diff --cached --name-only or git status --short

Step 3.2: Determine Which Projects Need Building

Analyze modified files to determine which project(s) they belong to:

Frontend (Managing.WebApp):

  • Files in src/Managing.WebApp/ or src/Managing.Nswag/
  • Build command: cd src/Managing.WebApp && npm run build or cd src/Managing.WebApp && yarn build

Backend (.NET projects):

  • Files in src/Managing.Api/, src/Managing.Application/, src/Managing.Domain/, src/Managing.Infrastructure.*/, or any other .cs files in src/
  • Build command: dotnet build src/Managing.sln or dotnet build src/Managing.Api/Managing.Api.csproj

If both frontend and backend files are modified:

  • Build both projects in sequence

Step 3.3: Build Relevant Project(s)

For Frontend (Managing.WebApp):

  • Navigate to project: cd src/Managing.WebApp
  • Check package manager:
    • Check for yarn.lock: test -f yarn.lock
    • If yarn: Use yarn build
    • If npm: Use npm run build
  • Run build command:
    • If yarn: yarn build
    • If npm: npm run build

For Backend (.NET):

  • Run: dotnet build src/Managing.sln
  • Or build specific project: dotnet build src/Managing.Api/Managing.Api.csproj

If both projects need building:

  • Build frontend first, then backend
  • Or build both in parallel if appropriate

If build succeeds:

  • Confirm: " Build successful! Code is production-ready."
  • Continue to Step 4

If build fails:

  • Show build errors
  • Analyze errors:
    • TypeScript errors (frontend)
    • C# compilation errors (backend)
    • Import errors
    • Syntax errors
    • Missing dependencies
    • Configuration errors
  • Try to fix errors automatically:
    • Fix TypeScript type errors (frontend)
    • Fix C# compilation errors (backend)
    • Fix import paths
    • Fix syntax errors
    • Add missing imports
    • Fix configuration issues
  • If errors can be fixed:
    • Fix the errors
    • Re-run build for the affected project
    • If build succeeds, continue to Step 4
    • If build still fails, show errors and ask user for help
  • If errors cannot be fixed automatically:
    • Show detailed error messages
    • Explain what needs to be fixed
    • STOP: Do not proceed with commit until build succeeds
    • Suggest: "Please fix the build errors before committing. Ask a developer for help if needed."

Step 4: Generate Commit Message

Analyze staged changes: git diff --cached --stat or git status

Generate a descriptive commit message:

  • Format: [Type]: [Description]
  • Types: Update, Fix, Add, Design, Refactor
  • Examples:
    • Update Button component - Match Figma design colors and spacing
    • Fix mobile responsive layout - Adjust padding for max-640 breakpoint
    • Add StatusBadge component - Implement design from Figma
    • Design: Update typography - Change font sizes to match design system

Ask user to confirm or modify the commit message before committing.

Step 5: Commit Changes

Run: git commit -m "<commit-message>"

Step 6: Push to Dev

Run: git push origin dev

If push fails:

  • If branch protection error: Explain that direct pushes to dev might be blocked
  • Suggest creating a Pull Request instead if needed
  • If other error: Show the error and help resolve it

Error Handling

If push fails due to branch protection:

  • Explain: "Direct pushes to dev might be blocked by branch protection rules."
  • Solution: "Check with your team lead or create a Pull Request instead."

If no changes to commit:

  • Inform: "No changes detected. All files are already committed or there are no modified files."
  • Check: git status to see current state

If build fails:

  • STOP immediately - Do not commit broken code
  • Show build errors in detail
  • Try to fix common errors automatically:
    • TypeScript type errors
    • Import path errors
    • Syntax errors
    • Missing imports
  • If errors can be fixed:
    • Fix them automatically
    • Re-run build
    • If build succeeds, continue
    • If build still fails, show errors and ask for help
  • If errors cannot be fixed:
    • Show detailed error messages
    • Explain what needs to be fixed
    • STOP: Do not commit until build succeeds
    • Suggest: "Please fix the build errors. Ask a developer for help if needed."

If build command is not found:

For Frontend:

  • Check if package manager is installed: yarn --version or npm --version
  • If not installed: Guide user to install Node.js/yarn
  • If installed: Check if src/Managing.WebApp/package.json has build script
  • If no build script: Inform user and skip build step (not recommended)

For Backend:

  • Check if .NET SDK is installed: dotnet --version
  • If not installed: Guide user to install .NET SDK
  • If installed: Check if src/Managing.sln exists
  • If solution file not found: Try building specific project: dotnet build src/Managing.Api/Managing.Api.csproj

Example Execution

User input: /push-dev

AI execution (Frontend changes only):

  1. Check branch: git branch --show-current → "dev"
  2. Pull latest: git pull origin dev
  3. Check changes: git status → Modified: src/Managing.WebApp/src/components/Button/Button.tsx
  4. Stage: git add .
  5. Detect modified files: git diff --cached --name-onlysrc/Managing.WebApp/src/components/Button/Button.tsx
  6. Determine project: Frontend (Managing.WebApp)
  7. Build: cd src/Managing.WebApp && yarn build Build successful!
  8. Generate commit message: "Update Button component - Match Figma design colors"
  9. Confirm with user: "Commit message: 'Update Button component - Match Figma design colors'. Proceed?"
  10. Commit: git commit -m "Update Button component - Match Figma design colors"
  11. Push: git push origin dev
  12. Success message: " Changes pushed successfully to dev branch!"

AI execution (Backend changes only):

  1. Check branch: git branch --show-current → "dev"
  2. Pull latest: git pull origin dev
  3. Check changes: git status → Modified: src/Managing.Api/Controllers/UserController.cs
  4. Stage: git add .
  5. Detect modified files: git diff --cached --name-onlysrc/Managing.Api/Controllers/UserController.cs
  6. Determine project: Backend (.NET)
  7. Build: dotnet build src/Managing.sln Build successful!
  8. Generate commit message: "Update UserController - Add new endpoint"
  9. Confirm with user: "Commit message: 'Update UserController - Add new endpoint'. Proceed?"
  10. Commit: git commit -m "Update UserController - Add new endpoint"
  11. Push: git push origin dev
  12. Success message: " Changes pushed successfully to dev branch!"

AI execution (Both frontend and backend changes):

  1. Check branch: git branch --show-current → "dev"
  2. Pull latest: git pull origin dev
  3. Check changes: git status → Modified: src/Managing.WebApp/src/components/Button/Button.tsx, src/Managing.Api/Controllers/UserController.cs
  4. Stage: git add .
  5. Detect modified files: git diff --cached --name-only → Both frontend and backend files
  6. Determine projects: Frontend (Managing.WebApp) and Backend (.NET)
  7. Build frontend: cd src/Managing.WebApp && yarn build Build successful!
  8. Build backend: dotnet build src/Managing.sln Build successful!
  9. Generate commit message: "Update Button component and UserController"
  10. Confirm with user: "Commit message: 'Update Button component and UserController'. Proceed?"
  11. Commit: git commit -m "Update Button component and UserController"
  12. Push: git push origin dev
  13. Success message: " Changes pushed successfully to dev branch!"

If build fails:

1-6. Same as above 7. Build: cd src/Managing.WebApp && yarn build Build failed with errors 8. Analyze errors: TypeScript error in Button.tsx 9. Fix errors: Update type definitions 10. Re-run build: cd src/Managing.WebApp && yarn build Build successful! 11. Continue with commit and push

Important Notes

  • Always build before committing - ensures code works in production
  • Only build projects where files have been modified - saves time and focuses on relevant changes
  • Fix build errors before committing - don't commit broken code
  • Always ask for confirmation before committing if the commit message is unclear
  • Pull latest changes from dev before pushing to avoid conflicts
  • ⚠️ Build step is mandatory - code must build successfully before commit
  • ⚠️ Ensure you're on dev branch - command will switch to dev if needed
  • 📦 Frontend changes: Build Managing.WebApp using npm/yarn
  • 🔧 Backend changes: Build .NET solution using dotnet build
  • 🔄 Both frontend and backend changes: Build both projects in sequence