consult-info-session · git:20260907.364596e · 2026-09-07 · sha256 481523777a3d6d8b
consult-info-session git:20260907.364596eA
Immutable. This exact content never changes and is served at /api/v1/blob/481523777a3d6d8b.
---
name: consult-info-session
sheetId: "2.43"
description: >-
Run a client info session (說明會) for a consulting engagement end to end on
the D-14 → D+3 checklist — schedule and invite, prep, run and record, then
produce the client-facing five-section recap — with every artifact filed in
the client's numbered [N] Drive folder and noted on the CRM deal. Re-entrant:
each run shows the checklist with today's position and advances the due
stage. Trigger on /consult-info-session or when Peter says
"幫客戶辦說明會", "導入說明會", "說明會回顧", "安排 kickoff 說明會", "run the
client info session", "prep the rollout session", "write the session recap".
Distinct from guest-lecturer-program (PUBLIC ticketed lecturer events with
contracts, settlement and revenue splits — none of that applies to a free,
internal, contract-less client 說明會), from training-lecture-recap (recaps
for the TRAINING business's students), from consult-launch-comms (DRAFTS the
invite this skill sends through the checklist — drafting lives there, event
ops live here), and from consult-transcriber (D+1 transcription delegates to it).
category: sales-consultant
project: consult-info-session
platform: claude
status: Done
author: Peter Tu
input: "The engagement (deal URL / company name) + session facts (date, audience, 現場/線上) — or just 'advance the checklist' for an in-flight session"
process: "Resolve engagement → position on the D-14→D+3 checklist → execute the due stage (invites/prep/run as drafts + gates) → D+1 delegate transcription to consult-transcriber → fill the five-section recap → recap approval gate → file [Recap] Doc + CRM note → report"
output: "Checklist state per stage, filed session artifacts, and the approved five-section [Recap] Doc in the [N] folder, linked on the deal"
synergy:
- "consult-launch-comms"
- "consult-transcriber"
- "guest-lecturer-program"
- "training-lecture-recap"
---
# Consult Info Session
```bash
npx skills add https://github.com/peter-tu-zynkr/zynkr-skill-builder --skill consult-info-session
```
When an engagement's build goes live, the client's staff hear about it in one
room, once: the 說明會. This skill runs that session end to end on a
**D-14 → D+3 checklist** — invite, prep, sponsor alignment, the session run
and recorded, and a client-facing **five-section recap** approved and filed —
every artifact in the numbered `[N]` Drive folder, breadcrumbed on the deal.
It is **re-entrant by design**: a session spans three weeks, so each invocation
shows the checklist with today's position and executes whatever stage is due —
"run the D-7 prep" jumps straight there.
**Source:** checklist adapted from `guest-lecturer-program` (3.15, author Jane
Liao) · recap structure from `training-lecture-recap` (4.08).
## How this differs from its neighbours
- **guest-lecturer-program** — PUBLIC ticketed lecturer events: contracts,
Accupass, attendance thresholds, settlement, withholding. A client 說明會 is
free, internal and contract-less — this fork keeps only the ops timeline
(compressed to D-14) and drops the rest, including `program-config.md`.
- **training-lecture-recap** — the five-section recap for the TRAINING
business's students. This skill re-aims the same structure at CLIENT STAFF:
Theme becomes "how your daily work changes", Tools becomes logins + help.
- **consult-launch-comms** — DRAFTS the canonical 說明會 invite (the `[Comms]`
Doc); this skill's checklist SENDS it (as drafts) and runs everything around it.
- **consult-transcriber** — owns transcription mechanics; the D+1 stage delegates to it wholesale.
## Fixed facts (don't re-derive these)
- **Google account** for all Gmail/Drive/Docs/Calendar tools: `peter_tu@zynkr.ai`
- **Drive parent folder** (`[2.2] 業務與顧問部門:專案`, home of the numbered `[N]` folders): `1hkXPX7OXPFOU0BcloPbJSFp8O0zArM8t` — orientation only; this skill never creates anything in it
- **CRM deal URL** for the report/backlink: `https://platform.zynkr.ai/deals/{deal_id}`
## Hard rules
1. **Never create the `[N]` folder.** No folder → STOP and route to
/consult-intake (inbound lead) or /consult-project-specialist (meeting debrief).
2. **Client-facing email is ALWAYS a Gmail draft** —
`mcp__google-workspace__draft_gmail_message` for invites, sponsor mails,
D-1 confirmations, and the recap send. Never send.
3. **No recording without notice.** The D-1 confirmation must carry the
告知錄影 line; if it never went out, D-0 runs unrecorded and the recap
leans on live notes.
4. **The recap goes nowhere before the step-6 gate** — no Doc, no draft, no
pasted preview to anyone at the client, until Peter approves the full text.
---
## Workflow
### 1 · Resolve the engagement and the session facts
**Deal** — from a `…/deals/{id}` URL or a company name. Preferred:
`mcp__zynkr__get_deal` / `mcp__zynkr__list_deals`.
**Folder** — the deal's `notes` carry a `專案資料夾:<url>` backlink (written by
consult-intake / consult-project-specialist); extract the `[N]` folder id. If
the line is missing, list the parent (`mcp__google-workspace__list_drive_items`,
folder_id `1hkXPX7OXPFOU0BcloPbJSFp8O0zArM8t`) and match `[N] Company(…)` by
name. **No folder at all → STOP** (hard rule 1).
**Session facts** — date, audience (affected teams or 全員), mode (現場/線上),
scope (what's being introduced — usually the engagement's live deliverables,
per the deal notes). Ask one question only for what can't be inferred.
**Invite text** — check the `[N]` folder for a `[Comms]` 說明會邀請 Doc
(`mcp__google-workspace__list_docs_in_folder`) — consult-launch-comms files it
there; if present, that text IS the invite. If absent, draft inline following
its pattern (why this session · what changes for you · when/where · what to
bring) and note the canonical drafting path: this skill's install command with
`--skill` swapped to `consult-launch-comms`.
### 2 · Position on the checklist
Read `./references/session-checklist.md` and place today against the session
date. Reconstruct stage state from artifacts, not memory (invite draft in
Gmail? calendar event? transcript in the folder?) and render the full
D-14 → D+3 checklist with done / **due** / upcoming markers. Each run advances
what's due; Peter saying "run the D-7 prep" overrides the derived position.
### 3 · Execute the due stage
Work the due stage's table from the checklist. Stage-specific mechanics:
- **D-14** — invite as a Gmail DRAFT (default: one draft to the sponsor for
internal forwarding). Calendar event via
`mcp__google-workspace__manage_event` — **ask first when external attendees
are involved** (the event invite reaches client mailboxes the moment it's
created); Meet link included for 線上.
- **D-7** — materials pack: demo 流程 (walked on the client's own data),
常見問題, 上手三步; sponsor 對稿 mail as a DRAFT.
- **D-1** — 設備測試 per the checklist; the confirmation DRAFT **must** carry
the 告知錄影 line (hard rule 3).
- **D-0** — 簽到 / 錄影 / demo / QA 收集. Capture live questions verbatim;
mark unanswered ones 追蹤中 — they feed step 5.
### 4 · D+1 — delegate transcription to /consult-transcriber
Check that `/consult-transcriber` is installed. If missing, **STOP** and print
its install snippet — this skill's one-line command with the `--skill`
argument swapped to `consult-transcriber` — never inline transcription
mechanics here. Invoke it on the session recording: it produces the clean
zh-TW transcript, files it into the `[N]` folder, and links it on the deal.
### 5 · Fill the five-section recap
From the transcript + the D-0 QA list, fill
`./references/session-recap-template.md` (delete its placeholder-guide
comment): 摘要 / 主題 / Q&A / 工具 / 行動呼籲 — aimed at client staff, zh-TW.
Detail comes only from the transcript and QA list; unanswered questions stay
listed, marked 追蹤中. No transcript → build from live notes and say so.
### 6 · GATE — recap approval
Present the **full recap text** and wait. Peter approves or adjusts; re-gate
only if section content changed materially. Only after approval (hard rule 4):
1. Create the Doc via the reliable two-step (creating a Doc directly in a
folder via `create_drive_file` returns HTTP 400):
```
mcp__google-workspace__create_doc(
user_google_email = "peter_tu@zynkr.ai",
title = "[Recap] {{COMPANY}} — 說明會 {{DATE}}",
content = "<approved recap>"
)
mcp__google-workspace__update_drive_file(
user_google_email = "peter_tu@zynkr.ai",
file_id = "<doc id>",
add_parents = "<the [N] folder id from step 1>"
)
```
2. On request only: a send-to-attendees Gmail DRAFT — never sent (hard rule 2).
### 7 · CRM note — log the session on the deal
Preferred: `mcp__zynkr__update_deal`, appending to the existing notes (read
first, append, write back — never overwrite):
```
說明會({{DATE}}·{{MODE}})已舉行 — 出席 {{COUNT}} 人 · 追蹤中問題 {{OPEN_COUNT}} 個
回顧:[Recap] {{COMPANY}} — 說明會 {{DATE}}(<doc url>)
```
`mcp__zynkr__update_deal` REPLACES `notes` wholesale, so append in three steps:
1. `mcp__zynkr__get_deal(id="<deal_id>")` — read the current `notes`
2. build the new value: the existing notes, then a blank line, then the block below
3. `mcp__zynkr__update_deal(id="<deal_id>", notes="<combined>", confirm=true)`
Call it once without `confirm` to preview, then again with `confirm=true`. Never
send `notes` without the existing text in front of it — the field is overwritten,
not appended, and skipping the read loses every earlier backlink.
Escape single quotes by doubling them (`O'Brien` → `O''Brien`).
### 8 · Report + checklist state
```
說明會 checklist:宏宇精密 — 2026-08-20(線上)
| 階段 | 狀態 |
|------|------|
| D-14 邀請 | ✅ 邀請草稿已出(sponsor 轉發)· 名單確認 · Meet 連結已入日曆 |
| D-7 準備 | ✅ 材料包 · sponsor 對稿草稿 |
| D-1 行前 | ✅ 設備測試 · 確認信草稿(含告知錄影) |
| D-0 執行 | ✅ 簽到 12 人 · 錄影 · QA 收集 7 題(2 題追蹤中) |
| D+1 整理 | ✅ 逐字稿(/consult-transcriber)· 回顧初稿 |
| D+3 收尾 | ⏳ [Recap] Doc 已建 · 寄送草稿待 Peter · CRM 已記 |
```
Below the table: what this run advanced, the next due stage and its date, and
any drafts sitting in Gmail waiting on Peter.
---
## Why it's built this way
- **A slimmed timeline, not a new one.** The D-30 → D+3 lecturer SOP earns its
length from tickets, contracts and go/no-go thresholds; a client 說明會 has
none, so the checklist starts at D-14 — and dropping that machinery also
removed the source's out-of-repo `program-config.md`: no config file here.
- **Re-entrant over one-shot.** The work arrives in bursts across three weeks;
a stage tracker derived from artifacts (drafts, events, filed docs) survives
between sessions without a state file that could drift.
- **The recap gates because it's client-visible.** Same reasoning as
consult-brd-writer's outline gate: anything client staff will read gets
Peter's eyes while a wrong sentence is still cheap.
- **Five sections survive the retarget.** The training-lecture-recap structure
forces an answer to "so what do I do now" — only the audience changed, so
each section's brief changed, not the skeleton.
- **Transcription is delegated, not copied.** consult-transcriber already
files and CRM-links engagement transcripts; a second copy here would drift.
## Inference defaults (Peter overrides by just saying so)
- **Checklist position** → derived from session date + artifacts; an explicit
"run D-7" always wins.
- **Invite text** → the `[Comms]` Doc when one exists; inline pattern-draft otherwise.
- **Invite routing** → one draft to the sponsor for internal forwarding;
per-attendee drafts only on request.
- **Mode** → 線上 (Google Meet) unless Peter says 現場.
- **Recap language** → zh-TW; English tool names kept as-is.
- **Session scope** → the engagement's live deliverables per the deal notes.
- **Send-to-attendees recap draft** → OFF; offered after the step-6 gate only.
## Provenance
Forked from `guest-lecturer-program` (3.15) and `training-lecture-recap`
(4.08) @ e35a1f57 (2026-08-03) — consult adaptation; diverges by design.
Re-sync check: `git log --oneline e35a1f57..origin/main --
skills/3-operations/guest-lecturer-program/ skills/4-training/training-lecture-recap/`
→ review hits → port or waive with a dated line here.
## Reference files
- `./references/session-checklist.md` — the D-14 → D+3 checklist, one checkbox
table per stage; step 2 renders it with today's position, step 3 executes it.
- `./references/session-recap-template.md` — the five-section recap re-aimed
at client staff (fill every `{{PLACEHOLDER}}`, then delete its
placeholder-guide comment).
## Limitations
- Runs the ops timeline only: it neither writes the canonical invite
(consult-launch-comms) nor transcribes (consult-transcriber must be
installed for D+1 — it stops rather than improvise).
- Free internal sessions only — anything ticketed, paid, or with an external
lecturer under contract is guest-lecturer-program's territory.
- One session per run; a multi-site rollout with several 說明會 is one run each.
- Stage state is derived from artifacts; a session organized entirely
off-tooling (no drafts, no calendar event) needs Peter to state the stage.
- Recap detail comes only from the transcript + collected QA — thin sources
yield a thin recap, flagged as such, never padded.