Ops Inbox
davepoon/buildwithclaude
Full inbox management across all channels — WhatsApp (wacli), Email (Gmail MCP), Slack (MCP), Telegram (user-auth MCP), Discord (webhook + REST read), Notion (MCP — comments, mentions, assigned…
Turns a week of Claap-recorded sales calls into action items and focus blocks on a Notion Kanban, delivered with a Slack summary.
$ npx skills add Othmane-Khadri/YALC-the-GTM-operating-system --skill claap-weekly-recap -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Othmane-Khadri/YALC-the-GTM-operating-system claap-weekly-recap --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Othmane-Khadri/YALC-the-GTM-operating-system.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/claap-weekly-recap .claude/skills/claap-weekly-recap && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "claap-weekly-recap" agent skill from https://github.com/Othmane-Khadri/YALC-the-GTM-operating-system/tree/main/.claude/skills/claap-weekly-recap into .claude/skills/claap-weekly-recap/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "claap-weekly-recap", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Othmane-Khadri/YALC-the-GTM-operating-system/tree/main/.claude/skills/claap-weekly-recapType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Othmane-Khadri/YALC-the-GTM-operating-system --skill claap-weekly-recap -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Othmane-Khadri/YALC-the-GTM-operating-system claap-weekly-recap --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Othmane-Khadri/YALC-the-GTM-operating-system.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/claap-weekly-recap .agents/skills/claap-weekly-recap && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "claap-weekly-recap" agent skill from https://github.com/Othmane-Khadri/YALC-the-GTM-operating-system/tree/main/.claude/skills/claap-weekly-recap into .agents/skills/claap-weekly-recap/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "claap-weekly-recap", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Othmane-Khadri/YALC-the-GTM-operating-system --skill claap-weekly-recap -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Othmane-Khadri/YALC-the-GTM-operating-system claap-weekly-recap --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Othmane-Khadri/YALC-the-GTM-operating-system.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/claap-weekly-recap .cursor/skills/claap-weekly-recap && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "claap-weekly-recap" agent skill from https://github.com/Othmane-Khadri/YALC-the-GTM-operating-system/tree/main/.claude/skills/claap-weekly-recap into .cursor/skills/claap-weekly-recap/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "claap-weekly-recap", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Othmane-Khadri/YALC-the-GTM-operating-system.git --path .claude/skills/claap-weekly-recap--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Othmane-Khadri/YALC-the-GTM-operating-system --skill claap-weekly-recap -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Othmane-Khadri/YALC-the-GTM-operating-system claap-weekly-recap --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Othmane-Khadri/YALC-the-GTM-operating-system.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/claap-weekly-recap .gemini/skills/claap-weekly-recap && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "claap-weekly-recap" agent skill from https://github.com/Othmane-Khadri/YALC-the-GTM-operating-system/tree/main/.claude/skills/claap-weekly-recap into .gemini/skills/claap-weekly-recap/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "claap-weekly-recap", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Othmane-Khadri/YALC-the-GTM-operating-system claap-weekly-recapInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Othmane-Khadri/YALC-the-GTM-operating-system --skill claap-weekly-recap -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Othmane-Khadri/YALC-the-GTM-operating-system.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/claap-weekly-recap .github/skills/claap-weekly-recap && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "claap-weekly-recap" agent skill from https://github.com/Othmane-Khadri/YALC-the-GTM-operating-system/tree/main/.claude/skills/claap-weekly-recap into .github/skills/claap-weekly-recap/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "claap-weekly-recap", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Othmane-Khadri/YALC-the-GTM-operating-system --skill claap-weekly-recap -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Othmane-Khadri/YALC-the-GTM-operating-system claap-weekly-recap --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Othmane-Khadri/YALC-the-GTM-operating-system.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/claap-weekly-recap .opencode/skills/claap-weekly-recap && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "claap-weekly-recap" agent skill from https://github.com/Othmane-Khadri/YALC-the-GTM-operating-system/tree/main/.claude/skills/claap-weekly-recap into .opencode/skills/claap-weekly-recap/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "claap-weekly-recap", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
claap-weekly-recapTurns a week of Claap-recorded sales calls into action items and focus blocks on a Notion Kanban, delivered with a Slack summary.
Claap Weekly Recap is an agent skill from Othmane-Khadri/YALC-the-GTM-operating-system. Turns a week of Claap-recorded sales calls into action items and focus blocks on a Notion Kanban, delivered with a Slack summary. Use when the user says 'weekly call recap', 'turn my calls into action items', 'Sunday recap from Claap', 'what should I focus on next week based on my calls', 'pull this week's deal next steps from Claap', or schedules a recurring digest of recorded conversations. Side-effecting — reads Claap via MCP, writes Notion cards, sends a Slack DM. On first run with no config it enters an…
Its SKILL.md is about 5.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 12 other files, including scripts and reference files (for example `README.md`, `references/notion-db-schema.md` and `references/sample-output.md`).
It sits in Productivity & Automation, covering Task management and Meeting notes and agendas. It works with Slack, Notion and Model Context Protocol. The repository describes itself as: YALC 1.0, the open-source Clay alternative. MIT, CLI-first, self-hosted, runs in Claude Code. Yalc today is an intelligent orchestration layer that runs pre configured GTM agents…. The licence is MIT.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 5686d1f. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 4 files in scripts/, which the agent can run.
Shell commands in SKILL.md call:
jqcurlclaudenpxFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
notion.soapi.claap.iohooks.slack.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
CLAAP_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Claap Weekly Recap loads about 5.4k tokens when it runs, and up to ~12k if it reads all its reference files. Until then it costs about 158 tokens; SKILL.md has 2,446 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from Othmane-Khadri/YALC-the-GTM-operating-system at commit 5686d1f, republished under its MIT licence (© Othmane-Khadri). 2,446 words, ~5,401 tokens.
.claude/skills/claap-weekly-recap/SKILL.md (or your agent's skills folder). This skill also uses 10 other files; get the full folder from GitHub.Reads every Claap recording from the last N days, extracts per-deal action items with verbatim quotes and Claap timestamp links, synthesizes weekly focus blocks, writes them to a Notion Kanban DB, and delivers a Slack summary. Designed to run unattended on a Sunday morning schedule after the user runs it once interactively to seed config.
You produce action items and focus blocks. You do NOT modify the underlying call recordings, edit existing Notion cards beyond the idempotency guard, or write to any database other than the GTM Action Items DB recorded in config.
NOT this skill:
The skill is driven by .claude/skills/claap-weekly-recap/.claap-config.json,
created on first run by SETUP MODE. Secrets never live in this file. Only
structural choices and non-sensitive IDs:
{
"version": 1,
"claap_tool_prefix": "mcp__claap__",
"gtm_action_items_data_source_id": "collection://<YOUR_DATA_SOURCE_UUID>",
"notion_db_url": "https://www.notion.so/<workspace>/<db-id>",
"slack_delivery": {
"mode": "mcp_user",
"target": "<U_YOUR_SLACK_ID>"
},
"lookback_days": 7,
"min_call_minutes": 3,
"extraction_signals": [
"objection",
"competitor_mention",
"feature_request",
"action_item",
"next_step_promised"
],
"kanban_statuses": ["Backlog", "Focus This Week", "Done", "Archived"],
"extra_properties": [],
"prior_recap_history_path": "~/.gtm-os/state/claap-recap-history.md",
"model": "claude-sonnet-4-6",
"max_turns": 100
}Allowed claap_tool_prefix values:
mcp__claap__ (self-hosted / project-scoped Claap MCP)mcp__claude_ai_Claap__ (claude.ai connector)Allowed slack_delivery.mode values:
mcp_user — target is a Slack user ID like <U_YOUR_SLACK_ID>mcp_channel — target is a channel ID like <C_YOUR_CHANNEL_ID>webhook — target is the literal string env:SLACK_WEBHOOK_URL. The
webhook URL itself is never written to config; only the env-var name.Secrets (must live in env or shell rc, never in config.json):
CLAAP_API_KEY — required at MCP launch timeSLACK_WEBHOOK_URL — only required if slack_delivery.mode == "webhook"Enter SETUP MODE if either of these is true:
.claude/skills/claap-weekly-recap/.claap-config.json
does not exist, ORgtm_action_items_data_source_id) cannot
be resolved AND no config file exists.If config exists but is incomplete (e.g. version bump added a field), prompt only for the missing pieces — don't restart from step 1.
Walk the user through these steps one question at a time. Wait for an answer before moving on. Confirm each persisted choice.
1. Resolve the Claap MCP tool prefix.
Call ListMcpResourcesTool. Look for tool names starting with either:
mcp__claap__ (e.g. mcp__claap__list_workspaces)mcp__claude_ai_Claap__ (e.g. mcp__claude_ai_Claap__list_workspaces)If exactly one is present, record it as claap_tool_prefix and confirm with
the user. If both are present, ask which to use. If neither is present,
print the .mcp.json snippet below and offer to write it to
<workspace>/.mcp.json (creating or merging into mcpServers):
{
"mcpServers": {
"claap": {
"url": "https://api.claap.io/mcp",
"type": "http",
"headers": {
"Authorization": "Bearer ${CLAAP_API_KEY}"
}
}
}
}If the user declines, halt SETUP MODE with: "Add the Claap MCP to your config and restart Claude Code, then re-run me." If the user accepts, write the snippet, then halt with: "Restart Claude Code so the MCP loads, then re-run me — I'll pick up where we left off."
2. Confirm CLAAP_API_KEY is in env.
Run printenv CLAAP_API_KEY via Bash and read the exit code only (do
not echo the value into chat under any circumstance). If it's set, say
"CLAAP_API_KEY detected — moving on." and continue.
If it's missing, ask the user to paste their key. Read it into a local variable but never repeat it back in chat. Offer two persistence paths:
export CLAAP_API_KEY=<masked> to ~/.zshenv (zsh) or
~/.bashrc (bash) — pick based on $SHELL.Confirm the choice before writing. If user declines persistence, warn that
scheduled runs will fail unless the key is in env at MCP launch. Never put
the key in .claap-config.json. Never echo the key after capture.
3. Detect the Notion MCP.
Look for mcp__claude_ai_Notion__notion-fetch or mcp__notion__notion-fetch.
If neither is loaded, halt with:
"Notion MCP isn't loaded. Connect the claude.ai Notion connector (Settings → Connectors) or add
mcp.notion.comto your.mcp.json, then restart Claude Code and re-run me."
Record which prefix worked under notion_tool_prefix (the skill assumes
the same notion-* tool names suffix on both).
4. Ask for the Notion parent page.
"Paste the Notion URL or UUID of the page where the GTM Action Items DB should live."
Resolve via notion-fetch to validate it exists and is writable. If
resolution fails, ask again. Persist nothing yet — only the resolved
page_id is used in step 8.
5. Ask which signals to extract.
"Which signals should I extract from transcripts? Press Enter for the default 5, or paste a comma-separated list."
Default: objection, competitor_mention, feature_request, action_item, next_step_promised.
Persist under extraction_signals.
6. Ask for Kanban column names.
"Which Kanban columns do you want? Press Enter for the default
(Backlog, Focus This Week, Done, Archived) or paste a
comma-separated list."
If the user supplies custom columns, ask for a color per column (must be
one of: default, gray, brown, orange, yellow, green, blue, purple, pink, red). Persist column names under kanban_statuses.
7. Ask for extra properties (optional).
"Any extra properties on top of the default 10? Press Enter to skip, or
paste lines like Owner: rich_text / Priority: select(High:red, Med:yellow, Low:gray)."
Persist under extra_properties as an array of {name, type, options?}.
8. Create the database.
Build a notion-create-database body following the contract in
references/notion-db-schema.md. Parameterize:
parent.page_id ← the resolved page from step 4Status options ← kanban_statuses (color per user input, default
mapping when defaults are used)extra_properties to the initial_data_source.properties mapDo not use pseudo-SQL. The JSON body in references/notion-db-schema.md
is the only valid input shape.
On success, capture:
notion_db_urldata_source UUID → gtm_action_items_data_source_id
(store as collection://<uuid> for stability)9. Discover property IDs and create the Kanban view.
Call notion-fetch on the new data source. From the response, extract
property_id for Status, Title, Type, Deal / Lead, Verbatim Quote, Claap Link, Source Call Date, Week, Surfaced By, Due.
Call notion-create-view with the board configuration in
references/notion-db-schema.md, grouped by Status, showing the properties
above.
10. Slack delivery.
"How should I deliver the weekly Slack summary?"
Offer three modes:
a. DM to a Slack user — ask for the user ID. If the user provides a
handle or name instead, resolve via slack_search_users (record the
resolved U... ID). Persist as slack_delivery: { mode: "mcp_user", target: "<U_YOUR_SLACK_ID>" }.
b. Post to a Slack channel — ask for the channel ID (or resolve from
name via slack_search_channels). Persist as slack_delivery: { mode: "mcp_channel", target: "<C_YOUR_CHANNEL_ID>" }.
c. Incoming webhook — instruct the user to create an incoming webhook in Slack and export it as an env var:
export SLACK_WEBHOOK_URL="https://hooks.slack.com/services/..." Offer to append export SLACK_WEBHOOK_URL=<masked> to the user's
~/.zshenv (zsh) or ~/.bashrc (bash). Confirm before writing. Never
echo the URL back in chat after capture. Persist as slack_delivery: { mode: "webhook", target: "env:SLACK_WEBHOOK_URL" }. The literal URL is
never written to config.
11. Write .claap-config.json.
Persist all collected non-secret fields to
.claude/skills/claap-weekly-recap/.claap-config.json (the skill folder's
.gitignore already excludes this file).
Final shape:
{
"version": 1,
"claap_tool_prefix": "<mcp__claap__ or mcp__claude_ai_Claap__>",
"notion_tool_prefix": "<mcp__claude_ai_Notion__ or mcp__notion__>",
"gtm_action_items_data_source_id": "collection://<YOUR_DATA_SOURCE_UUID>",
"notion_db_url": "https://www.notion.so/<workspace>/<db-id>",
"slack_delivery": { "mode": "...", "target": "..." },
"lookback_days": 7,
"min_call_minutes": 3,
"extraction_signals": ["objection", "competitor_mention", "feature_request", "action_item", "next_step_promised"],
"kanban_statuses": ["Backlog", "Focus This Week", "Done", "Archived"],
"extra_properties": [],
"prior_recap_history_path": "~/.gtm-os/state/claap-recap-history.md",
"model": "claude-sonnet-4-6",
"max_turns": 100
}Print: "Setup complete. Run me again to generate this week's recap."
Do not proceed to the weekly run in the same session. The schedule infra needs the persisted config; running once and exiting cleanly catches mis- configurations before they hit production.
Load .claap-config.json. Substitute {{claap_tool_prefix}} with the
config value in every reference below before calling the tool. (E.g. for
{{claap_tool_prefix}}list_workspaces, call mcp__claap__list_workspaces
or mcp__claude_ai_Claap__list_workspaces.)
| Input | Source | Description |
|---|---|---|
gtm_action_items_data_source_id | config | Notion DS ID (collection://... or bare UUID) |
slack_delivery | config | Resolved Slack target |
week_label | runtime (default current ISO week) | e.g. 2026-W20 |
lookback_days | config (default 7) | Days of call history to scan |
prior_recap_history_path | config | Path to history markdown |
Claap MCP (read). Claap exposes 7 tools under the claap_tool_prefix.
The four relevant ones:
| Tool | Required params | Use |
|---|---|---|
{{claap_tool_prefix}}list_workspaces | — | Call first. Returns workspaces[]. Cache the primary workspaceId. |
{{claap_tool_prefix}}get_recordings | workspaceId | Returns recording metadata. Filter with filters.createdAt.gte/lte (ISO date). Paginate via nextCursor. |
{{claap_tool_prefix}}get_recording_transcript | recordingId, workspaceId | Full transcript for one recording. |
{{claap_tool_prefix}}search_recording_transcripts | search.query, search.type, workspaceId | Cross-recording keyword / semantic search. |
{{claap_tool_prefix}}search_companies, search_contacts, search_deals
are available if you need to resolve participants → deals when the
recording doesn't carry a dealId.
Notion (write).
notion-fetch on the target DS to confirm the schema and discover the
current select option set.notion-fetch (with filter) to check for existing pages this week
before creating new ones (idempotency guard — Step 6).notion-create-pages to add cards (batch ≤40 per call).notion-update-data-source to seed missing select options (always
include { "id": "<existing-id>" } entries for options you want to
keep — see references/notion-db-schema.md).Slack (notify).
Pick the path that matches slack_delivery.mode in config:
mcp_user → slack_send_message with channel_id = slack_delivery.target (the user ID; Slack treats DMs that way).
mcp_channel → slack_send_message with channel_id = slack_delivery.target.
webhook → resolve env var named in target (e.g. SLACK_WEBHOOK_URL)
via Bash. If the env var is empty, hard-stop with a clear error. Then
POST the message body using the temp-file pattern (never use
process substitution <(...) — fragile in cron / launchd / claude -p
shells):
printf '{"text": %s}' "$(jq -Rs . < /tmp/recap-body.txt)" > /tmp/recap.json
curl -X POST -H 'Content-Type: application/json' \
--data-binary @/tmp/recap.json "$SLACK_WEBHOOK_URL"If the configured delivery mode can't be resolved (env var missing, MCP not loaded), hard-stop. Do not silently skip the notification.
{{claap_tool_prefix}}list_workspaces → cache workspaceId.today - lookback_days → today as ISO YYYY-MM-DD.{{claap_tool_prefix}}get_recordings with { workspaceId, filters: { createdAt: { gte, lte } } }. Paginate.{{claap_tool_prefix}}get_recording_transcript. Skip calls under min_call_minutes (default 3).extraction_signals.For each call retain: recordingId, recordingTitle, createdAt,
recording URL, participants, dealId / companyId if available, and the
extracted moments.
Group recordings by dealId (preferred) or companyId (fallback). When
neither is available, group by company name extracted from the external
participants list.
For each deal, propose 1–3 concrete action items. Each must:
claap_timestamp_url pointing to the exact momentStatus = <first kanban_status> (typically "Backlog")Week labelSkip generic items ("follow up"). Every card must answer "what specifically, with whom, by when if known."
Across all calls of the week, identify 2–4 themes worth a deep-work block next week. A focus block is a pattern, not a single deal:
Each must:
Type = Focus Block, Status = Focus This Week (or the second
kanban_statuses entry if the user customized them)Deal / Lead (spans deals)If prior_recap_history_path is provided and the file exists, parse it
exactly this way:
week_label. (The file may have multiple appends in one week if the
skill was re-run; we want the last previous week.)2026-W19). Right of the colon is a pipe-separated list
of focus block titles.lowercase + strip leading/trailing whitespace.For each prior title:
If the file doesn't exist, skip this step. No carry-over on first run.
Before creating any pages, run an idempotency check.
a. notion-fetch the DS with a filter:
{
"data_source_id": "<gtm_action_items_data_source_id>",
"filter": {
"property": "Week",
"rich_text": { "equals": "<week_label>" }
}
}b. Build a set of "fingerprints" from the existing pages:
Claap Link URL (preferred) or
Verbatim Quote normalized text if URL is empty.Title.c. As you walk the cards you intend to create, drop any whose fingerprint already exists in the set. Log how many duplicates were skipped.
d. If all cards would be duplicates (typical second run in the same
week), skip the Notion write entirely and reuse the existing
notion_db_url view in the Slack summary.
Otherwise: notion-create-pages with the surviving cards, batched ≤40
per call. Property payload follows the JSON in
references/notion-db-schema.md.
If a select value (e.g. a custom Type or Status) isn't in the current
option set, use notion-update-data-source to add it. Always include
{ "id": "<existing-id>" } entries for every existing option you want to
keep — Notion treats the options array as authoritative; omissions
delete the option and orphan tagged pages.
Plain text, no markdown beyond *bold*. Pattern:
Sunday recap — Week of <Mon DD>
<N> action items across <M> deals → <Notion Kanban URL>
<K> focus blocks for next week:
· <title 1> (<count> deals)
· <title 2> (<count> deals)
· <title 3> (<count> deals)
Carry-over from last week:
· <theme>: <status>Send via the path matching slack_delivery.mode. One message per run.
Append this week's focus block titles to prior_recap_history_path so
next week's run can detect carry-over. One line per run, pipe-separated:
2026-W20: Pricing objection rebuttal | Compliance questions | Champion IDIf the file doesn't exist, create it with the single header line:
# Claap Weekly Recap — Focus Block HistoryIf Step 6 short-circuited because every card was a duplicate, still
append a history line so re-runs are observable. The carry-over parser
explicitly skips lines whose week label equals the current week_label.
If the week had zero calls, send a single Slack message: "No calls recorded this week. Skipping recap." Do not create Notion cards.
Stop and report (no mocks, no partial output) if:
CLAAP_API_KEY in env at MCP-launch
time, restart Claude Code sessionnotion-fetch returns no DS at gtm_action_items_data_source_id → wrong
DS ID, or workspace permissionsFor a transient single-call fetch failure: skip that call, log it, continue with the rest.
See references/troubleshooting.md for the full list with remedies.
See references/sample-output.md for a real run's action items, focus
blocks, and Slack DM.
Pick the option that matches your environment. Options B, C, and D are the documented primary paths — Option A only applies if you're already running the Yalc agent stack and won't work if you downloaded this skill folder standalone.
Primary path on macOS. See scripts/run.sh.template and
scripts/launchd.plist.template. Copy, fill in placeholders, install via
launchctl load. Full step-by-step in references/setup.md.
Cron line example in scripts/cron-example.txt. Use the same
scripts/run.sh.template wrapper.
systemd timer template at scripts/systemd.timer.template.
If — and only if — you have the Yalc OSS agent system installed
(~/Desktop/gtm-os/ with the agent CLI), you can register a cross-platform
schedule:
# configs/agents/claap-weekly-recap.yaml
id: claap-weekly-recap
schedule:
type: weekly
weekday: sunday
hour: 8
minute: 0
steps:
- skillId: claap-weekly-recapInstall: npx tsx src/cli/index.ts agent:install --agent claap-weekly-recap.
This path requires the broader Yalc agent runtime and won't function if you only cloned this skill folder.
© Othmane-Khadri, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 10 other files (scripts, references) in .claude/skills/claap-weekly-recap of Othmane-Khadri/YALC-the-GTM-operating-system.
Open the folder on GitHubat commit 5686d1f
Claap Weekly Recap next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Claap Weekly Recap this skillOthmane-Khadri/YALC-the-GTM-operating-system | 318 | — | ~5.4k | Automated safety check: Pass | MIT | |
| Ops Inboxdavepoon/buildwithclaude | 3.6k | — | ~7.2k | Automated safety check: Notes | MIT | |
| ComposioComposioHQ/composio | 30k | 1 repos | ~1.7k | Automated safety check: Pass | MIT | |
| Soul Interviewldbumble/taskuary | 137 | — | ~1.4k | Automated safety check: Pass | MIT | |
| Taskuary Setupldbumble/taskuary | 137 | — | ~1.5k | Automated safety check: Pass | MIT | |
| Pmcoreyhaines31/makerskills | 851 | — | ~2.2k | Automated safety check: Pass | MIT |
davepoon/buildwithclaude
Full inbox management across all channels — WhatsApp (wacli), Email (Gmail MCP), Slack (MCP), Telegram (user-auth MCP), Discord (webhook + REST read), Notion (MCP — comments, mentions, assigned…
ComposioHQ/composio
Route and complete Composio work across Composio For You and Composio Platform.
ldbumble/taskuary
Conduct a seven-question adaptive interview and turn the answers into Taskuary's SOUL.md.
ldbumble/taskuary
Walk the owner through setting Taskuary up - the AI brain, where work arrives, the operator documents, reports and workflows - by reading the install's real state and using the screens that already…
coreyhaines31/makerskills
When you want to manage projects across your businesses using a kanban + Eisenhower methodology.
techwolf-ai/ai-first-toolkit
Comprehensive pre-meeting briefing that gathers all relevant context from Slack, email, Google Docs, Notion, and calendar.
Othmane-Khadri/YALC-the-GTM-operating-system
A skill your agent uses when the user says "set up FullEnrich reverse lookup for trial signups", "PLG enrichment webhook", "identify free trial signups via FullEnrich", "reverse email lookup for…
Othmane-Khadri/YALC-the-GTM-operating-system
A skill your agent uses when the user says "enrich people who engaged with this post", "qualify post engagers with FullEnrich", "scrape and enrich LinkedIn post {URL}", "engagers from this post into…
Othmane-Khadri/YALC-the-GTM-operating-system
A skill your agent uses when the user says "enrich this LinkedIn event", "enrich attendees of this event", "enrich this attendees CSV", "scrape and enrich LinkedIn event {URL}", "FullEnrich event…
Othmane-Khadri/YALC-the-GTM-operating-system
Reply to comments on a LinkedIn post via Unipile — drafts thread-aware replies grounded in the user's voice and the conversation context, then sends on approval.
Othmane-Khadri/YALC-the-GTM-operating-system
A skill your agent uses when the user says "activate co-founder network with FullEnrich", "enrich LinkedIn connections export", "qualify my LinkedIn connections CSV", "turn Connections.csv into a…
Othmane-Khadri/YALC-the-GTM-operating-system
Auto-derive a complete sales routine — installed frameworks, schedules, and default dashboard — from your archetype, available providers, and rich context, then install it on confirmation.
Works with
Categories
Turns a week of Claap-recorded sales calls into action items and focus blocks on a Notion Kanban, delivered with a Slack summary. Claap Weekly Recap is an agent skill from Othmane-Khadri/YALC-the-GTM-operating-system. Turns a week of Claap-recorded sales calls into action items and focus blocks on a Notion Kanban, delivered with a Slack summary.
Claap Weekly Recap fits situations like: the user says weekly call recap; turn my calls into action items; sunday recap from Claap; what should I focus on next week based on my calls.
Run `npx skills add Othmane-Khadri/YALC-the-GTM-operating-system --skill claap-weekly-recap -a claude-code`. Or copy the skill folder (.claude/skills/claap-weekly-recap in Othmane-Khadri/YALC-the-GTM-operating-system) into .claude/skills/claap-weekly-recap in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Othmane-Khadri/YALC-the-GTM-operating-system --skill claap-weekly-recap -a codex`. Or copy the skill folder (.claude/skills/claap-weekly-recap in Othmane-Khadri/YALC-the-GTM-operating-system) into .agents/skills/claap-weekly-recap in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Othmane-Khadri/YALC-the-GTM-operating-system --skill claap-weekly-recap -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/claap-weekly-recap, .gemini/skills/claap-weekly-recap, .github/skills/claap-weekly-recap and .opencode/skills/claap-weekly-recap in your project.
Going by SKILL.md and its folder, Claap Weekly Recap needs the command-line tools its instructions call (jq, curl, claude and npx) and credentials named CLAAP_API_KEY. Our summary lists: A Bash shell; A credential in CLAAP_API_KEY.
SKILL.md names 3 domains. In commands or code: notion.so, api.claap.io and hooks.slack.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Claap Weekly Recap is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.4k tokens (SKILL.md is roughly 22k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 6.5k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Claap Weekly Recap: Ops Inbox (davepoon/buildwithclaude, 3.6k stars), Composio (ComposioHQ/composio, 30k stars), Soul Interview (ldbumble/taskuary, 137 stars) and Taskuary Setup (ldbumble/taskuary, 137 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Othmane-Khadri (a GitHub user) maintains it in Othmane-Khadri/YALC-the-GTM-operating-system, which has 318 GitHub stars. The repository holds 57 skills in this directory. The repository was last updated on August 20, 2026.
Source: Othmane-Khadri/YALC-the-GTM-operating-system on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.