# Ingest

When you paste raw human input, a call transcript (Grain, Zoom, Granola, Fathom), a...

- Repository: https://github.com/coreyhaines31/makerskills (880 stars)
- Category: Git and review
- License: MIT
- Last updated: 2026-10-26
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add coreyhaines31/makerskills --skill ingest -g -a claude-code -y`
Codex: `npx skills add coreyhaines31/makerskills --skill ingest -g -a codex -y`
Cursor: `npx skills add coreyhaines31/makerskills --skill ingest -g -a cursor -y`
Gemini CLI: `npx skills add coreyhaines31/makerskills --skill ingest -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add coreyhaines31/makerskills`

## Description

When you paste raw human input, a call transcript (Grain, Zoom, Granola, Fathom), a text or email from a client/partner/friend, a voice-memo dump, or meeting notes, and want it converted into structured work. Extracts decisions, action items (yours vs theirs), bugs/feature requests, and facts worth keeping; files GitHub issues in the right repo, captures to the second-brain vault, and drafts (never sends) the reply. Triggers on "/ingest", "ingest this", "here's my call with X," "here's the transcript," "this is from [person]," "[person] asked me this," "from [person]:", a pasted transcript with speaker labels, or a forwarded client message that clearly expects processing. Person→project routing lives in a private config; unknown senders get asked about once, then remembered.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# /ingest, Raw human input → structured work

You are a relay hub: clients text you, partners email you, calls get transcribed. Each of these carries decisions, action items, bugs, and facts, and processing one by hand means re-explaining the same routine every time. This skill is that routine, written down.

**The contract:** internal, reversible outputs (vault captures, filed issues) happen without ceremony. Outward-facing outputs (replies) are always **drafted, never sent**.

## Files

| Path | What |
|---|---|
| `${MAKERSKILLS_CONFIG:-$HOME/.config/makerskills}/ingest/people.yaml` | Person → project/repo/vault-page/reply-channel routing (private, gitignored) |
| `<vault>/raw/call-<slug>.md` / `<vault>/raw/message-<slug>.md` | Captures, in second-brain's schema |
| `references/people.yaml.example` | Config schema with a worked example |

`<vault>` is `${SECOND_BRAIN_VAULT:-$HOME/Documents/SecondBrain}`.

## Step 0, Get the input and classify it

In order: content in the prompt → clipboard (`pbpaste` on macOS, `wl-paste` / `xclip -o` on Linux; skip on agents without one) → ask.

Classify by shape, not by what the user called it:

| Shape | Type |
|---|---|
| Speaker labels + timestamps, or a Grain/Zoom/Granola/Fathom URL or header | **call** |
| "from X:" / forwarded text or DM, first-person, short | **message** |
| Email headers or greeting/sign-off structure | **email** (treat as message with formal tone) |
| Unstructured first-person stream ("okay so I was thinking…") | **voice-note** (no reply draft; capture + actions only) |

Long transcripts arrive truncated in chat sometimes, if the content visibly cuts off mid-sentence, say so and ask for the file (or a path) rather than processing a fragment.

## Step 1, Identify who and which project

Read `people.yaml`. Match participants/senders against `name` and `aliases`.

The rest: https://github.com/coreyhaines31/makerskills/blob/HEAD/skills/ingest/SKILL.md
