Skip to content

Commit 41e86b7

Browse files
[docs] Introduce required/optional OB1 compatibility contract
Breaking schema change: requires.open_brain migrates from the boolean const true to a string enum of required | optional. Why: the old contract implied every contribution in this repo depends on a running Open Brain setup. Many skills (competitive-analysis, panning- for-gold, financial-model-review, etc.) are useful on their own — Open Brain integration is additive for them, not required. The new contract lets the catalog and the public directory surface that distinction accurately instead of overselling the dependency. Changes: - .github/metadata.schema.json: open_brain becomes a string enum - Bulk update 66 metadata.json files (required for all non-skills contributions; required for auto-capture, autodream-brain-sync, weekly-signal-diff, work-operating-model skills; optional for the nine standalone skill packs named in the plan) - CONTRIBUTING.md: new contract documented, both values explained - extensions/_template/AGENT_SPEC.md: template sample updated - README.md: short note under skills explaining most are optional - skills/README.md: new "Works without OB1?" column, compatibility legend, and a note in the contributing section about the field Validated locally with check-jsonschema against every non-template and template metadata.json — all pass. The ob1-pr-followups.yml and ob1-gate.yml workflow paths still match existing filenames; no workflow renames in this PR. The catalog generator that depends on this contract ships next in PR2. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 500076e commit 41e86b7

71 files changed

