docs: clarify harness integrations - #200
Conversation
There was a problem hiding this comment.
Pull request overview
This PR updates the user-facing documentation to present a consistent, “config-first” harness integration lifecycle: install user-global integrations once, then activate/configure behavior per-directory via me init and inspect it via me doctor.
Changes:
- Adds a new canonical deep-dive doc page: Harness Integrations, and links it from docs-site navigation.
- Reworks onboarding and MCP docs to center
me initas the primary managed setup flow while preserving manualme mcpguidance. - Aligns CLI reference pages and related docs (Projects, Access Control, agent imports) with the updated harness/policy/credential model.
Reviewed changes
Copilot reviewed 23 out of 23 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| packages/docs-site/lib/nav.ts | Adds “Harness Integrations” to the published docs navigation. |
| HARNESS_INTEGRATIONS_DOCUMENTATION_PLAN.md | Introduces a documentation plan to guide a cohesive harness-integration rewrite. |
| docs/projects.md | Updates project tree guidance and workflows to align with me init and the harness policy model. |
| docs/mcp/index.md | Links MCP tool reference to the managed harness setup deep dive. |
| docs/mcp/agent-instructions.md | Updates setup links and refines an example snippet for current guidance. |
| docs/mcp-integration.md | Reframes MCP integration around managed harness setup (me init) vs manual stdio setup; clarifies auth/space modes and provider notes. |
| docs/harness-integrations.md | New canonical page describing install vs activation, machine-local policy, overrides, and troubleshooting. |
| docs/getting-started.md | Makes me init the recommended AI-tool onboarding path and updates related guidance. |
| docs/concepts.md | Tightens space definition wording for clarity/consistency. |
| docs/cli/me-uninstall.md | Clarifies uninstall ownership semantics and documents --purge. |
| docs/cli/me-opencode.md | Adds link to the Harness Integrations page for shared lifecycle/policy model context. |
| docs/cli/me-mcp.md | Updates server resolution order and links to Harness Integrations for managed setup. |
| docs/cli/me-login.md | Links harness policy behavior to the stored configuration model. |
| docs/cli/me-install.md | Clarifies install vs per-directory init, and links to Harness Integrations. |
| docs/cli/me-init.md | Links to Harness Integrations for lifecycle/storage/policy details. |
| docs/cli/me-import.md | Updates terminology and clarifies default project slug derivation details. |
| docs/cli/me-doctor.md | Links to Harness Integrations for profile resolution/activation context. |
| docs/cli/me-codex.md | Clarifies wording around what uninstall removes and links to shared lifecycle model. |
| docs/cli/me-claude.md | Clarifies managed MCP identification and links to the shared policy model. |
| docs/cli/me-ci.md | Links CI guidance to Projects + Harness Integrations. |
| docs/cli/me-apikey.md | Adds pointer to Harness Integrations for managed harness + local config context. |
| docs/cli/agent-session-imports.md | Refines project slug derivation explanation to prefer git origin name. |
| docs/access-control.md | Updates enforcement explanation wording while keeping user-facing intent. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| ``` | ||
|
|
||
| A `--tree` is required. Put memories the rest of your space should see under `share/*`, and personal ones under `~/*` (your private home). The optional `--name` gives the memory a filename-like slug (unique within its tree) so you can later address it by path -- `me get share/notes/postgres/uuidv7`. See [Core Concepts](concepts.md#reserved-roots). | ||
| A `--tree` is required. Put memories the rest of your space should see under `/share/*`, and personal ones under `~/*` (your private home). The optional `--name` gives the memory a filename-like slug (unique within its tree) so you can later address it by path -- `me get share/notes/postgres/uuidv7`. See [Core Concepts](concepts.md#reserved-roots). |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 23 out of 23 changed files in this pull request and generated no new comments.
Suppressed comments (1)
docs/getting-started.md:52
- The example path uses
share/…without a leading slash while the surrounding text and--treeexample use canonical/share/…, which can be confusing. Consider using the canonical leading-slash form consistently in this paragraph.
A `--tree` is required. Put memories the rest of your space should see under `/share/*`, and personal ones under `~/*` (your private home). The optional `--name` gives the memory a filename-like slug (unique within its tree) so you can later address it by path -- `me get share/notes/postgres/uuidv7`. See [Core Concepts](concepts.md#reserved-roots).
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 23 out of 23 changed files in this pull request and generated no new comments.
Suppressed comments (1)
docs/getting-started.md:52
- The example path in
me getis missing the leading/, which is inconsistent with the rest of the docs (and with the--tree /share/...example just above) and may confuse readers about canonical paths.
A `--tree` is required. Put memories the rest of your space should see under `/share/*`, and personal ones under `~/*` (your private home). The optional `--name` gives the memory a filename-like slug (unique within its tree) so you can later address it by path -- `me get share/notes/postgres/uuidv7`. See [Core Concepts](concepts.md#reserved-roots).
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 23 out of 23 changed files in this pull request and generated no new comments.
Suppressed comments (4)
docs/harness-integrations.md:144
- This example repeats a 13-character space slug ("acme123def456"), which conflicts with the 12-character slug description in the Concepts page. Use a 12-character placeholder consistently.
server: https://api.memory.build
space: acme123def456
tree: /share/projects/acme-api
docs/harness-integrations.md:151
- This example repeats a 13-character space slug ("acme123def456"). For consistency with the documented 12-character slug format, update it to a 12-character placeholder.
server: https://api.memory.build
space: acme123def456
harnesses:
docs/getting-started.md:52
- This paragraph tells readers to use
/share/*paths, but the example path usesshare/...without the leading slash. Since this sentence was updated in the PR, it’s a good place to keep the example consistent with the/share/*convention.
A `--tree` is required. Put memories the rest of your space should see under `/share/*`, and personal ones under `~/*` (your private home). The optional `--name` gives the memory a filename-like slug (unique within its tree) so you can later address it by path -- `me get share/notes/postgres/uuidv7`. See [Core Concepts](concepts.md#reserved-roots).
docs/harness-integrations.md:137
- The example space slug in this config snippet is 13 characters ("acme123def456"), but elsewhere the docs define space slugs as immutable 12-character identifiers. Using a 12-character example avoids confusion when copying/pasting.
This issue also appears in the following locations of the same file:
- line 142
- line 149
server: https://api.memory.build
space: acme123def456
harnesses:
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 23 out of 23 changed files in this pull request and generated no new comments.
Suppressed comments (1)
docs/getting-started.md:52
- The
me memory createexample uses--tree '~/notes/postgres'(personal home tree), but the retrieval example later in the same sentence uses a/share/...path. This is inconsistent and may confuse readers about where the memory was created; theme getexample should use the same tree as the create example (or the create example should be changed back to/share/...).
A `--tree` is required. Put memories the rest of your space should see under `/share/*`, and personal ones under `~/*` (your private home). The optional `--name` gives the memory a filename-like slug (unique within its tree) so you can later address it by path -- `me get share/notes/postgres/uuidv7`. See [Core Concepts](concepts.md#reserved-roots).
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 38 out of 38 changed files in this pull request and generated no new comments.
Suppressed comments (3)
docs/getting-started.md:52
- The example stores the memory under
--tree '~/notes/postgres'(home tree), but the follow-up path example usesshare/notes/.... That path would not resolve to the memory just created; it should use the same~/notes/postgrestree (and be quoted to avoid shell~expansion).
A `--tree` is required. Put memories the rest of your space should see under `/share/*`, and personal ones under `~/*` (your private home). The optional `--name` gives the memory a filename-like slug (unique within its tree) so you can later address it by path -- `me get share/notes/postgres/uuidv7`. See [Core Concepts](concepts.md#reserved-roots).
docs/mcp/me_memory_get.md:52
- The response schema defines
createdByasstring | null(it is currently alwaysnullserver-side, but the wire type still allows a string). Documenting the type asnullis inaccurate for API consumers and diverges from@memory.build/protocol'sMemoryResponseschema.
docs/mcp/me_memory_create.md:59 - The wire response schema defines
createdByasstring | null(even though it is currently alwaysnull). Listing the type asnullmakes the tool reference inconsistent with the published protocol schema and can break typed consumers that expectstring | null.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 40 out of 40 changed files in this pull request and generated no new comments.
Suppressed comments (3)
docs/getting-started.md:52
- The example stores the memory under the home tree (
--tree '~/notes/postgres'), but the follow-up path example usesshare/..., which would not resolve to the created memory. Align the get-by-path example with the tree used above.
A `--tree` is required. Put memories the rest of your space should see under `/share/*`, and personal ones under `~/*` (your private home). The optional `--name` gives the memory a filename-like slug (unique within its tree) so you can later address it by path -- `me get share/notes/postgres/uuidv7`. See [Core Concepts](concepts.md#reserved-roots).
docs/mcp/me_memory_import.md:16
- This sentence reads like
pathandcontentare mutually exclusive, but the parameter table sayspathtakes precedence when both are provided. Rewording to “at least one” avoids implying exactly-one semantics.
docs/mcp/me_memory_search.md:73 - The JSON example has inconsistent indentation for
createdBy, which makes the snippet look malformed when copied. Align it with the surrounding fields.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 40 out of 40 changed files in this pull request and generated no new comments.
Suppressed comments (1)
docs/getting-started.md:118
- The sentence about headless/unattended usage is a comma splice and splits awkwardly across lines, which makes the guidance harder to read.
`me init` works in headless or unattended environments, use `me login --device` or supply an
API key through `ME_API_KEY`.
Summary
Validation