INTEGRATE.md Specification v0.2
INTEGRATE.md is a file format for teaching AI agents how to wire one system into another. The agent reads the file and executes the integration steps autonomously.
The format works in two flavors that share the same spine:
- Flavor A: Library Into Codebase. A library author publishes an INTEGRATE.md so a coding agent in any target codebase can wire the library in. (The original v0.1 use case. Reference: CESP example.)
- Flavor B: Service Into Personal Agentic OS. An integration recipe maintainer publishes an INTEGRATE.md so a personal AI agent can install the recipe and start taking that action with that service. (Reference: create-or-update-google-doc example.)
Both flavors are runnable, dated, and forkable. Both target an agent rather than a human reader. The spine is the same; the flavor-specific sections differ.
How It Differs from Other Agent Files
| File | Purpose | Audience | Maintained by |
|---|---|---|---|
| CLAUDE.md | How to behave in this repo | Agent working inside the repo | Anthropic |
| AGENTS.md | How to behave in this repo (multi-agent) | Agent working inside the repo | OpenAgents |
| llms.txt | What this project is and does | Agent learning about the project | llmstxt.org |
| install.md | How to install this tool | Agent setting up dependencies | Nicholas Celesworthy |
| SKILL.md | How to perform a capability | Agent executing a task | Anthropic |
| INTEGRATE.md | How to wire one system into another | Agent performing the integration | Applied AI Society |
The key difference: INTEGRATE.md assumes the agent is going to take action, not just learn or behave. It is the connective tissue between two named systems.
Required Metadata
Every INTEGRATE.md must start with a last_updated date. This is how agents know whether the integration instructions are current. Tooling changes. APIs break. CLIs ship. An INTEGRATE.md without a date is untrustworthy. An INTEGRATE.md older than 6 months should be treated as potentially stale.
<!-- last_updated: 2026-05-06 -->
Place this as the first line of the file, before any content. Use ISO 8601 format (YYYY-MM-DD). Update it every time you change the integration steps.
Required Sections: Shared Spine
Every INTEGRATE.md, regardless of flavor, must include these three sections.
1. H1 Title
Name what's being wired up. Be specific about the outcome.
Flavor A example:
# Add CESP Sound Pack Support to This CLI
Flavor B example:
# create-or-update-google-doc
State what the agent is building or what capability it is gaining. Skip generic titles like "Integration Guide" or "Getting Started."
2. What You're Building
One paragraph describing the end state. What will the system do after integration that it does not do now? This orients the agent before it reads any implementation details.
Flavor A example:
When this CLI does something notable (starts up, finishes a task,
hits an error), it should play a sound from the user's installed
CESP sound pack.
Flavor B example:
Wire your Jarvis up to Google Docs so it can create, update, and
share documents from markdown without leaving the terminal.
In Flavor B, this section is conventionally titled "What This Gives You." Same shape, different framing for the operator audience.
3. Verification
A concrete test command and expected result. The agent should be able to run this and know whether integration succeeded.
Flavor A example:
Install a pack and test:
mycli sounds install peon
Now use your CLI. You should hear "Something need doing?" on start.
Flavor B example:
Run the auth helper to verify your token chain:
node scripts/auth.mjs
If you see an access token printed, you are wired up.
Flavor A: Library Into Codebase
In addition to the shared spine, Flavor A requires:
Read the Codebase First
A directive telling the agent to scan the target project before writing any code. Name the specific patterns it should look for.
Read this codebase. Find the event system (command lifecycle, hooks,
callbacks, event emitters, whatever this CLI uses).
This prevents the agent from blindly pasting boilerplate without understanding what it is integrating into.
Integration Steps
Numbered, imperative, concrete steps. Each step should describe what to do, not explain why. Use tables for concept mappings. Use fenced code blocks for exact commands or file contents.
## CESP Event Categories
Map this CLI's internal events to these standard categories:
| Category | When to emit |
|---|---|
| session.start | CLI launches, new session begins |
| task.complete | Work finished successfully |
| task.error | Something failed |
Skeleton Template (Flavor A)
Copy this as a starting point:
<!-- last_updated: YYYY-MM-DD -->
# Add [Library] Support to This [Project Type]
You are adding [library] support to this [project type]. [One sentence on what the library does and why it matters here.]
## What You're Building
[One paragraph describing the end state after integration.]
## Read the Codebase First
Read this codebase. Find [specific patterns to look for] (e.g., event systems, route handlers, config files, plugin architectures). Understand how this project is structured before writing any integration code.
## [Core Concept Mapping]
Map this [project type]'s internal [events/routes/models] to these [library] categories:
| [Library Concept] | When to use |
|---|---|
| concept.one | [When this maps to something in the target codebase] |
| concept.two | [When this maps to something else] |
## [Data Format / Schema]
[Show the key data structures the agent needs to work with.]
```json
{
"example": "manifest or config"
}
```
## Quick Start: Just Want [Simplest Case]?
[Shortcut for the minimal integration. Skip the full setup.]
## [Full Integration Steps]
[Numbered steps for the complete integration.]
## Implementation Checklist
1. Read the codebase and identify [what to look for]
2. Create a [module/file] that handles [responsibilities]
3. Wire [target codebase events] into [library concepts]
4. Add configuration ([list settings])
5. Test it: [concrete test command and expected result]
## Quick Test
[Exact commands to verify the integration works.]
## Links
- [Spec/docs URL]
- [Registry/package URL]
- [Reference implementation URL]
Flavor B: Service Into Personal Agentic OS
In addition to the shared spine, Flavor B requires:
Prerequisites
The accounts, runtimes, CLIs, and credentials the agent's machine must have available before setup can begin.
- macOS
- Node.js 18 or newer
- A Google account
- The `gog` CLI installed
This section is Flavor-B-specific. Library-into-codebase recipes assume the agent already has the target codebase open. Service-into-Jarvis recipes have to specify what the agent's environment needs first.
Setup
Numbered, concrete shell commands. Include the auth flow (browser-based OAuth, token paste, env var setup).
### 1. Install gog
\`\`\`bash
brew install saucelabs/tap/gog
\`\`\`
### 2. Authorize the docs service
\`\`\`bash
gog auth add you@example.com --services docs
\`\`\`
### 3. Set the email environment variable
\`\`\`bash
export GOG_EMAIL=you@example.com
\`\`\`
Use placeholders for personal info (you@example.com, <your-token>). Never hardcode real credentials or emails.
Usage From Your Jarvis
What trigger phrases activate the recipe. This couples the recipe to the SKILL.md it ships alongside.
Once your Jarvis can see this skill (via SKILL.md), trigger phrases like:
- "create a google doc with these contents"
- "update the google doc"
- "make a google doc titled X"
…will produce a properly-formatted Google Doc and return the URL.