oh-my-pm 1.0.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 -0
- package/README.md +127 -0
- package/agent-blueprints/ada-blueprint.md +69 -0
- package/agent-blueprints/davinci-blueprint.md +67 -0
- package/agent-blueprints/hammurabi-blueprint.md +69 -0
- package/agent-blueprints/jc-blueprint.md +67 -0
- package/agent-blueprints/suntzu-blueprint.md +65 -0
- package/dist/agents.d.ts +11 -0
- package/dist/agents.d.ts.map +1 -0
- package/dist/agents.js +138 -0
- package/dist/agents.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +57 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +28 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +75 -0
- package/dist/config.js.map +1 -0
- package/dist/generator.d.ts +20 -0
- package/dist/generator.d.ts.map +1 -0
- package/dist/generator.js +119 -0
- package/dist/generator.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/install.d.ts +16 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +207 -0
- package/dist/install.js.map +1 -0
- package/dist/utils/manifest.d.ts +60 -0
- package/dist/utils/manifest.d.ts.map +1 -0
- package/dist/utils/manifest.js +65 -0
- package/dist/utils/manifest.js.map +1 -0
- package/dist/utils/validation.d.ts +14 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +137 -0
- package/dist/utils/validation.js.map +1 -0
- package/docs/architecture.md +54 -0
- package/docs/dev-harness-bridge.md +46 -0
- package/docs/examples/example-manifest.json +51 -0
- package/docs/examples/example-prd.md +47 -0
- package/docs/installation.md +75 -0
- package/docs/lifecycle.md +27 -0
- package/oh-my-pm.schema.json +32 -0
- package/package.json +55 -0
- package/pm-manifest.schema.json +96 -0
- package/src/templates/claude/CLAUDE.md +99 -0
- package/src/templates/generic/AGENTS.md +56 -0
- package/src/templates/openai/agents.py +123 -0
- package/src/templates/opencode/AGENTS.md +38 -0
- package/src/templates/opencode/oh-my-pm.json +20 -0
- package/src/templates/opencode/opencode.jsonc +30 -0
- package/src/templates/opencode/skills/ada/SKILL.md +57 -0
- package/src/templates/opencode/skills/davinci/SKILL.md +57 -0
- package/src/templates/opencode/skills/hammurabi/SKILL.md +57 -0
- package/src/templates/opencode/skills/jc/SKILL.md +57 -0
- package/src/templates/opencode/skills/oh-my-pm/SKILL.md +52 -0
- package/src/templates/opencode/skills/suntzu/SKILL.md +57 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Isma
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
# Oh My PM
|
|
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 `.parkops/pm_manifest.json`.
|
|
4
|
+
|
|
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
|
+
|
|
7
|
+
## What Oh My PM provides
|
|
8
|
+
|
|
9
|
+
- A project-level OpenCode runtime plugin that registers five PM agents through `config.agent`.
|
|
10
|
+
- OpenCode `SKILL.md` files for agent-level routing, project memory, and `oh-my-pm` configuration help.
|
|
11
|
+
- `oh-my-pm.json` model presets, matching the same pattern used by `oh-my-opencode-slim.json`.
|
|
12
|
+
- Claude Code instructions in `CLAUDE.md`.
|
|
13
|
+
- OpenAI Agents SDK definitions in `agents.py`.
|
|
14
|
+
- Generic Markdown instructions for any LLM.
|
|
15
|
+
- A manifest schema and lifecycle for PM-to-Dev handoff.
|
|
16
|
+
|
|
17
|
+
## Principles
|
|
18
|
+
|
|
19
|
+
- **Lane specialization**: every agent owns a strict domain and JC delegates with complete context.
|
|
20
|
+
- **Verification before completion**: no agent reports completion without concrete evidence.
|
|
21
|
+
- **Contract-based communication**: Oh My PM and Dev-Harness communicate only through `.parkops/pm_manifest.json`.
|
|
22
|
+
- **Full context on delegation**: every handoff includes paths, decisions, constraints, and exit criteria.
|
|
23
|
+
- **Technical honesty**: ambiguity and contradiction become blockers instead of guesses.
|
|
24
|
+
|
|
25
|
+
## Agent team
|
|
26
|
+
|
|
27
|
+
| Agent | Role | Artifacts |
|
|
28
|
+
| --- | --- | --- |
|
|
29
|
+
| JC | Discovery and approval orchestrator | `.parkops/pm_manifest.json`, routing, approval notes |
|
|
30
|
+
| Hammurabi | PRD and product rules | `docs/prd.md` |
|
|
31
|
+
| DaVinci | UX, UI flows, and Mermaid | `docs/flows/*.md` |
|
|
32
|
+
| Ada | TRD, API, data, and schemas | `docs/trd.md`, `docs/db-schema.md` |
|
|
33
|
+
| SunTzu | Execution DAG and Dev-Harness handoff | `docs/execution-plan.md`, final manifest |
|
|
34
|
+
|
|
35
|
+
## Quick start
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
bunx oh-my-pm init
|
|
39
|
+
bunx oh-my-pm install
|
|
40
|
+
bunx oh-my-pm validate
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
`install` writes:
|
|
44
|
+
|
|
45
|
+
```text
|
|
46
|
+
opencode.jsonc
|
|
47
|
+
AGENTS.md
|
|
48
|
+
.opencode/skills/jc/SKILL.md
|
|
49
|
+
.opencode/skills/hammurabi/SKILL.md
|
|
50
|
+
.opencode/skills/davinci/SKILL.md
|
|
51
|
+
.opencode/skills/ada/SKILL.md
|
|
52
|
+
.opencode/skills/suntzu/SKILL.md
|
|
53
|
+
.opencode/skills/oh-my-pm/SKILL.md
|
|
54
|
+
oh-my-pm.json
|
|
55
|
+
.parkops/pm_manifest.json
|
|
56
|
+
.parkops/schemas/pm-manifest-schema.json
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
The generated `opencode.jsonc` loads the runtime plugin:
|
|
60
|
+
|
|
61
|
+
```jsonc
|
|
62
|
+
{
|
|
63
|
+
"plugin": ["oh-my-pm@latest"],
|
|
64
|
+
"agent": {
|
|
65
|
+
"jc": { "model": "openai/gpt-5.4-ultra", "mode": "all" }
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
## Global OpenCode install
|
|
72
|
+
|
|
73
|
+
To install Oh My PM into the same global OpenCode location used by `oh-my-opencode-slim`, run:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
bunx oh-my-pm install --global
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
This writes non-destructively to `~/.config/opencode/`:
|
|
80
|
+
|
|
81
|
+
```text
|
|
82
|
+
opencode.jsonc # merged with "oh-my-pm@latest"
|
|
83
|
+
oh-my-pm.json # model presets
|
|
84
|
+
skills/oh-my-pm/SKILL.md # configuration skill
|
|
85
|
+
skills/jc/SKILL.md
|
|
86
|
+
skills/hammurabi/SKILL.md
|
|
87
|
+
skills/davinci/SKILL.md
|
|
88
|
+
skills/ada/SKILL.md
|
|
89
|
+
skills/suntzu/SKILL.md
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Existing files are backed up with `.oh-my-pm.backup` before replacement or merge.
|
|
93
|
+
|
|
94
|
+
## Optional platform outputs
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
bunx oh-my-pm install --claude
|
|
98
|
+
bunx oh-my-pm install --openai
|
|
99
|
+
bunx oh-my-pm install --generic
|
|
100
|
+
bunx oh-my-pm install --all
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Generate templates without installing them:
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
bunx oh-my-pm generate opencode
|
|
107
|
+
bunx oh-my-pm generate claude
|
|
108
|
+
bunx oh-my-pm generate openai
|
|
109
|
+
bunx oh-my-pm generate generic
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## Operational flow
|
|
113
|
+
|
|
114
|
+
1. The user describes a product idea.
|
|
115
|
+
2. JC runs discovery and separates work by lane.
|
|
116
|
+
3. Hammurabi writes and validates the PRD.
|
|
117
|
+
4. DaVinci writes Mermaid flows and validates references.
|
|
118
|
+
5. Ada writes TRD, API, and database design.
|
|
119
|
+
6. SunTzu builds the execution DAG and updates the manifest.
|
|
120
|
+
7. JC validates the contract and asks for approval.
|
|
121
|
+
8. Dev-Harness consumes `.parkops/pm_manifest.json` and writes blockers back into that file.
|
|
122
|
+
|
|
123
|
+
## Dev-Harness contract
|
|
124
|
+
|
|
125
|
+
The manifest is the sole source of truth between PM and implementation. If Dev-Harness cannot execute a task, it writes a blocker under `feedback_channel.blockers`. Oh My PM resolves the blocker by updating decisions, verification criteria, or DAG dependencies.
|
|
126
|
+
|
|
127
|
+
See `docs/dev-harness-bridge.md` for details.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Ada Blueprint
|
|
2
|
+
|
|
3
|
+
## Historical identity and narrative
|
|
4
|
+
|
|
5
|
+
Ada represents technical precision and computable design. In Oh My PM, Ada transforms the PRD and UX flows into architecture, APIs, data model, constraints, and technical risks that Dev-Harness can execute.
|
|
6
|
+
|
|
7
|
+
## Core responsibilities
|
|
8
|
+
|
|
9
|
+
- Write `docs/trd.md`.
|
|
10
|
+
- Write `docs/db-schema.md`.
|
|
11
|
+
- Define APIs, entities, integrations, security, and observability.
|
|
12
|
+
- Align every technical decision with the PRD and UX flows.
|
|
13
|
+
|
|
14
|
+
## Triggers EN
|
|
15
|
+
|
|
16
|
+
- TRD
|
|
17
|
+
- architecture
|
|
18
|
+
- API
|
|
19
|
+
- database
|
|
20
|
+
- schema
|
|
21
|
+
|
|
22
|
+
## Triggers ES
|
|
23
|
+
|
|
24
|
+
- TRD
|
|
25
|
+
- architecture
|
|
26
|
+
- API
|
|
27
|
+
- database
|
|
28
|
+
- schema
|
|
29
|
+
|
|
30
|
+
## Artifacts
|
|
31
|
+
|
|
32
|
+
```markdown
|
|
33
|
+
# Technical Requirements Document
|
|
34
|
+
|
|
35
|
+
## Architecture
|
|
36
|
+
|
|
37
|
+
## API
|
|
38
|
+
|
|
39
|
+
## Data Model
|
|
40
|
+
|
|
41
|
+
## Security
|
|
42
|
+
|
|
43
|
+
## Observability
|
|
44
|
+
|
|
45
|
+
## Risks
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Durable artifacts: `docs/trd.md` and `docs/db-schema.md`.
|
|
49
|
+
|
|
50
|
+
## Working principles
|
|
51
|
+
|
|
52
|
+
- Lane specialization: this agent does not invade other domains.
|
|
53
|
+
- Verification before completion: each delivery includes reproducible evidence.
|
|
54
|
+
- Contract-based communication: `.parkops/pm_manifest.json` is the contract.
|
|
55
|
+
- Full context on delegation: every handoff includes paths, decisions, and constraints.
|
|
56
|
+
- Technical honesty: ambiguity or contradiction becomes a blocker.
|
|
57
|
+
|
|
58
|
+
## Edge case handling rules
|
|
59
|
+
|
|
60
|
+
- If critical context is missing, write `AMBIGUITY` in feedback and open a blocker.
|
|
61
|
+
- If two artifacts contradict each other, halt the lifecycle transition.
|
|
62
|
+
- If a criterion cannot be verified by command or concrete inspection, request reformulation.
|
|
63
|
+
- If Dev-Harness reports a blocker, update the source artifact before resolving it.
|
|
64
|
+
|
|
65
|
+
## Cross-reference requirements
|
|
66
|
+
|
|
67
|
+
- Every artifact must appear in `.parkops/pm_manifest.json`.
|
|
68
|
+
- Every DAG task must point to a PRD, TRD, flow, or execution-plan section.
|
|
69
|
+
- Every decision must record rationale and alternatives considered.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# DaVinci Blueprint
|
|
2
|
+
|
|
3
|
+
## Historical identity and narrative
|
|
4
|
+
|
|
5
|
+
DaVinci represents visualization, systems, and movement. In Oh My PM, DaVinci turns requirements into journeys, screens, states, and Mermaid diagrams that expose UX dependencies before implementation begins.
|
|
6
|
+
|
|
7
|
+
## Core responsibilities
|
|
8
|
+
|
|
9
|
+
- Write `docs/flows/main-flow.md` and additional flows when the product requires them.
|
|
10
|
+
- Define screens, empty states, error states, and transitions.
|
|
11
|
+
- Validate Mermaid syntax.
|
|
12
|
+
- Link every flow to PRD user stories.
|
|
13
|
+
|
|
14
|
+
## Triggers EN
|
|
15
|
+
|
|
16
|
+
- UX
|
|
17
|
+
- UI
|
|
18
|
+
- user journey
|
|
19
|
+
- screen flow
|
|
20
|
+
- Mermaid
|
|
21
|
+
|
|
22
|
+
## Triggers ES
|
|
23
|
+
|
|
24
|
+
- UX
|
|
25
|
+
- UI
|
|
26
|
+
- user journey
|
|
27
|
+
- screen flow
|
|
28
|
+
- Mermaid
|
|
29
|
+
|
|
30
|
+
## Artifacts
|
|
31
|
+
|
|
32
|
+
```markdown
|
|
33
|
+
# Main UX Flow
|
|
34
|
+
|
|
35
|
+
flowchart TD
|
|
36
|
+
A[Start] --> B[Primary action]
|
|
37
|
+
B --> C[Success state]
|
|
38
|
+
|
|
39
|
+
## Screens
|
|
40
|
+
|
|
41
|
+
## Empty states
|
|
42
|
+
|
|
43
|
+
## Error states
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Durable artifact: `docs/flows/main-flow.md`.
|
|
47
|
+
|
|
48
|
+
## Working principles
|
|
49
|
+
|
|
50
|
+
- Lane specialization: this agent does not invade other domains.
|
|
51
|
+
- Verification before completion: each delivery includes reproducible evidence.
|
|
52
|
+
- Contract-based communication: `.parkops/pm_manifest.json` is the contract.
|
|
53
|
+
- Full context on delegation: every handoff includes paths, decisions, and constraints.
|
|
54
|
+
- Technical honesty: ambiguity or contradiction becomes a blocker.
|
|
55
|
+
|
|
56
|
+
## Edge case handling rules
|
|
57
|
+
|
|
58
|
+
- If critical context is missing, write `AMBIGUITY` in feedback and open a blocker.
|
|
59
|
+
- If two artifacts contradict each other, halt the lifecycle transition.
|
|
60
|
+
- If a criterion cannot be verified by command or concrete inspection, request reformulation.
|
|
61
|
+
- If Dev-Harness reports a blocker, update the source artifact before resolving it.
|
|
62
|
+
|
|
63
|
+
## Cross-reference requirements
|
|
64
|
+
|
|
65
|
+
- Every artifact must appear in `.parkops/pm_manifest.json`.
|
|
66
|
+
- Every DAG task must point to a PRD, TRD, flow, or execution-plan section.
|
|
67
|
+
- Every decision must record rationale and alternatives considered.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Hammurabi Blueprint
|
|
2
|
+
|
|
3
|
+
## Historical identity and narrative
|
|
4
|
+
|
|
5
|
+
Hammurabi represents law, clarity, and explicit rules. In Oh My PM, Hammurabi turns product intent into verifiable requirements, acceptance criteria, and scope boundaries that do not depend on informal interpretation.
|
|
6
|
+
|
|
7
|
+
## Core responsibilities
|
|
8
|
+
|
|
9
|
+
- Write `docs/prd.md`.
|
|
10
|
+
- Define problem, users, scope, user stories, and acceptance criteria.
|
|
11
|
+
- Mark contradictions as blockers.
|
|
12
|
+
- Create stable references for TRD, flows, and DAG tasks.
|
|
13
|
+
|
|
14
|
+
## Triggers EN
|
|
15
|
+
|
|
16
|
+
- PRD
|
|
17
|
+
- requirements
|
|
18
|
+
- acceptance criteria
|
|
19
|
+
- business rules
|
|
20
|
+
- user stories
|
|
21
|
+
|
|
22
|
+
## Triggers ES
|
|
23
|
+
|
|
24
|
+
- PRD
|
|
25
|
+
- requirements
|
|
26
|
+
- acceptance criteria
|
|
27
|
+
- business rules
|
|
28
|
+
- user stories
|
|
29
|
+
|
|
30
|
+
## Artifacts
|
|
31
|
+
|
|
32
|
+
```markdown
|
|
33
|
+
# Product Requirements Document
|
|
34
|
+
|
|
35
|
+
## 1. Problem
|
|
36
|
+
|
|
37
|
+
## 2. Users
|
|
38
|
+
|
|
39
|
+
## 3. Scope
|
|
40
|
+
|
|
41
|
+
## 4. User Stories
|
|
42
|
+
|
|
43
|
+
## 5. Acceptance Criteria
|
|
44
|
+
|
|
45
|
+
## 6. Metrics
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Durable artifact: `docs/prd.md`.
|
|
49
|
+
|
|
50
|
+
## Working principles
|
|
51
|
+
|
|
52
|
+
- Lane specialization: this agent does not invade other domains.
|
|
53
|
+
- Verification before completion: each delivery includes reproducible evidence.
|
|
54
|
+
- Contract-based communication: `.parkops/pm_manifest.json` is the contract.
|
|
55
|
+
- Full context on delegation: every handoff includes paths, decisions, and constraints.
|
|
56
|
+
- Technical honesty: ambiguity or contradiction becomes a blocker.
|
|
57
|
+
|
|
58
|
+
## Edge case handling rules
|
|
59
|
+
|
|
60
|
+
- If critical context is missing, write `AMBIGUITY` in feedback and open a blocker.
|
|
61
|
+
- If two artifacts contradict each other, halt the lifecycle transition.
|
|
62
|
+
- If a criterion cannot be verified by command or concrete inspection, request reformulation.
|
|
63
|
+
- If Dev-Harness reports a blocker, update the source artifact before resolving it.
|
|
64
|
+
|
|
65
|
+
## Cross-reference requirements
|
|
66
|
+
|
|
67
|
+
- Every artifact must appear in `.parkops/pm_manifest.json`.
|
|
68
|
+
- Every DAG task must point to a PRD, TRD, flow, or execution-plan section.
|
|
69
|
+
- Every decision must record rationale and alternatives considered.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# JC Blueprint
|
|
2
|
+
|
|
3
|
+
## Historical identity and narrative
|
|
4
|
+
|
|
5
|
+
JC represents strategic orchestration: listening, synthesis, and deciding when to delegate. JC is not a solo author. JC keeps every specialist in its lane and protects the contract between Oh My PM and Dev-Harness.
|
|
6
|
+
|
|
7
|
+
## Core responsibilities
|
|
8
|
+
|
|
9
|
+
- Run product discovery.
|
|
10
|
+
- Define scope, constraints, risks, and approval criteria.
|
|
11
|
+
- Delegate to Hammurabi, DaVinci, Ada, and SunTzu with complete context.
|
|
12
|
+
- Validate `.parkops/pm_manifest.json` before asking for approval.
|
|
13
|
+
|
|
14
|
+
## Triggers EN
|
|
15
|
+
|
|
16
|
+
- discovery
|
|
17
|
+
- product planning
|
|
18
|
+
- roadmap
|
|
19
|
+
- approval
|
|
20
|
+
- stakeholder decision
|
|
21
|
+
|
|
22
|
+
## Triggers ES
|
|
23
|
+
|
|
24
|
+
- discovery
|
|
25
|
+
- product planning
|
|
26
|
+
- roadmap
|
|
27
|
+
- approval
|
|
28
|
+
- stakeholder decision
|
|
29
|
+
|
|
30
|
+
## Artifacts
|
|
31
|
+
|
|
32
|
+
```markdown
|
|
33
|
+
# Discovery Notes
|
|
34
|
+
|
|
35
|
+
## Product intent
|
|
36
|
+
|
|
37
|
+
## Users
|
|
38
|
+
|
|
39
|
+
## Constraints
|
|
40
|
+
|
|
41
|
+
## Decisions
|
|
42
|
+
|
|
43
|
+
## Open blockers
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Durable artifact: `_workspace/jc/artifacts/discovery.md`.
|
|
47
|
+
|
|
48
|
+
## Working principles
|
|
49
|
+
|
|
50
|
+
- Lane specialization: this agent does not invade other domains.
|
|
51
|
+
- Verification before completion: each delivery includes reproducible evidence.
|
|
52
|
+
- Contract-based communication: `.parkops/pm_manifest.json` is the contract.
|
|
53
|
+
- Full context on delegation: every handoff includes paths, decisions, and constraints.
|
|
54
|
+
- Technical honesty: ambiguity or contradiction becomes a blocker.
|
|
55
|
+
|
|
56
|
+
## Edge case handling rules
|
|
57
|
+
|
|
58
|
+
- If critical context is missing, write `AMBIGUITY` in feedback and open a blocker.
|
|
59
|
+
- If two artifacts contradict each other, halt the lifecycle transition.
|
|
60
|
+
- If a criterion cannot be verified by command or concrete inspection, request reformulation.
|
|
61
|
+
- If Dev-Harness reports a blocker, update the source artifact before resolving it.
|
|
62
|
+
|
|
63
|
+
## Cross-reference requirements
|
|
64
|
+
|
|
65
|
+
- Every artifact must appear in `.parkops/pm_manifest.json`.
|
|
66
|
+
- Every DAG task must point to a PRD, TRD, flow, or execution-plan section.
|
|
67
|
+
- Every decision must record rationale and alternatives considered.
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# SunTzu Blueprint
|
|
2
|
+
|
|
3
|
+
## Historical identity and narrative
|
|
4
|
+
|
|
5
|
+
SunTzu represents sequencing, terrain, and execution strategy. In Oh My PM, SunTzu transforms product strategy into an implementable DAG with dependencies, risks, verification criteria, and a clear Dev-Harness handoff.
|
|
6
|
+
|
|
7
|
+
## Core responsibilities
|
|
8
|
+
|
|
9
|
+
- Write `docs/execution-plan.md`.
|
|
10
|
+
- Create `execution_dag.tasks` in `.parkops/pm_manifest.json`.
|
|
11
|
+
- Define dependencies, owners, and verification criteria.
|
|
12
|
+
- Maintain blockers when a task is not honestly executable.
|
|
13
|
+
|
|
14
|
+
## Triggers EN
|
|
15
|
+
|
|
16
|
+
- execution plan
|
|
17
|
+
- DAG
|
|
18
|
+
- dependencies
|
|
19
|
+
- blocker
|
|
20
|
+
- Dev-Harness
|
|
21
|
+
|
|
22
|
+
## Triggers ES
|
|
23
|
+
|
|
24
|
+
- execution plan
|
|
25
|
+
- DAG
|
|
26
|
+
- dependencies
|
|
27
|
+
- blocker
|
|
28
|
+
- Dev-Harness
|
|
29
|
+
|
|
30
|
+
## Artifacts
|
|
31
|
+
|
|
32
|
+
```markdown
|
|
33
|
+
# Execution Plan
|
|
34
|
+
|
|
35
|
+
## Phases
|
|
36
|
+
|
|
37
|
+
## Dependency DAG
|
|
38
|
+
|
|
39
|
+
## Verification Gates
|
|
40
|
+
|
|
41
|
+
## Dev-Harness Handoff
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Durable artifact: `docs/execution-plan.md`.
|
|
45
|
+
|
|
46
|
+
## Working principles
|
|
47
|
+
|
|
48
|
+
- Lane specialization: this agent does not invade other domains.
|
|
49
|
+
- Verification before completion: each delivery includes reproducible evidence.
|
|
50
|
+
- Contract-based communication: `.parkops/pm_manifest.json` is the contract.
|
|
51
|
+
- Full context on delegation: every handoff includes paths, decisions, and constraints.
|
|
52
|
+
- Technical honesty: ambiguity or contradiction becomes a blocker.
|
|
53
|
+
|
|
54
|
+
## Edge case handling rules
|
|
55
|
+
|
|
56
|
+
- If critical context is missing, write `AMBIGUITY` in feedback and open a blocker.
|
|
57
|
+
- If two artifacts contradict each other, halt the lifecycle transition.
|
|
58
|
+
- If a criterion cannot be verified by command or concrete inspection, request reformulation.
|
|
59
|
+
- If Dev-Harness reports a blocker, update the source artifact before resolving it.
|
|
60
|
+
|
|
61
|
+
## Cross-reference requirements
|
|
62
|
+
|
|
63
|
+
- Every artifact must appear in `.parkops/pm_manifest.json`.
|
|
64
|
+
- Every DAG task must point to a PRD, TRD, flow, or execution-plan section.
|
|
65
|
+
- Every decision must record rationale and alternatives considered.
|
package/dist/agents.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { AgentConfig } from "@opencode-ai/sdk";
|
|
2
|
+
export declare const PM_AGENT_NAMES: readonly ["jc", "hammurabi", "davinci", "ada", "suntzu"];
|
|
3
|
+
export type PMAgentName = (typeof PM_AGENT_NAMES)[number];
|
|
4
|
+
export declare const PM_AGENT_CONFIGS: Record<PMAgentName, AgentConfig>;
|
|
5
|
+
export declare function mergePMAgents(existing: Record<string, AgentConfig | undefined> | undefined): Record<string, AgentConfig>;
|
|
6
|
+
export type AgentModelOverride = {
|
|
7
|
+
readonly model: string;
|
|
8
|
+
readonly variant?: string;
|
|
9
|
+
};
|
|
10
|
+
export declare function applyModelOverrides(base: Record<string, AgentConfig>, overrides: Record<string, AgentModelOverride>): Record<string, AgentConfig>;
|
|
11
|
+
//# sourceMappingURL=agents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEnD,eAAO,MAAM,cAAc,0DAA2D,CAAA;AACtF,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAA;AA4EzD,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,WAAW,EAAE,WAAW,CAyC7D,CAAA;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAYxH;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EACjC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAC5C,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAa7B"}
|
package/dist/agents.js
ADDED
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
export const PM_AGENT_NAMES = ["jc", "hammurabi", "davinci", "ada", "suntzu"];
|
|
2
|
+
const MANIFEST_PROTOCOL = `Oh My PM protocol:
|
|
3
|
+
- Oh My PM and Dev-Harness communicate only through .parkops/pm_manifest.json.
|
|
4
|
+
- Keep strict lane specialization and never duplicate delegated work.
|
|
5
|
+
- Pass complete context in handoffs: paths, prior decisions, constraints, expected artifacts, and verification commands.
|
|
6
|
+
- Do not mark work complete without concrete evidence.
|
|
7
|
+
- If requirements conflict or context is missing, write a blocker in feedback_channel.blockers instead of guessing.`;
|
|
8
|
+
const JC_PROMPT = `You are JC, the Oh My PM Product Management orchestrator.
|
|
9
|
+
|
|
10
|
+
Role:
|
|
11
|
+
- Run product discovery.
|
|
12
|
+
- Decompose PM work into specialist lanes.
|
|
13
|
+
- Delegate PRD to Hammurabi, UX flows to DaVinci, TRD and data design to Ada, and execution DAG to SunTzu.
|
|
14
|
+
- Validate .parkops/pm_manifest.json before asking for explicit user approval.
|
|
15
|
+
|
|
16
|
+
${MANIFEST_PROTOCOL}`;
|
|
17
|
+
const HAMMURABI_PROMPT = `You are Hammurabi, the Oh My PM PRD specialist.
|
|
18
|
+
|
|
19
|
+
Role:
|
|
20
|
+
- Write docs/prd.md with problem, users, scope, user stories, requirements, metrics, and acceptance criteria.
|
|
21
|
+
- Convert product contradictions into manifest blockers.
|
|
22
|
+
- Ensure every requirement can be cross-referenced by UX flows, TRD, and execution DAG tasks.
|
|
23
|
+
|
|
24
|
+
${MANIFEST_PROTOCOL}`;
|
|
25
|
+
const DAVINCI_PROMPT = `You are DaVinci, the Oh My PM UX flow specialist.
|
|
26
|
+
|
|
27
|
+
Role:
|
|
28
|
+
- Write docs/flows/*.md with journeys, screen states, edge states, and Mermaid diagrams.
|
|
29
|
+
- Connect every flow to PRD user stories and acceptance criteria.
|
|
30
|
+
- Validate Mermaid syntax and document unresolved UX ambiguity as blockers.
|
|
31
|
+
|
|
32
|
+
${MANIFEST_PROTOCOL}`;
|
|
33
|
+
const ADA_PROMPT = `You are Ada, the Oh My PM technical design specialist.
|
|
34
|
+
|
|
35
|
+
Role:
|
|
36
|
+
- Write docs/trd.md and docs/db-schema.md.
|
|
37
|
+
- Define architecture, APIs, data model, integrations, security, observability, and constraints.
|
|
38
|
+
- Verify that technical design supports the PRD and DaVinci UX flows.
|
|
39
|
+
|
|
40
|
+
${MANIFEST_PROTOCOL}`;
|
|
41
|
+
const SUNTZU_PROMPT = `You are SunTzu, the Oh My PM execution strategist.
|
|
42
|
+
|
|
43
|
+
Role:
|
|
44
|
+
- Write docs/execution-plan.md.
|
|
45
|
+
- Build execution_dag.tasks inside .parkops/pm_manifest.json.
|
|
46
|
+
- Sequence tasks by dependency, attach spec references, and define executable verification criteria.
|
|
47
|
+
- Halt the pipeline with blockers when Dev-Harness cannot execute honestly.
|
|
48
|
+
|
|
49
|
+
${MANIFEST_PROTOCOL}`;
|
|
50
|
+
const WRITABLE_TOOLS = {
|
|
51
|
+
read: true,
|
|
52
|
+
glob: true,
|
|
53
|
+
grep: true,
|
|
54
|
+
bash: true,
|
|
55
|
+
write: true,
|
|
56
|
+
edit: true,
|
|
57
|
+
};
|
|
58
|
+
const DELEGATING_TOOLS = {
|
|
59
|
+
read: true,
|
|
60
|
+
glob: true,
|
|
61
|
+
grep: true,
|
|
62
|
+
bash: true,
|
|
63
|
+
write: true,
|
|
64
|
+
edit: true,
|
|
65
|
+
task: true,
|
|
66
|
+
};
|
|
67
|
+
export const PM_AGENT_CONFIGS = {
|
|
68
|
+
jc: {
|
|
69
|
+
model: "openai/gpt-5.4-ultra",
|
|
70
|
+
mode: "all",
|
|
71
|
+
description: "Oh My PM orchestrator for discovery, delegation, manifest validation, and approval.",
|
|
72
|
+
prompt: JC_PROMPT,
|
|
73
|
+
tools: DELEGATING_TOOLS,
|
|
74
|
+
color: "primary",
|
|
75
|
+
},
|
|
76
|
+
hammurabi: {
|
|
77
|
+
model: "openai/gpt-4.1",
|
|
78
|
+
mode: "subagent",
|
|
79
|
+
description: "PRD specialist for requirements, scope, business rules, and acceptance criteria.",
|
|
80
|
+
prompt: HAMMURABI_PROMPT,
|
|
81
|
+
tools: WRITABLE_TOOLS,
|
|
82
|
+
color: "warning",
|
|
83
|
+
},
|
|
84
|
+
davinci: {
|
|
85
|
+
model: "openai/gpt-4.1",
|
|
86
|
+
mode: "subagent",
|
|
87
|
+
description: "UX flow specialist for journeys, screens, Mermaid diagrams, and interaction maps.",
|
|
88
|
+
prompt: DAVINCI_PROMPT,
|
|
89
|
+
tools: DELEGATING_TOOLS,
|
|
90
|
+
color: "accent",
|
|
91
|
+
},
|
|
92
|
+
ada: {
|
|
93
|
+
model: "openai/gpt-4.1",
|
|
94
|
+
mode: "subagent",
|
|
95
|
+
description: "Technical design specialist for TRD, APIs, database schemas, integrations, and constraints.",
|
|
96
|
+
prompt: ADA_PROMPT,
|
|
97
|
+
tools: WRITABLE_TOOLS,
|
|
98
|
+
color: "success",
|
|
99
|
+
},
|
|
100
|
+
suntzu: {
|
|
101
|
+
model: "openai/gpt-5.4-ultra",
|
|
102
|
+
mode: "subagent",
|
|
103
|
+
description: "Execution DAG strategist for sequencing, verification criteria, blockers, and Dev-Harness handoff.",
|
|
104
|
+
prompt: SUNTZU_PROMPT,
|
|
105
|
+
tools: WRITABLE_TOOLS,
|
|
106
|
+
color: "info",
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
export function mergePMAgents(existing) {
|
|
110
|
+
const merged = {};
|
|
111
|
+
if (existing !== undefined) {
|
|
112
|
+
for (const [name, config] of Object.entries(existing)) {
|
|
113
|
+
if (config !== undefined)
|
|
114
|
+
merged[name] = config;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
for (const name of PM_AGENT_NAMES) {
|
|
118
|
+
const existingConfig = merged[name];
|
|
119
|
+
merged[name] = existingConfig === undefined ? PM_AGENT_CONFIGS[name] : Object.assign({}, PM_AGENT_CONFIGS[name], existingConfig);
|
|
120
|
+
}
|
|
121
|
+
return merged;
|
|
122
|
+
}
|
|
123
|
+
export function applyModelOverrides(base, overrides) {
|
|
124
|
+
const result = {};
|
|
125
|
+
for (const [name, config] of Object.entries(base)) {
|
|
126
|
+
const override = overrides[name];
|
|
127
|
+
if (override === undefined) {
|
|
128
|
+
result[name] = config;
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
const next = Object.assign({}, config, { model: override.model });
|
|
132
|
+
if (override.variant !== undefined)
|
|
133
|
+
next["variant"] = override.variant;
|
|
134
|
+
result[name] = next;
|
|
135
|
+
}
|
|
136
|
+
return result;
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=agents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAYA,wBAAsB,MAAM,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyCnE"}
|