vibe-forge 0.4.0 → 0.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/.claude/commands/clear-attention.md +63 -63
  2. package/.claude/commands/compact-context.md +52 -0
  3. package/.claude/commands/configure-vcs.md +5 -5
  4. package/.claude/commands/forge.md +50 -3
  5. package/.claude/commands/need-help.md +77 -77
  6. package/.claude/commands/update-status.md +64 -64
  7. package/.claude/commands/worker-loop.md +106 -106
  8. package/.claude/hooks/worker-loop.js +37 -4
  9. package/.claude/scripts/setup-worker-loop.sh +45 -45
  10. package/.claude/settings.json +89 -0
  11. package/LICENSE +21 -21
  12. package/README.md +211 -232
  13. package/agents/aegis/personality.md +35 -1
  14. package/agents/anvil/personality.md +39 -1
  15. package/agents/architect/personality.md +26 -0
  16. package/agents/crucible/personality.md +54 -1
  17. package/agents/crucible-x/personality.md +210 -0
  18. package/agents/ember/personality.md +29 -1
  19. package/agents/flux/personality.md +248 -0
  20. package/agents/furnace/personality.md +52 -1
  21. package/agents/herald/personality.md +3 -1
  22. package/agents/loki/personality.md +108 -0
  23. package/agents/oracle/personality.md +284 -0
  24. package/agents/pixel/personality.md +140 -0
  25. package/agents/planning-hub/personality.md +222 -0
  26. package/agents/scribe/personality.md +3 -1
  27. package/agents/slag/personality.md +268 -0
  28. package/agents/{sentinel → temper}/personality.md +85 -9
  29. package/bin/cli.js +77 -30
  30. package/bin/dashboard/api/agents.js +333 -0
  31. package/bin/dashboard/api/dispatch.js +507 -0
  32. package/bin/dashboard/api/tasks.js +416 -0
  33. package/bin/dashboard/public/assets/index-BpHfsx1r.js +2 -0
  34. package/bin/dashboard/public/assets/index-QODv4Zn9.css +1 -0
  35. package/bin/dashboard/public/index.html +14 -0
  36. package/bin/dashboard/server.js +645 -0
  37. package/bin/forge-daemon.sh +176 -550
  38. package/bin/forge-setup.sh +28 -11
  39. package/bin/forge-spawn.sh +5 -5
  40. package/bin/forge.cmd +83 -83
  41. package/bin/forge.sh +210 -31
  42. package/config/agent-manifest.yaml +237 -243
  43. package/config/agents.json +207 -132
  44. package/config/task-types.yaml +111 -106
  45. package/context/agent-overrides/README.md +41 -0
  46. package/context/architecture.md +42 -0
  47. package/context/modern-conventions.md +129 -129
  48. package/docs/agents.md +473 -409
  49. package/docs/architecture.md +194 -162
  50. package/docs/commands.md +451 -388
  51. package/docs/security.md +195 -144
  52. package/package.json +38 -11
  53. package/src/lib/check-aliases.js +50 -0
  54. package/{bin → src}/lib/colors.sh +2 -1
  55. package/src/lib/config.sh +347 -0
  56. package/{bin → src}/lib/constants.sh +48 -13
  57. package/src/lib/daemon/budgets.sh +107 -0
  58. package/src/lib/daemon/dependencies.sh +146 -0
  59. package/src/lib/daemon/display.sh +128 -0
  60. package/src/lib/daemon/notifications.sh +273 -0
  61. package/src/lib/daemon/routing.sh +93 -0
  62. package/src/lib/daemon/state.sh +163 -0
  63. package/src/lib/daemon/sync.sh +103 -0
  64. package/{bin → src}/lib/database.sh +52 -0
  65. package/src/lib/frontmatter.js +106 -0
  66. package/src/lib/heimdall-setup.js +113 -0
  67. package/src/lib/heimdall.js +265 -0
  68. package/src/lib/index.sh +25 -0
  69. package/{bin → src}/lib/json.sh +7 -1
  70. package/{bin → src}/lib/terminal.js +7 -1
  71. package/.claude/settings.local.json +0 -33
  72. package/agents/forge-master/capabilities.md +0 -144
  73. package/agents/forge-master/context-template.md +0 -128
  74. package/agents/forge-master/personality.md +0 -138
  75. package/bin/lib/config.sh +0 -313
  76. package/config/task-template.md +0 -87
  77. package/context/forge-state.yaml +0 -19
  78. package/docs/TODO.md +0 -150
  79. package/docs/getting-started.md +0 -243
  80. package/docs/npm-publishing.md +0 -95
  81. package/docs/workflows/README.md +0 -32
  82. package/docs/workflows/azure-devops.md +0 -108
  83. package/docs/workflows/bitbucket.md +0 -104
  84. package/docs/workflows/git-only.md +0 -130
  85. package/docs/workflows/gitea.md +0 -168
  86. package/docs/workflows/github.md +0 -103
  87. package/docs/workflows/gitlab.md +0 -105
  88. package/docs/workflows.md +0 -454
  89. package/tasks/completed/ARCH-001-duplicate-agent-config.md +0 -121
  90. package/tasks/completed/ARCH-002-mixed-bash-node-implementation.md +0 -88
  91. package/tasks/completed/ARCH-003-worker-loop-hook-duplication.md +0 -77
  92. package/tasks/completed/ARCH-009-test-organization.md +0 -78
  93. package/tasks/completed/ARCH-011-jq-vs-nodejs-json.md +0 -94
  94. package/tasks/completed/ARCH-012-tmp-files-in-root.md +0 -71
  95. package/tasks/completed/ARCH-013-exit-code-constants.md +0 -65
  96. package/tasks/completed/ARCH-014-sed-incompatibility.md +0 -96
  97. package/tasks/completed/ARCH-015-docs-todo-tracking.md +0 -83
  98. package/tasks/completed/CLEAN-001.md +0 -38
  99. package/tasks/completed/CLEAN-003.md +0 -47
  100. package/tasks/completed/CLEAN-004.md +0 -56
  101. package/tasks/completed/CLEAN-005.md +0 -75
  102. package/tasks/completed/CLEAN-006.md +0 -47
  103. package/tasks/completed/CLEAN-007.md +0 -34
  104. package/tasks/completed/CLEAN-008.md +0 -49
  105. package/tasks/completed/CLEAN-012.md +0 -58
  106. package/tasks/completed/CLEAN-013.md +0 -45
  107. package/tasks/completed/SEC-001-sql-injection-fix.md +0 -58
  108. package/tasks/completed/SEC-002-notification-injection-fix.md +0 -45
  109. package/tasks/completed/SEC-003-eval-injection-fix.md +0 -54
  110. package/tasks/completed/SEC-004-pid-race-condition-fix.md +0 -49
  111. package/tasks/completed/SEC-005-worker-loop-path-fix.md +0 -51
  112. package/tasks/completed/SEC-006-eval-agent-names.md +0 -55
  113. package/tasks/completed/SEC-007-spawn-escaping.md +0 -67
  114. package/tasks/pending/ARCH-004-git-bash-detection-duplication.md +0 -72
  115. package/tasks/pending/ARCH-005-missing-src-directory.md +0 -95
  116. package/tasks/pending/ARCH-006-task-template-location.md +0 -64
  117. package/tasks/pending/ARCH-007-daemon-monolith.md +0 -91
  118. package/tasks/pending/ARCH-008-forge-master-vs-hub.md +0 -81
  119. package/tasks/pending/ARCH-010-missing-index-files.md +0 -84
  120. package/tasks/pending/CLEAN-002.md +0 -29
  121. package/tasks/pending/CLEAN-009.md +0 -31
  122. package/tasks/pending/CLEAN-010.md +0 -30
  123. package/tasks/pending/CLEAN-011.md +0 -30
  124. package/tasks/pending/CLEAN-014.md +0 -32
  125. package/tasks/review/task-001.md +0 -78
  126. /package/{bin → src}/lib/agents.sh +0 -0
  127. /package/{bin → src}/lib/util.sh +0 -0
  128. /package/{bin → src}/lib/vcs.js +0 -0
  129. /package/{context → templates}/project-context-template.md +0 -0
