@plainconceptsplatform/agent-harness 3.5.0 → 3.7.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/LICENSE +21 -21
- package/README.md +471 -454
- package/cli/commands/join.js +259 -259
- package/cli/commands/migrate.js +310 -310
- package/cli/commands/shared.js +27 -27
- package/cli/commands/single.js +79 -79
- package/cli/commands/update.js +121 -121
- package/cli/commands/wizard.js +134 -134
- 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-backlog/az.md +28 -28
- package/cli/fragments/ops-backlog/gh.md +28 -28
- package/cli/fragments/ops-backlog/jira.md +28 -28
- package/cli/fragments/ops-review/az.md +62 -62
- package/cli/fragments/ops-review/gh.md +51 -51
- package/cli/fragments/ops-review/gl.md +55 -55
- package/cli/fragments/ops-ship/az.md +81 -81
- package/cli/fragments/ops-ship/gh.md +67 -67
- package/cli/fragments/ops-ship/gl.md +84 -84
- package/cli/index.js +116 -116
- package/cli/presets/agents-content.json +34 -34
- package/cli/presets/browser.json +10 -10
- package/cli/presets/clean.json +21 -21
- package/cli/presets/models.json +68 -68
- package/cli/presets/optimization.json +32 -32
- package/cli/presets/platforms.json +76 -76
- package/cli/presets/source.json +23 -23
- package/cli/steps/browser/index.js +48 -48
- package/cli/steps/clean/index.js +120 -120
- package/cli/steps/copy/agents.js +120 -120
- package/cli/steps/copy/commands.js +79 -79
- package/cli/steps/copy/fullstack-engineer.js +89 -89
- package/cli/steps/copy/index.js +88 -88
- package/cli/steps/copy/opencode-json.js +324 -324
- package/cli/steps/copy/skills.js +316 -316
- package/cli/steps/metadata/index.js +115 -115
- package/cli/steps/models/format.js +88 -88
- package/cli/steps/models/index.js +64 -64
- package/cli/steps/models/write.js +38 -38
- package/cli/steps/openspec/index.js +136 -136
- package/cli/steps/optimization/codegraph.js +141 -141
- package/cli/steps/optimization/detect.js +66 -66
- package/cli/steps/optimization/humanizer.js +17 -17
- package/cli/steps/optimization/index.js +158 -158
- package/cli/steps/optimization/memory.js +91 -91
- package/cli/steps/optimization/patch-guardrails.js +111 -111
- package/cli/steps/optimization/simple-english.js +17 -17
- package/cli/steps/optimization/skills-lock.js +30 -30
- package/cli/steps/platform/index.js +109 -109
- package/cli/steps/source/index.js +123 -123
- package/cli/utils/agent-color.js +111 -111
- package/cli/utils/copy.js +134 -134
- package/cli/utils/exec-spinner.js +47 -47
- package/cli/utils/exec.js +134 -134
- package/cli/utils/legacy-check.js +30 -30
- package/cli/utils/models-cache.js +58 -58
- package/cli/utils/models-pricing.js +42 -42
- package/cli/utils/paths.js +81 -81
- package/cli/utils/process.js +3 -3
- package/cli/utils/terminal.js +6 -6
- package/cli/utils/update-manifest.js +75 -75
- package/harness/.opencode/_gitignore +10 -10
- 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/ops-backlog.md +10 -10
- package/harness/.opencode/commands/ops-review.md +10 -10
- package/harness/.opencode/commands/ops-ship.md +9 -9
- package/harness/.opencode/commands/plan-apply.md +9 -9
- package/harness/.opencode/commands/plan-archive.md +7 -7
- package/harness/.opencode/commands/plan-explore.md +11 -11
- package/harness/.opencode/commands/plan-goal.md +5 -5
- package/harness/.opencode/commands/plan-propose.md +11 -11
- package/harness/.opencode/commands/plan-quick.md +7 -7
- package/harness/.opencode/commands/plan-story.md +11 -11
- package/harness/.opencode/commands/repo-audit.md +7 -7
- package/harness/.opencode/commands/repo-help.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/package.json +5 -5
- package/harness/.opencode/plugins/pc-commit-coauthor.js +41 -0
- package/harness/.opencode/plugins/pc-subagent-monitor.js +184 -184
- package/harness/.opencode/plugins/pc-subagent-tiers.js +367 -367
- package/harness/.opencode/plugins/pc-system-reminders.js +404 -386
- package/harness/.opencode/scripts/check-diff.mjs +279 -252
- package/harness/.opencode/scripts/code-rules.mjs +288 -288
- package/harness/.opencode/scripts/platform-manifest.mjs +112 -0
- package/harness/AGENTS.md +49 -49
- package/harness/ARCHITECTURE.md +13 -13
- package/harness/DESIGN.md +13 -13
- package/harness/opencode.jsonc +36 -36
- package/harness/openspec/config.yaml +20 -20
- package/harness/skills-lock.json +17 -17
- package/package.json +14 -12
- package/skills/README.md +18 -18
- package/skills/agent-harness-cli/SKILL.md +86 -86
- package/skills/browser-automation/SKILL.md +72 -72
- package/skills/pc-guardrails-generic/SKILL.md +53 -53
- package/skills/pc-guardrails-project/SKILL.md +8 -8
- package/skills/pc-make-architecture/SKILL.md +33 -32
- package/skills/pc-make-architecture/structure-template.md +64 -64
- package/skills/pc-make-design/SKILL.md +45 -45
- package/skills/pc-make-engineer/SKILL.md +59 -59
- package/skills/pc-make-engineer/signal-mapping.md +53 -53
- package/skills/pc-make-engineer/template.md +36 -36
- package/skills/pc-make-guardrails/SKILL.md +44 -44
- package/skills/pc-make-guardrails/category-reference.md +112 -112
- package/skills/pc-make-merge-risk-assess/SKILL.md +70 -70
- package/skills/pc-make-merge-risk-assess/category-reference.md +114 -114
- package/skills/pc-make-user-model/SKILL.md +56 -56
- package/skills/pc-ops-ship/SKILL.md +22 -22
- package/skills/pc-plan-apply/SKILL.md +88 -88
- package/skills/pc-plan-apply/simple-mode.md +21 -21
- package/skills/pc-plan-archive/SKILL.md +66 -66
- package/skills/pc-plan-explore/SKILL.md +21 -21
- package/skills/pc-plan-goal/SKILL.md +91 -91
- package/skills/pc-plan-goal/branching.md +39 -39
- package/skills/pc-plan-goal/failure-policy.md +30 -30
- package/skills/pc-plan-goal/output-mode.md +10 -10
- package/skills/pc-plan-goal/output.md +71 -71
- package/skills/pc-plan-propose/SKILL.md +125 -125
- package/skills/pc-plan-propose/task-annotation.md +39 -39
- package/skills/pc-plan-quick/SKILL.md +46 -46
- package/skills/pc-plan-story/SKILL.md +93 -93
- package/skills/pc-repo-audit/SKILL.md +44 -44
- package/skills/pc-repo-help/SKILL.md +87 -87
- package/skills/pc-repo-initialize/SKILL.md +119 -119
- package/skills/pc-repo-onboard/SKILL.md +32 -32
- package/skills/pc-repo-verify/SKILL.md +150 -150
- 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,63 +1,63 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: pc-userstory
|
|
3
|
-
description: Parse GitHub Issue URL and create OpenSpec change. Use when user provides a GitHub Issue URL.
|
|
4
|
-
license: MIT
|
|
5
|
-
compatibility: Requires openspec CLI and gh CLI.
|
|
6
|
-
metadata:
|
|
7
|
-
author: copilots
|
|
8
|
-
version: "1.1"
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
Turn a GitHub Issue URL into an OpenSpec change, then hand the change to `pc-plan-propose`.
|
|
12
|
-
|
|
13
|
-
## Rules
|
|
14
|
-
|
|
15
|
-
- Issue data comes from `gh`, never from a page fetch (denied by `pc-system-reminders`). An unavailable or unauthenticated `gh` is a blocker to report: `gh auth status` says which.
|
|
16
|
-
- Always pass `--repo {owner}/{repo}`. Git context resolves to the wrong repository in a fork or a worktree, and the failure looks like a missing issue.
|
|
17
|
-
- Never load `pc-plan-apply` until the user has said yes.
|
|
18
|
-
|
|
19
|
-
## Contracts
|
|
20
|
-
|
|
21
|
-
`https://github.com/{owner}/{repo}/issues/42` gives owner, repo and number `42`.
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
gh issue view 42 --repo {owner}/{repo} --json number,title,body,labels,milestone,state
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
An auth error or a 404 here is the blocker; do not work around it. From the JSON take `number`, `title`, `body` (description and acceptance criteria), `labels`, `milestone` and `state`.
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
openspec new change "gh-{number}-{slug}"
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
Screenshots live in the change folder, `openspec/changes/{change-name}/images/{name}.png`, and embed as a blob URL pinned to a commit SHA with `?raw=true`: `https://github.com/{owner}/{repo}/blob/{sha}/openspec/changes/{change}/images/{file}.png?raw=true`.
|
|
34
|
-
|
|
35
|
-
Report:
|
|
36
|
-
|
|
37
|
-
```
|
|
38
|
-
## Issue Parsed
|
|
39
|
-
|
|
40
|
-
Issue: #{number}
|
|
41
|
-
Title: {title}
|
|
42
|
-
State: {state}
|
|
43
|
-
Milestone: {milestone}
|
|
44
|
-
|
|
45
|
-
Change Created: gh-{number}-{slug}
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
Then load `pc-plan-propose` (interactive) and, once it returns, ask:
|
|
49
|
-
|
|
50
|
-
```json
|
|
51
|
-
{
|
|
52
|
-
"questions": [
|
|
53
|
-
{
|
|
54
|
-
"header": "Ready to implement",
|
|
55
|
-
"question": "Ready to implement?",
|
|
56
|
-
"options": [
|
|
57
|
-
{ "label": "yes", "description": "Load the pc-plan-apply skill to start implementation." },
|
|
58
|
-
{ "label": "no", "description": "Stop here. You can run /plan-apply later." }
|
|
59
|
-
]
|
|
60
|
-
}
|
|
61
|
-
]
|
|
62
|
-
}
|
|
63
|
-
```
|
|
1
|
+
---
|
|
2
|
+
name: pc-userstory
|
|
3
|
+
description: Parse GitHub Issue URL and create OpenSpec change. Use when user provides a GitHub Issue URL.
|
|
4
|
+
license: MIT
|
|
5
|
+
compatibility: Requires openspec CLI and gh CLI.
|
|
6
|
+
metadata:
|
|
7
|
+
author: copilots
|
|
8
|
+
version: "1.1"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
Turn a GitHub Issue URL into an OpenSpec change, then hand the change to `pc-plan-propose`.
|
|
12
|
+
|
|
13
|
+
## Rules
|
|
14
|
+
|
|
15
|
+
- Issue data comes from `gh`, never from a page fetch (denied by `pc-system-reminders`). An unavailable or unauthenticated `gh` is a blocker to report: `gh auth status` says which.
|
|
16
|
+
- Always pass `--repo {owner}/{repo}`. Git context resolves to the wrong repository in a fork or a worktree, and the failure looks like a missing issue.
|
|
17
|
+
- Never load `pc-plan-apply` until the user has said yes.
|
|
18
|
+
|
|
19
|
+
## Contracts
|
|
20
|
+
|
|
21
|
+
`https://github.com/{owner}/{repo}/issues/42` gives owner, repo and number `42`.
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
gh issue view 42 --repo {owner}/{repo} --json number,title,body,labels,milestone,state
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
An auth error or a 404 here is the blocker; do not work around it. From the JSON take `number`, `title`, `body` (description and acceptance criteria), `labels`, `milestone` and `state`.
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
openspec new change "gh-{number}-{slug}"
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Screenshots live in the change folder, `openspec/changes/{change-name}/images/{name}.png`, and embed as a blob URL pinned to a commit SHA with `?raw=true`: `https://github.com/{owner}/{repo}/blob/{sha}/openspec/changes/{change}/images/{file}.png?raw=true`.
|
|
34
|
+
|
|
35
|
+
Report:
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
## Issue Parsed
|
|
39
|
+
|
|
40
|
+
Issue: #{number}
|
|
41
|
+
Title: {title}
|
|
42
|
+
State: {state}
|
|
43
|
+
Milestone: {milestone}
|
|
44
|
+
|
|
45
|
+
Change Created: gh-{number}-{slug}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Then load `pc-plan-propose` (interactive) and, once it returns, ask:
|
|
49
|
+
|
|
50
|
+
```json
|
|
51
|
+
{
|
|
52
|
+
"questions": [
|
|
53
|
+
{
|
|
54
|
+
"header": "Ready to implement",
|
|
55
|
+
"question": "Ready to implement?",
|
|
56
|
+
"options": [
|
|
57
|
+
{ "label": "yes", "description": "Load the pc-plan-apply skill to start implementation." },
|
|
58
|
+
{ "label": "no", "description": "Stop here. You can run /plan-apply later." }
|
|
59
|
+
]
|
|
60
|
+
}
|
|
61
|
+
]
|
|
62
|
+
}
|
|
63
|
+
```
|
|
@@ -1,74 +1,74 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: pc-userstory
|
|
3
|
-
description: Parse a Jira work item and create an OpenSpec change. Use when the user provides a Jira URL or a bare issue key (e.g. PROJ-123).
|
|
4
|
-
license: MIT
|
|
5
|
-
compatibility: Requires openspec CLI and Atlassian CLI (acli).
|
|
6
|
-
metadata:
|
|
7
|
-
author: copilots
|
|
8
|
-
version: "1.0"
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
Turn a Jira issue into an OpenSpec change, then hand the change to `pc-plan-propose`. Jira is backlog-only: it has no repositories and no pull requests, so shipping runs on whichever repo platform the project configured.
|
|
12
|
-
|
|
13
|
-
## Rules
|
|
14
|
-
|
|
15
|
-
- Issue data comes from `acli`, never from a page fetch or a browser (denied by `pc-system-reminders`). An `acli` that cannot authenticate is a blocker to report; install and login are documented at https://developer.atlassian.com/cloud/acli/guides/install-acli/.
|
|
16
|
-
- Never transition the work item without asking, and never transition one that is not in `To Do` or `Backlog`. Moving somebody's ticket is visible to their whole team.
|
|
17
|
-
- In an unattended run, skip the question and the transition rather than resolving it yes.
|
|
18
|
-
- Never load `pc-plan-apply` until the user has said yes.
|
|
19
|
-
|
|
20
|
-
## Contracts
|
|
21
|
-
|
|
22
|
-
The key is `PROJ-123`, taken from `/browse/PROJ-123`, `/jira/core/projects/PROJ/issues/PROJ-123`, `?selectedIssue=PROJ-123`, or given bare.
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
acli jira workitem view --key "PROJ-123"
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
From the output take the summary (title), the description (context), acceptance criteria wherever they live (spec requirements), labels, status, assignee and priority.
|
|
29
|
-
|
|
30
|
-
```bash
|
|
31
|
-
acli jira workitem transition --key "PROJ-123" --status "In Progress"
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
Ask before that one:
|
|
35
|
-
|
|
36
|
-
```json
|
|
37
|
-
{
|
|
38
|
-
"questions": [
|
|
39
|
-
{
|
|
40
|
-
"header": "Transition work item",
|
|
41
|
-
"question": "Move {KEY} to In Progress?",
|
|
42
|
-
"options": [
|
|
43
|
-
{ "label": "yes", "description": "Transition the work item to In Progress." },
|
|
44
|
-
{ "label": "no", "description": "Skip the transition." }
|
|
45
|
-
]
|
|
46
|
-
}
|
|
47
|
-
]
|
|
48
|
-
}
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
Then create the change, whose `proposal.md` names the Jira key and links back to it:
|
|
52
|
-
|
|
53
|
-
```bash
|
|
54
|
-
openspec new change "{slug-from-summary}"
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
Load `pc-plan-propose` (interactive) and, once it returns, ask:
|
|
58
|
-
|
|
59
|
-
```json
|
|
60
|
-
{
|
|
61
|
-
"questions": [
|
|
62
|
-
{
|
|
63
|
-
"header": "Ready to implement",
|
|
64
|
-
"question": "Ready to implement?",
|
|
65
|
-
"options": [
|
|
66
|
-
{ "label": "yes", "description": "Load the pc-plan-apply skill to start implementation." },
|
|
67
|
-
{ "label": "no", "description": "Stop here. You can run /plan-apply later." }
|
|
68
|
-
]
|
|
69
|
-
}
|
|
70
|
-
]
|
|
71
|
-
}
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
Also available: `acli jira workitem search --jql "..."` and `acli jira workitem comment create --key "PROJ-123" --body "..."`.
|
|
1
|
+
---
|
|
2
|
+
name: pc-userstory
|
|
3
|
+
description: Parse a Jira work item and create an OpenSpec change. Use when the user provides a Jira URL or a bare issue key (e.g. PROJ-123).
|
|
4
|
+
license: MIT
|
|
5
|
+
compatibility: Requires openspec CLI and Atlassian CLI (acli).
|
|
6
|
+
metadata:
|
|
7
|
+
author: copilots
|
|
8
|
+
version: "1.0"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
Turn a Jira issue into an OpenSpec change, then hand the change to `pc-plan-propose`. Jira is backlog-only: it has no repositories and no pull requests, so shipping runs on whichever repo platform the project configured.
|
|
12
|
+
|
|
13
|
+
## Rules
|
|
14
|
+
|
|
15
|
+
- Issue data comes from `acli`, never from a page fetch or a browser (denied by `pc-system-reminders`). An `acli` that cannot authenticate is a blocker to report; install and login are documented at https://developer.atlassian.com/cloud/acli/guides/install-acli/.
|
|
16
|
+
- Never transition the work item without asking, and never transition one that is not in `To Do` or `Backlog`. Moving somebody's ticket is visible to their whole team.
|
|
17
|
+
- In an unattended run, skip the question and the transition rather than resolving it yes.
|
|
18
|
+
- Never load `pc-plan-apply` until the user has said yes.
|
|
19
|
+
|
|
20
|
+
## Contracts
|
|
21
|
+
|
|
22
|
+
The key is `PROJ-123`, taken from `/browse/PROJ-123`, `/jira/core/projects/PROJ/issues/PROJ-123`, `?selectedIssue=PROJ-123`, or given bare.
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
acli jira workitem view --key "PROJ-123"
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
From the output take the summary (title), the description (context), acceptance criteria wherever they live (spec requirements), labels, status, assignee and priority.
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
acli jira workitem transition --key "PROJ-123" --status "In Progress"
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Ask before that one:
|
|
35
|
+
|
|
36
|
+
```json
|
|
37
|
+
{
|
|
38
|
+
"questions": [
|
|
39
|
+
{
|
|
40
|
+
"header": "Transition work item",
|
|
41
|
+
"question": "Move {KEY} to In Progress?",
|
|
42
|
+
"options": [
|
|
43
|
+
{ "label": "yes", "description": "Transition the work item to In Progress." },
|
|
44
|
+
{ "label": "no", "description": "Skip the transition." }
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
]
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Then create the change, whose `proposal.md` names the Jira key and links back to it:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
openspec new change "{slug-from-summary}"
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Load `pc-plan-propose` (interactive) and, once it returns, ask:
|
|
58
|
+
|
|
59
|
+
```json
|
|
60
|
+
{
|
|
61
|
+
"questions": [
|
|
62
|
+
{
|
|
63
|
+
"header": "Ready to implement",
|
|
64
|
+
"question": "Ready to implement?",
|
|
65
|
+
"options": [
|
|
66
|
+
{ "label": "yes", "description": "Load the pc-plan-apply skill to start implementation." },
|
|
67
|
+
{ "label": "no", "description": "Stop here. You can run /plan-apply later." }
|
|
68
|
+
]
|
|
69
|
+
}
|
|
70
|
+
]
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Also available: `acli jira workitem search --jql "..."` and `acli jira workitem comment create --key "PROJ-123" --body "..."`.
|