@codedrifters/configulator 0.0.302 → 0.0.303
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/lib/index.js +226 -39
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +226 -39
- package/lib/index.mjs.map +1 -1
- package/package.json +1 -1
package/lib/index.js
CHANGED
|
@@ -11496,14 +11496,17 @@ var maintenanceAuditBundle = buildMaintenanceAuditBundle();
|
|
|
11496
11496
|
function buildMeetingAnalystSubAgent(tier) {
|
|
11497
11497
|
return {
|
|
11498
11498
|
name: "meeting-analyst",
|
|
11499
|
-
description: "Processes meeting transcripts through a 4-phase pipeline: extract, notes, draft, and link",
|
|
11499
|
+
description: "Processes meeting notes and transcripts (sibling-tree layout) through a 4-phase pipeline: extract, notes, draft, and link",
|
|
11500
11500
|
model: tier,
|
|
11501
11501
|
maxTurns: 80,
|
|
11502
11502
|
platforms: { cursor: { exclude: true } },
|
|
11503
11503
|
prompt: [
|
|
11504
11504
|
"# Meeting Analyst Agent",
|
|
11505
11505
|
"",
|
|
11506
|
-
"You process meeting transcripts through a structured
|
|
11506
|
+
"You process meeting notes and transcripts through a structured",
|
|
11507
|
+
"4-phase pipeline. Notes and transcripts live in **parallel sibling",
|
|
11508
|
+
"trees** keyed by basename \u2014 see the **Meeting file layout** section",
|
|
11509
|
+
"below for the canonical directory layout and input-case matrix.",
|
|
11507
11510
|
"Each phase runs as a **separate agent session**, triggered by its own",
|
|
11508
11511
|
"GitHub issue with a `meeting:*` phase label. You handle exactly **one",
|
|
11509
11512
|
"phase per session** \u2014 read the issue to determine which phase to execute.",
|
|
@@ -11536,6 +11539,87 @@ function buildMeetingAnalystSubAgent(tier) {
|
|
|
11536
11539
|
" Apply the type-specific rules from the **Meeting type handling**",
|
|
11537
11540
|
" table (phases 1\u20132) and the area-filtered routing rules from the",
|
|
11538
11541
|
" **Areas filtering** table (phase 4).",
|
|
11542
|
+
"7. **Treat notes and transcripts as paired siblings.** Notes are the",
|
|
11543
|
+
" curated narrative summary; transcripts are the verbatim evidence",
|
|
11544
|
+
" record. Both are first-class inputs to Phase 1 \u2014 never assume the",
|
|
11545
|
+
" transcript is the sole input.",
|
|
11546
|
+
"",
|
|
11547
|
+
"---",
|
|
11548
|
+
"",
|
|
11549
|
+
"## Meeting file layout (sibling-tree model)",
|
|
11550
|
+
"",
|
|
11551
|
+
"The bundle organises meeting artifacts as **three parallel trees**",
|
|
11552
|
+
"rooted at `<meetingsRoot>`, partitioned by meeting type",
|
|
11553
|
+
"(`internal` / `external`):",
|
|
11554
|
+
"",
|
|
11555
|
+
"```",
|
|
11556
|
+
"<meetingsRoot>/",
|
|
11557
|
+
"\u251C\u2500\u2500 transcripts/{internal,external}/ \u2190 raw verbatim transcripts (input, evidence)",
|
|
11558
|
+
"\u251C\u2500\u2500 notes/{internal,external}/ \u2190 curated narrative summary (input + Phase 2 output)",
|
|
11559
|
+
"\u2514\u2500\u2500 insights/{internal,external}/ \u2190 structured extraction (Phase 1 output)",
|
|
11560
|
+
"```",
|
|
11561
|
+
"",
|
|
11562
|
+
"Within a given `{internal,external}` partition, the three trees share",
|
|
11563
|
+
"**identical basenames**: a meeting captured as",
|
|
11564
|
+
"`notes/internal/2026-03-14-sprint-kickoff.md` has its companion",
|
|
11565
|
+
"transcript at `transcripts/internal/2026-03-14-sprint-kickoff.md` and",
|
|
11566
|
+
"its Phase 1 extraction at `insights/internal/2026-03-14-sprint-kickoff.md`.",
|
|
11567
|
+
"Agents look up siblings via filesystem (basename match across the",
|
|
11568
|
+
"three trees), not via frontmatter cross-references.",
|
|
11569
|
+
"",
|
|
11570
|
+
"**Input-case matrix.** A meeting always has a `notes/` or",
|
|
11571
|
+
"`transcripts/` entry (often both); Phase 1 must handle every case:",
|
|
11572
|
+
"",
|
|
11573
|
+
"| Notes file? | Transcript file? | Case | Phase-1 behaviour |",
|
|
11574
|
+
"|-------------|------------------|------|--------------------|",
|
|
11575
|
+
"| Yes | Yes | **Both** | Read both; transcript is verbatim ground truth, notes are first-draft summary. Set `transcript_available: true`, `confidence: high`. |",
|
|
11576
|
+
"| Yes | No | **Notes-only** | Read notes only. Set `transcript_available: false`, `confidence: medium`. Do not invent dialogue the notes do not record. |",
|
|
11577
|
+
"| No | Yes | **Transcript-only** | Read transcript only. Set `transcript_available: true`, `confidence: high`. Phase 2 will author the notes file from the transcript. |",
|
|
11578
|
+
"",
|
|
11579
|
+
"Notes frontmatter is **optional**. A bare imported file with no",
|
|
11580
|
+
"frontmatter is a normal input case \u2014 treat missing fields as the",
|
|
11581
|
+
"defaults `meeting_type: other`, `source: unknown`, `confidence: medium`,",
|
|
11582
|
+
"and populate the real values on first processing. Never fail-loud on",
|
|
11583
|
+
"absent frontmatter.",
|
|
11584
|
+
"",
|
|
11585
|
+
"### Notes / insights frontmatter schema",
|
|
11586
|
+
"",
|
|
11587
|
+
"The following frontmatter fields are recognised on notes and",
|
|
11588
|
+
"insights files. Every field is optional \u2014 agents must read them",
|
|
11589
|
+
"defensively and supply defaults when absent.",
|
|
11590
|
+
"",
|
|
11591
|
+
"| Field | Type | Purpose | Default |",
|
|
11592
|
+
"|-------|------|---------|---------|",
|
|
11593
|
+
"| `slug` | string | Starlight slug override; lets agents normalise the URL without renaming files. | derived from filename |",
|
|
11594
|
+
"| `source` | `gemini` \\| `human` \\| `hybrid` \\| `unknown` | Provenance of the original notes (which authoring path produced them). | `unknown` |",
|
|
11595
|
+
"| `transcript_available` | boolean | Cached result of the filesystem check for the sibling transcript. | re-derive from filesystem |",
|
|
11596
|
+
"| `confidence` | `high` \\| `medium` \\| `low` | Reliability of the extraction. Downstream draft phases mark requirements **Tentative** when `confidence != high`. | `medium` |",
|
|
11597
|
+
"",
|
|
11598
|
+
"These additions coexist with the existing `meeting_type` and `areas`",
|
|
11599
|
+
"fields documented in the **Meeting type handling** and **Areas",
|
|
11600
|
+
"filtering** sections below.",
|
|
11601
|
+
"",
|
|
11602
|
+
"Transcript files themselves remain frontmatter-free \u2014 they are",
|
|
11603
|
+
"evidence-only, and agents never navigate to a transcript as a",
|
|
11604
|
+
"Starlight artifact.",
|
|
11605
|
+
"",
|
|
11606
|
+
"### Tree-level index pages",
|
|
11607
|
+
"",
|
|
11608
|
+
"Each of the three trees carries an `index.md` at its root and at",
|
|
11609
|
+
"each `{internal,external}` partition so Starlight renders a clean",
|
|
11610
|
+
"sidebar:",
|
|
11611
|
+
"",
|
|
11612
|
+
"- `<meetingsRoot>/transcripts/index.md` (and one per partition)",
|
|
11613
|
+
"- `<meetingsRoot>/notes/index.md` (and one per partition)",
|
|
11614
|
+
"- `<meetingsRoot>/insights/index.md` (and one per partition)",
|
|
11615
|
+
"",
|
|
11616
|
+
"Phase 1 must create the matching `insights/{type}/index.md` page",
|
|
11617
|
+
"the first time it writes a file into that partition. Phase 2 must",
|
|
11618
|
+
"create the matching `notes/{type}/index.md` page the first time it",
|
|
11619
|
+
"writes a notes file into that partition. Follow the `section-index`",
|
|
11620
|
+
"convention: a 1\u20132 paragraph summary of the tree's purpose plus a",
|
|
11621
|
+
"linked listing of the partition's children. Append a row for the",
|
|
11622
|
+
"current meeting's basename when an index already exists.",
|
|
11539
11623
|
"",
|
|
11540
11624
|
"---",
|
|
11541
11625
|
"",
|
|
@@ -11664,17 +11748,25 @@ function buildMeetingAnalystSubAgent(tier) {
|
|
|
11664
11748
|
"",
|
|
11665
11749
|
"## Phase 1: Extract (`meeting:extract`)",
|
|
11666
11750
|
"",
|
|
11667
|
-
"**Goal:** Read the meeting
|
|
11751
|
+
"**Goal:** Read the available meeting inputs (notes, transcript, or both)",
|
|
11752
|
+
"and categorize all substantive content into a structured extraction.",
|
|
11668
11753
|
"",
|
|
11669
11754
|
"### Steps",
|
|
11670
11755
|
"",
|
|
11671
|
-
"1.
|
|
11672
|
-
"
|
|
11673
|
-
"
|
|
11674
|
-
"
|
|
11675
|
-
"
|
|
11676
|
-
"
|
|
11677
|
-
" in
|
|
11756
|
+
"1. Identify the meeting's basename and `{internal,external}` partition",
|
|
11757
|
+
" from the issue body, then read **both** sibling files when they",
|
|
11758
|
+
" exist:",
|
|
11759
|
+
" - Notes: `<meetingsRoot>/notes/{type}/<basename>.md`",
|
|
11760
|
+
" - Transcript: `<meetingsRoot>/transcripts/{type}/<basename>.md`",
|
|
11761
|
+
"",
|
|
11762
|
+
" Use the **input-case matrix** in **Meeting file layout** to decide",
|
|
11763
|
+
" which case you are in (both / notes-only / transcript-only). Parse",
|
|
11764
|
+
" the notes frontmatter first (if a notes file exists), capturing",
|
|
11765
|
+
" `meeting_type`, `areas`, `source`, and `confidence`. Resolve",
|
|
11766
|
+
" `meeting_type` to a kind using the **Meeting type handling**",
|
|
11767
|
+
" table; note the resolved kind in the extraction frontmatter. If",
|
|
11768
|
+
" `meeting_type` is missing, treat it as `other` and flag it in",
|
|
11769
|
+
" Open Questions \u2014 do **not** fail-loud on missing frontmatter.",
|
|
11678
11770
|
"2. Identify and categorize content into these buckets:",
|
|
11679
11771
|
"",
|
|
11680
11772
|
" | Bucket | What to look for |",
|
|
@@ -11689,7 +11781,10 @@ function buildMeetingAnalystSubAgent(tier) {
|
|
|
11689
11781
|
" | **Strategic direction** | Business model changes, market positioning |",
|
|
11690
11782
|
" | **Product direction** | Roadmap changes, feature prioritization |",
|
|
11691
11783
|
"",
|
|
11692
|
-
"3. Write the extraction to
|
|
11784
|
+
"3. Write the extraction to",
|
|
11785
|
+
" `<meetingsRoot>/insights/{type}/<basename>.md` (matching the",
|
|
11786
|
+
" basename and `{internal,external}` partition of the source",
|
|
11787
|
+
" notes / transcript) with structured sections:",
|
|
11693
11788
|
" - Attendees",
|
|
11694
11789
|
" - Decisions Made (with category and confidence: Firm / Tentative / Needs confirmation)",
|
|
11695
11790
|
" - Requirements Identified (with category and priority estimate)",
|
|
@@ -11700,9 +11795,14 @@ function buildMeetingAnalystSubAgent(tier) {
|
|
|
11700
11795
|
" - Companies of Interest (with type and context)",
|
|
11701
11796
|
" - Strategic / Product Direction",
|
|
11702
11797
|
"",
|
|
11703
|
-
" Carry
|
|
11704
|
-
"
|
|
11705
|
-
"
|
|
11798
|
+
" Carry the following into the extraction frontmatter so downstream",
|
|
11799
|
+
" phases can gate behaviour without re-parsing the source files:",
|
|
11800
|
+
" `meeting_type`, the resolved `meeting_kind`, `areas`,",
|
|
11801
|
+
" `transcript_available: true|false` (cached from the filesystem",
|
|
11802
|
+
" check in step 1), and `confidence: high|medium|low` (per the",
|
|
11803
|
+
" input-case matrix \u2014 `high` when a transcript is present, `medium`",
|
|
11804
|
+
" on notes-only, never silently downgraded to `low` without an",
|
|
11805
|
+
" explicit reason recorded in Open Questions).",
|
|
11706
11806
|
"",
|
|
11707
11807
|
"4. **Apply type-specific rules.** Consult the **Meeting type handling**",
|
|
11708
11808
|
" table for the resolved kind and apply its phase-1 rules in",
|
|
@@ -11716,7 +11816,14 @@ function buildMeetingAnalystSubAgent(tier) {
|
|
|
11716
11816
|
" Interest (signal threshold still applies); capture customer",
|
|
11717
11817
|
" pain points as candidate BR (not FR).",
|
|
11718
11818
|
"",
|
|
11719
|
-
"5. **
|
|
11819
|
+
"5. **Maintain the `insights/` tree index.** Ensure",
|
|
11820
|
+
" `<meetingsRoot>/insights/index.md` and",
|
|
11821
|
+
" `<meetingsRoot>/insights/{type}/index.md` exist (create them",
|
|
11822
|
+
" following the `section-index` convention if missing) and append",
|
|
11823
|
+
" a row for the current meeting's basename if one is not already",
|
|
11824
|
+
" present.",
|
|
11825
|
+
"",
|
|
11826
|
+
"6. **Create downstream phase issues** using `gh issue create`:",
|
|
11720
11827
|
" - Always create a `meeting:notes` issue (blocked on this extract issue)",
|
|
11721
11828
|
" - If requirements OR decisions/ADRs identified, create a `meeting:draft` issue",
|
|
11722
11829
|
" (blocked on the notes issue). For kind `standup`, skip the",
|
|
@@ -11725,18 +11832,59 @@ function buildMeetingAnalystSubAgent(tier) {
|
|
|
11725
11832
|
" - Always create a `meeting:link` issue \u2014 blocked on the draft issue if one",
|
|
11726
11833
|
" was created, otherwise blocked on the notes issue",
|
|
11727
11834
|
"",
|
|
11728
|
-
"
|
|
11835
|
+
"7. Commit, push, and close the extract issue.",
|
|
11729
11836
|
"",
|
|
11730
11837
|
"---",
|
|
11731
11838
|
"",
|
|
11732
11839
|
"## Phase 2: Notes (`meeting:notes`)",
|
|
11733
11840
|
"",
|
|
11734
|
-
"**Goal:**
|
|
11841
|
+
"**Goal:** Produce a curated `notes/{type}/<basename>.md` file that",
|
|
11842
|
+
"reflects the structured meeting record. The pivot here from older",
|
|
11843
|
+
'versions of this bundle: Phase 2 is no longer "author notes from',
|
|
11844
|
+
'scratch." It is **enhance and verify** \u2014 restructure the existing',
|
|
11845
|
+
"Gemini-generated notes (when present), verify factual claims",
|
|
11846
|
+
"against the transcript (when present), and fall back to authoring",
|
|
11847
|
+
"only when no notes file exists.",
|
|
11735
11848
|
"",
|
|
11736
11849
|
"### Steps",
|
|
11737
11850
|
"",
|
|
11738
|
-
"1. Read the extraction
|
|
11739
|
-
"
|
|
11851
|
+
"1. Read the extraction at",
|
|
11852
|
+
" `<meetingsRoot>/insights/{type}/<basename>.md` (output of Phase 1).",
|
|
11853
|
+
" Read the `transcript_available` and `confidence` fields from its",
|
|
11854
|
+
" frontmatter. Then determine which input-case branch applies by",
|
|
11855
|
+
" checking the filesystem for the sibling notes and transcript",
|
|
11856
|
+
" files.",
|
|
11857
|
+
"2. **Branch by input case** (see the input-case matrix in the",
|
|
11858
|
+
" **Meeting file layout** section):",
|
|
11859
|
+
"",
|
|
11860
|
+
" - **Both notes and transcript present** (enhance + verify):",
|
|
11861
|
+
" Read the existing `notes/{type}/<basename>.md` in place.",
|
|
11862
|
+
" Restructure it into the canonical section layout below.",
|
|
11863
|
+
" Verify every factual claim against the transcript \u2014 when the",
|
|
11864
|
+
" transcript contradicts the notes, the transcript wins and the",
|
|
11865
|
+
" notes are corrected. Fill in gaps the transcript reveals were",
|
|
11866
|
+
" missed. Overwrite the notes file in place; preserve the",
|
|
11867
|
+
" existing frontmatter and update only the fields you changed",
|
|
11868
|
+
" (e.g. flip `source: gemini` to `source: hybrid` once the agent",
|
|
11869
|
+
" has edited the file). Set `confidence: high`.",
|
|
11870
|
+
"",
|
|
11871
|
+
" - **Notes only** (light structural cleanup):",
|
|
11872
|
+
" Read the existing `notes/{type}/<basename>.md`. Restructure it",
|
|
11873
|
+
" into the canonical section layout below. Do **not** invent",
|
|
11874
|
+
" dialogue or claims the notes do not record. Do **not** mark",
|
|
11875
|
+
" `confidence: high` \u2014 keep `confidence: medium` and record the",
|
|
11876
|
+
' reason ("no transcript available for verification") in the',
|
|
11877
|
+
" notes' Open Questions section so downstream phases know to",
|
|
11878
|
+
" treat downstream requirement drafts as `Tentative`.",
|
|
11879
|
+
"",
|
|
11880
|
+
" - **Transcript only** (author from scratch):",
|
|
11881
|
+
" The notes file does not yet exist. Author",
|
|
11882
|
+
" `notes/{type}/<basename>.md` from the transcript using the",
|
|
11883
|
+
" section layout below. Populate frontmatter with",
|
|
11884
|
+
" `source: gemini` if the transcript is a Gemini transcript,",
|
|
11885
|
+
" otherwise `source: unknown`. Set `confidence: high`.",
|
|
11886
|
+
"",
|
|
11887
|
+
"3. Canonical notes section layout (applied in every branch above):",
|
|
11740
11888
|
" - Meeting metadata (title, date, attendees)",
|
|
11741
11889
|
" - Agenda / topics covered",
|
|
11742
11890
|
" - Key Discussion Points (organized by topic)",
|
|
@@ -11744,7 +11892,13 @@ function buildMeetingAnalystSubAgent(tier) {
|
|
|
11744
11892
|
" - Action Items (table: who, what, when)",
|
|
11745
11893
|
" - Open Questions",
|
|
11746
11894
|
" - Follow-up items",
|
|
11747
|
-
"
|
|
11895
|
+
"4. **Maintain the `notes/` tree index.** Ensure",
|
|
11896
|
+
" `<meetingsRoot>/notes/index.md` and",
|
|
11897
|
+
" `<meetingsRoot>/notes/{type}/index.md` exist (create them",
|
|
11898
|
+
" following the `section-index` convention if missing) and append",
|
|
11899
|
+
" a row for the current meeting's basename if one is not already",
|
|
11900
|
+
" present.",
|
|
11901
|
+
"5. Commit, push, and close the notes issue.",
|
|
11748
11902
|
"",
|
|
11749
11903
|
"---",
|
|
11750
11904
|
"",
|
|
@@ -11757,7 +11911,8 @@ function buildMeetingAnalystSubAgent(tier) {
|
|
|
11757
11911
|
"",
|
|
11758
11912
|
"### Steps",
|
|
11759
11913
|
"",
|
|
11760
|
-
"1. Read the extraction file from Phase 1
|
|
11914
|
+
"1. Read the extraction file from Phase 1 at",
|
|
11915
|
+
" `<meetingsRoot>/insights/{type}/<basename>.md`.",
|
|
11761
11916
|
"2. Check existing requirement registries and ADR registries for duplicates.",
|
|
11762
11917
|
"3. Draft requirement proposals with:",
|
|
11763
11918
|
" - Category (FR, BR, NFR, etc.)",
|
|
@@ -11781,7 +11936,8 @@ function buildMeetingAnalystSubAgent(tier) {
|
|
|
11781
11936
|
"",
|
|
11782
11937
|
"### Steps",
|
|
11783
11938
|
"",
|
|
11784
|
-
"1. Read the drafts from Phase 3 (if they exist) and the extraction
|
|
11939
|
+
"1. Read the drafts from Phase 3 (if they exist) and the extraction",
|
|
11940
|
+
" from Phase 1 at `<meetingsRoot>/insights/{type}/<basename>.md`.",
|
|
11785
11941
|
" Re-read the extraction frontmatter for `meeting_kind` and `areas`,",
|
|
11786
11942
|
" then build the area-gate: the set of `docRoot` sub-folders that",
|
|
11787
11943
|
" are in scope for direct edits on this meeting. Apply the rules in",
|
|
@@ -11810,12 +11966,15 @@ function buildMeetingAnalystSubAgent(tier) {
|
|
|
11810
11966
|
" sprint-plan doc's area is in-scope, or always when no",
|
|
11811
11967
|
" `meetingAreas` are declared); for the kind `review`, mark",
|
|
11812
11968
|
" completed tasks in that same doc.",
|
|
11813
|
-
"7. **Update the extraction file**
|
|
11814
|
-
"
|
|
11815
|
-
"
|
|
11816
|
-
"
|
|
11817
|
-
"
|
|
11818
|
-
"
|
|
11969
|
+
"7. **Update the extraction file** at",
|
|
11970
|
+
" `<meetingsRoot>/insights/{type}/<basename>.md` with a",
|
|
11971
|
+
" `## Downstream Artifacts` section listing every issue and",
|
|
11972
|
+
" document created from this meeting. Note any items that were",
|
|
11973
|
+
" deferred to follow-up issues because of the area gate.",
|
|
11974
|
+
"8. **Update the meeting notes** at",
|
|
11975
|
+
" `<meetingsRoot>/notes/{type}/<basename>.md` with a",
|
|
11976
|
+
" `## Related Issues` section listing all issues created from this",
|
|
11977
|
+
" meeting.",
|
|
11819
11978
|
"9. Comment on the parent extract issue with a summary linking to all",
|
|
11820
11979
|
" created artifacts.",
|
|
11821
11980
|
"10. Commit and push (if any file changes were made), then close the link issue.",
|
|
@@ -11849,21 +12008,27 @@ var processMeetingSkill = {
|
|
|
11849
12008
|
agent: "meeting-analyst",
|
|
11850
12009
|
platforms: { cursor: { exclude: true } },
|
|
11851
12010
|
instructions: [
|
|
11852
|
-
"# Process Meeting
|
|
12011
|
+
"# Process Meeting",
|
|
11853
12012
|
"",
|
|
11854
|
-
"Kick off meeting
|
|
11855
|
-
"
|
|
12013
|
+
"Kick off meeting processing by executing Phase 1 (Extract) and",
|
|
12014
|
+
"creating downstream phase issues for the remaining phases. Inputs",
|
|
12015
|
+
"live in the **sibling-tree layout**: pass any file from",
|
|
12016
|
+
"`<meetingsRoot>/notes/{type}/` or `<meetingsRoot>/transcripts/{type}/`",
|
|
12017
|
+
"(both, notes-only, and transcript-only are all valid input cases).",
|
|
11856
12018
|
"",
|
|
11857
12019
|
"## Usage",
|
|
11858
12020
|
"",
|
|
11859
|
-
"/process-meeting <path-to-transcript>",
|
|
12021
|
+
"/process-meeting <path-to-notes-or-transcript>",
|
|
11860
12022
|
"",
|
|
11861
12023
|
"## Steps",
|
|
11862
12024
|
"",
|
|
11863
|
-
"1.
|
|
11864
|
-
"
|
|
12025
|
+
"1. Identify the meeting's basename and `{internal,external}`",
|
|
12026
|
+
" partition from the provided path, then read **every** sibling",
|
|
12027
|
+
" that exists (notes file and/or transcript file)",
|
|
12028
|
+
"2. Execute Phase 1 (Extract) \u2014 categorize the available content into",
|
|
11865
12029
|
" decisions, requirements, action items, open questions, and more",
|
|
11866
|
-
"3. Write the extraction to
|
|
12030
|
+
"3. Write the extraction to",
|
|
12031
|
+
" `<meetingsRoot>/insights/{type}/<basename>.md`",
|
|
11867
12032
|
"4. Create downstream phase issues using `gh issue create`:",
|
|
11868
12033
|
" - `meeting:notes` issue (always)",
|
|
11869
12034
|
" - `meeting:draft` issue (if requirements or decisions were found)",
|
|
@@ -11873,12 +12038,15 @@ var processMeetingSkill = {
|
|
|
11873
12038
|
"",
|
|
11874
12039
|
"## Input",
|
|
11875
12040
|
"",
|
|
11876
|
-
"Provide a path to a
|
|
11877
|
-
"
|
|
12041
|
+
"Provide a path to a file in either `notes/` or `transcripts/`. The",
|
|
12042
|
+
"agent will look up the sibling automatically via basename match. A",
|
|
12043
|
+
"missing sibling is a normal case (notes-only or transcript-only) \u2014",
|
|
12044
|
+
"the agent handles all three input cases.",
|
|
11878
12045
|
"",
|
|
11879
12046
|
"## Output",
|
|
11880
12047
|
"",
|
|
11881
|
-
"-
|
|
12048
|
+
"- A structured extraction at",
|
|
12049
|
+
" `<meetingsRoot>/insights/{type}/<basename>.md`",
|
|
11882
12050
|
"- Phase issues with `meeting:*` labels for downstream agent sessions",
|
|
11883
12051
|
" to pick up (notes, draft, link)"
|
|
11884
12052
|
].join("\n")
|
|
@@ -11896,11 +12064,30 @@ function buildMeetingAnalysisBundle(tier = AGENT_MODEL.BALANCED) {
|
|
|
11896
12064
|
content: [
|
|
11897
12065
|
"# Meeting Processing Workflow",
|
|
11898
12066
|
"",
|
|
11899
|
-
"Use `/process-meeting <path>` to process a meeting
|
|
12067
|
+
"Use `/process-meeting <path>` to process a meeting through a",
|
|
11900
12068
|
"4-phase pipeline (extract \u2192 notes \u2192 draft \u2192 link). Each phase runs as a",
|
|
11901
12069
|
"separate agent session tracked by a GitHub issue with a `meeting:*` label.",
|
|
11902
12070
|
"See the `meeting-analyst` agent definition for full workflow details.",
|
|
11903
12071
|
"",
|
|
12072
|
+
"Meeting artifacts live in **three parallel trees** rooted at the",
|
|
12073
|
+
"project's meetings root:",
|
|
12074
|
+
"",
|
|
12075
|
+
"- `transcripts/{internal,external}/` \u2014 verbatim transcripts (evidence)",
|
|
12076
|
+
"- `notes/{internal,external}/` \u2014 curated narrative summary",
|
|
12077
|
+
" (input + Phase 2 output)",
|
|
12078
|
+
"- `insights/{internal,external}/` \u2014 structured extraction (Phase 1 output)",
|
|
12079
|
+
"",
|
|
12080
|
+
"The three trees share identical basenames so a meeting's siblings",
|
|
12081
|
+
"are looked up by filename, not by frontmatter cross-references.",
|
|
12082
|
+
"Phase 1 accepts every input case (notes + transcript, notes only,",
|
|
12083
|
+
"or transcript only) and Phase 2 enhances the notes file in place",
|
|
12084
|
+
"rather than authoring it from scratch.",
|
|
12085
|
+
"",
|
|
12086
|
+
"Notes and insights files may carry optional frontmatter fields",
|
|
12087
|
+
"`slug`, `source`, `transcript_available`, and `confidence`",
|
|
12088
|
+
"alongside the existing `meeting_type` and `areas` fields. Missing",
|
|
12089
|
+
"frontmatter is treated as a normal input case \u2014 never fail-loud.",
|
|
12090
|
+
"",
|
|
11904
12091
|
"Meeting notes may declare a `meeting_type` (one of the project's",
|
|
11905
12092
|
"recognized types) and an `areas: [...]` list. The `meeting_type`",
|
|
11906
12093
|
"resolves to a generic kind \u2014 `planning` / `review` / `brainstorm` /",
|