opencode-onboard 0.1.2 → 0.1.4

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.
@@ -0,0 +1,140 @@
1
+ ---
2
+ name: ob-pullrequest-gh
3
+ description: Create GitHub PRs with screenshots, or read and triage PR review feedback. Use when shipping a feature branch or when user says "I've added comments to the PR".
4
+ license: MIT
5
+ compatibility: Requires gh CLI, openspec CLI, and opencode-browser for screenshots.
6
+ metadata:
7
+ author: copilots
8
+ version: "1.0"
9
+ ---
10
+
11
+ **RTK - MANDATORY**
12
+
13
+ Use `rtk` wrapper for ALL CLI commands:
14
+ - `rtk git add` NOT `git add`
15
+ - `rtk git commit` NOT `git commit`
16
+ - `rtk git push` NOT `git push`
17
+ - `rtk gh pr create` NOT `gh pr create`
18
+ - `rtk gh pr comment` NOT `gh pr comment`
19
+ - `rtk gh api` NOT `gh api`
20
+
21
+ **Browser MCP tools are FORBIDDEN for all GitHub operations.**
22
+ Browser tools are ONLY permitted for screenshots of the LOCAL running app on `localhost` URLs.
23
+
24
+ ---
25
+
26
+ ## Mode A: Create PR (ship mode)
27
+
28
+ Triggered when devops-manager is in ship mode after implementation is complete.
29
+
30
+ ### Step 1: Verify feature branch
31
+
32
+ ```bash
33
+ rtk git branch --show-current
34
+ ```
35
+
36
+ Branch must be `feature/{id}-{slug}`. NEVER push to `main`.
37
+
38
+ ### Step 2: Capture screenshots (if UI changes exist)
39
+
40
+ ```bash
41
+ browser_navigate url="http://localhost:{port}/{route}"
42
+ browser_wait ms=2000
43
+ browser_screenshot
44
+ ```
45
+
46
+ Save to: `openspec/changes/{change-name}/images/{feature}.png`
47
+
48
+ ### Step 3: Commit and push
49
+
50
+ ```bash
51
+ rtk git add .
52
+ rtk git commit -m "feat(#{id}): {description}"
53
+ rtk git push origin feature/{slug}
54
+ ```
55
+
56
+ ### Step 4: Create PR
57
+
58
+ ```bash
59
+ rtk gh pr create \
60
+ --base main \
61
+ --head feature/{slug} \
62
+ --title "feat: {title}" \
63
+ --body "{description}"
64
+ ```
65
+
66
+ ### Step 5: Post screenshot comment
67
+
68
+ Build raw URL for each image:
69
+ ```
70
+ https://raw.githubusercontent.com/{owner}/{repo}/feature/{slug}/openspec/changes/{change}/images/{file}.png
71
+ ```
72
+
73
+ Post comment:
74
+ ```bash
75
+ rtk gh pr comment {pr-number} --body $'## Screenshots\n\n![{feature}]({raw-url})'
76
+ ```
77
+
78
+ ---
79
+
80
+ ## Mode B: Read PR Feedback (feedback mode)
81
+
82
+ Triggered when user says "I've added comments to the PR" or "check PR feedback".
83
+
84
+ ### Step 1: Find PRs
85
+
86
+ If PR link provided, extract number from URL. Otherwise:
87
+ ```bash
88
+ rtk gh pr list --state open --limit 1
89
+ ```
90
+
91
+ ### Step 2: Read comment threads
92
+
93
+ ```bash
94
+ rtk gh pr view {pr-number} --comments
95
+ # Or structured output:
96
+ rtk gh api repos/{owner}/{repo}/pulls/{pr-number}/comments
97
+ rtk gh api repos/{owner}/{repo}/pulls/{pr-number}/reviews
98
+ ```
99
+
100
+ ### Step 3: Categorize feedback
101
+
102
+ | Category | Description | Action |
103
+ |----------|-------------|--------|
104
+ | `code-change` | Reviewer requests code modification | Return to lead to spawn specialists |
105
+ | `spec-update` | Affects proposal, design, or tasks | Update openspec artifacts |
106
+ | `question` | Reviewer asks a question | Reply with answer |
107
+ | `resolved` | Thread already resolved | Skip |
108
+
109
+ ### Step 4: Update openspec (if spec-update)
110
+
111
+ ```bash
112
+ rtk git branch --show-current
113
+ # feature/add-user-auth → change: add-user-auth
114
+ ```
115
+
116
+ Update: `openspec/changes/{change}/proposal.md`, `design.md`, or `tasks.md` as appropriate.
117
+
118
+ ### Step 5: Reply to each comment thread
119
+
120
+ ```bash
121
+ # Reply to a review comment
122
+ rtk gh api repos/{owner}/{repo}/pulls/{pr-number}/comments/{comment-id}/replies \
123
+ --method POST \
124
+ --field body="Acknowledged — applying this change now."
125
+
126
+ # Or post a general PR comment
127
+ rtk gh pr comment {pr-number} --body "Updated design.md to reflect feedback."
128
+ ```
129
+
130
+ ---
131
+
132
+ ## Guardrails
133
+
134
+ - ✅ Commit and push to feature branches only
135
+ - ✅ Create and comment on PRs via gh CLI
136
+ - ✅ Screenshots of localhost only via browser_screenshot
137
+ - ❌ Commit or push to `main` — FORBIDDEN
138
+ - ❌ Force push — FORBIDDEN
139
+ - ❌ Merge or approve PRs — human-only
140
+ - ❌ Navigate browser to github.com — FORBIDDEN
@@ -1,206 +1,172 @@
1
- ---
2
- name: ob-userstory-az
3
- description: Parse Azure DevOps user story URL and create OpenSpec change. Use when user provides an Azure DevOps URL.
4
- license: MIT
5
- compatibility: Requires openspec CLI and Azure CLI.
6
- metadata:
7
- author: copilots
8
- version: "3.0"
9
- ---
10
-
11
- **RTK - MANDATORY**
12
-
13
- Use `rtk` wrapper for ALL CLI commands:
14
- - `rtk az boards work-item show` NOT `az boards work-item show`
15
- - `rtk openspec new change` NOT `openspec new change`
16
-
17
- **Browser MCP tools are FORBIDDEN for all Azure DevOps operations.**
18
-
19
- ---
20
-
21
- ## Azure CLI Setup (One-Time)
22
-
23
- ```bash
24
- az config set extension.dynamic_install_allow_preview=true
25
- az extension add --name azure-devops
26
- az login
27
- az devops login --organization https://dev.azure.com/plainconcepts
28
- ```
29
-
30
- **PAT Token**, go to `https://dev.azure.com/plainconcepts/_usersSettings/tokens`
31
- Create with scopes: **Work Items (Read & Write)** + **Code (Read & Write)**
32
-
33
- ---
34
-
35
- ## Steps
36
-
37
- 1. **Extract Work Item ID** from URL
38
- - `?workitem=193208` → ID: 193208
39
- - `/workitems/edit/193208` → ID: 193208
40
-
41
- 2. **Fetch Work Item**
42
- ```bash
43
- rtk az boards work-item show --id 193208
44
- ```
45
- Do NOT use `--organization` flag (uses default org).
46
-
47
- 3. **Extract Key Fields** from JSON response:
48
- - `fields.System.Title` → Title
49
- - `fields.System.Description` → Description (may be HTML, strip tags)
50
- - `fields.System.WorkItemType` → Type
51
- - `fields.System.IterationPath` → Sprint
52
- - `fields.System.State` → State
53
- - `fields.System.AcceptanceCriteria` → AC (if present)
54
-
55
- 4. **Create OpenSpec Change**
56
- ```bash
57
- rtk openspec new change "us-{id}-{slug}"
58
- ```
59
-
60
- ---
61
-
62
- ## Full Azure DevOps CLI Reference
63
-
64
- Use these for ALL DevOps operations, browser MCP is FORBIDDEN.
65
-
66
- ### Work Items
67
- ```bash
68
- # Read work item
69
- rtk az boards work-item show --id <id>
70
-
71
- # Update work item state
72
- rtk az boards work-item update --id <id> --state "Active"
73
- ```
74
-
75
- ### Pull Requests
76
- ```bash
77
- # List open PRs
78
- rtk az repos pr list --repository <repo> --status active --top 5
79
-
80
- # Show PR details
81
- rtk az repos pr show --id <pr-id>
82
-
83
- # Create PR
84
- rtk az repos pr create \
85
- --repository <repo> \
86
- --source-branch feature/<id>-<slug> \
87
- --target-branch main \
88
- --title "feat(#<id>): <title>" \
89
- --description "<description>"
90
-
91
- # Update PR description
92
- rtk az repos pr update --id <pr-id> --description "<text>"
93
-
94
- # Link work item to PR (run sequentially, not parallel)
95
- rtk az repos pr work-item add --id <pr-id> --work-items <work-item-id>
96
- ```
97
-
98
- ### PR Threads (Comments)
99
- ```bash
100
- # Read all threads
101
- rtk az devops invoke \
102
- --area git --resource pullRequestThreads \
103
- --route-parameters project=PlainConcepts.CapacityTool repositoryId=<repo> pullRequestId=<id> \
104
- --http-method GET --api-version 7.1
105
-
106
- # Post new comment thread (requires body.json)
107
- rtk az devops invoke \
108
- --area git --resource pullRequestThreads \
109
- --route-parameters project=PlainConcepts.CapacityTool repositoryId=<repo> pullRequestId=<id> \
110
- --http-method POST --api-version 7.1 --in-file body.json
111
-
112
- # Reply to existing thread
113
- rtk az devops invoke \
114
- --area git --resource pullRequestThreadComments \
115
- --route-parameters project=PlainConcepts.CapacityTool repositoryId=<repo> pullRequestId=<id> threadId=<tid> \
116
- --http-method POST --api-version 7.1 --in-file reply.json
117
- ```
118
-
119
- ### Comment Body JSON format
120
- ```json
121
- {
122
- "comments": [
123
- {
124
- "parentCommentId": 0,
125
- "content": "Your markdown comment here.",
126
- "commentType": 1
127
- }
128
- ],
129
- "status": "active"
130
- }
131
- ```
132
-
133
- For replies, `parentCommentId` should be the ID of the first comment in the thread (usually 1).
134
-
135
- ---
136
-
137
- ## Screenshot / Image Strategy
138
-
139
- **Never upload images as PR attachments.** Save to openspec change folder and reference via raw URL.
140
-
141
- ### Save location
142
- ```
143
- openspec/changes/{change-name}/images/{screenshot}.png
144
- ```
145
-
146
- ### Raw URL format (renders inline in PR comments)
147
- ```
148
- https://dev.azure.com/plainconcepts/PlainConcepts.CapacityTool/_apis/git/repositories/{repo}/items?path=openspec/changes/{change}/images/{file}.png&versionType=branch&version={branch}&api-version=7.1
149
- ```
150
-
151
- Do NOT use `_git/` URLs, they return HTML, not raw binary.
152
-
153
- ### PR comment with screenshot
154
- ```json
155
- {
156
- "comments": [
157
- {
158
- "parentCommentId": 0,
159
- "content": "## Screenshots\n\n![Description](https://dev.azure.com/plainconcepts/PlainConcepts.CapacityTool/_apis/git/repositories/{repo}/items?path=openspec/changes/{change}/images/{file}.png&versionType=branch&version={branch}&api-version=7.1)",
160
- "commentType": 1
161
- }
162
- ],
163
- "status": "active"
164
- }
165
- ```
166
-
167
- ---
168
-
169
- ## URL Formats Reference
170
-
171
- ```
172
- # Sprint board with work item
173
- https://dev.azure.com/{org}/{project}/_sprints/backlog/{team}/{project}/Sprint%20110?workitem=193208
174
-
175
- # Direct work item
176
- https://dev.azure.com/{org}/{project}/_workitems/edit/193208
177
-
178
- # PR
179
- https://dev.azure.com/{org}/{project}/_git/{repo}/pullrequest/{pr-id}
180
- ```
181
-
182
- ---
183
-
184
- ## Output Format
185
-
186
- ```
187
- ## User Story Parsed
188
-
189
- **Work Item:** #193208
190
- **Title:** Roles CRUD
191
- **Type:** User Story
192
- **Iteration:** Sprint 110
193
- **State:** New
194
-
195
- **Change Created:** us-193208-roles-crud
196
-
197
- ### Next Steps
198
- 1. Review the proposal
199
- 2. Say "implement the plan" to start implementation
200
- ```
201
-
202
- ## Constraints
203
-
204
- - This skill only PARSES and PROPOSES, implementation via openspec-apply-change
205
- - Always use `rtk` for CLI commands
206
- - Browser MCP tools FORBIDDEN for all DevOps operations
1
+ ---
2
+ name: ob-userstory-az
3
+ description: Parse Azure DevOps user story URL and create OpenSpec change. Use when user provides an Azure DevOps URL.
4
+ license: MIT
5
+ compatibility: Requires openspec CLI and Azure CLI.
6
+ metadata:
7
+ author: copilots
8
+ version: "3.1"
9
+ ---
10
+
11
+ **RTK - MANDATORY**
12
+
13
+ Use `rtk` wrapper for ALL CLI commands:
14
+ - `rtk az boards work-item show` NOT `az boards work-item show`
15
+ - `rtk openspec new change` NOT `openspec new change`
16
+
17
+ **Browser MCP tools are FORBIDDEN for all Azure DevOps operations.**
18
+
19
+ ---
20
+
21
+ ## Azure CLI Setup (One-Time)
22
+
23
+ ```bash
24
+ az config set extension.dynamic_install_allow_preview=true
25
+ az extension add --name azure-devops
26
+ az login
27
+ az devops login --organization https://dev.azure.com/{org}
28
+ ```
29
+
30
+ **PAT Token**, go to `https://dev.azure.com/{org}/_usersSettings/tokens`
31
+ Create with scopes: **Work Items (Read & Write)** + **Code (Read & Write)**
32
+
33
+ ---
34
+
35
+ ## Steps
36
+
37
+ 1. **Extract Work Item ID** from URL
38
+ - `?workitem=193208` → ID: 193208
39
+ - `/workitems/edit/193208` → ID: 193208
40
+
41
+ 2. **Fetch Work Item**
42
+ ```bash
43
+ rtk az boards work-item show --id 193208
44
+ ```
45
+ Do NOT use `--organization` flag (uses default org).
46
+
47
+ 3. **Extract Key Fields** from JSON response:
48
+ - `fields.System.Title` → Title
49
+ - `fields.System.Description` → Description (may be HTML, strip tags)
50
+ - `fields.System.WorkItemType` → Type
51
+ - `fields.System.IterationPath` → Sprint
52
+ - `fields.System.State` → State
53
+ - `fields.System.AcceptanceCriteria` → AC (if present)
54
+
55
+ 4. **Create OpenSpec Change**
56
+ ```bash
57
+ rtk openspec new change "us-{id}-{slug}"
58
+ ```
59
+
60
+ ---
61
+
62
+ ## Full Azure DevOps CLI Reference
63
+
64
+ Use these for ALL DevOps operations, browser MCP is FORBIDDEN.
65
+
66
+ ### Work Items
67
+ ```bash
68
+ # Read work item
69
+ rtk az boards work-item show --id <id>
70
+
71
+ # Update work item state
72
+ rtk az boards work-item update --id <id> --state "Active"
73
+ ```
74
+
75
+ ### PR Threads (Comments)
76
+ ```bash
77
+ # Read all threads
78
+ rtk az devops invoke \
79
+ --area git --resource pullRequestThreads \
80
+ --route-parameters project={project} repositoryId=<repo> pullRequestId=<id> \
81
+ --http-method GET --api-version 7.1
82
+
83
+ # Post new comment thread (requires body.json)
84
+ rtk az devops invoke \
85
+ --area git --resource pullRequestThreads \
86
+ --route-parameters project={project} repositoryId=<repo> pullRequestId=<id> \
87
+ --http-method POST --api-version 7.1 --in-file body.json
88
+
89
+ # Reply to existing thread
90
+ rtk az devops invoke \
91
+ --area git --resource pullRequestThreadComments \
92
+ --route-parameters project={project} repositoryId=<repo> pullRequestId=<id> threadId=<tid> \
93
+ --http-method POST --api-version 7.1 --in-file reply.json
94
+ ```
95
+
96
+ ### Comment Body JSON format
97
+ ```json
98
+ {
99
+ "comments": [
100
+ {
101
+ "parentCommentId": 0,
102
+ "content": "Your markdown comment here.",
103
+ "commentType": 1
104
+ }
105
+ ],
106
+ "status": "active"
107
+ }
108
+ ```
109
+
110
+ For replies, `parentCommentId` should be the ID of the first comment in the thread (usually 1).
111
+
112
+ ---
113
+
114
+ ## Screenshot / Image Strategy
115
+
116
+ **Never upload images as PR attachments.** Save to openspec change folder and reference via raw URL.
117
+
118
+ ### Save location
119
+ ```
120
+ openspec/changes/{change-name}/images/{screenshot}.png
121
+ ```
122
+
123
+ ### Raw URL format (renders inline in PR comments)
124
+ ```
125
+ https://dev.azure.com/{org}/{project}/_apis/git/repositories/{repo}/items?path=openspec/changes/{change}/images/{file}.png&versionType=branch&version={branch}&api-version=7.1
126
+ ```
127
+
128
+ Do NOT use `_git/` URLs, they return HTML, not raw binary.
129
+
130
+ ---
131
+
132
+ ## URL Formats Reference
133
+
134
+ ```
135
+ # Sprint board with work item
136
+ https://dev.azure.com/{org}/{project}/_sprints/backlog/{team}/{project}/Sprint%20110?workitem=193208
137
+
138
+ # Direct work item
139
+ https://dev.azure.com/{org}/{project}/_workitems/edit/193208
140
+
141
+ # PR
142
+ https://dev.azure.com/{org}/{project}/_git/{repo}/pullrequest/{pr-id}
143
+ ```
144
+
145
+ ---
146
+
147
+ ## Output Format
148
+
149
+ ```
150
+ ## User Story Parsed
151
+
152
+ **Work Item:** #{id}
153
+ **Title:** {title}
154
+ **Type:** User Story
155
+ **Iteration:** {sprint}
156
+ **State:** {state}
157
+
158
+ **Change Created:** us-{id}-{slug}
159
+
160
+ ### Next Steps
161
+ 1. Review the proposal
162
+ 2. Say "implement the plan" to start implementation
163
+ ```
164
+
165
+ ---
166
+
167
+ ## Guardrails
168
+
169
+ - ✅ Parse Azure DevOps URL and create OpenSpec change
170
+ - ✅ Use `rtk` for all Azure CLI operations
171
+ - ❌ Browser MCP tools for Azure DevOps operations — FORBIDDEN
172
+ - Implementation this skill only parses and proposes
@@ -5,9 +5,17 @@ license: MIT
5
5
  compatibility: Requires openspec CLI and gh CLI.
