@plainconceptsplatform/agent-harness 3.5.0 → 3.6.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 +455 -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 +386 -386
- package/harness/.opencode/scripts/check-diff.mjs +252 -252
- package/harness/.opencode/scripts/code-rules.mjs +288 -288
- 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 +32 -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
package/harness/AGENTS.md
CHANGED
|
@@ -1,49 +1,49 @@
|
|
|
1
|
-
# AGENTS.md
|
|
2
|
-
|
|
3
|
-
<!-- PC-NOT-INITIALIZED -->
|
|
4
|
-
|
|
5
|
-
# Agent operating guide
|
|
6
|
-
|
|
7
|
-
The operating contract for AI agents in this repository. Agent-agnostic: OpenCode, Claude Code, Codex, Gemini and others.
|
|
8
|
-
|
|
9
|
-
## Session context
|
|
10
|
-
|
|
11
|
-
Before a non-trivial change, read `AGENTS.md` for workflow rules, `ARCHITECTURE.md` for boundaries and component interactions, `DESIGN.md` for UI and design-system work, and the active OpenSpec change or the specification covering the area you are changing.
|
|
12
|
-
|
|
13
|
-
Command aliases: OpenSpec skills may reference `/opsx-propose`, `/opsx-apply`, `/opsx-archive`, or `/opsx-explore`. Always substitute them with the `pc-plan-propose`, `pc-plan-apply`, `pc-plan-archive`, and `pc-plan-explore` skills respectively. User-facing command names are `/plan-propose`, `/plan-apply`, `/plan-archive`, and `/plan-explore`. Never mention the `opsx-` names to the user.
|
|
14
|
-
|
|
15
|
-
## Workflow ownership
|
|
16
|
-
|
|
17
|
-
<!-- PC-PLATFORM-WORKFLOW-START -->
|
|
18
|
-
<!-- PC-PLATFORM-WORKFLOW-END -->
|
|
19
|
-
|
|
20
|
-
## Planning and execution
|
|
21
|
-
|
|
22
|
-
- Never combine an unrelated refactor with the work you were asked to do. It arrives under a message that does not mention it, and the reviewer approves both.
|
|
23
|
-
- Never introduce a new convention where the repository already has one, and never guess when requirements, architecture or a security constraint are unclear. Ask.
|
|
24
|
-
|
|
25
|
-
## Engineer selection
|
|
26
|
-
|
|
27
|
-
Inspect `.opencode/agents/*.md` before spawning. Prefer the most specialized custom engineer. `build` and `plan` are the only primaries and are never spawned; `fullstack-engineer` is the body they share and the fallback worker, so prefer a specialist over it. If no specialist matches, tell the user to create one with `/make-engineer`. Spawn only engineers present in that directory.
|
|
28
|
-
|
|
29
|
-
The `pc-plan-apply` skill is authoritative for subagent waves, dependency ordering, retries, and concurrency. A spawn past `agents.maxConcurrent` is denied (`pc-subagent-monitor`); a denied spawn is not a failed task, so re-issue it in the next wave.
|
|
30
|
-
|
|
31
|
-
## Tool and repository safety
|
|
32
|
-
|
|
33
|
-
- Never expose or commit secrets, credentials, tokens, or production data.
|
|
34
|
-
- Never overwrite a generated file, or uncommitted changes you did not make. The tree may be shared with a person and another agent.
|
|
35
|
-
- Never bypass a check, weaken a test, or silence a lint rule to reach a green result. A green run that was arranged is worse than a red one, because nobody looks again.
|
|
36
|
-
- Commit, push, open a pull request, change dependencies, or touch deployment configuration only with the user's explicit approval and the repository's stated process.
|
|
37
|
-
|
|
38
|
-
## Verification and completion
|
|
39
|
-
|
|
40
|
-
- Never call a bug fixed without a test that would have caught it, where one is practical.
|
|
41
|
-
- Never leave a specification, `ARCHITECTURE.md` or `DESIGN.md` asserting something this change made false.
|
|
42
|
-
- Never end on a blocker without naming it and the decision it needs. An unattended run that stops quietly looks like one that finished.
|
|
43
|
-
|
|
44
|
-
## Skills
|
|
45
|
-
|
|
46
|
-
Skills live in `.agents/skills/`. Always installed: `@pc-guardrails-generic`, `@pc-guardrails-project`, and `@browser-automation`. An entry under `## Abilities` is not a passive reference: call the `skill` tool once per `@skill-name`, guardrails first. Editing, shell and spawning stay blocked until you have (`pc-system-reminders`), and a loaded skill can require further loads.
|
|
47
|
-
|
|
48
|
-
<!-- PC-PLATFORM-SKILLS-GUIDE-START -->
|
|
49
|
-
<!-- PC-PLATFORM-SKILLS-GUIDE-END -->
|
|
1
|
+
# AGENTS.md
|
|
2
|
+
|
|
3
|
+
<!-- PC-NOT-INITIALIZED -->
|
|
4
|
+
|
|
5
|
+
# Agent operating guide
|
|
6
|
+
|
|
7
|
+
The operating contract for AI agents in this repository. Agent-agnostic: OpenCode, Claude Code, Codex, Gemini and others.
|
|
8
|
+
|
|
9
|
+
## Session context
|
|
10
|
+
|
|
11
|
+
Before a non-trivial change, read `AGENTS.md` for workflow rules, `ARCHITECTURE.md` for boundaries and component interactions, `DESIGN.md` for UI and design-system work, and the active OpenSpec change or the specification covering the area you are changing.
|
|
12
|
+
|
|
13
|
+
Command aliases: OpenSpec skills may reference `/opsx-propose`, `/opsx-apply`, `/opsx-archive`, or `/opsx-explore`. Always substitute them with the `pc-plan-propose`, `pc-plan-apply`, `pc-plan-archive`, and `pc-plan-explore` skills respectively. User-facing command names are `/plan-propose`, `/plan-apply`, `/plan-archive`, and `/plan-explore`. Never mention the `opsx-` names to the user.
|
|
14
|
+
|
|
15
|
+
## Workflow ownership
|
|
16
|
+
|
|
17
|
+
<!-- PC-PLATFORM-WORKFLOW-START -->
|
|
18
|
+
<!-- PC-PLATFORM-WORKFLOW-END -->
|
|
19
|
+
|
|
20
|
+
## Planning and execution
|
|
21
|
+
|
|
22
|
+
- Never combine an unrelated refactor with the work you were asked to do. It arrives under a message that does not mention it, and the reviewer approves both.
|
|
23
|
+
- Never introduce a new convention where the repository already has one, and never guess when requirements, architecture or a security constraint are unclear. Ask.
|
|
24
|
+
|
|
25
|
+
## Engineer selection
|
|
26
|
+
|
|
27
|
+
Inspect `.opencode/agents/*.md` before spawning. Prefer the most specialized custom engineer. `build` and `plan` are the only primaries and are never spawned; `fullstack-engineer` is the body they share and the fallback worker, so prefer a specialist over it. If no specialist matches, tell the user to create one with `/make-engineer`. Spawn only engineers present in that directory.
|
|
28
|
+
|
|
29
|
+
The `pc-plan-apply` skill is authoritative for subagent waves, dependency ordering, retries, and concurrency. A spawn past `agents.maxConcurrent` is denied (`pc-subagent-monitor`); a denied spawn is not a failed task, so re-issue it in the next wave.
|
|
30
|
+
|
|
31
|
+
## Tool and repository safety
|
|
32
|
+
|
|
33
|
+
- Never expose or commit secrets, credentials, tokens, or production data.
|
|
34
|
+
- Never overwrite a generated file, or uncommitted changes you did not make. The tree may be shared with a person and another agent.
|
|
35
|
+
- Never bypass a check, weaken a test, or silence a lint rule to reach a green result. A green run that was arranged is worse than a red one, because nobody looks again.
|
|
36
|
+
- Commit, push, open a pull request, change dependencies, or touch deployment configuration only with the user's explicit approval and the repository's stated process.
|
|
37
|
+
|
|
38
|
+
## Verification and completion
|
|
39
|
+
|
|
40
|
+
- Never call a bug fixed without a test that would have caught it, where one is practical.
|
|
41
|
+
- Never leave a specification, `ARCHITECTURE.md` or `DESIGN.md` asserting something this change made false.
|
|
42
|
+
- Never end on a blocker without naming it and the decision it needs. An unattended run that stops quietly looks like one that finished.
|
|
43
|
+
|
|
44
|
+
## Skills
|
|
45
|
+
|
|
46
|
+
Skills live in `.agents/skills/`. Always installed: `@pc-guardrails-generic`, `@pc-guardrails-project`, and `@browser-automation`. An entry under `## Abilities` is not a passive reference: call the `skill` tool once per `@skill-name`, guardrails first. Editing, shell and spawning stay blocked until you have (`pc-system-reminders`), and a loaded skill can require further loads.
|
|
47
|
+
|
|
48
|
+
<!-- PC-PLATFORM-SKILLS-GUIDE-START -->
|
|
49
|
+
<!-- PC-PLATFORM-SKILLS-GUIDE-END -->
|
package/harness/ARCHITECTURE.md
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
> NOT GENERATED YET
|
|
2
|
-
>
|
|
3
|
-
> This file has not been populated yet. It is intentionally empty.
|
|
4
|
-
>
|
|
5
|
-
> **If this is a greenfield project** (no codebase exists yet): skip this for now. Come back and run `/make-architecture` once you have meaningful code, structure, or infrastructure in place.
|
|
6
|
-
>
|
|
7
|
-
> **If this is a brownfield project** (existing codebase): run this command now to generate the architecture documentation:
|
|
8
|
-
>
|
|
9
|
-
> ```
|
|
10
|
-
> /make-architecture
|
|
11
|
-
> ```
|
|
12
|
-
>
|
|
13
|
-
> This command analyzes your folder structure, config files, routes, data models, integrations, and build setup, then writes a complete ARCHITECTURE.md covering components, data flow, tech stack, deployment, and more. It is safe to rerun any time the architecture changes significantly.
|
|
1
|
+
> NOT GENERATED YET
|
|
2
|
+
>
|
|
3
|
+
> This file has not been populated yet. It is intentionally empty.
|
|
4
|
+
>
|
|
5
|
+
> **If this is a greenfield project** (no codebase exists yet): skip this for now. Come back and run `/make-architecture` once you have meaningful code, structure, or infrastructure in place.
|
|
6
|
+
>
|
|
7
|
+
> **If this is a brownfield project** (existing codebase): run this command now to generate the architecture documentation:
|
|
8
|
+
>
|
|
9
|
+
> ```
|
|
10
|
+
> /make-architecture
|
|
11
|
+
> ```
|
|
12
|
+
>
|
|
13
|
+
> This command analyzes your folder structure, config files, routes, data models, integrations, and build setup, then writes a complete ARCHITECTURE.md covering components, data flow, tech stack, deployment, and more. It is safe to rerun any time the architecture changes significantly.
|
package/harness/DESIGN.md
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
> NOT GENERATED YET
|
|
2
|
-
>
|
|
3
|
-
> This file has not been populated yet. It is intentionally empty.
|
|
4
|
-
>
|
|
5
|
-
> **If this is a greenfield project** (no UI exists yet): skip this for now. Come back and run `/make-design` once you have a design system, UI components, or styles in place.
|
|
6
|
-
>
|
|
7
|
-
> **If this is a brownfield project** (existing UI/styles): run this command now to generate the design documentation:
|
|
8
|
-
>
|
|
9
|
-
> ```
|
|
10
|
-
> /make-design
|
|
11
|
-
> ```
|
|
12
|
-
>
|
|
13
|
-
> This command analyzes your CSS, Tailwind config, component files, and design tokens, then writes a complete DESIGN.md with structured YAML tokens and written design intent. It is safe to rerun any time your design system changes.
|
|
1
|
+
> NOT GENERATED YET
|
|
2
|
+
>
|
|
3
|
+
> This file has not been populated yet. It is intentionally empty.
|
|
4
|
+
>
|
|
5
|
+
> **If this is a greenfield project** (no UI exists yet): skip this for now. Come back and run `/make-design` once you have a design system, UI components, or styles in place.
|
|
6
|
+
>
|
|
7
|
+
> **If this is a brownfield project** (existing UI/styles): run this command now to generate the design documentation:
|
|
8
|
+
>
|
|
9
|
+
> ```
|
|
10
|
+
> /make-design
|
|
11
|
+
> ```
|
|
12
|
+
>
|
|
13
|
+
> This command analyzes your CSS, Tailwind config, component files, and design tokens, then writes a complete DESIGN.md with structured YAML tokens and written design intent. It is safe to rerun any time your design system changes.
|
package/harness/opencode.jsonc
CHANGED
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://opencode.ai/config.json",
|
|
3
|
-
"mcp": {
|
|
4
|
-
"servers": {
|
|
5
|
-
"agent-browser": {
|
|
6
|
-
"type": "local",
|
|
7
|
-
"command": ["agent-browser", "mcp", "--tools", "core"],
|
|
8
|
-
"disabled": false
|
|
9
|
-
}
|
|
10
|
-
},
|
|
11
|
-
"timeout": {
|
|
12
|
-
"catalog": 300000,
|
|
13
|
-
"execution": 300000
|
|
14
|
-
}
|
|
15
|
-
},
|
|
16
|
-
"compaction": {
|
|
17
|
-
"auto": true,
|
|
18
|
-
"buffer": 10000
|
|
19
|
-
},
|
|
20
|
-
"permissions": [
|
|
21
|
-
{ "action": "question", "resource": "*", "effect": "allow" },
|
|
22
|
-
{ "action": "skill", "resource": "*", "effect": "allow" }
|
|
23
|
-
],
|
|
24
|
-
"skills": [".agents/skills"],
|
|
25
|
-
"default_agent": "plan",
|
|
26
|
-
"agents": {
|
|
27
|
-
"build": { "mode": "primary" },
|
|
28
|
-
"plan": {
|
|
29
|
-
"mode": "primary",
|
|
30
|
-
"permissions": [
|
|
31
|
-
{ "action": "edit", "resource": "*", "effect": "deny" },
|
|
32
|
-
{ "action": "subagent", "resource": "*", "effect": "deny" }
|
|
33
|
-
]
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://opencode.ai/config.json",
|
|
3
|
+
"mcp": {
|
|
4
|
+
"servers": {
|
|
5
|
+
"agent-browser": {
|
|
6
|
+
"type": "local",
|
|
7
|
+
"command": ["agent-browser", "mcp", "--tools", "core"],
|
|
8
|
+
"disabled": false
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
"timeout": {
|
|
12
|
+
"catalog": 300000,
|
|
13
|
+
"execution": 300000
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"compaction": {
|
|
17
|
+
"auto": true,
|
|
18
|
+
"buffer": 10000
|
|
19
|
+
},
|
|
20
|
+
"permissions": [
|
|
21
|
+
{ "action": "question", "resource": "*", "effect": "allow" },
|
|
22
|
+
{ "action": "skill", "resource": "*", "effect": "allow" }
|
|
23
|
+
],
|
|
24
|
+
"skills": [".agents/skills"],
|
|
25
|
+
"default_agent": "plan",
|
|
26
|
+
"agents": {
|
|
27
|
+
"build": { "mode": "primary" },
|
|
28
|
+
"plan": {
|
|
29
|
+
"mode": "primary",
|
|
30
|
+
"permissions": [
|
|
31
|
+
{ "action": "edit", "resource": "*", "effect": "deny" },
|
|
32
|
+
{ "action": "subagent", "resource": "*", "effect": "deny" }
|
|
33
|
+
]
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
schema: spec-driven
|
|
2
|
-
|
|
3
|
-
# Project context (optional)
|
|
4
|
-
# This is shown to AI when creating artifacts.
|
|
5
|
-
# Add your tech stack, conventions, style guides, domain knowledge, etc.
|
|
6
|
-
# Example:
|
|
7
|
-
# context: |
|
|
8
|
-
# Tech stack: TypeScript, React, Node.js
|
|
9
|
-
# We use conventional commits
|
|
10
|
-
# Domain: e-commerce platform
|
|
11
|
-
|
|
12
|
-
# Per-artifact rules (optional)
|
|
13
|
-
# Add custom rules for specific artifacts.
|
|
14
|
-
# Example:
|
|
15
|
-
# rules:
|
|
16
|
-
# proposal:
|
|
17
|
-
# - Keep proposals under 500 words
|
|
18
|
-
# - Always include a "Non-goals" section
|
|
19
|
-
# tasks:
|
|
20
|
-
# - Break tasks into chunks of max 2 hours
|
|
1
|
+
schema: spec-driven
|
|
2
|
+
|
|
3
|
+
# Project context (optional)
|
|
4
|
+
# This is shown to AI when creating artifacts.
|
|
5
|
+
# Add your tech stack, conventions, style guides, domain knowledge, etc.
|
|
6
|
+
# Example:
|
|
7
|
+
# context: |
|
|
8
|
+
# Tech stack: TypeScript, React, Node.js
|
|
9
|
+
# We use conventional commits
|
|
10
|
+
# Domain: e-commerce platform
|
|
11
|
+
|
|
12
|
+
# Per-artifact rules (optional)
|
|
13
|
+
# Add custom rules for specific artifacts.
|
|
14
|
+
# Example:
|
|
15
|
+
# rules:
|
|
16
|
+
# proposal:
|
|
17
|
+
# - Keep proposals under 500 words
|
|
18
|
+
# - Always include a "Non-goals" section
|
|
19
|
+
# tasks:
|
|
20
|
+
# - Break tasks into chunks of max 2 hours
|
package/harness/skills-lock.json
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 1,
|
|
3
|
-
"skills": {
|
|
4
|
-
"find-skills": {
|
|
5
|
-
"source": "vercel-labs/skills",
|
|
6
|
-
"sourceType": "github",
|
|
7
|
-
"skillPath": "skills/find-skills/SKILL.md",
|
|
8
|
-
"computedHash": "781bd6d3f9b19f8c9af6b53d8d0e4876d0183841b565db34ca7092ffa412d111"
|
|
9
|
-
},
|
|
10
|
-
"user-story": {
|
|
11
|
-
"source": "deanpeters/product-manager-skills",
|
|
12
|
-
"sourceType": "github",
|
|
13
|
-
"skillPath": "skills/user-story/SKILL.md",
|
|
14
|
-
"computedHash": "user-story-placeholder"
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"skills": {
|
|
4
|
+
"find-skills": {
|
|
5
|
+
"source": "vercel-labs/skills",
|
|
6
|
+
"sourceType": "github",
|
|
7
|
+
"skillPath": "skills/find-skills/SKILL.md",
|
|
8
|
+
"computedHash": "781bd6d3f9b19f8c9af6b53d8d0e4876d0183841b565db34ca7092ffa412d111"
|
|
9
|
+
},
|
|
10
|
+
"user-story": {
|
|
11
|
+
"source": "deanpeters/product-manager-skills",
|
|
12
|
+
"sourceType": "github",
|
|
13
|
+
"skillPath": "skills/user-story/SKILL.md",
|
|
14
|
+
"computedHash": "user-story-placeholder"
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plainconceptsplatform/agent-harness",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.6.0",
|
|
4
4
|
"description": "Installs the Plain Concepts Platform Harness into any codebase, and keeps it up to date. Wires OpenCode, OpenSpec, codegraph, and agentmemory into a multi-agent workflow that runs on native parallel subagents.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"opencode",
|
|
@@ -42,6 +42,7 @@
|
|
|
42
42
|
"engines": {
|
|
43
43
|
"node": ">=18"
|
|
44
44
|
},
|
|
45
|
+
"packageManager": "pnpm@11.10.0",
|
|
45
46
|
"dependencies": {
|
|
46
47
|
"@inquirer/prompts": "^7.0.0",
|
|
47
48
|
"chalk": "^5.0.0",
|
|
@@ -50,16 +51,6 @@
|
|
|
50
51
|
"jsonc-parser": "^3.3.1",
|
|
51
52
|
"ora": "^8.0.0"
|
|
52
53
|
},
|
|
53
|
-
"devDependencies": {
|
|
54
|
-
"@eslint/js": "^9.0.0",
|
|
55
|
-
"eslint": "^9.0.0",
|
|
56
|
-
"globals": "^15.0.0",
|
|
57
|
-
"markdownlint-cli2": "0.23.2",
|
|
58
|
-
"vitest": "^4.1.5"
|
|
59
|
-
},
|
|
60
|
-
"vitest": {
|
|
61
|
-
"environment": "node"
|
|
62
|
-
},
|
|
63
54
|
"scripts": {
|
|
64
55
|
"lint": "eslint .",
|
|
65
56
|
"lint:fix": "eslint . --fix",
|
|
@@ -67,7 +58,18 @@
|
|
|
67
58
|
"lint:md:fix": "markdownlint-cli2 --fix \"**/*.md\"",
|
|
68
59
|
"test": "vitest run",
|
|
69
60
|
"test:watch": "vitest",
|
|
61
|
+
"prepublishOnly": "npm run lint && npm run lint:md && npm run test",
|
|
70
62
|
"release:dry": "pnpm publish --dry-run --no-git-checks --access public",
|
|
71
63
|
"release": "pnpm publish --no-git-checks --access public"
|
|
64
|
+
},
|
|
65
|
+
"devDependencies": {
|
|
66
|
+
"@eslint/js": "^9.0.0",
|
|
67
|
+
"eslint": "^9.0.0",
|
|
68
|
+
"globals": "^15.0.0",
|
|
69
|
+
"markdownlint-cli2": "0.23.2",
|
|
70
|
+
"vitest": "^4.1.5"
|
|
71
|
+
},
|
|
72
|
+
"vitest": {
|
|
73
|
+
"environment": "node"
|
|
72
74
|
}
|
|
73
|
-
}
|
|
75
|
+
}
|
package/skills/README.md
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
# skills/
|
|
2
|
-
|
|
3
|
-
Two kinds of skills live here, both discoverable by `npx skills`:
|
|
4
|
-
|
|
5
|
-
| Kind | Directories | Purpose |
|
|
6
|
-
| --- | --- | --- |
|
|
7
|
-
| Installable `pc-*` + `browser-automation` | `pc-*`, `browser-automation` | What the CLI copies into a target project under `.agents/skills/` during onboarding. Plain Concepts' own skills. |
|
|
8
|
-
| CLI-self | `agent-harness-cli` | Skills for agents working on THIS CLI repo (driving `npx @plainconceptsplatform/agent-harness`). Never copied into target projects. |
|
|
9
|
-
|
|
10
|
-
Discoverability: any `SKILL.md` in a subdirectory here is auto-discovered by OpenCode, Claude Code, and `npx skills` (which scans `./skills/` as a recognized project-skill location).
|
|
11
|
-
|
|
12
|
-
## Using one
|
|
13
|
-
|
|
14
|
-
Point your agent at the directory, or copy a skill into wherever your tool discovers skills:
|
|
15
|
-
|
|
16
|
-
```bash
|
|
17
|
-
cp -r skills/agent-harness-cli ~/.claude/skills/
|
|
18
|
-
```
|
|
1
|
+
# skills/
|
|
2
|
+
|
|
3
|
+
Two kinds of skills live here, both discoverable by `npx skills`:
|
|
4
|
+
|
|
5
|
+
| Kind | Directories | Purpose |
|
|
6
|
+
| --- | --- | --- |
|
|
7
|
+
| Installable `pc-*` + `browser-automation` | `pc-*`, `browser-automation` | What the CLI copies into a target project under `.agents/skills/` during onboarding. Plain Concepts' own skills. |
|
|
8
|
+
| CLI-self | `agent-harness-cli` | Skills for agents working on THIS CLI repo (driving `npx @plainconceptsplatform/agent-harness`). Never copied into target projects. |
|
|
9
|
+
|
|
10
|
+
Discoverability: any `SKILL.md` in a subdirectory here is auto-discovered by OpenCode, Claude Code, and `npx skills` (which scans `./skills/` as a recognized project-skill location).
|
|
11
|
+
|
|
12
|
+
## Using one
|
|
13
|
+
|
|
14
|
+
Point your agent at the directory, or copy a skill into wherever your tool discovers skills:
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
cp -r skills/agent-harness-cli ~/.claude/skills/
|
|
18
|
+
```
|
|
@@ -1,86 +1,86 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: agent-harness-cli
|
|
3
|
-
description: Drive the agent-harness CLI - install the Plain Concepts Platform Harness into a repository, bring an existing one up to date, set up a teammate's machine, or rerun a single step. Load when asked to install, update, or repair the Platform Harness, when a repo needs AI/agent scaffolding set up, or when a command like `npx @plainconceptsplatform/agent-harness` fails and needs diagnosing.
|
|
4
|
-
license: MIT
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# agent-harness CLI
|
|
8
|
-
|
|
9
|
-
`agent-harness` installs the **Plain Concepts Platform Harness** into a repository and keeps it up to date. The harness is Plain Concepts' own, and it is the set of files agents work from: slash commands, `pc-*` skills (the `pc-` is Plain Concepts), an agent team, OpenCode plugins, an OpenSpec workspace, and generated `ARCHITECTURE.md` and `DESIGN.md`.
|
|
10
|
-
|
|
11
|
-
Everything runs against the **current working directory**. `cd` into the target repository first; there is no `--path` flag.
|
|
12
|
-
|
|
13
|
-
## Pick the right verb
|
|
14
|
-
|
|
15
|
-
Read the repo before running anything. `.opencode/harness.json` is the marker for "harness already installed".
|
|
16
|
-
|
|
17
|
-
| Situation | Command |
|
|
18
|
-
| --- | --- |
|
|
19
|
-
| No `.opencode/harness.json` | `npx @plainconceptsplatform/agent-harness@latest` (the install wizard) |
|
|
20
|
-
| Harness present, want the latest release's files | `npx @plainconceptsplatform/agent-harness@latest update` |
|
|
21
|
-
| Harness present, new machine or new teammate | `npx @plainconceptsplatform/agent-harness join` |
|
|
22
|
-
| One specific thing needs redoing | a single step command, see below |
|
|
23
|
-
|
|
24
|
-
Requires Node.js 18+.
|
|
25
|
-
|
|
26
|
-
## The install wizard is interactive
|
|
27
|
-
|
|
28
|
-
The wizard asks about source scope, backlog and repository platform, three models, and optional token-optimization tools. **Do not run it in a non-interactive shell.** It will hang or abort. If you cannot present prompts to a human, say so and hand the command to the user rather than trying to drive it.
|
|
29
|
-
|
|
30
|
-
Everything else (`update`, and the single-step commands other than `platform`, `models`, `optimization`) runs without prompts.
|
|
31
|
-
|
|
32
|
-
## Single-step commands
|
|
33
|
-
|
|
34
|
-
Run one step without the full wizard. Each reuses context from `.opencode/harness.json` when it needs to.
|
|
35
|
-
|
|
36
|
-
```
|
|
37
|
-
clean Remove pre-existing AI files (AGENTS.md, .cursorrules, CLAUDE.md, ...)
|
|
38
|
-
platform Choose backlog + repository platform
|
|
39
|
-
copy Copy agents, skills, commands, docs into the repo
|
|
40
|
-
openspec Initialize the OpenSpec workspace
|
|
41
|
-
models Choose plan / build / fast models
|
|
42
|
-
optimization Configure RTK, quota, Simple English, codegraph, agentmemory, humanizer
|
|
43
|
-
browser Install agent-browser (npm package + its Chrome for Testing)
|
|
44
|
-
metadata Rewrite .opencode/harness.json
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
`metadata` last if you ran several, because it refreshes the config the others read.
|
|
48
|
-
|
|
49
|
-
## What lands in the repo
|
|
50
|
-
|
|
51
|
-
```
|
|
52
|
-
.opencode/
|
|
53
|
-
harness.json harness config: platform, models, agents.maxConcurrent
|
|
54
|
-
harness-managed.json hash per managed file, so update spares your edits
|
|
55
|
-
harness.user.json per-developer model override (gitignored)
|
|
56
|
-
harness-run.json live subagent wave state (gitignored)
|
|
57
|
-
commands/ slash commands
|
|
58
|
-
plugins/ pc-subagent-monitor, pc-subagent-tiers, pc-system-reminders
|
|
59
|
-
agents/ fullstack-engineer + user-created *-engineer files
|
|
60
|
-
.agents/skills/ pc-* skills
|
|
61
|
-
AGENTS.md ARCHITECTURE.md DESIGN.md
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
After a fresh install, the next move is `/repo-initialize` inside OpenCode. That is what generates real `ARCHITECTURE.md` and `DESIGN.md` and activates the agent team. Installing the harness alone does not do it.
|
|
65
|
-
|
|
66
|
-
## `update` is edit-safe
|
|
67
|
-
|
|
68
|
-
`update` compares each managed file against the hash recorded in `.opencode/harness-managed.json`. Files you changed by hand are left alone and reported as preserved. Generated skills (`pc-guardrails-project`, `pc-merge-risk-assess`) are never overwritten once populated. So `update` is safe to run repeatedly, and a second consecutive run should report no changes.
|
|
69
|
-
|
|
70
|
-
## Diagnosing failures
|
|
71
|
-
|
|
72
|
-
**"This project was set up by opencode-onboard v1".** The repo has v1 state files or `ob-*` skills. v2 renamed both and does not migrate. Re-onboard on a clean branch; do not try to rename the files by hand, because the marker comments inside the installed skills changed too.
|
|
73
|
-
|
|
74
|
-
**"No config found. Run the wizard first."** `update` or a step needs `.opencode/harness.json` and it is absent. Run the wizard.
|
|
75
|
-
|
|
76
|
-
**A platform step reports nothing and changes nothing.** Platform content is injected into `<!-- PC-PLATFORM-*-START/END -->` marker pairs. If a marker pair is missing from the target file, injection is skipped silently. Check the markers exist before concluding the step worked.
|
|
77
|
-
|
|
78
|
-
**Skills missing after install.** Skill installation ends with `npx skills experimental_install --yes`, run once at the end of the optimization step. If it failed, rerun it directly in the repo.
|
|
79
|
-
|
|
80
|
-
**Platform CLI warnings.** The harness expects `gh` (GitHub), `az` + azure-devops extension (Azure DevOps), `acli` (Jira), `glab` (GitLab), each authenticated. These are warnings, not fatal; the harness installs, but the matching `/ops-*` flows will not work until the CLI is present.
|
|
81
|
-
|
|
82
|
-
## Rules
|
|
83
|
-
|
|
84
|
-
- Never edit `.opencode/harness.json` by hand to change models. Use `/make-user-model <tier> <model>` inside OpenCode, or the `models` step.
|
|
85
|
-
- Never commit `harness.user.json` or `harness-run.json`. Both belong in `.opencode/.gitignore`, which `join` verifies.
|
|
86
|
-
- `clean` deletes files. Confirm with the user before running it on a repo that already has AI configuration worth keeping.
|
|
1
|
+
---
|
|
2
|
+
name: agent-harness-cli
|
|
3
|
+
description: Drive the agent-harness CLI - install the Plain Concepts Platform Harness into a repository, bring an existing one up to date, set up a teammate's machine, or rerun a single step. Load when asked to install, update, or repair the Platform Harness, when a repo needs AI/agent scaffolding set up, or when a command like `npx @plainconceptsplatform/agent-harness` fails and needs diagnosing.
|
|
4
|
+
license: MIT
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# agent-harness CLI
|
|
8
|
+
|
|
9
|
+
`agent-harness` installs the **Plain Concepts Platform Harness** into a repository and keeps it up to date. The harness is Plain Concepts' own, and it is the set of files agents work from: slash commands, `pc-*` skills (the `pc-` is Plain Concepts), an agent team, OpenCode plugins, an OpenSpec workspace, and generated `ARCHITECTURE.md` and `DESIGN.md`.
|
|
10
|
+
|
|
11
|
+
Everything runs against the **current working directory**. `cd` into the target repository first; there is no `--path` flag.
|
|
12
|
+
|
|
13
|
+
## Pick the right verb
|
|
14
|
+
|
|
15
|
+
Read the repo before running anything. `.opencode/harness.json` is the marker for "harness already installed".
|
|
16
|
+
|
|
17
|
+
| Situation | Command |
|
|
18
|
+
| --- | --- |
|
|
19
|
+
| No `.opencode/harness.json` | `npx @plainconceptsplatform/agent-harness@latest` (the install wizard) |
|
|
20
|
+
| Harness present, want the latest release's files | `npx @plainconceptsplatform/agent-harness@latest update` |
|
|
21
|
+
| Harness present, new machine or new teammate | `npx @plainconceptsplatform/agent-harness join` |
|
|
22
|
+
| One specific thing needs redoing | a single step command, see below |
|
|
23
|
+
|
|
24
|
+
Requires Node.js 18+.
|
|
25
|
+
|
|
26
|
+
## The install wizard is interactive
|
|
27
|
+
|
|
28
|
+
The wizard asks about source scope, backlog and repository platform, three models, and optional token-optimization tools. **Do not run it in a non-interactive shell.** It will hang or abort. If you cannot present prompts to a human, say so and hand the command to the user rather than trying to drive it.
|
|
29
|
+
|
|
30
|
+
Everything else (`update`, and the single-step commands other than `platform`, `models`, `optimization`) runs without prompts.
|
|
31
|
+
|
|
32
|
+
## Single-step commands
|
|
33
|
+
|
|
34
|
+
Run one step without the full wizard. Each reuses context from `.opencode/harness.json` when it needs to.
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
clean Remove pre-existing AI files (AGENTS.md, .cursorrules, CLAUDE.md, ...)
|
|
38
|
+
platform Choose backlog + repository platform
|
|
39
|
+
copy Copy agents, skills, commands, docs into the repo
|
|
40
|
+
openspec Initialize the OpenSpec workspace
|
|
41
|
+
models Choose plan / build / fast models
|
|
42
|
+
optimization Configure RTK, quota, Simple English, codegraph, agentmemory, humanizer
|
|
43
|
+
browser Install agent-browser (npm package + its Chrome for Testing)
|
|
44
|
+
metadata Rewrite .opencode/harness.json
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
`metadata` last if you ran several, because it refreshes the config the others read.
|
|
48
|
+
|
|
49
|
+
## What lands in the repo
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
.opencode/
|
|
53
|
+
harness.json harness config: platform, models, agents.maxConcurrent
|
|
54
|
+
harness-managed.json hash per managed file, so update spares your edits
|
|
55
|
+
harness.user.json per-developer model override (gitignored)
|
|
56
|
+
harness-run.json live subagent wave state (gitignored)
|
|
57
|
+
commands/ slash commands
|
|
58
|
+
plugins/ pc-commit-coauthor, pc-subagent-monitor, pc-subagent-tiers, pc-system-reminders
|
|
59
|
+
agents/ fullstack-engineer + user-created *-engineer files
|
|
60
|
+
.agents/skills/ pc-* skills
|
|
61
|
+
AGENTS.md ARCHITECTURE.md DESIGN.md
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
After a fresh install, the next move is `/repo-initialize` inside OpenCode. That is what generates real `ARCHITECTURE.md` and `DESIGN.md` and activates the agent team. Installing the harness alone does not do it.
|
|
65
|
+
|
|
66
|
+
## `update` is edit-safe
|
|
67
|
+
|
|
68
|
+
`update` compares each managed file against the hash recorded in `.opencode/harness-managed.json`. Files you changed by hand are left alone and reported as preserved. Generated skills (`pc-guardrails-project`, `pc-merge-risk-assess`) are never overwritten once populated. So `update` is safe to run repeatedly, and a second consecutive run should report no changes.
|
|
69
|
+
|
|
70
|
+
## Diagnosing failures
|
|
71
|
+
|
|
72
|
+
**"This project was set up by opencode-onboard v1".** The repo has v1 state files or `ob-*` skills. v2 renamed both and does not migrate. Re-onboard on a clean branch; do not try to rename the files by hand, because the marker comments inside the installed skills changed too.
|
|
73
|
+
|
|
74
|
+
**"No config found. Run the wizard first."** `update` or a step needs `.opencode/harness.json` and it is absent. Run the wizard.
|
|
75
|
+
|
|
76
|
+
**A platform step reports nothing and changes nothing.** Platform content is injected into `<!-- PC-PLATFORM-*-START/END -->` marker pairs. If a marker pair is missing from the target file, injection is skipped silently. Check the markers exist before concluding the step worked.
|
|
77
|
+
|
|
78
|
+
**Skills missing after install.** Skill installation ends with `npx skills experimental_install --yes`, run once at the end of the optimization step. If it failed, rerun it directly in the repo.
|
|
79
|
+
|
|
80
|
+
**Platform CLI warnings.** The harness expects `gh` (GitHub), `az` + azure-devops extension (Azure DevOps), `acli` (Jira), `glab` (GitLab), each authenticated. These are warnings, not fatal; the harness installs, but the matching `/ops-*` flows will not work until the CLI is present.
|
|
81
|
+
|
|
82
|
+
## Rules
|
|
83
|
+
|
|
84
|
+
- Never edit `.opencode/harness.json` by hand to change models. Use `/make-user-model <tier> <model>` inside OpenCode, or the `models` step.
|
|
85
|
+
- Never commit `harness.user.json` or `harness-run.json`. Both belong in `.opencode/.gitignore`, which `join` verifies.
|
|
86
|
+
- `clean` deletes files. Confirm with the user before running it on a repo that already has AI configuration worth keeping.
|