kushi-agents 4.8.2 → 4.9.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 (38) hide show
  1. package/package.json +2 -2
  2. package/plugin/instructions/comprehensive-structured-capture.instructions.md +250 -0
  3. package/plugin/instructions/evidence-layout-canonical.instructions.md +20 -12
  4. package/plugin/instructions/evidence-thoroughness.instructions.md +119 -225
  5. package/plugin/instructions/identity-resolution.instructions.md +11 -8
  6. package/plugin/instructions/meetings-verbatim-required.instructions.md +6 -4
  7. package/plugin/instructions/scope-boundaries.instructions.md +1 -1
  8. package/plugin/instructions/snapshot-vs-stream.instructions.md +25 -1
  9. package/plugin/instructions/verbatim-by-default.instructions.md +21 -1
  10. package/plugin/instructions/weekly-csc.instructions.md +335 -0
  11. package/plugin/instructions/workiq-only.instructions.md +140 -1
  12. package/plugin/skills/ask-project/SKILL.md +26 -6
  13. package/plugin/skills/bootstrap-project/SKILL.md +17 -5
  14. package/plugin/skills/build-state/SKILL.md +30 -7
  15. package/plugin/skills/consolidate-evidence/SKILL.md +27 -4
  16. package/plugin/skills/pull-ado/SKILL.md +85 -9
  17. package/plugin/skills/pull-crm/SKILL.md +87 -10
  18. package/plugin/skills/pull-email/SKILL.md +75 -11
  19. package/plugin/skills/pull-meetings/SKILL.md +83 -8
  20. package/plugin/skills/pull-onenote/SKILL.md +86 -9
  21. package/plugin/skills/pull-sharepoint/SKILL.md +73 -10
  22. package/plugin/skills/pull-teams/SKILL.md +78 -9
  23. package/plugin/skills/refresh-project/SKILL.md +16 -5
  24. package/plugin/skills/self-check/SKILL.md +11 -0
  25. package/plugin/skills/self-check/run.ps1 +208 -0
  26. package/plugin/skills/setup/SKILL.md +16 -15
  27. package/plugin/templates/init/integrations.template.yml +38 -24
  28. package/plugin/templates/init/m365-auth.template.json +3 -3
  29. package/plugin/templates/init/project-evidence.template.yml +5 -5
  30. package/plugin/templates/snapshot/DEPRECATED-v4.9.0.md +37 -0
  31. package/plugin/templates/weekly/_index_entities.template.yml +26 -0
  32. package/plugin/templates/weekly/ado-csc.template.md +113 -0
  33. package/plugin/templates/weekly/crm-csc.template.md +103 -0
  34. package/plugin/templates/weekly/email-csc.template.md +114 -0
  35. package/plugin/templates/weekly/meetings-csc.template.md +112 -0
  36. package/plugin/templates/weekly/onenote-csc.template.md +95 -0
  37. package/plugin/templates/weekly/sharepoint-csc.template.md +98 -0
  38. package/plugin/templates/weekly/teams-csc.template.md +100 -0