6
6
  metadata:
7
7
  author: copilots
8
- version: "1.0"
8
+ version: "1.1"
9
9
  ---
10
10
 
11
+ **RTK - MANDATORY**
12
+
13
+ Use `rtk` wrapper for ALL CLI commands:
14
+ - `rtk gh issue view` NOT `gh issue view`
15
+ - `rtk gh issue list` NOT `gh issue list`
16
+ - `rtk gh issue edit` NOT `gh issue edit`
17
+ - `rtk openspec new change` NOT `openspec new change`
18
+
11
19
  **Browser MCP tools are FORBIDDEN for all GitHub operations.**
12
20
 
13
21
  ---
@@ -33,7 +41,7 @@ gh auth status
33
41
 
34
42
  2. **Fetch Issue**
35
43
  ```bash
36
- gh issue view 42 --json number,title,body,labels,milestone,state
44
+ rtk gh issue view 42 --json number,title,body,labels,milestone,state
37
45
  ```
38
46
 
39
47
  3. **Extract Key Fields** from JSON response:
@@ -46,7 +54,7 @@ gh auth status
46
54
 
47
55
  4. **Create OpenSpec Change**
48
56
  ```bash
49
- openspec new change "gh-{number}-{slug}"
57
+ rtk openspec new change "gh-{number}-{slug}"
50
58
  ```
