meeting-analysis
Turn a zip or directory of meeting sources (recording, vendor transcript, notes export) into a template-conformant analysis doc.
Skill by sergeiwallace
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]`
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.
- **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 inside
this skill's own repo, 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.1.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.
If a consumer has renamed either workflow, search its history using both the current and historical
spellings before assuming a document is absent. The public templates use only the names above.
## Step 1: preflight the sources, and let the script decide the bookkeeping
```bash
# A zip first lands in the meeting's data/ dir under its VENDOR filenames.
uv run --script "${CLAUDE_SKILL_DIR}/scripts/meeting_resolve.py" extract \
"<archive.zip>" "docs/meetings/standups/<author>/<date>/data"
uv run --script "${CLAUDE_SKILL_DIR}/scripts/meeting_resolve.py" plan \
--repo-root . --sources "docs/meetings/standups/<author>/<date>/data" \
--author "<Name>" --date <YYYY-MM-DD> --series <series> --json
```
`plan` reports the kind and why, the resolved template and where it came from, every target path,
each source's role, and any source it cannot use. Read its output before writing anything.
`--author`, `--series` and the meeting-type group also come from `MEETING_ANALYSIS_*` environment
variables or from `~/.config/meeting-analysis/config.toml`, so a regular author sets them once
rather than per run; anything passed on the command line wins.
**The refusal it can return means stop rather than work around.** `CONFLICT: ... already exists`
(exit 2): a committed doc is **never renamed or duplicated** -- it is cited from design docs,
audits, other analyses and pull-request descriptions, several of them by line number. Refine the
existing doc in place, or fix the date or author you passed. Never invent a free filename.
## Step 2: the directory shape is a convention, not a preference
```text
docs/meetings/<meeting-type>/<author>/<YYYY-MM-DD>/
<slug>-<YYYY-MM-DD>.md the deliverable, at the date directory's root
data/ sources exactly as received from the vendor
derived/ everything generated from them
frames/ extracted video frames (git-ignored)
```
- **The `<author>` segment is kebab-case and is not optional.** It exists so two people can write
for the same meeting on the same day without contending for one filename.
- **The date appears twice on purpose.** The directory needs it so a series sorts and so the doc
sits beside its own `data/` and `derived/`. The filename needs it because the filename is what
survives leaving the directory: in an editor tab, a link, a PDF export or an attachment, the
parent directory is no longer visible, and a bare `standup.md` is ambiguous across a daily series.
- **Vendor filenames are never renamed**, so they stay traceable to the artifact received.
### Source-quoting hazard: these filenames WILL break an unquoted command
Example vendor filenames:
```text
[Team Sync] Weekly.vtt
[Team Sync] Weekly 2026-07-30.pdf
```
They contain **spaces and square brackets**, and brackets are glob metacharacters, so `[Team Sync]`
is read by the shell as a character class. Consequences:
- **Always double-quote every path**, including in `ffmpeg`, `pdftotext` and the analysis scripts:
`ffmpeg -i "data/[Team Sync] Weekly.mp4" ...`.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 (1 month 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
Cite this page
meeting-analysis skill. Agent Mart. https://agentmart.dev/skills/sergeiwallace-meeting-analysis (last updated 2026-10-24)