Obsidian Canvas Boards
AgriciDaniel/claude-obsidian
Creates, inspects and updates Obsidian JSON Canvas boards in a vault, with text, file, link, group and edge nodes, using safe recoverable edits.
Use sift-kg as an AI second brain — a persistent knowledge graph your agent operates from across sessions.
$ npx skills add juanceresa/sift-kg --skill sift-kg -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install juanceresa/sift-kg sift-kg --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/juanceresa/sift-kg.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/sift-kg .claude/skills/sift-kg && 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 "sift-kg" agent skill from https://github.com/juanceresa/sift-kg/tree/main/.agents/skills/sift-kg into .claude/skills/sift-kg/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sift-kg", 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/juanceresa/sift-kg/tree/main/.agents/skills/sift-kgType 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 juanceresa/sift-kg --skill sift-kg -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install juanceresa/sift-kg sift-kg --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/juanceresa/sift-kg.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/sift-kg .agents/skills/sift-kg && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "sift-kg" agent skill from https://github.com/juanceresa/sift-kg/tree/main/.agents/skills/sift-kg into .agents/skills/sift-kg/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sift-kg", 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 juanceresa/sift-kg --skill sift-kg -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install juanceresa/sift-kg sift-kg --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/juanceresa/sift-kg.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/sift-kg .cursor/skills/sift-kg && 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 "sift-kg" agent skill from https://github.com/juanceresa/sift-kg/tree/main/.agents/skills/sift-kg into .cursor/skills/sift-kg/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sift-kg", 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/juanceresa/sift-kg.git --path .agents/skills/sift-kg--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 juanceresa/sift-kg --skill sift-kg -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install juanceresa/sift-kg sift-kg --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/juanceresa/sift-kg.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/sift-kg .gemini/skills/sift-kg && 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 "sift-kg" agent skill from https://github.com/juanceresa/sift-kg/tree/main/.agents/skills/sift-kg into .gemini/skills/sift-kg/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sift-kg", 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 juanceresa/sift-kg sift-kgInstalls 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 juanceresa/sift-kg --skill sift-kg -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/juanceresa/sift-kg.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/sift-kg .github/skills/sift-kg && 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 "sift-kg" agent skill from https://github.com/juanceresa/sift-kg/tree/main/.agents/skills/sift-kg into .github/skills/sift-kg/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sift-kg", 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 juanceresa/sift-kg --skill sift-kg -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install juanceresa/sift-kg sift-kg --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/juanceresa/sift-kg.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/sift-kg .opencode/skills/sift-kg && 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 "sift-kg" agent skill from https://github.com/juanceresa/sift-kg/tree/main/.agents/skills/sift-kg into .opencode/skills/sift-kg/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sift-kg", 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.
sift-kgUse sift-kg as an AI second brain — a persistent knowledge graph your agent operates from across sessions.
Sift Kg is an agent skill from juanceresa/sift-kg. Use sift-kg as an AI second brain — a persistent knowledge graph your agent operates from across sessions. Use proactively at session start to orient, when answering questions about the user's projects or domain, when generating ideas or suggestions, when user asks "what do I know about X", "how does X connect to Y", "find connections", "what should I work on", "give me ideas", or when you need to understand the structure of the user's knowledge. Not needed for one-off document analysis — sift's CLI commands work…
Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Knowledge Management, covering Second brain and Knowledge graphs. The repository describes itself as: Turn any collection of documents into a knowledge graph. Extract entities and relationships via LLM, deduplicate with your approval. Map domains, find hidden connections, spot… The licence is MIT.
Read from SKILL.md and the folder at commit d786991. 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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are bash).
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.
Sift Kg loads about 2.7k tokens when it runs. Until then it costs about 139 tokens; SKILL.md has 1,140 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); files beside SKILL.md are not scanned.
The full file from juanceresa/sift-kg at commit d786991, republished under its MIT licence (© juanceresa). 1,140 words, ~2,688 tokens.
.claude/skills/sift-kg/SKILL.md (or your agent's skills folder).The knowledge graph is your persistent, structured memory of the user's world — entities, relationships, communities, and how they all connect. It is built from the user's documents and persists across sessions.
Treat the graph as your persistent understanding of the user's world. When the user asks about their projects, domain, or knowledge — check the graph first. It grounds your responses in real entities and relationships instead of guessing. You don't need to query it for every interaction, but for anything related to the user's work or knowledge, the graph should inform your answer.
At the start of every session, orient from the graph:
sift info --json -o output/This returns: domain, entity_types, entities (count), relations (count), documents_processed, merge_proposals and relation_review status (if dedup has been run), and narrative_generated. If no graph exists yet, go to Build the Graph below.
Then load the structural map:
sift topology -o output/This returns:
Keep this topology in mind for the session. Community labels and bridge entities help you navigate the user's knowledge. When relevant questions come up, you already have the structural context.
Note on community labels: Labels are auto-generated as "Community 1", "Community 2" unless sift narrate has been run (which generates descriptive LLM labels like "Palm Beach Elite Network"). To understand what a generically-labeled community represents, look at its top_entities list — these are entity IDs (e.g., person:harry_boyte, program:civic_architecture), not display names. Query interesting IDs with sift query to get full context.
Note on top_entities: These are entity IDs, not display names. Read them by convention: person:harry_boyte = a person named Harry Boyte, company:palantir_technologies = a company named Palantir Technologies.
sift query "topic or name" -o output/ # fuzzy name search
sift query "person:exact_entity_id" -o output/ # exact ID lookup
sift query "topic" --depth 2 -o output/ # 2-hop neighborhood
sift query "topic" -t PERSON -o output/ # filter by entity typeReturns: matched entity with community membership and bridge status, plus the full subgraph (nodes + edges) around it. If multiple entities match, the top result (by connection count) is returned with an other_matches list — re-query with the exact entity ID for a specific one.
sift search "name" --json -o output/ # find entities
sift search "name" --json --relations -o output/ # include direct relations
sift search "name" --json --description -o output/ # include descriptionsUse search when you just need to find an entity or check if something exists. Use query when you need the full neighborhood subgraph.
When the user asks about their work — "what do I know about X?", "tell me about my project Y" — always query the graph first before responding:
sift query "X" -o output/Read the match info (community, bridge status, connections) and the subgraph. Base your answer on actual entities and relationships from the graph. If the entity isn't in the graph, say so — don't invent connections.
This is the highest-value reasoning pattern. It identifies opportunities to connect knowledge areas that are structurally separated.
Step 1: Get topology and identify disconnected or weakly connected community pairs.
sift topology -o output/Look at community_connections. Community pairs with 0 shared_edges are completely disconnected — knowledge islands. Pairs with low shared_edges (1-3) are weakly connected.
Step 2: For each disconnected pair, examine what each community contains.
Read the top_entities (entity IDs) from each community in the topology output. Look at entity types — if both communities contain overlapping types (e.g., both have CONCEPT entities, or both have ORGANIZATION entities), there may be a semantic connection that isn't structurally represented yet.
Step 3: Query top entities from each side to find shared concepts.
sift query "top_entity_from_community_A" -o output/
sift query "top_entity_from_community_B" -o output/Compare the two subgraphs. Look for:
Step 4: Articulate the connection for the user.
Tell them: "Your [Community A topic] and [Community B topic] are currently disconnected in your knowledge graph. But [entity X] in the first area and [entity Y] in the second share [specific relationship or concept]. Connecting these could [specific value]."
The insight is not that the connection exists — the user might already sense it vaguely. The value is identifying which specific entities to connect and why now, grounded in the actual graph structure.
When the user asks "what should I work on?" or "give me ideas":
sift topology -o output/Base suggestions on graph structure:
Prefer suggestions grounded in specific entities, communities, or structural features from the topology over generic advice.
When the user adds new documents and rebuilds the graph:
# Before rebuild — capture current state
sift topology -o output/ > /tmp/topology_before.json
# Rebuild
sift extract ./new-docs/ -o output/ # confirm with user first (costs money)
sift build -o output/
# After rebuild — compare
sift topology -o output/Compare the new topology against the previous snapshot:
Report these changes to the user — "Adding those documents created a new cluster around [topic] and connected it to your existing [community] via [bridge entity]."
When the user provides new documents or wants to create/update the graph:
sift extract ./documents/ -o output/ # extract entities and relations (LLM, costs money)
sift build -o output/ # construct graph + detect communitiesAlways confirm with the user before running extract or resolve — these make LLM API calls that cost money.
Extraction is cached — only new/changed documents are processed on re-run. The graph grows incrementally; entity IDs are deterministic ({type}:{normalized_name}) so the same entity from different documents auto-merges.
For better entity deduplication:
sift resolve -o output/ # LLM proposes entity merges (costs money)
sift review # user approves/rejects interactively
sift apply-merges -o output/ # apply confirmed mergesEntity IDs follow the format {type}:{normalized_name} — all lowercase, underscores for spaces. Examples: person:jeffrey_epstein, company:palantir_technologies, location:new_york.
Communities are clusters of densely connected entities detected by Louvain algorithm. They represent natural groupings — topics, domains, networks of people.
Bridge entities connect multiple communities. High cross-community edge count = structurally important. These are the nodes that link otherwise separate knowledge areas.
Substantive connections exclude DOCUMENT nodes and MENTIONED_IN edges (provenance metadata). All agent-facing counts and subgraphs use this filtered view.
Graph scale: For graphs under ~500 entities, graph_data.json can be loaded directly into context. For larger graphs, always use sift topology and sift query — never attempt to load the full JSON.
output/
├── graph_data.json # full knowledge graph (nodes + edges)
├── communities.json # community assignments (entity_id -> label)
├── extractions/ # per-document extraction results (cached)
├── narrative.md # prose narrative (optional, from sift narrate)
└── entity_descriptions.json # entity descriptions (optional, from sift narrate)"No graph found" — Run sift extract then sift build first. The graph must be built before querying.
"No communities found" — Run sift build (communities are detected during build). If the graph is very small (<16 entities), community detection may not produce meaningful results.
Empty query results — Try a broader search term, or check sift search "term" --json to see what entities exist. Entity names may differ from what you expect — check aliases.
Large graph, slow queries — Use sift topology for the overview instead of loading graph_data.json. Use sift query with --depth 1 (default) to keep subgraphs manageable.
© juanceresa, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/sift-kg of juanceresa/sift-kg.
Open the folder on GitHubat commit d786991
Sift Kg 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 |
|---|---|---|---|---|---|---|
| Sift Kg this skilljuanceresa/sift-kg | 800 | — | ~2.7k | Automated safety check: Pass | MIT | |
| Obsidian Canvas BoardsAgriciDaniel/claude-obsidian | 15k | — | ~1.4k | Automated safety check: Pass | MIT | |
| Subscription Videos MetadataEfficientStreet/youtube-subscriptions-ingest | 180 | — | ~7.1k | Automated safety check: Notes | MIT | |
| Basic Memory Onboardingbasicmachines-co/basic-memory | 4.1k | — | ~3.4k | Automated safety check: Pass | AGPL-3.0 | |
| Ontology1mancompany/OneManCompany | 442 | 2 repos | ~1.5k | Automated safety check: Pass | Apache-2.0 | |
| 3D Brainnateherkai/AIS-OS | 1.6k | — | ~2.1k | Automated safety check: Pass | Custom licence |
AgriciDaniel/claude-obsidian
Creates, inspects and updates Obsidian JSON Canvas boards in a vault, with text, file, link, group and edge nodes, using safe recoverable edits.
EfficientStreet/youtube-subscriptions-ingest
Pull metadata from YouTube subscription videos into a second-brain vault as a real cross-linked knowledge graph — not just a flat archive.
basicmachines-co/basic-memory
Guides a newcomer to Basic Memory through designing a personal knowledge system, then teaches its use and sets up their assistant to load it each session.
1mancompany/OneManCompany
Typed knowledge graph for structured agent memory and composable skills.
nateherkai/AIS-OS
A skill your agent uses when someone asks to build a 3D brain, visualize their AIOS or second brain, turn their knowledge into an interactive graph, or run /3d-brain or /3D brain.
RinDig/icm-architect
Design any process, idea, problem, or body of knowledge into an ICM (Interpretable Context Methodology) workspace — folder structure as agent architecture — or restructure an existing folder, repo…
Categories
Use sift-kg as an AI second brain — a persistent knowledge graph your agent operates from across sessions. Sift Kg is an agent skill from juanceresa/sift-kg. Use sift-kg as an AI second brain — a persistent knowledge graph your agent operates from across sessions.
Sift Kg fits situations like: asks what do I know about X; how does X connect to Y; find connections; what should I work on.
Run `npx skills add juanceresa/sift-kg --skill sift-kg -a claude-code`. Or copy the skill folder (.agents/skills/sift-kg in juanceresa/sift-kg) into .claude/skills/sift-kg in your project. Claude Code loads it when a task matches its description.
Run `npx skills add juanceresa/sift-kg --skill sift-kg -a codex`. Or copy the skill folder (.agents/skills/sift-kg in juanceresa/sift-kg) into .agents/skills/sift-kg 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 juanceresa/sift-kg --skill sift-kg -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/sift-kg, .gemini/skills/sift-kg, .github/skills/sift-kg and .opencode/skills/sift-kg in your project.
SKILL.md names no scripts, command-line tools or credentials: Sift Kg is instructions for the agent only.
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 no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Sift Kg is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Sift Kg: Obsidian Canvas Boards (AgriciDaniel/claude-obsidian, 15k stars), Subscription Videos Metadata (EfficientStreet/youtube-subscriptions-ingest, 180 stars), Basic Memory Onboarding (basicmachines-co/basic-memory, 4.1k stars) and Ontology (1mancompany/OneManCompany, 442 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
juanceresa (a GitHub user) maintains it in juanceresa/sift-kg, which has 800 GitHub stars. The repository was last updated on May 12, 2026.
Source: juanceresa/sift-kg on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.