opencode-onboard 0.1.3 → 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.
@@ -1,19 +1,17 @@
1
1
  ---
2
2
  name: browser-automation
3
- description: Reliable, composable browser automation using minimal OpenCode Browser primitives.
3
+ description: Reliable, composable browser automation using OpenCode Browser primitives. Use when capturing screenshots of a locally running app, clicking UI elements, reading page content, or automating browser interactions on localhost.
4
4
  license: MIT
5
- compatibility: opencode
5
+ compatibility: Requires opencode-browser extension installed and running.
6
6
  metadata:
7
- audience: agents
8
- domain: browser
7
+ author: copilots
8
+ version: "1.0"
9
9
  ---
10
10
 
11
- ## What I do
11
+ Browser MCP tools are permitted ONLY for interactions with the LOCAL running app on `localhost` URLs.
12
+ **Navigating to external services (github.com, dev.azure.com, etc.) via browser MCP is FORBIDDEN.**
12
13
 
13
- - Provide a safe, composable workflow for browsing tasks
14
- - Use `browser_query` list and index selection to click reliably
15
- - Confirm state changes after each action
16
- - Support CLI-first debugging with `opencode-browser tool` commands
14
+ ---
17
15
 
18
16
  ## Best-practice workflow
19
17
 
@@ -25,6 +23,8 @@ metadata:
25
23
  6. Click, type, or select using `index`
26
24
  7. Confirm using `browser_query` or `browser_snapshot`
27
25
 
26
+ ---
27
+
28
28
  ## CLI-first debugging
29
29
 
30
30
  - List all available tools: `npx @different-ai/opencode-browser tools`
@@ -33,7 +33,7 @@ metadata:
33
33
  - Run smoke test: `npx @different-ai/opencode-browser self-test`
34
34
  - After `update`, reload the unpacked extension in `chrome://extensions`
35
35
 
36
- This path is useful for reproducing selector/scroll issues quickly before running a full OpenCode session.
36
+ ---
37
37
 
38
38
  ## Selecting options
39
39
 
@@ -41,6 +41,8 @@ This path is useful for reproducing selector/scroll issues quickly before runnin
41
41
  - Prefer `value` or `label`; use `optionIndex` when needed
42
42
  - Example: `browser_select({ selector: "select", value: "plugin" })`
43
43
 
44
+ ---
45
+
44
46
  ## Query modes
45
47
 
46
48
  - `text`: read visible text from a matched element
@@ -49,11 +51,15 @@ This path is useful for reproducing selector/scroll issues quickly before runnin
49
51
  - `exists`: check presence and count
50
52
  - `page_text`: extract visible page text
51
53
 
54
+ ---
55
+
52
56
  ## Opening tabs
53
57
 
54
58
  - Use `browser_open_tab` to create a new tab, optionally with `url` and `active`
55
59
  - Example: `browser_open_tab({ url: "https://example.com", active: false })`
56
60
 
61
+ ---
62
+
57
63
  ## Troubleshooting
58
64
 
59
65
  - If a selector fails, run `browser_query` with `mode=page_text` to confirm the content exists
@@ -61,3 +67,13 @@ This path is useful for reproducing selector/scroll issues quickly before runnin
61
67
  - For inbox/chat panes, try text selectors first (`text:Subject line`) then verify selection with `browser_query`
62
68
  - For scrollable containers, pass both `selector` and `x`/`y` to `browser_scroll` and then verify `scrollTop`
63
69
  - Confirm results after each action
