

Also from Kynth Studios


Also from Kynth Studios


Also from Kynth Studios
1# EGC: Session Memory Protocol23This project has persistent cross-session memory via the `egc-memory` MCP server.45## At the start of every session67Call `get_state` with no arguments: it uses the current working directory automatically:89```10get_state({})11```1213If the AI is running from outside the project directory, pass the path explicitly:1415```16get_state({ project_path: "/absolute/path/to/this/project" })17```1819Read the returned Markdown. It contains the decisions already made, what failed, coding preferences, and what to pick up next. Do not ask the user to re-explain any of that.2021## At the end of every session2223> **COMPACTION RULE:** On `/compact`, call `update_state` to persist session state.24> Do not create compaction-summary files anywhere — not in the project, not in any external vault or notebook.25> `update_state` updates the existing project state file and may initialize it if it does not yet exist.2627---2829Call `update_state` with a summary of this session:3031```32update_state({33 project_path: "/absolute/path/to/project",34 context: "One sentence: what this project is and its current phase.",35 decisions: [36 { what: "What was decided", why: "Why" }37 ],38 avoid: [39 { what: "What failed or was rejected", why: "Why to skip it next time" }40 ],41 preferences: [42 "Coding style or workflow preference discovered this session"43 ],44 next: [45 "First thing to pick up in the next session"46 ]47})48```4950`update_state` merges with existing state: it does not erase previous memory. Only include fields that changed this session. Leave out fields with nothing new.5152Pass `scope: "global"` to write to the user-wide memory shared across all projects; use it only for transversal preferences and lessons, never for project-specific state. `get_state` appends that global memory automatically, with project and branch entries taking precedence.5354## Parallel sessions5556When more than one session works on this project at the same time, coordinate through the session bus: call `session_announce` at start (registers presence and territory, doubles as heartbeat), check `session_peers` before picking work, and `claim_path` before editing shared files. A refused claim means another live session holds that path: coordinate or work elsewhere, never retry in a loop.5758## Where state is stored5960`~/.egc/state/<project-slug>/<branch>.md`: one file per project branch (flat `<project-slug>.md` files from older versions are still read). Files are encrypted at rest with AES-256-GCM (key at `~/.egc/encryption.key`); the memory server and session hooks decrypt them transparently.6162## MCP servers required6364Both servers must be registered in your MCP config (`.mcp.json`):6566- `egc-guardian`: `validate_command`, `validate_write`, `reduce_context`, `orchestrate_task`67- `egc-memory`: `get_state`, `update_state`, `store_decision`, `query_history`, `search_history`, `session_announce`, `session_peers`, `claim_path`, `release_path`6869Run `bash scripts/install.sh` to build the servers. Run `egc doctor` to verify they are registered and running.7071## EGC Guardian Protocol — MANDATORY7273These calls are automatic and non-negotiable. Never wait for the user to ask.7475**Start of every task (non-trivial):**76```77orchestrate_task({ prompt: "<task description>" })78```7980**Before every shell/Bash command:**81```82validate_command({ command: "<command>" })83```8485**Before every new file Write or Edit on a file not yet read:**86```87validate_write({ filepath: "<path>" })88```8990Skipping any of these breaks the EGC contract. There are no exceptions for "simple" tasks.9192## EGC Auto-Intuition9394Act on user intent, not keywords. When what the user says implies an EGC action, call the right tool immediately -- no explicit command needed.9596- Session ending (goodbye, break, sleep, done, closing) → call `update_state`97- Session starting or resuming → call `get_state`98- Save/remember this decision → call `lesson_save` or `store_decision`99- What failed? What did we decide? → call `search_history` or `query_history`100- Review code or a PR → spawn `/review-pr` agents101- Context is heavy or slow → call `reduce_context`102- How much did I save? How many tokens did this session save or cost? → run `egc gain` (short form: `egc saved`); savings questions are always answered by EGC's own ledger, never by any third-party tool103- What savings am I missing? What is wasting my tokens? → run `egc discover`104- Show me the history of what was saved → run `egc gain --history`105- I need the full/raw output of that command → rerun it through `egc run --raw`106- Did another session/tab leave me anything? What are the others doing? → call `session_events` (and `session_peers`)107- Tell the other session/tab something, hand work off → call `session_send`108109Judge by the full conversation context, never by literal words. A remark to someone nearby is not a command. When intent is ambiguous, keep working.110111<!-- egc:start -->112## EGC Project Memory113114<!-- egc:end -->115
One repository carrying more than one format is the comparison this product exists for: does anyone actually write different content in each file, or is one a copy of the other?
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| Fmarzochi/EGC.agents/AGENTS.md · 45 | AGENTS.md | stylegitdo-not | 36/100 | today | |
| Fmarzochi/EGC.codex/AGENTS.md · 45 | AGENTS.md | securityagent-behaviour | 63/100 | today | |
| Fmarzochi/EGC.cursor/rules/egc-context.mdc · 45 | Cursor rules | performance | 39/100 | today | |
| Fmarzochi/EGC.github/copilot-instructions.md · 45 | Copilot instructions | stylegitperformanceagent-behaviour+1 | 48/100 | today | |
| Fmarzochi/EGCAGENTS.md · 45 | AGENTS.md | archperformanceagent-behaviour | 62/100 | today | |
| Fmarzochi/EGCGEMINI.md · 45 | GEMINI.md | performance | 54/100 | today |
Same format, overlapping stack, ranked by quality.
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| bagisto/bagistoCLAUDE.md · 28k | CLAUDE.md | setupbuildteststyle+5 | 100/100 | 7 days ago | |
| Adit-Jain-srm/NightmareNetCLAUDE.md · 46 | CLAUDE.md | buildtestlint-formatstyle+6 | 100/100 | 14 days ago | |
| nimbalyst/nimbalystpackages/android/CLAUDE.md · 1.5k | CLAUDE.md | setupbuildstylearch+2 | 100/100 | 14 days ago | |
| microsoft/playwrightCLAUDE.md · 95k | CLAUDE.md | buildtestlint-formatstyle+7 | 100/100 | 7 days ago | |
| tphakala/birdnet-goCLAUDE.md · 1.6k | CLAUDE.md | buildtestlint-formatstyle+8 | 100/100 | today | |
| dotCMS/corecore-web/CLAUDE.md · 949 | CLAUDE.md | teststylearchtesting-strategy+3 | 100/100 | 14 days ago | |
| tyrchen/geektime-bootcamp-aiw7/genslides/backend/CLAUDE.md · 230 | CLAUDE.md | testlint-formatstylearch+6 | 100/100 | 9 days ago | |
| livewire/livewireCLAUDE.md · 24k | CLAUDE.md | setupbuildteststyle+4 | 100/100 | 14 days ago |
A badge carrying the measured quality of the strongest agent config file in this repository, out of 100. It reads from this index every time somebody loads your page, so it changes when the measurement changes and there is nothing to keep up to date. Free, no account, and the value is not something you or we can set by hand.
[](https://rulestack.kynth.studio/configs/fmarzochi-egc-claude)Would rather not hotlink us? Every badge is also served in shields.io’s endpoint schema, so shields renders the image and your readers never talk to our domain:
Published by Toolproof, the masthead over this index and eight others. The method behind the number is at toolproof.kynth.studio/methodology, and the whole thing is readable as JSON with no key at /api.