Lines changed: 805 additions & 243 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/metadata.schema.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,9 @@
5757
"required": ["open_brain"],
5858
"properties": {
5959
"open_brain": {
60-
"type": "boolean",
61-
"const": true,
62-
"description": "Must be true. All contributions require an Open Brain setup."
60+
"type": "string",
61+
"enum": ["required", "optional"],
62+
"description": "Open Brain compatibility. 'required' = contribution depends on the core Open Brain setup (Supabase + pgvector + MCP). 'optional' = contribution is useful on its own; Open Brain integration is additive."
6363
},
6464
"services": {
6565
"type": "array",

CONTRIBUTING.md

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ Every contribution needs a `metadata.json` file. Here's the template:
162162
},
163163
"version": "1.0.0",
164164
"requires": {
165-
"open_brain": true,
165+
"open_brain": "required",
166166
"services": ["Gmail API"],
167167
"tools": ["Node.js 18+"]
168168
},
@@ -175,10 +175,16 @@ Every contribution needs a `metadata.json` file. Here's the template:
175175
}
176176
```
177177

178-
**Required fields:** `name`, `description`, `category`, `author` (with `name`), `version`, `requires.open_brain` (must be `true`), `tags` (at least 1), `difficulty` (one of: `beginner`, `intermediate`, `advanced`), `estimated_time`
178+
**Required fields:** `name`, `description`, `category`, `author` (with `name`), `version`, `requires.open_brain` (either `"required"` or `"optional"`), `tags` (at least 1), `difficulty` (one of: `beginner`, `intermediate`, `advanced`), `estimated_time`
179179

180180
**Optional fields:** `author.github`, `requires.services`, `requires.tools`, `requires_skills`, `created`, `updated`
181181

182+
**`requires.open_brain` values:**
183+
- `"required"` — contribution depends on the core Open Brain setup (Supabase + pgvector + MCP). Recipes, primitives, extensions, schemas, dashboards, and most integrations use this.
184+
- `"optional"` — contribution is useful on its own. Any Open Brain hooks are additive, not required. Most skills in `skills/` that are reusable outside OB1 should use this.
185+
186+
If you are unsure, default to `"required"`. Use `"optional"` only if a user with no Open Brain setup could still get real value from the contribution.
187+
182188
**Additional structured dependency fields:**
183189
- `requires_skills` — array of skill slugs this contribution depends on (e.g., `["auto-capture"]`). Use this when the reusable behavior lives in `skills/<slug>/`
184190
- `requires_primitives` — array of primitive slugs this contribution depends on (e.g., `["rls", "shared-mcp"]`)
@@ -199,7 +205,7 @@ Example for an extension:
199205
},
200206
"version": "1.0.0",
201207
"requires": {
202-
"open_brain": true,
208+
"open_brain": "required",
203209
"services": [],
204210
"tools": ["Node.js 18+"]
205211
},
@@ -226,7 +232,7 @@ Example for a recipe that depends on a reusable skill:
226232
},
227233
"version": "1.0.0",
228234
"requires": {
229-
"open_brain": true,
235+
"open_brain": "required",
230236
"services": [],
231237
"tools": ["Claude Code or similar AI coding tool"]
232238
},

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,8 @@ Standalone capabilities that make your Open Brain smarter.
9898

9999
Plain-text skill packs you can drop into Claude Code, Codex, or other AI clients that support reusable prompts/rules. These are the canonical reusable building blocks that recipes and other contributions can depend on.
100100

101+
Most skills are useful on their own — Open Brain integration is **optional** for them, not required. A few (like `auto-capture`, `autodream-brain-sync`, `weekly-signal-diff`, and `work-operating-model`) are tightly coupled to a running Open Brain. See each skill's `metadata.json` (`requires.open_brain: "required" | "optional"`) or the [`skills/` README](skills/) for the full compatibility table.
102+
101103
| Skill | What It Does | Contributor |
102104
| ----- | ------------ | ----------- |
103105
| [Auto-Capture Skill Pack](skills/auto-capture/) | Captures ACT NOW items and session summaries to Open Brain when a session ends | [@jaredirish](https://github.com/jaredirish) |

dashboards/_template/metadata.json

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,16 @@
88
},
99
"version": "1.0.0",
1010
"requires": {
11-
"open_brain": true,
11+
"open_brain": "required",
1212
"services": [],
13-
"tools": ["Node.js 18+"]
13+
"tools": [
14+
"Node.js 18+"
15+
]
1416
},
15-
"tags": ["tag1", "tag2"],
17+
"tags": [
18+
"tag1",
19+
"tag2"
20+
],
1621
"difficulty": "beginner",
1722
"estimated_time": "20 minutes",
1823
"created": "2026-03-11",

dashboards/open-brain-dashboard-next/metadata.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,11 @@
88
},
99
"version": "1.1.0",
1010
"requires": {
11-
"open_brain": true,
11+
"open_brain": "required",
1212
"services": [],
13-
"tools": ["Node.js 18+"]
13+
"tools": [
14+
"Node.js 18+"
15+
]
1416
},
1517
"tags": [
1618
"dashboard",

dashboards/open-brain-dashboard/metadata.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
},
99
"version": "1.0.0",
1010
"requires": {
11-
"open_brain": true,
11+
"open_brain": "required",
1212
"services": [],
1313
"tools": [
1414
"Node.js 18+"

extensions/_template/AGENT_SPEC.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ Must validate against `/.github/metadata.schema.json`. Required fields:
5151
},
5252
"version": "1.0.0",
5353
"requires": {
54-
"open_brain": true,
54+
"open_brain": "required",
5555
"services": [],
5656
"tools": ["Supabase CLI"]
5757
},

extensions/_template/metadata.json

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,21 @@
88
},
99
"version": "1.0.0",
1010
"requires": {
11-
"open_brain": true,
11+
"open_brain": "required",
1212
"services": [],
13-
"tools": ["Supabase CLI"]
13+
"tools": [
14+
"Supabase CLI"
15+
]
1416
},
15-
"requires_primitives": ["deploy-edge-function", "remote-mcp"],
17+
"requires_primitives": [
18+
"deploy-edge-function",
19+
"remote-mcp"
20+
],
1621
"learning_order": 1,
17-
"tags": ["tag1", "tag2"],
22+
"tags": [
23+
"tag1",
24+
"tag2"
25+
],
1826
"difficulty": "beginner",
1927
"estimated_time": "45 minutes"
2028
}

extensions/family-calendar/metadata.json

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,31 @@
11
{
22
"name": "Kid Logistics / Family Calendar",
3-
"description": "Multi-person family scheduling activities, important dates, and conflict detection across the whole household.",
3+
"description": "Multi-person family scheduling \u2014 activities, important dates, and conflict detection across the whole household.",
44
"category": "extensions",
55
"author": {
66
"name": "Nate B. Jones",
77
"github": "NateBJones"
88
},
99
"version": "1.0.0",
1010
"requires": {
11-
"open_brain": true,
11+
"open_brain": "required",
1212
"services": [],
13-
"tools": ["Supabase CLI"]
13+
"tools": [
14+
"Supabase CLI"
15+
]
1416
},
15-
"requires_primitives": ["deploy-edge-function", "remote-mcp"],
17+
"requires_primitives": [
18+
"deploy-edge-function",
19+
"remote-mcp"
20+
],
1621
"learning_order": 3,
17-
"tags": ["family", "calendar", "scheduling", "kids", "logistics"],
22+
"tags": [
23+
"family",
24+
"calendar",
25+
"scheduling",
26+
"kids",
27+
"logistics"
28+
],
1829
"difficulty": "intermediate",
1930
"estimated_time": "45 minutes",
2031
"created": "2026-03-12",

extensions/home-maintenance/metadata.json

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,23 @@
88
},
99
"version": "1.0.0",
1010
"requires": {
11-
"open_brain": true,
11+
"open_brain": "required",
1212
"services": [],
13-
"tools": ["Supabase CLI"]
13+
"tools": [
14+
"Supabase CLI"
15+
]
1416
},
15-
"requires_primitives": ["deploy-edge-function", "remote-mcp"],
17+
"requires_primitives": [
18+
"deploy-edge-function",
19+
"remote-mcp"
20+
],
1621
"learning_order": 2,
17-
"tags": ["home", "maintenance", "scheduling", "tracking"],
22+
"tags": [
23+
"home",
24+
"maintenance",
25+
"scheduling",
26+
"tracking"
27+
],
1828
"difficulty": "beginner",
1929
"estimated_time": "30 minutes",
2030
"created": "2026-03-12",

0 commit comments

Comments
 (0)