create-pmos 0.38.5 → 0.38.7
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/package.json +1 -1
- package/payload/AGENTS.md +1 -1
- package/payload/KIT-VERSION +2 -2
- package/payload/okf/core/templates/report-rubric-template.md +35 -0
- package/payload/okf/core/templates/report-weekly-template.md +21 -10
- package/payload/okf/core/templates/requirements-brief-template.md +61 -0
- package/payload/planning/evals/eval-calibration.md +1 -1
- package/payload/planning/okrs/health-budgets.md +1 -1
- package/payload/skills/design-brief.skill +5 -6
- package/payload/skills/discovery.skill +1 -2
- package/payload/skills/eval-rubric.skill +2 -5
- package/payload/skills/pm-communication.skill +123 -0
- package/payload/skills/pmos-router.skill +4 -2
- package/payload/skills/prd.skill +7 -13
- package/payload/skills/requirements-elicitation.skill +231 -0
- package/payload/skills/technical-writing-ste.skill +5 -3
- package/payload/skills-native/design-brief/SKILL.md +5 -6
- package/payload/skills-native/discovery/SKILL.md +1 -2
- package/payload/skills-native/eval-rubric/SKILL.md +2 -5
- package/payload/skills-native/pm-communication/SKILL.md +125 -0
- package/payload/skills-native/pmos-router/SKILL.md +4 -2
- package/payload/skills-native/prd/SKILL.md +7 -13
- package/payload/skills-native/requirements-elicitation/SKILL.md +233 -0
- package/payload/skills-native/technical-writing-ste/SKILL.md +5 -3
- package/payload/state/discoveries.md +1 -1
- package/payload/state/log.md +1 -1
- package/workspace/package-lock.json +1 -1
- package/workspace/package.json +1 -1
- package/workspace/skills/gather-requirements.skill +13 -1
- package/workspace/skills/report-biweekly.skill +5 -5
- package/workspace/skills/report-daily.skill +5 -5
- package/workspace/skills/report-monthly.skill +5 -5
- package/workspace/skills/report-special.skill +3 -3
- package/workspace/skills/report-weekly.skill +5 -5
- package/workspace/skills/weekly-report.skill +3 -2
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: requirements-elicitation
|
|
3
|
+
description: Turn a vague ask, or notes the PM gathered, into a requirements brief by asking the PM questions one at a time. Use when the PM wants to gather, clarify or sharpen requirements, or before any lane writes its first artifact (PRD, spike brief, fix specification, content brief).
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
owner: wawan
|
|
6
|
+
risk: low
|
|
7
|
+
category: planning
|
|
8
|
+
scope: read:okf, read:planning, read:state, write:planning/briefs
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# requirements-elicitation — Ask until the requirement is sharp
|
|
12
|
+
|
|
13
|
+
This skill is the one place where PMOS states how an agent asks the PM questions. It also
|
|
14
|
+
holds the questions each lane needs. Its output is a requirements brief that a PRD, a spike
|
|
15
|
+
brief or a fix specification starts from. It does not write those documents.
|
|
16
|
+
|
|
17
|
+
> **Format note:** this skill follows [SKILL-FORMAT](/skills/SKILL-FORMAT.md). The text is
|
|
18
|
+
> instructional (class A of [technical-writing-ste](/skills/technical-writing-ste.skill)).
|
|
19
|
+
|
|
20
|
+
## When to use vs. not
|
|
21
|
+
|
|
22
|
+
- **Use** when the PM asks to gather, clarify or sharpen requirements.
|
|
23
|
+
- **Use** before the first artifact of any lane, when the intent is not yet unambiguous.
|
|
24
|
+
- **Do not use** to decide the lane. That is the [pmos-router](/skills/pmos-router.skill).
|
|
25
|
+
- **Do not use** to judge whether to build at all. That is the
|
|
26
|
+
[strategic-brief](/skills/strategic-brief.skill).
|
|
27
|
+
- **Do not use** when an instance of the idea is needed before the PM can judge it. Route to the
|
|
28
|
+
prototype lane first.
|
|
29
|
+
|
|
30
|
+
## The asking rule
|
|
31
|
+
|
|
32
|
+
This rule holds in every step below. Other skills point here and do not repeat it.
|
|
33
|
+
|
|
34
|
+
1. Ask one question at a time.
|
|
35
|
+
2. Give a recommended answer with each question.
|
|
36
|
+
3. Do not set a limit on the number of questions. Stop when the intent is unambiguous.
|
|
37
|
+
4. Do not send a batch questionnaire. A batch does not satisfy this rule.
|
|
38
|
+
5. Look up each fact that the repository or the record can answer. Do not ask the PM for it.
|
|
39
|
+
6. Leave each decision to the PM.
|
|
40
|
+
7. Write nothing until the PM confirms the shared understanding.
|
|
41
|
+
|
|
42
|
+
## Procedure
|
|
43
|
+
|
|
44
|
+
1. **Find the lane.** Read the initiative record and its `type`. Run
|
|
45
|
+
`node scripts/workflow-state.js --lanes --json` (in a kit repository the script is
|
|
46
|
+
`pmos/scripts/workflow-state.js`). Find the lane in `defs`.
|
|
47
|
+
State the lane's `input`, `output` and `done` in plain words before the first question.
|
|
48
|
+
*Done when:* the PM has seen the lane's input, output and done-rule.
|
|
49
|
+
|
|
50
|
+
If the script is missing or the lane is not in `defs`, say so. Ask the PM which lane applies.
|
|
51
|
+
Do not guess a question set.
|
|
52
|
+
|
|
53
|
+
2. **Look up what exists.** Read the record, the PRD or brief if one exists, the OKR the
|
|
54
|
+
record names, and the explainer if the surface exists. Collect the facts you found.
|
|
55
|
+
*Done when:* every fact you will use has a source, and none of them is a question for the PM.
|
|
56
|
+
|
|
57
|
+
3. **Read the gathered notes.** List `<state>/requirements/*.md`. `<state>` is `pmos/state/`
|
|
58
|
+
if it exists, and `planning/` if not. Select each item whose `initiative` names this
|
|
59
|
+
initiative. Show each item to the PM with its pointer and its `confidence`. Ask for one
|
|
60
|
+
answer per item: confirmed, rejected or deferred. Record the answer.
|
|
61
|
+
- A confirmed item goes in the brief under *Decisions*, with its pointer.
|
|
62
|
+
- A rejected item is dropped. Name it in *Gathered notes used* as rejected.
|
|
63
|
+
- A deferred item goes in *Open questions*.
|
|
64
|
+
- An item with `confidence: unconfirmed` stays unconfirmed until the PM answers. Never write
|
|
65
|
+
it as a fact.
|
|
66
|
+
- Name a note that does not parse. Skip it.
|
|
67
|
+
- If no notes exist, say so and continue.
|
|
68
|
+
|
|
69
|
+
Never edit a note. The notes are read-only drafts (D71).
|
|
70
|
+
*Done when:* every selected item has an answer, or the PM has said to skip the notes.
|
|
71
|
+
|
|
72
|
+
4. **Ask the topic questions.** Work through the [question inventory](#question-inventory).
|
|
73
|
+
Skip a topic the lane's input does not need, and say that you skipped it.
|
|
74
|
+
Skip a question that step 2 or step 3 already answered.
|
|
75
|
+
*Done when:* each topic is answered, skipped with a reason, or listed in *Open questions*.
|
|
76
|
+
|
|
77
|
+
5. **Ask the lane questions.** Find the lane in [Question sets by lane](#question-sets-by-lane).
|
|
78
|
+
Ask each question there that the earlier steps did not answer.
|
|
79
|
+
*Done when:* every element of the lane's `input` has an answer or an *Open questions* entry.
|
|
80
|
+
|
|
81
|
+
6. **Confirm.** Say the shared understanding back to the PM in one short list. Ask the PM to
|
|
82
|
+
confirm or correct it.
|
|
83
|
+
*Done when:* the PM has confirmed. If the PM corrects it, go back to step 4.
|
|
84
|
+
|
|
85
|
+
7. **Write the brief.** Copy the
|
|
86
|
+
[requirements-brief-template](/okf/core/templates/requirements-brief-template.md). Fill every
|
|
87
|
+
section from the confirmed answers, in the PM's words where the PM gave words. Write it to
|
|
88
|
+
`planning/briefs/<id>-requirements.md`. Set `brief_path` on the initiative record. If the lane
|
|
89
|
+
uses `prd_path` for its first artifact and that file does not exist yet, tell the PM that the
|
|
90
|
+
brief is the input and that the lane's own skill writes `prd_path`.
|
|
91
|
+
*Done when:* the file exists, no section is empty, and `brief_path` is set.
|
|
92
|
+
|
|
93
|
+
8. **Hand over.** Name the next skill for the lane: [prd](/skills/prd.skill) for
|
|
94
|
+
feature and new-feature, [discovery](/skills/discovery.skill) for discovery,
|
|
95
|
+
[copywriting](/skills/copywriting.skill) for content, and the lane's own
|
|
96
|
+
template for the others. State the open questions that remain.
|
|
97
|
+
*Done when:* the PM knows what comes next and what is still open.
|
|
98
|
+
|
|
99
|
+
## Question inventory
|
|
100
|
+
|
|
101
|
+
Each topic has an opening question. Add follow-up questions when the answer is vague.
|
|
102
|
+
|
|
103
|
+
| Topic | Opening question |
|
|
104
|
+
|---|---|
|
|
105
|
+
| Problem and user | Who has this problem, and what do they do today instead? |
|
|
106
|
+
| Evidence | What shows that the problem is real: a number, a ticket, a quote, an incident? |
|
|
107
|
+
| Constraints | What is fixed: a date, a budget, a technology, a rule or a promise already made? |
|
|
108
|
+
| Stakeholders and decision owner | Who is affected, who must agree, and who decides if they disagree? |
|
|
109
|
+
| Dependencies | What must exist, or be done by someone else, before this can work? |
|
|
110
|
+
| Data | What data does this read or change, and who owns it? |
|
|
111
|
+
| Non-functional needs | What must hold about speed, security, privacy, access or cost? |
|
|
112
|
+
| Risks | What is the worst way this fails, and how would we notice? |
|
|
113
|
+
| Success measure | Which measure moves if this works, from what value to what value, by when? |
|
|
114
|
+
| Out of scope | What will this not do, even though someone might expect it to? |
|
|
115
|
+
|
|
116
|
+
## Question sets by lane
|
|
117
|
+
|
|
118
|
+
Each lane has its own heading. The headings use the lane names in `scripts/lane-defs.js`.
|
|
119
|
+
A lane name that both profiles use (discovery, chore) has one set.
|
|
120
|
+
|
|
121
|
+
### Lane `feature`
|
|
122
|
+
|
|
123
|
+
1. What behaviour changes for the user, in one sentence?
|
|
124
|
+
2. Does the surface exist today? If yes, what does it do now?
|
|
125
|
+
3. Which KR or health budget does this serve?
|
|
126
|
+
4. Can the PM judge this from a description, or must the PM see an instance first?
|
|
127
|
+
5. What would the PM check by hand to accept it?
|
|
128
|
+
|
|
129
|
+
### Lane `new-feature`
|
|
130
|
+
|
|
131
|
+
1. Who has the problem, and how often does it happen?
|
|
132
|
+
2. What shows that it is real?
|
|
133
|
+
3. What do users do today?
|
|
134
|
+
4. What must a first version do, and what can wait?
|
|
135
|
+
5. What would make the PM drop it?
|
|
136
|
+
|
|
137
|
+
### Lane `improvement`
|
|
138
|
+
|
|
139
|
+
1. What does the feature do now? Look it up first.
|
|
140
|
+
2. What is wrong or missing, and for whom?
|
|
141
|
+
3. Which measure should the change move, and by how much?
|
|
142
|
+
4. What must stay the same?
|
|
143
|
+
5. How will we tell that it worked?
|
|
144
|
+
|
|
145
|
+
### Lane `bug-fix`
|
|
146
|
+
|
|
147
|
+
1. What are the steps that reproduce it?
|
|
148
|
+
2. What is the expected result?
|
|
149
|
+
3. What is the actual result?
|
|
150
|
+
4. How severe is it, and who is affected?
|
|
151
|
+
5. Is there a workaround?
|
|
152
|
+
|
|
153
|
+
### Lane `discovery`
|
|
154
|
+
|
|
155
|
+
1. What is the question, in one sentence?
|
|
156
|
+
2. What is unknown, and what is already known?
|
|
157
|
+
3. What evidence would end the spike?
|
|
158
|
+
4. What would make this worth picking up, and what would make it worth dropping?
|
|
159
|
+
5. How long may it take?
|
|
160
|
+
|
|
161
|
+
### Lane `chore`
|
|
162
|
+
|
|
163
|
+
1. What is the intent, in one paragraph?
|
|
164
|
+
2. Which health budget does it serve?
|
|
165
|
+
3. What must not change?
|
|
166
|
+
4. How will the PM see that it is done?
|
|
167
|
+
|
|
168
|
+
### Lane `incident`
|
|
169
|
+
|
|
170
|
+
1. What broke, and who noticed?
|
|
171
|
+
2. What is the cause?
|
|
172
|
+
3. What was the repair, and is it permanent?
|
|
173
|
+
4. What stops it from happening again?
|
|
174
|
+
5. When was it fixed? The record is due within 48 hours.
|
|
175
|
+
|
|
176
|
+
### Lane `content`
|
|
177
|
+
|
|
178
|
+
1. Who reads it, and what should they do after?
|
|
179
|
+
2. What is the one message?
|
|
180
|
+
3. What tone and length does the reader expect?
|
|
181
|
+
4. What facts must it contain, and where are they?
|
|
182
|
+
5. Does the PM want a rubric?
|
|
183
|
+
|
|
184
|
+
### Lane `prototype`
|
|
185
|
+
|
|
186
|
+
1. What judgement does the PM need to make?
|
|
187
|
+
2. Which format fits the specimens: a screen, a sample output, a transcript or a schema?
|
|
188
|
+
3. What should the 2–3 specimens differ on?
|
|
189
|
+
4. Which conventions does the class need before the specimens (design system, skill format)?
|
|
190
|
+
|
|
191
|
+
### Lane `prd`
|
|
192
|
+
|
|
193
|
+
1. What is the question the document answers?
|
|
194
|
+
2. Who reads it?
|
|
195
|
+
3. Which decision does it inform?
|
|
196
|
+
4. What do the readers already know?
|
|
197
|
+
|
|
198
|
+
### Lane `strategy`
|
|
199
|
+
|
|
200
|
+
1. What is the question the document answers?
|
|
201
|
+
2. Who reads it?
|
|
202
|
+
3. Which decision does it inform?
|
|
203
|
+
4. Over what period?
|
|
204
|
+
|
|
205
|
+
### Lane `project-plan`
|
|
206
|
+
|
|
207
|
+
1. What is in scope, and what is out?
|
|
208
|
+
2. Who is on it, and for how much of their time?
|
|
209
|
+
3. Which dates are fixed, and who fixed them?
|
|
210
|
+
4. What does it depend on?
|
|
211
|
+
|
|
212
|
+
### Lane `decision-record`
|
|
213
|
+
|
|
214
|
+
1. What are the options?
|
|
215
|
+
2. Which one was chosen, and by whom?
|
|
216
|
+
3. What is the reason?
|
|
217
|
+
4. What would reverse the choice?
|
|
218
|
+
|
|
219
|
+
### Lane `report`
|
|
220
|
+
|
|
221
|
+
1. What period or subject does it cover?
|
|
222
|
+
2. Who reads it?
|
|
223
|
+
3. What should the reader do after reading?
|
|
224
|
+
4. Which sources does it use, and which can it not reach?
|
|
225
|
+
|
|
226
|
+
## Failure behaviour
|
|
227
|
+
|
|
228
|
+
- The lane definition cannot be read: say so, and ask the PM which lane applies.
|
|
229
|
+
- No gathered notes exist: say so, and continue.
|
|
230
|
+
- A note does not parse: name it, and skip it.
|
|
231
|
+
- The PM leaves a question open: write it under *Open questions*. Do not answer it.
|
|
@@ -39,7 +39,7 @@ Ask what the reader must do with it. Derive the class from the path, not from fe
|
|
|
39
39
|
| Class | What the reader must do | Where it lives |
|
|
40
40
|
|---|---|---|
|
|
41
41
|
| **A — instructional** | **Act**, correctly, on one reading | `skills/**` · playbooks and runbooks · gate and CI failure strings · UI copy and microcopy · tool descriptions · template usage notes |
|
|
42
|
-
| **B — descriptive** | **Understand**, not obey | `okf/**` concepts and references · explainers · `**/README.md` · design and data-model docs |
|
|
42
|
+
| **B — descriptive** | **Understand**, not obey | `okf/**` concepts and references · explainers · `**/README.md` · design and data-model docs · agent-drafted status reports and stakeholder updates (`planning/reports/**`, `<state>/reports/**`) |
|
|
43
43
|
| **C — argumentative** | **Weigh a judgement under uncertainty** | ADRs and decision records · `planning/prd/**` · briefs · the discoveries log · eval verdicts · PR bodies |
|
|
44
44
|
|
|
45
45
|
The three classes are the rule. **The paths are your repo's, so write them down once.** In PMOS they
|
|
@@ -48,8 +48,10 @@ also cover `build-skills/**` and `okf/core/playbooks/**` (A), `planning/explaine
|
|
|
48
48
|
cover your CLI output, your error strings and your component copy (A), and your architecture notes
|
|
49
49
|
(B). When a path is not on your list, ask the question in column two and add the answer to the list.
|
|
50
50
|
|
|
51
|
-
|
|
52
|
-
**new and modified text only** — never rewrite an existing corpus to satisfy it.
|
|
51
|
+
Three boundary rules. **Text the PM wrote is Class C**, whatever it is about. The profile binds
|
|
52
|
+
**new and modified text only** — never rewrite an existing corpus to satisfy it. And inside an
|
|
53
|
+
agent-drafted status report or update, the request in *Needs your call* is **Class A**: the reader
|
|
54
|
+
must act on it, so write one question, the options, your recommendation and the date.
|
|
53
55
|
|
|
54
56
|
**Done when:** you can name the class and the row that put it there.
|
|
55
57
|
|
|
@@ -40,12 +40,11 @@ definition of *what to design* and the hard constraints, agreed before any desig
|
|
|
40
40
|
|
|
41
41
|
## Procedure
|
|
42
42
|
|
|
43
|
-
0. **
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
console-redesign series — "too many navigations" was stated once and unhonored twice.
|
|
43
|
+
0. **Ask before you brief.** Where the PM's aesthetic or structural intent is ambiguous, follow the
|
|
44
|
+
[requirements-elicitation skill](/skills/requirements-elicitation.skill). Look up what the
|
|
45
|
+
environment answers (the capability ledger, the design system, the promoted prototype); the taste
|
|
46
|
+
calls are the PM's. The recorded cost of skipping this is the console-redesign series — "too many
|
|
47
|
+
navigations" was stated once and unhonored twice.
|
|
49
48
|
1. **Confirm the anchor.** The initiative has a PRD and an anchor — a parent KR, or a declared
|
|
50
49
|
health budget `health:<id>` (D59). The brief does not re-argue *whether*
|
|
51
50
|
to build the surface; it says how it should look.
|
|
@@ -81,11 +81,8 @@ Before any work begins, the generator and evaluator **agree on done-criteria**
|
|
|
81
81
|
contract stage of the [SDLC loop](/okf/core/concepts/sdlc-loop.md). A rubric is incomplete without
|
|
82
82
|
one.
|
|
83
83
|
|
|
84
|
-
**Reach the criteria by
|
|
85
|
-
|
|
86
|
-
recommended answer**, stop at unambiguous — no cap, and a batch questionnaire is not compliant. If a
|
|
87
|
-
fact can be found by exploring the environment, look it up rather than asking — the decisions are the
|
|
88
|
-
PM's (D12). **Write criteria for durability:** behavioral contracts and interfaces, never file paths
|
|
84
|
+
**Reach the criteria by asking, not assumption.** Where the PM's intent is ambiguous, follow the
|
|
85
|
+
[requirements-elicitation skill](/skills/requirements-elicitation.skill). **Write criteria for durability:** behavioral contracts and interfaces, never file paths
|
|
89
86
|
or line numbers (they stale while work waits); each criterion independently verifiable.
|
|
90
87
|
|
|
91
88
|
**Format:**
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pm-communication
|
|
3
|
+
description: Draft a status report, stakeholder update or decision record for one named audience (leadership, delivery or partner), write it where the initiative's record points, and set doc_path. Use when the PM asks for a status update, a stakeholder update, a decision communication, a report, or to put a scheduled draft under a lane.
|
|
4
|
+
license: MIT
|
|
5
|
+
metadata:
|
|
6
|
+
pmos-version: 1.0.0
|
|
7
|
+
pmos-owner: wawan
|
|
8
|
+
pmos-risk: low
|
|
9
|
+
pmos-category: communication
|
|
10
|
+
pmos-scope: read:okf, read:planning, read:state, write:planning/reports
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# pm-communication — Draft the update for the reader
|
|
14
|
+
|
|
15
|
+
This skill is the producer for the `report` and `decision-record` lanes of the document profile
|
|
16
|
+
([D77](/okf/products/pmos/adr/d77-lane-definitions.md)). It drafts one document for one audience in
|
|
17
|
+
the report frame of [D78](/okf/products/pmos/adr/d78-one-report-shape.md). It writes a file. It sends
|
|
18
|
+
nothing.
|
|
19
|
+
|
|
20
|
+
> **Format note:** this skill follows [SKILL-FORMAT](/skills/SKILL-FORMAT.md). The text is
|
|
21
|
+
> instructional (class A of [technical-writing-ste](/skills/technical-writing-ste.skill)).
|
|
22
|
+
> The documents it drafts are class B, except the request in *Needs your call*.
|
|
23
|
+
|
|
24
|
+
## When to use vs. not
|
|
25
|
+
|
|
26
|
+
- **Use** for a status report, a stakeholder update, a decision record or a decision communication.
|
|
27
|
+
- **Use** to put a scheduled draft under the `report` lane (step 4).
|
|
28
|
+
- **Do not use** for customer-facing copy or release notes. That is the content lane and the
|
|
29
|
+
[copywriting skill](/skills/copywriting.skill).
|
|
30
|
+
- **Do not use** to decide the lane. That is the [pmos-router](/skills/pmos-router.skill).
|
|
31
|
+
- **Do not use** to gather what the PM wants to say. That is the
|
|
32
|
+
[requirements-elicitation skill](/skills/requirements-elicitation.skill), which holds the
|
|
33
|
+
questions for the `report` and `decision-record` lanes. Follow it when step 2 needs answers.
|
|
34
|
+
|
|
35
|
+
## Rules that always hold
|
|
36
|
+
|
|
37
|
+
1. The draft is a file in this repository. Never send, post, share, email, publish or upload it. The PM does that (D71).
|
|
38
|
+
2. Every claim carries a pointer: an initiative id, an acceptance, a note, a run or a source item. A claim with no pointer is left out or marked "unverified".
|
|
39
|
+
3. Write nothing that you did not read. Name each source you could not reach. If nothing changed, say so.
|
|
40
|
+
4. Never write `reviewed_by`, a review verdict, an acceptance or a handoff. Those belong to the reviewer and the PM.
|
|
41
|
+
5. A gathered note with `confidence: unconfirmed` is marked unverified in the draft. Never write it as a fact.
|
|
42
|
+
6. Skip threads and pages that are private, personal, confidential or HR. Count them. Do not read them.
|
|
43
|
+
7. Never copy message bodies, attachments, tokens or credentials. Quote at most one short sentence per item.
|
|
44
|
+
|
|
45
|
+
## Procedure
|
|
46
|
+
|
|
47
|
+
1. **Find the lane and the record.** Read the initiative record and its `type`. Run
|
|
48
|
+
`node scripts/workflow-state.js --lanes --json` (in a kit repository the script is
|
|
49
|
+
`pmos/scripts/workflow-state.js`). Find the lane in `defs`. It must be `report` or
|
|
50
|
+
`decision-record`. State the lane's `output` and `done` in plain words before you draft.
|
|
51
|
+
*Done when:* the PM has seen the lane's output and done-rule.
|
|
52
|
+
|
|
53
|
+
If the profile has no such lane (the code profile), say so. Offer the content lane with an
|
|
54
|
+
internal audience, and stop. If the script is missing or the lane is unknown, say so and ask
|
|
55
|
+
which lane applies.
|
|
56
|
+
|
|
57
|
+
2. **Name the audience.** The audience is leadership, delivery or partner. Read it from the
|
|
58
|
+
record, the PM's definition file or the PM's request. If none names it, ask the PM, with a
|
|
59
|
+
recommended answer, by the requirements-elicitation skill. Do not choose one.
|
|
60
|
+
*Done when:* the audience is one of the three and the PM has confirmed it.
|
|
61
|
+
|
|
62
|
+
3. **Gather the facts.** Read what the draft will claim: the initiatives and their acceptances
|
|
63
|
+
(`node scripts/workflow-state.js`), the runs, the notes in `<state>/requirements/` (`<state>`
|
|
64
|
+
is `pmos/state/` if it exists, and `planning/` if not), and each source the PM's definition
|
|
65
|
+
file names that you can reach. For a report, read `<state>/reports/definitions/<cadence>.md`
|
|
66
|
+
if it exists and follow it where it does not remove a part of the frame. Look facts up. Do
|
|
67
|
+
not ask the PM for a fact that a file holds.
|
|
68
|
+
*Done when:* each claim you will make has a pointer, and each source you could not reach is listed.
|
|
69
|
+
|
|
70
|
+
4. **Adopt a scheduled draft, if the PM names one.** If the PM points at an existing draft (a
|
|
71
|
+
file under `<state>/reports/`), do not draft a new one. Set the record's `doc_path` to that
|
|
72
|
+
file (step 6) and go to step 7 on it. Tell the PM that the draft was written by a schedule
|
|
73
|
+
and was not part of the lane until now.
|
|
74
|
+
*Done when:* the PM has said whether to adopt or to draft a new one.
|
|
75
|
+
|
|
76
|
+
5. **Draft in the audience's register.** For a report, copy the
|
|
77
|
+
[report template](/okf/core/templates/report-weekly-template.md). For a decision record, copy the
|
|
78
|
+
[decision-record template](/okf/core/templates/decision-record-template.md). Fill every section
|
|
79
|
+
in the order and register for the audience (see [Registers](#registers)). The Headline comes
|
|
80
|
+
first. If a decision is needed, the Headline says what it is.
|
|
81
|
+
Write the file to the record's `doc_path`. If the record has none, write
|
|
82
|
+
`planning/reports/<initiative-id>-<YYYY-MM-DD>.md`. If the file exists, do not overwrite it:
|
|
83
|
+
append a section `## Later run HH:MM`. Start with this frontmatter, one key per line:
|
|
84
|
+
`type: Reference`, `title`, `initiative_id`, `audience`, `status: draft`,
|
|
85
|
+
`generated: {by: claude-code/pm-communication, at: "<ISO 8601>"}` and
|
|
86
|
+
`sources: [{resource: "<pointer>", title: "<what it is>"}]`. Do not add `timestamp` or `verified`.
|
|
87
|
+
*Done when:* the file exists and has all the sections of its template.
|
|
88
|
+
|
|
89
|
+
6. **Point the record at it.** Set `doc_path` on the initiative record to the file. This is the
|
|
90
|
+
only key you set. If `doc_path` already names a different file, do not change it: ask the PM.
|
|
91
|
+
*Done when:* `node scripts/workflow-state.js <id>` shows the draft step done with this file as its basis.
|
|
92
|
+
|
|
93
|
+
7. **Check the draft against the done-rule.** Read the lane's `done` text. Say which part is
|
|
94
|
+
met: the document exists (yes), a reviewer has judged it (not yet), the PM has accepted it
|
|
95
|
+
(not yet), and handed off, where the lane says so (not yet). Then check the draft:
|
|
96
|
+
the Headline is first; the decision or the absence of one is visible on the first screen;
|
|
97
|
+
each claim has a pointer; *Sources reached and not reached* is last; nothing in it is
|
|
98
|
+
outside the audience's register.
|
|
99
|
+
*Done when:* every check passes or the failing one is named to the PM.
|
|
100
|
+
|
|
101
|
+
8. **Hand over.** Say where the draft is. Name the review step: the reviewer is not you, and
|
|
102
|
+
grades against the [report rubric](/okf/core/templates/report-rubric-template.md). State the open
|
|
103
|
+
questions and the sources not reached. Do not send the draft.
|
|
104
|
+
*Done when:* the PM knows where the draft is, who must review it, and what is still open.
|
|
105
|
+
|
|
106
|
+
## Registers
|
|
107
|
+
|
|
108
|
+
One register per audience. The order is fixed. What a register leaves out is as much a part of it
|
|
109
|
+
as what it includes. A decision comes before its reasoning for every audience.
|
|
110
|
+
|
|
111
|
+
| Audience | Order | Include | Leave out | Length |
|
|
112
|
+
|---|---|---|---|---|
|
|
113
|
+
| **Leadership** | The decision or headline; the risk; the evidence | The call you need and by when; the effect on a goal or a date; one number that shows it | Task lists, tool names, how the work was done | One screen |
|
|
114
|
+
| **Delivery** | Scope and state; acceptance; what blocks | Initiative ids, acceptance state, blockers with an owner, next step | Strategy, history before this period | As long as the work needs, in tables |
|
|
115
|
+
| **Partner** | What changed for them; what they must do, and by when | The change in their terms, the date, who to ask | Internal ids, internal debate, anything they cannot act on | Short: the action first |
|
|
116
|
+
|
|
117
|
+
For a decision record, the choice and its owner come first. Then who must act and by when. The
|
|
118
|
+
reasoning and the options considered come last.
|
|
119
|
+
|
|
120
|
+
## Failure behaviour
|
|
121
|
+
|
|
122
|
+
- The audience is not named and the PM does not answer: do not draft. Say what is missing.
|
|
123
|
+
- The lane definition cannot be read: say so, and ask which lane applies.
|
|
124
|
+
- No source can be reached: write a short honest draft that says so. Do not fill the gap.
|
|
125
|
+
- `doc_path` names a different file: do not change it. Ask the PM.
|
|
@@ -65,6 +65,8 @@ router is the bug (fix it via the weekly harness scan).
|
|
|
65
65
|
| "**Production is broken**" | **Incident lane** | `type: incident`; fix now, record post-hoc within 48h at `prd_path` (the one sanctioned inversion; [incident template](/okf/core/templates/incident-record-template.md)) | Initiative Gate (record, post-hoc) |
|
|
66
66
|
| A **text deliverable** (landing page, microcopy, release notes, campaign) | **Content lane** | `type: content`; content brief at `prd_path`, rubric recommended not required (D58); [copywriting skill](/skills/copywriting.skill). Copy for a prototype rides the prototype instead (D60) | Initiative Gate (content brief) |
|
|
67
67
|
| **Upkeep** — refactor/ops/security with no honest KR | **Chore lane, health-anchored** | `type: chore`; one-paragraph intent in `status`; anchor `health:<id>` from [health-budgets](/planning/okrs/health-budgets.md) (D59) — never a faked KR | Initiative Gate (intent + anchor) |
|
|
68
|
+
| "**Gather**, **clarify** or **sharpen** the requirements" — the PM has a vague ask or notes from gathering and no brief yet | **Requirements elicitation** (before the lane's first artifact) | [requirements-elicitation skill](/skills/requirements-elicitation.skill) → `planning/briefs/<id>-requirements.md` at `brief_path`; reads the lane's input from `scripts/lane-defs.js` and the notes `gather-requirements` filed (D71); the PM confirms each note item. It does not choose the lane and does not write the PRD | none (the brief is never a gate) |
|
|
69
|
+
| "**Write a status update**, a **stakeholder update** or a **decision communication**", or put a scheduled report draft under a lane — a report, an update or a decision record for a named audience (leadership, delivery or partner) | **Document profile: the `report` or `decision-record` lane.** **Code profile: the content lane**, with an internal audience (customer-facing copy is a different request) | [pm-communication skill](/skills/pm-communication.skill) → a draft at `doc_path`, in the report frame of D78 (Headline, the middle sections, Needs your call, Sources reached and not reached); it asks for the audience, sets `doc_path`, never sends and never writes the review or the acceptance. The reviewer grades against the [report rubric](/okf/core/templates/report-rubric-template.md) | Initiative Gate (the lane's record); the review and acceptance steps stay open for the reviewer and the PM |
|
|
68
70
|
|
|
69
71
|
**Every route** still takes the universal steps: anchored initiative row (`create_initiative`),
|
|
70
72
|
branch `initiative/<id>`, and the human Acceptance Gate at the end (D12) — the router never bypasses
|
|
@@ -99,5 +101,5 @@ Check your position at any time with `node scripts/workflow-state.js <id>`.
|
|
|
99
101
|
already decided to explore, go straight to prototype.
|
|
100
102
|
- **Anchor-free trivia** (a typo, a broken link): the `no-initiative` label, no lane. Real work
|
|
101
103
|
never takes the hatch.
|
|
102
|
-
- **Unknown shape after the checks:** ask the PM one routing question
|
|
103
|
-
|
|
104
|
+
- **Unknown shape after the checks:** ask the PM one routing question, as the
|
|
105
|
+
[requirements-elicitation skill](/skills/requirements-elicitation.skill) describes. Do not guess a lane.
|
|
@@ -32,22 +32,17 @@ agreed.
|
|
|
32
32
|
|
|
33
33
|
## Procedure
|
|
34
34
|
|
|
35
|
-
0a. **Existing surface? Understand it first — before
|
|
35
|
+
0a. **Existing surface? Understand it first — before asking.** If specifying this honestly
|
|
36
36
|
requires reading code that already exists, an [explain-surface](/skills/explain-surface.skill)
|
|
37
37
|
pass runs on that region **first**, in a fresh context and **not by you**. Its *Open questions*
|
|
38
|
-
section is a declared input to the
|
|
38
|
+
section is a declared input to the questions in step 0: those are the things that could not be
|
|
39
39
|
determined from the code, and they must be resolved with the PM or carried explicitly into the
|
|
40
40
|
PRD's risks — never silently answered by assumption. Greenfield → skip. This exists because step 0b's
|
|
41
41
|
boundary rule, on its own, gives the **agent** the understanding and the PM none.
|
|
42
|
-
0. **
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
question is a quality bug, not a quantity bug). A batch questionnaire is **not** compliant with
|
|
47
|
-
this step. Boundary rule, near-verbatim from AGENTS.md: *if a fact can be found by exploring the
|
|
48
|
-
environment, look it up rather than asking — the decisions, though, are the PM's* (D12 at
|
|
49
|
-
optimal altitude). A stated requirement that later goes unhonored in a build (the recorded
|
|
50
|
-
"too many navigations" class) is exactly what this step exists to pin down in writing.
|
|
42
|
+
0. **Ask before you write.** Follow the [requirements-elicitation skill](/skills/requirements-elicitation.skill):
|
|
43
|
+
its asking rule holds here, and no authoring starts until the PM confirms the shared understanding.
|
|
44
|
+
A stated requirement that later goes unhonored in a build (the recorded "too many navigations"
|
|
45
|
+
class) is what this step pins down in writing.
|
|
51
46
|
1. **Anchor to strategy first.** Identify the parent KR in the
|
|
52
47
|
[OKR tree](/okf/core/concepts/okr-tree.md) — or, for maintenance work with no honest KR, the
|
|
53
48
|
declared [health budget](/okf/core/concepts/health-anchors.md) (`health:<id>`, D59). If the
|
|
@@ -109,8 +104,7 @@ its situating sentence (D58); the eval rubric is queued to be written first.
|
|
|
109
104
|
|
|
110
105
|
## Level 3 sub-cases
|
|
111
106
|
|
|
112
|
-
-
|
|
113
|
-
(author on first need).
|
|
107
|
+
- None yet.
|
|
114
108
|
- Spike / discovery work where the deliverable is a learning, not a feature, is **not a PRD
|
|
115
109
|
case** — take the discovery lane ([D56](/okf/products/pmos/adr/d56-initiative-lanes.md)):
|
|
116
110
|
[discovery skill](/skills/discovery.skill) +
|