Skip to content

Commit c7a5617

Browse files
[skills] Add standalone community skills category
1 parent 107b736 commit c7a5617

22 files changed

Lines changed: 935 additions & 22 deletions

.github/ISSUE_TEMPLATE/bug-report.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ body:
1111
id: contribution
1212
attributes:
1313
label: Which contribution?
14-
description: The name and category (e.g., "recipes/email-history-import")
14+
description: The name and category (e.g., "recipes/email-history-import" or "skills/panning-for-gold")
1515
placeholder: recipes/email-history-import
1616
validations:
1717
required: true

.github/ISSUE_TEMPLATE/feature-request.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ body:
1212
attributes:
1313
label: What area does this relate to?
1414
options:
15-
- An existing contribution (recipe, schema, dashboard, integration)
15+
- An existing contribution (recipe, schema, dashboard, integration, skill)
1616
- Repo structure or templates
1717
- CI/CD or automation
1818
- Documentation

.github/ISSUE_TEMPLATE/recipe-submission.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: Recipe / Contribution Idea
2-
description: Propose a new recipe, schema, dashboard, or integration
2+
description: Propose a new recipe, schema, dashboard, integration, or skill
33
labels: ["contribution-idea"]
44
body:
55
- type: markdown
@@ -17,6 +17,7 @@ body:
1717
- Schema (database extension)
1818
- Dashboard (frontend template)
1919
- Integration (MCP extension, webhook, capture source)
20+
- Skill (reusable AI client skill or prompt pack)
2021
- Primitive (reusable concept guide)
2122
- Extension (curated learning path build)
2223
- Not sure

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
- [ ] Schema (`/schemas`)
66
- [ ] Dashboard (`/dashboards`)
77
- [ ] Integration (`/integrations`)
8+
- [ ] Skill (`/skills`)
89
- [ ] Repo improvement (docs, CI, templates)
910

1011
## What does this do?

.github/metadata.schema.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"$schema": "https://json-schema.org/draft/2020-12/schema",
33
"$id": "https://github.com/NateBJones-Projects/OB1/blob/main/.github/metadata.schema.json",
44
"title": "Open Brain Source Contribution Metadata",
5-
"description": "Schema for metadata.json files in OB1 contributions (recipes, schemas, dashboards, integrations, primitives, extensions).",
5+
"description": "Schema for metadata.json files in OB1 contributions (recipes, schemas, dashboards, integrations, skills, primitives, extensions).",
66
"type": "object",
77
"required": [
88
"name",
@@ -28,7 +28,7 @@
2828
},
2929
"category": {
3030
"type": "string",
31-
"enum": ["recipes", "schemas", "dashboards", "integrations", "primitives", "extensions"],
31+
"enum": ["recipes", "schemas", "dashboards", "integrations", "skills", "primitives", "extensions"],
3232
"description": "Which contribution directory this belongs to."
3333
},
3434
"author": {

.github/workflows/auto-label.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ jobs:
3535
'schemas/': 'schema',
3636
'dashboards/': 'dashboard',
3737
'integrations/': 'integration',
38+
'skills/': 'skill',
3839
'primitives/': 'primitive',
3940
'extensions/': 'extension',
4041
};

.github/workflows/claude-issue-triage.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ jobs:
3232
- Primitive proposal (new reusable concept guide)
3333
- Dashboard idea (new frontend template)
3434
- Integration idea (new MCP extension, webhook, or capture source)
35+
- Skill idea (new reusable AI client skill or prompt pack)
3536
- Documentation improvement
3637
- Question (not a contribution, needs help)
3738
@@ -46,13 +47,13 @@ jobs:
4647
4748
4. **Suggest labels** — Based on classification, suggest which labels
4849
should be applied (recipe, schema, extension, primitive, dashboard,
49-
integration, documentation, bug, question, good-first-issue).
50+
integration, skill, documentation, bug, question, good-first-issue).
5051
5152
5. **Helpful response** — Post a welcoming, constructive comment:
5253
- Acknowledge the idea
5354
- If they used the blank template, point them to the right
5455
specific template for better structure
55-
- If it's a recipe/schema/integration idea, link to
56+
- If it's a recipe/schema/integration/skill idea, link to
5657
CONTRIBUTING.md's "What Goes Where" section
5758
- If it looks like a duplicate, link the existing issue
5859
- If it's a question, try to answer or point to docs/FAQ

