@plainconceptsplatform/agent-harness 3.4.1 → 3.5.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/cli/commands/update.js +121 -121
- package/cli/fragments/archive/az.md +97 -97
- package/cli/fragments/archive/gh.md +96 -96
- package/cli/fragments/archive/gl.md +96 -96
- package/cli/fragments/archive/none.md +75 -75
- package/cli/fragments/guardrails/codegraph.md +5 -5
- package/cli/fragments/guardrails/humanizer.md +4 -4
- package/cli/fragments/guardrails/memory.md +4 -4
- package/cli/fragments/guardrails/rtk.md +3 -3
- package/cli/fragments/guardrails/simple-english.md +4 -4
- package/cli/fragments/ops-ship/az.md +81 -81
- package/cli/presets/agents-content.json +34 -34
- package/cli/presets/browser.json +10 -10
- package/cli/steps/browser/index.js +48 -48
- package/cli/steps/copy/commands.js +79 -79
- package/cli/steps/copy/index.js +88 -88
- package/cli/steps/metadata/index.js +115 -115
- package/cli/steps/models/write.js +38 -38
- package/harness/.opencode/commands/init.md +5 -5
- package/harness/.opencode/commands/make-architecture.md +5 -5
- package/harness/.opencode/commands/make-design.md +5 -5
- package/harness/.opencode/commands/make-engineer.md +5 -5
- package/harness/.opencode/commands/make-guardrails.md +5 -5
- package/harness/.opencode/commands/make-user-model.md +5 -5
- package/harness/.opencode/commands/plan-apply.md +9 -9
- package/harness/.opencode/commands/plan-goal.md +5 -5
- package/harness/.opencode/commands/repo-initialize.md +5 -5
- package/harness/.opencode/commands/repo-onboard.md +5 -5
- package/harness/.opencode/commands/repo-verify.md +5 -5
- package/harness/.opencode/scripts/check-diff.mjs +9 -1
- package/harness/AGENTS.md +49 -49
- package/package.json +1 -1
- package/skills/README.md +18 -18
- package/skills/browser-automation/SKILL.md +72 -72
- package/skills/pc-make-architecture/SKILL.md +32 -32
- package/skills/pc-make-design/SKILL.md +45 -45
- package/skills/pc-make-engineer/signal-mapping.md +53 -53
- package/skills/pc-make-guardrails/SKILL.md +44 -44
- package/skills/pc-make-user-model/SKILL.md +56 -56
- package/skills/pc-plan-apply/SKILL.md +2 -0
- package/skills/pc-plan-archive/SKILL.md +66 -66
- package/skills/pc-plan-goal/branching.md +39 -39
- package/skills/pc-plan-goal/output.md +71 -71
- package/skills/pc-plan-story/SKILL.md +93 -93
- package/skills/pc-repo-initialize/SKILL.md +119 -119
- package/skills/pc-repo-onboard/SKILL.md +32 -32
- package/skills/pc-userstory-az/SKILL.md +71 -71
- package/skills/pc-userstory-browser/SKILL.md +64 -64
- package/skills/pc-userstory-gh/SKILL.md +63 -63
- package/skills/pc-userstory-jira/SKILL.md +74 -74
|
@@ -1,119 +1,119 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: pc-repo-initialize
|
|
3
|
-
description: "Initialize the project. Presents a single form with all setup questions, then executes selected steps. Invoked by the /init command (alias: /repo-initialize)."
|
|
4
|
-
license: MIT
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
First read `AGENTS.md`. Without the `<!-- PC-NOT-INITIALIZED -->` marker the project is already initialized: say so, and point at `/make-architecture` or `/make-design` for a refresh. With it, run the sequence below.
|
|
8
|
-
|
|
9
|
-
## Rules
|
|
10
|
-
|
|
11
|
-
- Write only to `ARCHITECTURE.md`, `DESIGN.md`, `AGENTS.md`, `openspec/` and `.agents/skills/`. Source files are read for analysis, never edited: init sets a project up, it does not implement anything, and it creates no branches or pull requests.
|
|
12
|
-
- Ask the five questions in one `question` call. Five separate prompts is five chances for the user to walk away from a setup that does nothing until it finishes.
|
|
13
|
-
- A step whose answer was No is skipped, not approximated.
|
|
14
|
-
|
|
15
|
-
## Step 1, Ask everything at once
|
|
16
|
-
|
|
17
|
-
```json
|
|
18
|
-
{
|
|
19
|
-
"questions": [
|
|
20
|
-
{
|
|
21
|
-
"header": "Type",
|
|
22
|
-
"question": "What type of project is this?",
|
|
23
|
-
"options": [
|
|
24
|
-
{ "label": "brownfield", "description": "Existing codebase. Generate docs from your code." },
|
|
25
|
-
{ "label": "greenfield", "description": "Starting from scratch, little or no existing code." }
|
|
26
|
-
]
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
"header": "History",
|
|
30
|
-
"question": "Archive project history into OpenSpec?",
|
|
31
|
-
"options": [
|
|
32
|
-
{ "label": "Yes", "description": "Scan codebase for existing docs, changelogs, decisions and archive them." },
|
|
33
|
-
{ "label": "No", "description": "Skip history archival." }
|
|
34
|
-
]
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
"header": "Architecture",
|
|
38
|
-
"question": "Generate ARCHITECTURE.md from the codebase?",
|
|
39
|
-
"options": [
|
|
40
|
-
{ "label": "Yes", "description": "Analyze project structure and generate architecture documentation." },
|
|
41
|
-
{ "label": "No", "description": "Skip, leave as placeholder." }
|
|
42
|
-
]
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
"header": "Design",
|
|
46
|
-
"question": "Generate DESIGN.md from the design system?",
|
|
47
|
-
"options": [
|
|
48
|
-
{ "label": "Yes", "description": "Analyze Tailwind, CSS vars, tokens and generate design documentation." },
|
|
49
|
-
{ "label": "No", "description": "Skip, leave as placeholder." }
|
|
50
|
-
]
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
"header": "Evidence",
|
|
54
|
-
"question": "Record how the app starts and how a person signs in locally, so merged changes get screenshots?",
|
|
55
|
-
"options": [
|
|
56
|
-
{ "label": "Yes", "description": "Fill the project environment in pc-repo-verify: start command, URL, local sign-in, seeded data." },
|
|
57
|
-
{ "label": "No", "description": "Skip; the verification plans will look for the sign-in themselves." }
|
|
58
|
-
]
|
|
59
|
-
}
|
|
60
|
-
]
|
|
61
|
-
}
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
## Step 2, Sync skills
|
|
65
|
-
|
|
66
|
-
Always. `npx skills experimental_install --yes` in the project root installs what onboarding queued in `skills-lock.json`. A failure here is a warning, not a stop: the optional ones can be added later.
|
|
67
|
-
|
|
68
|
-
## Step 3, Archive project history
|
|
69
|
-
|
|
70
|
-
If Yes. Scan the roots in `.opencode/source-roots.json` (plus this repo's own docs and config) for documentation, changelogs, ADRs, READMEs and anything else that records how the project got here. Then:
|
|
71
|
-
|
|
72
|
-
```bash
|
|
73
|
-
openspec new change "project-history"
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
Write a `proposal.md` in it covering what the project is, the decisions already taken, the tech debt and constraints the code shows, and where things stand. Archive it immediately, with `-y` so it cannot block:
|
|
77
|
-
|
|
78
|
-
```bash
|
|
79
|
-
openspec archive "project-history" -y
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
## Step 4, Generate ARCHITECTURE.md
|
|
83
|
-
|
|
84
|
-
If Yes. Load `pc-make-architecture`.
|
|
85
|
-
|
|
86
|
-
## Step 5, Generate DESIGN.md
|
|
87
|
-
|
|
88
|
-
If Yes. Load `pc-make-design`.
|
|
89
|
-
|
|
90
|
-
## Step 6, Generate guardrails
|
|
91
|
-
|
|
92
|
-
Always. Load `pc-make-guardrails`.
|
|
93
|
-
|
|
94
|
-
## Step 7, Visual evidence
|
|
95
|
-
|
|
96
|
-
If Yes. Every change's verification plan (`pc-repo-verify`) is replayed in headless Chromium by the evidence workflow when its pull request merges, from a freshly started app with nothing in the browser. Find in the source, and confirm by reading the root `package.json`, `.env.example` and the local auth setup:
|
|
97
|
-
|
|
98
|
-
- the command that starts the whole stack with mock authentication (normally `pnpm run dev` at the root),
|
|
99
|
-
- the URL the web app answers on,
|
|
100
|
-
- the local sign-in: the exact steps and visible labels of the mock account picker or dev login,
|
|
101
|
-
- the data a fresh start seeds (accounts, records) that a journey can rely on.
|
|
102
|
-
|
|
103
|
-
Write them as the bullet list between `<!-- PC-PROJECT-ENVIRONMENT-START -->` and `<!-- PC-PROJECT-ENVIRONMENT-END -->` in `.agents/skills/pc-repo-verify/SKILL.md`, replacing the placeholder bullets. Only that slot: the rest of the file is the harness's, and an update keeps only the slot.
|
|
104
|
-
|
|
105
|
-
## Step 8, Show help
|
|
106
|
-
|
|
107
|
-
Load `pc-repo-help` and display the command reference as written.
|
|
108
|
-
|
|
109
|
-
## Step 9, Confirm
|
|
110
|
-
|
|
111
|
-
```
|
|
112
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
113
|
-
Initialization complete.
|
|
114
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
115
|
-
|
|
116
|
-
Restart OpenCode now.
|
|
117
|
-
Nothing will work correctly until you do.
|
|
118
|
-
After restarting you are ready to work.
|
|
119
|
-
```
|
|
1
|
+
---
|
|
2
|
+
name: pc-repo-initialize
|
|
3
|
+
description: "Initialize the project. Presents a single form with all setup questions, then executes selected steps. Invoked by the /init command (alias: /repo-initialize)."
|
|
4
|
+
license: MIT
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
First read `AGENTS.md`. Without the `<!-- PC-NOT-INITIALIZED -->` marker the project is already initialized: say so, and point at `/make-architecture` or `/make-design` for a refresh. With it, run the sequence below.
|
|
8
|
+
|
|
9
|
+
## Rules
|
|
10
|
+
|
|
11
|
+
- Write only to `ARCHITECTURE.md`, `DESIGN.md`, `AGENTS.md`, `openspec/` and `.agents/skills/`. Source files are read for analysis, never edited: init sets a project up, it does not implement anything, and it creates no branches or pull requests.
|
|
12
|
+
- Ask the five questions in one `question` call. Five separate prompts is five chances for the user to walk away from a setup that does nothing until it finishes.
|
|
13
|
+
- A step whose answer was No is skipped, not approximated.
|
|
14
|
+
|
|
15
|
+
## Step 1, Ask everything at once
|
|
16
|
+
|
|
17
|
+
```json
|
|
18
|
+
{
|
|
19
|
+
"questions": [
|
|
20
|
+
{
|
|
21
|
+
"header": "Type",
|
|
22
|
+
"question": "What type of project is this?",
|
|
23
|
+
"options": [
|
|
24
|
+
{ "label": "brownfield", "description": "Existing codebase. Generate docs from your code." },
|
|
25
|
+
{ "label": "greenfield", "description": "Starting from scratch, little or no existing code." }
|
|
26
|
+
]
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"header": "History",
|
|
30
|
+
"question": "Archive project history into OpenSpec?",
|
|
31
|
+
"options": [
|
|
32
|
+
{ "label": "Yes", "description": "Scan codebase for existing docs, changelogs, decisions and archive them." },
|
|
33
|
+
{ "label": "No", "description": "Skip history archival." }
|
|
34
|
+
]
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"header": "Architecture",
|
|
38
|
+
"question": "Generate ARCHITECTURE.md from the codebase?",
|
|
39
|
+
"options": [
|
|
40
|
+
{ "label": "Yes", "description": "Analyze project structure and generate architecture documentation." },
|
|
41
|
+
{ "label": "No", "description": "Skip, leave as placeholder." }
|
|
42
|
+
]
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"header": "Design",
|
|
46
|
+
"question": "Generate DESIGN.md from the design system?",
|
|
47
|
+
"options": [
|
|
48
|
+
{ "label": "Yes", "description": "Analyze Tailwind, CSS vars, tokens and generate design documentation." },
|
|
49
|
+
{ "label": "No", "description": "Skip, leave as placeholder." }
|
|
50
|
+
]
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"header": "Evidence",
|
|
54
|
+
"question": "Record how the app starts and how a person signs in locally, so merged changes get screenshots?",
|
|
55
|
+
"options": [
|
|
56
|
+
{ "label": "Yes", "description": "Fill the project environment in pc-repo-verify: start command, URL, local sign-in, seeded data." },
|
|
57
|
+
{ "label": "No", "description": "Skip; the verification plans will look for the sign-in themselves." }
|
|
58
|
+
]
|
|
59
|
+
}
|
|
60
|
+
]
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Step 2, Sync skills
|
|
65
|
+
|
|
66
|
+
Always. `npx skills experimental_install --yes` in the project root installs what onboarding queued in `skills-lock.json`. A failure here is a warning, not a stop: the optional ones can be added later.
|
|
67
|
+
|
|
68
|
+
## Step 3, Archive project history
|
|
69
|
+
|
|
70
|
+
If Yes. Scan the roots in `.opencode/source-roots.json` (plus this repo's own docs and config) for documentation, changelogs, ADRs, READMEs and anything else that records how the project got here. Then:
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
openspec new change "project-history"
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Write a `proposal.md` in it covering what the project is, the decisions already taken, the tech debt and constraints the code shows, and where things stand. Archive it immediately, with `-y` so it cannot block:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
openspec archive "project-history" -y
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Step 4, Generate ARCHITECTURE.md
|
|
83
|
+
|
|
84
|
+
If Yes. Load `pc-make-architecture`.
|
|
85
|
+
|
|
86
|
+
## Step 5, Generate DESIGN.md
|
|
87
|
+
|
|
88
|
+
If Yes. Load `pc-make-design`.
|
|
89
|
+
|
|
90
|
+
## Step 6, Generate guardrails
|
|
91
|
+
|
|
92
|
+
Always. Load `pc-make-guardrails`.
|
|
93
|
+
|
|
94
|
+
## Step 7, Visual evidence
|
|
95
|
+
|
|
96
|
+
If Yes. Every change's verification plan (`pc-repo-verify`) is replayed in headless Chromium by the evidence workflow when its pull request merges, from a freshly started app with nothing in the browser. Find in the source, and confirm by reading the root `package.json`, `.env.example` and the local auth setup:
|
|
97
|
+
|
|
98
|
+
- the command that starts the whole stack with mock authentication (normally `pnpm run dev` at the root),
|
|
99
|
+
- the URL the web app answers on,
|
|
100
|
+
- the local sign-in: the exact steps and visible labels of the mock account picker or dev login,
|
|
101
|
+
- the data a fresh start seeds (accounts, records) that a journey can rely on.
|
|
102
|
+
|
|
103
|
+
Write them as the bullet list between `<!-- PC-PROJECT-ENVIRONMENT-START -->` and `<!-- PC-PROJECT-ENVIRONMENT-END -->` in `.agents/skills/pc-repo-verify/SKILL.md`, replacing the placeholder bullets. Only that slot: the rest of the file is the harness's, and an update keeps only the slot.
|
|
104
|
+
|
|
105
|
+
## Step 8, Show help
|
|
106
|
+
|
|
107
|
+
Load `pc-repo-help` and display the command reference as written.
|
|
108
|
+
|
|
109
|
+
## Step 9, Confirm
|
|
110
|
+
|
|
111
|
+
```
|
|
112
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
113
|
+
Initialization complete.
|
|
114
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
115
|
+
|
|
116
|
+
Restart OpenCode now.
|
|
117
|
+
Nothing will work correctly until you do.
|
|
118
|
+
After restarting you are ready to work.
|
|
119
|
+
```
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: pc-repo-onboard
|
|
3
|
-
description: Walk the user through the project and its agentic infrastructure. Explains what exists, how agents work, and how to use the system. Invoked by the /repo-onboard command.
|
|
4
|
-
license: MIT
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
A guided tour of this repository and the harness installed in it, for somebody who has just arrived. Read and explain; change nothing.
|
|
8
|
-
|
|
9
|
-
## Rules
|
|
10
|
-
|
|
11
|
-
- Never write, edit, or create a file, and never run a command from the tour to demonstrate it. The output is the explanation.
|
|
12
|
-
- Never describe an agent, command, skill or setting that is not in this repository. The tour is worth having because it is specific: read `.opencode/agents/`, `.opencode/commands/`, `.agents/skills/`, `.opencode/harness.json`, `AGENTS.md`, `ARCHITECTURE.md` and `DESIGN.md` and report what is actually there.
|
|
13
|
-
|
|
14
|
-
## Cover, in this order
|
|
15
|
-
|
|
16
|
-
1. **The project.** Three to five bullets: what it is, the stack, the directories that matter.
|
|
17
|
-
2. **The agents.** One table row per file in `.opencode/agents/`, with its tier and purpose. Then the selection model: `build` and `plan` are the only two a human picks and both run the `fullstack-engineer` body, `plan` can neither edit nor spawn, everything else is `mode: subagent` and reached through `task()`, and a missing specialist is made with `/make-engineer`.
|
|
18
|
-
3. **The commands**, grouped by what they are for:
|
|
19
|
-
|
|
20
|
-
| Group | Commands |
|
|
21
|
-
|---|---|
|
|
22
|
-
| Planning | `/plan-explore`, `/plan-story`, `/plan-propose`, `/plan-quick`, `/plan-goal` |
|
|
23
|
-
| Implementation | `/plan-apply`, `/plan-archive` |
|
|
24
|
-
| Maintenance | `/make-architecture`, `/make-design`, `/make-engineer`, `/make-guardrails` |
|
|
25
|
-
| Shipping | `/ops-ship`, `/ops-review`, `/ops-backlog` |
|
|
26
|
-
| Quality | `/repo-audit` (read-only), `/repo-verify` (writes the verification plan) |
|
|
27
|
-
| Setup | `/init`, `/make-user-model`, `/repo-help` |
|
|
28
|
-
|
|
29
|
-
4. **The skills** installed in `.agents/skills/`, one line each, marking which are platform-specific.
|
|
30
|
-
5. **The OpenSpec lifecycle**: explore, propose, apply, archive, and what `openspec/config.yaml` controls.
|
|
31
|
-
6. **The configuration** in `.opencode/harness.json`: what each section governs, that `/make-user-model` changes a tier's model, and what `agents.maxConcurrent` caps.
|
|
32
|
-
7. **Where to start.** `/plan-goal` with a description of the work, `/repo-help` for everything else, and `npx @plainconceptsplatform/agent-harness` to refresh the harness after changing config.
|
|
1
|
+
---
|
|
2
|
+
name: pc-repo-onboard
|
|
3
|
+
description: Walk the user through the project and its agentic infrastructure. Explains what exists, how agents work, and how to use the system. Invoked by the /repo-onboard command.
|
|
4
|
+
license: MIT
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
A guided tour of this repository and the harness installed in it, for somebody who has just arrived. Read and explain; change nothing.
|
|
8
|
+
|
|
9
|
+
## Rules
|
|
10
|
+
|
|
11
|
+
- Never write, edit, or create a file, and never run a command from the tour to demonstrate it. The output is the explanation.
|
|
12
|
+
- Never describe an agent, command, skill or setting that is not in this repository. The tour is worth having because it is specific: read `.opencode/agents/`, `.opencode/commands/`, `.agents/skills/`, `.opencode/harness.json`, `AGENTS.md`, `ARCHITECTURE.md` and `DESIGN.md` and report what is actually there.
|
|
13
|
+
|
|
14
|
+
## Cover, in this order
|
|
15
|
+
|
|
16
|
+
1. **The project.** Three to five bullets: what it is, the stack, the directories that matter.
|
|
17
|
+
2. **The agents.** One table row per file in `.opencode/agents/`, with its tier and purpose. Then the selection model: `build` and `plan` are the only two a human picks and both run the `fullstack-engineer` body, `plan` can neither edit nor spawn, everything else is `mode: subagent` and reached through `task()`, and a missing specialist is made with `/make-engineer`.
|
|
18
|
+
3. **The commands**, grouped by what they are for:
|
|
19
|
+
|
|
20
|
+
| Group | Commands |
|
|
21
|
+
|---|---|
|
|
22
|
+
| Planning | `/plan-explore`, `/plan-story`, `/plan-propose`, `/plan-quick`, `/plan-goal` |
|
|
23
|
+
| Implementation | `/plan-apply`, `/plan-archive` |
|
|
24
|
+
| Maintenance | `/make-architecture`, `/make-design`, `/make-engineer`, `/make-guardrails` |
|
|
25
|
+
| Shipping | `/ops-ship`, `/ops-review`, `/ops-backlog` |
|
|
26
|
+
| Quality | `/repo-audit` (read-only), `/repo-verify` (writes the verification plan) |
|
|
27
|
+
| Setup | `/init`, `/make-user-model`, `/repo-help` |
|
|
28
|
+
|
|
29
|
+
4. **The skills** installed in `.agents/skills/`, one line each, marking which are platform-specific.
|
|
30
|
+
5. **The OpenSpec lifecycle**: explore, propose, apply, archive, and what `openspec/config.yaml` controls.
|
|
31
|
+
6. **The configuration** in `.opencode/harness.json`: what each section governs, that `/make-user-model` changes a tier's model, and what `agents.maxConcurrent` caps.
|
|
32
|
+
7. **Where to start.** `/plan-goal` with a description of the work, `/repo-help` for everything else, and `npx @plainconceptsplatform/agent-harness` to refresh the harness after changing config.
|
|
@@ -1,71 +1,71 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: pc-userstory
|
|
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
|
-
Turn an Azure DevOps work item URL into an OpenSpec change, then hand the change to `pc-plan-propose`.
|
|
12
|
-
|
|
13
|
-
## Rules
|
|
14
|
-
|
|
15
|
-
- Work item data comes from `az`, never from a page fetch or a browser (denied by `pc-system-reminders`). An `az` that cannot reach the org is a blocker to report.
|
|
16
|
-
- Never load `pc-plan-apply` until the user has said yes.
|
|
17
|
-
|
|
18
|
-
## Contracts
|
|
19
|
-
|
|
20
|
-
The ID is in the URL: `?workitem=193208` or `/workitems/edit/193208` both give `193208`.
|
|
21
|
-
|
|
22
|
-
```bash
|
|
23
|
-
az boards work-item show --id 193208
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
That relies on the configured defaults, which is the one piece of setup this skill needs:
|
|
27
|
-
|
|
28
|
-
```bash
|
|
29
|
-
az devops configure --defaults organization=https://dev.azure.com/{org} project={project}
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
Without them every command needs `--organization`. A PAT with Work Items (Read and Write) and Code (Read and Write) comes from `https://dev.azure.com/{org}/_usersSettings/tokens`.
|
|
33
|
-
|
|
34
|
-
From the JSON take `fields.System.Title`, `fields.System.Description` (often HTML, strip the tags), `fields.System.WorkItemType`, `fields.System.IterationPath`, `fields.System.State` and `fields.System.AcceptanceCriteria` when it is there.
|
|
35
|
-
|
|
36
|
-
```bash
|
|
37
|
-
openspec new change "us-{id}-{slug}"
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
Screenshots live in the change folder, `openspec/changes/{change-name}/images/{name}.png`. Embedding one uses the `_apis/git/repositories` URL, since `_git/` returns HTML: `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`
|
|
41
|
-
|
|
42
|
-
Report:
|
|
43
|
-
|
|
44
|
-
```
|
|
45
|
-
## User Story Parsed
|
|
46
|
-
|
|
47
|
-
Work Item: #{id}
|
|
48
|
-
Title: {title}
|
|
49
|
-
Type: User Story
|
|
50
|
-
Iteration: {sprint}
|
|
51
|
-
State: {state}
|
|
52
|
-
|
|
53
|
-
Change Created: us-{id}-{slug}
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
Then load `pc-plan-propose` (interactive) and, once it returns, ask:
|
|
57
|
-
|
|
58
|
-
```json
|
|
59
|
-
{
|
|
60
|
-
"questions": [
|
|
61
|
-
{
|
|
62
|
-
"header": "Ready to implement",
|
|
63
|
-
"question": "Ready to implement?",
|
|
64
|
-
"options": [
|
|
65
|
-
{ "label": "yes", "description": "Load the pc-plan-apply skill to start implementation." },
|
|
66
|
-
{ "label": "no", "description": "Stop here. You can run /plan-apply later." }
|
|
67
|
-
]
|
|
68
|
-
}
|
|
69
|
-
]
|
|
70
|
-
}
|
|
71
|
-
```
|
|
1
|
+
---
|
|
2
|
+
name: pc-userstory
|
|
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
|
+
Turn an Azure DevOps work item URL into an OpenSpec change, then hand the change to `pc-plan-propose`.
|
|
12
|
+
|
|
13
|
+
## Rules
|
|
14
|
+
|
|
15
|
+
- Work item data comes from `az`, never from a page fetch or a browser (denied by `pc-system-reminders`). An `az` that cannot reach the org is a blocker to report.
|
|
16
|
+
- Never load `pc-plan-apply` until the user has said yes.
|
|
17
|
+
|
|
18
|
+
## Contracts
|
|
19
|
+
|
|
20
|
+
The ID is in the URL: `?workitem=193208` or `/workitems/edit/193208` both give `193208`.
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
az boards work-item show --id 193208
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
That relies on the configured defaults, which is the one piece of setup this skill needs:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
az devops configure --defaults organization=https://dev.azure.com/{org} project={project}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Without them every command needs `--organization`. A PAT with Work Items (Read and Write) and Code (Read and Write) comes from `https://dev.azure.com/{org}/_usersSettings/tokens`.
|
|
33
|
+
|
|
34
|
+
From the JSON take `fields.System.Title`, `fields.System.Description` (often HTML, strip the tags), `fields.System.WorkItemType`, `fields.System.IterationPath`, `fields.System.State` and `fields.System.AcceptanceCriteria` when it is there.
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
openspec new change "us-{id}-{slug}"
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Screenshots live in the change folder, `openspec/changes/{change-name}/images/{name}.png`. Embedding one uses the `_apis/git/repositories` URL, since `_git/` returns HTML: `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`
|
|
41
|
+
|
|
42
|
+
Report:
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
## User Story Parsed
|
|
46
|
+
|
|
47
|
+
Work Item: #{id}
|
|
48
|
+
Title: {title}
|
|
49
|
+
Type: User Story
|
|
50
|
+
Iteration: {sprint}
|
|
51
|
+
State: {state}
|
|
52
|
+
|
|
53
|
+
Change Created: us-{id}-{slug}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Then load `pc-plan-propose` (interactive) and, once it returns, ask:
|
|
57
|
+
|
|
58
|
+
```json
|
|
59
|
+
{
|
|
60
|
+
"questions": [
|
|
61
|
+
{
|
|
62
|
+
"header": "Ready to implement",
|
|
63
|
+
"question": "Ready to implement?",
|
|
64
|
+
"options": [
|
|
65
|
+
{ "label": "yes", "description": "Load the pc-plan-apply skill to start implementation." },
|
|
66
|
+
{ "label": "no", "description": "Stop here. You can run /plan-apply later." }
|
|
67
|
+
]
|
|
68
|
+
}
|
|
69
|
+
]
|
|
70
|
+
}
|
|
71
|
+
```
|
|
@@ -1,64 +1,64 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: pc-userstory
|
|
3
|
-
description: Parse work item from any URL using browser automation. Use when user provides a URL that doesn't match GitHub/Azure/Jira CLI platforms, or when backlog platform is 'browser'.
|
|
4
|
-
license: MIT
|
|
5
|
-
compatibility: Requires agent-browser CLI installed and openspec CLI.
|
|
6
|
-
metadata:
|
|
7
|
-
author: copilots
|
|
8
|
-
version: "2.0"
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
Read a work item off its own web page, for a backlog with no CLI, then hand the change to `pc-plan-propose`. This is the fallback: a GitHub, Azure DevOps or Jira URL belongs to the CLI skill for that platform, which is faster and cannot misread a page.
|
|
12
|
-
|
|
13
|
-
Browser is a backlog-only platform. Shipping runs on whichever repo platform the project configured.
|
|
14
|
-
|
|
15
|
-
## Rules
|
|
16
|
-
|
|
17
|
-
- Navigate only to a URL the user gave you. This skill is the one exception to `browser-automation`'s ban on leaving localhost, and it is that narrow on purpose: a work-item page is behind the user's own login, and anything else reachable from it is too.
|
|
18
|
-
- Read only. No clicking, no status changes, nothing written back to the tracker.
|
|
19
|
-
- Always reuse the `backlog` session so the login survives; a login page instead of the work item means the session is not authenticated, and the user has to log in manually in the opened window before a retry.
|
|
20
|
-
|
|
21
|
-
## Contracts
|
|
22
|
-
|
|
23
|
-
`agent-browser` runs its own Chrome, not the user's daily browser, and keeps state per session:
|
|
24
|
-
|
|
25
|
-
```bash
|
|
26
|
-
agent-browser --session backlog --restore open "https://the-url-the-user-provided"
|
|
27
|
-
agent-browser wait --load networkidle
|
|
28
|
-
agent-browser snapshot
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
`agent-browser doctor` verifies the install. The accessibility tree from `snapshot` locates fields more reliably than page text; `agent-browser read` and `agent-browser get text "h1"` fill the gaps, and `agent-browser get url` confirms the page did not navigate away. A single-page app that renders after idle needs a second wait (`--text "<known heading>"` when a stable string exists) and a fresh snapshot, not a sleep.
|
|
32
|
-
|
|
33
|
-
Take the title, description with its acceptance criteria or definition of done, the ID from the URL or the page, and status, assignee, priority and labels when they are visible. Where to look, by tool:
|
|
34
|
-
|
|
35
|
-
| Tool | Work item URL | Title | Description |
|
|
36
|
-
|---|---|---|---|
|
|
37
|
-
| Azure DevOps | `/_workitems/edit/{id}` | header | "Description" and "Acceptance Criteria" sections |
|
|
38
|
-
| Linear | `/{team}/issue/{key}` | issue title | issue body |
|
|
39
|
-
| Jira | `/browse/{key}` | summary | description field |
|
|
40
|
-
| Trello | `/c/{short-id}` | card title | card description |
|
|
41
|
-
| Anything else | as given | `<h1>` or page title | main content area |
|
|
42
|
-
|
|
43
|
-
Then create the change, whose `proposal.md` names the source URL and the work item ID:
|
|
44
|
-
|
|
45
|
-
```bash
|
|
46
|
-
openspec new change "{slug-from-title}"
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
Load `pc-plan-propose` (interactive) and, once it returns, ask:
|
|
50
|
-
|
|
51
|
-
```json
|
|
52
|
-
{
|
|
53
|
-
"questions": [
|
|
54
|
-
{
|
|
55
|
-
"header": "Ready to implement",
|
|
56
|
-
"question": "Ready to implement?",
|
|
57
|
-
"options": [
|
|
58
|
-
{ "label": "yes", "description": "Load the pc-plan-apply skill to start implementation." },
|
|
59
|
-
{ "label": "no", "description": "Stop here. You can run /plan-apply later." }
|
|
60
|
-
]
|
|
61
|
-
}
|
|
62
|
-
]
|
|
63
|
-
}
|
|
64
|
-
```
|
|
1
|
+
---
|
|
2
|
+
name: pc-userstory
|
|
3
|
+
description: Parse work item from any URL using browser automation. Use when user provides a URL that doesn't match GitHub/Azure/Jira CLI platforms, or when backlog platform is 'browser'.
|
|
4
|
+
license: MIT
|
|
5
|
+
compatibility: Requires agent-browser CLI installed and openspec CLI.
|
|
6
|
+
metadata:
|
|
7
|
+
author: copilots
|
|
8
|
+
version: "2.0"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
Read a work item off its own web page, for a backlog with no CLI, then hand the change to `pc-plan-propose`. This is the fallback: a GitHub, Azure DevOps or Jira URL belongs to the CLI skill for that platform, which is faster and cannot misread a page.
|
|
12
|
+
|
|
13
|
+
Browser is a backlog-only platform. Shipping runs on whichever repo platform the project configured.
|
|
14
|
+
|
|
15
|
+
## Rules
|
|
16
|
+
|
|
17
|
+
- Navigate only to a URL the user gave you. This skill is the one exception to `browser-automation`'s ban on leaving localhost, and it is that narrow on purpose: a work-item page is behind the user's own login, and anything else reachable from it is too.
|
|
18
|
+
- Read only. No clicking, no status changes, nothing written back to the tracker.
|
|
19
|
+
- Always reuse the `backlog` session so the login survives; a login page instead of the work item means the session is not authenticated, and the user has to log in manually in the opened window before a retry.
|
|
20
|
+
|
|
21
|
+
## Contracts
|
|
22
|
+
|
|
23
|
+
`agent-browser` runs its own Chrome, not the user's daily browser, and keeps state per session:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
agent-browser --session backlog --restore open "https://the-url-the-user-provided"
|
|
27
|
+
agent-browser wait --load networkidle
|
|
28
|
+
agent-browser snapshot
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
`agent-browser doctor` verifies the install. The accessibility tree from `snapshot` locates fields more reliably than page text; `agent-browser read` and `agent-browser get text "h1"` fill the gaps, and `agent-browser get url` confirms the page did not navigate away. A single-page app that renders after idle needs a second wait (`--text "<known heading>"` when a stable string exists) and a fresh snapshot, not a sleep.
|
|
32
|
+
|
|
33
|
+
Take the title, description with its acceptance criteria or definition of done, the ID from the URL or the page, and status, assignee, priority and labels when they are visible. Where to look, by tool:
|
|
34
|
+
|
|
35
|
+
| Tool | Work item URL | Title | Description |
|
|
36
|
+
|---|---|---|---|
|
|
37
|
+
| Azure DevOps | `/_workitems/edit/{id}` | header | "Description" and "Acceptance Criteria" sections |
|
|
38
|
+
| Linear | `/{team}/issue/{key}` | issue title | issue body |
|
|
39
|
+
| Jira | `/browse/{key}` | summary | description field |
|
|
40
|
+
| Trello | `/c/{short-id}` | card title | card description |
|
|
41
|
+
| Anything else | as given | `<h1>` or page title | main content area |
|
|
42
|
+
|
|
43
|
+
Then create the change, whose `proposal.md` names the source URL and the work item ID:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
openspec new change "{slug-from-title}"
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Load `pc-plan-propose` (interactive) and, once it returns, ask:
|
|
50
|
+
|
|
51
|
+
```json
|
|
52
|
+
{
|
|
53
|
+
"questions": [
|
|
54
|
+
{
|
|
55
|
+
"header": "Ready to implement",
|
|
56
|
+
"question": "Ready to implement?",
|
|
57
|
+
"options": [
|
|
58
|
+
{ "label": "yes", "description": "Load the pc-plan-apply skill to start implementation." },
|
|
59
|
+
{ "label": "no", "description": "Stop here. You can run /plan-apply later." }
|
|
60
|
+
]
|
|
61
|
+
}
|
|
62
|
+
]
|
|
63
|
+
}
|
|
64
|
+
```
|