@plainconceptsplatform/agent-harness 3.9.0 → 3.10.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.
Files changed (142) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +551 -551
  3. package/cli/commands/join.js +259 -259
  4. package/cli/commands/migrate.js +310 -310
  5. package/cli/commands/shared.js +27 -27
  6. package/cli/commands/single.js +79 -79
  7. package/cli/commands/update.js +121 -121
  8. package/cli/commands/wizard.js +134 -134
  9. package/cli/fragments/archive/az.md +97 -97
  10. package/cli/fragments/archive/gh.md +96 -96
  11. package/cli/fragments/archive/gl.md +96 -96
  12. package/cli/fragments/archive/none.md +75 -75
  13. package/cli/fragments/guardrails/codegraph.md +5 -5
  14. package/cli/fragments/guardrails/humanizer.md +4 -4
  15. package/cli/fragments/guardrails/memory.md +4 -4
  16. package/cli/fragments/guardrails/rtk.md +3 -3
  17. package/cli/fragments/guardrails/simple-english.md +4 -4
  18. package/cli/fragments/ops-backlog/az.md +28 -28
  19. package/cli/fragments/ops-backlog/gh.md +28 -28
  20. package/cli/fragments/ops-backlog/jira.md +28 -28
  21. package/cli/fragments/ops-review/az.md +62 -62
  22. package/cli/fragments/ops-review/gh.md +51 -51
  23. package/cli/fragments/ops-review/gl.md +55 -55
  24. package/cli/fragments/ops-ship/az.md +81 -81
  25. package/cli/fragments/ops-ship/gh.md +67 -67
  26. package/cli/fragments/ops-ship/gl.md +84 -84
  27. package/cli/index.js +116 -116
  28. package/cli/presets/agents-content.json +34 -34
  29. package/cli/presets/browser.json +10 -10
  30. package/cli/presets/clean.json +21 -21
  31. package/cli/presets/models.json +68 -68
  32. package/cli/presets/optimization.json +32 -32
  33. package/cli/presets/platforms.json +76 -76
  34. package/cli/presets/source.json +23 -23
  35. package/cli/steps/browser/index.js +52 -48
  36. package/cli/steps/clean/index.js +120 -120
  37. package/cli/steps/copy/agents.js +176 -176
  38. package/cli/steps/copy/commands.js +79 -79
  39. package/cli/steps/copy/fullstack-engineer.js +81 -81
  40. package/cli/steps/copy/index.js +88 -88
  41. package/cli/steps/copy/opencode-json.js +359 -324
  42. package/cli/steps/copy/skills.js +316 -316
  43. package/cli/steps/metadata/index.js +115 -115
  44. package/cli/steps/models/format.js +88 -88
  45. package/cli/steps/models/index.js +64 -64
  46. package/cli/steps/models/write.js +38 -38
  47. package/cli/steps/openspec/index.js +136 -136
  48. package/cli/steps/optimization/codegraph.js +141 -141
  49. package/cli/steps/optimization/detect.js +66 -66
  50. package/cli/steps/optimization/humanizer.js +17 -17
  51. package/cli/steps/optimization/index.js +158 -158
  52. package/cli/steps/optimization/memory.js +91 -91
  53. package/cli/steps/optimization/patch-guardrails.js +111 -111
  54. package/cli/steps/optimization/simple-english.js +17 -17
  55. package/cli/steps/optimization/skills-lock.js +30 -30
  56. package/cli/steps/platform/index.js +109 -109
  57. package/cli/steps/source/index.js +123 -123
  58. package/cli/utils/agent-color.js +111 -111
  59. package/cli/utils/copy.js +134 -134
  60. package/cli/utils/exec-spinner.js +47 -47
  61. package/cli/utils/exec.js +134 -134
  62. package/cli/utils/legacy-check.js +30 -30
  63. package/cli/utils/models-cache.js +58 -58
  64. package/cli/utils/models-pricing.js +42 -42
  65. package/cli/utils/paths.js +82 -82
  66. package/cli/utils/process.js +3 -3
  67. package/cli/utils/terminal.js +6 -6
  68. package/cli/utils/update-manifest.js +75 -75
  69. package/harness/.opencode/_gitignore +12 -12
  70. package/harness/.opencode/commands/init.md +5 -5
  71. package/harness/.opencode/commands/make-architecture.md +5 -5
  72. package/harness/.opencode/commands/make-design.md +5 -5
  73. package/harness/.opencode/commands/make-engineer.md +5 -5
  74. package/harness/.opencode/commands/make-guardrails.md +5 -5
  75. package/harness/.opencode/commands/make-user-model.md +5 -5
  76. package/harness/.opencode/commands/ops-backlog.md +10 -10
  77. package/harness/.opencode/commands/ops-review.md +10 -10
  78. package/harness/.opencode/commands/ops-ship.md +9 -9
  79. package/harness/.opencode/commands/plan-apply.md +9 -9
  80. package/harness/.opencode/commands/plan-archive.md +7 -7
  81. package/harness/.opencode/commands/plan-explore.md +11 -11
  82. package/harness/.opencode/commands/plan-goal.md +5 -5
  83. package/harness/.opencode/commands/plan-propose.md +11 -11
  84. package/harness/.opencode/commands/plan-quick.md +7 -7
  85. package/harness/.opencode/commands/plan-story.md +11 -11
  86. package/harness/.opencode/commands/repo-audit.md +7 -7
  87. package/harness/.opencode/commands/repo-help.md +5 -5
  88. package/harness/.opencode/commands/repo-initialize.md +5 -5
  89. package/harness/.opencode/commands/repo-onboard.md +5 -5
  90. package/harness/.opencode/commands/repo-verify.md +5 -5
  91. package/harness/.opencode/plugins/pc-commit-coauthor.js +41 -41
  92. package/harness/.opencode/plugins/pc-subagent-monitor.js +184 -184
  93. package/harness/.opencode/plugins/pc-system-reminders.js +424 -424
  94. package/harness/.opencode/scripts/check-diff.mjs +305 -305
  95. package/harness/.opencode/scripts/code-rules.mjs +288 -288
  96. package/harness/.opencode/scripts/platform-contract.mjs +366 -366
  97. package/harness/AGENTS.md +55 -55
  98. package/harness/ARCHITECTURE.md +13 -13
  99. package/harness/DESIGN.md +13 -13
  100. package/harness/opencode.jsonc +37 -36
  101. package/harness/openspec/config.yaml +20 -20
  102. package/harness/skills-lock.json +17 -17
  103. package/package.json +14 -12
  104. package/skills/README.md +18 -18
  105. package/skills/agent-harness-cli/SKILL.md +86 -86
  106. package/skills/browser-automation/SKILL.md +100 -72
  107. package/skills/pc-guardrails-generic/SKILL.md +53 -53
  108. package/skills/pc-guardrails-project/SKILL.md +8 -8
  109. package/skills/pc-make-architecture/SKILL.md +33 -33
  110. package/skills/pc-make-architecture/structure-template.md +64 -64
  111. package/skills/pc-make-design/SKILL.md +45 -45
  112. package/skills/pc-make-engineer/SKILL.md +59 -59
  113. package/skills/pc-make-engineer/signal-mapping.md +53 -53
  114. package/skills/pc-make-engineer/template.md +36 -36
  115. package/skills/pc-make-guardrails/SKILL.md +44 -44
  116. package/skills/pc-make-guardrails/category-reference.md +112 -112
  117. package/skills/pc-make-merge-risk-assess/SKILL.md +70 -70
  118. package/skills/pc-make-merge-risk-assess/category-reference.md +114 -114
  119. package/skills/pc-make-user-model/SKILL.md +56 -56
  120. package/skills/pc-ops-ship/SKILL.md +22 -22
  121. package/skills/pc-plan-apply/SKILL.md +90 -90
  122. package/skills/pc-plan-apply/simple-mode.md +21 -21
  123. package/skills/pc-plan-archive/SKILL.md +66 -66
  124. package/skills/pc-plan-explore/SKILL.md +21 -21
  125. package/skills/pc-plan-goal/SKILL.md +91 -91
  126. package/skills/pc-plan-goal/branching.md +39 -39
  127. package/skills/pc-plan-goal/failure-policy.md +30 -30
  128. package/skills/pc-plan-goal/output-mode.md +10 -10
  129. package/skills/pc-plan-goal/output.md +71 -71
  130. package/skills/pc-plan-propose/SKILL.md +127 -127
  131. package/skills/pc-plan-propose/task-annotation.md +39 -39
  132. package/skills/pc-plan-quick/SKILL.md +46 -46
  133. package/skills/pc-plan-story/SKILL.md +93 -93
  134. package/skills/pc-repo-audit/SKILL.md +44 -44
  135. package/skills/pc-repo-help/SKILL.md +87 -87
  136. package/skills/pc-repo-initialize/SKILL.md +119 -119
  137. package/skills/pc-repo-onboard/SKILL.md +32 -32
  138. package/skills/pc-repo-verify/SKILL.md +150 -150
  139. package/skills/pc-userstory-az/SKILL.md +71 -71
  140. package/skills/pc-userstory-browser/SKILL.md +73 -64
  141. package/skills/pc-userstory-gh/SKILL.md +63 -63
  142. package/skills/pc-userstory-jira/SKILL.md +74 -74
