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.
Files changed (49) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +30 -0
  3. package/bin/create-pmos.js +103 -0
  4. package/package.json +26 -0
  5. package/payload/AGENTS.md +83 -0
  6. package/payload/KIT-VERSION +3 -0
  7. package/payload/README.md +56 -0
  8. package/payload/okf/core/concepts/agent-harness.md +83 -0
  9. package/payload/okf/core/concepts/control-plane.md +61 -0
  10. package/payload/okf/core/concepts/design-loop.md +117 -0
  11. package/payload/okf/core/concepts/eval-driven-pm.md +71 -0
  12. package/payload/okf/core/concepts/index.md +17 -0
  13. package/payload/okf/core/concepts/log.md +6 -0
  14. package/payload/okf/core/concepts/okf-governance.md +159 -0
  15. package/payload/okf/core/concepts/okr-anti-optimism.md +54 -0
  16. package/payload/okf/core/concepts/okr-tree.md +67 -0
  17. package/payload/okf/core/concepts/output-eval.md +81 -0
  18. package/payload/okf/core/concepts/pm-identity.md +68 -0
  19. package/payload/okf/core/concepts/product-slug-convention.md +64 -0
  20. package/payload/okf/core/concepts/sdlc-loop.md +69 -0
  21. package/payload/okf/core/concepts/self-refining-harness.md +77 -0
  22. package/payload/okf/core/concepts/watermelon-flag.md +66 -0
  23. package/payload/okf/core/templates/design-brief-template.md +84 -0
  24. package/payload/okf/core/templates/eval-rubric-template.md +95 -0
  25. package/payload/okf/core/templates/index.md +8 -0
  26. package/payload/okf/core/templates/log.md +9 -0
  27. package/payload/okf/core/templates/prd-template.md +75 -0
  28. package/payload/okf/product/.gitkeep +0 -0
  29. package/payload/planning/evals/agent-run-eval-rubric.md +46 -0
  30. package/payload/planning/evals/check_rubrics.py +108 -0
  31. package/payload/planning/evals/eval-calibration.md +4 -0
  32. package/payload/planning/okrs/.gitkeep +0 -0
  33. package/payload/planning/prd/.gitkeep +0 -0
  34. package/payload/scripts/gate-initiative.sh +56 -0
  35. package/payload/scripts/kit-update.sh +16 -0
  36. package/payload/scripts/metrics.py +99 -0
  37. package/payload/skills/SKILL-FORMAT.md +89 -0
  38. package/payload/skills/eval-rubric.skill +122 -0
  39. package/payload/skills/evaluator.skill +82 -0
  40. package/payload/skills/ingest-repo.skill +117 -0
  41. package/payload/skills/okr.skill +68 -0
  42. package/payload/skills/prd.skill +80 -0
  43. package/payload/state/acceptances.jsonl +0 -0
  44. package/payload/state/discoveries.md +2 -0
  45. package/payload/state/evals.jsonl +0 -0
  46. package/payload/state/initiatives/.gitkeep +0 -0
  47. package/payload/state/runs.jsonl +0 -0
  48. package/payload/templates/agent-run-eval-rubric.md +46 -0
  49. 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
@@ -0,0 +1,2 @@
1
+ # Discoveries & friction log (append-only; ISO dates; tag friction with #friction)
2
+
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