51
59
 
52
60
  ---
@@ -58,55 +66,13 @@ Use these for ALL GitHub operations, browser MCP is FORBIDDEN.
58
66
  ### Issues
59
67
  ```bash
60
68
  # Read issue
61
- gh issue view <number>
69
+ rtk gh issue view <number>
62
70
 
63
71
  # List open issues
64
- gh issue list --state open --limit 10
72
+ rtk gh issue list --state open --limit 10
65
73
 
66
74
  # Update issue
67
- gh issue edit <number> --add-label "in-progress"
68
- ```
69
-
70
- ### Pull Requests
71
- ```bash
72
- # List open PRs
73
- gh pr list --state open
74
-
75
- # Show PR details
76
- gh pr view <number>
77
-
78
- # Create PR
79
- gh pr create \
80
- --base main \
81
- --head feature/{slug} \
82
- --title "feat: <title>" \
83
- --body "<description>"
84
-
85
- # Update PR
86
- gh pr edit <number> --body "<text>"
87
- ```
88
-
89
- ### PR Comments
90
- ```bash
91
- # Read PR comments
92
- gh pr view <number> --comments
93
-
94
- # Post PR comment
95
- gh pr comment <number> --body "Your markdown comment here."
96
-
97
- # Reply to review comment via API
98
- gh api repos/{owner}/{repo}/pulls/{pr-number}/comments/{comment-id}/replies \
99
- --method POST \
100
- --field body="Reply text here."
101
- ```
102
-
103
- ### Review Comments (structured)
104
- ```bash
105
- # Get all review comments on a PR
106
- gh api repos/{owner}/{repo}/pulls/{pr-number}/comments
107
-
108
- # Get all reviews
109
- gh api repos/{owner}/{repo}/pulls/{pr-number}/reviews
75
+ rtk gh issue edit <number> --add-label "in-progress"
110
76
  ```
