@olegkoval/agent-skills 1.22.0 โ 1.23.0
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/.claude-plugin/plugin.json +4 -2
- package/.cursor-plugin/index.json +10 -0
- package/.grok-plugin/index.json +10 -0
- package/README.md +3 -1
- package/catalog/skills.json +44 -0
- package/package.json +1 -1
- package/packages/software-development/ci-fix-loop/SKILL.md +202 -0
- package/packages/software-development/ci-fix-loop/adapters/claude/plugin.json +5 -0
- package/packages/software-development/ci-fix-loop/adapters/claude/skills/ci-fix-loop/SKILL.md +203 -0
- package/packages/software-development/ci-fix-loop/adapters/codex/README.md +20 -0
- package/packages/software-development/ci-fix-loop/adapters/cursor/plugin.json +6 -0
- package/packages/software-development/ci-fix-loop/adapters/cursor/skills/ci-fix-loop/SKILL.md +203 -0
- package/packages/software-development/ci-fix-loop/adapters/grok/plugin.json +6 -0
- package/packages/software-development/ci-fix-loop/adapters/grok/skills/ci-fix-loop/SKILL.md +203 -0
- package/packages/software-development/pr-description-writer/SKILL.md +152 -0
- package/packages/software-development/pr-description-writer/adapters/claude/plugin.json +5 -0
- package/packages/software-development/pr-description-writer/adapters/claude/skills/pr-description-writer/SKILL.md +153 -0
- package/packages/software-development/pr-description-writer/adapters/codex/README.md +19 -0
- package/packages/software-development/pr-description-writer/adapters/cursor/plugin.json +6 -0
- package/packages/software-development/pr-description-writer/adapters/cursor/skills/pr-description-writer/SKILL.md +153 -0
- package/packages/software-development/pr-description-writer/adapters/grok/plugin.json +6 -0
- package/packages/software-development/pr-description-writer/adapters/grok/skills/pr-description-writer/SKILL.md +153 -0
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pr-description-writer
|
|
3
|
+
description: >
|
|
4
|
+
Draft and post a GitHub PR title and body from git diff and commit history. Use when
|
|
5
|
+
opening a new PR, when the user asks to "write a PR description", "draft a PR", "open
|
|
6
|
+
a PR for this branch", or after running the git-commit skill and pushing the branch.
|
|
7
|
+
Chains naturally after git-commit and before qodoloop / coderabbitloop.
|
|
8
|
+
license: MIT
|
|
9
|
+
allowed-tools: Bash, Read, Write
|
|
10
|
+
compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools. Requires git and gh (GitHub CLI) authenticated.
|
|
11
|
+
metadata:
|
|
12
|
+
targets: [_source-only]
|
|
13
|
+
author: Oleg Koval
|
|
14
|
+
tags:
|
|
15
|
+
- git
|
|
16
|
+
- github
|
|
17
|
+
- pull-request
|
|
18
|
+
- description
|
|
19
|
+
- pr
|
|
20
|
+
- workflow
|
|
21
|
+
source: weekly-pattern-learner
|
|
22
|
+
source_reason: "qodoloop and coderabbitloop both open with gh pr view โ the PR creation/description step was never codified as its own skill"
|
|
23
|
+
source_date: "2026-07-28"
|
|
24
|
+
---
|
|
25
|
+
<!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
|
|
26
|
+
|
|
27
|
+
> ๐ค *Auto-generated by **weekly-pattern-learner** ยท qodoloop and coderabbitloop both open with `gh pr view` โ the PR creation/description step was never codified as its own skill*
|
|
28
|
+
|
|
29
|
+
# PR Description Writer
|
|
30
|
+
|
|
31
|
+
Draft a GitHub-ready PR title and body from the branch's commit history and diff, then
|
|
32
|
+
create or update the PR so reviewers and AI tools have full context.
|
|
33
|
+
|
|
34
|
+
## Inputs
|
|
35
|
+
|
|
36
|
+
- **Base branch** (optional, default: `main` or `master` โ detect from `gh repo view`)
|
|
37
|
+
- **Draft mode** (optional, default: off)
|
|
38
|
+
- **Template** (optional): if `.github/pull_request_template.md` exists, use its section headings
|
|
39
|
+
|
|
40
|
+
## Workflow
|
|
41
|
+
|
|
42
|
+
### 1. Gather branch context
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# Current branch
|
|
46
|
+
git rev-parse --abbrev-ref HEAD
|
|
47
|
+
|
|
48
|
+
# Base branch
|
|
49
|
+
gh repo view --json defaultBranchRef -q '.defaultBranchRef.name'
|
|
50
|
+
|
|
51
|
+
# Commits since base
|
|
52
|
+
git log <base>..<head> --oneline --no-merges
|
|
53
|
+
|
|
54
|
+
# Diff summary (full diff for small PRs, stat-only for large)
|
|
55
|
+
git diff <base>..<head> --stat
|
|
56
|
+
git diff <base>..<head> # only if total changes < ~500 lines
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
If the diff is large (>500 changed lines), read file-by-file rather than all at once.
|
|
60
|
+
|
|
61
|
+
### 2. Check for existing PR
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
gh pr view --json number,title,body,state 2>/dev/null
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
- If a PR exists in `OPEN` state: update it with `gh pr edit`.
|
|
68
|
+
- If no PR exists: create one with `gh pr create`.
|
|
69
|
+
|
|
70
|
+
### 3. Check for a PR template
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
cat .github/pull_request_template.md 2>/dev/null \
|
|
74
|
+
|| cat .github/PULL_REQUEST_TEMPLATE.md 2>/dev/null \
|
|
75
|
+
|| cat PULL_REQUEST_TEMPLATE.md 2>/dev/null
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
If a template exists, mirror its section headings and populate them. Skip sections
|
|
79
|
+
that ask for credentials, tokens, internal hostnames, or content unrelated to the diff.
|
|
80
|
+
|
|
81
|
+
### 4. Draft title and body
|
|
82
|
+
|
|
83
|
+
**Title rules:**
|
|
84
|
+
- Use Conventional Commits prefix when the branch/commits use it: `feat(scope):`, `fix:`, etc.
|
|
85
|
+
- โค 70 characters
|
|
86
|
+
- Imperative mood ("Add X", "Fix Y", not "Added X")
|
|
87
|
+
- Include ticket number if present in branch name (e.g. `LIN-123`, `GH-456`)
|
|
88
|
+
|
|
89
|
+
**Body sections (use the template if one was found, otherwise use this structure):**
|
|
90
|
+
|
|
91
|
+
```markdown
|
|
92
|
+
## Summary
|
|
93
|
+
- <bullet: what changed>
|
|
94
|
+
- <bullet: why>
|
|
95
|
+
|
|
96
|
+
## Changes
|
|
97
|
+
- `<file or subsystem>`: <what changed and why>
|
|
98
|
+
|
|
99
|
+
## Test plan
|
|
100
|
+
- [ ] <what to run and what result to expect>
|
|
101
|
+
- [ ] <manual steps if automated tests don't cover it>
|
|
102
|
+
|
|
103
|
+
## Notes
|
|
104
|
+
<optional: anything a reviewer should watch for, known gaps, follow-up issues>
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Rules:
|
|
108
|
+
- Describe *intent*, not what the diff already shows line-by-line.
|
|
109
|
+
- If commits already have good conventional messages, use them as the skeleton.
|
|
110
|
+
- Skip any section that has nothing meaningful to say.
|
|
111
|
+
- Reference specific files, functions, or lines only when they aid navigation.
|
|
112
|
+
|
|
113
|
+
### 5. Create or update the PR
|
|
114
|
+
|
|
115
|
+
Always pass the body via a heredoc or temp file โ never interpolate it into the command
|
|
116
|
+
string (quotes and newlines will break the shell):
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
# Create new PR
|
|
120
|
+
gh pr create \
|
|
121
|
+
--title "<title>" \
|
|
122
|
+
--body "$(cat <<'PRBODY'
|
|
123
|
+
<body>
|
|
124
|
+
PRBODY
|
|
125
|
+
)" \
|
|
126
|
+
--base <base> \
|
|
127
|
+
[--draft]
|
|
128
|
+
|
|
129
|
+
# Update existing PR
|
|
130
|
+
gh pr edit <number> \
|
|
131
|
+
--title "<title>" \
|
|
132
|
+
--body "$(cat <<'PRBODY'
|
|
133
|
+
<body>
|
|
134
|
+
PRBODY
|
|
135
|
+
)"
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### 6. Confirm and report
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
gh pr view --json number,title,url -q '"PR #\(.number): \(.title)\n\(.url)"'
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
Print the PR number, title, and URL. If the PR was newly created, note whether
|
|
145
|
+
CI triggered automatically.
|
|
146
|
+
|
|
147
|
+
## Chaining
|
|
148
|
+
|
|
149
|
+
| Before this skill | After this skill |
|
|
150
|
+
|---|---|
|
|
151
|
+
| `olko:git-commit` + `git push` | `olko:qodoloop` |
|
|
152
|
+
| `git push -u origin <branch>` | `olko:coderabbitloop` |
|
|
153
|
+
| โ | `olko:open-source-publisher` (for new repos) |
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Codex Adapter for pr-description-writer
|
|
2
|
+
|
|
3
|
+
This is a Codex-specific adapter for the `olko:pr-description-writer` skill.
|
|
4
|
+
The canonical skill definition is in `../../SKILL.md`.
|
|
5
|
+
|
|
6
|
+
## Usage
|
|
7
|
+
|
|
8
|
+
Invoke in a Codex session:
|
|
9
|
+
|
|
10
|
+
```text
|
|
11
|
+
Use the olko:pr-description-writer skill to draft a PR description for this branch.
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Workflow
|
|
15
|
+
|
|
16
|
+
See `../../SKILL.md` for the full workflow: gather branch context (commits since base,
|
|
17
|
+
diff summary), check for an existing PR template, draft a structured title and body, then
|
|
18
|
+
create or update the GitHub PR using `gh pr create` / `gh pr edit`. The procedure is
|
|
19
|
+
plain `git`/`gh` and is agent-agnostic.
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pr-description-writer
|
|
3
|
+
description: >
|
|
4
|
+
Draft and post a GitHub PR title and body from git diff and commit history. Use when
|
|
5
|
+
opening a new PR, when the user asks to "write a PR description", "draft a PR", "open
|
|
6
|
+
a PR for this branch", or after running the git-commit skill and pushing the branch.
|
|
7
|
+
Chains naturally after git-commit and before qodoloop / coderabbitloop.
|
|
8
|
+
license: MIT
|
|
9
|
+
allowed-tools: Bash, Read, Write
|
|
10
|
+
compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools. Requires git and gh (GitHub CLI) authenticated.
|
|
11
|
+
metadata:
|
|
12
|
+
targets: ["cursor"]
|
|
13
|
+
author: Oleg Koval
|
|
14
|
+
tags:
|
|
15
|
+
- git
|
|
16
|
+
- github
|
|
17
|
+
- pull-request
|
|
18
|
+
- description
|
|
19
|
+
- pr
|
|
20
|
+
- workflow
|
|
21
|
+
source: weekly-pattern-learner
|
|
22
|
+
source_reason: "qodoloop and coderabbitloop both open with gh pr view โ the PR creation/description step was never codified as its own skill"
|
|
23
|
+
source_date: "2026-07-28"
|
|
24
|
+
---
|
|
25
|
+
<!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
|
|
26
|
+
|
|
27
|
+
> ๐ค *Auto-generated by **weekly-pattern-learner** ยท qodoloop and coderabbitloop both open with `gh pr view` โ the PR creation/description step was never codified as its own skill*
|
|
28
|
+
|
|
29
|
+
# PR Description Writer
|
|
30
|
+
|
|
31
|
+
Draft a GitHub-ready PR title and body from the branch's commit history and diff, then
|
|
32
|
+
create or update the PR so reviewers and AI tools have full context.
|
|
33
|
+
|
|
34
|
+
## Inputs
|
|
35
|
+
|
|
36
|
+
- **Base branch** (optional, default: `main` or `master` โ detect from `gh repo view`)
|
|
37
|
+
- **Draft mode** (optional, default: off)
|
|
38
|
+
- **Template** (optional): if `.github/pull_request_template.md` exists, use its section headings
|
|
39
|
+
|
|
40
|
+
## Workflow
|
|
41
|
+
|
|
42
|
+
### 1. Gather branch context
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# Current branch
|
|
46
|
+
git rev-parse --abbrev-ref HEAD
|
|
47
|
+
|
|
48
|
+
# Base branch
|
|
49
|
+
gh repo view --json defaultBranchRef -q '.defaultBranchRef.name'
|
|
50
|
+
|
|
51
|
+
# Commits since base
|
|
52
|
+
git log <base>..<head> --oneline --no-merges
|
|
53
|
+
|
|
54
|
+
# Diff summary (full diff for small PRs, stat-only for large)
|
|
55
|
+
git diff <base>..<head> --stat
|
|
56
|
+
git diff <base>..<head> # only if total changes < ~500 lines
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
If the diff is large (>500 changed lines), read file-by-file rather than all at once.
|
|
60
|
+
|
|
61
|
+
### 2. Check for existing PR
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
gh pr view --json number,title,body,state 2>/dev/null
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
- If a PR exists in `OPEN` state: update it with `gh pr edit`.
|
|
68
|
+
- If no PR exists: create one with `gh pr create`.
|
|
69
|
+
|
|
70
|
+
### 3. Check for a PR template
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
cat .github/pull_request_template.md 2>/dev/null \
|
|
74
|
+
|| cat .github/PULL_REQUEST_TEMPLATE.md 2>/dev/null \
|
|
75
|
+
|| cat PULL_REQUEST_TEMPLATE.md 2>/dev/null
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
If a template exists, mirror its section headings and populate them. Skip sections
|
|
79
|
+
that ask for credentials, tokens, internal hostnames, or content unrelated to the diff.
|
|
80
|
+
|
|
81
|
+
### 4. Draft title and body
|
|
82
|
+
|
|
83
|
+
**Title rules:**
|
|
84
|
+
- Use Conventional Commits prefix when the branch/commits use it: `feat(scope):`, `fix:`, etc.
|
|
85
|
+
- โค 70 characters
|
|
86
|
+
- Imperative mood ("Add X", "Fix Y", not "Added X")
|
|
87
|
+
- Include ticket number if present in branch name (e.g. `LIN-123`, `GH-456`)
|
|
88
|
+
|
|
89
|
+
**Body sections (use the template if one was found, otherwise use this structure):**
|
|
90
|
+
|
|
91
|
+
```markdown
|
|
92
|
+
## Summary
|
|
93
|
+
- <bullet: what changed>
|
|
94
|
+
- <bullet: why>
|
|
95
|
+
|
|
96
|
+
## Changes
|
|
97
|
+
- `<file or subsystem>`: <what changed and why>
|
|
98
|
+
|
|
99
|
+
## Test plan
|
|
100
|
+
- [ ] <what to run and what result to expect>
|
|
101
|
+
- [ ] <manual steps if automated tests don't cover it>
|
|
102
|
+
|
|
103
|
+
## Notes
|
|
104
|
+
<optional: anything a reviewer should watch for, known gaps, follow-up issues>
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Rules:
|
|
108
|
+
- Describe *intent*, not what the diff already shows line-by-line.
|
|
109
|
+
- If commits already have good conventional messages, use them as the skeleton.
|
|
110
|
+
- Skip any section that has nothing meaningful to say.
|
|
111
|
+
- Reference specific files, functions, or lines only when they aid navigation.
|
|
112
|
+
|
|
113
|
+
### 5. Create or update the PR
|
|
114
|
+
|
|
115
|
+
Always pass the body via a heredoc or temp file โ never interpolate it into the command
|
|
116
|
+
string (quotes and newlines will break the shell):
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
# Create new PR
|
|
120
|
+
gh pr create \
|
|
121
|
+
--title "<title>" \
|
|
122
|
+
--body "$(cat <<'PRBODY'
|
|
123
|
+
<body>
|
|
124
|
+
PRBODY
|
|
125
|
+
)" \
|
|
126
|
+
--base <base> \
|
|
127
|
+
[--draft]
|
|
128
|
+
|
|
129
|
+
# Update existing PR
|
|
130
|
+
gh pr edit <number> \
|
|
131
|
+
--title "<title>" \
|
|
132
|
+
--body "$(cat <<'PRBODY'
|
|
133
|
+
<body>
|
|
134
|
+
PRBODY
|
|
135
|
+
)"
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### 6. Confirm and report
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
gh pr view --json number,title,url -q '"PR #\(.number): \(.title)\n\(.url)"'
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
Print the PR number, title, and URL. If the PR was newly created, note whether
|
|
145
|
+
CI triggered automatically.
|
|
146
|
+
|
|
147
|
+
## Chaining
|
|
148
|
+
|
|
149
|
+
| Before this skill | After this skill |
|
|
150
|
+
|---|---|
|
|
151
|
+
| `olko:git-commit` + `git push` | `olko:qodoloop` |
|
|
152
|
+
| `git push -u origin <branch>` | `olko:coderabbitloop` |
|
|
153
|
+
| โ | `olko:open-source-publisher` (for new repos) |
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pr-description-writer
|
|
3
|
+
description: >
|
|
4
|
+
Draft and post a GitHub PR title and body from git diff and commit history. Use when
|
|
5
|
+
opening a new PR, when the user asks to "write a PR description", "draft a PR", "open
|
|
6
|
+
a PR for this branch", or after running the git-commit skill and pushing the branch.
|
|
7
|
+
Chains naturally after git-commit and before qodoloop / coderabbitloop.
|
|
8
|
+
license: MIT
|
|
9
|
+
allowed-tools: Bash, Read, Write
|
|
10
|
+
compatibility: Codex, Claude Code, Cursor, GitHub Copilot, Windsurf, Kiro, and other Agent Skills compatible tools. Requires git and gh (GitHub CLI) authenticated.
|
|
11
|
+
metadata:
|
|
12
|
+
targets: [_source-only]
|
|
13
|
+
author: Oleg Koval
|
|
14
|
+
tags:
|
|
15
|
+
- git
|
|
16
|
+
- github
|
|
17
|
+
- pull-request
|
|
18
|
+
- description
|
|
19
|
+
- pr
|
|
20
|
+
- workflow
|
|
21
|
+
source: weekly-pattern-learner
|
|
22
|
+
source_reason: "qodoloop and coderabbitloop both open with gh pr view โ the PR creation/description step was never codified as its own skill"
|
|
23
|
+
source_date: "2026-07-28"
|
|
24
|
+
---
|
|
25
|
+
<!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
|
|
26
|
+
|
|
27
|
+
> ๐ค *Auto-generated by **weekly-pattern-learner** ยท qodoloop and coderabbitloop both open with `gh pr view` โ the PR creation/description step was never codified as its own skill*
|
|
28
|
+
|
|
29
|
+
# PR Description Writer
|
|
30
|
+
|
|
31
|
+
Draft a GitHub-ready PR title and body from the branch's commit history and diff, then
|
|
32
|
+
create or update the PR so reviewers and AI tools have full context.
|
|
33
|
+
|
|
34
|
+
## Inputs
|
|
35
|
+
|
|
36
|
+
- **Base branch** (optional, default: `main` or `master` โ detect from `gh repo view`)
|
|
37
|
+
- **Draft mode** (optional, default: off)
|
|
38
|
+
- **Template** (optional): if `.github/pull_request_template.md` exists, use its section headings
|
|
39
|
+
|
|
40
|
+
## Workflow
|
|
41
|
+
|
|
42
|
+
### 1. Gather branch context
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# Current branch
|
|
46
|
+
git rev-parse --abbrev-ref HEAD
|
|
47
|
+
|
|
48
|
+
# Base branch
|
|
49
|
+
gh repo view --json defaultBranchRef -q '.defaultBranchRef.name'
|
|
50
|
+
|
|
51
|
+
# Commits since base
|
|
52
|
+
git log <base>..<head> --oneline --no-merges
|
|
53
|
+
|
|
54
|
+
# Diff summary (full diff for small PRs, stat-only for large)
|
|
55
|
+
git diff <base>..<head> --stat
|
|
56
|
+
git diff <base>..<head> # only if total changes < ~500 lines
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
If the diff is large (>500 changed lines), read file-by-file rather than all at once.
|
|
60
|
+
|
|
61
|
+
### 2. Check for existing PR
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
gh pr view --json number,title,body,state 2>/dev/null
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
- If a PR exists in `OPEN` state: update it with `gh pr edit`.
|
|
68
|
+
- If no PR exists: create one with `gh pr create`.
|
|
69
|
+
|
|
70
|
+
### 3. Check for a PR template
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
cat .github/pull_request_template.md 2>/dev/null \
|
|
74
|
+
|| cat .github/PULL_REQUEST_TEMPLATE.md 2>/dev/null \
|
|
75
|
+
|| cat PULL_REQUEST_TEMPLATE.md 2>/dev/null
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
If a template exists, mirror its section headings and populate them. Skip sections
|
|
79
|
+
that ask for credentials, tokens, internal hostnames, or content unrelated to the diff.
|
|
80
|
+
|
|
81
|
+
### 4. Draft title and body
|
|
82
|
+
|
|
83
|
+
**Title rules:**
|
|
84
|
+
- Use Conventional Commits prefix when the branch/commits use it: `feat(scope):`, `fix:`, etc.
|
|
85
|
+
- โค 70 characters
|
|
86
|
+
- Imperative mood ("Add X", "Fix Y", not "Added X")
|
|
87
|
+
- Include ticket number if present in branch name (e.g. `LIN-123`, `GH-456`)
|
|
88
|
+
|
|
89
|
+
**Body sections (use the template if one was found, otherwise use this structure):**
|
|
90
|
+
|
|
91
|
+
```markdown
|
|
92
|
+
## Summary
|
|
93
|
+
- <bullet: what changed>
|
|
94
|
+
- <bullet: why>
|
|
95
|
+
|
|
96
|
+
## Changes
|
|
97
|
+
- `<file or subsystem>`: <what changed and why>
|
|
98
|
+
|
|
99
|
+
## Test plan
|
|
100
|
+
- [ ] <what to run and what result to expect>
|
|
101
|
+
- [ ] <manual steps if automated tests don't cover it>
|
|
102
|
+
|
|
103
|
+
## Notes
|
|
104
|
+
<optional: anything a reviewer should watch for, known gaps, follow-up issues>
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Rules:
|
|
108
|
+
- Describe *intent*, not what the diff already shows line-by-line.
|
|
109
|
+
- If commits already have good conventional messages, use them as the skeleton.
|
|
110
|
+
- Skip any section that has nothing meaningful to say.
|
|
111
|
+
- Reference specific files, functions, or lines only when they aid navigation.
|
|
112
|
+
|
|
113
|
+
### 5. Create or update the PR
|
|
114
|
+
|
|
115
|
+
Always pass the body via a heredoc or temp file โ never interpolate it into the command
|
|
116
|
+
string (quotes and newlines will break the shell):
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
# Create new PR
|
|
120
|
+
gh pr create \
|
|
121
|
+
--title "<title>" \
|
|
122
|
+
--body "$(cat <<'PRBODY'
|
|
123
|
+
<body>
|
|
124
|
+
PRBODY
|
|
125
|
+
)" \
|
|
126
|
+
--base <base> \
|
|
127
|
+
[--draft]
|
|
128
|
+
|
|
129
|
+
# Update existing PR
|
|
130
|
+
gh pr edit <number> \
|
|
131
|
+
--title "<title>" \
|
|
132
|
+
--body "$(cat <<'PRBODY'
|
|
133
|
+
<body>
|
|
134
|
+
PRBODY
|
|
135
|
+
)"
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### 6. Confirm and report
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
gh pr view --json number,title,url -q '"PR #\(.number): \(.title)\n\(.url)"'
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
Print the PR number, title, and URL. If the PR was newly created, note whether
|
|
145
|
+
CI triggered automatically.
|
|
146
|
+
|
|
147
|
+
## Chaining
|
|
148
|
+
|
|
149
|
+
| Before this skill | After this skill |
|
|
150
|
+
|---|---|
|
|
151
|
+
| `olko:git-commit` + `git push` | `olko:qodoloop` |
|
|
152
|
+
| `git push -u origin <branch>` | `olko:coderabbitloop` |
|
|
153
|
+
| โ | `olko:open-source-publisher` (for new repos) |
|