Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 19 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
<a href="https://gowtham0992.github.io/link/">Website</a> ·
<a href="https://gowtham0992.github.io/link/getting-started.html">Quick start</a> ·
<a href="https://gowtham0992.github.io/link/mcp.html">MCP setup</a> ·
<a href="https://gowtham0992.github.io/link/skills.html">Skills</a> ·
<a href="https://gowtham0992.github.io/link/cli.html">CLI</a> ·
<a href="https://registry.modelcontextprotocol.io/?q=io.github.gowtham0992%2Flink">MCP Registry</a> ·
<a href="https://pypi.org/project/link-mcp/">PyPI</a> ·
Expand Down Expand Up @@ -166,15 +167,15 @@ The public scale model is documented at
bounded by default, how to measure your own wiki, and where the current local
limits are.

## Three Ways To Use Link
## Ways To Use Link

Pick the surface that matches how you work. They all read and write the same
local Markdown wiki.

These surfaces are independent. `lnk serve` / `serve.py` is only the local web
viewer. CLI commands and MCP tools read the same `wiki/` files directly, so
Claude, Codex, Kiro, Cursor, or another MCP client can use Link even when the
web viewer is not running.
viewer. CLI commands, official skills, and MCP tools read the same `wiki/` files
directly, so Claude, Codex, Kiro, Cursor, or another agent can use Link even
when the web viewer is not running.

<table>
<tr>
Expand All @@ -196,6 +197,19 @@ web viewer is not running.
</tr>
</table>

Prefer skills instead of MCP? Link ships small, lazy-loadable CLI skills under
`skills/`. They let an agent use `lnk health`, `lnk query`, `lnk ingest-status`,
and `lnk remember` directly, without MCP setup or a running web viewer.

```text
skills/link-health/SKILL.md
skills/link-retrieve/SKILL.md
skills/link-ingest/SKILL.md
skills/link-memory/SKILL.md
```

