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.
- package/package.json +2 -2
- package/plugin/instructions/comprehensive-structured-capture.instructions.md +250 -0
- package/plugin/instructions/evidence-layout-canonical.instructions.md +20 -12
- package/plugin/instructions/evidence-thoroughness.instructions.md +119 -225
- package/plugin/instructions/identity-resolution.instructions.md +11 -8
- package/plugin/instructions/meetings-verbatim-required.instructions.md +6 -4
- package/plugin/instructions/scope-boundaries.instructions.md +1 -1
- package/plugin/instructions/snapshot-vs-stream.instructions.md +25 -1
- package/plugin/instructions/verbatim-by-default.instructions.md +21 -1
- package/plugin/instructions/weekly-csc.instructions.md +335 -0
- package/plugin/instructions/workiq-only.instructions.md +140 -1
- package/plugin/skills/ask-project/SKILL.md +26 -6
- package/plugin/skills/bootstrap-project/SKILL.md +17 -5
- package/plugin/skills/build-state/SKILL.md +30 -7
- package/plugin/skills/consolidate-evidence/SKILL.md +27 -4
- package/plugin/skills/pull-ado/SKILL.md +85 -9
- package/plugin/skills/pull-crm/SKILL.md +87 -10
- package/plugin/skills/pull-email/SKILL.md +75 -11
- package/plugin/skills/pull-meetings/SKILL.md +83 -8
- package/plugin/skills/pull-onenote/SKILL.md +86 -9
- package/plugin/skills/pull-sharepoint/SKILL.md +73 -10
- package/plugin/skills/pull-teams/SKILL.md +78 -9
- package/plugin/skills/refresh-project/SKILL.md +16 -5
- package/plugin/skills/self-check/SKILL.md +11 -0
- package/plugin/skills/self-check/run.ps1 +208 -0
- package/plugin/skills/setup/SKILL.md +16 -15
- package/plugin/templates/init/integrations.template.yml +38 -24
- package/plugin/templates/init/m365-auth.template.json +3 -3
- package/plugin/templates/init/project-evidence.template.yml +5 -5
- package/plugin/templates/snapshot/DEPRECATED-v4.9.0.md +37 -0
- package/plugin/templates/weekly/_index_entities.template.yml +26 -0
- package/plugin/templates/weekly/ado-csc.template.md +113 -0
- package/plugin/templates/weekly/crm-csc.template.md +103 -0
- package/plugin/templates/weekly/email-csc.template.md +114 -0
- package/plugin/templates/weekly/meetings-csc.template.md +112 -0
- package/plugin/templates/weekly/onenote-csc.template.md +95 -0
- package/plugin/templates/weekly/sharepoint-csc.template.md +98 -0
- package/plugin/templates/weekly/teams-csc.template.md +100 -0
|
@@ -1,11 +1,27 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: "build-state"
|
|
3
|
-
version: "
|
|
4
|
-
description: "Render <project>/State/*.md from existing Evidence (snapshot/ + stream
|
|
3
|
+
version: "3.0.0"
|
|
4
|
+
description: "Render <project>/State/*.md from existing Evidence (v4.9.0+). 3-step reader fallback: _index/entities.yml → weekly/*.md → legacy snapshot/ + stream/. No source pulls — pure re-render. Latest fact wins on conflicts. Every assertion cited. Always updates Open Questions."
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Skill: build-state
|
|
8
8
|
|
|
9
|
+
## v4.9.0 — Reader fallback chain (HARD RULE; per `weekly-csc.instructions.md`)
|
|
10
|
+
|
|
11
|
+
For every `<alias>/<source>/` accessed:
|
|
12
|
+
|
|
13
|
+
1. **Primary**: read `Evidence/<alias>/<source>/_index/entities.yml`. For each entity needed, pull `latest_csc_file` + `latest_csc_block_offset`; open the weekly file and read the CSC block by entity anchor.
|
|
14
|
+
2. **Secondary (no _index/, but weekly/ exists)**: walk `Evidence/<alias>/<source>/weekly/*.md` newest-first; parse `## <name> {#<anchor>}` headings; build an in-memory entity index for this query.
|
|
15
|
+
3. **Legacy fallback (pre-v4.9.0)**: if `weekly/` is empty BUT `snapshot/` or `stream/` exist, read those. Cite as legacy.
|
|
16
|
+
|
|
17
|
+
Citation form in this skill's output:
|
|
18
|
+
- **New (v4.9.0)**: `[source: <alias>/<source>/weekly/<YYYY-MM-DD>_<source>-csc.md#<entity-anchor> · <iso-ts>]`
|
|
19
|
+
- **Legacy (reading from snapshot/+stream/)**: append ` (legacy pre-v4.9.0 layout)` after the citation.
|
|
20
|
+
|
|
21
|
+
Mark the answer / output footer with `Source-layout: weekly-csc | weekly-csc-plus-legacy | legacy-only` so the user knows whether a refresh would update the layout.
|
|
22
|
+
|
|
23
|
+
Readers MUST NOT delete or modify legacy folders. Migration is out of scope for v4.9.0.
|
|
24
|
+
|
|
9
25
|
Run this when the user says: "regenerate state for `<X>`", "rebuild State", "@Kushi state `<X>`". This skill makes NO source calls — it only reads Evidence and writes State.
|
|
10
26
|
|
|
11
27
|
## Inputs
|
|
@@ -16,9 +32,10 @@ Run this when the user says: "regenerate state for `<X>`", "rebuild State", "@Ku
|
|
|
16
32
|
|
|
17
33
|
### Step 1 — Read all Evidence
|
|
18
34
|
|
|
19
|
-
For the resolved `<project
|
|
20
|
-
-
|
|
21
|
-
-
|
|
35
|
+
For the resolved `<project>`, apply the v4.9.0 fallback chain for each `<alias>/<source>/`:
|
|
36
|
+
- **Primary**: read `Evidence/<alias>/<source>/_index/entities.yml`; load entities via `latest_csc_file` + offset.
|
|
37
|
+
- **Secondary**: if no `_index/`, walk `Evidence/<alias>/<source>/weekly/*.md` newest-first.
|
|
38
|
+
- **Legacy fallback**: if `weekly/` is empty, read `Evidence/<alias>/<source>/snapshot/**/*.md` (current truth per entity) and `Evidence/<alias>/<source>/stream/**/*.md` (chronological events). Cite as `(legacy pre-v4.9.0 layout)`.
|
|
22
39
|
- Walk `Evidence/_Consolidated/**/*.md` (multi-user merged where present).
|
|
23
40
|
|
|
24
41
|
### Step 2 — For each State file (00–08), regenerate
|
|
@@ -58,12 +75,18 @@ Update `<project>/State/09_open-questions.md`:
|
|
|
58
75
|
Top of every State file:
|
|
59
76
|
|
|
60
77
|
```markdown
|
|
61
|
-
> _As of: YYYY-MM-DD HH:mm. Regenerated by @Kushi build-state. Source: Evidence/ snapshots + streams._
|
|
78
|
+
> _As of: YYYY-MM-DD HH:mm. Regenerated by @Kushi build-state. Source: Evidence/ weekly CSC + legacy snapshots + streams._
|
|
62
79
|
```
|
|
63
80
|
|
|
81
|
+
`Source-layout: weekly-csc | weekly-csc-plus-legacy | legacy-only` (append to banner to reflect which layout was actually read).
|
|
82
|
+
|
|
64
83
|
## Triggers
|
|
65
84
|
|
|
66
85
|
- "regenerate state for `<X>`"
|
|
67
86
|
- "rebuild state"
|
|
68
87
|
- "@Kushi state `<X>`"
|
|
69
|
-
- "re-render State after I fixed `<file>`"
|
|
88
|
+
- "re-render State after I fixed `<file>`"
|
|
89
|
+
|
|
90
|
+
## Changelog
|
|
91
|
+
|
|
92
|
+
- **v3.0.0 (kushi v4.9.0, 2026-05-26)**: 3-step reader fallback chain (`_index/entities.yml` → `weekly/*.md` → legacy `snapshot/` + `stream/`). New citation form `weekly/<YYYY-MM-DD>_<source>-csc.md#<anchor>`. Legacy citations suffixed `(legacy pre-v4.9.0 layout)`. Output marked with `Source-layout:` footer.
|
|
@@ -1,11 +1,27 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: "consolidate-evidence"
|
|
3
|
-
version: "
|
|
4
|
-
description: "Merge per-contributor evidence
|
|
3
|
+
version: "3.0.0"
|
|
4
|
+
description: "Merge per-contributor evidence into Evidence/_Consolidated/ for a window (v4.9.0+). 3-step reader fallback per source: _index/entities.yml → weekly/*.md → legacy snapshot/ + stream/. Provenance tags on every merged claim. Used by refresh-project and bootstrap-project when multiple contributors exist."
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Skill: consolidate-evidence
|
|
8
8
|
|
|
9
|
+
## v4.9.0 — Reader fallback chain (HARD RULE; per `weekly-csc.instructions.md`)
|
|
10
|
+
|
|
11
|
+
For every `<alias>/<source>/` accessed:
|
|
12
|
+
|
|
13
|
+
1. **Primary**: read `Evidence/<alias>/<source>/_index/entities.yml`. For each entity needed, pull `latest_csc_file` + `latest_csc_block_offset`; open the weekly file and read the CSC block by entity anchor.
|
|
14
|
+
2. **Secondary (no _index/, but weekly/ exists)**: walk `Evidence/<alias>/<source>/weekly/*.md` newest-first; parse `## <name> {#<anchor>}` headings; build an in-memory entity index for this query.
|
|
15
|
+
3. **Legacy fallback (pre-v4.9.0)**: if `weekly/` is empty BUT `snapshot/` or `stream/` exist, read those. Cite as legacy.
|
|
16
|
+
|
|
17
|
+
Citation form in this skill's output:
|
|
18
|
+
- **New (v4.9.0)**: `[source: <alias>/<source>/weekly/<YYYY-MM-DD>_<source>-csc.md#<entity-anchor> · <iso-ts>]`
|
|
19
|
+
- **Legacy (reading from snapshot/+stream/)**: append ` (legacy pre-v4.9.0 layout)` after the citation.
|
|
20
|
+
|
|
21
|
+
Mark the answer / output footer with `Source-layout: weekly-csc | weekly-csc-plus-legacy | legacy-only` so the user knows whether a refresh would update the layout.
|
|
22
|
+
|
|
23
|
+
Readers MUST NOT delete or modify legacy folders. Migration is out of scope for v4.9.0.
|
|
24
|
+
|
|
9
25
|
Run this when multiple contributors have evidence and the user wants a single merged view per source per week. Triggers from `refresh-project` automatically when `Evidence/contributors.yml` lists >1 alias with recent evidence; or directly via `@Kushi consolidate <X> last 7 days`.
|
|
10
26
|
|
|
11
27
|
## Inputs
|
|
@@ -17,11 +33,14 @@ Run this when multiple contributors have evidence and the user wants a single me
|
|
|
17
33
|
|
|
18
34
|
### Step 1 — Identify contributors with evidence in the window
|
|
19
35
|
|
|
20
|
-
Read `Evidence/contributors.yml`. For each alias,
|
|
36
|
+
Read `Evidence/contributors.yml`. For each alias, apply the v4.9.0 fallback chain per source:
|
|
37
|
+
- **Primary**: check `Evidence/<alias>/<source>/_index/entities.yml` for entries with `last_touched` in the window.
|
|
38
|
+
- **Secondary**: if no `_index/`, check if `Evidence/<alias>/<source>/weekly/*.md` files exist covering the window.
|
|
39
|
+
- **Legacy fallback**: if `weekly/` is empty, check `Evidence/<alias>/*/stream/<weeks-in-window>.md`.
|
|
21
40
|
|
|
22
41
|
### Step 2 — For each (week × source) in the window
|
|
23
42
|
|
|
24
|
-
|
|
43
|
+
Apply the fallback chain: read per-contributor weekly CSC files (`Evidence/<alias>/<source>/weekly/<YYYY-MM-DD>_<source>-csc.md`) for that (week, source); fall back to legacy stream files (`Evidence/<alias>/<source>/stream/`) if no weekly/ file exists. Merge into:
|
|
25
44
|
`Evidence/_Consolidated/<source>/<YYYY-MM-DD>_consolidated.md`
|
|
26
45
|
|
|
27
46
|
Merge rules:
|
|
@@ -49,3 +68,7 @@ Append a `consolidation_runs:` entry: `{ window, contributors, files_written }`.
|
|
|
49
68
|
## Issue Recovery
|
|
50
69
|
|
|
51
70
|
When this skill exposes a reusable defect (auth pattern, doctrine gap, layout mismatch), apply the [Issue Recovery Rule](../../instructions/issue-recovery.instructions.md): fix the smallest correct repo-owned artifact first, prefer durable fixes over per-run workarounds, then re-run the narrowest failed check. Do NOT use memory as a substitute for correcting the workflow surface.
|
|
71
|
+
|
|
72
|
+
## Changelog
|
|
73
|
+
|
|
74
|
+
- **v3.0.0 (kushi v4.9.0, 2026-05-26)**: 3-step reader fallback chain (`_index/entities.yml` → `weekly/*.md` → legacy `snapshot/` + `stream/`). New citation form `weekly/<YYYY-MM-DD>_<source>-csc.md#<anchor>`. Legacy citations suffixed `(legacy pre-v4.9.0 layout)`. Output marked with `Source-layout:` footer.
|
|
@@ -1,19 +1,75 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: "pull-ado"
|
|
3
|
-
version: "
|
|
4
|
-
description: "Pull ADO evidence as
|
|
3
|
+
version: "3.0.0"
|
|
4
|
+
description: "v3.0.0 (kushi v4.9.0): Pull ADO evidence as Comprehensive Structured Capture (CSC) blocks written to weekly/YYYY-MM-DD_ado-csc.md. One block per work item touched that week, upserted in _index/entities.yml. ADO REST + tree expansion UNCHANGED — only output shape changes. WI fields → CSC sections (AssignedTo→Participants, Description→Topics, State changes→Decisions, Comments→Q&A+Who Said What, etc.). No snapshot/+stream/ split. Per-contributor _index/. See weekly-csc + comprehensive-structured-capture doctrines."
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Skill: pull-ado
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
> **
|
|
11
|
-
> -
|
|
10
|
+
> **v4.9.0 contracts** — This skill operates under these HARD-rule doctrines:
|
|
11
|
+
> - **`comprehensive-structured-capture.instructions.md`** — CSC block shape (canonical sections, bullets only, no prose).
|
|
12
|
+
> - **`weekly-csc.instructions.md`** — weekly/ + _index/ writer contract; multi-user safety.
|
|
13
|
+
> - `workiq-only.instructions.md` — when WorkIQ is used, the CSC canonical prompts (§ "CSC canonical prompts (kushi v4.9.0+)") apply. **ADO REST remains the preferred path** for fields + comments + updates + tree expansion.
|
|
14
|
+
> - `ado-engagement-tree.instructions.md` — tree expansion + per-item discussion + revision pulls UNCHANGED.
|
|
15
|
+
> - `evidence-thoroughness.instructions.md` (v2.0.0) — per-source minimum bullet thresholds; `low_signal: true` flag.
|
|
16
|
+
> - `citation-ledger.instructions.md` — citation format.
|
|
12
17
|
> - `capture-learnings.instructions.md` — every fix/discovery is logged to `plugin/learnings/<source>.md` immediately.
|
|
13
|
-
> - `cleanup-on-resolution.instructions.md` —
|
|
18
|
+
> - `cleanup-on-resolution.instructions.md` — stale `no-match` / `not yet` notes are rewritten on resolution.
|
|
14
19
|
> - `run-reports.instructions.md` — every refresh writes a per-user report under `Evidence/<alias>/refresh-reports/YYYY-MM-DD-HHMM_refresh.md`.
|
|
15
|
-
|
|
16
|
-
>
|
|
20
|
+
> - `evidence-layout-canonical.instructions.md` — `weekly/` + `_index/` are canonical in v4.9.0+.
|
|
21
|
+
> - `scope-boundaries.instructions.md` — boundaries gate.
|
|
22
|
+
> - ~~`verbatim-by-default.instructions.md`~~ (LEGACY — superseded by CSC).
|
|
23
|
+
> - ~~`snapshot-vs-stream.instructions.md`~~ (LEGACY — superseded by weekly-csc).
|
|
24
|
+
|
|
25
|
+
## v4.9.0 — Comprehensive Structured Capture (CSC) + weekly/ layout (HARD RULE; supersedes all snapshot/+stream/ guidance below)
|
|
26
|
+
|
|
27
|
+
Per `comprehensive-structured-capture.instructions.md` and `weekly-csc.instructions.md`:
|
|
28
|
+
|
|
29
|
+
- **Output target** (single file per source per ISO week):
|
|
30
|
+
`<engagement-root>/<project>/Evidence/<alias>/ado/weekly/<YYYY-MM-DD>_ado-csc.md`
|
|
31
|
+
where `<YYYY-MM-DD>` is the **Monday** of the ISO week the WI was touched.
|
|
32
|
+
Empty weeks produce no file.
|
|
33
|
+
|
|
34
|
+
- **Block shape (per WI touched that week)**: one CSC block per work item under `## <WI title> {#<entity-anchor>}` with canonical section order: Source basis → Coverage window → Last touched → Participants → Topics Discussed → Q&A → Who Said What → Decisions → Dates & Numbers Shared → Action Items → Next Steps → Open Questions → Risks/Blockers/Dependencies → Customer Asks → Artifacts/Links → Coverage Notes. Bullets only — no prose paragraphs.
|
|
35
|
+
|
|
36
|
+
- **Entity id (canonical for this source)**: `ado://org=<org>/project=<project>/workitemid=<int>`
|
|
37
|
+
|
|
38
|
+
- **ADO REST + tree expansion UNCHANGED**: Step 1 (resolve Engagement WI ID) + Step 2 (expand tree) + Step 3 (per-item fetch: core fields + paginated discussion comments + revision history + attachments) all unchanged. Only the OUTPUT SHAPE changes — the REST contract is identical.
|
|
39
|
+
|
|
40
|
+
- **_index/entities.yml upsert** (per-contributor, per-source): on every write, upsert one row per WI:
|
|
41
|
+
```yaml
|
|
42
|
+
- id: 'ado://org=<org>/project=<project>/workitemid=<int>'
|
|
43
|
+
display_name: '<WI title>'
|
|
44
|
+
entity_anchor: '<slug>'
|
|
45
|
+
latest_csc_file: 'weekly/<YYYY-MM-DD>_ado-csc.md'
|
|
46
|
+
latest_csc_block_offset: <line>
|
|
47
|
+
last_touched: <ISO> # use System.ChangedDate
|
|
48
|
+
first_seen: <ISO> # use System.CreatedDate
|
|
49
|
+
weeks_touched: [<YYYY-MM-DD>, ...]
|
|
50
|
+
status: captured | body-not-exposed | unavailable | deferred
|
|
51
|
+
low_signal: false | true
|
|
52
|
+
```
|
|
53
|
+
Path: `<engagement-root>/<project>/Evidence/<alias>/ado/_index/entities.yml`.
|
|
54
|
+
|
|
55
|
+
- **Idempotency**: same WI, same week, two runs → REPLACE the block in place (CSC reflects end-of-week state). Same WI, different weeks → each week's file gets its own block.
|
|
56
|
+
|
|
57
|
+
- **No body-fetch loop**: drop the AI Narrative Summary requirement and the dedicated verbatim comment-block reproduction. Comments are surfaced as Q&A and Who Said What bullets with citation; revisions surface as Decisions / Dates & Numbers. CSC bullets cite the ADO REST request URL.
|
|
58
|
+
|
|
59
|
+
- **Legacy `snapshot/` and `stream/` folders**: NOT written by this skill in v4.9.0. Pre-v4.9.0 folders on disk are left alone; readers fall back to them when `weekly/` is empty.
|
|
60
|
+
|
|
61
|
+
### Source-specific notes (ado — REST stays)
|
|
62
|
+
|
|
63
|
+
- **ADO REST + tree expansion unchanged** (Steps 1–3 below). Hard prereqs unchanged; auth block unchanged; WIQL resolution unchanged; pagination of comments unchanged.
|
|
64
|
+
- **Output shape**: one CSC block per WI in `weekly/<Monday>_ado-csc.md`. The tree structure (parent + children) is preserved by surfacing each WI as its own entity block + cross-linking parent/child WIs in each block's `Artifacts/Links` section.
|
|
65
|
+
- **Map WI fields → CSC sections**:
|
|
66
|
+
- AssignedTo + commenters → **Participants**
|
|
67
|
+
- Title + description + acceptance criteria → **Topics Discussed**
|
|
68
|
+
- State changes (System.State revisions) → **Decisions**
|
|
69
|
+
- Iteration dates, story points, effort → **Dates & Numbers Shared**
|
|
70
|
+
- Discussion comments → **Q&A** (when Q-and-A pattern detected) + **Who Said What**
|
|
71
|
+
- Tags, related WIs, parent-child links, attachment metadata → **Artifacts/Links**
|
|
72
|
+
- Entity id: `ado://org=<org>/project=<project>/workitemid=<int>`.
|
|
17
73
|
|
|
18
74
|
Pulls **ado** evidence in two shapes per `snapshot-vs-stream.instructions.md`:
|
|
19
75
|
|
|
@@ -187,6 +243,8 @@ From `$item.relations` where `rel = 'AttachedFile'` — record `name`, `resource
|
|
|
187
243
|
|
|
188
244
|
### 3e — Write per-item snapshot file
|
|
189
245
|
|
|
246
|
+
> **LEGACY (pre-v4.9.0).** Superseded by v4.9.0 weekly/ + CSC writer above. The ADO REST fetches (3a–3d) still run; only the file write changes. Kept for historical reference; not executed.
|
|
247
|
+
|
|
190
248
|
`<engagement-root>/<project>/Evidence/<alias>/ado/snapshot/items/<id>.md` (parent gets `engagement-<id>.md` at the snapshot root):
|
|
191
249
|
|
|
192
250
|
- Header: id, type, title, state, areaPath, parent, assignee, last fetched.
|
|
@@ -199,17 +257,19 @@ From `$item.relations` where `rel = 'AttachedFile'` — record `name`, `resource
|
|
|
199
257
|
|
|
200
258
|
## Step 4 — Stream pass
|
|
201
259
|
|
|
260
|
+
> **LEGACY (pre-v4.9.0).** Superseded by v4.9.0 weekly/ + CSC writer above. Kept for historical reference; not executed.
|
|
261
|
+
|
|
202
262
|
After all snapshots written, build the weekly stream from comments + updates whose `createdDate` / `revisedDate` fall in `<window>`. Bucket by Monday-of-ISO-week into `stream/<YYYY-MM-DD>_ado-stream.md` with AI Narrative Summary first then the verbatim entries grouped by WI.
|
|
203
263
|
|
|
204
264
|
If a week file exists, MERGE (dedupe by `comment.id` and `update.rev`).
|
|
205
265
|
|
|
206
266
|
## Tools (in order)
|
|
207
267
|
|
|
208
|
-
1. **WorkIQ** — discovery only (asking "is there an Engagement WI for HCA?" before doing the WIQL). Never used for discussion-comment fetch — it summarizes.
|
|
268
|
+
1. **WorkIQ** — discovery only (asking "is there an Engagement WI for HCA?" before doing the WIQL). When used for CSC, use the CSC canonical prompts from `workiq-only.instructions.md` § 'CSC canonical prompts (kushi v4.9.0+)'. The pre-v4.9.0 verbatim prompts are LEGACY (kept only for pull-meetings Half A). Never used for discussion-comment fetch — it summarizes.
|
|
209
269
|
2. **ADO REST** — REQUIRED for fields + comments + updates + tree expansion (preferred path). Auth block above.
|
|
210
270
|
3. **Ask user** — paste verbatim source content if REST returns 401 / 404 / persistent 5xx after 2 retries (3s/6s).
|
|
211
271
|
|
|
212
|
-
Document which path succeeded under
|
|
272
|
+
Document which path succeeded under `Source basis` (in the CSC block).
|
|
213
273
|
|
|
214
274
|
## Mutable hints to upsert (during the run, not at the end)
|
|
215
275
|
|
|
@@ -249,3 +309,19 @@ After successful pass:
|
|
|
249
309
|
## Issue Recovery
|
|
250
310
|
|
|
251
311
|
When this skill exposes a reusable defect (auth pattern, doctrine gap, layout mismatch), apply the [Issue Recovery Rule](../../instructions/issue-recovery.instructions.md): fix the smallest correct repo-owned artifact first, prefer durable fixes over per-run workarounds, then re-run the narrowest failed check. Do NOT use memory as a substitute for correcting the workflow surface.
|
|
312
|
+
|
|
313
|
+
## Depth bar (per `evidence-thoroughness.instructions.md` v2.0.0)
|
|
314
|
+
|
|
315
|
+
Per-source minimum bullet thresholds replace the v4.8 AI Narrative Summary depth bar. For ADO work items: **≥ 8 material bullets, ≥ 4 sections populated** (must include Participants (assignee + reporter), Topics, Action Items or Next Steps, Artifacts).
|
|
316
|
+
|
|
317
|
+
An entity that cannot meet the threshold is flagged `low_signal: true` in `_index/entities.yml` and rendered as heading + Coverage Notes only — do NOT pad.
|
|
318
|
+
|
|
319
|
+
## Changelog
|
|
320
|
+
|
|
321
|
+
- **v3.0.0 (kushi v4.9.0, 2026-05-26)**: BREAKING. Output is now a single weekly CSC file per ISO week
|
|
322
|
+
(`weekly/<YYYY-MM-DD>_ado-csc.md`) + per-contributor `_index/entities.yml`. snapshot/items/ +
|
|
323
|
+
stream/ writes removed. ADO REST + tree expansion (Steps 1–3) UNCHANGED — only output shape
|
|
324
|
+
changes. WI fields mapped to CSC sections (AssignedTo→Participants, Description→Topics, State
|
|
325
|
+
changes→Decisions, Comments→Q&A+Who Said What, etc.). AI Narrative Summary requirement removed.
|
|
326
|
+
Legacy snapshot/+stream/ folders left readable; no migration.
|
|
327
|
+
- **v2.x.x**: prior snapshot/+stream/ + verbatim-by-default shape. See git history.
|
|
@@ -1,19 +1,76 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: "pull-crm"
|
|
3
|
-
version: "
|
|
4
|
-
description: "Pull CRM (Dataverse) evidence (
|
|
3
|
+
version: "3.0.0"
|
|
4
|
+
description: "v3.0.0 (kushi v4.9.0): Pull CRM (Dataverse) evidence as Comprehensive Structured Capture (CSC) blocks written to weekly/YYYY-MM-DD_crm-csc.md. One block per record modified that week, upserted in _index/entities.yml. Dataverse REST retrieval doctrine (Rules 1-6) UNCHANGED — only output shape changes. Record fields → CSC sections (owner→Participants, long-text→Topics, statecode→Decisions, etc.). No snapshot/+stream/ split. Per-contributor _index/. See weekly-csc + comprehensive-structured-capture doctrines."
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Skill: pull-crm
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
> **
|
|
11
|
-
> -
|
|
10
|
+
> **v4.9.0 contracts** — This skill operates under these HARD-rule doctrines:
|
|
11
|
+
> - **`comprehensive-structured-capture.instructions.md`** — CSC block shape (canonical sections, bullets only, no prose).
|
|
12
|
+
> - **`weekly-csc.instructions.md`** — weekly/ + _index/ writer contract; multi-user safety.
|
|
13
|
+
> - `workiq-only.instructions.md` — when WorkIQ is used, the CSC canonical prompts (§ "CSC canonical prompts (kushi v4.9.0+)") apply. **Dataverse REST remains the preferred path for CRM** (gives explicit `$select` + `$expand` control).
|
|
14
|
+
> - `evidence-thoroughness.instructions.md` (v2.0.0) — per-source minimum bullet thresholds; `low_signal: true` flag.
|
|
15
|
+
> - `citation-ledger.instructions.md` — citation format.
|
|
12
16
|
> - `capture-learnings.instructions.md` — every fix/discovery is logged to `plugin/learnings/<source>.md` immediately.
|
|
13
|
-
> - `cleanup-on-resolution.instructions.md` —
|
|
17
|
+
> - `cleanup-on-resolution.instructions.md` — stale `no-match` / `not yet` notes are rewritten on resolution.
|
|
14
18
|
> - `run-reports.instructions.md` — every refresh writes a per-user report under `Evidence/<alias>/refresh-reports/YYYY-MM-DD-HHMM_refresh.md`.
|
|
15
|
-
|
|
16
|
-
>
|
|
19
|
+
> - `evidence-layout-canonical.instructions.md` — `weekly/` + `_index/` are canonical in v4.9.0+.
|
|
20
|
+
> - `scope-boundaries.instructions.md` — boundaries gate.
|
|
21
|
+
> - ~~`verbatim-by-default.instructions.md`~~ (LEGACY — superseded by CSC).
|
|
22
|
+
> - ~~`snapshot-vs-stream.instructions.md`~~ (LEGACY — superseded by weekly-csc).
|
|
23
|
+
|
|
24
|
+
## v4.9.0 — Comprehensive Structured Capture (CSC) + weekly/ layout (HARD RULE; supersedes all snapshot/+stream/ guidance below)
|
|
25
|
+
|
|
26
|
+
Per `comprehensive-structured-capture.instructions.md` and `weekly-csc.instructions.md`:
|
|
27
|
+
|
|
28
|
+
- **Output target** (single file per source per ISO week):
|
|
29
|
+
`<engagement-root>/<project>/Evidence/<alias>/crm/weekly/<YYYY-MM-DD>_crm-csc.md`
|
|
30
|
+
where `<YYYY-MM-DD>` is the **Monday** of the ISO week the record was modified.
|
|
31
|
+
Empty weeks produce no file.
|
|
32
|
+
|
|
33
|
+
- **Block shape (per record touched that week)**: one CSC block under `## <Record title> {#<entity-anchor>}` with canonical section order: Source basis → Coverage window → Last touched → Participants → Topics Discussed → Decisions → Dates & Numbers Shared → Action Items → Next Steps → Open Questions → Risks/Blockers/Dependencies → Customer Asks → Artifacts/Links → Coverage Notes. (Q&A and Who Said What omitted per CSC per-source applicability.) Bullets only — no prose paragraphs.
|
|
34
|
+
|
|
35
|
+
- **Entity id (canonical for this source)**: `crm://entity=<logicalName>/id=<guid>`
|
|
36
|
+
|
|
37
|
+
- **Dataverse REST retrieval doctrine (Rules 1–6) UNCHANGED**: formatted-values annotations, `PSObject.Properties[...]` indexer, one-row inspect-before-widen, one-field-at-a-time, always include `statecode`/`statuscode`, prefer formatted values in rendered output. Only the OUTPUT SHAPE changes — the REST contract is identical.
|
|
38
|
+
|
|
39
|
+
- **_index/entities.yml upsert** (per-contributor, per-source): on every write, upsert one row per record:
|
|
40
|
+
```yaml
|
|
41
|
+
- id: 'crm://entity=<logicalName>/id=<guid>'
|
|
42
|
+
display_name: '<record title>'
|
|
43
|
+
entity_anchor: '<slug>'
|
|
44
|
+
latest_csc_file: 'weekly/<YYYY-MM-DD>_crm-csc.md'
|
|
45
|
+
latest_csc_block_offset: <line>
|
|
46
|
+
last_touched: <ISO> # use record.modifiedon
|
|
47
|
+
first_seen: <ISO> # use record.createdon
|
|
48
|
+
weeks_touched: [<YYYY-MM-DD>, ...]
|
|
49
|
+
status: captured | body-not-exposed | unavailable | deferred
|
|
50
|
+
low_signal: false | true
|
|
51
|
+
```
|
|
52
|
+
Path: `<engagement-root>/<project>/Evidence/<alias>/crm/_index/entities.yml`.
|
|
53
|
+
|
|
54
|
+
- **Idempotency**: same record, same week, two runs → REPLACE the block in place (CSC reflects end-of-week state). Same record, different weeks → each week's file gets its own block.
|
|
55
|
+
|
|
56
|
+
- **No body-fetch loop**: drop the AI Narrative Summary requirement and the dedicated verbatim long-text dump. Long-text fields are surfaced as bulleted Topics Discussed entries; annotations become sub-bullets under Topics + entries in Who Said What (note author + first material sentence). CSC bullets cite the Dataverse REST request-id / WorkIQ request-id.
|
|
57
|
+
|
|
58
|
+
- **Legacy `snapshot/` and `stream/` folders**: NOT written by this skill in v4.9.0. Pre-v4.9.0 folders on disk are left alone; readers fall back to them when `weekly/` is empty.
|
|
59
|
+
|
|
60
|
+
### Source-specific notes (crm — REST stays)
|
|
61
|
+
|
|
62
|
+
- **Dataverse REST retrieval doctrine (Rules 1–6) unchanged** (see below). The 4-step resolution sequence (title → account[s] → wide-text → recent-slice → ask) and anti-patterns (no `statecode` filter at discovery; `new_companyname` is NOT a field; never disable from one shallow probe) all UNCHANGED.
|
|
63
|
+
- **Output shape changes**: instead of `snapshot/<entitySet>/<record-id>.md` + `stream/<YYYY-MM-DD>_crm-stream.md`, write **one CSC block per record** in `weekly/<Monday>_crm-csc.md`.
|
|
64
|
+
- **Map record fields → CSC sections**:
|
|
65
|
+
- Owner + contacts + assignedTo → **Participants**
|
|
66
|
+
- Long-text engagement fields (objectives, scenario, blockers) → **Topics Discussed**
|
|
67
|
+
- `statecode`/`statuscode` changes, decisions captured in notes → **Decisions**
|
|
68
|
+
- `createdon`/`modifiedon`, dollar amounts, percentages → **Dates & Numbers Shared**
|
|
69
|
+
- Annotations (notes) added in week → **Topics Discussed** sub-bullets + **Who Said What** (note author + first material sentence). _(Who Said What is normally omitted for crm per per-source table, but annotations are the carve-out where attribution is material — render only when present.)_
|
|
70
|
+
- Open questions in notes → **Open Questions**
|
|
71
|
+
- Customer-stated requirements → **Customer Asks**
|
|
72
|
+
- Related records → **Artifacts/Links**
|
|
73
|
+
- Entity id: `crm://entity=<logicalName>/id=<guid>`.
|
|
17
74
|
|
|
18
75
|
Pulls **crm** evidence in two shapes per `snapshot-vs-stream.instructions.md`:
|
|
19
76
|
|
|
@@ -176,6 +233,8 @@ If the response is summarized (heuristics: any long-text field appears trimmed,
|
|
|
176
233
|
|
|
177
234
|
### Step C — Write snapshot file (one per record)
|
|
178
235
|
|
|
236
|
+
> **LEGACY (pre-v4.9.0).** Superseded by v4.9.0 weekly/ + CSC writer above. The Dataverse REST fetch (Step A + Step B) still runs; only the file write changes. Kept for historical reference; not executed.
|
|
237
|
+
|
|
179
238
|
Write `snapshot/<entitySet>/<record-id>.md` with:
|
|
180
239
|
|
|
181
240
|
- File header (record id, MSX opp, status, owner, last-fetched timestamp).
|
|
@@ -196,6 +255,8 @@ Use template: `templates/snapshot/crm-<kind>.template.md` (FDE entities: shape c
|
|
|
196
255
|
|
|
197
256
|
## Stream pass
|
|
198
257
|
|
|
258
|
+
> **LEGACY (pre-v4.9.0).** Superseded by v4.9.0 weekly/ + CSC writer above. Kept for historical reference; not executed.
|
|
259
|
+
|
|
199
260
|
Per `evidence-thoroughness.instructions.md`: stream files (per-week) start with an **AI Narrative Summary** covering what changed and what it means, then every annotation verbatim with author + timestamp + every field-level change with old → new + actor + timestamp. Bucketed by ISO week into `stream/<record-id>/<YYYY-MM-DD>_crm-stream.md`.
|
|
200
261
|
|
|
201
262
|
Write to: `<engagement-root>/<project>/Evidence/<alias>/crm/stream/<YYYY-MM-DD>_crm-stream.md` (date = Monday of the ISO week the events fall in).
|
|
@@ -206,12 +267,12 @@ If a week file already exists, MERGE (dedupe by event ID, append new events, kee
|
|
|
206
267
|
|
|
207
268
|
## Tools (in order)
|
|
208
269
|
|
|
209
|
-
1. **Dataverse REST Web API** (preferred
|
|
210
|
-
2. **WorkIQ** — only when REST is unavailable
|
|
270
|
+
1. **Dataverse REST Web API** (preferred — gives explicit `$select` + `$expand` control) via `az account get-access-token` against the configured tenant. Read connection from `<workspace>/.kushi/config/shared/integrations.yml`. Doctrine Rules 1–6 above MUST be followed.
|
|
271
|
+
2. **WorkIQ** — only when REST is unavailable. Use CSC canonical prompts from `workiq-only.instructions.md` § 'CSC canonical prompts (kushi v4.9.0+)'. The pre-v4.9.0 verbatim prompts are LEGACY (kept only for pull-meetings Half A).
|
|
211
272
|
3. **Graph REST** — last resort, soft-fail per `auth-and-retry.instructions.md`.
|
|
212
273
|
4. **Ask user** — paste verbatim source content if all above fail.
|
|
213
274
|
|
|
214
|
-
Document which path succeeded under
|
|
275
|
+
Document which path succeeded under `Source basis` (in the CSC block) and in run-log.
|
|
215
276
|
|
|
216
277
|
## Mutable hints to upsert (during the run, not at the end)
|
|
217
278
|
|
|
@@ -247,3 +308,19 @@ After successful pass:
|
|
|
247
308
|
## Issue Recovery
|
|
248
309
|
|
|
249
310
|
When this skill exposes a reusable defect (auth pattern, doctrine gap, layout mismatch), apply the [Issue Recovery Rule](../../instructions/issue-recovery.instructions.md): fix the smallest correct repo-owned artifact first, prefer durable fixes over per-run workarounds, then re-run the narrowest failed check. Do NOT use memory as a substitute for correcting the workflow surface.
|
|
311
|
+
|
|
312
|
+
## Depth bar (per `evidence-thoroughness.instructions.md` v2.0.0)
|
|
313
|
+
|
|
314
|
+
Per-source minimum bullet thresholds replace the v4.8 AI Narrative Summary depth bar. For CRM records: **≥ 12 material bullets, ≥ 5 sections populated** (must include Participants, Dates & Numbers, Next Steps, Customer Asks, Artifacts).
|
|
315
|
+
|
|
316
|
+
An entity that cannot meet the threshold is flagged `low_signal: true` in `_index/entities.yml` and rendered as heading + Coverage Notes only — do NOT pad.
|
|
317
|
+
|
|
318
|
+
## Changelog
|
|
319
|
+
|
|
320
|
+
- **v3.0.0 (kushi v4.9.0, 2026-05-26)**: BREAKING. Output is now a single weekly CSC file per ISO week
|
|
321
|
+
(`weekly/<YYYY-MM-DD>_crm-csc.md`) + per-contributor `_index/entities.yml`. snapshot/`<entitySet>`/
|
|
322
|
+
+ stream/ writes removed. Dataverse REST retrieval doctrine (Rules 1–6) and 4-step resolution
|
|
323
|
+
UNCHANGED — only output shape changes. Record fields mapped to CSC sections
|
|
324
|
+
(Owner→Participants, long-text→Topics, statecode→Decisions, etc.). AI Narrative Summary requirement
|
|
325
|
+
removed. Legacy snapshot/+stream/ folders left readable; no migration.
|
|
326
|
+
- **v2.x.x**: prior snapshot/+stream/ + verbatim-by-default shape. See git history.
|
|
@@ -1,19 +1,68 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: "pull-email"
|
|
3
|
-
version: "
|
|
4
|
-
description: "Pull Email evidence
|
|
3
|
+
version: "3.0.0"
|
|
4
|
+
description: "v3.0.0 (kushi v4.9.0): Pull Email evidence as Comprehensive Structured Capture (CSC) blocks written to weekly/YYYY-MM-DD_email-csc.md. One block per email thread touched that week, upserted in _index/entities.yml. WorkIQ-ONLY via CSC canonical prompts. No snapshot/+stream/ split. Per-contributor _index/. See weekly-csc + comprehensive-structured-capture doctrines."
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Skill: pull-email
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
> **
|
|
11
|
-
> -
|
|
12
|
-
> - **`
|
|
10
|
+
> **v4.9.0 contracts** — This skill operates under these HARD-rule doctrines:
|
|
11
|
+
> - **`comprehensive-structured-capture.instructions.md`** — CSC block shape (canonical sections, bullets only, no prose).
|
|
12
|
+
> - **`weekly-csc.instructions.md`** — weekly/ + _index/ writer contract; multi-user safety.
|
|
13
|
+
> - **`workiq-only.instructions.md`** — email enumeration + per-thread CSC capture go through WorkIQ ONLY via the CSC canonical prompts (§ "CSC canonical prompts (kushi v4.9.0+)"). `m365_get_email`, `m365_search_emails`, `m365_list_emails`, and Graph REST URLs remain FORBIDDEN.
|
|
14
|
+
> - `evidence-thoroughness.instructions.md` (v2.0.0) — per-source minimum bullet thresholds; `low_signal: true` flag for shallow entities.
|
|
15
|
+
> - `citation-ledger.instructions.md` — citation format.
|
|
13
16
|
> - `capture-learnings.instructions.md` — every fix/discovery is logged to `plugin/learnings/<source>.md` immediately.
|
|
14
|
-
> - `cleanup-on-resolution.instructions.md` —
|
|
17
|
+
> - `cleanup-on-resolution.instructions.md` — stale `no-match` / `not yet` notes are rewritten on resolution.
|
|
15
18
|
> - `run-reports.instructions.md` — every refresh writes a per-user report under `Evidence/<alias>/refresh-reports/YYYY-MM-DD-HHMM_refresh.md`.
|
|
16
|
-
> - `evidence-layout-canonical.instructions.md`
|
|
19
|
+
> - `evidence-layout-canonical.instructions.md` — `weekly/` + `_index/` are canonical in v4.9.0+.
|
|
20
|
+
> - `scope-boundaries.instructions.md` — boundaries gate.
|
|
21
|
+
> - ~~`verbatim-by-default.instructions.md`~~ (LEGACY — superseded by CSC).
|
|
22
|
+
> - ~~`snapshot-vs-stream.instructions.md`~~ (LEGACY — superseded by weekly-csc).
|
|
23
|
+
|
|
24
|
+
## v4.9.0 — Comprehensive Structured Capture (CSC) + weekly/ layout (HARD RULE; supersedes all snapshot/+stream/ guidance below)
|
|
25
|
+
|
|
26
|
+
Per `comprehensive-structured-capture.instructions.md` and `weekly-csc.instructions.md`:
|
|
27
|
+
|
|
28
|
+
- **Output target** (single file per source per ISO week):
|
|
29
|
+
`<engagement-root>/<project>/Evidence/<alias>/email/weekly/<YYYY-MM-DD>_email-csc.md`
|
|
30
|
+
where `<YYYY-MM-DD>` is the **Monday** of the ISO week the entities were touched.
|
|
31
|
+
Empty weeks produce no file.
|
|
32
|
+
|
|
33
|
+
- **Block shape (per entity touched that week)**: one CSC block under `## <Entity title> {#<entity-anchor>}` with canonical section order: Source basis → Coverage window → Last touched → Participants → Topics Discussed → Q&A → Who Said What → Decisions → Dates & Numbers Shared → Action Items → Next Steps → Open Questions → Risks/Blockers/Dependencies → Customer Asks → Artifacts/Links → Coverage Notes. Bullets only — no prose paragraphs. Inapplicable sections omitted; empty-but-applicable sections rendered as `_None surfaced._`.
|
|
34
|
+
|
|
35
|
+
- **Entity id (canonical for this source)**: `email://conversation_id=<conversationId>`
|
|
36
|
+
|
|
37
|
+
- **WorkIQ prompts**: REPLACED by the CSC canonical prompts in `workiq-only.instructions.md` § "CSC canonical prompts (kushi v4.9.0+)". Do NOT use the v4.8 verbatim prompts.
|
|
38
|
+
|
|
39
|
+
- **_index/entities.yml upsert** (per-contributor, per-source): on every write, upsert one row per entity:
|
|
40
|
+
```yaml
|
|
41
|
+
- id: 'email://conversation_id=<conversationId>'
|
|
42
|
+
display_name: '<thread subject>'
|
|
43
|
+
entity_anchor: '<slug>'
|
|
44
|
+
latest_csc_file: 'weekly/<YYYY-MM-DD>_email-csc.md'
|
|
45
|
+
latest_csc_block_offset: <line>
|
|
46
|
+
last_touched: <ISO>
|
|
47
|
+
first_seen: <ISO>
|
|
48
|
+
weeks_touched: [<YYYY-MM-DD>, ...]
|
|
49
|
+
status: captured | body-not-exposed | unavailable | deferred
|
|
50
|
+
low_signal: false | true
|
|
51
|
+
```
|
|
52
|
+
Path: `<engagement-root>/<project>/Evidence/<alias>/email/_index/entities.yml`.
|
|
53
|
+
|
|
54
|
+
- **Idempotency**: same entity, same week, two runs → REPLACE the block in place (current-week CSC reflects end-of-week state). Same entity, different weeks → each week's file gets its own block.
|
|
55
|
+
|
|
56
|
+
- **No body-fetch loop**: drop the per-message verbatim body fetch and the AI Narrative Summary requirement. CSC bullets sourced directly from WorkIQ CSC output.
|
|
57
|
+
|
|
58
|
+
- **Legacy `snapshot/` and `stream/` folders**: NOT written by this skill in v4.9.0. Pre-v4.9.0 folders on disk are left alone (no migration); readers fall back to them when `weekly/` is empty.
|
|
59
|
+
|
|
60
|
+
### Source-specific notes (email)
|
|
61
|
+
|
|
62
|
+
- Step A enumeration WorkIQ prompt is unchanged (lists conversations in scope).
|
|
63
|
+
- Replace per-message body fetch with **one CSC call per conversationId** using the CSC canonical email prompt.
|
|
64
|
+
- Persist message-index to `_index/message-index_<YYYY-MM-DD>.md` (optional — `_index/entities.yml` is the authoritative current-state file).
|
|
65
|
+
- Drop "Group by conversationId" + AI Narrative Summary references (legacy below).
|
|
17
66
|
Pulls **email** evidence in two shapes per `snapshot-vs-stream.instructions.md`:
|
|
18
67
|
|
|
19
68
|
- **snapshot/** — (none — emails ARE events, no snapshot)
|
|
@@ -137,10 +186,14 @@ After all bodies fetched, group messages by `conversationId`. For each thread:
|
|
|
137
186
|
|
|
138
187
|
## Snapshot pass
|
|
139
188
|
|
|
189
|
+
> **LEGACY (pre-v4.9.0).** Superseded by v4.9.0 weekly/ + CSC writer above. Kept for historical reference; not executed.
|
|
190
|
+
|
|
140
191
|
_(no snapshot for email — emails are inherently event-stream)_
|
|
141
192
|
|
|
142
193
|
## Stream pass output
|
|
143
194
|
|
|
195
|
+
> **LEGACY (pre-v4.9.0).** Superseded by v4.9.0 weekly/ + CSC writer above. Kept for historical reference; not executed.
|
|
196
|
+
|
|
144
197
|
Write to: `<engagement-root>/<project>/Evidence/<alias>/email/stream/<YYYY-MM-DD>_email-stream.md` (date = Monday of the ISO week the events fall in).
|
|
145
198
|
|
|
146
199
|
Write the message index to: `<engagement-root>/<project>/Evidence/<alias>/email/_index/<YYYY-MM-DD>_message-index.md`.
|
|
@@ -151,7 +204,7 @@ If a week file already exists, MERGE (dedupe by `internetMessageId`, append new
|
|
|
151
204
|
|
|
152
205
|
## Tools (WorkIQ ONLY — per `workiq-only.instructions.md`)
|
|
153
206
|
|
|
154
|
-
1. **WorkIQ (`workiq ask`)** — the ONLY allowed path for both enumeration (Step A) and per-
|
|
207
|
+
1. **WorkIQ (`workiq ask`)** — the ONLY allowed path for both enumeration (Step A) and per-thread CSC capture. Use CSC canonical prompts from `workiq-only.instructions.md` § 'CSC canonical prompts (kushi v4.9.0+)'. The pre-v4.9.0 verbatim prompts are LEGACY (kept only for pull-meetings Half A).
|
|
155
208
|
2. **Ask user (paste verbatim)** — first-class fallback when WorkIQ doubled-strict retry fails or returns `body-unavailable`. NOT a degradation; coverage.md labels it `Source: User paste on <ISO>`.
|
|
156
209
|
|
|
157
210
|
**FORBIDDEN** for this skill (per workiq-only.instructions.md): `m365_get_email`, `m365_search_emails`, `m365_list_emails`, `m365_list_mail_folders`, `m365_search_mail`, Graph REST `https://graph.microsoft.com/v1.0/me/messages*`, Graph REST `https://graph.microsoft.com/v1.0/me/mailFolders*`. These tools have a near-100% failure rate in this workspace. Calling them is a DEFECT; coverage.md must NOT show them in the attempt trail.
|
|
@@ -181,11 +234,13 @@ After successful pass:
|
|
|
181
234
|
- `sources.email.threads = <N>` — number of conversations grouped
|
|
182
235
|
- For each week touched, add to `weekly_files` index.
|
|
183
236
|
|
|
184
|
-
## Depth bar (per `evidence-thoroughness.instructions.md`)
|
|
237
|
+
## Depth bar (per `evidence-thoroughness.instructions.md` v2.0.0)
|
|
238
|
+
|
|
239
|
+
Per-source minimum bullet thresholds replace the v4.8 AI Narrative Summary depth bar. For email threads: **≥ 8 material bullets, ≥ 4 sections populated** (must include Participants, Topics, Action Items or Next Steps, Decisions or Q&A).
|
|
185
240
|
|
|
186
|
-
|
|
241
|
+
An entity that cannot meet the threshold is flagged `low_signal: true` in `_index/entities.yml` and rendered as heading + Coverage Notes only — do NOT pad.
|
|
187
242
|
|
|
188
|
-
**Completeness bar:** `messages_enumerated` should equal `
|
|
243
|
+
**Completeness bar:** `messages_enumerated` should equal the sum of conversations captured + `body-not-exposed` + `deferred`. Drift surfaces in run-log; consolidate skill renders it as a Coverage Note.
|
|
189
244
|
|
|
190
245
|
## Stop conditions
|
|
191
246
|
|
|
@@ -204,3 +259,12 @@ The pre-Step-C anti-summary doctrine + the Step-C AI Narrative Summary per threa
|
|
|
204
259
|
## Issue Recovery
|
|
205
260
|
|
|
206
261
|
When this skill exposes a reusable defect (auth pattern, doctrine gap, layout mismatch), apply the [Issue Recovery Rule](../../instructions/issue-recovery.instructions.md): fix the smallest correct repo-owned artifact first, prefer durable fixes over per-run workarounds, then re-run the narrowest failed check. Do NOT use memory as a substitute for correcting the workflow surface.
|
|
262
|
+
|
|
263
|
+
## Changelog
|
|
264
|
+
|
|
265
|
+
- **v3.0.0 (kushi v4.9.0, 2026-05-26)**: BREAKING. Output is now a single weekly CSC file per ISO week
|
|
266
|
+
(`weekly/<YYYY-MM-DD>_email-csc.md`) + per-contributor `_index/entities.yml`. snapshot/ and stream/
|
|
267
|
+
writes removed. WorkIQ prompts switched to CSC canonical prompts. AI Narrative Summary requirement
|
|
268
|
+
removed (CSC bulleted sections carry the load). Verbatim body-fetch loop removed.
|
|
269
|
+
Legacy snapshot/+stream/ folders left readable; no migration.
|
|
270
|
+
- **v2.x.x**: prior snapshot/+stream/ + verbatim-by-default shape. See git history.
|