diff --git a/.gitignore b/.gitignore index a2fcc2e..a8c8997 100644 --- a/.gitignore +++ b/.gitignore @@ -43,3 +43,5 @@ yarn-error.log* # Temporary files *.tmp *.temp +# Keep .claude/ clean for hand-on section +.claude/ \ No newline at end of file diff --git a/01-slash-commands/README.md b/01-slash-commands/README.md index 98caac8..c6ad692 100644 --- a/01-slash-commands/README.md +++ b/01-slash-commands/README.md @@ -91,6 +91,9 @@ Guides you through PR preparation checklist including linting, testing, and comm - Creating conventional commit messages - Generating PR summary +**Screenshot** +![/pr](pr-slash-command.png) + ### 3. `/generate-api-docs` - API Documentation Generator Generates comprehensive API documentation from source code. diff --git a/01-slash-commands/pr-slash-command.png b/01-slash-commands/pr-slash-command.png new file mode 100644 index 0000000..789e5c2 Binary files /dev/null and b/01-slash-commands/pr-slash-command.png differ diff --git a/01-slash-commands/push-all.md b/01-slash-commands/push-all.md new file mode 100644 index 0000000..ee681ad --- /dev/null +++ b/01-slash-commands/push-all.md @@ -0,0 +1,473 @@ +--- +name: Commit and push everything +description: Stage all changes, create commit, and push to remote (use with caution) +tags: git, workflow, automation +--- + +# Commit and Push Everything + +⚠️ **CAUTION**: This command will stage ALL changes, commit them, and push to the remote repository. Use only when you're confident all changes should be committed together. + +## Pre-flight Safety Checks + +Before proceeding, I will verify: + +1. **Current Status** + - Run `git status` to see what will be committed + - Ensure no unwanted files are included + - Verify you're on the correct branch + +2. **Review Changes** + - Run `git diff --stat` to see change statistics + - Confirm all changes are intentional + - Check for any uncommitted work + +3. **Security Checks** + - ❌ No secrets or credentials in changes + - ❌ No API keys, passwords, or tokens + - ❌ No `.env` files or private keys + - ✅ `.gitignore` properly configured + - ✅ No large binary files without Git LFS + - ✅ No build artifacts (node_modules, dist, __pycache__) + +## Workflow Steps + +### Step 1: Show Current Status + +Run `git status` and display: +- Modified files +- Added files +- Deleted files +- Untracked files + +### Step 2: Show Change Statistics + +Run `git diff --stat` to show: +- Number of files changed +- Total insertions +- Total deletions + +### Step 3: Safety Verification + +⚠️ **STOP if any of these are detected:** + +```bash +# Sensitive files: +.env +.env.local +*.key +*.pem +credentials.json +secrets.yaml +config/database.yml (with passwords) +*.p12 +*.pfx +id_rsa +*.cer + +# Large files (>10MB) +*.mp4, *.mov, *.zip, *.tar.gz + +# Build artifacts: +node_modules/ +dist/ +build/ +__pycache__/ +*.pyc +.DS_Store +thumbs.db +*.swp +``` + +If any detected, **WARN USER** and ask for confirmation. + +### Step 4: Request Confirmation + +Present summary and ask: + +``` +📊 Changes Summary: +- X files modified +- Y files added +- Z files deleted +- Total: +AAA insertions, -BBB deletions + +⚠️ I will now: +1. Stage all changes (git add .) +2. Create a descriptive commit +3. Push to remote repository + +Current branch: [branch-name] +Remote: [remote-url] + +🔒 Safety checks: +✅ No secrets detected +✅ No large files +✅ .gitignore configured +⚠️ [Any warnings] + +Type 'yes' to proceed or 'no' to cancel. +``` + +**WAIT for explicit user confirmation before proceeding.** + +### Step 5: Stage All Changes (After Confirmation) + +Execute: +```bash +git add . +``` + +Verify staging: +```bash +git status +``` + +### Step 6: Generate Commit Message + +Analyze the changes and create a descriptive conventional commit message: + +**Format:** +``` +[type]: Brief summary (max 72 characters) + +Detailed description of changes: +- Key change 1 +- Key change 2 +- Key change 3 +``` + +**Commit Types:** +- `feat`: New feature or enhancement +- `fix`: Bug fix +- `docs`: Documentation changes only +- `style`: Code formatting, missing semicolons, etc. +- `refactor`: Code restructuring without behavior change +- `test`: Adding or updating tests +- `chore`: Maintenance, dependencies, config +- `perf`: Performance improvements +- `build`: Build system or external dependencies +- `ci`: CI/CD configuration changes + +**Examples:** +``` +feat: Add user authentication with JWT tokens + +- Implement login and registration endpoints +- Add JWT token generation and validation +- Create authentication middleware +- Add comprehensive auth tests +``` + +``` +docs: Update all concept README files with comprehensive documentation + +Extract and consolidate information from guide into individual folders +- Add architecture diagrams and tables +- Include practical examples +- Expand best practices sections +``` + +### Step 7: Create Commit + +Execute: +```bash +git commit -m "$(cat <<'EOF' +[Generated commit message] +EOF +)" +``` + +Show commit hash and message. + +### Step 8: Push to Remote + +Execute: +```bash +git push +``` + +If push fails, try: +```bash +git pull --rebase origin [branch-name] +git push +``` + +### Step 9: Verify Success + +Show: +```bash +git log -1 --oneline --decorate +``` + +Confirm: +``` +✅ Successfully pushed to remote! + +Commit: [hash] [message] +Branch: [branch] → origin/[branch] +Files changed: X +``` + +## Safety Guidelines + +### ❌ DO NOT Proceed If: + +- **Secrets detected**: API keys, passwords, tokens, certificates +- **Sensitive data**: Database dumps, user data, PII +- **Large files**: Files >10MB without Git LFS +- **Build artifacts**: node_modules, dist, __pycache__, .venv +- **Temporary files**: .DS_Store, *.swp, *.tmp, thumbs.db +- **User hasn't confirmed**: Always wait for explicit "yes" +- **Protected branch**: main/master without proper review process +- **Merge conflicts**: Unresolved conflicts exist +- **Failing tests**: Pre-commit hooks or CI failing + +### ✅ Good Use Cases: + +- Documentation updates across multiple files +- Feature implementation with tests and docs +- Bug fixes with related test updates +- Configuration and setup changes +- Refactoring with comprehensive changes +- Project-wide formatting or linting fixes +- End-of-day commit of working feature + +### ⚠️ Warning Signs - Ask User First: + +``` +Modified: .env +Modified: config/secrets.yml +Added: private_key.pem +Added: node_modules/ (1,234 files) +Warning: Large file detected: video.mp4 (45MB) +Warning: On protected branch: main +Warning: Pre-commit hook failed +``` + +## Error Handling + +### If `git add .` fails: +1. Check file permissions +2. Look for locked files +3. Verify repository is initialized +4. Run `git status` for diagnostics + +### If `git commit` fails: +1. **Pre-commit hooks failed**: Fix issues and retry +2. **No changes to commit**: Already up to date +3. **Invalid commit message**: Adjust format +4. **Git config missing**: Set user.name and user.email + +### If `git push` fails: +1. **Rejected (non-fast-forward)**: + ```bash + git pull --rebase + git push + ``` + +2. **Permission denied**: Check credentials and access + +3. **Remote branch doesn't exist**: + ```bash + git push -u origin [branch-name] + ``` + +4. **Protected branch**: Use pull request workflow + +## Alternative Workflows + +If user wants more control, suggest: + +**Option 1: Selective Staging** +``` +Would you like to: +1. Select specific files to commit? +2. Review each file individually? +3. Create multiple commits by category? +``` + +**Option 2: Interactive Staging** +``` +Use `git add -p` for interactive patch selection? +This lets you review each change before staging. +``` + +**Option 3: Pull Request Flow** +``` +Instead of direct push, would you like to: +1. Create a feature branch +2. Push to branch +3. Create pull request +Use the /pr command for this workflow. +``` + +## Post-Push Actions + +After successful push: + +### 1. Verify on Remote +- Check GitHub/GitLab/Bitbucket web interface +- Confirm commit appears correctly +- Review diff on remote + +### 2. CI/CD Pipeline (if applicable) +- Confirm pipeline started +- Monitor build status +- Check for any failures + +### 3. Team Notification (if applicable) +- Notify in Slack/Teams channel +- Update issue tracker (close/link issues) +- Tag reviewers for PR + +### 4. Local Cleanup +```bash +# Verify everything is clean +git status + +# Should show: +# On branch [name] +# Your branch is up to date with 'origin/[name]'. +# nothing to commit, working tree clean +``` + +## Example Interaction + +**User**: `/push-all` + +**Assistant**: +``` +🔍 Analyzing repository status... + +📊 Current Status: +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +Modified files (9): + ✏️ 01-slash-commands/README.md + ✏️ 02-subagents/README.md + ✏️ 03-memory/README.md + ✏️ 04-mcp/README.md + ✏️ 05-skills/README.md + ✏️ 06-plugins/README.md + ✏️ 07-hooks/README.md + ✏️ 08-checkpoints/README.md + ✏️ 09-advanced-features/README.md + +📈 Change Statistics: + 9 files changed + +3,706 insertions + -587 deletions + +🔒 Safety Checks: + ✅ No secrets detected + ✅ No large files (>10MB) + ✅ .gitignore properly configured + ✅ No build artifacts + ✅ No temporary files + +🌿 Branch Information: + Current: main + Remote: origin/main + Status: Up to date (can fast-forward) + +📝 Proposed commit message: +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +docs: Update all concept README files with comprehensive documentation + +Extract and consolidate information from guide into individual folders: +- Add architecture diagrams, tables, and flowcharts +- Include practical code examples and templates +- Expand best practices and troubleshooting sections +- Provide installation instructions for all concepts + +Total: +3,706 lines of comprehensive documentation + +🤖 Generated with Claude Code +Co-Authored-By: Claude +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + +⚠️ I will now: + 1. Stage all changes (git add .) + 2. Commit with the message above + 3. Push to origin/main + +⚠️ This affects 9 files. Please confirm. + +Type 'yes' to proceed, 'no' to cancel, or 'review' to see diffs. +``` + +**User**: `yes` + +**Assistant**: +``` +✅ Staging all changes... + git add . + +✅ Creating commit... + git commit -m "docs: Update all concept README files..." + +✅ Pushing to remote... + git push origin main + +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +🎉 Successfully pushed to remote! + +Commit: 41527ae docs: Update all concept README files... +Branch: main → origin/main +Files: 9 changed (+3,706, -587) +Remote: https://github.com/user/repo + +✅ All changes have been successfully pushed! +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +``` + +## Quick Reference Card + +**What this command does:** +1. ✅ Checks git status and shows changes +2. ✅ Displays change statistics +3. ✅ Performs comprehensive safety checks +4. ⚠️ Requests explicit user confirmation +5. ✅ Stages all changes with `git add .` +6. ✅ Generates descriptive conventional commit +7. ✅ Creates commit with proper message +8. ✅ Pushes to remote repository +9. ✅ Verifies and confirms success + +**When to use:** +- ✅ Coordinated multi-file documentation updates +- ✅ Feature implementation with tests and docs +- ✅ Bug fixes affecting multiple files +- ✅ Project-wide refactoring or formatting +- ✅ End-of-day commits of working features +- ✅ Configuration and setup changes + +**When NOT to use:** +- ❌ Uncertain about what's being committed +- ❌ Contains sensitive data or secrets +- ❌ On protected branches (main/master) without review +- ❌ Merge conflicts are present +- ❌ Want granular commit history for different changes +- ❌ Pre-commit hooks are failing +- ❌ Want to review each change individually + +## Related Commands + +- **`/pr`** - Full pull request preparation with checklist +- **`/optimize`** - Code optimization before committing +- **Individual git commands** - For more granular control + +## Best Practices + +1. **Use descriptive branch names**: `feature/auth`, `fix/login-bug` +2. **Commit related changes together**: Don't mix features and fixes +3. **Review before pushing**: Always check `git diff` +4. **Pull before push**: Avoid conflicts with `git pull --rebase` +5. **Use conventional commits**: Helps with changelog generation +6. **Test before commit**: Run tests to catch issues early +7. **Keep commits atomic**: One logical change per commit when possible +8. **Write clear messages**: Future you will thank present you + +--- + +**⚠️ Remember**: With great automation comes great responsibility. Always review your changes before pushing! When in doubt, use individual git commands for more control.