DeepTutor CLI
HKUDS/DeepTutor
Teaches the agent to set up and run DeepTutor from the command line: chat and capabilities, knowledge bases, partners, memory, sessions, notebooks and the server or Web app.
Investigate a topic against preserved sources and write a draft-status research article under research/ in a Knowledge Base project (the knowledge-base starter pack).
$ npx skills add inkeep/open-knowledge --skill research-with-sources -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install inkeep/open-knowledge research-with-sources --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/inkeep/open-knowledge.git skills-src && mkdir -p .claude/skills && cp -r skills-src/packages/server/assets/skills/packs/knowledge-base/research .claude/skills/research-with-sources && 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 "research-with-sources" agent skill from https://github.com/inkeep/open-knowledge/tree/main/packages/server/assets/skills/packs/knowledge-base/research into .claude/skills/research-with-sources/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "research-with-sources", 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/inkeep/open-knowledge/tree/main/packages/server/assets/skills/packs/knowledge-base/researchType 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 inkeep/open-knowledge --skill research-with-sources -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install inkeep/open-knowledge research-with-sources --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/inkeep/open-knowledge.git skills-src && mkdir -p .agents/skills && cp -r skills-src/packages/server/assets/skills/packs/knowledge-base/research .agents/skills/research-with-sources && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "research-with-sources" agent skill from https://github.com/inkeep/open-knowledge/tree/main/packages/server/assets/skills/packs/knowledge-base/research into .agents/skills/research-with-sources/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "research-with-sources", 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 inkeep/open-knowledge --skill research-with-sources -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install inkeep/open-knowledge research-with-sources --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/inkeep/open-knowledge.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/packages/server/assets/skills/packs/knowledge-base/research .cursor/skills/research-with-sources && 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 "research-with-sources" agent skill from https://github.com/inkeep/open-knowledge/tree/main/packages/server/assets/skills/packs/knowledge-base/research into .cursor/skills/research-with-sources/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "research-with-sources", 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/inkeep/open-knowledge.git --path packages/server/assets/skills/packs/knowledge-base/research--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 inkeep/open-knowledge --skill research-with-sources -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install inkeep/open-knowledge research-with-sources --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/inkeep/open-knowledge.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/packages/server/assets/skills/packs/knowledge-base/research .gemini/skills/research-with-sources && 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 "research-with-sources" agent skill from https://github.com/inkeep/open-knowledge/tree/main/packages/server/assets/skills/packs/knowledge-base/research into .gemini/skills/research-with-sources/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "research-with-sources", 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 inkeep/open-knowledge research-with-sourcesInstalls 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 inkeep/open-knowledge --skill research-with-sources -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/inkeep/open-knowledge.git skills-src && mkdir -p .github/skills && cp -r skills-src/packages/server/assets/skills/packs/knowledge-base/research .github/skills/research-with-sources && 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 "research-with-sources" agent skill from https://github.com/inkeep/open-knowledge/tree/main/packages/server/assets/skills/packs/knowledge-base/research into .github/skills/research-with-sources/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "research-with-sources", 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 inkeep/open-knowledge --skill research-with-sources -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install inkeep/open-knowledge research-with-sources --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/inkeep/open-knowledge.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/packages/server/assets/skills/packs/knowledge-base/research .opencode/skills/research-with-sources && 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 "research-with-sources" agent skill from https://github.com/inkeep/open-knowledge/tree/main/packages/server/assets/skills/packs/knowledge-base/research into .opencode/skills/research-with-sources/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "research-with-sources", 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.
research-with-sourcesInvestigate a topic against preserved sources and write a draft-status research article under research/ in a Knowledge Base project (the knowledge-base starter pack).
Research With Sources is an agent skill from inkeep/open-knowledge. Investigate a topic against preserved sources and write a draft-status research article under research/ in a Knowledge Base project (the knowledge-base starter pack). Read when asked to research a topic, compare options, synthesize sources, gather evidence, or extend an existing research doc. Carries the full procedure: scan existing coverage, agree a research rubric, capture every source verbatim before analyzing, write the article incrementally so a crash never loses work, cite every claim, and link it back…
Its SKILL.md is about 5.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts. Compatibility notes: Any agent host with the OpenKnowledge MCP server configured. Installed project-local by ok seed --pack knowledge-base.
It sits in Knowledge Management, covering Knowledge bases and Quizzes and assessments. The repository describes itself as: Beautiful, AI-native markdown IDE and LLM wiki. The licence is GPL-3.0.
9 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 205b3bd. 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.
Shell commands in SKILL.md call:
curlFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use curl, which can reach the network depending on how they are called.
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.
Any agent host with the OpenKnowledge MCP server configured. Installed project-local by `ok seed --pack knowledge-base`.
From compatibility in the SKILL.md frontmatter.
Research With Sources loads about 5.6k tokens when it runs. Until then it costs about 170 tokens; SKILL.md has 2,610 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 inkeep/open-knowledge at commit 205b3bd, republished under its GPL-3.0 licence (© inkeep). 2,610 words, ~5,556 tokens.
.claude/skills/research-with-sources/SKILL.md (or your agent's skills folder).This skill is pack guidance. The platform
/open-knowledgeskill (read/write/preview/linking/grounding rules) still governs every markdown operation — this layers the procedure on top.
Conduct evidence-driven research on a topic and produce a provisional research article under research/. Provisional, not canonical: research articles capture findings, trade-offs, and open questions at a point in time. They are promoted to canonical articles via the /consolidate-notes skill only when decisions solidify.
The content directory is the resolved content.dir — read it with config({ key: 'content.dir' }) if you don't already know it. Paths below are relative to it.
status: draft and an inline sources: frontmatter list pointing at raw sources captured via the ingest procedure. This is the default unless the user explicitly opts out.Path A is the default because provisional articles compound over time; spoken answers do not.
Legacy reads: Existing articles may use status: provisional and string paths under sources:. Treat those as draft research and source resources. Do not mass-rewrite them; new writes use the OKF shapes below.
| Mode | Behavior | How entered |
|---|---|---|
| Supervised (default) | Stop at the scoping gate for user rubric confirmation. Route coverage decisions interactively. | Default when a user drives the session. |
| Headless | Auto-confirm rubric after proposing it. Auto-select routing decisions. Skip interactive prompts. All other gates (scan, analysis, validation, grounding) still enforced. | Explicit "don't wait for me", "just proceed", "run headless" — or non-interactive container environments. |
In headless mode, propose the rubric AND proceed immediately. Mark the Scoping task completed after proposing.
Hard gates — do NOT skip ahead. If you find yourself about to run a WebFetch or WebSearch without completing Steps 0-2, STOP — you skipped a gate.
Path B shortcut: If the user explicitly requested a direct answer in Step 2, skip Steps 5 and 7. Steps 0, 1, 3, 4, 6, 8 still apply (evidence discipline doesn't relax just because output is conversational).
Research articles default to external framing — investigating third-party topics, technologies, concepts, public repos, papers, official docs. Do NOT mix the user's own codebase analysis into the research article unless the user explicitly asks. Mixing drifts findings from factual synthesis toward opinion-forming applied to the organization, reducing factual fidelity.
PERSIST AS YOU GO — crash-safe checkpoint rule. The single most expensive failure this procedure produces is completed research lost to a mid-session rate limit or crash — analysis held in context, never written, discarded when the session died. The user paid for work that vanished. The knowledge base is the checkpoint; two rules make every step crash-safe:
edit its findings into the article before moving to the next. A crash after reading five of eight sources then leaves five sections safely in the KB; you resume by reading the partial article back, not by re-running the whole sweep.Structured notes that live only in your context are not persisted work. If a finding is worth keeping, it belongs in an ingested source or in the article — written, not held.
ALWAYS THE FIRST ACTION. Before any read, any scan, any fetch — create tasks. They persist across context compaction, make skipped steps immediately visible, and show progress to the user.
Create these tasks via your host's task system (TaskCreate in Claude; equivalent elsewhere):
TaskCreate: "Research: Scan existing coverage + route" → start as in_progress
TaskCreate: "Research: Collaborative scoping — rubric gate" → pending, blocked by #1
TaskCreate: "Research: Capture sources via ingest" → pending, blocked by #2
TaskCreate: "Research: Read + analyze" → pending, blocked by #3
TaskCreate: "Research: Write the research article" → pending, blocked by #4
TaskCreate: "Research: Link aggressively + file Q&A back" → pending, blocked by #5
TaskCreate: "Research: Validate (frontmatter + dead-links)" → pending, blocked by #6
TaskCreate: "Research: Recap + follow-up directions" → pending, blocked by #7Use the host's blocked-by relation to enforce ordering. As you complete each step, mark the task completed and the next task in_progress.
Path B variant: If scoping determines Path B (direct answer), drop tasks #5 and #7 — they don't apply.
Path C variant: If Step 1 routes to Path C (update existing), drop tasks #3 and #5 (ingest is usually unnecessary and no new article is created) and rename task #4 to "Research: Read existing article + diff deltas."
Why tasks: the observed failure mode is the agent jumping straight to WebFetch without scanning or scoping. Tasks make the skipped gates obvious to the user mid-session.
MANDATORY FIRST RESEARCH STEP. Before any external fetch, scan what the knowledge base already holds.
If the user explicitly references an existing research article (names it, links it, says "update/refresh/extend"): → Skip the scan. Go directly to Path C.
Otherwise, always scan first:
exec("grep -rln <topic-keyword> <content-dir>") — returns matching files with frontmatter enrichment so you can judge relevance without opening each.exec("ls -A <content-dir>") — surfaces folder layout and most-recent-updated doc per subdir.exec("cat <path>") — returns full doc + frontmatter + backlinks + recent shadow-repo activity.Classify:
| Coverage | What it means | Route to |
|---|---|---|
| Fully covered | An existing article directly answers the question with evidence | Present findings; offer to elaborate, verify, extend, or explicitly new-report |
| Partially covered | Related research exists; the specific question is a natural extension | Offer: (1) extend existing via Path C, (2) new article via Path A |
| Not covered | No meaningful overlap | Proceed to Path A (default) or Path B |
Fully covered:
"We already have research on this in
<path>. Here's what it found: [2-4 key findings]. Options: (1) use as-is, (2) verify / refresh (article is from [date]), (3) extend on [specific dimension], (4) new angle if this is a different framing."
Let the user choose. Do NOT start new research when existing research already answers the question.
Partially covered:
"We have related research in
<path>covering [scope]. Your question about [topic] isn't directly answered but it's a natural extension. Options: (1) extend existing via Path C, (2) start new article via Path A. I'd recommend [1 or 2] because [reason]."
Not covered:
Proceed to Step 2 (scoping). If the user asked for a quick answer, flag that Path B may apply and confirm in Step 2's scoping exchange.
Headless mode: auto-select — fully-covered → proceed to new article on the specific angle the caller requested; partially-covered → start new article; not-covered → Path A.
HARD GATE (Supervised mode). Do NOT start external research until the user confirms the rubric. After proposing it, STOP and WAIT for user response. Only then mark the Scoping task completed.
In headless mode: propose the rubric AND proceed. Mark the task completed after proposing.
Return this structure to the user:
## Proposed research rubric
**Question:** [narrowed from the original topic — concrete, answerable, bounded]
**Dimensions to investigate:** [3-7 facets]
1. [Dimension 1]
2. [Dimension 2]
...
**Candidate sources:** [3-8 initial guesses]
- [Source 1 — why it's relevant]
- [Source 2 — why it's relevant]
...
**Success criteria:** [2-3 concrete outcomes — "the article cites X authoritative sources", "open questions are marked explicitly", etc.]
**Output format:** Path A (article) | Path B (direct answer) | Path C (update `<existing-article>`)For each relevant URL, paper, or document in the confirmed rubric, follow the ingest procedure — it lives in the platform /open-knowledge skill at references/ingest-and-sources.md, not in this pack. Typical research pulls 3-8 sources. Too few → thin synthesis. Too many → you'll be reading for the rest of the session.
curl -sL <url>, or ask the user to paste).Read each ingested source carefully. Also load:
exec("cat <path>") (returns frontmatter + backlinks + shadow-repo activity).exec("cat <path>") for OpenKnowledge markdown.Read for .ts / .js / etc.; exec for in-scope .md / .mdx.Take structured notes:
Write these notes into the article as you take them, not after (MUST — see Persist as you go above). Create the article skeleton — frontmatter + the Step 5 section headings — before you start reading, then edit each source's findings into the relevant section the moment you finish analyzing it. The "notes" ARE the article's Findings section in progress; don't hold them in context to transcribe in one pass at Step 5. A rate limit between here and Step 5 must not be able to discard analysis you've already done. By the time you reach Step 5 the article is mostly written, and Step 5 becomes finalize-and-polish.
Every factual claim in the article must cite its source inline. No unsourced speculation. If you don't have evidence: (a) run another search and cite it, (b) mark inline (TODO: needs source), or (c) don't write the claim. Never fabricate.
If you followed Persist as you go, the article already exists and is substantially filled from Step 4 — this step finalizes it (fill any remaining sections, tighten the recommendation, run the structure + validation checks below) rather than writing from a blank doc. If it does not exist or is thin, and you are resuming after an interruption: exec("cat <path>") the partial article back first and fill only the missing sections — and note that any Step 4 analysis that was never written to the KB was lost when the session broke, so re-derive only what's actually missing. Creating the doc from scratch here means the incremental rule was skipped; that's the failure mode, not the happy path.
Save a markdown document inside the content directory. Path convention:
external-sources/ → research/ → articles/), save under research/<slug>.md.research/<topic>/<subtopic>.md.Filename: descriptive, kebab-case (crdt-alternatives-for-editor.md, llm-wikis-and-knowledge-bases.md). No dates — dates go in frontmatter.
---
title: Descriptive title
description: One-line summary of the research question
type: research-note
status: draft
date: YYYY-MM-DD
tags:
- research
- provisional
- <topic-tag>
sources:
- resource: ../external-sources/<source-1>.md
- resource: ../external-sources/<source-2>.md
---## Question
[What specific question does this research answer? Be precise.]
## Context
[Why does this matter? What decision does it inform? Who is the reader?]
## Findings
[Main findings organized by theme, option, or criterion. Every claim cites a source inline.]
### Theme / Option 1
- Pros — with evidence links
- Cons — with evidence links
- Evidence: [Source A](../external-sources/source-a.md), [Source B](../external-sources/source-b.md)
### Theme / Option 2
...
## Trade-offs
[What you gain vs. lose with each option. A comparison table often helps.]
## Open questions
[What you still don't know — candidates for further research, prototyping, or human-judgment decisions.]
## Tentative recommendation
[Your best guess, clearly marked as tentative. Explain the reasoning so a future reader can re-evaluate when new information arrives.]
## Further reading
[Links to the ingested sources + adjacent research + any canonical articles on the topic.]/consolidate-notes skill's job, after decisions land.Research articles are discovery surfaces. Under-linked research becomes an island nobody finds.
[text](./relative/path.md).sources: list: According to [LLM Agents](../external-sources/llm-agents.md)... is stronger than a bare sources: entry.If the user asked a specific question during the research session that produced a citable answer, capture it as its own short page alongside the research — not just as chat. Concrete questions with sourced answers are the highest-signal unit of knowledge you can produce.
what-does-X-mean.md, how-does-Y-work.mdsources: frontmatterRun this checklist before marking complete:
title, description, type: research-note, status: draft, date, and an object-shaped sources: listexec("ls -A <dir>") lists the new file with frontmatter enrichmentaudit({ path: "<doc-path>.md" }) returns clean (every lint violation + broken internal link) — fix every findingClose the loop with the user in conversation:
## Recap
- [Finding 1 — with source]
- [Finding 2 — with source]
- [Key trade-off / contradiction surfaced]
- [1-2 open questions that remain]
**Tentative recommendation:** [state it in one sentence]
**Follow-up research directions** (Path A candidates for later):
1. [Direction 1 — what would it investigate?]
2. [Direction 2 — what would it investigate?]
3. [Direction 3 — what would it investigate?]Follow-ups should be external-source investigations — not actions on the user's codebase (those belong in a spec, not more research). Each direction should be a standalone topic someone could later research.
In headless mode, write the recap into the research article's "Further reading" section rather than prompting interactively.
/consolidate-notes skill's job after a decision actually lands. Premature canonicalization buries uncertainty and misleads future readers.crdt-alternatives-2.md) and mark the old one as superseded.© inkeep, GPL-3.0. 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 packages/server/assets/skills/packs/knowledge-base/research of inkeep/open-knowledge.
Open the folder on GitHubat commit 205b3bd
Research With Sources 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 |
|---|---|---|---|---|---|---|
| Research With Sources this skillinkeep/open-knowledge | 4.4k | — | ~5.6k | Automated safety check: Pass | GPL-3.0 | |
| DeepTutor CLIHKUDS/DeepTutor | 41k | — | ~2.8k | Automated safety check: Pass | Apache-2.0 | |
| Learn From Materialsdmoshehun-prog/learn-from-materials | 937 | — | ~7.9k | Automated safety check: Pass | MIT | |
| Nlm Skilliusztinpaul/ai-research-os-workshop | 179 | 1 repos | ~6.9k | Automated safety check: Pass | MIT | |
| NotebookLM CLI Guidejacob-bd/notebooklm-cli | 256 | — | ~3.4k | Automated safety check: Warn | MIT | |
| Wiki ReviewIssacW228/student-llm-wiki | 177 | — | ~259 | Automated safety check: Pass | MIT |
HKUDS/DeepTutor
Teaches the agent to set up and run DeepTutor from the command line: chat and capabilities, knowledge bases, partners, memory, sessions, notebooks and the server or Web app.
dmoshehun-prog/learn-from-materials
Turns books, PDFs, slides and web pages into a source-grounded knowledge base and an interactive learning page in English or Chinese, with quizzes, relationship maps and reusable methodology notes.
iusztinpaul/ai-research-os-workshop
Expert guide for the NotebookLM CLI (nlm) and MCP server - interfaces for Google NotebookLM.
jacob-bd/notebooklm-cli
Guides use of the nlm command-line tool to automate Google NotebookLM: notebooks, sources, research, one-shot questions and generated podcasts, reports, quizzes and slides.
IssacW228/student-llm-wiki
Feynman-technique review mode for studying. An agent skill from IssacW228/student-llm-wiki.
outline/outline
Save the current conversation, a decision, or a set of notes as a document in an Outline collection; use when the user wants to keep what was discussed in their knowledge base.
inkeep/open-knowledge
A skill your agent uses when the user wants to create, author, write, or design a new Agent Skill (a SKILL.md) — for OpenKnowledge or for their editors — including requests like 'help me write a…
inkeep/open-knowledge
Read when the user asks what OpenKnowledge is, wants to install it on a repository, wants to open or preview a single markdown file that is not part of an OpenKnowledge project, wants to share an…
inkeep/open-knowledge
Write a blameless incident postmortem under postmortems/ following the Google SRE shape — evidence-based timeline, trigger vs root cause vs symptom, contributing factors, what went well, and…
inkeep/open-knowledge
How to work in a Codebase Wiki project (the codebase-wiki starter pack): an agent-authored, source-grounded wiki of the surrounding codebase.
inkeep/open-knowledge
Authoritative agent-runtime contract for working inside an OpenKnowledge project — a markdown-CRDT knowledge base exposed over MCP.
inkeep/open-knowledge
Promote existing research into a stable-status canonical article under articles/ in a Knowledge Base project (the knowledge-base starter pack).
Categories
Investigate a topic against preserved sources and write a draft-status research article under research/ in a Knowledge Base project (the knowledge-base starter pack). Research With Sources is an agent skill from inkeep/open-knowledge. Investigate a topic against preserved sources and write a draft-status research article under research/ in a Knowledge Base project (the knowledge-base starter pack).
Research With Sources fits situations like: tasks that involve Knowledge bases; tasks that involve Quizzes and assessments.
Run `npx skills add inkeep/open-knowledge --skill research-with-sources -a claude-code`. Or copy the skill folder (packages/server/assets/skills/packs/knowledge-base/research in inkeep/open-knowledge) into .claude/skills/research-with-sources in your project. Claude Code loads it when a task matches its description.
Run `npx skills add inkeep/open-knowledge --skill research-with-sources -a codex`. Or copy the skill folder (packages/server/assets/skills/packs/knowledge-base/research in inkeep/open-knowledge) into .agents/skills/research-with-sources 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 inkeep/open-knowledge --skill research-with-sources -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/research-with-sources, .gemini/skills/research-with-sources, .github/skills/research-with-sources and .opencode/skills/research-with-sources in your project.
Going by SKILL.md and its folder, Research With Sources needs the command-line tools its instructions call (curl). Compatibility (from SKILL.md): Any agent host with the OpenKnowledge MCP server configured. Installed project-local by `ok seed --pack knowledge-base`..
SKILL.md contains no URLs. Its commands use curl, which can reach the network depending on how they are called. 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.
Research With Sources is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.6k tokens (SKILL.md is roughly 22k 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 Research With Sources: DeepTutor CLI (HKUDS/DeepTutor, 41k stars), Learn From Materials (dmoshehun-prog/learn-from-materials, 937 stars), Nlm Skill (iusztinpaul/ai-research-os-workshop, 179 stars) and NotebookLM CLI Guide (jacob-bd/notebooklm-cli, 256 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
inkeep (a GitHub organization) maintains it in inkeep/open-knowledge, which has 4,433 GitHub stars. The repository holds 18 skills in this directory. The repository was last updated on October 9, 2026.
Source: inkeep/open-knowledge on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.