create-pmos 0.4.0 → 0.5.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/README.md +35 -4
- package/bin/create-pmos.js +4 -1
- package/package.json +1 -1
- package/payload/AGENTS.md +27 -2
- package/payload/KIT-VERSION +2 -2
- package/payload/README.md +10 -2
- package/payload/SECURITY.md +53 -0
- package/payload/okf/core/concepts/design-loop.md +6 -3
- package/payload/okf/core/templates/design-brief-template.md +1 -1
- package/payload/scripts/frontier.sh +60 -0
- package/payload/scripts/metrics.py +57 -17
- package/payload/scripts/pmos-log.sh +16 -6
- package/payload/skills/SKILL-FORMAT.md +66 -9
- package/payload/skills/evaluator.skill +65 -20
- package/payload/skills/explain-run.skill +9 -6
- package/payload/skills/ingest-repo.skill +4 -3
- package/payload/skills-native/copywriting/SKILL.md +57 -0
- package/payload/skills-native/discovery/SKILL.md +71 -0
- package/payload/skills-native/eval-rubric/SKILL.md +159 -0
- package/payload/skills-native/evaluator/SKILL.md +182 -0
- package/payload/skills-native/explain-run/SKILL.md +121 -0
- package/payload/skills-native/ingest-repo/SKILL.md +120 -0
- package/payload/skills-native/okr/SKILL.md +70 -0
- package/payload/skills-native/pmos-router/SKILL.md +59 -0
- package/payload/skills-native/prd/SKILL.md +109 -0
- package/payload/skills-native/prototype/SKILL.md +82 -0
- package/payload/state/tickets/.gitkeep +0 -0
- package/payload/templates/ticket-template.md +18 -0
|
@@ -0,0 +1,109 @@
|
|
|
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
|
+
license: MIT
|
|
5
|
+
metadata:
|
|
6
|
+
pmos-version: 1.1.0
|
|
7
|
+
pmos-owner: wawan
|
|
8
|
+
pmos-risk: low
|
|
9
|
+
pmos-category: planning
|
|
10
|
+
pmos-scope: read:okf, write:planning/prd
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# prd — Write a Product Requirements Document
|
|
14
|
+
|
|
15
|
+
This skill produces a PRD instance for one initiative. The PRD is the **spec** stage of the
|
|
16
|
+
[SDLC loop](/okf/core/concepts/sdlc-loop.md): it says *what* to build and *why*, anchored to
|
|
17
|
+
strategy, so a generator agent and the PM share one definition of the work before a contract is
|
|
18
|
+
agreed.
|
|
19
|
+
|
|
20
|
+
> **Format note:** this skill follows three-level progressive disclosure
|
|
21
|
+
> ([SKILL-FORMAT](/skills/core/SKILL-FORMAT.md)). Level 1 above is the trigger; this body is Level 2;
|
|
22
|
+
> rare variants are pushed to Level 3 sub-files referenced by name.
|
|
23
|
+
|
|
24
|
+
## When to use vs. not
|
|
25
|
+
|
|
26
|
+
- **Use** when an initiative is selected and needs a spec before build work.
|
|
27
|
+
- **Do not use** to make the strategic case for *whether* to do the initiative — that is the
|
|
28
|
+
`strategic-brief` skill. The PRD assumes the initiative is already chosen.
|
|
29
|
+
- **Do not use** to define how output is judged — that is the
|
|
30
|
+
[eval-rubric skill](/skills/core/eval-rubric.skill). PRD and rubric are authored together (see
|
|
31
|
+
[eval-driven-pm](/okf/core/concepts/eval-driven-pm.md)) but are separate artifacts.
|
|
32
|
+
|
|
33
|
+
## Procedure
|
|
34
|
+
|
|
35
|
+
0. **Grill before you write.** Before any authoring, interrogate the PM's intent as a dialogue —
|
|
36
|
+
**one question at a time, a recommended answer offered with each**, no authoring until shared
|
|
37
|
+
understanding is confirmed. Stop when the intent is **unambiguous**, not at a count — there is
|
|
38
|
+
deliberately **no question cap** (under-specification needs unlimited digging; a redundant
|
|
39
|
+
question is a quality bug, not a quantity bug). A batch questionnaire is **not** compliant with
|
|
40
|
+
this step. Boundary rule, near-verbatim from AGENTS.md: *if a fact can be found by exploring the
|
|
41
|
+
environment, look it up rather than asking — the decisions, though, are the PM's* (D12 at
|
|
42
|
+
optimal altitude). A stated requirement that later goes unhonored in a build (the recorded
|
|
43
|
+
"too many navigations" class) is exactly what this step exists to pin down in writing.
|
|
44
|
+
1. **Anchor to strategy first.** Identify the parent KR in the
|
|
45
|
+
[OKR tree](/okf/core/concepts/okr-tree.md) — or, for maintenance work with no honest KR, the
|
|
46
|
+
declared [health budget](/okf/core/concepts/health-anchors.md) (`health:<id>`, D59). If the
|
|
47
|
+
initiative has neither, stop — it is unanchored work and the structural seed of
|
|
48
|
+
[silent drift](/okf/core/concepts/watermelon-flag.md). Resolve the anchor before writing the
|
|
49
|
+
PRD; never force a KR link that isn't real.
|
|
50
|
+
2. **Start from the template.** Use
|
|
51
|
+
[prd-template](/okf/core/templates/prd-template.md) as the scaffold. Do not invent a new
|
|
52
|
+
structure.
|
|
53
|
+
3. **Write the problem before the solution.** State the user/PM problem and why it matters now.
|
|
54
|
+
A PRD that opens with a solution has skipped the only part the agent cannot reconstruct.
|
|
55
|
+
4. **Make scope explicit on both sides.** In-scope *and* out-of-scope. The out-of-scope list is the
|
|
56
|
+
primary defense against agents over-building.
|
|
57
|
+
5. **State success as outcomes, not output.** Success criteria describe a change in the world tied
|
|
58
|
+
to the anchor — the parent KR, or the declared budget's purpose (D59) — not a list of artifacts
|
|
59
|
+
produced.
|
|
60
|
+
6. **Pair with a rubric.** Flag that the [eval-rubric](/skills/core/eval-rubric.skill) must be
|
|
61
|
+
authored before the build starts — the eval is written first.
|
|
62
|
+
7. **Write for durability.** The PRD (and the contract derived from it) waits while work is
|
|
63
|
+
scheduled, so write what stays true: name **interfaces, types, and behavioral contracts — never
|
|
64
|
+
file paths or line numbers** (they stale while work waits and mislead the builder that follows).
|
|
65
|
+
Criteria are **behavioral, not procedural** — what must be true of the outcome, never the tool
|
|
66
|
+
sequence (D14 applied to authoring). Acceptance criteria must be **independently verifiable**.
|
|
67
|
+
One exception: a **prototype-derived snippet** that encodes a decision more precisely than prose
|
|
68
|
+
may be inlined, trimmed to its decision-rich parts (the D60 promote path).
|
|
69
|
+
8. **Keep it at control altitude.** The PRD specs *what and why*; it does not write the
|
|
70
|
+
application code or dictate the agent's path
|
|
71
|
+
([control-plane](/okf/core/concepts/control-plane.md)).
|
|
72
|
+
|
|
73
|
+
## Required content
|
|
74
|
+
|
|
75
|
+
A complete PRD instance contains:
|
|
76
|
+
|
|
77
|
+
- **Identity** — `initiative_id`, `product_slug`, `pm_slug`, parent `KR`.
|
|
78
|
+
- **Problem** — who has it, why now, what it costs to leave unsolved.
|
|
79
|
+
- **Goal & non-goals** — the change sought; explicit out-of-scope.
|
|
80
|
+
- **Requirements** — what must be true of the solution (capabilities, constraints).
|
|
81
|
+
- **Success criteria** — outcome-based, tied to the anchor (KR or budget purpose).
|
|
82
|
+
- **Risks & open questions** — including anything to escalate to the PM.
|
|
83
|
+
- **Links** — parent KR, the paired eval rubric, relevant OKF concepts. **Dual-audience rule
|
|
84
|
+
(D58):** every link carries ONE situating sentence (what it is and why it matters here — the
|
|
85
|
+
source-to-concept rule applied to planning artifacts), and the parent-KR line quotes the KR
|
|
86
|
+
*text*, not just its id (health-anchored: name the budget and why the work fits its coverage). The body stays agent-optimized; the references must stand alone for a
|
|
87
|
+
human stakeholder reading the PRD without the OKF bundle in context.
|
|
88
|
+
|
|
89
|
+
## Output and placement
|
|
90
|
+
|
|
91
|
+
- PRD instances are **operational**, not OKF knowledge. They live under `/planning/prd/`, not in the
|
|
92
|
+
bundle ([okf-governance](/okf/core/concepts/okf-governance.md)).
|
|
93
|
+
- Filename: descriptive and slugged, e.g. `p0-prd.md`.
|
|
94
|
+
|
|
95
|
+
## Quality bar
|
|
96
|
+
|
|
97
|
+
Before handing off, confirm: anchor present — parent KR (text quoted, not just the id) or
|
|
98
|
+
`health:<id>` (D59); problem precedes
|
|
99
|
+
solution; out-of-scope is non-empty; success criteria are outcomes not output; every link carries
|
|
100
|
+
its situating sentence (D58); the eval rubric is queued to be written first.
|
|
101
|
+
|
|
102
|
+
## Level 3 sub-cases
|
|
103
|
+
|
|
104
|
+
- Multi-product or platform PRDs that span more than one `product_slug`: see `prd-multiproduct.md`
|
|
105
|
+
(author on first need).
|
|
106
|
+
- Spike / discovery work where the deliverable is a learning, not a feature, is **not a PRD
|
|
107
|
+
case** — take the discovery lane ([D56](/okf/products/pmos/adr/d56-initiative-lanes.md)):
|
|
108
|
+
[discovery skill](/skills/core/discovery.skill) +
|
|
109
|
+
[spike-brief template](/okf/core/templates/spike-brief-template.md).
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: prototype
|
|
3
|
+
description: Run a pre-PRD visual validation through the prototype lane (D60) — the PM gives a QUICK brief, a design agent produces divergent low-fidelity lookable options with real draft copy, a designer-grade grilling sharpens them (dialogue, never a score), and the PM disposes promote/iterate/kill. Use when a user-facing idea needs to be SEEN before a PRD can honestly be written; requires the product's design system (blocking — author it first if absent).
|
|
4
|
+
license: MIT
|
|
5
|
+
metadata:
|
|
6
|
+
pmos-version: 1.0.0
|
|
7
|
+
pmos-owner: wawan
|
|
8
|
+
pmos-risk: low
|
|
9
|
+
pmos-category: design
|
|
10
|
+
pmos-scope: read:okf, write:prototype, write:planning
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# prototype — Run a leg-A visual validation through the prototype lane
|
|
14
|
+
|
|
15
|
+
The [D60](/okf/products/pmos/adr/d60-prototype-loop.md) lane skill. The division of labour is the
|
|
16
|
+
point: **the PM briefs; the agent designs.** The PM should never have to author a design system or
|
|
17
|
+
build a prototype to validate an idea.
|
|
18
|
+
|
|
19
|
+
> **Format note:** three-level progressive disclosure ([SKILL-FORMAT](/skills/core/SKILL-FORMAT.md)).
|
|
20
|
+
> Level 1 above is the trigger; this body is Level 2.
|
|
21
|
+
|
|
22
|
+
## When to use vs. not
|
|
23
|
+
|
|
24
|
+
- **Use** when a user-facing idea — new product, new feature, or an improvement to an existing
|
|
25
|
+
surface — needs visual confirmation **before** a PRD exists. The measured cost of skipping this is
|
|
26
|
+
the console-redesign series: four post-build rejections that a lookable artifact would have caught
|
|
27
|
+
pre-spec.
|
|
28
|
+
- **Do not use** for leg B (the post-PRD, high-fidelity design reference — that is the
|
|
29
|
+
[design loop](/okf/core/concepts/design-loop.md): design-brief → design → reconcile, now open to
|
|
30
|
+
new surfaces per D60's D48 amendment).
|
|
31
|
+
- **Do not use** for non-visual questions ("is this feasible?") — that is the
|
|
32
|
+
[discovery lane](/skills/core/discovery.skill), whose deliverable is a learning, not a look.
|
|
33
|
+
|
|
34
|
+
## Procedure
|
|
35
|
+
|
|
36
|
+
1. **Open the lane.** `create_initiative({id, title, parent_kr, type:'prototype', stage:'intake'})` —
|
|
37
|
+
anchored like all work (D21/D59). Branch `initiative/<id>`.
|
|
38
|
+
2. **Take the quick brief.** The PM fills the
|
|
39
|
+
[prototype-brief template](/okf/core/templates/prototype-brief-template.md) — two required
|
|
40
|
+
sections, minutes not hours — into `prototype/<id>/brief.md`; set it as `prd_path`.
|
|
41
|
+
**`rubric_path` stays null by design** (grilled, never scored). If the PM starts writing
|
|
42
|
+
requirements, stop them: that detail belongs in the PRD that *follows*.
|
|
43
|
+
3. **Design-system check — BLOCKING (D60).** Does this product have a design system (tokens,
|
|
44
|
+
type scale, components — PMOS's own app: D38)? **If not, author one first**: from the same brief,
|
|
45
|
+
propose a minimal system (palette + type scale + spacing unit + core component shapes), get the
|
|
46
|
+
PM's approval, record it in the product's namespace. Only then prototype. Never silently invent
|
|
47
|
+
per-prototype styling — that is how inconsistent products happen.
|
|
48
|
+
4. **Retrieve the craft.** `get_okf_concepts({concept_ids:['core/concepts/design-craft']})` — the
|
|
49
|
+
perception/cognition evidence, craft moves, accessibility floors, and the recorded anti-patterns.
|
|
50
|
+
Reason from principles to THIS brief; two briefs must not produce the same design.
|
|
51
|
+
5. **Produce divergent options** into `prototype/<id>/` — low-fidelity, self-contained, lookable
|
|
52
|
+
(static HTML is usually right; whatever renders fastest). **2–3 genuinely different directions**,
|
|
53
|
+
not one safe one with variants. **Real draft copy** (D60: copy rides the prototype —
|
|
54
|
+
[copywriting.skill](/skills/domains/copywriting.skill) craft applies in-loop; claim-sourcing waits
|
|
55
|
+
for the content lane at production). Respect the accessibility floors even at low fidelity.
|
|
56
|
+
6. **Grill — dialogue, never a score.** A designer-grade critic (fresh context, default-to-refute
|
|
57
|
+
stance, [design-craft](/okf/core/concepts/design-craft.md) loaded) interrogates each option: *why
|
|
58
|
+
this structure? what job does the focal element serve? what would the best product designer say is
|
|
59
|
+
wrong? what was NOT tried?* One question at a time, a recommended answer with each, no action until
|
|
60
|
+
shared understanding is confirmed. Sharpen the options from it. **Produces no score, no verdict,
|
|
61
|
+
no threshold, no `evals` row** — re-introducing scoring here under any name is a D60 violation.
|
|
62
|
+
7. **PM disposition** (the only gate on leg A, and it is the PM's):
|
|
63
|
+
- **promote** → open a **new feature-lane initiative**; its PRD and rubric are **derived from the
|
|
64
|
+
validated option** (what was seen and chosen becomes the spec's substance). Leg B then runs
|
|
65
|
+
inside that initiative's Build.
|
|
66
|
+
- **iterate** → back to step 5 with the PM's reaction folded in.
|
|
67
|
+
- **kill** → record one honest line on the initiative, **file the concept into
|
|
68
|
+
[planning/out-of-scope/](/planning/out-of-scope/README.md)** (decision, reasoning, what would
|
|
69
|
+
reopen it) so it is not re-prototyped from scratch, and close. A cheap kill is this lane
|
|
70
|
+
*succeeding*.
|
|
71
|
+
8. **Log.** `log_agent_run` with the disposition; friction to discoveries.md (`#friction`).
|
|
72
|
+
|
|
73
|
+
## Hard rules
|
|
74
|
+
|
|
75
|
+
- Artifacts live in **`prototype/<id>/` only** — never `web/`, never a tenant app. The `web-ci`
|
|
76
|
+
quarantine assertion enforces this; do not fight it.
|
|
77
|
+
- **A prototype never ships.** Promote produces a *spec*, not a deploy. Quality bars are suspended in
|
|
78
|
+
`prototype/` precisely because nothing there can reach production (D01).
|
|
79
|
+
- **No score on leg A, no skipped grilling on leg A.** Both PM rules bind; neither may be satisfied
|
|
80
|
+
by dropping the other.
|
|
81
|
+
- If the PM stops looking and promotes on autopilot, say so — an unreviewed disposition is the
|
|
82
|
+
[meta-watermelon](/okf/core/concepts/watermelon-flag.md) in a new place.
|
|
File without changes
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: "001"
|
|
3
|
+
title: short imperative title — one deliverable
|
|
4
|
+
status: todo # todo | doing | done
|
|
5
|
+
blocked_by: [] # e.g. ["002", "005"] — ticket ids that must be done first
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# 001 — <title>
|
|
9
|
+
|
|
10
|
+
**One deliverable.** What "done" looks like, behaviorally — not the steps to get there. Name
|
|
11
|
+
interfaces, types, and behavioral contracts; never file paths or line numbers (they stale while the
|
|
12
|
+
work waits).
|
|
13
|
+
|
|
14
|
+
## Done when
|
|
15
|
+
- [ ] <a single, independently verifiable acceptance check>
|
|
16
|
+
|
|
17
|
+
## Notes
|
|
18
|
+
<context a builder needs; links to the initiative/PRD this ticket decomposes>
|