oh-my-pm 1.0.0 → 1.0.2
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/README.md +7 -6
- package/agent-blueprints/ada-blueprint.md +2 -2
- package/agent-blueprints/davinci-blueprint.md +2 -2
- package/agent-blueprints/hammurabi-blueprint.md +2 -2
- package/agent-blueprints/jc-blueprint.md +3 -3
- package/agent-blueprints/suntzu-blueprint.md +3 -3
- package/dist/agents.js +3 -3
- package/dist/cli.js +2 -2
- package/dist/cli.js.map +1 -1
- package/dist/generator.js +1 -1
- package/dist/utils/manifest.d.ts +2 -2
- package/dist/utils/manifest.d.ts.map +1 -1
- package/dist/utils/manifest.js +2 -2
- package/dist/utils/manifest.js.map +1 -1
- package/docs/architecture.md +2 -2
- package/docs/dev-harness-bridge.md +1 -1
- package/docs/installation.md +4 -4
- package/docs/lifecycle.md +1 -1
- package/package.json +1 -1
- package/src/templates/claude/CLAUDE.md +6 -6
- package/src/templates/generic/AGENTS.md +6 -6
- package/src/templates/openai/agents.py +2 -2
- package/src/templates/opencode/AGENTS.md +4 -4
- package/src/templates/opencode/skills/ada/SKILL.md +3 -3
- package/src/templates/opencode/skills/davinci/SKILL.md +3 -3
- package/src/templates/opencode/skills/hammurabi/SKILL.md +3 -3
- package/src/templates/opencode/skills/jc/SKILL.md +7 -7
- package/src/templates/opencode/skills/oh-my-pm/SKILL.md +1 -1
- package/src/templates/opencode/skills/suntzu/SKILL.md +5 -5
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Oh My PM
|
|
2
2
|
|
|
3
|
-
Oh My PM installs a Product Management agent team inside a project. The team produces PRD, TRD, UX flows, database design, execution planning, and an interoperable contract named `.
|
|
3
|
+
Oh My PM installs a Product Management agent team inside a project. The team produces PRD, TRD, UX flows, database design, execution planning, and an interoperable contract named `.pm/pm_manifest.json`.
|
|
4
4
|
|
|
5
5
|
The package is designed for `bunx oh-my-pm` usage and can generate platform-specific outputs for OpenCode, Claude Code, OpenAI Agents SDK, and generic Markdown-based LLM workflows.
|
|
6
6
|
|
|
@@ -18,7 +18,7 @@ The package is designed for `bunx oh-my-pm` usage and can generate platform-spec
|
|
|
18
18
|
|
|
19
19
|
- **Lane specialization**: every agent owns a strict domain and JC delegates with complete context.
|
|
20
20
|
- **Verification before completion**: no agent reports completion without concrete evidence.
|
|
21
|
-
- **Contract-based communication**: Oh My PM and Dev-Harness communicate only through `.
|
|
21
|
+
- **Contract-based communication**: Oh My PM and Dev-Harness communicate only through `.pm/pm_manifest.json`.
|
|
22
22
|
- **Full context on delegation**: every handoff includes paths, decisions, constraints, and exit criteria.
|
|
23
23
|
- **Technical honesty**: ambiguity and contradiction become blockers instead of guesses.
|
|
24
24
|
|
|
@@ -26,7 +26,7 @@ The package is designed for `bunx oh-my-pm` usage and can generate platform-spec
|
|
|
26
26
|
|
|
27
27
|
| Agent | Role | Artifacts |
|
|
28
28
|
| --- | --- | --- |
|
|
29
|
-
| JC | Discovery and approval orchestrator | `.
|
|
29
|
+
| JC | Discovery and approval orchestrator | `.pm/pm_manifest.json`, routing, approval notes |
|
|
30
30
|
| Hammurabi | PRD and product rules | `docs/prd.md` |
|
|
31
31
|
| DaVinci | UX, UI flows, and Mermaid | `docs/flows/*.md` |
|
|
32
32
|
| Ada | TRD, API, data, and schemas | `docs/trd.md`, `docs/db-schema.md` |
|
|
@@ -52,8 +52,8 @@ AGENTS.md
|
|
|
52
52
|
.opencode/skills/suntzu/SKILL.md
|
|
53
53
|
.opencode/skills/oh-my-pm/SKILL.md
|
|
54
54
|
oh-my-pm.json
|
|
55
|
-
.
|
|
56
|
-
.
|
|
55
|
+
.pm/pm_manifest.json
|
|
56
|
+
.pm/schemas/pm-manifest-schema.json
|
|
57
57
|
```
|
|
58
58
|
|
|
59
59
|
The generated `opencode.jsonc` loads the runtime plugin:
|
|
@@ -94,6 +94,7 @@ Existing files are backed up with `.oh-my-pm.backup` before replacement or merge
|
|
|
94
94
|
## Optional platform outputs
|
|
95
95
|
|
|
96
96
|
```bash
|
|
97
|
+
bunx oh-my-pm install --opencode
|
|
97
98
|
bunx oh-my-pm install --claude
|
|
98
99
|
bunx oh-my-pm install --openai
|
|
99
100
|
bunx oh-my-pm install --generic
|
|
@@ -118,7 +119,7 @@ bunx oh-my-pm generate generic
|
|
|
118
119
|
5. Ada writes TRD, API, and database design.
|
|
119
120
|
6. SunTzu builds the execution DAG and updates the manifest.
|
|
120
121
|
7. JC validates the contract and asks for approval.
|
|
121
|
-
8. Dev-Harness consumes `.
|
|
122
|
+
8. Dev-Harness consumes `.pm/pm_manifest.json` and writes blockers back into that file.
|
|
122
123
|
|
|
123
124
|
## Dev-Harness contract
|
|
124
125
|
|
|
@@ -51,7 +51,7 @@ Durable artifacts: `docs/trd.md` and `docs/db-schema.md`.
|
|
|
51
51
|
|
|
52
52
|
- Lane specialization: this agent does not invade other domains.
|
|
53
53
|
- Verification before completion: each delivery includes reproducible evidence.
|
|
54
|
-
- Contract-based communication: `.
|
|
54
|
+
- Contract-based communication: `.pm/pm_manifest.json` is the contract.
|
|
55
55
|
- Full context on delegation: every handoff includes paths, decisions, and constraints.
|
|
56
56
|
- Technical honesty: ambiguity or contradiction becomes a blocker.
|
|
57
57
|
|
|
@@ -64,6 +64,6 @@ Durable artifacts: `docs/trd.md` and `docs/db-schema.md`.
|
|
|
64
64
|
|
|
65
65
|
## Cross-reference requirements
|
|
66
66
|
|
|
67
|
-
- Every artifact must appear in `.
|
|
67
|
+
- Every artifact must appear in `.pm/pm_manifest.json`.
|
|
68
68
|
- Every DAG task must point to a PRD, TRD, flow, or execution-plan section.
|
|
69
69
|
- Every decision must record rationale and alternatives considered.
|
|
@@ -49,7 +49,7 @@ Durable artifact: `docs/flows/main-flow.md`.
|
|
|
49
49
|
|
|
50
50
|
- Lane specialization: this agent does not invade other domains.
|
|
51
51
|
- Verification before completion: each delivery includes reproducible evidence.
|
|
52
|
-
- Contract-based communication: `.
|
|
52
|
+
- Contract-based communication: `.pm/pm_manifest.json` is the contract.
|
|
53
53
|
- Full context on delegation: every handoff includes paths, decisions, and constraints.
|
|
54
54
|
- Technical honesty: ambiguity or contradiction becomes a blocker.
|
|
55
55
|
|
|
@@ -62,6 +62,6 @@ Durable artifact: `docs/flows/main-flow.md`.
|
|
|
62
62
|
|
|
63
63
|
## Cross-reference requirements
|
|
64
64
|
|
|
65
|
-
- Every artifact must appear in `.
|
|
65
|
+
- Every artifact must appear in `.pm/pm_manifest.json`.
|
|
66
66
|
- Every DAG task must point to a PRD, TRD, flow, or execution-plan section.
|
|
67
67
|
- Every decision must record rationale and alternatives considered.
|
|
@@ -51,7 +51,7 @@ Durable artifact: `docs/prd.md`.
|
|
|
51
51
|
|
|
52
52
|
- Lane specialization: this agent does not invade other domains.
|
|
53
53
|
- Verification before completion: each delivery includes reproducible evidence.
|
|
54
|
-
- Contract-based communication: `.
|
|
54
|
+
- Contract-based communication: `.pm/pm_manifest.json` is the contract.
|
|
55
55
|
- Full context on delegation: every handoff includes paths, decisions, and constraints.
|
|
56
56
|
- Technical honesty: ambiguity or contradiction becomes a blocker.
|
|
57
57
|
|
|
@@ -64,6 +64,6 @@ Durable artifact: `docs/prd.md`.
|
|
|
64
64
|
|
|
65
65
|
## Cross-reference requirements
|
|
66
66
|
|
|
67
|
-
- Every artifact must appear in `.
|
|
67
|
+
- Every artifact must appear in `.pm/pm_manifest.json`.
|
|
68
68
|
- Every DAG task must point to a PRD, TRD, flow, or execution-plan section.
|
|
69
69
|
- Every decision must record rationale and alternatives considered.
|
|
@@ -9,7 +9,7 @@ JC represents strategic orchestration: listening, synthesis, and deciding when t
|
|
|
9
9
|
- Run product discovery.
|
|
10
10
|
- Define scope, constraints, risks, and approval criteria.
|
|
11
11
|
- Delegate to Hammurabi, DaVinci, Ada, and SunTzu with complete context.
|
|
12
|
-
- Validate `.
|
|
12
|
+
- Validate `.pm/pm_manifest.json` before asking for approval.
|
|
13
13
|
|
|
14
14
|
## Triggers EN
|
|
15
15
|
|
|
@@ -49,7 +49,7 @@ Durable artifact: `_workspace/jc/artifacts/discovery.md`.
|
|
|
49
49
|
|
|
50
50
|
- Lane specialization: this agent does not invade other domains.
|
|
51
51
|
- Verification before completion: each delivery includes reproducible evidence.
|
|
52
|
-
- Contract-based communication: `.
|
|
52
|
+
- Contract-based communication: `.pm/pm_manifest.json` is the contract.
|
|
53
53
|
- Full context on delegation: every handoff includes paths, decisions, and constraints.
|
|
54
54
|
- Technical honesty: ambiguity or contradiction becomes a blocker.
|
|
55
55
|
|
|
@@ -62,6 +62,6 @@ Durable artifact: `_workspace/jc/artifacts/discovery.md`.
|
|
|
62
62
|
|
|
63
63
|
## Cross-reference requirements
|
|
64
64
|
|
|
65
|
-
- Every artifact must appear in `.
|
|
65
|
+
- Every artifact must appear in `.pm/pm_manifest.json`.
|
|
66
66
|
- Every DAG task must point to a PRD, TRD, flow, or execution-plan section.
|
|
67
67
|
- Every decision must record rationale and alternatives considered.
|
|
@@ -7,7 +7,7 @@ SunTzu represents sequencing, terrain, and execution strategy. In Oh My PM, SunT
|
|
|
7
7
|
## Core responsibilities
|
|
8
8
|
|
|
9
9
|
- Write `docs/execution-plan.md`.
|
|
10
|
-
- Create `execution_dag.tasks` in `.
|
|
10
|
+
- Create `execution_dag.tasks` in `.pm/pm_manifest.json`.
|
|
11
11
|
- Define dependencies, owners, and verification criteria.
|
|
12
12
|
- Maintain blockers when a task is not honestly executable.
|
|
13
13
|
|
|
@@ -47,7 +47,7 @@ Durable artifact: `docs/execution-plan.md`.
|
|
|
47
47
|
|
|
48
48
|
- Lane specialization: this agent does not invade other domains.
|
|
49
49
|
- Verification before completion: each delivery includes reproducible evidence.
|
|
50
|
-
- Contract-based communication: `.
|
|
50
|
+
- Contract-based communication: `.pm/pm_manifest.json` is the contract.
|
|
51
51
|
- Full context on delegation: every handoff includes paths, decisions, and constraints.
|
|
52
52
|
- Technical honesty: ambiguity or contradiction becomes a blocker.
|
|
53
53
|
|
|
@@ -60,6 +60,6 @@ Durable artifact: `docs/execution-plan.md`.
|
|
|
60
60
|
|
|
61
61
|
## Cross-reference requirements
|
|
62
62
|
|
|
63
|
-
- Every artifact must appear in `.
|
|
63
|
+
- Every artifact must appear in `.pm/pm_manifest.json`.
|
|
64
64
|
- Every DAG task must point to a PRD, TRD, flow, or execution-plan section.
|
|
65
65
|
- Every decision must record rationale and alternatives considered.
|
package/dist/agents.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export const PM_AGENT_NAMES = ["jc", "hammurabi", "davinci", "ada", "suntzu"];
|
|
2
2
|
const MANIFEST_PROTOCOL = `Oh My PM protocol:
|
|
3
|
-
- Oh My PM and Dev-Harness communicate only through .
|
|
3
|
+
- Oh My PM and Dev-Harness communicate only through .pm/pm_manifest.json.
|
|
4
4
|
- Keep strict lane specialization and never duplicate delegated work.
|
|
5
5
|
- Pass complete context in handoffs: paths, prior decisions, constraints, expected artifacts, and verification commands.
|
|
6
6
|
- Do not mark work complete without concrete evidence.
|
|
@@ -11,7 +11,7 @@ Role:
|
|
|
11
11
|
- Run product discovery.
|
|
12
12
|
- Decompose PM work into specialist lanes.
|
|
13
13
|
- Delegate PRD to Hammurabi, UX flows to DaVinci, TRD and data design to Ada, and execution DAG to SunTzu.
|
|
14
|
-
- Validate .
|
|
14
|
+
- Validate .pm/pm_manifest.json before asking for explicit user approval.
|
|
15
15
|
|
|
16
16
|
${MANIFEST_PROTOCOL}`;
|
|
17
17
|
const HAMMURABI_PROMPT = `You are Hammurabi, the Oh My PM PRD specialist.
|
|
@@ -42,7 +42,7 @@ const SUNTZU_PROMPT = `You are SunTzu, the Oh My PM execution strategist.
|
|
|
42
42
|
|
|
43
43
|
Role:
|
|
44
44
|
- Write docs/execution-plan.md.
|
|
45
|
-
- Build execution_dag.tasks inside .
|
|
45
|
+
- Build execution_dag.tasks inside .pm/pm_manifest.json.
|
|
46
46
|
- Sequence tasks by dependency, attach spec references, and define executable verification criteria.
|
|
47
47
|
- Halt the pipeline with blockers when Dev-Harness cannot execute honestly.
|
|
48
48
|
|
package/dist/cli.js
CHANGED
|
@@ -33,13 +33,13 @@ export async function runCli(argv) {
|
|
|
33
33
|
program
|
|
34
34
|
.command("generate")
|
|
35
35
|
.argument("<type>", "Template type: opencode, claude, openai, or generic.")
|
|
36
|
-
.description("Generate a platform template under .
|
|
36
|
+
.description("Generate a platform template under .pm/generated without installing it.")
|
|
37
37
|
.action(async (type) => {
|
|
38
38
|
printResult(await generateTemplate(process.cwd(), type));
|
|
39
39
|
});
|
|
40
40
|
program
|
|
41
41
|
.command("validate")
|
|
42
|
-
.description("Validate .
|
|
42
|
+
.description("Validate .pm/pm_manifest.json in the current project.")
|
|
43
43
|
.action(async () => {
|
|
44
44
|
printResult(await validateCurrentProject(process.cwd()));
|
|
45
45
|
});
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,cAAc,EAAE,sBAAsB,EAAuB,MAAM,cAAc,CAAA;AAEzH,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;AAE7B,SAAS,WAAW,CAAC,MAAuE;IAC1F,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAC3B,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,KAAK;QAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,WAAW,EAAE,CAAC,CAAC,CAAA;AACpF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAuB;IAClD,OAAO;SACJ,IAAI,CAAC,UAAU,CAAC;SAChB,WAAW,CAAC,6FAA6F,CAAC;SAC1G,OAAO,CAAC,OAAO,CAAC,CAAA;IAEnB,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,iDAAiD,CAAC;SAC9D,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,WAAW,CAAC,MAAM,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;IAC/C,CAAC,CAAC,CAAA;IAEJ,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,qEAAqE,CAAC;SAClF,MAAM,CAAC,UAAU,EAAE,sCAAsC,CAAC;SAC1D,MAAM,CAAC,UAAU,EAAE,0CAA0C,CAAC;SAC9D,MAAM,CAAC,WAAW,EAAE,6CAA6C,CAAC;SAClE,MAAM,CAAC,OAAO,EAAE,mCAAmC,CAAC;SACpD,MAAM,CAAC,UAAU,EAAE,oEAAoE,CAAC;SACxF,MAAM,CAAC,KAAK,EAAE,OAAuB,EAAE,EAAE;QACxC,WAAW,CAAC,MAAM,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC,CAAA;IAC3D,CAAC,CAAC,CAAA;IAEJ,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,QAAQ,CAAC,QAAQ,EAAE,sDAAsD,CAAC;SAC1E,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,cAAc,EAAE,sBAAsB,EAAuB,MAAM,cAAc,CAAA;AAEzH,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;AAE7B,SAAS,WAAW,CAAC,MAAuE;IAC1F,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAC3B,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,KAAK;QAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,WAAW,EAAE,CAAC,CAAC,CAAA;AACpF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAuB;IAClD,OAAO;SACJ,IAAI,CAAC,UAAU,CAAC;SAChB,WAAW,CAAC,6FAA6F,CAAC;SAC1G,OAAO,CAAC,OAAO,CAAC,CAAA;IAEnB,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,iDAAiD,CAAC;SAC9D,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,WAAW,CAAC,MAAM,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;IAC/C,CAAC,CAAC,CAAA;IAEJ,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,qEAAqE,CAAC;SAClF,MAAM,CAAC,UAAU,EAAE,sCAAsC,CAAC;SAC1D,MAAM,CAAC,UAAU,EAAE,0CAA0C,CAAC;SAC9D,MAAM,CAAC,WAAW,EAAE,6CAA6C,CAAC;SAClE,MAAM,CAAC,OAAO,EAAE,mCAAmC,CAAC;SACpD,MAAM,CAAC,UAAU,EAAE,oEAAoE,CAAC;SACxF,MAAM,CAAC,KAAK,EAAE,OAAuB,EAAE,EAAE;QACxC,WAAW,CAAC,MAAM,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC,CAAA;IAC3D,CAAC,CAAC,CAAA;IAEJ,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,QAAQ,CAAC,QAAQ,EAAE,sDAAsD,CAAC;SAC1E,WAAW,CAAC,yEAAyE,CAAC;SACtF,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;QAC7B,WAAW,CAAC,MAAM,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,CAAA;IAC1D,CAAC,CAAC,CAAA;IAEJ,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,uDAAuD,CAAC;SACpE,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,WAAW,CAAC,MAAM,sBAAsB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;IAC1D,CAAC,CAAC,CAAA;IAEJ,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;AAChC,CAAC;AAED,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC5C,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;QACvC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;QACpB,OAAM;IACR,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAA;IAC5C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;AACtB,CAAC,CAAC,CAAA"}
|
package/dist/generator.js
CHANGED
|
@@ -94,7 +94,7 @@ ${idea}
|
|
|
94
94
|
|
|
95
95
|
## Oh My PM contract
|
|
96
96
|
|
|
97
|
-
This artifact is generated from discovery context and must be cross-referenced from .
|
|
97
|
+
This artifact is generated from discovery context and must be cross-referenced from .pm/pm_manifest.json. Any ambiguity must be moved into feedback_channel.blockers before Dev-Harness starts implementation.
|
|
98
98
|
`;
|
|
99
99
|
}
|
|
100
100
|
export async function generateProductArtifacts(input) {
|
package/dist/utils/manifest.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export declare const MANIFEST_RELATIVE_PATH = ".
|
|
2
|
-
export declare const MANIFEST_SCHEMA_RELATIVE_PATH = ".
|
|
1
|
+
export declare const MANIFEST_RELATIVE_PATH = ".pm/pm_manifest.json";
|
|
2
|
+
export declare const MANIFEST_SCHEMA_RELATIVE_PATH = ".pm/schemas/pm-manifest-schema.json";
|
|
3
3
|
export declare const MANIFEST_STATUSES: readonly ["discovery", "designed", "approved", "in_development", "blocked", "completed"];
|
|
4
4
|
export declare const TASK_STATUSES: readonly ["pending", "in_progress", "blocked", "completed"];
|
|
5
5
|
export type ManifestStatus = (typeof MANIFEST_STATUSES)[number];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/utils/manifest.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,sBAAsB,
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/utils/manifest.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/manifest.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import fs from "fs-extra";
|
|
2
2
|
import path from "node:path";
|
|
3
|
-
export const MANIFEST_RELATIVE_PATH = ".
|
|
4
|
-
export const MANIFEST_SCHEMA_RELATIVE_PATH = ".
|
|
3
|
+
export const MANIFEST_RELATIVE_PATH = ".pm/pm_manifest.json";
|
|
4
|
+
export const MANIFEST_SCHEMA_RELATIVE_PATH = ".pm/schemas/pm-manifest-schema.json";
|
|
5
5
|
export const MANIFEST_STATUSES = [
|
|
6
6
|
"discovery",
|
|
7
7
|
"designed",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/utils/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAA;AACzB,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,MAAM,CAAC,MAAM,sBAAsB,GAAG,
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/utils/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAA;AACzB,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,MAAM,CAAC,MAAM,sBAAsB,GAAG,sBAAsB,CAAA;AAC5D,MAAM,CAAC,MAAM,6BAA6B,GAAG,qCAAqC,CAAA;AAElF,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,WAAW;IACX,UAAU;IACV,UAAU;IACV,gBAAgB;IAChB,SAAS;IACT,WAAW;CACH,CAAA;AAEV,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,CAAU,CAAA;AAyDxF,MAAM,UAAU,oBAAoB,CAAC,WAAmB,EAAE,WAAmB;IAC3E,OAAO;QACL,OAAO,EAAE,mCAAmC;QAC5C,gBAAgB,EAAE;YAChB,IAAI,EAAE,WAAW;YACjB,iBAAiB,EAAE,OAAO;YAC1B,MAAM,EAAE,WAAW;YACnB,YAAY,EAAE,iBAAiB;YAC/B,YAAY,EAAE,WAAW;SAC1B;QACD,kBAAkB,EAAE;YAClB,GAAG,EAAE,aAAa;YAClB,GAAG,EAAE,aAAa;YAClB,SAAS,EAAE,mBAAmB;YAC9B,QAAQ,EAAE,CAAC,yBAAyB,CAAC;YACrC,cAAc,EAAE,wBAAwB;SACzC;QACD,aAAa,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;QAC9C,gBAAgB,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;KAClD,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,WAAmB,EAAE,QAAkB;IACzE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAA;IACnE,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAA;IAC9C,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAA;IACzD,OAAO,YAAY,CAAA;AACrB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,WAAmB;IACpD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAA;IACnE,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;IACnD,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACvC,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,WAAmB;IACtD,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC,CAAA;AACtE,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,QAAkB,EAAE,MAAsB;IACnE,OAAO;QACL,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,gBAAgB,EAAE;YAChB,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,IAAI;YACpC,iBAAiB,EAAE,QAAQ,CAAC,gBAAgB,CAAC,iBAAiB;YAC9D,MAAM;YACN,YAAY,EAAE,QAAQ,CAAC,gBAAgB,CAAC,YAAY;YACpD,YAAY,EAAE,QAAQ,CAAC,gBAAgB,CAAC,YAAY;SACrD;QACD,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB;QAC/C,aAAa,EAAE,QAAQ,CAAC,aAAa;QACrC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;KAC5C,CAAA;AACH,CAAC"}
|
package/docs/architecture.md
CHANGED
|
@@ -6,7 +6,7 @@ Oh My PM is a project-level Product Management harness that installs agent instr
|
|
|
6
6
|
|
|
7
7
|
| Component | Responsibility |
|
|
8
8
|
| --- | --- |
|
|
9
|
-
| CLI | Installs templates, initializes `.
|
|
9
|
+
| CLI | Installs templates, initializes `.pm/`, validates manifests. |
|
|
10
10
|
| OpenCode runtime plugin | Registers five PM agents through OpenCode `config.agent`. |
|
|
11
11
|
| OpenCode templates | `SKILL.md` files for project-level routing and memory. |
|
|
12
12
|
| Claude template | `CLAUDE.md` instructions for Task-based delegation. |
|
|
@@ -33,7 +33,7 @@ JC delegates by lane. Each specialist receives complete context and returns an a
|
|
|
33
33
|
|
|
34
34
|
## Contract model
|
|
35
35
|
|
|
36
|
-
`.
|
|
36
|
+
`.pm/pm_manifest.json` is the only cross-system contract. It references all blueprints and stores DAG tasks, decisions, and blockers.
|
|
37
37
|
|
|
38
38
|
## Verification model
|
|
39
39
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Dev-Harness Bridge
|
|
2
2
|
|
|
3
|
-
Dev-Harness consumes `.
|
|
3
|
+
Dev-Harness consumes `.pm/pm_manifest.json` as an implementation contract. There are no sync meetings or side-channel agreements. The manifest is the agreement.
|
|
4
4
|
|
|
5
5
|
## Read path
|
|
6
6
|
|
package/docs/installation.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
- Node.js 20 or newer.
|
|
6
6
|
- Bun available for `bunx oh-my-pm` usage.
|
|
7
|
-
- A project directory where Oh My PM may write `.
|
|
7
|
+
- A project directory where Oh My PM may write `.pm/`, `.opencode/`, `AGENTS.md`, and optional platform files.
|
|
8
8
|
|
|
9
9
|
## Install through bunx
|
|
10
10
|
|
|
@@ -13,7 +13,7 @@ bunx oh-my-pm init
|
|
|
13
13
|
bunx oh-my-pm install
|
|
14
14
|
```
|
|
15
15
|
|
|
16
|
-
`init` creates `.
|
|
16
|
+
`init` creates `.pm/pm_manifest.json` and copies the schema into `.pm/schemas/pm-manifest-schema.json`.
|
|
17
17
|
|
|
18
18
|
`install` writes the OpenCode runtime plugin configuration plus project skill files:
|
|
19
19
|
|
|
@@ -60,7 +60,7 @@ bunx oh-my-pm generate openai
|
|
|
60
60
|
bunx oh-my-pm generate generic
|
|
61
61
|
```
|
|
62
62
|
|
|
63
|
-
Generated templates are written under `.
|
|
63
|
+
Generated templates are written under `.pm/generated/{platform}`.
|
|
64
64
|
|
|
65
65
|
## Validation
|
|
66
66
|
|
|
@@ -68,7 +68,7 @@ Generated templates are written under `.parkops/generated/{platform}`.
|
|
|
68
68
|
bunx oh-my-pm validate
|
|
69
69
|
```
|
|
70
70
|
|
|
71
|
-
Validation checks the shape of `.
|
|
71
|
+
Validation checks the shape of `.pm/pm_manifest.json`, lifecycle status, blueprint paths, DAG tasks, verification criteria, blockers, and decisions.
|
|
72
72
|
|
|
73
73
|
## OpenCode runtime plugin
|
|
74
74
|
|
package/docs/lifecycle.md
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Oh My PM for Claude Code
|
|
2
2
|
|
|
3
|
-
Use this file as project instructions for a Product Management agent team. The team writes product artifacts and synchronizes with implementation through `.
|
|
3
|
+
Use this file as project instructions for a Product Management agent team. The team writes product artifacts and synchronizes with implementation through `.pm/pm_manifest.json` only.
|
|
4
4
|
|
|
5
5
|
## Global protocol
|
|
6
6
|
|
|
@@ -27,15 +27,15 @@ Claude Code should use the Task tool for lane delegation when available. Use the
|
|
|
27
27
|
|
|
28
28
|
### pm_jc
|
|
29
29
|
|
|
30
|
-
Role: discovery orchestrator. Produces `.
|
|
30
|
+
Role: discovery orchestrator. Produces `.pm/pm_manifest.json` and delegates complete context to specialists.
|
|
31
31
|
|
|
32
32
|
Triggers: discovery, idea, roadmap, approval, product planning, alcance, producto, aprobación.
|
|
33
33
|
|
|
34
34
|
Verification:
|
|
35
35
|
|
|
36
36
|
```bash
|
|
37
|
-
test -f .
|
|
38
|
-
node -e "JSON.parse(require('fs').readFileSync('.
|
|
37
|
+
test -f .pm/pm_manifest.json
|
|
38
|
+
node -e "JSON.parse(require('fs').readFileSync('.pm/pm_manifest.json','utf8')); console.log('VALID')"
|
|
39
39
|
```
|
|
40
40
|
|
|
41
41
|
### pm_hammurabi
|
|
@@ -81,7 +81,7 @@ grep -q "## Data Model" docs/db-schema.md
|
|
|
81
81
|
|
|
82
82
|
### pm_suntzu
|
|
83
83
|
|
|
84
|
-
Role: execution strategist. Produces `docs/execution-plan.md` and updates `execution_dag.tasks` in `.
|
|
84
|
+
Role: execution strategist. Produces `docs/execution-plan.md` and updates `execution_dag.tasks` in `.pm/pm_manifest.json`.
|
|
85
85
|
|
|
86
86
|
Triggers: DAG, execution plan, dependencies, blockers, Dev-Harness, plan de ejecución, dependencias.
|
|
87
87
|
|
|
@@ -89,7 +89,7 @@ Verification:
|
|
|
89
89
|
|
|
90
90
|
```bash
|
|
91
91
|
test -f docs/execution-plan.md
|
|
92
|
-
node -e "const m=JSON.parse(require('fs').readFileSync('.
|
|
92
|
+
node -e "const m=JSON.parse(require('fs').readFileSync('.pm/pm_manifest.json','utf8')); if(!Array.isArray(m.execution_dag.tasks)) process.exit(1); console.log('VALID')"
|
|
93
93
|
```
|
|
94
94
|
|
|
95
95
|
## Manifest lifecycle
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# Oh My PM Generic Agent Instructions
|
|
2
2
|
|
|
3
|
-
Use this document as system prompt context for any LLM that can write files. Oh My PM is a Product Management agent team that produces PRD, TRD, UX flows, DB design, execution DAG, and `.
|
|
3
|
+
Use this document as system prompt context for any LLM that can write files. Oh My PM is a Product Management agent team that produces PRD, TRD, UX flows, DB design, execution DAG, and `.pm/pm_manifest.json`.
|
|
4
4
|
|
|
5
5
|
## Operating principles
|
|
6
6
|
|
|
7
7
|
1. Lane specialization: each agent has one strict domain.
|
|
8
8
|
2. Verification before completion: every claim of completion needs concrete evidence.
|
|
9
|
-
3. Contract-based communication: Oh My PM and Dev-Harness communicate only through `.
|
|
9
|
+
3. Contract-based communication: Oh My PM and Dev-Harness communicate only through `.pm/pm_manifest.json`.
|
|
10
10
|
4. Full context on delegation: every handoff includes file paths, prior decisions, constraints, and validation commands.
|
|
11
11
|
5. Technical honesty: ambiguity and contradiction become blockers instead of assumptions.
|
|
12
12
|
|
|
@@ -22,7 +22,7 @@ Blockers halt the pipeline and must be written to `feedback_channel.blockers`.
|
|
|
22
22
|
|
|
23
23
|
Orchestrator. Owns discovery, work decomposition, context-rich delegation, manifest validation, and approval flow.
|
|
24
24
|
|
|
25
|
-
Outputs: `.
|
|
25
|
+
Outputs: `.pm/pm_manifest.json` and final approval notes.
|
|
26
26
|
|
|
27
27
|
### Hammurabi
|
|
28
28
|
|
|
@@ -38,7 +38,7 @@ Technical design specialist. Owns `docs/trd.md` and `docs/db-schema.md` with arc
|
|
|
38
38
|
|
|
39
39
|
### SunTzu
|
|
40
40
|
|
|
41
|
-
Execution strategist. Owns `docs/execution-plan.md` and `execution_dag.tasks` in `.
|
|
41
|
+
Execution strategist. Owns `docs/execution-plan.md` and `execution_dag.tasks` in `.pm/pm_manifest.json`.
|
|
42
42
|
|
|
43
43
|
## Manifest protocol
|
|
44
44
|
|
|
@@ -47,8 +47,8 @@ The manifest must include project metadata, product blueprint paths, execution D
|
|
|
47
47
|
## Required verification
|
|
48
48
|
|
|
49
49
|
```bash
|
|
50
|
-
test -f .
|
|
51
|
-
node -e "JSON.parse(require('fs').readFileSync('.
|
|
50
|
+
test -f .pm/pm_manifest.json
|
|
51
|
+
node -e "JSON.parse(require('fs').readFileSync('.pm/pm_manifest.json','utf8')); console.log('VALID')"
|
|
52
52
|
test -f docs/prd.md
|
|
53
53
|
test -f docs/trd.md
|
|
54
54
|
test -f docs/db-schema.md
|
|
@@ -24,14 +24,14 @@ full context on delegation, and technical honesty through blockers instead of gu
|
|
|
24
24
|
|
|
25
25
|
@function_tool
|
|
26
26
|
def read_pm_manifest(project_root: str) -> str:
|
|
27
|
-
"""Read .
|
|
27
|
+
"""Read .pm/pm_manifest.json for Oh My PM and Dev-Harness coordination."""
|
|
28
28
|
manifest_path = Path(project_root) / ".parkops" / "pm_manifest.json"
|
|
29
29
|
return manifest_path.read_text(encoding="utf-8")
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
@function_tool
|
|
33
33
|
def write_pm_manifest(project_root: str, manifest_json: str) -> str:
|
|
34
|
-
"""Write a validated Oh My PM manifest JSON payload to .
|
|
34
|
+
"""Write a validated Oh My PM manifest JSON payload to .pm/pm_manifest.json."""
|
|
35
35
|
parsed = json.loads(manifest_json)
|
|
36
36
|
manifest_path = Path(project_root) / ".parkops" / "pm_manifest.json"
|
|
37
37
|
manifest_path.parent.mkdir(parents=True, exist_ok=True)
|
|
@@ -6,7 +6,7 @@ This project uses Oh My PM as a Product Management agent team for PRD, TRD, UX f
|
|
|
6
6
|
|
|
7
7
|
| Trigger | Agent | Output |
|
|
8
8
|
| --- | --- | --- |
|
|
9
|
-
| idea, discovery, scope, goals, approval | JC | Orchestration and `.
|
|
9
|
+
| idea, discovery, scope, goals, approval | JC | Orchestration and `.pm/pm_manifest.json` |
|
|
10
10
|
| PRD, requirements, product rules, user stories, acceptance criteria | Hammurabi | `docs/prd.md` |
|
|
11
11
|
| UX, UI, flows, screens, Mermaid, journey | DaVinci | `docs/flows/*.md` |
|
|
12
12
|
| TRD, architecture, API, database, schema | Ada | `docs/trd.md`, `docs/db-schema.md` |
|
|
@@ -17,13 +17,13 @@ This project uses Oh My PM as a Product Management agent team for PRD, TRD, UX f
|
|
|
17
17
|
1. JC receives the product intent and runs discovery.
|
|
18
18
|
2. JC delegates with complete context when a specialist lane is needed.
|
|
19
19
|
3. Each specialist writes its artifact and validates it.
|
|
20
|
-
4. Blockers are written to `_workspace/{agent}/feedback/latest.md` and `.
|
|
20
|
+
4. Blockers are written to `_workspace/{agent}/feedback/latest.md` and `.pm/pm_manifest.json`.
|
|
21
21
|
5. SunTzu consolidates the execution DAG.
|
|
22
22
|
6. JC validates JSON, cross-references, and lifecycle status before asking for approval.
|
|
23
23
|
|
|
24
24
|
## Contract rules
|
|
25
25
|
|
|
26
|
-
- `.
|
|
26
|
+
- `.pm/pm_manifest.json` is the only contract with Dev-Harness.
|
|
27
27
|
- No agent duplicates work delegated to another lane.
|
|
28
28
|
- Every handoff includes file paths, prior decisions, constraints, expected artifacts, and verification commands.
|
|
29
29
|
- If there is contradiction, do not invent an answer. Write an open blocker.
|
|
@@ -35,4 +35,4 @@ This project uses Oh My PM as a Product Management agent team for PRD, TRD, UX f
|
|
|
35
35
|
- Working memory: `_workspace/{agent}/working/`
|
|
36
36
|
- Feedback: `_workspace/{agent}/feedback/`
|
|
37
37
|
- Product docs: `docs/`
|
|
38
|
-
- Contract: `.
|
|
38
|
+
- Contract: `.pm/pm_manifest.json`
|
|
@@ -24,14 +24,14 @@ Activate when user input contains:
|
|
|
24
24
|
## Working Principles
|
|
25
25
|
- Lane specialization: operate only inside your domain and return complete context to JC.
|
|
26
26
|
- Verification before completion: never report "done" without reproducible evidence.
|
|
27
|
-
- Contract-based communication: update `.
|
|
27
|
+
- Contract-based communication: update `.pm/pm_manifest.json`; do not rely on side-channel agreements.
|
|
28
28
|
- Full context on delegation: if you invoke another agent, pass paths, decisions, constraints, and exit criteria.
|
|
29
29
|
- Technical honesty: document `AMBIGUITY` or `BLOCKER` when input is contradictory or underspecified.
|
|
30
30
|
|
|
31
31
|
## Verification Gates
|
|
32
32
|
- **Artifact exists**: `[ -f "docs/trd.md" ] && echo "EXISTS" || echo "MISSING"`
|
|
33
33
|
- **Validation**: `grep -q "## API" docs/trd.md && grep -q "## Data Model" docs/db-schema.md && echo "VALID"`
|
|
34
|
-
- **Integrity**: `grep -q "docs/trd.md" .
|
|
34
|
+
- **Integrity**: `grep -q "docs/trd.md" .pm/pm_manifest.json && grep -q "docs/db-schema.md" .pm/pm_manifest.json && echo "LINKED"`
|
|
35
35
|
|
|
36
36
|
## QA Scenarios
|
|
37
37
|
### Happy Path
|
|
@@ -53,5 +53,5 @@ Activate when user input contains:
|
|
|
53
53
|
## Integration
|
|
54
54
|
The runtime plugin registers this agent in OpenCode via `config.agent`.
|
|
55
55
|
JC activates specialist lanes through delegation when input matches ## Triggers.
|
|
56
|
-
Agent operates autonomously, writes its artifact, and updates `.
|
|
56
|
+
Agent operates autonomously, writes its artifact, and updates `.pm/pm_manifest.json`.
|
|
57
57
|
Do not report "done" without passing Verification Gates.
|
|
@@ -24,14 +24,14 @@ Activate when user input contains:
|
|
|
24
24
|
## Working Principles
|
|
25
25
|
- Lane specialization: operate only inside your domain and return complete context to JC.
|
|
26
26
|
- Verification before completion: never report "done" without reproducible evidence.
|
|
27
|
-
- Contract-based communication: update `.
|
|
27
|
+
- Contract-based communication: update `.pm/pm_manifest.json`; do not rely on side-channel agreements.
|
|
28
28
|
- Full context on delegation: if you invoke another agent, pass paths, decisions, constraints, and exit criteria.
|
|
29
29
|
- Technical honesty: document `AMBIGUITY` or `BLOCKER` when input is contradictory or underspecified.
|
|
30
30
|
|
|
31
31
|
## Verification Gates
|
|
32
32
|
- **Artifact exists**: `[ -f "docs/flows/main-flow.md" ] && echo "EXISTS" || echo "MISSING"`
|
|
33
33
|
- **Validation**: `grep -Eq "^(flowchart|graph|sequenceDiagram|stateDiagram|erDiagram)" docs/flows/main-flow.md && echo "VALID"`
|
|
34
|
-
- **Integrity**: `grep -q "docs/flows" .
|
|
34
|
+
- **Integrity**: `grep -q "docs/flows" .pm/pm_manifest.json && echo "LINKED"`
|
|
35
35
|
|
|
36
36
|
## QA Scenarios
|
|
37
37
|
### Happy Path
|
|
@@ -53,5 +53,5 @@ Activate when user input contains:
|
|
|
53
53
|
## Integration
|
|
54
54
|
The runtime plugin registers this agent in OpenCode via `config.agent`.
|
|
55
55
|
JC activates specialist lanes through delegation when input matches ## Triggers.
|
|
56
|
-
Agent operates autonomously, writes its artifact, and updates `.
|
|
56
|
+
Agent operates autonomously, writes its artifact, and updates `.pm/pm_manifest.json`.
|
|
57
57
|
Do not report "done" without passing Verification Gates.
|
|
@@ -24,14 +24,14 @@ Activate when user input contains:
|
|
|
24
24
|
## Working Principles
|
|
25
25
|
- Lane specialization: operate only inside your domain and return complete context to JC.
|
|
26
26
|
- Verification before completion: never report "done" without reproducible evidence.
|
|
27
|
-
- Contract-based communication: update `.
|
|
27
|
+
- Contract-based communication: update `.pm/pm_manifest.json`; do not rely on side-channel agreements.
|
|
28
28
|
- Full context on delegation: if you invoke another agent, pass paths, decisions, constraints, and exit criteria.
|
|
29
29
|
- Technical honesty: document `AMBIGUITY` or `BLOCKER` when input is contradictory or underspecified.
|
|
30
30
|
|
|
31
31
|
## Verification Gates
|
|
32
32
|
- **Artifact exists**: `[ -f "docs/prd.md" ] && echo "EXISTS" || echo "MISSING"`
|
|
33
33
|
- **Validation**: `grep -q "## Acceptance Criteria" docs/prd.md && echo "VALID"`
|
|
34
|
-
- **Integrity**: `grep -q "docs/prd.md" .
|
|
34
|
+
- **Integrity**: `grep -q "docs/prd.md" .pm/pm_manifest.json && echo "LINKED"`
|
|
35
35
|
|
|
36
36
|
## QA Scenarios
|
|
37
37
|
### Happy Path
|
|
@@ -53,5 +53,5 @@ Activate when user input contains:
|
|
|
53
53
|
## Integration
|
|
54
54
|
The runtime plugin registers this agent in OpenCode via `config.agent`.
|
|
55
55
|
JC activates specialist lanes through delegation when input matches ## Triggers.
|
|
56
|
-
Agent operates autonomously, writes its artifact, and updates `.
|
|
56
|
+
Agent operates autonomously, writes its artifact, and updates `.pm/pm_manifest.json`.
|
|
57
57
|
Do not report "done" without passing Verification Gates.
|
|
@@ -13,7 +13,7 @@ description: "Discovery orchestrator — activates for product intent, decompose
|
|
|
13
13
|
## Core Responsibilities
|
|
14
14
|
1. Run discovery and turn product intent into verifiable decisions.
|
|
15
15
|
2. Delegate PRD, flows, TRD, and DAG work to specialist lanes without duplicating work.
|
|
16
|
-
3. Validate that `.
|
|
16
|
+
3. Validate that `.pm/pm_manifest.json` is complete before asking for approval.
|
|
17
17
|
|
|
18
18
|
## Triggers
|
|
19
19
|
Activate when user input contains:
|
|
@@ -24,20 +24,20 @@ Activate when user input contains:
|
|
|
24
24
|
## Working Principles
|
|
25
25
|
- Lane specialization: operate only inside your domain and return complete context to JC.
|
|
26
26
|
- Verification before completion: never report "done" without reproducible evidence.
|
|
27
|
-
- Contract-based communication: update `.
|
|
27
|
+
- Contract-based communication: update `.pm/pm_manifest.json`; do not rely on side-channel agreements.
|
|
28
28
|
- Full context on delegation: if you invoke another agent, pass paths, decisions, constraints, and exit criteria.
|
|
29
29
|
- Technical honesty: document `AMBIGUITY` or `BLOCKER` when input is contradictory or underspecified.
|
|
30
30
|
|
|
31
31
|
## Verification Gates
|
|
32
|
-
- **Artifact exists**: `[ -f ".
|
|
33
|
-
- **Validation**: `node -e "JSON.parse(require('fs').readFileSync('.
|
|
34
|
-
- **Integrity**: `grep -q "docs/prd.md" .
|
|
32
|
+
- **Artifact exists**: `[ -f ".pm/pm_manifest.json" ] && echo "EXISTS" || echo "MISSING"`
|
|
33
|
+
- **Validation**: `node -e "JSON.parse(require('fs').readFileSync('.pm/pm_manifest.json','utf8')); console.log('VALID')"`
|
|
34
|
+
- **Integrity**: `grep -q "docs/prd.md" .pm/pm_manifest.json && grep -q "execution_dag" .pm/pm_manifest.json && echo "LINKED"`
|
|
35
35
|
|
|
36
36
|
## QA Scenarios
|
|
37
37
|
### Happy Path
|
|
38
38
|
**Input**: "I want to plan a SaaS app with onboarding, roles, and payments"
|
|
39
39
|
**Expected**: Agent produces its specific artifact.
|
|
40
|
-
**Verify**: `[ -f ".
|
|
40
|
+
**Verify**: `[ -f ".pm/pm_manifest.json" ] && echo "PASS"`
|
|
41
41
|
**Evidence**: Path to generated file.
|
|
42
42
|
|
|
43
43
|
### Error Path
|
|
@@ -53,5 +53,5 @@ Activate when user input contains:
|
|
|
53
53
|
## Integration
|
|
54
54
|
The runtime plugin registers this agent in OpenCode via `config.agent`.
|
|
55
55
|
JC activates specialist lanes through delegation when input matches ## Triggers.
|
|
56
|
-
Agent operates autonomously, writes its artifact, and updates `.
|
|
56
|
+
Agent operates autonomously, writes its artifact, and updates `.pm/pm_manifest.json`.
|
|
57
57
|
Do not report "done" without passing Verification Gates.
|
|
@@ -7,7 +7,7 @@ description: Configure and improve Oh My PM for the current user. Use when users
|
|
|
7
7
|
|
|
8
8
|
You help users configure, customize, and safely improve their Oh My PM setup.
|
|
9
9
|
|
|
10
|
-
Oh My PM installs a Product Management agent team (JC, Hammurabi, DaVinci, Ada, SunTzu) and coordinates with Dev-Harness through `.
|
|
10
|
+
Oh My PM installs a Product Management agent team (JC, Hammurabi, DaVinci, Ada, SunTzu) and coordinates with Dev-Harness through `.pm/pm_manifest.json`.
|
|
11
11
|
|
|
12
12
|
## When to use
|
|
13
13
|
|
|
@@ -12,7 +12,7 @@ description: "Execution strategist — activates for DAG planning, sequencing, D
|
|
|
12
12
|
|
|
13
13
|
## Core Responsibilities
|
|
14
14
|
1. Build `docs/execution-plan.md` with phases, dependencies, risks, and gates.
|
|
15
|
-
2. Update `execution_dag.tasks` in `.
|
|
15
|
+
2. Update `execution_dag.tasks` in `.pm/pm_manifest.json`.
|
|
16
16
|
3. Validate JSON, references, and executable criteria before Dev-Harness handoff.
|
|
17
17
|
|
|
18
18
|
## Triggers
|
|
@@ -24,14 +24,14 @@ Activate when user input contains:
|
|
|
24
24
|
## Working Principles
|
|
25
25
|
- Lane specialization: operate only inside your domain and return complete context to JC.
|
|
26
26
|
- Verification before completion: never report "done" without reproducible evidence.
|
|
27
|
-
- Contract-based communication: update `.
|
|
27
|
+
- Contract-based communication: update `.pm/pm_manifest.json`; do not rely on side-channel agreements.
|
|
28
28
|
- Full context on delegation: if you invoke another agent, pass paths, decisions, constraints, and exit criteria.
|
|
29
29
|
- Technical honesty: document `AMBIGUITY` or `BLOCKER` when input is contradictory or underspecified.
|
|
30
30
|
|
|
31
31
|
## Verification Gates
|
|
32
32
|
- **Artifact exists**: `[ -f "docs/execution-plan.md" ] && echo "EXISTS" || echo "MISSING"`
|
|
33
|
-
- **Validation**: `node -e "const m=JSON.parse(require('fs').readFileSync('.
|
|
34
|
-
- **Integrity**: `grep -q "verification_criteria" .
|
|
33
|
+
- **Validation**: `node -e "const m=JSON.parse(require('fs').readFileSync('.pm/pm_manifest.json','utf8')); if(!Array.isArray(m.execution_dag.tasks)) process.exit(1); console.log('VALID')"`
|
|
34
|
+
- **Integrity**: `grep -q "verification_criteria" .pm/pm_manifest.json && echo "LINKED"`
|
|
35
35
|
|
|
36
36
|
## QA Scenarios
|
|
37
37
|
### Happy Path
|
|
@@ -53,5 +53,5 @@ Activate when user input contains:
|
|
|
53
53
|
## Integration
|
|
54
54
|
The runtime plugin registers this agent in OpenCode via `config.agent`.
|
|
55
55
|
JC activates specialist lanes through delegation when input matches ## Triggers.
|
|
56
|
-
Agent operates autonomously, writes its artifact, and updates `.
|
|
56
|
+
Agent operates autonomously, writes its artifact, and updates `.pm/pm_manifest.json`.
|
|
57
57
|
Do not report "done" without passing Verification Gates.
|