.github/workflows/ob1-review.yml

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ jobs:
3636
3737
# Identify contribution folders (e.g., recipes/email-import/)
3838
# Exclude _template folders and top-level files
39-
contrib_dirs=$(echo "$changed" | grep -E '^(recipes|schemas|dashboards|integrations|primitives|extensions)/' | grep -v '/_template/' | cut -d'/' -f1,2 | sort -u || true)
39+
contrib_dirs=$(echo "$changed" | grep -E '^(recipes|schemas|dashboards|integrations|skills|primitives|extensions)/' | grep -v '/_template/' | cut -d'/' -f1,2 | sort -u || true)
4040
echo "contrib_dirs<<EOF" >> $GITHUB_OUTPUT
4141
echo "$contrib_dirs" >> $GITHUB_OUTPUT
4242
echo "EOF" >> $GITHUB_OUTPUT
@@ -83,7 +83,7 @@ jobs:
8383
# ─── Rule 1: Folder structure ───
8484
rule1_pass=true
8585
bad_files=""
86-
allowed_pattern='^(recipes|schemas|dashboards|integrations|primitives|extensions|docs|resources|\.github|\.gitkeep|\.gitignore|\.markdownlint)'
86+
allowed_pattern='^(recipes|schemas|dashboards|integrations|skills|primitives|extensions|docs|resources|\.github|\.gitkeep|\.gitignore|\.markdownlint)'
8787
while IFS= read -r f; do
8888
[ -z "$f" ] && continue
8989
if ! echo "$f" | grep -qE "$allowed_pattern"; then
@@ -286,6 +286,13 @@ jobs:
286286
rule6_pass=false
287287
fi
288288
;;
289+
skills)
290+
has_skill=$(echo "$dir_files" | grep -iE '(^|/)(SKILL\.md|[^/]+[.-]skill\.md)$' || true)
291+
if [ -z "$has_skill" ]; then
292+
rule6_detail="${rule6_detail} - \`$dir\`: skills must contain a plain-text skill file (\`SKILL.md\`, \`*.skill.md\`, or \`*-skill.md\`)\n"
293+
rule6_pass=false
294+
fi
295+
;;
289296
primitives)
290297
# Primitives must have substantial README (200+ words)
291298
if [ -f "$dir/README.md" ]; then
@@ -319,10 +326,10 @@ jobs:
319326
fi
320327
321328
# ─── Rule 7: PR format ───
322-
if echo "$PR_TITLE" | grep -qE '^\[(recipes|schemas|dashboards|integrations|primitives|extensions|docs)\] '; then
329+
if echo "$PR_TITLE" | grep -qE '^\[(recipes|schemas|dashboards|integrations|skills|primitives|extensions|docs)\] '; then
323330
pass_check "PR format" "Title follows \`[category] Description\` format"
324331
else
325-
fail_check "PR format" "PR title must start with \`[recipes]\`, \`[schemas]\`, \`[dashboards]\`, \`[integrations]\`, \`[primitives]\`, \`[extensions]\`, or \`[docs]\` followed by a space and description"
332+
fail_check "PR format" "PR title must start with \`[recipes]\`, \`[schemas]\`, \`[dashboards]\`, \`[integrations]\`, \`[skills]\`, \`[primitives]\`, \`[extensions]\`, or \`[docs]\` followed by a space and description"
326333
fi
327334
328335
# ─── Rule 8: No binary blobs ───

CLAUDE.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ This file helps AI coding tools (Claude Code, Codex, Cursor, etc.) work effectiv
44