Full guide: [Link Skills](https://gowtham0992.github.io/link/skills.html).

## Install For Your Agent

Run one installer from the cloned checkout:
Expand Down Expand Up @@ -449,6 +463,7 @@ More detail: [Security guide](https://gowtham0992.github.io/link/security.html).
| Understand raw/wiki/memory | [Concepts](https://gowtham0992.github.io/link/concepts.html) |
| Configure MCP | [MCP setup](https://gowtham0992.github.io/link/mcp.html) |
| Find a command | [CLI reference](https://gowtham0992.github.io/link/cli.html) |
| Use Link without MCP setup | [Official skills](https://gowtham0992.github.io/link/skills.html) |
| Use local HTTP endpoints | [HTTP API](https://gowtham0992.github.io/link/api.html) |
| Review security boundaries | [Security model](https://gowtham0992.github.io/link/security.html) |
| Evaluate Link for a small team | [Team security review](https://gowtham0992.github.io/link/team-security.html) |
Expand Down
1 change: 1 addition & 0 deletions docs/api.html
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
<a href="mcp.html">MCP</a>
<a href="memory-contract.html">Contract</a>
<a href="cli.html">CLI</a>
<a href="skills.html">Skills</a>
<a href="api.html" aria-current="page">API</a>
<a href="security.html">Security</a>
<a href="contributing.html">Contribute</a>
Expand Down
2 changes: 1 addition & 1 deletion docs/cli.html
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ <h2 id="tour">CLI Tour</h2>
<img src="assets/link-cli-tour.gif" alt="Animated Link CLI walkthrough">
<figcaption>Status, query, brief, and benchmark are the core terminal loop.</figcaption>
</figure>
<p>The CLI is independent of the web viewer. Use <code>lnk query</code>, <code>lnk brief</code>, <code>lnk health</code>, and maintenance commands even when <code>lnk serve</code> is not running.</p>
<p>The CLI is independent of the web viewer. Use <code>lnk query</code>, <code>lnk brief</code>, <code>lnk health</code>, and maintenance commands even when <code>lnk serve</code> is not running. Agents that support lazy-loaded instructions can also use the official <a href="skills.html">Link skills</a> instead of MCP setup.</p>
<p>Use <code>lnk try</code> when you want the shortest proof loop: demo creation, readiness, query proof, brief proof, viewer command, and first agent prompts in one command.</p>

<h2 id="daily">Daily Loop</h2>
Expand Down
1 change: 1 addition & 0 deletions docs/concepts.html
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
<a href="mcp.html">MCP</a>
<a href="memory-contract.html">Contract</a>
<a href="cli.html">CLI</a>
<a href="skills.html">Skills</a>
<a href="api.html">API</a>
<a href="security.html">Security</a>
<a href="contributing.html">Contribute</a>
Expand Down
1 change: 1 addition & 0 deletions docs/contributing.html
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
<a href="mcp.html">MCP</a>
<a href="memory-contract.html">Contract</a>
<a href="cli.html">CLI</a>
<a href="skills.html">Skills</a>
<a href="api.html">API</a>
<a href="security.html">Security</a>
<a href="contributing.html" aria-current="page">Contribute</a>
Expand Down
1 change: 1 addition & 0 deletions docs/getting-started.html
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
<a href="mcp.html">MCP</a>
<a href="memory-contract.html">Contract</a>
<a href="cli.html">CLI</a>
<a href="skills.html">Skills</a>
<a href="api.html">API</a>
<a href="security.html">Security</a>
<a href="contributing.html">Contribute</a>
Expand Down
4 changes: 3 additions & 1 deletion docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
<a href="mcp.html">MCP</a>
<a href="memory-contract.html">Contract</a>
<a href="cli.html">CLI</a>
<a href="skills.html">Skills</a>
<a href="api.html">API</a>
<a href="security.html">Security</a>
<a href="contributing.html">Contribute</a>
Expand Down Expand Up @@ -219,14 +220,15 @@ <h2>Agents get a small set of reliable moves.</h2>
<div class="section-inner">
<p class="section-kicker">Read next</p>
<h2>Start small, then make it your agent memory.</h2>
<p class="lead">The docs are arranged by user path: try the demo, understand the model, wire MCP, then use the CLI and maintenance tools when you need them.</p>
<p class="lead">The docs are arranged by user path: try the demo, understand the model, choose MCP or skills, then use the CLI and maintenance tools when you need them.</p>
<div class="grid">
<article class="feature"><h3><a href="getting-started.html">First 10 minutes</a></h3><p>Run the demo, add one source, save one direct memory, and verify the loop.</p></article>
<article class="feature"><h3><a href="why-link.html">Why Link?</a></h3><p>Understand where Link fits versus notes apps, hosted memory APIs, agent runtimes, and graph memory systems.</p></article>
<article class="feature"><h3><a href="ui.html">Web UI</a></h3><p>Use the local viewer as a readable wiki with grouped memory, ingest, health, graph, and audit tools.</p></article>
<article class="feature"><h3><a href="concepts.html">Concepts</a></h3><p>Understand raw sources, wiki pages, memories, graph indexes, and budgeted query packets.</p></article>
<article class="feature"><h3><a href="mcp.html">MCP setup</a></h3><p>Install the MCP server and teach local agents how to use Link reliably.</p></article>
<article class="feature"><h3><a href="cli.html">CLI reference</a></h3><p>Every local command, grouped by daily workflow and maintenance jobs.</p></article>
<article class="feature"><h3><a href="skills.html">Official skills</a></h3><p>Use lazy-loadable CLI workflows when MCP setup is more than you need.</p></article>
<article class="feature"><h3><a href="api.html">HTTP API</a></h3><p>Local endpoints for status, query, memory, graph, validation, and web UI actions.</p></article>
<article class="feature"><h3><a href="security.html">Security model</a></h3><p>Local-first constraints, secret scanning, backup behavior, and HTTP safety boundaries.</p></article>
<article class="feature"><h3><a href="team-security.html">Team security review</a></h3><p>Deployment patterns, audit exports, Git sharing, approval gates, and current limits for small teams.</p></article>
Expand Down
5 changes: 5 additions & 0 deletions docs/mcp.html
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
<a href="mcp.html" aria-current="page">MCP</a>
<a href="memory-contract.html">Contract</a>
<a href="cli.html">CLI</a>
<a href="skills.html">Skills</a>
<a href="api.html">API</a>
<a href="security.html">Security</a>
<a href="contributing.html">Contribute</a>
Expand Down Expand Up @@ -63,6 +64,10 @@ <h2 id="tour">MCP Tour</h2>
<strong>MCP does not need <code>serve.py</code></strong>
The local web viewer is only for humans. MCP clients start <code>python -m link_mcp --wiki ...</code> over stdio and read the same Markdown wiki directly.
</div>
<div class="callout">
<strong>Prefer no MCP?</strong>
Use the official <a href="skills.html">Link skills</a> when an agent can run local CLI commands and you want a lazy-loaded workflow instead of MCP configuration.
</div>
<p>For agent builders, the stable read/write behavior is summarized in the <a href="memory-contract.html">Link memory contract</a>.</p>

<h2 id="installers">Agent Installers</h2>
Expand Down
1 change: 1 addition & 0 deletions docs/memory-contract.html
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
<a href="mcp.html">MCP</a>
<a href="memory-contract.html" aria-current="page">Contract</a>
<a href="cli.html">CLI</a>
<a href="skills.html">Skills</a>
<a href="api.html">API</a>
<a href="security.html">Security</a>
<a href="contributing.html">Contribute</a>
Expand Down
1 change: 1 addition & 0 deletions docs/obsidian.html
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
<a href="mcp.html">MCP</a>
<a href="memory-contract.html">Contract</a>
<a href="cli.html">CLI</a>
<a href="skills.html">Skills</a>
<a href="api.html">API</a>
<a href="security.html">Security</a>
<a href="contributing.html">Contribute</a>
Expand Down
1 change: 1 addition & 0 deletions docs/scale.html
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
<a href="mcp.html">MCP</a>
<a href="memory-contract.html">Contract</a>
<a href="cli.html">CLI</a>
<a href="skills.html">Skills</a>
<a href="api.html">API</a>
<a href="security.html">Security</a>
<a href="contributing.html">Contribute</a>
Expand Down
1 change: 1 addition & 0 deletions docs/security.html
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
<a href="mcp.html">MCP</a>
<a href="memory-contract.html">Contract</a>
<a href="cli.html">CLI</a>
<a href="skills.html">Skills</a>
<a href="api.html">API</a>
<a href="security.html" aria-current="page">Security</a>
<a href="contributing.html">Contribute</a>
Expand Down
108 changes: 108 additions & 0 deletions docs/skills.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Use Link through official lazy-loadable CLI skills when MCP setup is not needed.">
<title>Link - Skills</title>
<link rel="stylesheet" href="assets/site.css">
<link rel="icon" href="assets/logo.svg" type="image/svg+xml">
<link rel="apple-touch-icon" href="assets/logo-512.png">
<meta property="og:type" content="website">
<meta property="og:site_name" content="Link">
<meta property="og:image" content="https://gowtham0992.github.io/link/assets/logo-512.png">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://gowtham0992.github.io/link/assets/logo-512.png">
<script src="assets/site.js" defer></script>
</head>
<body>
<nav class="site-nav" aria-label="Main">
<a class="brand" href="index.html"><img src="assets/logo.svg" alt="">Link</a>
<div class="nav-links">
<a href="getting-started.html">Start</a>
<a href="why-link.html">Why</a>
<a href="scale.html">Scale</a>
<a href="ui.html">UI</a>
<a href="concepts.html">Concepts</a>
<a href="mcp.html">MCP</a>
<a href="memory-contract.html">Contract</a>
<a href="cli.html">CLI</a>
<a href="skills.html" aria-current="page">Skills</a>
<a href="api.html">API</a>
<a href="security.html">Security</a>
<a href="contributing.html">Contribute</a>
<a href="https://github.com/gowtham0992/link">GitHub</a>
</div>
</nav>

<header class="page-hero">
<div class="hero-inner">
<span class="eyebrow">No MCP required</span>
<h1>Lazy-load Link through skills.</h1>
<p>Official skills are small CLI workflows an agent can load only when needed: health, retrieval, ingest, and memory lifecycle.</p>
</div>
</header>

<main class="doc-section">
<div class="section-inner doc-grid">
<aside class="toc">
<strong>On this page</strong>
<a href="#why">Why skills</a>
<a href="#included">Included skills</a>
<a href="#install">Use them</a>
<a href="#rules">Rules</a>
</aside>
<article class="doc-content">
<h2 id="why">Why Skills</h2>
<p>MCP gives Link structured tool calls, but it should not be the only path. If an agent can run local commands, it can use Link through <code>lnk</code> without an MCP server, background viewer, or extra client configuration. From a source checkout, the same workflows work with <code>python3 link.py</code>.</p>
<div class="callout">
<strong><code>lnk serve</code> is optional</strong>
<p>The web viewer is only for humans. Skills, CLI commands, and MCP tools all read the same local Markdown wiki directly.</p>
</div>

<h2 id="included">Included Skills</h2>
<p>The repo ships official skill folders under <code>skills/</code>:</p>
<table>
<thead>
<tr><th>Skill</th><th>Use it for</th><th>First command</th></tr>
</thead>
<tbody>
<tr><td><code>link-health</code></td><td>Readiness, interrupted writes, backups, repair, validation.</td><td><code>lnk health</code></td></tr>
<tr><td><code>link-retrieve</code></td><td>Bounded query packets, briefs, graph summaries, benchmarks.</td><td><code>lnk query "..."</code></td></tr>
<tr><td><code>link-ingest</code></td><td>Raw source ingest, stale sources, memory proposals, post-ingest checks.</td><td><code>lnk ingest-status</code></td></tr>
<tr><td><code>link-memory</code></td><td>Remember, recall, review, explain, update, archive, restore, forget.</td><td><code>lnk brief "..."</code></td></tr>
</tbody>
</table>

<h2 id="install">Use Them</h2>
<p>Point your agent at the skill folder it supports, or copy the relevant <code>SKILL.md</code> into that agent's local skill directory.</p>
<pre><code>skills/link-health/SKILL.md
skills/link-retrieve/SKILL.md
skills/link-ingest/SKILL.md
skills/link-memory/SKILL.md</code></pre>
<p>Then use natural prompts that map to the skills:</p>
<pre><code>is Link ready?
brief me from Link before we continue
query Link for the release process
ingest raw/notes.md into Link
remember that I prefer short release notes</code></pre>

<h2 id="rules">Rules For Agents</h2>
<ul>
<li>Prefer <code>lnk health</code> when readiness is unclear.</li>
<li>Prefer <code>lnk query</code>, <code>lnk brief</code>, and <code>lnk graph-summary</code> over reading the whole wiki.</li>
<li>Use <code>lnk ingest-status</code> before touching raw sources.</li>
<li>Do not silently create durable memory; use <code>lnk remember</code> only when the user asks or approves a proposal.</li>
<li>Run <code>lnk validate</code> and <code>lnk health</code> after ingest or broad wiki edits.</li>
</ul>
<p>Use MCP when you want structured tool calls inside an MCP client. Use skills when you want a lightweight, lazy-loaded CLI workflow.</p>
</article>
</div>
</main>

<footer>
<div class="section-inner"><a href="getting-started.html">First 10 minutes</a> · <a href="mcp.html">MCP setup</a> · <a href="cli.html">CLI reference</a> · If Link helps your agents remember better, <a href="https://github.com/gowtham0992/link">star it on GitHub</a>.</div>
<p class="analytics-note">The installed Link product has no telemetry. This public docs site may use lightweight analytics to understand install interest.</p>
</footer>
</body>
</html>
1 change: 1 addition & 0 deletions docs/team-security.html
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
<a href="mcp.html">MCP</a>
<a href="memory-contract.html">Contract</a>
<a href="cli.html">CLI</a>
<a href="skills.html">Skills</a>
<a href="api.html">API</a>
<a href="security.html">Security</a>
<a href="contributing.html">Contribute</a>
Expand Down
1 change: 1 addition & 0 deletions docs/troubleshooting.html
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
<a href="mcp.html">MCP</a>
<a href="memory-contract.html">Contract</a>
<a href="cli.html">CLI</a>
<a href="skills.html">Skills</a>
<a href="api.html">API</a>
<a href="security.html">Security</a>
<a href="contributing.html">Contribute</a>
Expand Down
1 change: 1 addition & 0 deletions docs/ui.html
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
<a href="mcp.html">MCP</a>
<a href="memory-contract.html">Contract</a>
<a href="cli.html">CLI</a>
<a href="skills.html">Skills</a>
<a href="api.html">API</a>
<a href="security.html">Security</a>
<a href="contributing.html">Contribute</a>
Expand Down
1 change: 1 addition & 0 deletions docs/why-link.html
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
<a href="mcp.html">MCP</a>
<a href="memory-contract.html">Contract</a>
<a href="cli.html">CLI</a>
<a href="skills.html">Skills</a>
<a href="api.html">API</a>
<a href="security.html">Security</a>
<a href="contributing.html">Contribute</a>
Expand Down
34 changes: 34 additions & 0 deletions skills/link-health/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
---
name: link-health
description: Use when a user wants to verify Link readiness, troubleshoot a local wiki, inspect interrupted writes, repair generated indexes, or back up Link without setting up MCP.
---

# Link Health

Use the `lnk` CLI. In a source checkout, replace `lnk` with `python3 link.py`. MCP and the local web viewer are optional; `lnk serve` is only for humans to browse the wiki.

1. Check readiness first:
```bash
lnk health [link-root]
```
2. If the output mentions interrupted or stale operations, inspect them before repair:
```bash
lnk operations [link-root]
```
3. Before broad repairs, migrations, or restore work, create a backup:
```bash
lnk backup [link-root]
```
4. Repair only generated or structural state that Link reports as safe:
```bash
lnk doctor --fix [link-root]
lnk rebuild-index [link-root]
lnk rebuild-backlinks [link-root]
```
5. Validate before saying the wiki is healthy:
```bash
lnk validate [link-root]
lnk health [link-root]
```

If the user asks whether MCP is ready, run `lnk verify-mcp [link-root]`. Do not start `lnk serve` for MCP or CLI work.
28 changes: 28 additions & 0 deletions skills/link-ingest/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
---
name: link-ingest
description: Use when a user asks to ingest raw files into Link, refresh stale source pages, propose memories from sources, or validate source-backed wiki updates through the CLI without MCP.
---

# Link Ingest

Use `lnk ingest-status` as the source of truth. In a source checkout, replace `lnk` with `python3 link.py`. The command tells you which raw files need work and which checks must run next.

1. Inspect the ingest plan:
```bash
lnk ingest-status [link-root]
```
2. If Link reports secret-looking values, unreadable files, or unsafe paths, stop and ask the user to fix or redact them.
3. Read only the pending raw files named by the ingest plan. Create or update one `wiki/sources/...` page per raw file, and update existing concept/entity/exploration/memory pages before creating thin duplicates.
4. Keep durable memory proposal-only until the user approves it:
```bash
lnk propose-memories raw/<file> [link-root]
```
5. After writing wiki pages, rebuild generated indexes and validate:
```bash
lnk rebuild-index [link-root]
lnk rebuild-backlinks [link-root]
lnk validate [link-root]
lnk health [link-root]
```

Do not put raw source contents into chat unless needed for the current ingest task. Preserve source paths and provenance on generated pages.
Loading
Loading