package/harness/AGENTS.md CHANGED
@@ -1,55 +1,55 @@
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`.
47
-
48
- <!-- PC-PLATFORM-SKILLS-START -->
49
- Mandatory, before any edit, shell command or subagent spawn: read `.agents/skills/pc-guardrails-generic/SKILL.md`, then `.agents/skills/pc-guardrails-project/SKILL.md` if present. They are instructions, not references: a loaded skill may name further skills, and those load too before the work they cover.
50
- <!-- PC-PLATFORM-SKILLS-END -->
51
-
52
- 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.
53
-
54
- <!-- PC-PLATFORM-SKILLS-GUIDE-START -->
55
- <!-- 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`.
47
+
48
+ <!-- PC-PLATFORM-SKILLS-START -->
49
+ Mandatory, before any edit, shell command or subagent spawn: read `.agents/skills/pc-guardrails-generic/SKILL.md`, then `.agents/skills/pc-guardrails-project/SKILL.md` if present. They are instructions, not references: a loaded skill may name further skills, and those load too before the work they cover.
50
+ <!-- PC-PLATFORM-SKILLS-END -->
51
+
52
+ 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.
53
+
54
+ <!-- PC-PLATFORM-SKILLS-GUIDE-START -->
55
+ <!-- PC-PLATFORM-SKILLS-GUIDE-END -->
@@ -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.
@@ -1,36 +1,37 @@
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
+ "browse": {
6
+ "type": "local",
7
+ "command": ["browse", "mcp"],
8
+ "environment": { "OPENCODE_BROWSER_RUNTIME": "auto-update" },
9
+ "disabled": false
10
+ }
11
+ },
12
+ "timeout": {
13
+ "catalog": 300000,
14
+ "execution": 300000
15
+ }
16
+ },
17
+ "compaction": {
18
+ "auto": true,
19
+ "buffer": 10000
20
+ },
21
+ "permissions": [
22
+ { "action": "question", "resource": "*", "effect": "allow" },
23
+ { "action": "skill", "resource": "*", "effect": "allow" }
24
+ ],
25
+ "skills": [".agents/skills"],
26
+ "default_agent": "plan",
27
+ "agents": {
28
+ "build": { "mode": "primary" },
29
+ "plan": {
30
+ "mode": "primary",
31
+ "permissions": [
32
+ { "action": "edit", "resource": "*", "effect": "deny" },
33
+ { "action": "subagent", "resource": "*", "effect": "deny" }
34
+ ]
35
+ }
36
+ }
37
+ }
@@ -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
@@ -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.9.0",
3
+ "version": "3.10.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-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.
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 browse (npm package + browser extension pairing)
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.