@@ -1,234 +1,128 @@
1
- ---
2
- applyTo: "**"
3
- description: "Evidence Thoroughness Standard — every per-source skill MUST capture full bodies, full transcripts, full message reproduction. Headlines-only is a defect."
4
- ---
5
-
6
- # Evidence Thoroughness Standard (HARD RULE)
7
-
8
- Evidence files are the **system of record** that State files cite. They MUST be deep enough that a reader can fully reconstruct what happened without going back to Outlook / Teams / OneNote / SharePoint / CRM / ADO. **Headlines-only summaries are a defect.**
9
-
10
- > **Orthogonal to scope:** depth (this file) and scope (`scope-boundaries.instructions.md`) are independent. Boundaries declare *where Kushi is allowed to look*; depth declares *how completely it captures what it found*. A skill must satisfy BOTH: refuse if the boundary is missing, then capture at full depth inside the boundary. Coverage Notes blocks at the bottom of every entity MUST enumerate which boundaries were applied (per Rule 4 of `scope-boundaries.instructions.md`).
11
-
12
- ## Universal rule — AI Narrative Summary required FIRST
13
-
14
- Every per-entity block (per meeting, per email thread, per Teams thread, per OneNote page, per SharePoint key file, per CRM/ADO record) MUST open with an **`### AI Narrative Summary`** sub-section before any structured sub-sections (Decisions / Actions / Risks / etc.).
15
-
16
- The AI Narrative Summary:
17
- - Is a **multi-paragraph prose summary** (minimum 3 paragraphs for any non-trivial entity; 5+ paragraphs for substantive meetings, threads, or pages) that captures **every detail discussed** — context, what was said by whom, the reasoning, the back-and-forth, side-tangents, soft commitments, sentiment, and any nuance — not just the outcomes.
18
- - Reads like a thorough briefing for someone who wasn't there. A reader who only reads the AI Narrative Summary should be able to answer "what happened, why, who pushed which view, what's the tone, what's still unresolved?" without scrolling further.
19
- - Is generated AFTER the full extraction (transcript / body / page content) is in hand, so it can faithfully cover **everything** — not summarized from headlines.
20
- - Carries inline `[source: …]` citations to the same evidence the structured sub-sections cite. No uncited paragraphs.
21
- - Is NOT a replacement for the structured sub-sections (Decisions, Action Items, Risks, etc.) or the verbatim transcript walk-through / message reproduction. It is **additional**, placed first, so a busy reader gets the full picture before drilling into structure.
22
-
23
- A per-entity block that has structured sub-sections but no AI Narrative Summary is a defect. A 2-paragraph "summary" that only lists outcomes is a defect — it must capture the discussion, not just the result.
24
-
25
- ## Universal rule — full discussion capture (HARD)
26
-
27
- Beyond the narrative summary, every per-entity block MUST also explicitly capture, as separate named sub-sections, the following — even when some are empty (write `_None surfaced._` rather than omit the section, so a reader knows it was checked):
28
-
29
- - **Questions Asked & Answered** — every question raised + the answer given (or "left open"), with who asked and who answered. Format as `Q: … — A: … [source: … · ts]`. Includes clarifying questions, challenge questions, status questions, asks for data, asks for opinion. **A meeting with zero captured Q&A is a defect** unless the meeting was a one-way readout (and even then, capture the Q&A from the Q&A portion at the end).
30
- - **Discussion Points (Bulleted, with Detail)** — every distinct topic touched, as a bullet, with a 2–5-line nested detail block per bullet covering: what was said, by whom, what positions surfaced, what arguments were made, what was concluded (or "deferred"). Not a one-line list — every bullet has nested detail.
31
- - **Decisions** — every decision with exact wording + who decided + supporting context + what was rejected.
32
- - **Plans (Current State)** — the plan as it stands at the end of the entity (meeting / thread / page). What is intended to happen, by when, by whom.
33
- - **Changes to Plans** — every adjustment to a previously-stated plan (whether stated earlier in the same meeting/thread or carried in from prior evidence): old plan → new plan + why it changed + who drove the change. Critical for tracing how an engagement evolves.
34
- - **Next Steps** — forward-looking commitments that aren't yet hard action items. Distinct from Action Items (those have owner+due). Capture even soft signals: "team will look into X", "we'll circle back next week".
35
- - **Action Items** — every commitment with owner + due + source-line.
36
- - **Open Questions / Non-Decisions** — questions raised but not resolved, with who raised them and why deferred. Distinct from "Questions Asked & Answered" (which captures resolved Q&A in this entity).
37
- - **Risks, Blockers, Dependencies** — surfaced or escalated.
38
- - **Customer Asks** — explicit asks the customer made of Microsoft.
39
-
40
- The existence of a section is mandatory; populating it is conditional on the source. **Empty sections must be written explicitly as `_None surfaced._`** so a reader can distinguish "checked and empty" from "skipped".
41
-
42
- ## Per-source minimum bar
43
-
44
- ### Meetings (stream/)
45
- For every meeting in the window — capture, **as separate named sections under each per-meeting block**, in this order (every section MUST be present; if empty, write `_None surfaced._`):
46
- - **AI Narrative Summary** (REQUIRED FIRST per the universal rule above) — 5+ paragraphs covering the whole meeting end-to-end: context coming in, what was discussed in what order, who took which position, the reasoning behind each position, the back-and-forth, soft / forward-looking signals, sentiment, what landed and what stayed open. Cite the transcript timestamps inline.
47
- - Full attendee list (required + optional + actual + no-shows)
48
- - Agenda / stated purpose
49
- - **Detailed Discussion Summary** — multi-paragraph structured narrative of what was actually discussed end-to-end, organized by topic (the AI Narrative Summary is chronological/holistic; this section is topic-organized; both are required)
50
- - **Discussion Points (Bulleted, with Detail)** — every distinct topic, as a bullet with nested 2–5-line detail block (positions, arguments, what was concluded)
51
- - **Questions Asked & Answered** — every Q raised + the A given (or "left open"), `Q: … — A: …` format, with attribution
52
- - **Chronological transcript walk-through with verbatim quotes and timestamps** — every substantive exchange, not just 2 highlight quotes
53
- - **Plans (Current State)** — the plan as it stands at end of meeting
54
- - **Changes to Plans** — old plan → new plan + why + who drove the change
55
- - **Key Decisions** — every decision with exact wording + who decided + supporting context + what was rejected
56
- - **Open Questions / Non-Decisions** — questions raised but not resolved, with who raised them and why deferred
57
- - **Next Steps** — REQUIRED dedicated section. Forward-looking commitments that aren't yet hard action items: "team will gather facts", "Mike will discuss with industry leads", "Microsoft to come back with proposal next week". These are distinct from `Action Items` (which have owner+due) and are critical to State/05_action-items + State/04_workshops-and-key-meetings rendering.
58
- - **Action Items** — every commitment with owner + due + source-line
59
- - **Risks, Blockers, Dependencies** — surfaced or escalated in this meeting
60
- - **Customer Asks** — explicit asks the customer made of Microsoft (resourcing, decisions, timelines, escalations)
61
- - Every artifact link / shared file / recording / transcript URL
62
- - **Coverage Notes** — what was retrievable vs what wasn't (transcript missing, chat-only reconstruction, partial recap, etc.)
63
-
64
- If transcript is unavailable, document why and pull chat transcript + Copilot recap + meeting chat thread to reconstruct. Per-meeting sub-section is mandatory; one block per meeting. **A 30-line meetings file for a week with 2 meetings is a defect — expect 400+ lines, with the structure above repeated per meeting.** A per-meeting block missing the explicit `Next Steps`, `Plans`, `Changes to Plans`, `Discussion Points`, or `Questions Asked & Answered` sections is a defect even if Action Items is present — they capture different things.
65
- - **Key Decisions** — every decision with exact wording + who decided + supporting context
66
- - **Open Questions / Non-Decisions** — questions raised but not resolved, with who raised them and why deferred
67
- - **Next Steps** — REQUIRED dedicated section. Forward-looking commitments that aren't yet hard action items: "team will gather facts", "Mike will discuss with industry leads", "Microsoft to come back with proposal next week". These are distinct from `Action Items` (which have owner+due) and are critical to State/05_action-items + State/04_workshops-and-key-meetings rendering.
68
- - **Action Items** — every commitment with owner + due + source-line
69
- - **Risks, Blockers, Dependencies** — surfaced or escalated in this meeting
70
- - **Customer Asks** — explicit asks the customer made of Microsoft (resourcing, decisions, timelines, escalations)
71
- - Every artifact link / shared file / recording / transcript URL
72
- - **Coverage Notes** — what was retrievable vs what wasn't (transcript missing, chat-only reconstruction, partial recap, etc.)
73
-
74
- If transcript is unavailable, document why and pull chat transcript + Copilot recap + meeting chat thread to reconstruct. Per-meeting sub-section is mandatory; one block per meeting. **A 30-line meetings file for a week with 2 meetings is a defect — expect 200+ lines, with the structure above repeated per meeting.** A per-meeting block missing the explicit `Next Steps` section is a defect even if Action Items is present — they capture different things.
75
-
76
- ### Teams chats (stream/)
77
- For every thread touched in the window — capture, in this order per thread:
78
- - **AI Narrative Summary** (REQUIRED FIRST) — 3+ paragraph prose covering what the thread is about, the conversation arc, who took which position, sentiment, what landed and what stayed open. Cite messages inline.
79
- - **Full message-by-message reproduction** (sender · timestamp · verbatim message text or close paraphrase), not just an outcome line. Group by thread, not by day. Include reactions, file attachments, links, replies. If a thread has 30 messages, reproduce all 30 (collapse only routine acks like 👍 / "thanks").
80
- - **Decisions / Action Items / Open Questions / Risks** captured by the thread.
81
-
82
- ### Emails (stream/)
83
- For every substantive thread — capture, in this order per thread:
84
- - **AI Narrative Summary** (REQUIRED FIRST) — 3+ paragraph prose: what the thread is about, who's pushing what, the back-and-forth, what was decided / asked / committed / left open, tone. Cite messages inline.
85
- - Sender, recipients (to + cc), subject, **full body or close paraphrase** for every message in the chain in order, attachments. Thread-level grouping. A one-line "X sent Y about Z" entry is insufficient — include enough body to convey what was actually said.
86
- - **Decisions / Action Items / Open Questions / Risks** surfaced by the thread.
87
-
88
- ### OneNote (snapshot/ + stream/)
89
- - `snapshot/pages/<page>.md` — start with **AI Narrative Summary** (REQUIRED FIRST, 3+ paragraphs covering what the page is about, structure, key points, anything noteworthy), then extract **full page bodies**, not just titles. Last-modified timestamp + author at the top.
90
- - `stream/<week>.md` — for each page-edit event: a 1–2 paragraph **AI Narrative Summary** of what changed and why it matters, then the diff summary itself.
91
-
92
- If Graph delegated-token isn't available, ask the user to paste page content rather than skip.
93
-
94
- ### SharePoint (snapshot/ + stream/)
95
- - `snapshot/tree.md` — full folder tree (no truncation). Mark each entry `[key]` / `[recent]` / `[pin]` / `[skip]` / `[tree-only]` so readers can see why a file was or wasn't expanded.
96
- - `snapshot/files/<path>.md` — start with **AI Narrative Summary** (REQUIRED FIRST, 3+ paragraphs: what the file is, what it argues / proposes / records, key positions, audience, why it matters), then a body summary at the same depth bar as a meeting transcript walk-through (decisions, risks, actions, owners, dates, key context). Bodies for: (a) **curated key files** (architecture, decisions, ADRs, deliverables, proposals, SOWs, business cases, roadmaps, plans), PLUS (b) **top-N most-recently-modified files** where N = `sharepoint.snapshot.recent_n` (default 25), PLUS (c) any user pins from `sharepoint.snapshot.always_include`. Per file: full filename (no truncation), changed-by, change-type, size, last-modified.
97
- - `stream/<week>.md` — file change events that week, each with a short **AI Narrative Summary** of what the change was and why it matters.
98
-
99
- ### CRM/ADO (snapshot/ + stream/)
100
- - `snapshot/<id>.md` — start with **AI Narrative Summary** (REQUIRED FIRST, 3+ paragraphs: the engagement / work item story so far, current stage, who owns it, what's at stake, latest status note in plain prose), then every field the API returns, every value.
101
- - `stream/<id>/<week>.md` — for the week as a whole: an **AI Narrative Summary** (REQUIRED FIRST) of what changed and what it means, then every field-level change with old → new + actor + timestamp, every comment / discussion verbatim.
102
-
103
- ## Volume guidance
104
-
105
- - Long files are EXPECTED. Compression is the enemy.
106
- - One file per source per week (stream) — do NOT split into one-file-per-meeting / one-file-per-thread.
107
- - One file per entity (snapshot) — do NOT consolidate multiple entities into one snapshot.
108
-
109
- ## Citation density
110
-
111
- Every paragraph still needs `[source: …]` citations — thoroughness does NOT relax the citation rule, it intensifies it. See `citation-ledger.instructions.md`.
112
-
113
- ## Fix-up loop
114
-
115
- If the user reads an evidence file and says "this is too light" or "I don't like the depth" or "more detail" or "full AI summary" — the skill MUST re-pull from source with deeper extraction and rewrite the file in the same fix-up turn — never defend a thin summary. Specifically: if the fix-up complaint is about the AI Narrative Summary being thin, expand it to 5+ paragraphs with full discussion coverage, not just outcomes.
116
-
117
- ## Pre-write checklist (every per-source skill)
118
-
119
- Before writing any per-entity block (meeting / thread / email / page / file / record), confirm:
120
-
121
- - [ ] AI Narrative Summary is the FIRST sub-section
122
- - [ ] It is multi-paragraph (3+ for non-trivial; 5+ for substantive meetings/threads/pages)
123
- - [ ] It captures discussion + reasoning + sentiment, not just outcomes
124
- - [ ] It carries inline `[source: …]` citations
125
- - [ ] **Questions Asked & Answered** section is present (populated or `_None surfaced._`)
126
- - [ ] **Discussion Points (Bulleted, with Detail)** section is present — each bullet has nested 2–5-line detail
127
- - [ ] **Plans (Current State)** section is present
128
- - [ ] **Changes to Plans** section is present
129
- - [ ] **Next Steps** section is present (distinct from Action Items)
130
- - [ ] All other structured sub-sections (Decisions / Action Items / Risks / Open Questions / Customer Asks) come AFTER, not instead of
131
- - [ ] Verbatim transcript / message reproduction / page body is still present (the AI summary does not replace it)
132
- - [ ] Empty sections explicitly say `_None surfaced._`, never omitted
133
-
134
- <!-- merged from evidence-thoroughness.instructions.md (v4.4.9) -->
135
- ## Detection algorithm
136
-
137
- Every `pull-*` skill MUST run this check after writing each evidence file. A file that fails the detector is a **defect** — it MUST be re-extracted with a richer query or replaced with pasted source content. The skill MUST NOT silently accept a thin file.
138
-
139
- This detector enforces `evidence-thoroughness.instructions.md` at runtime. The thoroughness doctrine defines what "full" means; this file defines how to **detect** and **fix** violations.
1
+ ---
2
+ applyTo: kushi-agents
3
+ priority: high
4
+ version: 2.0.0
5
+ ---
140
6
 
141
- ## Per-source minimum thresholds
142
-
143
- Apply the threshold for the source the file belongs to. A file fails if **any** check triggers.
144
-
145
- ### Email stream (`email/stream/*.md`)
146
-
147
- - Per thread block: body text ≥ **400 characters** (not counting headers / metadata / "see original" stubs).
148
- - Per thread block contains at least one of: `Body:`, `Reply chain`, or a quoted block.
149
- - File-level: ≥ 1 thread block per substantive subject mentioned in the windowed search results.
150
-
151
- ### Teams stream (`teams/stream/*.md`)
152
-
153
- - Per thread block: reproduces ≥ **5 messages** (or, if thread is shorter, ALL messages — collapse only routine acks 👍 / "thanks").
154
- - Each reproduced message has `<sender> · <timestamp>` line + verbatim or close-paraphrase text.
155
- - File-level: rejects "summary-only" files with no message-by-message reproduction.
156
-
157
- ### OneNote snapshot (`onenote/snapshot/pages/*.md`)
158
-
159
- - Page body text ≥ **600 characters** OR contains a `## Page Body` section followed by content (not just a link).
160
- - Page metadata block (last-modified, author) present.
161
-
162
- ### OneNote stream (`onenote/stream/*.md`)
163
-
164
- - Each page-edit event includes diff summary (what changed) — not just "page updated".
165
-
166
- ### SharePoint snapshot tree (`sharepoint/snapshot/tree.md`)
167
-
168
- - Tree is not truncated (no "…" or "N more" placeholders).
169
- - Each entry has a status tag: `[key]` / `[recent]` / `[pin]` / `[skip]` / `[tree-only]`.
170
-
171
- ### SharePoint snapshot file (`sharepoint/snapshot/files/*.md`)
7
+ # Evidence Thoroughness — Bullets-Only Depth Bar (v4.9.0)
172
8
 
173
- - Body summary **400 characters** OR explicit `[tree-only]` justification.
174
- - Has changed-by + change-type + last-modified.
9
+ > **v4.9.0:** This doctrine replaces the "AI Narrative Summary (multi-paragraph prose)"
10
+ > bar from v3.x/v4.8. The new bar is **Comprehensive Structured Capture (CSC)** — see
11
+ > [`comprehensive-structured-capture.instructions.md`](./comprehensive-structured-capture.instructions.md).
12
+ >
13
+ > CSC is **bullets only, no prose paragraphs anywhere**. This file defines the
14
+ > per-source **minimum bullet thresholds** and **per-source enforcement rules**
15
+ > that distinguish a thorough CSC block from a thin/lazy one.
175
16
 
176
- ### Meetings stream (`meetings/stream/*.md`)
17
+ ## Why a depth bar exists
177
18
 
178
- - Per meeting block contains ALL of the following named sections:
179
- - `## Detailed Discussion Summary`
180
- - `## Transcript Walk-Through` (or `## Chronological Walk-Through`)
181
- - `## Key Decisions`
182
- - `## Open Questions` (or `## Open Questions / Non-Decisions`)
183
- - `## Next Steps` ← **dedicated section, distinct from Action Items**
184
- - `## Action Items`
185
- - `## Next Steps` MUST be present even if empty (`_None this meeting._`) — missing the section is a defect.
186
- - Per meeting block: total length ≥ **800 characters**.
187
- - Action items: every bullet has owner + due (date OR "TBD" with reason) + `[source: …]` citation.
19
+ Pull skills will, by default, race to the shallowest possible output: a 1-line
20
+ title, a sender, a date, no detail. That output is useless for State/, useless
21
+ for Q&A, useless for consolidation.
188
22
 
189
- ### CRM/ADO snapshot (`crm/snapshot/*.md`, `ado/snapshot/*.md`)
23
+ The depth bar makes "shallow CSC" a **defect**, not a tradeoff.
190
24
 
191
- - Snapshot lists ≥ **8 fields** with values (not just an ID + a link).
25
+ ## Hard rule
192
26
 
193
- ### CRM/ADO stream (`crm/stream/*.md`, `ado/stream/*.md`)
27
+ Every CSC entity block MUST satisfy the per-source minimum bullet thresholds
28
+ below. If an entity is genuinely shallow (e.g., a 1-line "thanks" email),
29
+ write it as a coverage-notes-only block — do NOT pad with fabricated bullets.
194
30
 
195
- - Each change event has old-value new-value + actor + timestamp.
196
-
197
- ## Red-flag patterns (auto-fail)
198
-
199
- Any file containing these strings outside a `## Coverage Notes` block fails:
200
-
201
- - `(see original in …)` / `see original email` / `see Teams thread` / `see page` — link-only stubs.
202
- - `Full body unavailable` / `body not captured` without an accompanying `## Coverage Notes` explaining why.
203
- - `Summary: …` as the entire body (no detail beneath it).
204
- - `[redacted]` without justification.
205
- - `TODO` / `FIXME` left in production evidence.
206
-
207
- ## Retry policy
208
-
209
- When a file fails the detector:
210
-
211
- 1. **Auto-retry once** with a deeper WorkIQ query. Append `"give me full bodies and full reply chain — not just metadata"` (or source-appropriate equivalent) to the query. Re-write the file.
212
- 2. If the second attempt still fails the detector, emit the **paste-prompt** (see `plugin/templates/paste-prompt.md`) to the user with the specific file path, the failing checks, and ready-to-paste section headers.
213
- 3. Mark the file with `⚠ thoroughness: pending-paste` at the top under `## Source Basis` and log `thoroughness-pending` in `run-log.yml` for that source. Continue the rest of the run — do NOT block.
214
-
215
- ## Validation block in every evidence file
216
-
217
- Every evidence file MUST end with:
218
-
219
- ```
220
- ## Validation
221
-
222
- - [ ] bodies-present
223
- - [ ] attendees-or-participants-captured <!-- meetings/teams only -->
224
- - [ ] next-steps-section-present <!-- meetings only -->
225
- - [ ] action-items-have-owner-and-due <!-- meetings only -->
226
- - [ ] no-link-only-stubs
227
- - [ ] coverage-notes-explain-any-gaps
228
- ```
229
-
230
- The skill ticks the boxes it can verify automatically; the rest are left for `self-check` and human review.
231
-
232
- ## Out of scope
31
+ ## Per-source minimum thresholds
233
32
 
234
- This detector does NOT enforce citation density (that's `citation-ledger.instructions.md`) or snapshot-vs-stream placement (that's `snapshot-vs-stream.instructions.md`). It enforces depth-of-capture only.
33
+ Counts are TOTAL material bullets across all sections of the block (excluding
34
+ the heading line and `_None surfaced._` placeholders). Citation lines do not
35
+ count as separate bullets.
36
+
37
+ | Source | Min bullets per block | Min sections populated | Notes |
38
+ |---|---|---|---|
39
+ | meetings | 25 | 6 | Must include Topics, Q&A or Who Said What, Decisions or Next Steps, Action Items, Participants, Artifacts |
40
+ | email (thread) | 8 | 4 | Must include Participants, Topics, Action Items or Next Steps, Decisions or Q&A |
41
+ | teams (chat thread) | 6 | 3 | Must include Participants, Topics, Q&A or Action Items |
42
+ | teams (channel post) | 5 | 3 | Must include Participants, Topics, plus one of Q&A / Decisions / Action Items |
43
+ | onenote (page) | 10 | 4 | Must include Topics, Dates & Numbers or Decisions, Action Items or Next Steps, Artifacts |
44
+ | sharepoint (doc) | 8 | 3 | Must include Topics, Artifacts, plus one of Decisions / Customer Asks / Dates & Numbers |
45
+ | crm (opportunity/account) | 12 | 5 | Must include Participants, Dates & Numbers, Next Steps, Customer Asks, Artifacts |
46
+ | ado (work item) | 8 | 4 | Must include Participants (assignee + reporter), Topics, Action Items or Next Steps, Artifacts |
47
+
48
+ If the entity truly cannot meet the bar (e.g., 2-message chat about lunch):
49
+ write **only** the heading + a `Coverage Notes` section explaining why, and
50
+ flag `low-signal: true` in `_index/entities.yml`. Do not pad.
51
+
52
+ ## Per-section depth rules
53
+
54
+ - **Topics Discussed**: at least one bullet per distinct subject in the entity.
55
+ A 45-minute meeting that covers 6 subjects MUST have at least 6 topic bullets.
56
+ "Various topics discussed" is a defect.
57
+ - **Q&A**: capture every question that was asked AND answered. Format:
58
+ `Q (asker): ... → A (responder): ... [citation]`. Unanswered questions
59
+ belong in `Open Questions`, not `Q&A`.
60
+ - **Who Said What**: curated to material statements only (positions stated,
61
+ commitments made, disagreements voiced). Typical: 3–10 entries per
62
+ 50-message thread. NOT a verbatim utterance log.
63
+ - **Dates & Numbers Shared**: every number, date, dollar amount, percentage,
64
+ count, deadline, version, or SKU mentioned. Format: `<value> — <context> [citation]`.
65
+ - **Action Items**: each bullet MUST have owner + due (or `owner: unassigned`,
66
+ `due: unspecified`). Missing both fields = defect.
67
+ - **Next Steps**: forward-looking commitments without strict owner+due. Distinct
68
+ from Action Items.
69
+ - **Customer Asks**: every explicit customer request (feature, capacity, support,
70
+ pricing, timeline). One bullet per ask.
71
+
72
+ ## Coverage Notes are mandatory when
73
+
74
+ - WorkIQ returned partial data (truncation, payload-too-large, retry-deferred).
75
+ - Body was unavailable for an entity (write `Source basis: unavailable`).
76
+ - Participant list was inferred from a forwarded thread (note `Participants inferred from forward chain`).
77
+ - An entity was discovered by another contributor and the current contributor
78
+ could not reach it (defer per `defer-on-permission.instructions.md`).
79
+
80
+ ## Detector (used by `self-check/run.ps1`)
81
+
82
+ Deep checks D11–D15 enforce this doctrine. Summary:
83
+
84
+ - **D11**: Every `weekly/YYYY-MM-DD_<source>-csc.md` has ≥ 1 entity heading.
85
+ - **D12**: Every entity block's section order matches the canonical order
86
+ defined in `comprehensive-structured-capture.instructions.md`.
87
+ - **D14 (prose detector)**: No line in a weekly CSC file may exceed 220
88
+ characters without starting with `-`, `*`, `#`, `>`, `|`, or `` ` ``.
89
+ Heuristic: such lines are prose paragraphs and indicate v4.8.x narrative
90
+ summary leakage.
91
+ - **D15 (no-omission detector)**: Forbidden phrases anywhere in a weekly
92
+ CSC block outside a `Coverage Notes` section:
93
+ - `and N more` / `and N others`
94
+ - `key highlights only`
95
+ - `sample of` / `subset of`
96
+ - `N of M shown` / `truncated`
97
+ - `summary above`
98
+ Their presence = defect; the block must be re-pulled with broader scope or
99
+ the missing items must be enumerated.
100
+ - **D11.depth**: For each entity heading, count material bullets (lines
101
+ starting `- ` or `* ` inside a non-coverage section). Compare to per-source
102
+ threshold above. If below threshold AND `low-signal: true` is NOT set in
103
+ `_index/entities.yml`, emit a defect.
104
+
105
+ ## What this REPLACES
106
+
107
+ - v4.8.x "AI Narrative Summary (3+ paragraphs, ≥ 800 chars per entity)" — **gone**.
108
+ Prose paragraphs anywhere in a weekly CSC file are a D14 defect.
109
+ - v4.8.x "verbatim body required; if missing, the entity is partial" — **gone**.
110
+ A CSC block stands on its own. Verbatim is only required for meetings
111
+ (sibling `verbatim/` folder, audit-only — see
112
+ [`meetings-verbatim-required.instructions.md`](./meetings-verbatim-required.instructions.md)).
113
+
114
+ ## What this DOES NOT change
115
+
116
+ - WorkIQ-first stays mandatory. CSC bullets must be sourced from WorkIQ output.
117
+ - Citation-per-material-bullet stays mandatory.
118
+ - Defer-on-permission stays mandatory — if WorkIQ cannot reach an entity,
119
+ defer with marker, do not fabricate from adjacent evidence.
120
+ - Meetings still require a sibling raw `verbatim/<dir>/` folder for the audit
121
+ trail (Teams retention purges recordings ~60 days).
122
+
123
+ ## Related
124
+
125
+ - [`comprehensive-structured-capture.instructions.md`](./comprehensive-structured-capture.instructions.md) — canonical CSC block schema
126
+ - [`weekly-csc.instructions.md`](./weekly-csc.instructions.md) — layout + `_index/`
127
+ - [`evidence-layout-canonical.instructions.md`](./evidence-layout-canonical.instructions.md) — folder tree
128
+ - [`meetings-verbatim-required.instructions.md`](./meetings-verbatim-required.instructions.md) — meetings audit folder
@@ -85,13 +85,13 @@ The `setup` skill (added v4.4.4) extends this doctrine beyond identity to cover
85
85
  | `project-evidence.yml` | `identity.alias` / `display_name` / `email` | YES | WorkIQ "Who am I?" |
86
86
  | `project-evidence.yml` | `identity_status`, `identity_verified_at` | YES | written by setup |
87
87
  | `project-evidence.yml` | `projects_root` | YES | cwd-ancestor detection; otherwise prompt |
88
- | `project-evidence.yml` | `default_onenote_notebook` | **OPTIONAL** | user prompt; value `<skip>` = OneNote disabled |
88
+ | `project-evidence.yml` | `default_onenote_notebook` | **DEPRECATED (display-only as of v4.8.3)** | display-only mirror of `m365-auth.json#oneNote.defaultNotebookName`. NEVER gates OneNote. The `<skip>` sentinel is deprecated. |
89
89
  | `project-evidence.yml` | `active_projects[]` | YES (list, may be empty) | the project arg if dispatched from `bootstrap <project>`; otherwise leave existing |
90
90
  | `project-evidence.yml` | `workiq.cli_path` | OPTIONAL | only written when discovered via PATH/fallback, not already pinned |
91
91
  | `m365-auth.json` | `_meta.owner` | YES | `<identity.email>` |
92
92
  | `m365-auth.json` | `oneNote.defaultLinkOwner` | YES (when OneNote enabled) | `<identity.email>` — the user's own UPN, since OneNote queries default to the user's personal notebook |
93
93
  | `m365-auth.json` | `oneNote.defaultNotebookId` | **NOT WRITTEN (kushi v4.7.3+)** | Per `workiq-onenote-query-shape.instructions.md`, WorkIQ has no notebook-ID lookup surface — any such probe punts to Graph Explorer. Setup persists `defaultNotebookName` only; section IDs are discovered per-section at bootstrap/refresh time using the natural-language WorkIQ pattern. |
94
- | `m365-auth.json` | `oneNote.enabled` | YES | `false` when user chose `<skip>` for the notebook name |
94
+ | `m365-auth.json` | `oneNote.enabled` | YES | **default `true` (kushi v4.8.3+).** Single source of truth — the only field that gates OneNote across kushi. Set to `false` ONLY when the contributor explicitly opts out via `setup` or by hand. The legacy `project-evidence.yml#default_onenote_notebook == "<skip>"` sentinel is deprecated and no longer consulted. |
95
95
  | `m365-auth.json` | `emailContext.folders[]` | OPTIONAL | user prompt: comma-sep list / `all` / blank. `all` or blank → `[]` (full mailbox) |
96
96
  | `m365-auth.json` | `sharePointContext.localProjectsRoot` | YES | mirrors `<projects_root>` |
97
97
 
@@ -101,10 +101,12 @@ The `setup` skill (added v4.4.4) extends this doctrine beyond identity to cover
101
101
 
102
102
  The `setup` skill does the deeper recovery (3-retry loop with `ask_user` choices).
103
103
 
104
- ### OneNote — optional + auto-resolve
104
+ ### OneNote — enabled by default, single switch (kushi v4.8.3+)
105
105
 
106
- - User chose `<skip>` → set `oneNote.enabled: false`, leave all other OneNote fields blank, OneNote source becomes a no-op (reported as `not-applicable` in run logs).
107
- - User gave a notebook name query WorkIQ for `{notebookId, notebookSourceDoc, notebookSpoBaseUrl}`. Persist all three. If WorkIQ returns empty, leave `defaultNotebookId: ""` with a `_defaultNotebookId_note` and let `pull-onenote` Step A do per-section discovery.
106
+ - **Default:** `m365Auth.oneNote.enabled: true`. OneNote is opt-out, not opt-in.
107
+ - **Single source of truth:** `m365Auth.oneNote.enabled` is the ONLY field that gates OneNote across kushi. Downstream skills (`pull-onenote`, `bootstrap-project` Step 4) MUST NOT inspect `project-evidence.yml#default_onenote_notebook` to decide whether to run OneNote.
108
+ - User explicitly opted out → set `oneNote.enabled: false`, leave other OneNote fields blank, OneNote source becomes a no-op (reported as `not-applicable` in run logs). Re-enable by hand-editing `m365-auth.json` (`enabled: true`) or by running `setup --reconfigure`.
109
+ - User gave a notebook name (or accepted the `ISE Work` default) → keep `enabled: true`, persist `defaultNotebookName`. Do NOT query WorkIQ for the notebook ID (per `workiq-onenote-query-shape.instructions.md` — no notebook-inventory surface). Section IDs are discovered per-section at bootstrap/refresh time.
108
110
  - `defaultLinkOwner` is ALWAYS the user's own UPN unless the user explicitly overrides (shared/team-owned notebook case).
109
111
 
110
112
  ### Mailbox folders — multi-value with "all" sentinel
@@ -131,11 +133,12 @@ Both `all` and blank persist as `[]`. ALWAYS print after persisting:
131
133
  ```
132
134
  Edit these files later if anything changes:
133
135
  • <workspace>/.kushi/config/user/project-evidence.yml
134
- identity, projects_root, default_onenote_notebook, active_projects, workiq.cli_path
136
+ identity, projects_root, active_projects, workiq.cli_path
137
+ (default_onenote_notebook is display-only since v4.8.3 — edit m365-auth.json to enable/disable)
135
138
  • <workspace>/.kushi/config/user/m365-auth.json
136
- OneNote defaults, email folder list, SharePoint root
139
+ OneNote enable/disable + notebook name (oneNote.enabled, oneNote.defaultNotebookName), email folder list, SharePoint root
137
140
  • <workspace>/.kushi/config/shared/integrations.yml (team-wide; commit changes)
138
- CRM environmentUrl + tenantId, ADO organization + project
141
+ CRM environment_url + tenant_id, ADO organization + project (ships pre-filled with Microsoft IS defaults since v4.8.4)
139
142
 
140
143
  To re-walk every question (overwrites all answers):
141
144
  @Kushi setup --reconfigure
@@ -5,6 +5,8 @@ description: "HARD rule — meetings are an EXPIRING evidence class. Every meeti
5
5
 
6
6
  # Meetings verbatim is REQUIRED (HARD RULE, v3.10.0)
7
7
 
8
+ > **v4.9.0 update**: the curated artifact moved from `meetings/snapshot/` or `meetings/stream/<week>.md` per-meeting blocks (prose + transcript walk-through) to `meetings/weekly/<week>_meetings-csc.md` per-meeting CSC blocks (bullets) per `comprehensive-structured-capture.instructions.md`. The verbatim folder requirement is **unchanged** — it remains required for every meeting because the source expires.
9
+
8
10
  Meetings differ from every other evidence class in one critical way: **the source expires.**
9
11
 
10
12
  - Teams recordings are deleted by tenant retention (default 60 days for many tenants; sometimes shorter).
@@ -18,10 +20,10 @@ Email bodies, OneNote pages, SharePoint files, CRM records, and ADO work items a
18
20
 
19
21
  For every meeting captured by `pull-meetings`, the skill MUST produce **two** outputs, not one:
20
22
 
21
- 1. **Curated snapshot** — `Evidence/<alias>/Meetings/snapshot/<slug>.md` (existing) or `Evidence/<alias>/Meetings/stream/<week>_meetings-stream.md` per-meeting block (existing). 7-section doctrine summary. Human-readable.
22
- 2. **Verbatim folder** — `Evidence/<alias>/Meetings/verbatim/<YYYY-MM-DD-HHMM>_<slug>/` (NEW, REQUIRED). Raw immutable artifacts that survive source expiry.
23
+ 1. **Curated CSC block** — `Evidence/<alias>/meetings/weekly/<YYYY-MM-DD>_meetings-csc.md` per-meeting block in CSC shape per `comprehensive-structured-capture.instructions.md` (v4.9.0+). Bulleted, query-able, human-readable. (Pre-v4.9.0: `Evidence/<alias>/meetings/snapshot/<slug>.md` or `stream/<week>_meetings-stream.md` legacy-read OK.)
24
+ 2. **Verbatim folder** — `Evidence/<alias>/meetings/verbatim/<YYYY-MM-DD-HHMM>_<slug>/` (REQUIRED). Raw immutable artifacts that survive source expiry.
23
25
 
24
- A per-meeting block in `stream/` that has NO sibling `verbatim/<...>/` folder is a **defect**, even if the curated block is rich and well-cited. Self-check rule **D13** enforces this in deep mode.
26
+ A per-meeting CSC block in `weekly/` that has NO sibling `verbatim/<...>/` folder is a **defect**, even if the curated block is rich and well-cited. Self-check rule **D13** enforces this in deep mode.
25
27
 
26
28
  ## "Verbatim" means the FULL TRANSCRIPT TEXT — not just chat (HARD RULE)
27
29
 
@@ -173,4 +175,4 @@ The curated snapshot is the assertion; the verbatim file is the evidence. The tw
173
175
 
174
176
  ## Apply
175
177
 
176
- `pull-meetings/SKILL.md` v2.2.0+ MUST cite this instruction in its front contracts blockquote. Templates `meetings-stream.template.md` and `meetings-series-index.template.md` MUST reference the verbatim/ folder location. Template `meeting-verbatim.template.md` defines the standard contents of a verbatim folder.
178
+ `pull-meetings/SKILL.md` v2.2.0+ MUST cite this instruction in its front contracts blockquote. Template `meetings-weekly-csc.template.md` (v4.9.0+) MUST reference the verbatim/ folder location per CSC block; legacy templates `meetings-stream.template.md` and `meetings-series-index.template.md` are kept for reader compatibility but no longer written by pull-meetings v2.5.0+. Template `meeting-verbatim.template.md` defines the standard contents of a verbatim folder (unchanged).
@@ -57,7 +57,7 @@ returns evidence over the same surface — no run-to-run drift.
57
57
 
58
58
  | Skill | Hard prerequisite | Failure message (verbatim) |
59
59
  |---|---|---|
60
- | `pull-crm` | `<workspace>/.kushi/config/shared/integrations.yml` exists with non-placeholder `crm.environmentUrl` | `crm-config-missing — fill the crm: block in <workspace>/.kushi/config/shared/integrations.yml. See plugin/templates/init/integrations.template.yml.` |
60
+ | `pull-crm` | `<workspace>/.kushi/config/shared/integrations.yml` exists with non-placeholder `crm.environment_url` (ships pre-filled as `https://iscrm.crm.dynamics.com` since kushi v4.8.4) | `crm-config-missing — the crm: block in <workspace>/.kushi/config/shared/integrations.yml has been emptied. Reset from plugin/templates/init/integrations.template.yml.` |
61
61
  | `pull-ado` | `<workspace>/.kushi/config/shared/integrations.yml` exists with non-placeholder `ado.organization` AND `ado.defaultProject` | `ado-config-missing — fill the ado: block in <workspace>/.kushi/config/shared/integrations.yml. See plugin/templates/init/integrations.template.yml.` |
62
62
  | `propose-ado-update` | both above + `integrations.yml ado.engagement_id > 0` | per `propose-ado-update/SKILL.md` Prerequisites table |
63
63
 
@@ -1,6 +1,30 @@
1
1
  ---
2
2
  applyTo: "**"
3
- description: "Snapshot vs Stream — every source has two evidence shapes. Snapshot = current state of entity (replace on refresh). Stream = timestamped events (append-only, weekly buckets)."
3
+ description: "DEPRECATED in kushi v4.9.0 replaced by weekly-csc.instructions.md. Sources no longer split into snapshot/ + stream/; every source now writes a single weekly/ CSC file per ISO-week plus a _index/entities.yml. Legacy snapshot/+stream/ folders remain readable but no new writes go to them."
4
+ ---
5
+
6
+ # ⚠️ DEPRECATED in v4.9.0 — see `weekly-csc.instructions.md`
7
+
8
+ The two-folder model (`snapshot/` = current state, `stream/` = events) caused two recurring
9
+ problems:
10
+
11
+ 1. **Empty snapshot/ folders** when WorkIQ refused bulk verbatim or `m365_get_email`
12
+ tool-errored — users perceived these as "kushi captured nothing".
13
+ 2. **Awkward queries** — answering "what happened this week?" required reading two folders
14
+ per source × 7 sources = 14 reads per query.
15
+
16
+ **v4.9.0 replacement:** every source writes ONE artifact shape — weekly CSC files at
17
+ `Evidence/<alias>/<source>/weekly/YYYY-MM-DD_<source>-csc.md`, plus a per-source
18
+ `_index/entities.yml` for current-state lookup. Each weekly file contains one CSC block per
19
+ entity touched that week, self-contained (current state + this-week's events). See
20
+ `weekly-csc.instructions.md`.
21
+
22
+ **Reader fallback:** build-state / ask-project / consolidate-evidence still READ legacy
23
+ `snapshot/` + `stream/` folders when `weekly/` is empty for that source (graceful migration —
24
+ no rewrites). New writes go to `weekly/` only.
25
+
26
+ **Below this line: historical content, no longer normative for writes.**
27
+
4
28
  ---
5
29
 
6
30
  # Snapshot vs Stream (HARD RULE)
@@ -1,6 +1,26 @@
1
1
  ---
2
2
  applyTo: "**"
3
- description: "Verbatim-by-default ruleevery pull-* skill captures full bodies and full content as the default mode. Headlines / one-line summaries / 'preview only' are defects. The user does NOT have to ask for detail; detail is the contract."
3
+ description: "DEPRECATED in kushi v4.9.0 replaced by comprehensive-structured-capture.instructions.md (CSC). Raw verbatim bodies are no longer the default depth bar; CSC bullets are. This file is retained as historical reference and is no longer normative."
4
+ ---
5
+
6
+ # ⚠️ DEPRECATED in v4.9.0 — see `comprehensive-structured-capture.instructions.md`
7
+
8
+ This doctrine required every pull-* skill to capture **raw verbatim bodies** (full email body,
9
+ full transcript line-by-line, full OneNote page body) plus multi-paragraph AI Narrative
10
+ Summaries. In practice this failed (WorkIQ payload-too-large for OneNote, `m365_get_email`
11
+ ~100% tool-error rate, Teams transcripts often not generated). Empty `snapshot/` folders +
12
+ 200-char previews were the result.
13
+
14
+ **v4.9.0 replacement:** every per-entity evidence block is now a **Comprehensive Structured
15
+ Capture (CSC)** — bulleted sections capturing every material fact with citations, but no raw
16
+ prose / verbatim body. See `comprehensive-structured-capture.instructions.md`.
17
+
18
+ **Audit-only exception:** meetings keep a raw `verbatim/<dir>/transcript.txt` audit folder
19
+ because Teams recordings expire (tenant retention). All other sources drop the raw-verbatim
20
+ requirement entirely. See `meetings-verbatim-required.instructions.md` (still active).
21
+
22
+ **Below this line: historical content, no longer normative.**
23
+
4
24
  ---
5
25
 
6
26
  # Verbatim-by-default (HARD RULE)