From simpleapps
Fyxer AI meeting recording integration. Covers extraction, local caching, posting to Basecamp, and Fyxer Index management. Use when processing Fyxer recordings or meeting transcripts.
npx claudepluginhub simpleapps-com/augur-skills --plugin simpleappsThis skill is limited to using the following tools:
Fyxer AI records and summarizes meetings. This skill covers extracting data from Fyxer, posting to Basecamp, and managing the Fyxer Index.
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
Fyxer AI records and summarizes meetings. This skill covers extracting data from Fyxer, posting to Basecamp, and managing the Fyxer Index.
Recording page: https://app.fyxer.com/call-recordings/<meeting-uuid>:<calendar-event-id>
The URL path after /call-recordings/ contains two parts separated by a colon:
52f0cf2b-fdb8-4e95-8b01-2afb6d367c692fg5k3v3hffl91dnuqauc15suk_20260119T190000ZUse only the meeting UUID for cache folders, duplicate checks, and frontmatter.
Each recording has two tabs:
All extracted data is cached at ~/.simpleapps/fyxer/<meeting-uuid>/:
summary.txt - raw Fyxer summary (from Summary tab)
transcript.txt - raw Fyxer transcript (from Transcript tab)
message.txt - assembled output (generated by posting process)
Cache is populated via Chrome extraction (see below) and reused across processes.
Only needed when local cache files are missing.
Click the Transcript tab. Extraction methods (in order of preference):
.txt file to ~/Downloads/. Complete content, no truncation. Copy to cache dir, then delete the download.pbpaste — Copies to system clipboard. Write to disk: pbpaste > transcript.txt. Reliable but requires clipboard access.get_page_text — UNRELIABLE. Only captures visible/partial content. Missed most of a 30-minute transcript in testing. DO NOT USE for transcripts.Save to ~/.simpleapps/fyxer/<meeting-uuid>/transcript.txt.
The Summary tab is the default view. Extraction methods (in order of preference):
pbpaste (BEST) — Copies markdown to clipboard. Write to disk: pbpaste > summary.txt. Summaries are short (~1,700 chars) so this works well.get_page_text — Works for short summaries but mixes in page chrome. Not recommended.Save to ~/.simpleapps/fyxer/<meeting-uuid>/summary.txt.
Click the participant count dropdown (e.g. "3 participants") in the page header to reveal attendee names and emails. Take a screenshot to read them.
To verify clipboard content is complete before writing to disk:
(async () => {
const text = await navigator.clipboard.readText();
window.__temp = text;
return JSON.stringify({
length: text.length,
first50: text.substring(0, 50),
last100: text.substring(text.length - 100)
});
})()
Then write and verify: pbpaste > target.txt && wc -c target.txt
Note: Do NOT try to read full clipboard content via JS — Chrome MCP truncates JS output at ~1,000 characters. Always use pbpaste to write to disk.
MUST clean up ~/Downloads/ after copying downloaded files to the cache directory. Fyxer names downloads like transcript-SA_USCCO.txt. Repeated downloads append (1), (2), etc.
Post Fyxer meeting recordings as searchable Discussions in Basecamp projects.
Inputs: Fyxer recording URL + Basecamp project ID.
Extract the meeting UUID from the Fyxer URL. Find the Fyxer Index document in the project: list_documents(project_id) → scan for title Fyxer Index. If found, get_document(project_id, document_id) and search content for the meeting UUID. If found, the meeting has already been posted — inform the user and stop.
If no Fyxer Index document exists, there are no tracked meetings. Proceed with posting.
If ~/.simpleapps/fyxer/<meeting-uuid>/summary.txt and transcript.txt both exist, skip to step 3. Otherwise, follow the Chrome extraction steps above.
Parse summary.txt for frontmatter fields, extract participants, and combine with the full transcript:
---
meeting: SA/ClientName
date: YYYY-MM-DD
time: HH:MM-HH:MM
participants: Person A, Person B, Person C
topics: Topic One, Topic Two, Topic Three
fyxer-id: <meeting-uuid>
---
[contents of transcript.txt]
| Field | Source |
|---|---|
| meeting | Meeting title from the page header |
| date | Recording date |
| time | Recording time range |
| participants | Participant dropdown (click to reveal names) |
| topics | Section headings from the Summary |
| fyxer-id | Meeting UUID from the URL (before the colon) |
Save as ~/.simpleapps/fyxer/<meeting-uuid>/message.txt.
Use create_message(project_id, subject, content):
Fyxer: YYYY-MM-DDmessage.txtCapture the message_id from the response.
After a successful post, update the Fyxer Index document:
create_document(project_id, "Fyxer Index", "")get_document(project_id, document_id)<meeting-uuid> | <date> | <message-id> | <subject>update_document(project_id, document_id, title="Fyxer Index", content=updated_content)If the index update fails after a successful post, warn the user. The message is posted but the index is stale. Run reconciliation later.
Fyxer: YYYY-MM-DD keeps messages uniform and sortableEach Basecamp project that receives Fyxer meeting transcripts MUST have a Fyxer Index document for duplicate detection and meeting history.
Fyxer Index<meeting-uuid> | <date> | <message-id> | <subject>
Example:
52f0cf2b-fdb8-4e95-8b01-2afb6d367c69 | 2026-01-19 | 514789012 | Fyxer: 2026-01-19
a1b2c3d4-e5f6-7890-abcd-ef1234567890 | 2026-02-10 | 514801234 | Fyxer: 2026-02-10
list_documents(project_id) → find Fyxer Index → get_documentget_message(project_id, message_id) using the message_id from the indexlist_messages(project_id) — Fyxer posts use the title format Fyxer: YYYY-MM-DDThe index MAY fall out of sync. To reconcile:
list_messages(project_id) → filter for Fyxer: titlesget_message and extract fyxer-id from YAML frontmatterRun reconciliation when the index is first created in a project with existing Fyxer messages, or when the user suspects the index is incomplete.
If an index entry references a deleted message:
get_message(project_id, message_id) → if 404, remove entry from indexOnly run orphan cleanup when explicitly requested by the user.
simpleapps:basecamp skill — MCP tools for posting and index management