meeting-analysis
Turn a zip or directory of meeting sources (recording, vendor transcript, notes export) into a template-conformant analysis doc.
Skill by sergeiwallace
Chalk Labs
Need help deploying meeting-analysis?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/sergeiwallace-meeting-analysis
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: documents, writing, productivity
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/meeting-analysis
What's inside
- Skill name
meeting-analysis- Description
- Turn a zip or directory of meeting sources (recording, vendor transcript, notes export) into a template-conformant analysis doc. Cross-checks the vendor transcript against an independent local ASR pass to recover mangled product names, reads screen-share frames natively, and records what did not work. Use for "analyze this meeting" or "write up the standup".
- License
- Apache-2.0
- Instructions
- 300 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
- Instructions read files in your home folder (~/.ssh, ~/.aws…)
Files (12)
- SKILL.md
- README.md · scripts/
- check_deps.sh · scripts/
- frame_dedup.py · scripts/
- install_deps.sh · scripts/
- local_asr.py · scripts/
- meeting_resolve.py · scripts/
- phash_distribution.py · scripts/
- probe_terms.py · scripts/
- recording_integrity.py · scripts/
- ruff.toml · scripts/
- transcript_diff.py · scripts/
SKILL.md (first lines)
# meeting-analysis
Turn whatever subset of meeting artifacts exists into a **citation-bearing analysis doc** that a
reader can audit against its sources.
**Usage:**
- `/meeting-analysis <zip-or-directory> [--author NAME] [--date YYYY-MM-DD] [--series NAME] [--kind recording-analysis|standup-update]`
- `/meeting-analysis --retrieve <meeting-name> [--date YYYY-MM-DD] [--time HH:MM]`
- `/meeting-analysis --retrieve --chat "<chat title>" --date YYYY-MM-DD [--time HH:MM]`
## Step 0, only with --retrieve: land the sources first
`--retrieve` is optional. It fetches the meeting's artefacts with the `teams` skill's `meeting`
command from this same repository, then continues at Step 1 with the directory it landed. Without
the `teams` skill, or for a meeting held on another platform, export the sources yourself and
start at Step 1. The command, its named-meetings config and its rules for picking an instance are
in the `teams` skill's SKILL.md; the short form:
```bash
TEAMS_DIR="$(dirname "$(realpath "${CLAUDE_SKILL_DIR}")")/teams"
uv run --script "$TEAMS_DIR/scripts/meeting.py" <meeting-name> [--date D] [--time HH:MM] --json
```
A meeting with no config entry is landed ad hoc with `--chat "<exact chat title>" --date
YYYY-MM-DD` and goes into its own `docs/meetings/<slug>-<date>/` directory
([Step 2](#step-2-the-directory-shape-is-a-convention-not-a-preference)).
**Check the sign-in first, with a read that costs nothing** (the teams skill's cheapest read, for
example a chat lookup). If it answers, carry on. If it is refused for want of a sign-in, follow the
teams skill's own sign-in section, and ask the user only for the step that needs a person. Re-run
the read to confirm before continuing.
1. Build the arguments from what the user gave. Explicit options pass through unchanged. From
a prompt, map a named meeting to its config name (`meeting.py --list` prints them) and a day
to `--date`; "today" is today's date in the config's timezone, and no date means the latest
instance. **If the prompt names neither a configured meeting nor a chat with a date, ask the
user which meeting and which day before running anything.** Never guess a chat.
2. Read the JSON object it prints. `complete: false` means an artefact is missing; `missing`
says which. When the reason is the AI Summary, the output also printed an `AI Summary request:`
line and an `AI Summary inbox:` line. Show both to the user, stop, and continue once the file is
at the inbox path and the command has been re-run; an analysis written over notes without
their AI Summary is the wrong document.
3. Treat exit 2 as a question for the user and do not retry. It means the name is unknown, the day had
several instances and no `--time` picked one, or the output repository could not be found.
Relay its message, which lists the choices.
4. Hand the result to Step 1: `--repo-root` is the JSON's `repo_path`; `--sources` is its
`data_dir`; `--date`, `--author` and `--series` are its fields. When `ad_hoc` is false,
`--meeting-root` is the parent of its `meeting_dir` and `--slug` is passed only when the JSON's
`slug` is not null. When `ad_hoc` is true, pass `--meeting-dir <meeting_dir>` (relative to the
repo root) and `--slug <slug>`: the doc is `<slug>-<date>/<slug>-<date>.md`. The analysis goes
where the meeting's config says, which can be a different repository from the one you are in;
in a git worktree, `meeting.py` takes `--repo-path <your worktree for that repository>` so
nothing lands in a main checkout.
5. The meeting's chat is a source too. Read it before the transcript: a link, a decision or an
action item is often only there. A transport that lands it writes `data/<title> <date> chat.md`
(every message of the day with sender and local time, oldest first, reply quotes as quotes of
the original message with its sender, links with their text and exact URL) and copies each
attached file into `data/` under its own name. The `teams` skill's `land` does not write that
file. Read the day's messages with its `thread --conv ID --date D --json` command (id, local
time and sender per message, with an excerpt) and `messages --conv ID` (the full text), save
them as `data/<title> <date> chat.md` in that shape, and say in provenance how the chat was read.
The deterministic parts (which doc kind, where it goes, what each source is, whether one is already
there) are done by `meeting_resolve.py` so they are not re-derived by hand each meeting. The
judgment parts (reading frames, settling a mishearing, deciding what the meeting actually settled)
are yours. Do not hand the judgment to the script or the bookkeeping to yourself.
**Every command below is written against `${CLAUDE_SKILL_DIR}`, and that is not cosmetic.** This
skill runs from a symlinked skills farm, from a repo-local `.claude/skills`, or from a vendored
copy inside a consumer repo, so a repo-relative path such as `scripts/meeting_resolve.py` resolves
to the wrong file or to nothing at all depending on which copy is active and what the working
directory is. Use `${CLAUDE_SKILL_DIR}` for the scripts and the repo's own paths for the content.
## Which copy am I?
There can be two copies of this unit on one machine: the canonical one in the skill repo and a
vendored copy inside a repo that carries meeting docs of its own.
- **The scripts are shared; the SKILL.md need not be.** The vendored unit is `scripts/**`, the
bundled templates under `assets/`, and the shared `skill-cli-foundation` package. A consumer may
write its own SKILL.md to carry its organisation's meetings, transport and worked examples.
- **Templates are resolved from the CURRENT repo first.** `meeting_resolve.py plan` prefers the
working repo's committed `docs/meetings/TEMPLATE.md` (or `docs/meetings/standups/TEMPLATE.md`),
because that is the copy a teammate reading the repo on the web will open and the copy the doc's
relative link points at. Only when the current repo has none does it fall back to the copy this
skill bundles under `${CLAUDE_SKILL_DIR}/assets/`, and it says which source it used.
- **When both exist and differ, `plan` reports `drifted: true`.** Say so in your report. A repo is
allowed its own committed copy; a divergence nobody has noticed is how the two versions stop
being the same document.
- **A vendored copy is verifiable.** A consumer repo carries `skills/vendor-lock.json` recording the
source commit and a sha256 per file. Run
`uv run --script "${CLAUDE_SKILL_DIR}/scripts/meeting_resolve.py" vendor-check` to confirm the copy
is intact before trusting it; in the canonical checkout there is no lock and the command says so
and exits 0.
## Pick the doc kind FIRST, and never bend one template into the other
Two kinds share the meetings tree. They have different sources, different purposes, and **their own
templates**. Conflating them is the known failure in this workflow.
| | Recording analysis | Standup update |
|---|---|---|
| Written | After the meeting | Before it |
| From | The recording, vendor transcript, notes export | Our own repo: git history, the task store, audit output |
| Answers | What the meeting settled, and what it did not | What we did since last time, and what is actually true now |
| Template | `docs/meetings/TEMPLATE.md` | `docs/meetings/standups/TEMPLATE.md` |
| `template_version` | `meeting-analysis-1.2.0` | `standup-update-2.3.0` |
| `meeting_type` | `standup` / `review` / `workshop` | `standup-update` |
| Slug | `<series>-standup-analysis-<date>` | `<series>-standup-update-<date>` |
**The discriminator is whether there is a recording or transcript to analyze.** The
recording-analysis template presupposes one: "What the recording shows that the transcript does
not", "Moments the frames do NOT corroborate" and "Terminology and transcription corrections" have
no meaning without it. **Filling those with "not applicable" means you picked the wrong kind.** A
standup update is instead written from our own repository, which is why its discipline is a
per-claim **evidence tier** (executed / read / asserted / blocked) rather than cross-source
checking: the tier is a required field, because the difference between a green unit suite and a
live verified path is one this workflow has gotten wrong before.From sergeiwallace/skills, Apache-2.0.
More from sergeiwallace/skills
- 0.529score
graphic
sergeiwallace
Provider-neutral pipeline for small graphic assets (icons, favicons, simple marks) — inspect/brief, route to reuse or constrained SVG primitives…
SkillBFreshness: BClaude Code +9 - 0.529score
research-doc
sergeiwallace
Write a self-contained, template-conformant research document with Chain-of-Verification grounding, adversarial review, live citation validation, a provenance…
SkillBFreshness: BClaude Code +9 - 0.526score
explain
sergeiwallace
Build a grounded mental model of a design or plan document, issue, code target, or technical concept.
SkillBFreshness: BClaude Code +9 - 0.526score
report-feedback
sergeiwallace
Prepare privacy-scoped bug reports or feature requests for public GitHub and authenticated Claude Code feedback, with an explicit human gate before any GitHub…
SkillBFreshness: BClaude Code +9 - 0.526score
sync-git
sergeiwallace
Safely synchronize safe uncommitted work and local/remote branch state across selected repositories and worktrees; discard and gitignore recommendations…
SkillBFreshness: BClaude Code +9 - 0.523score
presentation
sergeiwallace
Author a local, review-gated Slidev presentation from a normalized event brief and optional research.
SkillBFreshness: BClaude Code +9 - 0.521score
summarize
sergeiwallace
Faithfully compress caller-selected documents, issues, code, topic packets, or explicit session batches for a declared reader and purpose.
SkillBFreshness: BClaude Code +9 - 0.518score
jira
sergeiwallace
Jira operations — create issues, search, update, link, comment, sprint overview
SkillBFreshness: BClaude Code +9 - 0.518score
spec
sergeiwallace
Present an implementation plan for review before making changes
SkillBFreshness: BClaude Code +9 - 0.510score
clean-task-panel
sergeiwallace
Remove all completed tasks from the CC TUI task panel.
SkillBFreshness: BClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Sep 10, 2026 (2 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- Apache-2.0
- Repository
- github.com/sergeiwallace/skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from sergeiwallace
- 0.529score
graphic
sergeiwallace
Provider-neutral pipeline for small graphic assets (icons, favicons, simple marks) — inspect/brief, route to reuse or constrained SVG primitives…
SkillBFreshness: BClaude Code +9 - 0.529score
research-doc
sergeiwallace
Write a self-contained, template-conformant research document with Chain-of-Verification grounding, adversarial review, live citation validation, a provenance…
SkillBFreshness: BClaude Code +9 - 0.526score
explain
sergeiwallace
Build a grounded mental model of a design or plan document, issue, code target, or technical concept.
SkillBFreshness: BClaude Code +9 - 0.526score
report-feedback
sergeiwallace
Prepare privacy-scoped bug reports or feature requests for public GitHub and authenticated Claude Code feedback, with an explicit human gate before any GitHub…
SkillBFreshness: BClaude Code +9 - 0.526score
sync-git
sergeiwallace
Safely synchronize safe uncommitted work and local/remote branch state across selected repositories and worktrees; discard and gitignore recommendations…
SkillBFreshness: BClaude Code +9 - 0.523score
presentation
sergeiwallace
Author a local, review-gated Slidev presentation from a normalized event brief and optional research.
SkillBFreshness: BClaude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get meeting-analysis running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
meeting-analysis skill. Agent Mart. https://agentmart.dev/skills/sergeiwallace-meeting-analysis (last updated 2026-10-24)