Consolidate Memory
asgeirtj/system_prompts_leaks
Reflective pass over your memory files — merge duplicates, fix stale facts, prune the index.
Nightly memory consolidation: prunes stale entries, merges duplicates, resolves contradictions, rebuilds the MEMORY.md index.
$ npx skills add yonatangross/orchestkit --skill dream -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install yonatangross/orchestkit dream --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/yonatangross/orchestkit.git skills-src && mkdir -p .claude/skills && cp -r skills-src/src/skills/dream .claude/skills/dream && 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 "dream" agent skill from https://github.com/yonatangross/orchestkit/tree/main/src/skills/dream into .claude/skills/dream/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dream", 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/yonatangross/orchestkit/tree/main/src/skills/dreamType 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 yonatangross/orchestkit --skill dream -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install yonatangross/orchestkit dream --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/yonatangross/orchestkit.git skills-src && mkdir -p .agents/skills && cp -r skills-src/src/skills/dream .agents/skills/dream && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "dream" agent skill from https://github.com/yonatangross/orchestkit/tree/main/src/skills/dream into .agents/skills/dream/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dream", 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 yonatangross/orchestkit --skill dream -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install yonatangross/orchestkit dream --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/yonatangross/orchestkit.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/src/skills/dream .cursor/skills/dream && 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 "dream" agent skill from https://github.com/yonatangross/orchestkit/tree/main/src/skills/dream into .cursor/skills/dream/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dream", 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/yonatangross/orchestkit.git --path src/skills/dream--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 yonatangross/orchestkit --skill dream -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install yonatangross/orchestkit dream --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/yonatangross/orchestkit.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/src/skills/dream .gemini/skills/dream && 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 "dream" agent skill from https://github.com/yonatangross/orchestkit/tree/main/src/skills/dream into .gemini/skills/dream/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dream", 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 yonatangross/orchestkit dreamInstalls 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 yonatangross/orchestkit --skill dream -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/yonatangross/orchestkit.git skills-src && mkdir -p .github/skills && cp -r skills-src/src/skills/dream .github/skills/dream && 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 "dream" agent skill from https://github.com/yonatangross/orchestkit/tree/main/src/skills/dream into .github/skills/dream/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dream", 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 yonatangross/orchestkit --skill dream -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install yonatangross/orchestkit dream --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/yonatangross/orchestkit.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/src/skills/dream .opencode/skills/dream && 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 "dream" agent skill from https://github.com/yonatangross/orchestkit/tree/main/src/skills/dream into .opencode/skills/dream/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dream", 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.
dreamNightly memory consolidation: prunes stale entries, merges duplicates, resolves contradictions, rebuilds the MEMORY.md index.
Dream is an agent skill from yonatangross/orchestkit. Nightly memory consolidation: prunes stale entries, merges duplicates, resolves contradictions, rebuilds the MEMORY.md index. Use when memory files accumulated over many sessions need cleanup. New decisions get stored by remember; searches run through memory; internals live in memory-fabric.
Its SKILL.md is about 5.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files, including scripts and reference files (for example `references/housekeeping.md`, `references/index-budget.md` and `references/safe-deletes.md`). Compatibility notes: Claude Code 2.1.277+
The repository describes itself as: The Complete AI Development Toolkit for Claude Code. 106 skills, 36 agents, 171 hooks. Install ork for stable (v9.x), or ork-alpha for the v10 line, which ships daily. The licence is MIT.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 02bbf9a. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadWriteEditGlobGrepBashmcp__memory__search_nodesmcp__memory__open_nodesmcp__memory__read_graphFrom allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (JavaScript), which the agent can run.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Claude Code 2.1.277+
From compatibility in the SKILL.md frontmatter.
Dream loads about 5.2k tokens when it runs, and up to ~7.5k if it reads all its reference files. Until then it costs about 75 tokens; SKILL.md has 1,497 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 noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Read, Write, Edit, Glob, Grep, Bash, mcp__memory__search_nodes, mcp__memory__open_nodes, mcp__memoryAutomated 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 yonatangross/orchestkit at commit 02bbf9a, republished under its MIT licence (© yonatangross). 1,497 words, ~5,203 tokens.
.claude/skills/dream/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.Deterministic memory maintenance: detect stale entries, merge duplicates, resolve contradictions, rebuild the MEMORY.md index. All pruning decisions are based on verifiable checks (file exists? function exists? duplicate content?), not LLM judgment.
DRY_RUN = "--dry-run" in "$ARGUMENTS" # Preview changes without writingMemory files accumulate across sessions. Over time they develop problems:
This skill fixes all four problems using deterministic checks only.
Finish line. Done means: MEMORY.md is rebuilt from the surviving files and passes the STEP 5.5 verify, the STEP 6 report is printed, and STEPs 7 to 9 have each run or printed a one-line skip reason.
Budget: one read pass over the discovered memory files (STEP 1), one MEMORY.md rewrite (STEP 5) plus the STEP 5.5 trailer rewrite when the index is over budget, and no subagents (every check is deterministic); stop and report at the finish line or the first cap, whichever comes first.
Cadence (CC 2.1.142+): Reactive compaction now sizes its first summarize attempt to the actual overflow, so long sessions stall mid-turn far less often. The "run nightly" cadence can relax toward "run when memory files accumulate" — consolidation is no longer needed to head off compaction inefficiency.
# Find the memory directory (agent-specific or project-level)
# Agent memory lives in: .claude/agent-memory/<agent-id>/
# Project memory lives in: .claude/projects/<hash>/memory/
# Also check: .claude/memory/
memory_dirs = []
Glob(pattern=".claude/agent-memory/*/MEMORY.md")
Glob(pattern=".claude/projects/*/memory/MEMORY.md")
Glob(pattern=".claude/memory/MEMORY.md")
# For each discovered MEMORY.md, glob all *.md files in that directory
for dir in memory_dirs:
Glob(pattern=f"{dir}/../*.md") # All memory files alongside MEMORY.mdRead every discovered memory file. Parse frontmatter (name, description, type) and body content. Build an in-memory inventory:
inventory = [{
"path": "/abs/path/to/file.md",
"name": frontmatter.name,
"type": frontmatter.type, # user, feedback, project, reference
"description": frontmatter.description,
"body": body_text,
"file_refs": [], # extracted file paths
"symbol_refs": [], # extracted function/class names
"topics": [], # key phrases for duplicate detection
}]For each memory file, extract references and verify they still exist.
Extract paths that look like file references (patterns: paths with / and file extensions, backtick-wrapped paths):
# Regex-like extraction from body text:
# - Paths containing / with common extensions: .py, .ts, .tsx, .js, .json, .md, .yaml, .yml, .sh
# - Backtick-wrapped paths: `src/something/file.ts`
# - Quoted paths in frontmatter descriptionsClassify each ref's SCOPE before verifying it. Glob only sees the current repo, so a path that
lives anywhere else can never match and would otherwise be scored as missing. A memory about
~/.claude hooks, a homebrew cask, a cmux config, or another repo is not stale just because this
repo does not contain it.
def scope(ref):
# Anything rooted outside the working repo is UNVERIFIABLE, not missing.
if ref.startswith(("~", "/", "$")): return "UNVERIFIABLE"
if ref.startswith(("http://", "https://")): return "UNVERIFIABLE"
if re.match(r'^[A-Za-z0-9_.-]+/', ref) and not (REPO / ref.split("/")[0]).exists():
return "UNVERIFIABLE" # first segment is not a real top-level dir here
return "REPO_RELATIVE"
verifiable = [r for r in file_refs if scope(r) == "REPO_RELATIVE"]
external = [r for r in file_refs if scope(r) == "UNVERIFIABLE"]
missing = []
for ref in verifiable:
Glob(pattern=ref)
# If no match → missing.append(ref)The staleness ratio is computed over verifiable ONLY. external refs are recorded for the
report and never counted toward pruning. A memory with zero verifiable refs is EVERGREEN no
matter how many external paths it names.
Extract function/class names (patterns: function_name(), ClassName, def function_name):
for symbol in symbol_refs:
Grep(pattern=symbol, path=".", output_mode="files_with_matches", head_limit=1)
# If no match → mark as STALE_SYMBOL_REF| Finding | Classification | Action |
|---|---|---|
| Zero VERIFIABLE refs (none, or all UNVERIFIABLE) | EVERGREEN | Keep |
| All verifiable refs valid, all symbols found | FRESH | Keep |
| Some verifiable refs missing | PARTIALLY_STALE | Flag for review |
| All verifiable refs missing AND all symbols missing | FULLY_STALE | Prune candidate |
Only memories classified as FULLY_STALE are auto-pruned. PARTIALLY_STALE memories are reported but kept — the user decides.
FULLY_STALE is necessary but not sufficient to delete. Every guard below downgrades to
PARTIALLY_STALE (kept + flagged). These exist because memory files are not in git: a wrong
delete is silent and unrecoverable, so the asymmetry always favours keeping.
GUARD_DAYS = 14
for m in list(fully_stale_files):
reason = None
# 1. Preferences do not decay because a path moved.
if m["type"] == "user":
reason = "type:user is never auto-pruned"
# 2. A feedback/reference memory carries a LESSON; the file paths in it are
# illustrations, not a manifest. Its worth does not expire when an
# illustrative path moves, and ref-extraction is lossy anyway (it catches
# `file.ts` but misses `file.ts:186` and `functionName()`). Only project
# memories — which track live work against concrete files — are eligible
# to go fully stale on ref death.
elif m["type"] in ("feedback", "reference"):
reason = f"type:{m['type']} value is the lesson, not its file refs"
# 3. Recently written memories describe the present, whatever their refs say.
elif (now - m["mtime"]) < GUARD_DAYS * 86400:
reason = f"modified within {GUARD_DAYS}d"
# 4. A memory that exists to prevent a regression must outlive the code it cites.
elif re.search(r'\b(do not|don\'t|never|avoid)\b', m["body"], re.I):
reason = "carries a do-not/never directive"
if reason:
m["classification"] = "PARTIALLY_STALE"
m["kept_reason"] = f"prune-guard: {reason}"
fully_stale_files.remove(m)
partially_stale_files.append(m)Guard 3 is the subtle one. reference_cmux_scroll_blank_research said "RESOLVED; do NOT re-suggest
tui:fullscreen on cmux" and every path it cited had moved. Deleting it reintroduces exactly the
regression it was written to prevent. A memory whose value is a prohibition is at its most useful
precisely when the original code is gone.
Closing the VERIFY loop: a deletion must survive the question "was this actually consulted?". A memory whose external refs all vanished (FULLY_STALE) but that the agent keeps looking up is still load-bearing — its refs are stale, its knowledge is live. So before pruning, read .claude/logs/memory-consult.jsonl (written by memory-validator on every mcp__memory__search_nodes/open_nodes/read_graph) and downgrade any recently-consulted FULLY_STALE memory to PARTIALLY_STALE (kept + flagged, not auto-deleted).
import json, time
from pathlib import Path
def recently_consulted_terms(days=14):
log = Path(".claude/logs/memory-consult.jsonl")
if not log.exists():
return set()
cutoff = time.time() - days * 86400
terms = set()
for line in log.read_text().splitlines():
try:
e = json.loads(line)
except ValueError:
continue # best-effort: skip malformed lines
# open_nodes carries exact entity names; search carries a query string
terms.update(n.lower() for n in e.get("names", []))
if e.get("query"):
terms.update(w.lower() for w in e["query"].split() if len(w) > 2)
return terms
consulted = recently_consulted_terms()
for m in list(fully_stale_files):
slug = Path(m["path"]).stem.lower()
name = (m.get("name") or "").lower()
if name in consulted or any(c in slug or slug in c for c in consulted):
m["classification"] = "PARTIALLY_STALE"
m["kept_reason"] = "consult-gate: looked up in the last 14 days (#2351)"
fully_stale_files.remove(m)
partially_stale_files.append(m)This is conservative by design — fuzzy term matching errs toward keeping a maybe-consulted memory rather than deleting a live one. The Step 6 report records each consult-gated keep (the "did it matter?" audit the loop was missing). If the log is absent (consult instrumentation not yet exercised), the gate is a no-op and pruning proceeds as before.
Compare memories pairwise within the same directory. Two memories are duplicates when:
feedback, both project, etc.)name or description fields reference the same conceptstopwords = {"the", "a", "an", "is", "are", "was", "were", "be", "been",
"have", "has", "had", "do", "does", "did", "will", "would",
"could", "should", "may", "might", "can", "shall", "to", "of",
"in", "for", "on", "with", "at", "by", "from", "as", "into",
"through", "during", "before", "after", "this", "that", "it",
"not", "no", "but", "or", "and", "if", "then", "than", "so"}
def significant_words(text):
words = set(text.lower().split()) - stopwords
return {w for w in words if len(w) > 2}
def overlap_ratio(words_a, words_b):
if not words_a or not words_b:
return 0.0
intersection = words_a & words_b
smaller = min(len(words_a), len(words_b))
return len(intersection) / smaller if smaller > 0 else 0.0
# For each pair with same type:
# if overlap_ratio >= 0.6 → DUPLICATE pair
# Keep the NEWER file (by filesystem mtime), prune the olderContradictions occur when two memories of the same type make opposing claims about the same subject. Detection:
negation_pairs = [
("do ", "do not "), ("do ", "don't "),
("use ", "avoid "), ("use ", "stop using "),
("prefer ", "don't prefer "), ("always ", "never "),
]
# For each pair flagged as contradictory:
# Keep the NEWER file (more recent decision supersedes)
# Prune the older file--dry-run)If --dry-run flag is present, skip all writes. Output the full report (Step 6) with [DRY RUN] prefix and list what WOULD be changed:
[DRY RUN] Would delete: .claude/agent-memory/foo/stale_old_path.md (FULLY_STALE)
[DRY RUN] Would delete: .claude/agent-memory/foo/duplicate_auth.md (DUPLICATE of auth_patterns.md)
[DRY RUN] Would delete: .claude/agent-memory/foo/old_preference.md (CONTRADICTED by new_preference.md)
[DRY RUN] Would rebuild: .claude/agent-memory/foo/MEMORY.md (3 entries removed, 12 remaining)# Move, never rm: memory files are not in git (see references/safe-deletes.md)
trash = f"{memory_dir}/.trash/{date.today().isoformat()}"
Bash(command=f"mkdir -p '{trash}'")
# 1. FULLY_STALE files, 2. DUPLICATE (older), 3. CONTRADICTED (older)
to_remove = [s["path"] for s in fully_stale_files]
to_remove += [d["older"]["path"] for d in duplicate_pairs]
to_remove += [c["older"]["path"] for c in contradiction_pairs]
for path in to_remove:
Bash(command=f"mv '{path}' '{trash}/'")
# 4. Rebuild MEMORY.md index from surviving files (exclude .trash/ from the walk)Read all surviving .md files (excluding MEMORY.md itself). Generate the index:
# <Directory Name> Memory
- [Name](filename.md) -- one-line description from frontmatterRules for the rebuilt index:
budget_chars = (17 * 1024 - non_entry_overhead) / entry_countMEMORY.md and MEMORY-ARCHIVE.md: indexed(MEMORY.md) + indexed(MEMORY-ARCHIVE.md) == files_on_disk,
the two sets are disjoint, every link target exists with its exact-case name, and MEMORY.md
carries exactly one trailer line (> N memory files ...) that links MEMORY-ARCHIVE.md. Exclude
MEMORY*.md, .MEMORY.md.prev, .trash/ and _backup/ from files_on_disk. A single-file check
(indexed == files_on_disk) flags every archived entry as missing and is wrong once an archive exists.# Write the rebuilt MEMORY.md. Copy to .MEMORY.md.prev FIRST: this one write
# replaces every memory's pointer, so a bad index degrades sessions silently.
Write(path="<memory_dir>/MEMORY.md", content=rebuilt_index)Consistency (1:1 with the files) and budget (bytes a session can afford) are different questions;
the rebuild answers only the first. The budget pass is a script, so the report is the same whoever
runs it. Read-only by default; --apply only after the user accepts the moves (batch when > 3):
Bash(command=f"node ${{CLAUDE_PLUGIN_ROOT}}/skills/dream/scripts/index-budget.mjs '{memory_dir}' --json")
# bytes vs ceiling (ORK_CONTEXT_FILE_BUDGET_BYTES, else 17,408 B), per-section sizes, long entries,
# the two-file invariant, and moves proposed BY RULE (oldest first). Add --apply to rotate
# .MEMORY.md.prev, move the lines to MEMORY-ARCHIVE.md, rewrite the trailer, re-verify (exit 1 on failure).Rule, never-move set, exhausted-candidates fallback: Read("references/index-budget.md").
Output a summary table after consolidation:
## Dream Consolidation Report
| Metric | Count |
|--------|-------|
| Memory directories scanned | N |
| Total memory files scanned | N |
| Stale entries pruned | N |
| Duplicates merged | N |
| Contradictions resolved | N |
| Partially stale (kept, flagged) | N |
| Evergreen (no external refs) | N |
| Surviving memories | N |
| MEMORY.md indexes rebuilt | N |
| Promotion candidates (2+ repos, STEP 9) | N |
### Changes Made
| File | Action | Reason |
|------|--------|--------|
| `path/to/file.md` | DELETED | Fully stale: all referenced files removed |
| `path/to/old.md` | DELETED | Duplicate of `path/to/new.md` |
| `path/to/outdated.md` | DELETED | Contradicted by `path/to/current.md` |
### Flagged for Review (PARTIALLY_STALE)
| File | Missing References |
|------|-------------------|
| `path/to/file.md` | `src/old/path.ts` no longer exists |If --dry-run, prefix the entire report with:
[DRY RUN] No files were modified. Run without --dry-run to apply changes.| Condition | Response |
|---|---|
| No memory directories found | Report "No memory directories found" and exit |
| No memory files in directory | Report "Directory empty, nothing to consolidate" |
| All memories are FRESH | Report "All N memories are current, nothing to prune" |
| MEMORY.md still exceeds the byte ceiling after rebuild and demotion | Warn user, list the remaining candidates, never auto-truncate |
| File deletion fails | Report error, continue with remaining files |
| Memory file has no frontmatter | Treat as EVERGREEN (cannot verify refs without metadata) |
After STEP 6: Read("references/housekeeping.md") for STEP 7 (orphaned plugin prune offer) and STEP 8 (stale project state hint, preview only, never purge).
A memory pattern that shows up in 2+ projects is a capability that outgrew its repo. While consolidating, detect these deterministically and offer promotion -- dream never moves content itself, so this step stays safe when dream is model-invoked.
# For each memory file touched in this run, derive a topic key: the filename slug minus
# scope words (dates, project names). Then look for the same key in OTHER projects'
# memory indexes (index lines are "- [Title](file.md) -- hook"):
grep -l -i "<topic-key>" ~/.claude/projects/*/memory/MEMORY.md \
| grep -v "<current-project-dir>"Interactive runs: AskUserQuestion per candidate (batch when more than 3):
promotion: declined to the memory's frontmatter
metadata so future runs skip it.Non-interactive / dry runs: list candidates in the Dream Consolidation Report under
Promotion candidates: with the matching project paths. No prompt, no mutation.
remembermemory searchmemory loadork:remember -- Store decisions and patterns (write-side)ork:memory -- Search, load, sync, visualize (read-side)© yonatangross, 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 4 other files (scripts, references) in src/skills/dream of yonatangross/orchestkit.
Open the folder on GitHubat commit 02bbf9a
Dream 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 |
|---|---|---|---|---|---|---|
| Dream this skillyonatangross/orchestkit | 290 | — | ~5.2k | Automated safety check: Notes | MIT | |
| Consolidate Memoryasgeirtj/system_prompts_leaks | 69k | — | ~492 | Automated safety check: Pass | CC0-1.0 | |
| Merge Main To Nightlydotnet/dotnet-docker | 4.9k | — | ~249 | Automated safety check: Pass | MIT | |
| Mergeremotion-dev/remotion | 63k | — | ~508 | Automated safety check: Pass | Custom licence | |
| Mergewithastro/astro | 63k | — | ~153 | Automated safety check: Pass | Custom licence | |
| Merge Upsymfony/symfony | 31k | — | ~4k | Automated safety check: Pass | MIT |
asgeirtj/system_prompts_leaks
Reflective pass over your memory files — merge duplicates, fix stale facts, prune the index.
dotnet/dotnet-docker
Create a PR to merge main into the nightly branch after a .NET containers release.
remotion-dev/remotion
Wait for a Remotion pull request to become mergeable, handle merge conflicts, distinguish genuine CI failures from flakes, rerun flaky checks through the flake skill, and merge the PR.
withastro/astro
Handle main-to-next merge tasks including conflict resolution, changeset cleanup, and CI fix-ups.
symfony/symfony
Cascade-merge maintained Symfony branches from oldest to newest (e.g.
alirezarezvani/claude-skills
Merge the winning agent's branch into base, archive losers, and clean up worktrees.
yonatangross/orchestkit
API contract design for REST and GraphQL, covering resource shape, URL and header versioning with deprecation windows, RFC 9457 Problem Details error handling, and OpenAPI specs.
yonatangross/orchestkit
ADR templates in the Nygard format with context, decision, consequences, and alternatives.
yonatangross/orchestkit
Single-pass codebase analysis leveraging a 1M-token context window for comprehensive security scanning, architecture review, and dependency auditing.
yonatangross/orchestkit
Structured review processes, conventional comments, language-specific checklists, and feedback templates.
yonatangross/orchestkit
Creates GitHub pull requests with pre-flight validation, conventional title formatting, and structured summary generation.
yonatangross/orchestkit
Multi-angle codebase exploration spawning 3-5 parallel agents for code structure, data flow, architecture patterns, and health assessment.
Nightly memory consolidation: prunes stale entries, merges duplicates, resolves contradictions, rebuilds the MEMORY.md index. Dream is an agent skill from yonatangross/orchestkit.md index.
Dream fits situations like: memory files accumulated over many sessions need cleanup.
Run `npx skills add yonatangross/orchestkit --skill dream -a claude-code`. Or copy the skill folder (src/skills/dream in yonatangross/orchestkit) into .claude/skills/dream in your project. Claude Code loads it when a task matches its description.
Run `npx skills add yonatangross/orchestkit --skill dream -a codex`. Or copy the skill folder (src/skills/dream in yonatangross/orchestkit) into .agents/skills/dream 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 yonatangross/orchestkit --skill dream -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/dream, .gemini/skills/dream, .github/skills/dream and .opencode/skills/dream in your project.
Going by SKILL.md and its folder, Dream needs JavaScript for the scripts in its folder. Our summary lists: Python 3; Node.js. Its frontmatter pre-approves these tools: Read, Write, Edit, Glob, Grep, Bash, mcp__memory__search_nodes, mcp__memory__open_nodes, mcp__memory__read_graph. Compatibility (from SKILL.md): Claude Code 2.1.277+.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. 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.
Dream is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.2k tokens (SKILL.md is roughly 21k 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 2.3k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Dream: Consolidate Memory (asgeirtj/system_prompts_leaks, 69k stars), Merge Main To Nightly (dotnet/dotnet-docker, 4.9k stars), Merge (remotion-dev/remotion, 63k stars) and Merge (withastro/astro, 63k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
yonatangross (a GitHub user) maintains it in yonatangross/orchestkit, which has 290 GitHub stars. The repository holds 108 skills in this directory. The repository was last updated on October 9, 2026.
Source: yonatangross/orchestkit on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.