create-pmos 0.54.1 → 0.55.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/package.json +1 -1
- package/payload/KIT-VERSION +1 -1
- package/payload/planning/evals/eval-calibration.md +1 -1
- package/payload/planning/okrs/health-budgets.md +1 -1
- package/payload/state/discoveries.md +1 -1
- package/workspace/guide/proactive-engine.md +72 -9
- package/workspace/guide/today.md +25 -2
- package/workspace/lib/brief.js +244 -8
- package/workspace/lib/day-run.js +297 -0
- package/workspace/lib/goals.js +25 -3
- package/workspace/lib/proactive-cli.js +119 -6
- package/workspace/lib/proactive.js +53 -7
- package/workspace/package-lock.json +1 -1
- package/workspace/package.json +1 -1
- package/workspace/public/pm/components.css +134 -23
- package/workspace/public/pm/dest-today.js +10 -8
- package/workspace/public/pm/today-copy.js +182 -0
- package/workspace/public/pm/today-day.js +760 -0
- package/workspace/public/pm/today-goals.js +96 -161
- package/workspace/replaced-tests.json +10 -0
- package/workspace/server.js +190 -9
- package/workspace/skills/day-check.skill +56 -0
- package/workspace/skills/day-task.skill +47 -0
- package/workspace/skills/morning-brief.skill +45 -10
- package/workspace/test-files.json +2 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: day-check
|
|
3
|
+
label: "Day check"
|
|
4
|
+
description: "The daytime check of today's run: read only what changed since the last check, and merge new items, resolved items, meeting notes and updated digests into the stored brief. Read-only on every source; it sends nothing."
|
|
5
|
+
run: agent
|
|
6
|
+
agent: claude
|
|
7
|
+
output:
|
|
8
|
+
- What changed
|
|
9
|
+
- Items added and resolved
|
|
10
|
+
- Sources reached and not reached
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
/day-check — look once at what changed since the last check of today's run, and merge it into today's brief.
|
|
14
|
+
|
|
15
|
+
Rules that always hold:
|
|
16
|
+
1. READ-ONLY on every source. Never send, reply, forward, post, react, comment, create, edit, accept, decline, transition, label, archive, mark read or delete anything in mail, Slack, Jira, Confluence, GitHub, Drive, Figma, a website, calendar, Wispr Flow or any other source.
|
|
17
|
+
2. ONLY WHAT CHANGED. Do not read the day again. Read only what is new since the last check. The time of the last check is in `pmos proactive day`.
|
|
18
|
+
3. SETTINGS DECIDE THE SOURCES AND THE SCOPES, as in the morning brief. Read a source only if it is on. In Slack, Jira and Confluence, read a place with scope watch since the last check, look in a place with scope search only for mentions of the PM and the words of the goals, and do not touch a place with scope ignore.
|
|
19
|
+
4. LIGHT ON CONTENT. Never copy a message body, an attachment, a token or a credential. Paraphrase in the limits of each field. Skip anything marked private, personal, confidential or HR.
|
|
20
|
+
5. NOTHING INVENTED. Add an item only for something you read. A check that finds nothing is a correct check.
|
|
21
|
+
6. THE ONLY WRITE is `pmos proactive brief submit --merge`. Do not edit repository files and do not commit. Do not start, approve or revise a task.
|
|
22
|
+
7. AT MOST 30 ITEMS in the stored brief after the merge. Resolve what is done before you add. The workspace refuses a merge that would pass 30.
|
|
23
|
+
|
|
24
|
+
Procedure:
|
|
25
|
+
1. Run `pmos proactive day`. It shows the stage, the tasks, and the check state (when the last check was, and why this one runs). Run `pmos proactive brief` to read the stored brief: its items with their ids, its events with their ids, and its digests. Run `pmos proactive settings` for the sources, the scopes and the websites. Run `pmos proactive goals` for the goal ids.
|
|
26
|
+
2. Read what changed, from the sources that are on and reachable:
|
|
27
|
+
- Calendar: today's events. Note a new event, a moved one, a cancelled one, and a new link or agenda in one.
|
|
28
|
+
- Mentions of the PM since the last check, in Slack, Jira and Confluence, in every place that is not ignored. Keep where, who, the link to the conversation itself and a short paraphrase of what is asked.
|
|
29
|
+
- Places with scope watch: read every message or comment since the last check. Update the digest of the place (decisions, open questions, what touches a goal). A digest you submit replaces the stored digest of that place, so carry over what still holds.
|
|
30
|
+
- GitHub, Drive, Figma and websites, if on: only what changed since the last check and matters to a goal or a meeting.
|
|
31
|
+
- Wispr Flow: notes for meetings that ended since the last check. Read the summary, the decisions and the actions. Read the related mail for the same meeting only if mail is on, and keep the subject, the sender and a gist.
|
|
32
|
+
3. Decide what the brief needs.
|
|
33
|
+
- New items: a thing the PM should act on that is not in the stored brief. Fill the fields as the morning-brief skill does: link, where, who, about, ask, reply_needed, how and kind (you, approve or auto, with the same meaning). Set "mention": true on an item that comes from a mention. Only give an item a source that is "read".
|
|
34
|
+
- Resolved items: an item in the stored brief that is now done, answered or no longer true, for example a thread the PM answered, an issue that was closed, a meeting that was cancelled. List its id in "resolved". Never resolve an item only because it is old.
|
|
35
|
+
- Event notes: for a meeting that ended, add "notes": {"wispr": {"link", "summary", "decisions", "actions"}, "mail": {"subject", "from", "gist", "link"}} to that event, and mark the "after" steps that are now done with "done": true. Give the event by the same "start", "end" and "title" it has in the stored brief, because the workspace derives its id from them.
|
|
36
|
+
- Updated digests: only for the places you read.
|
|
37
|
+
4. Write one JSON file in the scratch folder of this session, in the shape of the morning brief, with only what is new or changed, and a list of resolved ids:
|
|
38
|
+
```
|
|
39
|
+
{"date": "YYYY-MM-DD",
|
|
40
|
+
"sources": {"calendar": "read", "slack": "read", "jira": "read", "wispr": "read"},
|
|
41
|
+
"calendar": [{"start": "<ISO>", "end": "<ISO>", "title": "…", "notes": {"wispr": {"summary": "…", "decisions": ["…"], "actions": ["…"]}}}],
|
|
42
|
+
"items": [{"title": "…", "why_now": "…", "source": "slack", "owner": "pm|agent", "effort": "minutes", "confidence": 0.0, "evidence": "…",
|
|
43
|
+
"link": "https://…", "where": "…", "who": "…", "about": "…", "ask": "…", "reply_needed": true, "how": "…", "kind": "you|approve|auto"}],
|
|
44
|
+
"digests": [{"source": "slack", "name": "#pm-team", "decisions": ["…"], "open": ["…"], "goals": ["…"]}],
|
|
45
|
+
"resolved": ["<item id>"],
|
|
46
|
+
"judgment": {"used": false}}
|
|
47
|
+
```
|
|
48
|
+
Report in "sources" only the sources you read or could not reach in this check. Use the date of today.
|
|
49
|
+
5. Run `pmos proactive brief submit --file <that file> --merge`. If it is refused, read the reason, fix the file and submit once more. Do not work around a refusal.
|
|
50
|
+
6. If nothing changed, still submit a merge with no new items, no resolved ids and no notes: `{"date": "YYYY-MM-DD", "sources": {}, "calendar": [], "items": [], "resolved": [], "judgment": {"used": false}}`. The workspace counts an empty check and waits longer before the next one. Do not skip this step.
|
|
51
|
+
7. Finish with the output contract. Say in three lines what changed, how many items you added and resolved, and which sources were not reached.
|
|
52
|
+
|
|
53
|
+
Output contract — produce EXACTLY these sections in your final message:
|
|
54
|
+
- What changed
|
|
55
|
+
- Items added and resolved
|
|
56
|
+
- Sources reached and not reached
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: day-task
|
|
3
|
+
label: "Day task"
|
|
4
|
+
description: "Do one task of the PM's day for one task id and one mode (do, revise or send). In do and revise it prepares ONE draft and sends nothing. In send it carries out the one outward step of the draft the PM approved."
|
|
5
|
+
run: agent
|
|
6
|
+
agent: claude
|
|
7
|
+
output:
|
|
8
|
+
- Task and mode
|
|
9
|
+
- What was done
|
|
10
|
+
- Draft or step result
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
/day-task TASK MODE — work one task of today's run. TASK is a task id (t-xxxxxxxx). MODE is do, revise or send.
|
|
14
|
+
|
|
15
|
+
Rules that always hold:
|
|
16
|
+
1. READ-ONLY while you work. In do and revise mode, read sources and write a draft. Never send, post, reply, comment, forward, react, create, edit, transition, merge, push, label, archive or delete anything in mail, Slack, Jira, Confluence, GitHub, Drive, Figma, calendar or any other system. Do not open a pull request. Do not commit.
|
|
17
|
+
2. ONE DRAFT. Submit exactly one draft in do and revise mode, with `pmos proactive day deliver`. The PM reads it and decides.
|
|
18
|
+
3. THE DRAFT IS WHAT LEAVES. In send mode, do exactly the one outward step of the approved draft, and nothing else. Do not improve the text. Do not add a recipient. Do not do a second step.
|
|
19
|
+
4. LIGHT ON CONTENT. Quote no more than one short line from a source. Write the rest in your own words. Never copy a token or a credential. Skip anything marked private, personal, confidential or HR.
|
|
20
|
+
5. NOTHING INVENTED. If a fact is not in a source you read, leave it out or write "unverified".
|
|
21
|
+
6. NEVER APPROVE FOR THE PM. Do not run `pmos proactive day approve`, `revise` or `retry`. Those commands are the PM's.
|
|
22
|
+
7. YOU CANNOT FINISH WITHOUT A REPORT. End every run with exactly one of `day deliver` (do, revise), `day sent` (send) or `day fail`.
|
|
23
|
+
|
|
24
|
+
Procedure:
|
|
25
|
+
1. Run `pmos proactive day show TASK`. It prints the task: the title, the kind (approve or auto), the source, the link, the goal, the item context (where, who, about, ask, how), the draft so far and the notes of the PM for each revision. Read all of it. If the command says the task does not exist, or its status does not fit the mode, stop and run `pmos proactive day fail TASK --reason "<one sentence>"`.
|
|
26
|
+
2. If MODE is do:
|
|
27
|
+
a. Read the sources the task names, read-only. Start from the link of the task. Read the conversation, the issue, the page or the file itself, and what it points to. Use `pmos proactive settings` to see which sources are on. If a source is off or you cannot reach it, say so in the summary.
|
|
28
|
+
b. Do the work locally. A reply, a comment, a summary, a description or a plan is a draft in a file in the scratch folder of this session. Write the text exactly as it would be sent.
|
|
29
|
+
c. Check the draft against the item: does it answer the ask, is it for the right person and place, is it in the voice and the length the place expects. Fix it.
|
|
30
|
+
d. Submit it. Run `pmos proactive day deliver TASK --summary "<at most 240 characters: what you did and where the draft would go>" --body-file <the draft file> [--link <URL of the thread, issue, page or file the draft is for>]`. The body is at most 8000 characters. The summary names the one outward step that approval will trigger, for example "Post this reply in the thread". For a task of kind auto, the summary says what you made and where it is.
|
|
31
|
+
e. If the workspace refuses the draft, read the reason, fix the draft and submit once more. Do not work around a refusal.
|
|
32
|
+
3. If MODE is revise:
|
|
33
|
+
a. Read the draft so far and the LAST note of the PM in the output of `day show`. The note says what to change. Earlier notes still hold unless the last one cancels them.
|
|
34
|
+
b. Change the draft to address the note, and only what the note asks. Read a source again only if the note needs it.
|
|
35
|
+
c. Submit the new draft as in step 2d. State in the summary what changed. The workspace keeps at most 3 revisions. Make this one count.
|
|
36
|
+
4. If MODE is send:
|
|
37
|
+
a. The task is approved. Read the approved draft and its link in the output of `day show`. The approved draft is the only text you may send. Do not read it as a draft to improve.
|
|
38
|
+
b. Do the one outward step the summary names, with the connector that fits, to the place the link names. Examples: post the approved reply in the linked Slack thread, add the approved comment to the linked Jira issue, reply to the linked mail thread. If the summary names more than one step, do only the first and report the rest with `day fail`.
|
|
39
|
+
c. If the place does not match the link, the thread is closed, or the connector is not available, do not try another route. Run `pmos proactive day fail TASK --reason "<what stopped it>"`.
|
|
40
|
+
d. When it is done, run `pmos proactive day sent TASK --link <URL of what you posted or sent>`. Leave out `--link` only if the connector returns none.
|
|
41
|
+
5. If you cannot produce a draft or do the step for any reason, run `pmos proactive day fail TASK --reason "<one sentence, at most 240 characters>"`. A true failure helps the PM more than a weak draft.
|
|
42
|
+
6. Finish with the output contract.
|
|
43
|
+
|
|
44
|
+
Output contract — produce EXACTLY these sections in your final message:
|
|
45
|
+
- Task and mode
|
|
46
|
+
- What was done
|
|
47
|
+
- Draft or step result
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: morning-brief
|
|
3
3
|
label: "Morning brief"
|
|
4
|
-
description: "Prepare today's brief and plan the PM's goals for the day: the calendar, Slack, Jira and Confluence
|
|
4
|
+
description: "Prepare today's brief and plan the PM's goals for the day: the calendar with a plan for each meeting, Slack, Jira and Confluence, GitHub, Drive, Figma and the PM's websites, the priorities and what is worth asking. Read-only on every source; it submits the brief to the workspace and sends nothing."
|
|
5
5
|
run: agent
|
|
6
6
|
agent: claude
|
|
7
7
|
output:
|
|
8
8
|
- Goals
|
|
9
9
|
- Calendar
|
|
10
|
+
- Digests
|
|
10
11
|
- Priorities
|
|
11
12
|
- Worth asking
|
|
12
13
|
- Sources reached and not reached
|
|
@@ -15,36 +16,70 @@ output:
|
|
|
15
16
|
/morning-brief — prepare today's brief for the PM, and plan the goals they set for today.
|
|
16
17
|
|
|
17
18
|
Rules that always hold:
|
|
18
|
-
1. READ-ONLY on every source. Never send, reply, forward, post, react, comment, create, edit, accept, decline, transition, label, archive, mark read or delete anything in mail, Slack, Jira, Confluence, calendar, Wispr Flow or any other source.
|
|
19
|
-
2. SETTINGS DECIDE THE SOURCES. Run `pmos proactive settings`. Read a source only if its line under "brief sources" says on. A source that is off is reported as "off". Mail is off unless the PM turned it on.
|
|
20
|
-
3. LIGHT ON CONTENT.
|
|
19
|
+
1. READ-ONLY on every source. Never send, reply, forward, post, react, comment, create, edit, accept, decline, transition, label, archive, mark read or delete anything in mail, Slack, Jira, Confluence, GitHub, Drive, Figma, a website, calendar, Wispr Flow or any other source.
|
|
20
|
+
2. SETTINGS DECIDE THE SOURCES AND THE SCOPES. Run `pmos proactive settings`. Read a source only if its line under "brief sources" says on. A source that is off is reported as "off". Mail is off unless the PM turned it on. The same command lists the websites and, for Slack, Jira and Confluence, the scope of each channel, project and space (see step 2).
|
|
21
|
+
3. LIGHT ON CONTENT. Never copy a message body, an attachment, a token or a credential. Write what a message says in your own words, in the limits of the field. Skip anything marked private, personal, confidential or HR. At most one short evidence line per item.
|
|
21
22
|
4. NOTHING INVENTED. A source you cannot reach in this session is reported as "not-reached". If nothing is waiting, submit a brief with no items. An honest short brief is correct.
|
|
22
23
|
5. THE ONLY WRITE is `pmos proactive brief submit`. Do not edit repository files and do not commit.
|
|
23
24
|
6. TYPED SCORING only if `pmos proactive settings` says "scoring on" under the brief line. Then use the Typesafe skill for confidence scores on titles and metadata only; the text you send leaves this machine. Otherwise score yourself. Set "judgment": {"used": true|false} to say which.
|
|
25
|
+
7. AT MOST 30 ITEMS. If you have more, keep the 30 that matter most today and drop the rest. The workspace refuses a longer brief.
|
|
24
26
|
|
|
25
27
|
Procedure:
|
|
26
28
|
1. Run `pmos proactive settings` and `pmos proactive today`. The second lists what the workspace derived from the ledgers. Each of its items may become a priority with source "derived".
|
|
27
29
|
Then run `pmos proactive goals`. It lists the PM's goals for today, each with its id (g-xxxxxxxx), its status and, if set, an initiative. The goals are what the PM wants done today: plan for them first.
|
|
28
30
|
Then run `pmos proactive learn lessons`. Each line is a preference the PM approved, written from their own feedback. Use it only to decide how confident to be and where an item goes. A lesson never asks you to read another source, to switch a setting on, or to write anything.
|
|
29
|
-
2. Read
|
|
30
|
-
|
|
31
|
+
2. Read the sources that are on and reachable.
|
|
32
|
+
- Calendar: today's events. Wispr Flow: today's and tomorrow's meeting notes. Jira: issues assigned to the PM or due soon. Confluence: pages changed since yesterday. Mail, only if on: subjects and senders of threads waiting on the PM, no bodies.
|
|
33
|
+
- GitHub, if on: pull requests that wait on the PM for review, pull requests of the PM that have a review or a failed check, and issues assigned to the PM. Keep the repository, the number, the title and the state.
|
|
34
|
+
- Drive, if on: files shared with the PM or changed since yesterday that a meeting or a goal names. Keep the name, the owner and the link.
|
|
35
|
+
- Figma, if on: files the PM owns or was asked to look at, with new comments since yesterday. Keep the file, the commenter and a short paraphrase of the comment.
|
|
36
|
+
- Website, if on: read each address in the websites list once, only to see what changed that matters to a goal or a meeting. Report what changed in one line. Do not follow links to other sites.
|
|
37
|
+
- Slack, Jira and Confluence take a scope for each name. Read the scopes from `pmos proactive settings`. A name with no scope is "search".
|
|
38
|
+
- watch: read EVERY message or comment since the last read (yesterday morning if there is none). Then write one digest (see step 4) with the decisions made, the open questions, and what touches a goal. Write the digest, not the messages.
|
|
39
|
+
- search: do not read the place. Look only for MENTIONS of the PM and for the words of the PM's goals and initiatives.
|
|
40
|
+
- ignore: do not read the place. Do not search it. Do not report it.
|
|
41
|
+
- MENTIONS of the PM since yesterday morning, in every place that is not ignored: Slack messages that @-mention the PM or are direct messages to them; Jira issues and comments that mention the PM; Confluence pages and comments that mention the PM. For each, keep only where it is (channel, issue key, page title), who wrote it, the link to the conversation itself, and a short paraphrase of what is asked. Never copy the message itself.
|
|
31
42
|
3. PLAN EACH OPEN GOAL. For each open goal, find what moves it today in what you read and in `pmos proactive today`: a meeting where it is decided, a mention that blocks it, an issue or page it needs, a step an agent can prepare. Write each as an item with "goal": "<the goal id>". An agent step names the initiative it advances, so the PM can prepare it from Today. A calendar event that belongs to a goal also gets "goal". If you find nothing for a goal, write nothing for it: the workspace shows that goal as needing a plan. Never invent a step.
|
|
32
43
|
Then ANTICIPATE: for each other thing the PM should act on today (a mention waiting on them, a meeting to prepare for, an issue due), write one item with no goal.
|
|
44
|
+
PLAN EACH MEETING. For each calendar event that is a meeting, write what it is for and how to be ready. Use the Wispr Flow notes of the earlier meetings in the series, the related mail (only if mail is on) and the related Jira, Confluence, Drive and Slack items you read. Do not guess: leave a field out when you have no basis for it.
|
|
45
|
+
- "purpose": why the meeting exists, at most 240 characters.
|
|
46
|
+
- "prep": what the PM must read or decide before it, at most 240 characters.
|
|
47
|
+
- "steps": before, during and after, each a list of at most 6 steps. A step has "t" (at most 140 characters), "who" ("pm" or "agent") and, if it is already done, "done": true. Give a step to "agent" only when an agent session can do it without sending anything.
|
|
48
|
+
- "initiative": {"id": "<initiative id>", "why": "<why this meeting belongs to it>"}, only when it truly does.
|
|
49
|
+
- "links": up to 5 of {"label", "url"}, such as the agenda, the doc or the issue. A link starts with https:// or http://.
|
|
33
50
|
For each item, write: a short title, why it is for today, its source, the initiative id if one applies, who acts (pm or agent), effort (minutes, an-hour, half-day, day), your confidence from 0 to 1 that it belongs on today's list, and one short evidence line. Set "mention": true on an item that comes from a mention of the PM. Give a low confidence when you are guessing. The workspace shows an item under 0.5 as "worth asking", not as a priority.
|
|
51
|
+
Then fill the item fields that tell the PM what to do, so the card needs no second look:
|
|
52
|
+
- "link": the link to the conversation, issue, pull request, file or page itself, not to a list or a search.
|
|
53
|
+
- "where": the channel, issue key, repository or page title. "who": who wrote it or who waits. "about": what it is about, in your words, at most 480 characters. "ask": what is asked of the PM, at most 240 characters.
|
|
54
|
+
- "reply_needed": true only when someone waits for an answer from the PM.
|
|
55
|
+
- "how": how you suggest to deal with it, at most 480 characters.
|
|
56
|
+
- "kind": who does the job.
|
|
57
|
+
- "you": only the PM can do it, for example a decision, a conversation or a judgment. This is the default when the owner is pm. Use it also when a connector call would be easy but the content is the PM's to choose.
|
|
58
|
+
- "approve": an agent prepares one draft, such as a reply, a comment, a summary or a pull request description. The PM reads it and presses approve before anything leaves. The owner is agent. Use it for anything that goes to another person.
|
|
59
|
+
- "auto": an agent does it, nothing leaves the machine and nothing is shared, for example a local summary, a reading list or a checked draft file. The owner is agent. Never use it for a message, a comment, a status change or a merge.
|
|
60
|
+
A task for the PM is never "approve" or "auto": the workspace refuses it.
|
|
34
61
|
4. Write the brief as a JSON file in the scratch folder of this session, in this shape, and nothing else:
|
|
35
62
|
```
|
|
36
|
-
{"date": "YYYY-MM-DD",
|
|
37
|
-
"
|
|
38
|
-
"
|
|
63
|
+
{"date": "YYYY-MM-DD",
|
|
64
|
+
"sources": {"calendar": "read", "wispr": "not-reached", "mail": "off", "slack": "read", "jira": "read", "confluence": "read", "github": "read", "drive": "off", "figma": "off", "website": "off"},
|
|
65
|
+
"calendar": [{"start": "<ISO date and time>", "end": "<ISO>", "title": "…", "with": "…", "goal": "<goal id or omit>",
|
|
66
|
+
"purpose": "…", "prep": "…",
|
|
67
|
+
"steps": {"before": [{"t": "…", "who": "agent"}], "during": [{"t": "…", "who": "pm"}], "after": [{"t": "…", "who": "agent"}]},
|
|
68
|
+
"initiative": {"id": "<initiative id>", "why": "…"},
|
|
69
|
+
"links": [{"label": "Agenda", "url": "https://…"}]}],
|
|
70
|
+
"items": [{"title": "…", "why_now": "…", "source": "calendar|wispr|mail|slack|jira|confluence|github|drive|figma|website|derived", "initiative_id": "<id or omit>", "goal": "<goal id or omit>", "mention": false, "owner": "pm|agent", "effort": "minutes|an-hour|half-day|day", "confidence": 0.0, "evidence": "…",
|
|
71
|
+
"link": "https://…", "where": "#pm-team", "who": "…", "about": "…", "ask": "…", "reply_needed": true, "how": "…", "kind": "you|approve|auto"}],
|
|
72
|
+
"digests": [{"source": "slack|jira|confluence", "name": "#pm-team", "link": "https://…", "decisions": ["…"], "open": ["…"], "goals": ["…"]}],
|
|
39
73
|
"judgment": {"used": false}}
|
|
40
74
|
```
|
|
41
|
-
Only report calendar events if calendar is "read". Only give an item a source that is "read" (or "derived"). Only use a goal id that `pmos proactive goals` listed today: the workspace refuses any other.
|
|
75
|
+
A digest has at most 5 decisions, 5 open questions and 5 goal lines, each at most 140 characters, and at most 30 digests. Write a digest only for a place with scope watch, and only for a source that is "read". Only report calendar events if calendar is "read". Only give an item a source that is "read" (or "derived"). Only use a goal id that `pmos proactive goals` listed today: the workspace refuses any other. Leave out a field you cannot fill: an empty string is worse than no field.
|
|
42
76
|
5. Run `pmos proactive brief submit --file <that file>`. If it is refused, read the reason, fix the file and submit once more. Do not work around a refusal.
|
|
43
77
|
6. Finish by saying in three lines how many goals have a step and which have none, how many priorities and worth-asking items you submitted, and which sources were not reached.
|
|
44
78
|
|
|
45
79
|
Output contract — produce EXACTLY these sections in your final message:
|
|
46
80
|
- Goals
|
|
47
81
|
- Calendar
|
|
82
|
+
- Digests
|
|
48
83
|
- Priorities
|
|
49
84
|
- Worth asking
|
|
50
85
|
- Sources reached and not reached
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"modules": [
|
|
11
11
|
"proactive.test.js",
|
|
12
12
|
"goals.test.js",
|
|
13
|
+
"day-run.test.js",
|
|
13
14
|
"focus.test.js",
|
|
14
15
|
"handoff.test.js",
|
|
15
16
|
"repo-scan.test.js",
|
|
@@ -108,6 +109,7 @@
|
|
|
108
109
|
"test.js": 48,
|
|
109
110
|
"proactive.test.js": 4,
|
|
110
111
|
"goals.test.js": 6,
|
|
112
|
+
"day-run.test.js": 6,
|
|
111
113
|
"focus.test.js": 1,
|
|
112
114
|
"handoff.test.js": 1,
|
|
113
115
|
"repo-scan.test.js": 1,
|