meeting-sync
Skill1 starsChanged 14 days agoMITView on GitHub
Sync meetings from any transcript tool (Granola, Otter, Fireflies, Fathom, tl;dv, etc.) into the Logseq journal entry for each meeting's date. Inserts a structured meeting block per meeting tagged with same-block properties (tags::, type::, attendees::), scans the summary for durable rules and surfaces them in a Key insights section, asks before tagging brag-worthy wins, auto-links attendees to people/<firstname> pages (creates stubs if missing). Defaults to most recent meeting; accepts a date or title arg. Use when the user says "sync meetings", "/meeting-sync", "import meeting", "save meeting to logseq", or similar.
2 other projects use a version of this.
Adopted by
Most recently taken up by
- OxyFlax/AItheir own version, first seen Oct 8, 2026
- adsmaniotto/personal-claude-skillstheir own version, first seen May 7, 2026
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 2
- adsmaniotto/personal-claude-skills★ 3same name
- OxyFlax/AI★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository6 other files it gives its agents.
- brag-finderSkill
- graph-initSkill
- logseq-noteSkill
- meeting-prepSkill
- virtual-cortex-setupSkill
- weekly-reviewSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
39 rules. About 0 are common, 17 are distinctive, and 22 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈17
Distinctive · estimate
This author's own choices. Worth a look.
22
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- could be automatic: a setting could enforce it
- Distinctive: line 28
If nothing specified, default to the most recent meeting.
- Very specific: line 36
Read the meetings hub page via mcp__mcp-logseq__get_page_content("meetings").
- Very specific: line 40
If no meeting-tool:: property exists, proceed to step 1.
- Distinctive: line 44
Look for known meeting tool MCP servers already connected:
- Distinctive: line 54
If exactly one meeting tool MCP is found, use it.
- Very specific: line 74
After the tool is determined (from step 1 or 2), add meeting-tool:: <tool> to the meetings hub page via mcp__mcp-logseq__update_page.
- Very specific: line 76
If the user chose "None / manual", save meeting-tool:: manual.
- Very specific: line 91
No separate action_items field.
- Very specific: line 92
Don't call get_meeting_transcript.
- Distinctive: line 98
When an unfamiliar MCP server is detected:
- Distinctive: line 102
Call them and map the response fields to what this skill needs: title, date/time, summary/notes, attendees/participants
- Distinctive: line 111
Use the provider's list call with appropriate date filtering.
- Very specific: line 123
If firstname collides with someone already in the user's graph (different person, same firstname), use …
- Very specific: line 124
Check the existing people/* namespace via list_pages to detect collisions and reuse existing pages.
- Distinctive: line 125
If page doesn't exist, create it as a stub with these page properties:
- Very specific: line 132
If you can infer the company from the attendee's email domain (e.g.
- Very specific: line 145
Before writing, check the journal page for an existing meeting block with the same title.
- Very specific: line 164
When strong rule signals are detected, add a ## Key insights section as the FIRST child of the meeting block, and add the topic page(s) to …
- Very specific: line 201
Dedup against already-logged brags: Before prompting, read the target journal day and skip any candidate already captured in a block tagged …
- Distinctive: line 203
When candidates survive, ask once per meeting — a multi-select question if your agent supports one — with one option per candidate (label = …
- Distinctive: line 211
Only ask when signals exist — never prompt on a routine status meeting.
- Very specific: line 213
On confirmation: add brag to the meeting block's tags:: line (tags:: meetings, brag, <work-hub>).
- Very specific: line 256
tags::does the grouping: Always include meetings. Add <work-hub> based on attendee email domain. - Very specific: line 262
Write the value bare — type:: 1on1.
- Very specific: line 280
After a new run writes its meetings, record the run on the Meeting Sync page with update_page (mode: replace, overwriting the previous …
- Very specific: line 292
Only new stamps. It's the one mode that covers an unbroken range up to today.
- Distinctive: line 298
One block per occurrence: Don't merge weekly stand-ups into one page.
- Distinctive: line 302
Default to journal blocks, not dedicated pages: Only create a separate page if the user explicitly asks.
- Distinctive: line 306
TODO discipline: Only today's meetings produce TODOs, and only for the user's own substantive tasks.
- Very specific: line 359
No tool-call narration. No decorative tables or emoji.
- Distinctive: line 363
No filler. No hedging. No "you", "your", "we".
- Distinctive: line 373
Don't pull raw transcripts — never needed
- Very specific: line 374
Don't auto-link group emails (group.web-squad-1@...)
- Very specific: line 375
Don't create top-level pages like Squad 1 Stand Up 2026-06-12 — keep meetings in journal blocks
- Distinctive: line 376
Don't include the meeting creator/host attendee — that's the user themselves
- Very specific: line 377
Don't tag the journal page itself — tag the meeting block via its tags:: property
- Very specific: line 378
Don't put tags::/type::/attendees:: on dashed child bullets — keep them as un-dashed lines under the title so they attach to the parent …
- Distinctive: line 379
Don't backfill old meetings without being asked
- Distinctive: line 380
Don't add tool-specific metadata properties to the block
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Meeting Sync
Pulls meetings from the user's transcript/summary tool and writes them to the corresponding day's Logseq journal as structured meeting blocks. Each meeting block carries its tags and metadata as same-block properties (tags::, type::, attendees::) written directly under the title line — exactly like the /template meeting output. The tool's AI summary IS the meeting note — don't pull raw transcripts.
Two things the properties do:
tags:: meetingsgroups the note — it's what lands under the All meetings view (and<work-hub>puts it on the work hub too).type::facets it — the 1:1s and Interviews views query(property type "1on1")/(property type interview), so a meeting only appears under a facet if it carries the matchingtype::.
Values: type::/status:: are scalar — write them bare (type:: 1on1). tags::/attendees:: hold page references. If a freshly written note doesn't show on its hub, re-index the graph once (Logseq graph menu → Re-index) — API/file writes can lag Logseq's live index.
The skill also scans the summary for durable rules (system behaviour decisions, debugging insights, agreements) and surfaces them in a ## Key insights section at the top of the meeting block, adding the topic page to tags:: so the rule is findable on the topic hub later.
Invocation modes
/meeting-sync— most recent meeting/meeting-sync today— all meetings from today/meeting-sync 2026-06-12— all meetings on that date/meeting-sync "Alice 1:1"— search by title/meeting-sync new— everything since the last sync (reads theMeeting Syncpage, see step 7)- Natural language counts: "import yesterday's meetings", "sync standup", "save my meetings to logseq", "sync everything since last time"
If nothing specified, default to the most recent meeting.
Provider detection (with persistence)
The user's tool choice is stored on the meetings hub page as a meeting-tool:: property (e.g. meeting-tool:: granola). This means detection only happens once.
0. Check for saved preference
Read the meetings hub page via mcp__mcp-logseq__get_page_content("meetings"). If it contains a meeting-tool:: property, use that tool and skip to the Steps section.
Known values: granola, otter, fireflies, fathom, tldv, manual.
If no meeting-tool:: property exists, proceed to step 1.
1. Check available MCP servers
Look for known meeting tool MCP servers already connected:
| Tool | MCP server pattern | List call | Get call | Summary field | Attendees field |
| Granola | *Granola* or *granola* | list_meetings | get_meetings | summary | known_participants |
| Otter | *otter* | Discover via MCP tool listing | Discover | Varies | Varies |
| Fireflies | *fireflies* | Discover via MCP tool listing | Discover | Varies | Varies |
| Fathom | *fathom* | Discover via MCP tool listing | Discover | Varies | Varies |
| tl;dv | *tldv* | Discover via MCP tool listing | Discover | Varies | Varies |
If exactly one meeting tool MCP is found, use it. If multiple are found, ask the user which one to use. If none are found, go to step 2.
2. Ask the user
Which tool do you use for meeting transcripts/summaries?
1. Granola
2. Otter
3. Fireflies
4. Fathom
5. tl;dv
6. Other (tell me the name)
7. None — I'll paste summaries manually
If your tool has an MCP server, I'll need it connected first.3. Save the choice
After the tool is determined (from step 1 or 2), add meeting-tool:: <tool> to the meetings hub page via mcp__mcp-logseq__update_page. Append it as a property line. Next time the skill runs, step 0 finds it and skips detection entirely.
If the user chose "None / manual", save meeting-tool:: manual.
Manual paste — always available
Regardless of the saved tool, if the user pastes a meeting summary directly (or says "here are my meeting notes"), skip MCP calls and structure what they gave you. Don't ask "but you have Granola configured, want to use that instead?" — just process the paste.
This covers: meetings the tool didn't record, calls from a different app, notes from a phone call, or the MCP being temporarily down.
Provider-specific notes
Granola
list_meetingsacceptstime_range: "custom"withcustom_start+custom_end. Date formatYYYY-MM-DD.get_meetingsreturnssummary(markdown). The summary IS the note content.summarycan be literal"No summary"when the tool hasn't processed the meeting yet. Insert the block anyway with the line "No summary available yet."- No separate
action_itemsfield. Action items live in the summary markdown, usually under "### Next Steps" or "### Action Items". Convert those bullets toTODOblocks when writing. - Don't call
get_meeting_transcript. Raw transcripts add noise. known_participantsentries areName <email>orName from Org <email>. The "(note creator)" entry is the user — skip it.- Strip Granola's escape characters. Markdown like
\~30 minutesshould become~30 minutes. Backslash-escaped chars are formatting artifacts.
Other tools (Otter, Fireflies, Fathom, tl;dv, etc.)
When an unfamiliar MCP server is detected:
- List its available tools via the MCP tool listing
- Identify the "list meetings" and "get meeting detail" equivalents
- Call them and map the response fields to what this skill needs: title, date/time, summary/notes, attendees/participants
- Proceed with the same block format below
The block format, attendee resolution, key insights extraction, and TODO discipline are identical regardless of which tool provides the data.
Steps
1. List meetings
Use the provider's list call with appropriate date filtering.
For new: read the Meeting Sync page and fetch from its last-sync:: date through today. Start on the last-sync day itself, not the day after — meetings later that day may have landed after the last run; the idempotency check (step 4) skips the ones already written. If the page doesn't exist, there's no previous new run: say so and ask for a start date instead of guessing.
2. Resolve attendees → people pages
Parse the attendees list from the provider. Skip:
- The meeting creator/host entry — that's the user
- Group emails (
group.foo@...)
For each remaining attendee:
- Lowercase firstname →
people/<firstname> - If firstname collides with someone already in the user's graph (different person, same firstname), use
people/<firstname>-<lastname-initial-or-full>. Example collision:Alice SmithvsAlice Lin→people/aliceandpeople/alice-l. - Check the existing
people/*namespace vialist_pagesto detect collisions and reuse existing pages. - If page doesn't exist, create it as a stub with these page properties:
If you can infer the company from the attendee's email domain (e.g.tags:: system exclude-from-graph-view:: true company:: role::@stripe.com→[[companies/stripe]], internal domain →[[acme]]), setcompany::accordingly. The user can flesh it out later.
3. Compute journal page name
Logseq journal format: <MonAbbr> <D><ordinal>, <YYYY>.
- Months: Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec
- Ordinals: 1st, 2nd, 3rd, 4th–20th use "th", 21st, 22nd, 23rd, 24th–30th use "th", 31st use "st"
Examples: Jun 12th, 2026, Jan 1st, 2026, Mar 23rd, 2025.
4. Idempotency check
Before writing, check the journal page for an existing meeting block with the same title. If a meeting block with that title (carrying tags:: meetings) already exists on that journal date, ask the user whether to skip or overwrite.
4a. Scan summary for durable rules — REQUIRED
Meeting summaries often contain durable knowledge buried in the discussion: decisions made, system rules clarified, debugging insights shared. These should be surfaced at the top of the meeting block, not buried in the summary markdown.
Strong rule signals (extract if present):
- "We decided X" / "Going forward, X" — durable decision
- "By design, X works like Y" — system rule
- "The rule is X" / "X always means Y" — explicit rule statement
- Explicit "Decision:" / "Agreement:" / "Conclusion:" markers in the summary
- Trade-off comparisons with a chosen path
Skip these (not durable rules):
- Routine status updates ("Bob deployed X")
- In-progress work ("working on Y")
- Personal opinions without group agreement ("I think X")
- Discussion items without resolution
When strong rule signals are detected, add a ## Key insights section as the FIRST child of the meeting block, and add the topic page(s) to the block's tags::. When no rule signals exist, skip the section.
4b. Note voice — notes, not docs
Applies to everything the skill writes in its own words: Key insights bullets, block titles, rewritten action items. (The provider summary itself is preserved as-is.)
Notes are terse and personal — the reader is future-you, not a newcomer. Cut:
- Hand-holding phrases ("for the user", "must be... to qualify") — just state the rule
- Redundant restatement ("by design" AND a quote confirming it — pick one)
- Markdown emphasis (
**bold**,*italic*) - Long sentences — bullet over 12 words? Try cutting half
Word swaps: "implemented" → "added"/"did", "leveraged"/"utilized" → "used", "in order to" → "to", "applies to" → "needs".
Plain language over code jargon: drop ClassName#method, table/column names unless the rule hinges on that exact name. Keep numeric thresholds — those are signal.
Bad: "The feature only applies to users meeting condition X and condition Y — this is by design." Good: "feature needs X AND Y. Otherwise = no go."
Match the user's tone. Informal in, informal out. (Full version: logseq-note skill, "Notes are notes, not docs".)
4c. Scan summary for brag signals — ASK before tagging
Meeting summaries often record a win the user forgot to log: something shipped, led, delivered, or a bug correctly diagnosed. Don't auto-tag these — brag is subjective, so surface the candidate and let the user decide.
Brag signals attributable to the user (case-insensitive, the user's own work):
- "shipped" / "deployed" / "launched" / "delivered" / "merged" (esp. with PR numbers)
- "led" / "drove" / "owned" (a migration, launch, incident)
- "mentored" / "onboarded"
- "reduced [latency|cost|time]" / "saved [hours|days|$]" — keep the number
- User proving something isn't a bug (correct diagnosis = brag)
Unattributed wins — surface as candidates too (don't assume, ask). AI summaries often strip attribution: the user's best wins show up as ownerless bullets — Idea:, Decision:, Proposal:, or a win-signal bullet with no name attached. Don't skip these because ownership can't be confirmed; include them as candidates and let the prompt confirm ownership. (Real miss this guards: an "Idea: use X to do Y" bullet that was actually the user's suggestion.)
Skip (same as brag-finder): bullets explicitly owned by a named teammate, "tried but failed", "started working on" (incomplete), pure coordination ("synced with X"), canceled items.
Dedup against already-logged brags. Before prompting, read the target journal day and skip any candidate already captured in a block tagged brag (the user may have logged it manually, or logseq-note/brag-finder did). Match on gist, not exact wording.
When candidates survive, ask once per meeting — a multi-select question if your agent supports one — with one option per candidate (label = terse note-voice title, description = verbatim summary phrasing), and let the user reject all:
Brag? This meeting has win-like activity. Tag any as brag?
[ ] <terse win 1> — "<verbatim summary phrasing>"
[ ] <terse win 2> — "<verbatim summary phrasing>"Only ask when signals exist — never prompt on a routine status meeting. If the user picks none, add no brag tag.
On confirmation: add brag to the meeting block's tags:: line (tags:: meetings, brag, <work-hub>). The meeting block surfaces on the brag hub — no separate brag block, no what-i-did::/impact:: scaffolding (that's brag-finder's job; here the meeting block is the record). Title stays note-voice per 4b.
5. Write the journal block
For each meeting, append one block to the journal page (mode=append). When syncing multiple meetings same day, order chronologically ascending (earliest first) so the journal reads top-to-bottom through the day. Add an empty block between meetings as a visual separator.
Formatting: write the tags and metadata as same-block properties — un-dashed key:: value lines directly under the title bullet — so they attach to the parent (title) block. Do not put them on dashed child bullets — that makes them separate blocks. Tag values in tags:: are bare (meetings); attendees:: values are [[bracketed]] page references. Scalar values like type:: stay bare.
Block format (with rule signals detected):
- {Title} — {HH:MM}
type:: 1on1
attendees:: [[people/x]], [[people/y]]
tags:: meetings, <work-hub>, <work-hub>/<topic-1>, <work-hub>/<topic-2>
- ## Key insights
- <rule 1, terse, like a note not docs>
- <rule 2>
- ## Summary
- {summary content, preserved}
- ## Action items
- TODO {action item assigned to user}
- {action item assigned to someone else}
-
- {Next meeting title} — {HH:MM}
...Block format (no rule signals, plain meeting):
- {Title} — {HH:MM}
attendees:: [[people/x]], [[people/y]]
tags:: meetings, <work-hub>
- ## Summary
- {summary content, preserved}
- ## Action items
- TODO {action item assigned to user}
- {action item assigned to someone else}Notes:
tags::does the grouping. Always includemeetings. Add<work-hub>based on attendee email domain. Add<work-hub>/<topic-X>for each topic surfaced in step 4a's rule extraction — this is what makes the rule findable later via topic hubs.type::does the faceting — REQUIRED for 1:1s and interviews. Classify the meeting and settype::so it lands under the right facet on the meetings hub:1on1— exactly one counterpart (you + one other person), reads like a recurring/individual catch-up. Single-name titles ("Alice 1:1", "Catch-up with Bob") are strong signals.interview— a candidate evaluation. Title or context names a candidate/role.- generic meeting (standups, group syncs, planning) — omit
type::; it still shows under All meetings, just not a facet. Optionally set a value themeetingshub lists undertype-values::(e.g.standup,sync).
Write the value bare —
type:: 1on1. The leading digit only needs quoting on the query side ((property type "1on1")), which the hub already does; the stored property value is the plain string.attendees::aggregates by person. Comma-separated[[people/x]]references. Backlinks on each person page surface every meeting with them (entity-aggregator pattern) — no "series" page needed.- Action items: TODO only for today's meetings, and only if the user owns the item. For a meeting dated today: if the parenthetical assignee includes the user's first name (e.g.
(Alice)or(Alice + Bob), assuming the user is "Alice") or there's no assignee, prefix withTODO. If assigned to someone else only (e.g.(Bob),(Charlie)), leave as plain bullet. Only substantive tasks (code, builds, non-trivial investigations) getTODO— coordination ("sync with Bob"), admin steps ("create a ticket"), and same-session one-offs stay plain. For a meeting on any earlier day, write every action item as a plain bullet: by sync time it's already tracked elsewhere or done, and a stale TODO is noise. - No tool-specific ID properties, no source attribution. Match by title + date for idempotency. Don't add "synced from Granola" lines.
6. Confirm
Report concisely:
Synced N meetings to [[Jun 12th, 2026]]:
- {title 1} ({HH:MM}) — N attendees
- {title 2} ({HH:MM}) — N attendees
{K people stubs created}7. Stamp the sync (new only)
After a new run writes its meetings, record the run on the Meeting Sync page with update_page (mode: replace, overwriting the previous stamp). If the page doesn't exist yet, create it with create_page. new reads last-sync:: from here.
tags:: system
exclude-from-graph-view:: true
- last-sync:: {YYYY-MM-DD}
- range:: {start-date} → {end-date}
- meetings-synced:: {N}last-syncis today's date.rangeis the date window fetched.meetings-syncedis the count written this run.- Only
newstamps. It's the one mode that covers an unbroken range up to today; stamping after a single-date or most-recent sync would movelast-syncpast days that were never synced. - Machine-written status record — no prose or commentary on this page.
Entity-aggregator patterns (do follow)
- Entity is the aggregator. Each meeting is one block in that day's journal. The attendee link does the grouping automatically — open
people/<person>to see every meeting with them. No "series" page needed for recurring 1:1s. - One block per occurrence. Don't merge weekly stand-ups into one page. Each day's stand-up is its own block in that day's journal.
Hard constraints
- Default to journal blocks, not dedicated pages. Only create a separate page if the user explicitly asks.
- No transcript dumping. The tool's summary is the source of truth. Never pull raw transcripts.
- No source attribution. No "synced from X" lines, no tool-specific ID properties. Just the meeting content.
- Strip formatting artifacts. Tools often add escape characters (e.g.
\~30 minutes→~30 minutes). Clean them. - TODO discipline. Only today's meetings produce TODOs, and only for the user's own substantive tasks. Past meetings are reference notes. Everyone else's work stays as plain text bullets.
- Tag and facet via same-block properties.
tags:: meetings(+<work-hub>/topics, all bare) groups;type:: 1on1/interview(bare) facets. Write them as un-dashed lines directly under the title so they attach to the parent block. Generic meetings need notype::.
Worked example
Input: /meeting-sync today on Jun 12th, 2026 — found 3 meetings
Example A — meeting with rule signals detected (user is "Alice"; teammates Bob, Charlie):
- Team Standup — 13:30
attendees:: [[people/bob]], [[people/charlie]]
tags:: meetings, <work-hub>, <work-hub>/<topic>
- ## Key insights
- <rule extracted from discussion, terse, note voice>
- <another rule if surfaced>
- ## Summary
- ### <work area> update (Bob)
- PR merged and deploying, live shortly
- Next: extend to <next area>
- ...
- ## Action items
- TODO Retest <feature> end-to-end (Bob + Alice, in ~1 hour)
- Deploy <feature> to <env> once current build is live (Bob)
- TODO Help Charlie parallelize <task> (Alice)The Key insights section surfaces durable rules at the TOP of the meeting block, so they're visible without scrolling through the summary. The topic page in tags:: (<work-hub>/<topic>) makes those insights findable on the topic hub later. This standup is a group meeting, so no type:: — it shows under All meetings only.
Example B — a 1:1 (faceted) (user is "Alice", meeting with Bob):
- Alice / Bob 1:1 — 10:00
type:: 1on1
attendees:: [[people/bob]]
tags:: meetings, <work-hub>
- ## Summary
- {summary as-is}
- ## Action items
- TODO {item}
-
- {Next meeting...} — {HH:MM}type:: 1on1 lands this under the 1:1s facet on the meetings hub as well as All meetings. Most group meetings have no type:: — don't force one.
TODO discipline: these are today's meetings, so Alice-owned (or shared) substantive tasks are TODO; Bob-only items are plain bullets. Synced a week later, every item would be a plain bullet. The empty - between meeting blocks gives visual separation in Logseq.
People stubs created: people/bob, people/charlie (created as needed; existing pages reused).
Voice
No tool-call narration. No decorative tables or emoji. No long raw error-log dumps unless user asks. Standard tech acronyms OK (DB/API/MCP); never invent new abbreviations.
Abbreviate prose words (auth/config/req/res/fn/impl) — prose words only, never real code symbols or function names. Strip conjunctions; use arrows for causality (X → Y). One word when one word enough. Code symbols, function names, API names, error strings: never abbreviate.
No filler. No hedging. No "you", "your", "we". Keep sentences intact. Professional but tight.
Example
❌ "Of course! Let me help you sync your meetings. First I'll detect which meeting tool you use by checking your MCP servers, then I'll pull the most recent meeting."
✅ "Synced 3 meetings to [[Jun 12th, 2026]]: Standup (13:30) — 2 attendees, Customer sync (15:00) — 4 attendees, Sprint retro (16:00) — 5 attendees. 2 people stubs created."
Don't
- Don't pull raw transcripts — never needed
- Don't auto-link group emails (
group.web-squad-1@...) - Don't create top-level pages like
Squad 1 Stand Up 2026-06-12— keep meetings in journal blocks - Don't include the meeting creator/host attendee — that's the user themselves
- Don't tag the journal page itself — tag the meeting block via its
tags::property - Don't put
tags::/type::/attendees::on dashed child bullets — keep them as un-dashed lines under the title so they attach to the parent block - Don't backfill old meetings without being asked
- Don't add tool-specific metadata properties to the block
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