@@ -1,104 +0,0 @@
1
- # Bitbucket Workflow Guide
2
-
3
- Git workflow guidance for projects hosted on Bitbucket.
4
-
5
- ## Branch Naming
6
-
7
- ```
8
- task/TASK-XXX-description # Task branches
9
- feature/feature-name # Feature branches
10
- bugfix/bug-description # Bug fix branches
11
- hotfix/urgent-fix # Urgent production fixes
12
- ```
13
-
14
- ## Daily Workflow
15
-
16
- ### Starting a Task
17
-
18
- ```bash
19
- # Ensure you're on latest main
20
- git checkout main && git pull origin main
21
-
22
- # Create feature branch
23
- git checkout -b task/TASK-XXX-description
24
- ```
25
-
26
- ### During Development
27
-
28
- ```bash
29
- # Stage and commit changes
30
- git add .
31
- git commit -m "Add feature X"
32
-
33
- # Push to remote (first time)
34
- git push -u origin task/TASK-XXX-description
35
-
36
- # Subsequent pushes
37
- git push
38
- ```
39
-
40
- ### Creating a Pull Request
41
-
42
- Bitbucket doesn't have an official CLI. Create PRs via:
43
-
44
- 1. **Web UI**: After pushing, visit Bitbucket and click "Create pull request"
45
- 2. **API** (if needed):
46
- ```bash
47
- curl -X POST \
48
- -H "Authorization: Bearer $BITBUCKET_TOKEN" \
49
- -H "Content-Type: application/json" \
50
- -d '{"title":"TASK-XXX: Add feature X","source":{"branch":{"name":"task/TASK-XXX-description"}},"destination":{"branch":{"name":"main"}}}' \
51
- https://api.bitbucket.org/2.0/repositories/{workspace}/{repo}/pullrequests
52
- ```
53
-
54
- ### After PR Approval
55
-
56
- ```bash
57
- # Merge via Bitbucket UI (squash merge recommended)
58
-
59
- # Clean up local branch
60
- git checkout main
61
- git pull origin main
62
- git branch -d task/TASK-XXX-description
63
- ```
64
-
65
- ## CI/CD
66
-
67
- Bitbucket Pipelines configuration goes in `bitbucket-pipelines.yml`:
68
-
69
- ```yaml
70
- # bitbucket-pipelines.yml
71
- image: node:20
72
-
73
- pipelines:
74
- default:
75
- - step:
76
- name: Test
77
- caches:
78
- - node
79
- script:
80
- - npm ci
81
- - npm test
82
-
83
- branches:
84
- main:
85
- - step:
86
- name: Build and Deploy
87
- script:
88
- - npm ci
89
- - npm run build
90
- ```
91
-
92
- ## Useful Tips
93
-
94
- - **Jira Integration**: Link commits with Jira issue keys (e.g., `PROJ-123`)
95
- - **PR Templates**: Create `PULL_REQUEST_TEMPLATE.md` in repo root
96
- - **Reviewers**: Set default reviewers in repository settings
97
-
98
- ## Branch Permissions
99
-
100
- Configure in Repository settings > Branch permissions:
101
- - Require pull request before merging
102
- - Require approvals
103
- - Require passing builds
104
- - Prevent direct pushes to main
@@ -1,130 +0,0 @@
1
- # Git-Only Workflow Guide
2
-
3
- Git workflow guidance for projects using Git without a hosted platform (self-hosted, local-only, or minimal setup).
4
-
5
- ## Branch Naming
6
-
7
- ```
8
- task/TASK-XXX-description # Task branches
9
- feature/feature-name # Feature branches
10
- bugfix/bug-description # Bug fix branches
11
- hotfix/urgent-fix # Urgent production fixes
12
- ```
13
-
14
- ## Daily Workflow
15
-
16
- ### Starting a Task
17
-
18
- ```bash
19
- # Ensure you're on latest main
20
- git checkout main
21
- git pull origin main # if remote exists
22
-
23
- # Create feature branch
24
- git checkout -b task/TASK-XXX-description
25
- ```
26
-
27
- ### During Development
28
-
29
- ```bash
30
- # Stage and commit changes
31
- git add .
32
- git commit -m "Add feature X"
33
-
34
- # Push to remote (if configured)
35
- git push -u origin task/TASK-XXX-description
36
- ```
37
-
38
- ### Completing a Task
39
-
40
- Without a PR platform, use one of these approaches:
41
-
42
- #### Option 1: Direct Merge (Solo Developer)
43
-
44
- ```bash
45
- # Switch to main
46
- git checkout main
47
- git pull origin main # if remote
48
-
49
- # Merge with squash
50
- git merge --squash task/TASK-XXX-description
51
- git commit -m "TASK-XXX: Add feature X"
52
-
53
- # Push
54
- git push origin main
55
-
56
- # Clean up
57
- git branch -d task/TASK-XXX-description
58
- ```
59
-
60
- #### Option 2: Code Review via Diff
61
-
62
- ```bash
63
- # Generate diff for review
64
- git diff main...task/TASK-XXX-description > review.patch
65
-
66
- # After review approval, merge as above
67
- ```
68
-
69
- #### Option 3: Email Workflow
70
-
71
- ```bash
72
- # Format patches for email review
73
- git format-patch main..task/TASK-XXX-description -o patches/
74
-
75
- # Apply approved patches
76
- git am patches/*.patch
77
- ```
78
-
79
- ## Local CI
80
-
81
- Without a hosted CI platform, consider:
82
-
83
- ### Git Hooks
84
-
85
- ```bash
86
- # .git/hooks/pre-commit
87
- #!/bin/bash
88
- npm test
89
- ```
90
-
91
- ### Manual CI Script
92
-
93
- ```bash
94
- # scripts/ci.sh
95
- #!/bin/bash
96
- set -e
97
- npm ci
98
- npm run lint
99
- npm test
100
- npm run build
101
- echo "CI passed!"
102
- ```
103
-
104
- ## Useful Commands
105
-
106
- ```bash
107
- # View branch history
108
- git log --oneline --graph main..HEAD
109
-
110
- # Interactive rebase before merge
111
- git rebase -i main
112
-
113
- # Diff summary
114
- git diff --stat main...HEAD
115
-
116
- # List branches
117
- git branch -a
118
- ```
119
-
120
- ## Best Practices
121
-
122
- 1. **Commit Often**: Small, focused commits are easier to review and revert
123
- 2. **Write Good Messages**: Include context for future reference
124
- 3. **Rebase Before Merge**: Keep history clean with interactive rebase
125
- 4. **Tag Releases**: Use semantic versioning tags
126
-
127
- ```bash
128
- git tag -a v1.0.0 -m "Release version 1.0.0"
129
- git push origin v1.0.0
130
- ```
@@ -1,168 +0,0 @@
1
- # Gitea Workflow Guide
2
-
3
- Git workflow guidance for projects hosted on Gitea (including Codeberg and other Gitea-based instances).
4
-
5
- ## Branch Naming
6
-
7
- ```
8
- task/TASK-XXX-description # Task branches
9
- feature/feature-name # Feature branches
10
- bugfix/bug-description # Bug fix branches
11
- hotfix/urgent-fix # Urgent production fixes
12
- ```
13
-
14
- ## Daily Workflow
15
-
16
- ### Starting a Task
17
-
18
- ```bash
19
- # Ensure you're on latest main
20
- git checkout main && git pull origin main
21
-
22
- # Create feature branch
23
- git checkout -b task/TASK-XXX-description
24
- ```
25
-
26
- ### During Development
27
-
28
- ```bash
29
- # Stage and commit changes
30
- git add .
31
- git commit -m "Add feature X"
32
-
33
- # Push to remote (first time)
34
- git push -u origin task/TASK-XXX-description
35
-
36
- # Subsequent pushes
37
- git push
38
- ```
39
-
40
- ### Creating a Pull Request
41
-
42
- ```bash
43
- # Using tea CLI (Gitea's official CLI)
44
- tea pr create --title "TASK-XXX: Add feature X" --description "Description of changes"
45
-
46
- # Or create as draft
47
- tea pr create --title "TASK-XXX: WIP - Add feature X" --labels "work-in-progress"
48
-
49
- # If tea is not installed, use the web UI:
50
- # Navigate to your Gitea instance -> Repository -> Pull Requests -> New Pull Request
51
- ```
52
-
53
- ### After PR Approval
54
-
55
- ```bash
56
- # Merge via Gitea UI (squash merge recommended)
57
- # Or via CLI
58
- tea pr merge --style squash
59
-
60
- # Clean up local branch
61
- git checkout main
62
- git pull origin main
63
- git branch -d task/TASK-XXX-description
64
- ```
65
-
66
- ## CI/CD with Gitea Actions
67
-
68
- Gitea Actions (v1.19+) uses GitHub Actions-compatible workflow syntax. Configuration goes in `.gitea/workflows/`:
69
-
70
- ```yaml
71
- # .gitea/workflows/ci.yml
72
- name: CI
73
- on: [push, pull_request]
74
-
75
- jobs:
76
- test:
77
- runs-on: ubuntu-latest
78
- steps:
79
- - uses: actions/checkout@v4
80
- - name: Setup Node.js
81
- uses: actions/setup-node@v4
82
- with:
83
- node-version: '20'
84
- - run: npm ci
85
- - run: npm test
86
- ```
87
-
88
- ### Alternative: Drone CI
89
-
90
- Many Gitea installations use Drone CI. Configuration goes in `.drone.yml`:
91
-
92
- ```yaml
93
- # .drone.yml
94
- kind: pipeline
95
- type: docker
96
- name: default
97
-
98
- steps:
99
- - name: test
100
- image: node:20
101
- commands:
102
- - npm ci
103
- - npm test
104
- ```
105
-
106
- ## Installing tea CLI
107
-
108
- ```bash
109
- # macOS
110
- brew install tea
111
-
112
- # Linux (download binary)
113
- curl -sL https://dl.gitea.io/tea/main/tea-main-linux-amd64 -o tea
114
- chmod +x tea
115
- sudo mv tea /usr/local/bin/
116
-
117
- # Windows (via scoop)
118
- scoop install tea
119
- ```
120
-
121
- ### Configure tea
122
-
123
- ```bash
124
- # Add your Gitea instance
125
- tea login add --name myinstance --url https://gitea.example.com --token YOUR_TOKEN
126
-
127
- # Set as default
128
- tea login default myinstance
129
- ```
130
-
131
- ## Useful Commands
132
-
133
- ```bash
134
- # tea CLI commands
135
- tea pr list # List open PRs
136
- tea pr view 123 # View PR details
137
- tea pr checkout 123 # Checkout PR locally
138
- tea issue list # List issues
139
- tea repo list # List repositories
140
-
141
- # With specific login
142
- tea pr list --login myinstance
143
- ```
144
-
145
- ## Branch Protection
146
-
147
- Configure in Repository Settings > Branches > Branch Protection:
148
- - Enable branch protection for `main`
149
- - Require pull request reviews
150
- - Require status checks to pass
151
- - Block force push
152
- - Block branch deletion
153
-
154
- ## Gitea vs GitHub Differences
155
-
156
- | Feature | GitHub | Gitea |
157
- |---------|--------|-------|
158
- | CLI | `gh` | `tea` |
159
- | CI | GitHub Actions | Gitea Actions / Drone |
160
- | Workflows | `.github/workflows/` | `.gitea/workflows/` |
161
- | PR Labels | Built-in | Instance-specific |
162
-
163
- ## Self-Hosted Considerations
164
-
165
- - **Instance URL**: Replace `gitea.example.com` with your actual instance URL
166
- - **Runner Setup**: Gitea Actions requires act_runner for CI/CD
167
- - **Token Scopes**: Generate tokens with appropriate scopes in Settings > Applications
168
- - **Webhooks**: Configure webhooks for external CI if not using Gitea Actions
@@ -1,103 +0,0 @@
1
- # GitHub Workflow Guide
2
-
3
- Git workflow guidance for projects hosted on GitHub.
4
-
5
- ## Branch Naming
6
-
7
- ```
8
- task/TASK-XXX-description # Task branches
9
- feature/feature-name # Feature branches
10
- bugfix/bug-description # Bug fix branches
11
- hotfix/urgent-fix # Urgent production fixes
12
- ```
13
-
14
- ## Daily Workflow
15
-
16
- ### Starting a Task
17
-
18
- ```bash
19
- # Ensure you're on latest main
20
- git checkout main && git pull origin main
21
-
22
- # Create feature branch
23
- git checkout -b task/TASK-XXX-description
24
- ```
25
-
26
- ### During Development
27
-
28
- ```bash
29
- # Stage and commit changes
30
- git add .
31
- git commit -m "Add feature X"
32
-
33
- # Push to remote (first time)
34
- git push -u origin task/TASK-XXX-description
35
-
36
- # Subsequent pushes
37
- git push
38
- ```
39
-
40
- ### Creating a Pull Request
41
-
42
- ```bash
43
- # Using GitHub CLI (recommended)
44
- gh pr create --title "TASK-XXX: Add feature X" --body "Description of changes"
45
-
46
- # Or with draft PR
47
- gh pr create --draft --title "TASK-XXX: WIP - Add feature X"
48
- ```
49
-
50
- ### After PR Approval
51
-
52
- ```bash
53
- # Squash merge via GitHub UI or CLI
54
- gh pr merge --squash
55
-
56
- # Clean up local branch
57
- git checkout main
58
- git pull origin main
59
- git branch -d task/TASK-XXX-description
60
- ```
61
-
62
- ## CI/CD
63
-
64
- GitHub Actions configuration goes in `.github/workflows/`:
65
-
66
- ```yaml
67
- # .github/workflows/ci.yml
68
- name: CI
69
- on: [push, pull_request]
70
-
71
- jobs:
72
- test:
73
- runs-on: ubuntu-latest
74
- steps:
75
- - uses: actions/checkout@v4
76
- - name: Run tests
77
- run: npm test
78
- ```
79
-
80
- ## Useful Commands
81
-
82
- ```bash
83
- # Check PR status
84
- gh pr status
85
-
86
- # View PR in browser
87
- gh pr view --web
88
-
89
- # List open PRs
90
- gh pr list
91
-
92
- # Check CI status
93
- gh run list
94
- ```
95
-
96
- ## Branch Protection
97
-
98
- If on a paid plan, configure branch protection rules:
99
- - Require PR reviews before merging
100
- - Require status checks to pass
101
- - Require branches to be up to date
102
-
103
- For free plans, use the pre-push hook in `.githooks/pre-push`.
@@ -1,105 +0,0 @@
1
- # GitLab Workflow Guide
2
-
3
- Git workflow guidance for projects hosted on GitLab.
4
-
5
- ## Branch Naming
6
-
7
- ```
8
- task/TASK-XXX-description # Task branches
9
- feature/feature-name # Feature branches
10
- bugfix/bug-description # Bug fix branches
11
- hotfix/urgent-fix # Urgent production fixes
12
- ```
13
-
14
- ## Daily Workflow
15
-
16
- ### Starting a Task
17
-
18
- ```bash
19
- # Ensure you're on latest main
20
- git checkout main && git pull origin main
21
-
22
- # Create feature branch
23
- git checkout -b task/TASK-XXX-description
24
- ```
25
-
26
- ### During Development
27
-
28
- ```bash
29
- # Stage and commit changes
30
- git add .
31
- git commit -m "Add feature X"
32
-
33
- # Push to remote (first time)
34
- git push -u origin task/TASK-XXX-description
35
-
36
- # Subsequent pushes
37
- git push
38
- ```
39
-
40
- ### Creating a Merge Request
41
-
42
- ```bash
43
- # Push with merge request creation
44
- git push -o merge_request.create -o merge_request.title="TASK-XXX: Add feature X"
45
-
46
- # Or create via GitLab CLI (glab)
47
- glab mr create --title "TASK-XXX: Add feature X" --description "Description of changes"
48
-
49
- # Draft merge request
50
- glab mr create --draft --title "TASK-XXX: WIP - Add feature X"
51
- ```
52
-
53
- ### After MR Approval
54
-
55
- ```bash
56
- # Merge via GitLab UI (squash merge recommended)
57
- # Or via CLI
58
- glab mr merge --squash
59
-
60
- # Clean up local branch
61
- git checkout main
62
- git pull origin main
63
- git branch -d task/TASK-XXX-description
64
- ```
65
-
66
- ## CI/CD
67
-
68
- GitLab CI configuration goes in `.gitlab-ci.yml`:
69
-
70
- ```yaml
71
- # .gitlab-ci.yml
72
- stages:
73
- - test
74
- - build
75
-
76
- test:
77
- stage: test
78
- script:
79
- - npm ci
80
- - npm test
81
-
82
- build:
83
- stage: build
84
- script:
85
- - npm run build
86
- only:
87
- - main
88
- ```
89
-
90
- ## Useful Commands
91
-
92
- ```bash
93
- # Using GitLab CLI (glab)
94
- glab mr list # List open MRs
95
- glab mr view # View current MR
96
- glab mr checkout 123 # Checkout MR locally
97
- glab ci status # Check pipeline status
98
- ```
99
-
100
- ## Branch Protection
101
-
102
- Configure in Settings > Repository > Protected Branches:
103
- - Require merge request approval
104
- - Require pipeline to succeed
105
- - Prevent force push