create-pmos 0.1.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 +30 -0
- package/bin/create-pmos.js +103 -0
- package/package.json +26 -0
- package/payload/AGENTS.md +83 -0
- package/payload/KIT-VERSION +3 -0
- package/payload/README.md +56 -0
- package/payload/okf/core/concepts/agent-harness.md +83 -0
- package/payload/okf/core/concepts/control-plane.md +61 -0
- package/payload/okf/core/concepts/design-loop.md +117 -0
- package/payload/okf/core/concepts/eval-driven-pm.md +71 -0
- package/payload/okf/core/concepts/index.md +17 -0
- package/payload/okf/core/concepts/log.md +6 -0
- package/payload/okf/core/concepts/okf-governance.md +159 -0
- package/payload/okf/core/concepts/okr-anti-optimism.md +54 -0
- package/payload/okf/core/concepts/okr-tree.md +67 -0
- package/payload/okf/core/concepts/output-eval.md +81 -0
- package/payload/okf/core/concepts/pm-identity.md +68 -0
- package/payload/okf/core/concepts/product-slug-convention.md +64 -0
- package/payload/okf/core/concepts/sdlc-loop.md +69 -0
- package/payload/okf/core/concepts/self-refining-harness.md +77 -0
- package/payload/okf/core/concepts/watermelon-flag.md +66 -0
- package/payload/okf/core/templates/design-brief-template.md +84 -0
- package/payload/okf/core/templates/eval-rubric-template.md +95 -0
- package/payload/okf/core/templates/index.md +8 -0
- package/payload/okf/core/templates/log.md +9 -0
- package/payload/okf/core/templates/prd-template.md +75 -0
- package/payload/okf/product/.gitkeep +0 -0
- package/payload/planning/evals/agent-run-eval-rubric.md +46 -0
- package/payload/planning/evals/check_rubrics.py +108 -0
- package/payload/planning/evals/eval-calibration.md +4 -0
- package/payload/planning/okrs/.gitkeep +0 -0
- package/payload/planning/prd/.gitkeep +0 -0
- package/payload/scripts/gate-initiative.sh +56 -0
- package/payload/scripts/kit-update.sh +16 -0
- package/payload/scripts/metrics.py +99 -0
- package/payload/skills/SKILL-FORMAT.md +89 -0
- package/payload/skills/eval-rubric.skill +122 -0
- package/payload/skills/evaluator.skill +82 -0
- package/payload/skills/ingest-repo.skill +117 -0
- package/payload/skills/okr.skill +68 -0
- package/payload/skills/prd.skill +80 -0
- package/payload/state/acceptances.jsonl +0 -0
- package/payload/state/discoveries.md +2 -0
- package/payload/state/evals.jsonl +0 -0
- package/payload/state/initiatives/.gitkeep +0 -0
- package/payload/state/runs.jsonl +0 -0
- package/payload/templates/agent-run-eval-rubric.md +46 -0
- package/payload/templates/pmos-gate.yml +29 -0
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: prd
|
|
3
|
+
description: Write a Product Requirements Document for an initiative. Use when an initiative has been chosen and needs a spec — the what and why — before any build or contract work begins.
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
owner: wawan
|
|
6
|
+
risk: low
|
|
7
|
+
category: planning
|
|
8
|
+
scope: read:okf, write:planning/prd
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# prd — Write a Product Requirements Document
|
|
12
|
+
|
|
13
|
+
This skill produces a PRD instance for one initiative. The PRD is the **spec** stage of the
|
|
14
|
+
[SDLC loop](/okf/core/concepts/sdlc-loop.md): it says *what* to build and *why*, anchored to
|
|
15
|
+
strategy, so a generator agent and the PM share one definition of the work before a contract is
|
|
16
|
+
agreed.
|
|
17
|
+
|
|
18
|
+
> **Format note:** this skill follows three-level progressive disclosure
|
|
19
|
+
> ([SKILL-FORMAT](/skills/core/SKILL-FORMAT.md)). Level 1 above is the trigger; this body is Level 2;
|
|
20
|
+
> rare variants are pushed to Level 3 sub-files referenced by name.
|
|
21
|
+
|
|
22
|
+
## When to use vs. not
|
|
23
|
+
|
|
24
|
+
- **Use** when an initiative is selected and needs a spec before build work.
|
|
25
|
+
- **Do not use** to make the strategic case for *whether* to do the initiative — that is the
|
|
26
|
+
`strategic-brief` skill. The PRD assumes the initiative is already chosen.
|
|
27
|
+
- **Do not use** to define how output is judged — that is the
|
|
28
|
+
[eval-rubric skill](/skills/core/eval-rubric.skill). PRD and rubric are authored together (see
|
|
29
|
+
[eval-driven-pm](/okf/core/concepts/eval-driven-pm.md)) but are separate artifacts.
|
|
30
|
+
|
|
31
|
+
## Procedure
|
|
32
|
+
|
|
33
|
+
1. **Anchor to strategy first.** Identify the parent KR in the
|
|
34
|
+
[OKR tree](/okf/core/concepts/okr-tree.md). If the initiative has no parent KR, stop — it is
|
|
35
|
+
unanchored work and the structural seed of [silent drift](/okf/core/concepts/watermelon-flag.md).
|
|
36
|
+
Resolve the anchor before writing the PRD.
|
|
37
|
+
2. **Start from the template.** Use
|
|
38
|
+
[prd-template](/okf/core/templates/prd-template.md) as the scaffold. Do not invent a new
|
|
39
|
+
structure.
|
|
40
|
+
3. **Write the problem before the solution.** State the user/PM problem and why it matters now.
|
|
41
|
+
A PRD that opens with a solution has skipped the only part the agent cannot reconstruct.
|
|
42
|
+
4. **Make scope explicit on both sides.** In-scope *and* out-of-scope. The out-of-scope list is the
|
|
43
|
+
primary defense against agents over-building.
|
|
44
|
+
5. **State success as outcomes, not output.** Success criteria describe a change in the world tied
|
|
45
|
+
to the parent KR, not a list of artifacts produced.
|
|
46
|
+
6. **Pair with a rubric.** Flag that the [eval-rubric](/skills/core/eval-rubric.skill) must be
|
|
47
|
+
authored before the build starts — the eval is written first.
|
|
48
|
+
7. **Keep it at control altitude.** The PRD specs *what and why*; it does not write the
|
|
49
|
+
application code or dictate the agent's path
|
|
50
|
+
([control-plane](/okf/core/concepts/control-plane.md)).
|
|
51
|
+
|
|
52
|
+
## Required content
|
|
53
|
+
|
|
54
|
+
A complete PRD instance contains:
|
|
55
|
+
|
|
56
|
+
- **Identity** — `initiative_id`, `product_slug`, `pm_slug`, parent `KR`.
|
|
57
|
+
- **Problem** — who has it, why now, what it costs to leave unsolved.
|
|
58
|
+
- **Goal & non-goals** — the change sought; explicit out-of-scope.
|
|
59
|
+
- **Requirements** — what must be true of the solution (capabilities, constraints).
|
|
60
|
+
- **Success criteria** — outcome-based, tied to the KR.
|
|
61
|
+
- **Risks & open questions** — including anything to escalate to the PM.
|
|
62
|
+
- **Links** — parent KR, the paired eval rubric, relevant OKF concepts.
|
|
63
|
+
|
|
64
|
+
## Output and placement
|
|
65
|
+
|
|
66
|
+
- PRD instances are **operational**, not OKF knowledge. They live under `/planning/prd/`, not in the
|
|
67
|
+
bundle ([okf-governance](/okf/core/concepts/okf-governance.md)).
|
|
68
|
+
- Filename: descriptive and slugged, e.g. `p0-prd.md`.
|
|
69
|
+
|
|
70
|
+
## Quality bar
|
|
71
|
+
|
|
72
|
+
Before handing off, confirm: parent KR present; problem precedes solution; out-of-scope is
|
|
73
|
+
non-empty; success criteria are outcomes not output; the eval rubric is queued to be written first.
|
|
74
|
+
|
|
75
|
+
## Level 3 sub-cases
|
|
76
|
+
|
|
77
|
+
- Multi-product or platform PRDs that span more than one `product_slug`: see `prd-multiproduct.md`
|
|
78
|
+
(author on first need).
|
|
79
|
+
- Spike / discovery PRDs where the deliverable is a learning, not a feature: see
|
|
80
|
+
`prd-discovery.md` (author on first need).
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Eval Rubric: Agent-run capability baseline (kit seed — copy per initiative)
|
|
2
|
+
|
|
3
|
+
> Kit-seeded generic rubric (D54). Two purposes: (1) it is the TEMPLATE to copy to
|
|
4
|
+
> `<initiative-id>-eval-rubric.md` and specialize per initiative (rewrite the dimensions to the
|
|
5
|
+
> initiative's own outcomes; keep weights summing to 1.0); (2) it keeps the `rubrics` CI check
|
|
6
|
+
> meaningful from day one. It scores a generic agent run outcome-only (D14) with weighted partial
|
|
7
|
+
> credit (D15).
|
|
8
|
+
|
|
9
|
+
## Frontmatter
|
|
10
|
+
- type: Rubric
|
|
11
|
+
- eval_type: capability
|
|
12
|
+
- initiative_id: (set per initiative)
|
|
13
|
+
- pass_threshold: 0.80
|
|
14
|
+
- canonical_path: pmos/planning/evals/agent-run-eval-rubric.md
|
|
15
|
+
|
|
16
|
+
## Gate assignment
|
|
17
|
+
- **Quality Gate (deterministic):** repo CI green; `pmos-gate` (anchored + rubrics) green.
|
|
18
|
+
- **Review Gate (adversarial):** the weighted dimensions below — evaluator skill, default-to-refute,
|
|
19
|
+
outcome-only; verdict appended to `pmos/state/evals.jsonl`; ADVISORY until locally calibrated.
|
|
20
|
+
- **Acceptance Gate (PM):** the human PM merges and disposes — final and non-delegable (D12).
|
|
21
|
+
|
|
22
|
+
## Weighted dimensions (Review Gate)
|
|
23
|
+
Outcome-only (D14); partial credit (D15); anchors 0 / 0.5 / 1.0.
|
|
24
|
+
|
|
25
|
+
| Dimension | Weight | Score | Wtd |
|
|
26
|
+
|---|---:|---:|---:|
|
|
27
|
+
| Contract satisfaction — every done_criterion of the pre-run contract is met, verified per its test_method | 0.40 | — | — |
|
|
28
|
+
| Correctness of the produced artifact — behaves/reads as specified; no defect a reviewer can demonstrate | 0.30 | — | — |
|
|
29
|
+
| Scope discipline — nothing out of contract scope changed; state files appended, never rewritten | 0.20 | — | — |
|
|
30
|
+
| Traceability — initiative anchored; run + eval + friction logged to pmos/state/ | 0.10 | — | — |
|
|
31
|
+
| **Total** | **1.00** | | **vs 0.80** |
|
|
32
|
+
|
|
33
|
+
### Anchors (0 / 0.5 / 1)
|
|
34
|
+
- **Contract:** 0 = a criterion unmet; 0.5 = met but a test_method not actually exercised; 1 = all met and exercised.
|
|
35
|
+
- **Correctness:** 0 = demonstrable defect; 0.5 = works with a material caveat; 1 = defect-free under the rubric's probes.
|
|
36
|
+
- **Scope:** 0 = out-of-scope change or state rewrite; 0.5 = minor drift, flagged; 1 = clean.
|
|
37
|
+
- **Traceability:** 0 = unanchored or unlogged; 0.5 = partial logging; 1 = complete.
|
|
38
|
+
|
|
39
|
+
## Sprint contract (pre-run)
|
|
40
|
+
initiative_id: (set)
|
|
41
|
+
run_id: (set)
|
|
42
|
+
done_criteria:
|
|
43
|
+
1. (numbered, testable — agreed BEFORE work starts)
|
|
44
|
+
test_method:
|
|
45
|
+
1. (one per criterion; name the gate that checks it)
|
|
46
|
+
PM_approved: false <!-- flip to true only on the PM's explicit word -->
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# PMOS portable kit — CI gate drop-in (D54). Copy to .github/workflows/pmos-gate.yml in the
|
|
2
|
+
# target repo. Enforces the loop fail-closed on every PR, entirely from files — no network.
|
|
3
|
+
name: pmos-gate
|
|
4
|
+
on:
|
|
5
|
+
pull_request:
|
|
6
|
+
types: [opened, synchronize, reopened, edited, labeled, unlabeled]
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
anchored:
|
|
13
|
+
name: anchored
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v4
|
|
17
|
+
- name: Initiative gate (file-backed)
|
|
18
|
+
env:
|
|
19
|
+
HEAD_REF: ${{ github.head_ref }}
|
|
20
|
+
PR_BODY: ${{ github.event.pull_request.body }}
|
|
21
|
+
PR_LABELS: ${{ join(github.event.pull_request.labels.*.name, ' ') }}
|
|
22
|
+
run: bash pmos/scripts/gate-initiative.sh
|
|
23
|
+
rubrics:
|
|
24
|
+
name: rubrics
|
|
25
|
+
runs-on: ubuntu-latest
|
|
26
|
+
steps:
|
|
27
|
+
- uses: actions/checkout@v4
|
|
28
|
+
- name: Rubric well-formedness
|
|
29
|
+
run: python3 pmos/planning/evals/check_rubrics.py
|