111
77
 
112
78
  ---
@@ -125,11 +91,6 @@ openspec/changes/{change-name}/images/{screenshot}.png
125
91
  https://raw.githubusercontent.com/{owner}/{repo}/{branch}/openspec/changes/{change}/images/{file}.png
126
92
  ```
127
93
 
128
- ### PR comment with screenshot
129
- ```bash
130
- gh pr comment <number> --body "## Screenshots\n\n![Description](https://raw.githubusercontent.com/{owner}/{repo}/feature/{slug}/openspec/changes/{change}/images/{file}.png)"
131
- ```
132
-
133
94
  ---
134
95
 
135
96
  ## URL Formats Reference
@@ -164,8 +125,11 @@ https://raw.githubusercontent.com/{owner}/{repo}/{branch}/{path}
164
125
  2. Say "implement the plan" to start implementation
165
126
  ```
166
127
 
167
- ## Constraints
128
+ ---
129
+
130
+ ## Guardrails
168
131
 
169
- - This skill only PARSES and PROPOSES, implementation via openspec-apply-change
170
- - Always use `gh` CLI for GitHub operations
171
- - Browser MCP tools FORBIDDEN for all GitHub operations
132
+ - Parse GitHub Issue URL and create OpenSpec change
133
+ - Use `rtk gh` for all GitHub CLI operations
134
+ - Browser MCP tools for GitHub operations — FORBIDDEN
135
+ - ❌ Implementation — this skill only parses and proposes