70
+
71
+ ---
72
+
73
+ ## Guardrails
74
+
75
+ - ✅ Screenshots of locally running app on `localhost` URLs
76
+ - ✅ Click, type, scroll, query on `localhost` pages
77
+ - ❌ Navigate to external services (github.com, dev.azure.com, npmjs.com, etc.) — FORBIDDEN
78
+ - ❌ Use browser tools for any DevOps or GitHub operations — FORBIDDEN
79
+ - ❌ Use browser tools to read or modify production systems — FORBIDDEN
@@ -0,0 +1,170 @@
1
+ ---
2
+ name: ob-pullrequest-az
3
+ description: Create Azure DevOps 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 az CLI, az devops extension, 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 az repos pr create` NOT `az repos pr create`
18
+ - `rtk az repos pr work-item add` NOT `az repos pr work-item add`
19
+ - `rtk az devops invoke` NOT `az devops invoke`
20
+
21
+ **Browser MCP tools are FORBIDDEN for all Azure DevOps 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/{id}-{slug}
54
+ ```
55
+
56
+ ### Step 4: Create PR
57
+
58
+ ```bash
59
+ rtk az repos pr create \
60
+ --repository {repo} \
61
+ --source-branch feature/{id}-{slug} \
62
+ --target-branch main \
63
+ --title "feat(#{id}): {title}" \
64
+ --description "{description}"
65
+ ```
66
+
67
+ ### Step 5: Link work item (MANDATORY, run sequentially — not in parallel)
68
+
69
+ ```bash
70
+ rtk az repos pr work-item add --id {pr-id} --work-items {workitem-id}
71
+ ```
72
+
73
+ ### Step 6: Post screenshot comment
74
+
75
+ Build raw URL for each image:
76
+ ```
77
+ 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
78
+ ```
79
+
80
+ Post via:
81
+ ```bash
82
+ rtk az devops invoke \
83
+ --area git --resource pullRequestThreads \
84
+ --route-parameters project={project} repositoryId={repo} pullRequestId={pr-id} \
85
+ --http-method POST --api-version 7.1 --in-file body.json
86
+ ```
87
+
88
+ `body.json`:
89
+ ```json
90
+ {
91
+ "comments": [{
92
+ "parentCommentId": 0,
93
+ "content": "## Screenshots\n\n![{feature}]({raw-url})",
94
+ "commentType": 1
95
+ }],
96
+ "status": "active"
97
+ }
98
+ ```
99
+
100
+ ---
101
+
102
+ ## Mode B: Read PR Feedback (feedback mode)
103
+
104
+ Triggered when user says "I've added comments to the PR" or "check PR feedback".
105
+
106
+ ### Step 1: Find PRs
107
+
108
+ If PR link provided, extract ID from URL. Otherwise:
109
+ ```bash
110
+ rtk az repos pr list --repository {repo} --status active --top 1
111
+ ```
112
+
113
+ ### Step 2: Read comment threads
114
+
115
+ ```bash
116
+ rtk az devops invoke \
117
+ --area git --resource pullRequestThreads \
118
+ --route-parameters project={project} repositoryId={repo} pullRequestId={id} \
119
+ --http-method GET --api-version 7.1
120
+ ```
121
+
122
+ ### Step 3: Categorize feedback
123
+
124
+ | Category | Description | Action |
125
+ |----------|-------------|--------|
126
+ | `code-change` | Reviewer requests code modification | Return to lead to spawn specialists |
127
+ | `spec-update` | Affects proposal, design, or tasks | Update openspec artifacts |
128
+ | `question` | Reviewer asks a question | Reply with answer |
129
+ | `resolved` | Thread already resolved | Skip |
130
+
131
+ ### Step 4: Update openspec (if spec-update)
132
+
133
+ ```bash
134
+ rtk git branch --show-current
135
+ # feature/193208-roles-crud → change: us-193208-roles-crud
136
+ ```
137
+
138
+ Update: `openspec/changes/{change}/proposal.md`, `design.md`, or `tasks.md` as appropriate.
139
+
140
+ ### Step 5: Reply to each thread
141
+
142
+ ```bash
143
+ rtk az devops invoke \
144
+ --area git --resource pullRequestThreadComments \
145
+ --route-parameters project={project} repositoryId={repo} pullRequestId={id} threadId={tid} \
146
+ --http-method POST --api-version 7.1 --in-file reply.json
147
+ ```
148
+
149
+ `reply.json`:
150
+ ```json
151
+ {
152
+ "comments": [{
153
+ "parentCommentId": 1,
154
+ "content": "Acknowledged — applying this change now.",
155
+ "commentType": 1
156
+ }]
157
+ }
158
+ ```
159
+
160
+ ---
161
+
162
+ ## Guardrails
163
+
164
+ - ✅ Commit and push to feature branches only
165
+ - ✅ Create and comment on PRs via az CLI
166
+ - ✅ Screenshots of localhost only via browser_screenshot
167
+ - ❌ Commit or push to `main` — FORBIDDEN
168
+ - ❌ Force push — FORBIDDEN
169
+ - ❌ Merge or approve PRs — human-only
170
+ - ❌ Navigate browser to dev.azure.com — FORBIDDEN
@@ -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
package/content/AGENTS.md CHANGED
@@ -247,6 +247,7 @@ Skills are located in `.agents/skills/`. Each skill has a `SKILL.md` with a desc
247
247
  | `openspec-propose` | Propose change artifacts (proposal, specs, tasks) |
248
248
  | `openspec-apply-change` | Implement change with agent team |
249
249
  | `openspec-archive-change` | Archive completed change |
250
+ | `browser-automation` | Browser automation for localhost UI — screenshots, clicks, queries |
250
251
 
251
252
  ---
252
253
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-onboard",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "description": "Prepare any brownfield codebase for AI agent workflows using OpenCode, OpenSpec, and ensemble orchestration.",
5
5
  "keywords": [
6
6
  "opencode",