@jmylchreest/aide-plugin 0.0.24 → 0.0.26
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.
- package/package.json +2 -1
- package/skills/build-fix/SKILL.md +162 -0
- package/skills/code-search/SKILL.md +108 -0
- package/skills/debug/SKILL.md +189 -0
- package/skills/decide/SKILL.md +225 -0
- package/skills/design/SKILL.md +192 -0
- package/skills/docs/SKILL.md +269 -0
- package/skills/git/SKILL.md +181 -0
- package/skills/implement/SKILL.md +240 -0
- package/skills/memorise/SKILL.md +139 -0
- package/skills/perf/SKILL.md +305 -0
- package/skills/plan-swarm/SKILL.md +135 -0
- package/skills/ralph/SKILL.md +483 -0
- package/skills/recall/SKILL.md +90 -0
- package/skills/review/SKILL.md +147 -0
- package/skills/swarm/SKILL.md +501 -0
- package/skills/test/SKILL.md +244 -0
- package/skills/verify/SKILL.md +299 -0
- package/skills/worktree-resolve/SKILL.md +342 -0
- package/src/core/index.ts +1 -0
- package/src/core/partial-memory.ts +354 -0
- package/src/core/session-init.ts +0 -3
- package/src/core/session-summary-logic.ts +2 -6
- package/src/opencode/hooks.ts +237 -25
- package/src/opencode/index.ts +10 -1
- package/src/opencode/types.ts +98 -3
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: design
|
|
3
|
+
description: Technical design and architecture for implementation
|
|
4
|
+
triggers:
|
|
5
|
+
- design this
|
|
6
|
+
- design the
|
|
7
|
+
- architect this
|
|
8
|
+
- architect the
|
|
9
|
+
- spec this
|
|
10
|
+
- spec the
|
|
11
|
+
- plan this
|
|
12
|
+
- plan the
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Design Mode
|
|
16
|
+
|
|
17
|
+
**Recommended model tier:** smart (opus) - this skill requires complex reasoning
|
|
18
|
+
|
|
19
|
+
Output a technical design specification that downstream SDLC stages can consume.
|
|
20
|
+
|
|
21
|
+
## Purpose
|
|
22
|
+
|
|
23
|
+
Create a structured design document that defines:
|
|
24
|
+
1. **What** to build (interfaces, types, components)
|
|
25
|
+
2. **How** it fits together (data flow, interactions)
|
|
26
|
+
3. **Why** key decisions were made (rationale)
|
|
27
|
+
4. **Success criteria** (acceptance criteria for TEST stage)
|
|
28
|
+
|
|
29
|
+
## Workflow
|
|
30
|
+
|
|
31
|
+
### Step 1: Understand the Request
|
|
32
|
+
|
|
33
|
+
Read the request and identify:
|
|
34
|
+
- Core functionality required
|
|
35
|
+
- Constraints (tech stack, patterns, performance)
|
|
36
|
+
- Integration points with existing code
|
|
37
|
+
|
|
38
|
+
### Step 2: Explore the Codebase
|
|
39
|
+
|
|
40
|
+
Use search tools to understand existing patterns:
|
|
41
|
+
|
|
42
|
+
- Use `Grep` for similar patterns, interfaces, types
|
|
43
|
+
- Use `Glob` for relevant files
|
|
44
|
+
- Use `mcp__plugin_aide_aide__decision_list` to review all decisions
|
|
45
|
+
- Use `mcp__plugin_aide_aide__decision_get` with the relevant topic to check specific decisions
|
|
46
|
+
|
|
47
|
+
### Step 3: Define Interfaces
|
|
48
|
+
|
|
49
|
+
Define the public API/interfaces first:
|
|
50
|
+
|
|
51
|
+
```typescript
|
|
52
|
+
// Example TypeScript interface
|
|
53
|
+
interface UserService {
|
|
54
|
+
createUser(data: CreateUserInput): Promise<User>;
|
|
55
|
+
getUser(id: string): Promise<User | null>;
|
|
56
|
+
updateUser(id: string, data: UpdateUserInput): Promise<User>;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
interface CreateUserInput {
|
|
60
|
+
email: string;
|
|
61
|
+
name: string;
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
```go
|
|
66
|
+
// Example Go interface
|
|
67
|
+
type UserService interface {
|
|
68
|
+
CreateUser(ctx context.Context, input CreateUserInput) (*User, error)
|
|
69
|
+
GetUser(ctx context.Context, id string) (*User, error)
|
|
70
|
+
UpdateUser(ctx context.Context, id string, input UpdateUserInput) (*User, error)
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Step 4: Document Data Flow
|
|
75
|
+
|
|
76
|
+
Describe how components interact:
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
Request → Controller → Service → Repository → Database
|
|
80
|
+
↓
|
|
81
|
+
Validator
|
|
82
|
+
↓
|
|
83
|
+
Error Handler → Response
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Step 5: Record Key Decisions
|
|
87
|
+
|
|
88
|
+
Store architectural decisions for future reference:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
aide decision set "<feature>-storage" "PostgreSQL with JSONB for metadata" \
|
|
92
|
+
--rationale="Need flexible schema for user preferences"
|
|
93
|
+
|
|
94
|
+
aide decision set "<feature>-auth" "JWT with refresh tokens" \
|
|
95
|
+
--rationale="Stateless auth, mobile client support"
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Step 6: Define Acceptance Criteria
|
|
99
|
+
|
|
100
|
+
List specific, testable criteria for the TEST stage:
|
|
101
|
+
|
|
102
|
+
```markdown
|
|
103
|
+
## Acceptance Criteria
|
|
104
|
+
|
|
105
|
+
- [ ] User can be created with email and name
|
|
106
|
+
- [ ] Duplicate emails are rejected with 409 status
|
|
107
|
+
- [ ] Created user has UUID identifier
|
|
108
|
+
- [ ] User can be retrieved by ID
|
|
109
|
+
- [ ] Non-existent user returns null (not error)
|
|
110
|
+
- [ ] User email can be updated
|
|
111
|
+
- [ ] User name can be updated
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## Required Output Format
|
|
115
|
+
|
|
116
|
+
```markdown
|
|
117
|
+
# Design: [Feature Name]
|
|
118
|
+
|
|
119
|
+
## Overview
|
|
120
|
+
[1-2 sentence summary of what this feature does]
|
|
121
|
+
|
|
122
|
+
## Interfaces
|
|
123
|
+
|
|
124
|
+
### [Interface/Type Name]
|
|
125
|
+
\`\`\`typescript
|
|
126
|
+
// Interface definition with comments
|
|
127
|
+
\`\`\`
|
|
128
|
+
|
|
129
|
+
## Data Flow
|
|
130
|
+
[Diagram or description of component interactions]
|
|
131
|
+
|
|
132
|
+
## Key Decisions
|
|
133
|
+
|
|
134
|
+
| Decision | Choice | Rationale |
|
|
135
|
+
|----------|--------|-----------|
|
|
136
|
+
| Storage | PostgreSQL | [why] |
|
|
137
|
+
| Auth | JWT | [why] |
|
|
138
|
+
|
|
139
|
+
## Acceptance Criteria
|
|
140
|
+
- [ ] Criterion 1
|
|
141
|
+
- [ ] Criterion 2
|
|
142
|
+
- [ ] Criterion 3
|
|
143
|
+
|
|
144
|
+
## Files to Create/Modify
|
|
145
|
+
- `path/to/file.ts` - [purpose]
|
|
146
|
+
- `path/to/test.ts` - [test scope]
|
|
147
|
+
|
|
148
|
+
## Dependencies
|
|
149
|
+
- [External packages needed]
|
|
150
|
+
- [Internal modules to import]
|
|
151
|
+
|
|
152
|
+
## Out of Scope
|
|
153
|
+
- [Explicitly excluded items]
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## Failure Handling
|
|
157
|
+
|
|
158
|
+
### Unclear Requirements
|
|
159
|
+
1. List specific ambiguities
|
|
160
|
+
2. State assumptions you're making
|
|
161
|
+
3. Record assumptions: `aide memory add --category=decision "Assumed X because Y"`
|
|
162
|
+
4. Proceed with reasonable defaults
|
|
163
|
+
|
|
164
|
+
### Conflicting Patterns Found
|
|
165
|
+
1. Document the conflicting patterns
|
|
166
|
+
2. Choose one and record the decision:
|
|
167
|
+
```bash
|
|
168
|
+
aide decision set "<topic>" "<choice>" --rationale="<why this over alternatives>"
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### Too Large / Too Vague
|
|
172
|
+
1. Break into smaller, focused designs
|
|
173
|
+
2. Design the core/MVP first
|
|
174
|
+
3. Note future phases in "Out of Scope"
|
|
175
|
+
|
|
176
|
+
## Verification Checklist
|
|
177
|
+
|
|
178
|
+
Before completing design:
|
|
179
|
+
- [ ] Interfaces are defined with types
|
|
180
|
+
- [ ] Data flow is documented
|
|
181
|
+
- [ ] Key decisions are recorded in aide
|
|
182
|
+
- [ ] Acceptance criteria are testable
|
|
183
|
+
- [ ] Files to modify are listed
|
|
184
|
+
- [ ] Dependencies are identified
|
|
185
|
+
|
|
186
|
+
## Completion
|
|
187
|
+
|
|
188
|
+
When design is complete:
|
|
189
|
+
1. Output the full design document
|
|
190
|
+
2. Confirm: "Design complete. Ready for TEST stage."
|
|
191
|
+
|
|
192
|
+
The design document feeds directly into the TEST stage, where acceptance criteria become test cases.
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: docs
|
|
3
|
+
description: Update documentation to match implementation
|
|
4
|
+
triggers:
|
|
5
|
+
- update docs
|
|
6
|
+
- update documentation
|
|
7
|
+
- document this
|
|
8
|
+
- docs stage
|
|
9
|
+
- documentation
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Documentation Mode
|
|
13
|
+
|
|
14
|
+
**Recommended model tier:** balanced (sonnet) - this skill performs straightforward operations
|
|
15
|
+
|
|
16
|
+
Update documentation to accurately reflect the implemented code.
|
|
17
|
+
|
|
18
|
+
## Purpose
|
|
19
|
+
|
|
20
|
+
This is the DOCS stage of the SDLC pipeline. Implementation is complete and verified. Your job is to ensure documentation matches reality.
|
|
21
|
+
|
|
22
|
+
## What to Document
|
|
23
|
+
|
|
24
|
+
### 1. README Updates
|
|
25
|
+
|
|
26
|
+
If the feature affects how users interact with the project:
|
|
27
|
+
- Installation steps changed?
|
|
28
|
+
- New commands or options?
|
|
29
|
+
- New configuration?
|
|
30
|
+
- New dependencies?
|
|
31
|
+
|
|
32
|
+
### 2. API Documentation
|
|
33
|
+
|
|
34
|
+
If public APIs were added or changed:
|
|
35
|
+
- Function/method signatures
|
|
36
|
+
- Parameters and return types
|
|
37
|
+
- Usage examples
|
|
38
|
+
- Error conditions
|
|
39
|
+
|
|
40
|
+
### 3. Inline Documentation
|
|
41
|
+
|
|
42
|
+
If code needs explanation:
|
|
43
|
+
- Complex algorithms
|
|
44
|
+
- Non-obvious design decisions
|
|
45
|
+
- Integration points
|
|
46
|
+
- Edge cases
|
|
47
|
+
|
|
48
|
+
### 4. Architecture Docs
|
|
49
|
+
|
|
50
|
+
If structure changed:
|
|
51
|
+
- New components
|
|
52
|
+
- Changed data flow
|
|
53
|
+
- New dependencies between modules
|
|
54
|
+
|
|
55
|
+
## Workflow
|
|
56
|
+
|
|
57
|
+
### Step 1: Identify Changed Files
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
# See what was changed
|
|
61
|
+
git diff --name-only HEAD~5 # or appropriate range
|
|
62
|
+
|
|
63
|
+
# Find related docs
|
|
64
|
+
Glob for **/*.md
|
|
65
|
+
Glob for **/docs/**/*
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Step 2: Check Existing Documentation
|
|
69
|
+
|
|
70
|
+
Read current docs that might be affected:
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
Read README.md
|
|
74
|
+
Read docs/api.md # if exists
|
|
75
|
+
Read CHANGELOG.md # if exists
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Step 3: Read the Implementation
|
|
79
|
+
|
|
80
|
+
Understand what was built:
|
|
81
|
+
|
|
82
|
+
- Read the new code files
|
|
83
|
+
- Use `mcp__plugin_aide_aide__decision_get` with the feature topic to check design decisions
|
|
84
|
+
- Use `mcp__plugin_aide_aide__decision_list` to see all decisions
|
|
85
|
+
|
|
86
|
+
### Step 4: Update Documentation
|
|
87
|
+
|
|
88
|
+
#### README.md Updates
|
|
89
|
+
|
|
90
|
+
Add/update sections as needed:
|
|
91
|
+
|
|
92
|
+
```markdown
|
|
93
|
+
## New Feature
|
|
94
|
+
|
|
95
|
+
Description of what it does.
|
|
96
|
+
|
|
97
|
+
### Usage
|
|
98
|
+
|
|
99
|
+
\`\`\`bash
|
|
100
|
+
command --new-flag
|
|
101
|
+
\`\`\`
|
|
102
|
+
|
|
103
|
+
### Configuration
|
|
104
|
+
|
|
105
|
+
| Option | Type | Default | Description |
|
|
106
|
+
|--------|------|---------|-------------|
|
|
107
|
+
| newOption | string | "default" | What it does |
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
#### API Documentation
|
|
111
|
+
|
|
112
|
+
Document public interfaces:
|
|
113
|
+
|
|
114
|
+
```markdown
|
|
115
|
+
### functionName(param1, param2)
|
|
116
|
+
|
|
117
|
+
Brief description.
|
|
118
|
+
|
|
119
|
+
**Parameters:**
|
|
120
|
+
- `param1` (string): What it is
|
|
121
|
+
- `param2` (number, optional): What it does. Default: 10
|
|
122
|
+
|
|
123
|
+
**Returns:** `Promise<Result>`
|
|
124
|
+
|
|
125
|
+
**Example:**
|
|
126
|
+
\`\`\`typescript
|
|
127
|
+
const result = await functionName("input", 20);
|
|
128
|
+
\`\`\`
|
|
129
|
+
|
|
130
|
+
**Throws:**
|
|
131
|
+
- `ValidationError`: When param1 is empty
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
#### Inline Comments
|
|
135
|
+
|
|
136
|
+
Add comments for non-obvious code:
|
|
137
|
+
|
|
138
|
+
```typescript
|
|
139
|
+
// Use exponential backoff to handle rate limiting
|
|
140
|
+
// Starts at 100ms, doubles each retry, max 5 retries
|
|
141
|
+
async function fetchWithRetry(url: string): Promise<Response> {
|
|
142
|
+
// ...
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Step 5: Verify Documentation
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
# If docs have a build step
|
|
150
|
+
npm run docs:build
|
|
151
|
+
|
|
152
|
+
# Check for broken links (if tool available)
|
|
153
|
+
npm run docs:check
|
|
154
|
+
|
|
155
|
+
# Manual review - read what you wrote
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### Step 6: Commit Documentation
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
git add -A
|
|
162
|
+
git commit -m "docs: document <feature>"
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
## Documentation Standards
|
|
166
|
+
|
|
167
|
+
### Be Accurate
|
|
168
|
+
- Documentation must match code exactly
|
|
169
|
+
- If code changes, docs must change
|
|
170
|
+
- Never document aspirational features
|
|
171
|
+
|
|
172
|
+
### Be Concise
|
|
173
|
+
- One sentence per concept
|
|
174
|
+
- Use examples over explanations
|
|
175
|
+
- Bullet points over paragraphs
|
|
176
|
+
|
|
177
|
+
### Be Complete
|
|
178
|
+
- Cover happy path AND error cases
|
|
179
|
+
- Include all public API
|
|
180
|
+
- Document breaking changes
|
|
181
|
+
|
|
182
|
+
### Be Findable
|
|
183
|
+
- Use clear headings
|
|
184
|
+
- Add to table of contents
|
|
185
|
+
- Cross-reference related sections
|
|
186
|
+
|
|
187
|
+
## What NOT to Document
|
|
188
|
+
|
|
189
|
+
- Internal implementation details (unless complex)
|
|
190
|
+
- Obvious code (self-documenting)
|
|
191
|
+
- Temporary workarounds (use TODO instead)
|
|
192
|
+
- Aspirational features (only document what exists)
|
|
193
|
+
|
|
194
|
+
## Output Format
|
|
195
|
+
|
|
196
|
+
```markdown
|
|
197
|
+
## Documentation Updates
|
|
198
|
+
|
|
199
|
+
### Files Modified
|
|
200
|
+
- `README.md` - Added new feature section
|
|
201
|
+
- `docs/api.md` - Documented new endpoints
|
|
202
|
+
- `src/service.ts` - Added inline comments for complex logic
|
|
203
|
+
|
|
204
|
+
### Summary of Changes
|
|
205
|
+
1. Added usage instructions for `--new-flag`
|
|
206
|
+
2. Documented `createUser` API with examples
|
|
207
|
+
3. Updated configuration table with new options
|
|
208
|
+
|
|
209
|
+
### Verification
|
|
210
|
+
- [ ] Docs build successfully
|
|
211
|
+
- [ ] Examples are copy-pasteable and work
|
|
212
|
+
- [ ] No broken internal links
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
## Failure Handling
|
|
216
|
+
|
|
217
|
+
### No Documentation Exists
|
|
218
|
+
|
|
219
|
+
If this is a new project without docs structure:
|
|
220
|
+
1. Create minimal README.md
|
|
221
|
+
2. Document the feature inline
|
|
222
|
+
3. Note: "Recommend creating docs/ structure in future"
|
|
223
|
+
|
|
224
|
+
### Documentation Tool Broken
|
|
225
|
+
|
|
226
|
+
If docs build fails:
|
|
227
|
+
1. Fix the build issue if simple
|
|
228
|
+
2. Document what was attempted
|
|
229
|
+
3. Note: "Docs build issue - needs separate fix"
|
|
230
|
+
|
|
231
|
+
### Unclear What to Document
|
|
232
|
+
|
|
233
|
+
1. Focus on public API only
|
|
234
|
+
2. Document what a new user would need
|
|
235
|
+
3. Skip internal details
|
|
236
|
+
4. When in doubt, add an example
|
|
237
|
+
|
|
238
|
+
## Verification Checklist
|
|
239
|
+
|
|
240
|
+
Before completing:
|
|
241
|
+
- [ ] All new public APIs are documented
|
|
242
|
+
- [ ] README is updated if user-facing changes
|
|
243
|
+
- [ ] Examples are tested and work
|
|
244
|
+
- [ ] Docs build (if applicable)
|
|
245
|
+
- [ ] Changes are committed
|
|
246
|
+
|
|
247
|
+
## Completion
|
|
248
|
+
|
|
249
|
+
When documentation is complete:
|
|
250
|
+
|
|
251
|
+
```
|
|
252
|
+
Documentation complete.
|
|
253
|
+
- Updated: [list of files]
|
|
254
|
+
- Added: [new sections/files]
|
|
255
|
+
|
|
256
|
+
SDLC pipeline complete for this story.
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
## Integration with SDLC Pipeline
|
|
260
|
+
|
|
261
|
+
```
|
|
262
|
+
[DESIGN] → [TEST] → [DEV] → [VERIFY] → [DOCS]
|
|
263
|
+
↑
|
|
264
|
+
YOU ARE HERE
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
- **Input**: Verified, working implementation
|
|
268
|
+
- **Output**: Updated documentation
|
|
269
|
+
- **Next**: Story complete, ready for merge
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: git
|
|
3
|
+
description: Git operations and worktree management
|
|
4
|
+
triggers:
|
|
5
|
+
- worktree
|
|
6
|
+
- git worktree
|
|
7
|
+
- create branch
|
|
8
|
+
- manage branches
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Git Mode
|
|
12
|
+
|
|
13
|
+
**Recommended model tier:** balanced (sonnet) - this skill performs straightforward operations
|
|
14
|
+
|
|
15
|
+
Expert git operations including worktree management for parallel work.
|
|
16
|
+
|
|
17
|
+
## Commit Guidelines
|
|
18
|
+
|
|
19
|
+
### Message Format
|
|
20
|
+
```
|
|
21
|
+
<type>: <short description>
|
|
22
|
+
|
|
23
|
+
[optional body]
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Types: `feat`, `fix`, `refactor`, `docs`, `test`, `chore`
|
|
27
|
+
|
|
28
|
+
### Commit Process
|
|
29
|
+
1. Check status: `git status`
|
|
30
|
+
2. Review diff: `git diff`
|
|
31
|
+
3. Stage specific files (not `git add .`)
|
|
32
|
+
4. Write descriptive message
|
|
33
|
+
5. Never skip hooks unless explicitly asked
|
|
34
|
+
|
|
35
|
+
## Worktree Management
|
|
36
|
+
|
|
37
|
+
### Create Worktree
|
|
38
|
+
```bash
|
|
39
|
+
# For feature work
|
|
40
|
+
git worktree add ../feature-branch -b feature/name
|
|
41
|
+
|
|
42
|
+
# For parallel tasks
|
|
43
|
+
git worktree add ../aide-worktrees/task-1 -b aide/task-1
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### List Worktrees
|
|
47
|
+
```bash
|
|
48
|
+
git worktree list
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Remove Worktree
|
|
52
|
+
```bash
|
|
53
|
+
git worktree remove ../feature-branch
|
|
54
|
+
git branch -d feature/name # if merged
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Common Operations
|
|
58
|
+
|
|
59
|
+
### Feature Branch Workflow
|
|
60
|
+
```bash
|
|
61
|
+
git checkout -b feature/name
|
|
62
|
+
# ... work ...
|
|
63
|
+
git add <specific-files>
|
|
64
|
+
git commit -m "feat: add feature"
|
|
65
|
+
git push -u origin feature/name
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Rebase onto Main
|
|
69
|
+
```bash
|
|
70
|
+
git fetch origin
|
|
71
|
+
git rebase origin/main
|
|
72
|
+
# resolve conflicts if any
|
|
73
|
+
git push --force-with-lease
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Cherry-Pick
|
|
77
|
+
```bash
|
|
78
|
+
git cherry-pick <commit-hash>
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Stash
|
|
82
|
+
```bash
|
|
83
|
+
git stash push -m "description"
|
|
84
|
+
git stash list
|
|
85
|
+
git stash pop
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Safety Rules
|
|
89
|
+
|
|
90
|
+
**Never run without explicit user request:**
|
|
91
|
+
- `git push --force` (use `--force-with-lease` if needed)
|
|
92
|
+
- `git reset --hard`
|
|
93
|
+
- `git clean -f`
|
|
94
|
+
- `git checkout .` or `git restore .`
|
|
95
|
+
|
|
96
|
+
**Safe operations:**
|
|
97
|
+
- `git status`, `git diff`, `git log`
|
|
98
|
+
- `git add <specific-files>`
|
|
99
|
+
- `git commit`
|
|
100
|
+
- `git push` (without force)
|
|
101
|
+
- `git worktree` operations
|
|
102
|
+
|
|
103
|
+
## Failure Handling
|
|
104
|
+
|
|
105
|
+
### Commit failures:
|
|
106
|
+
|
|
107
|
+
1. **Pre-commit hook failure** - Read the error, fix the issue, create NEW commit (never amend after hook failure)
|
|
108
|
+
2. **Merge conflict** - Report conflicts, do not auto-resolve without explicit request
|
|
109
|
+
3. **Push rejected** - Fetch and rebase, report if conflicts arise
|
|
110
|
+
|
|
111
|
+
### Worktree failures:
|
|
112
|
+
|
|
113
|
+
1. **Branch already exists** - Use different name or checkout existing
|
|
114
|
+
2. **Dirty working tree** - Stash or commit before worktree operations
|
|
115
|
+
3. **Locked worktree** - Check `git worktree list` for stale entries, use `git worktree prune`
|
|
116
|
+
|
|
117
|
+
### Recovery commands:
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
# Recover from bad merge (before commit)
|
|
121
|
+
git merge --abort
|
|
122
|
+
|
|
123
|
+
# Recover from bad rebase (before complete)
|
|
124
|
+
git rebase --abort
|
|
125
|
+
|
|
126
|
+
# Prune stale worktrees
|
|
127
|
+
git worktree prune
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Verification Criteria
|
|
131
|
+
|
|
132
|
+
### After commit:
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
# Verify commit was created
|
|
136
|
+
git log -1 --oneline
|
|
137
|
+
|
|
138
|
+
# Verify expected files changed
|
|
139
|
+
git show --stat HEAD
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### After push:
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
# Verify remote updated
|
|
146
|
+
git log origin/<branch> -1 --oneline
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### After worktree creation:
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
# Verify worktree exists
|
|
153
|
+
git worktree list | grep <worktree-path>
|
|
154
|
+
|
|
155
|
+
# Verify branch created
|
|
156
|
+
git branch -a | grep <branch-name>
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## Parallel Work Pattern
|
|
160
|
+
|
|
161
|
+
For swarm mode or parallel features:
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
# Setup
|
|
165
|
+
git worktree add ../work-1 -b feature/part-1
|
|
166
|
+
git worktree add ../work-2 -b feature/part-2
|
|
167
|
+
|
|
168
|
+
# Work in parallel (different terminals/agents)
|
|
169
|
+
cd ../work-1 && # ... implement part 1
|
|
170
|
+
cd ../work-2 && # ... implement part 2
|
|
171
|
+
|
|
172
|
+
# Merge
|
|
173
|
+
git checkout main
|
|
174
|
+
git merge feature/part-1
|
|
175
|
+
git merge feature/part-2
|
|
176
|
+
|
|
177
|
+
# Cleanup
|
|
178
|
+
git worktree remove ../work-1
|
|
179
|
+
git worktree remove ../work-2
|
|
180
|
+
git branch -d feature/part-1 feature/part-2
|
|
181
|
+
```
|