55
## What This Repo Is
66

7-
Open Brain is a persistent AI memory system — one database (Supabase + pgvector), one MCP protocol, any AI client. This repo contains the extensions, recipes, schemas, dashboards, and integrations that the community builds on top of the core Open Brain setup.
7+
Open Brain is a persistent AI memory system — one database (Supabase + pgvector), one MCP protocol, any AI client. This repo contains the extensions, recipes, schemas, dashboards, integrations, and skills that the community builds on top of the core Open Brain setup.
88

99
**License:** FSL-1.1-MIT. No commercial derivative works. Keep this in mind when generating code or suggesting dependencies.
1010

@@ -17,8 +17,9 @@ recipes/ — Standalone capability builds. Open for community contributio
1717
schemas/ — Database table extensions. Open.
1818
dashboards/ — Frontend templates (Vercel/Netlify). Open.
1919
integrations/ — MCP extensions, webhooks, capture sources. Open.
20+
skills/ — Reusable AI client skills and prompt packs. Open.
2021
docs/ — Setup guides, FAQ, companion prompts.
21-
resources/ — Claude Skill, companion files.
22+
resources/ — Official companion files and packaged exports.
2223
```
2324

2425
Every contribution lives in its own subfolder under the right category and must include `README.md` + `metadata.json`.
@@ -33,7 +34,7 @@ Every contribution lives in its own subfolder under the right category and must
3334

3435
## PR Standards
3536

36-
- **Title format:** `[category] Short description` (e.g., `[recipes] Email history import via Gmail API`)
37+
- **Title format:** `[category] Short description` (e.g., `[recipes] Email history import via Gmail API`, `[skills] Panning for Gold standalone skill pack`)
3738
- **Branch convention:** `contrib/<github-username>/<short-description>`
3839
- **Commit prefixes:** `[category]` matching the contribution type
3940
- Every PR must pass the automated review checks in `.github/workflows/ob1-review.yml` before human review

CONTRIBUTING.md

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,18 +30,20 @@ This is a first-class path, not a workaround. Some of the best contributions com
3030
| `schemas/` | Database table extensions and metadata schemas | CRM contacts table, taste tracker, reading list schema | Open |
3131
| `dashboards/` | Frontend templates for Vercel/Netlify hosting | Knowledge dashboard, weekly review, mobile capture UI | Open |
3232
| `integrations/` | MCP extensions, webhooks, capture sources | Discord bot, email handler, browser extension, calendar sync | Open |
33+
| `skills/` | Reusable AI client skills and prompt packs | Meeting triage assistant, code review protocol, transcript processor | Open |
3334

34-
### Extensions vs Primitives vs Recipes
35+
### Extensions vs Primitives vs Recipes vs Skills
3536

3637
- **Extensions** are curated, ordered builds that form a progressive learning path. Each teaches new concepts through practical use. They include database schemas, MCP server code, and step-by-step instructions. If you want to propose a new extension, [open an issue](../../issues/new?template=extension-submission.yml) first.
3738
- **Primitives** are reusable concept guides that get referenced by multiple extensions. They teach a pattern (like RLS or shared access) once, so extensions can link to them instead of re-explaining. A primitive should be referenced by at least 2 extensions. [Propose one here](../../issues/new?template=primitive-submission.yml).
3839
- **Recipes** are standalone builds — they add a capability without being part of the learning path. No ordering, no prerequisites beyond a working Open Brain. Open for community contributions.
40+
- **Skills** are standalone agent behaviors packaged as plain-text prompt/skill files. They are smaller than recipes: no full build required, just a reusable behavior you can install into Claude Code, Codex, Cursor, or a similar client. Open for community contributions.
3941

4042
Not sure where yours fits? Open a discussion issue first.
4143

4244
## Required Files
4345

44-
Every contribution lives in its own subfolder under the right category (e.g., `recipes/my-cool-recipe/`) and must include:
46+
Every contribution lives in its own subfolder under the right category (e.g., `recipes/my-cool-recipe/` or `skills/my-cool-skill/`) and must include:
4547

4648
- **`README.md`** — What it does, prerequisites, step-by-step setup, expected outcome, troubleshooting
4749
- **`metadata.json`** — Structured metadata (see template below)
@@ -130,6 +132,13 @@ grant select, insert, update, delete on table public.your_table to service_role;
130132
**Primitives** additionally require:
131133
- **"Extensions That Use This"** section listing which extensions reference this primitive
132134

135+
**Skills** additionally require:
136+
- At least one plain-text skill artifact (`SKILL.md`, `*.skill.md`, or `*-skill.md`)
137+
- **"Supported Clients"** section listing which AI tools the skill is designed for
138+
- **"Installation"** steps showing exactly where the file goes
139+
- **"Trigger Conditions"** explaining when the skill should fire
140+
- Plain-text, reviewable source files only. Do not submit zipped/exported skill bundles in `skills/`.
141+
133142
Check the `_template/` folder in each category for a starter README. The extension template contains HTML comments with detailed instructions for both human contributors and AI assistants.
134143

135144
## metadata.json
@@ -201,6 +210,7 @@ Example for an extension:
201210
- Example: `[schemas] CRM contacts table with interaction tracking`
202211
- Example: `[extensions] Household Knowledge Base`
203212
- Example: `[primitives] Row Level Security guide`
213+
- Example: `[skills] Panning for Gold standalone skill pack`
204214

205215
**Description must include:**
206216
- What the contribution does
@@ -239,13 +249,13 @@ Non-code contributions count at every level. Testing recipes, mentoring non-tech
239249

240250
Every PR is checked against these rules. All must pass before human review.
241251

242-
1. **Folder structure** — Contribution is in the correct category directory (`recipes/`, `schemas/`, `dashboards/`, `integrations/`, `primitives/`, `extensions/`)
252+
1. **Folder structure** — Contribution is in the correct category directory (`recipes/`, `schemas/`, `dashboards/`, `integrations/`, `skills/`, `primitives/`, `extensions/`)
243253
2. **Required files** — Both `README.md` and `metadata.json` exist in the contribution folder
244254
3. **Metadata valid**`metadata.json` parses as valid JSON and contains all required fields
245255
4. **No credentials** — No API keys, tokens, passwords, or secrets in any file
246256
5. **SQL safety** — No `DROP TABLE`, `DROP DATABASE`, `TRUNCATE`, or unqualified `DELETE FROM`. No modifications to core `thoughts` table columns (adding columns is fine, altering/dropping existing ones is not)
247-
6. **Category-specific artifacts**`recipes/` have code or detailed instructions, `schemas/` have SQL files, `dashboards/` have frontend code or `package.json`, `integrations/` have code files, `primitives/` have substantial READMEs (200+ words), `extensions/` have both SQL and code files
248-
7. **PR format** — Title starts with `[recipes]`, `[schemas]`, `[dashboards]`, `[integrations]`, `[primitives]`, or `[extensions]`
257+
6. **Category-specific artifacts**`recipes/` have code or detailed instructions, `schemas/` have SQL files, `dashboards/` have frontend code or `package.json`, `integrations/` have code files, `skills/` have at least one plain-text skill file, `primitives/` have substantial READMEs (200+ words), `extensions/` have both SQL and code files
258+
7. **PR format** — Title starts with `[recipes]`, `[schemas]`, `[dashboards]`, `[integrations]`, `[skills]`, `[primitives]`, or `[extensions]`
249259
8. **No binary blobs** — No files over 1MB, no `.exe`, `.dmg`, `.zip`, `.tar.gz`
250260
9. **README completeness** — Contribution README includes Prerequisites, step-by-step instructions, and expected outcome sections
251261
10. **Primitive dependencies** — If a contribution declares `requires_primitives`, the primitives must exist in the repo and be linked in the README

0 commit comments

Comments
 (0)