Skip to content

Commit 4795ce7

Browse files
Merge branch 'main' into contrib/tswicegood/dashboard-cloudflare-deploy
2 parents ef8cf73 + 5d3f6ab commit 4795ce7

448 files changed

Lines changed: 51121 additions & 376 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.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
name: OB1 PR Gate
22

3+
# This workflow used to live at `.github/workflows/ob1-gate.yml`.
4+
# It was renamed to force GitHub Actions to register a fresh workflow after
5+
# the old workflow id began creating runs with zero jobs.
6+
#
37
# Branch protection recommendation:
48
# After this action is working, enable branch protection on main:
59
# - Require the "OB1 PR Gate" workflow to pass its checks

.github/workflows/ob1-pr-followups.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ on:
44
workflow_run:
55
workflows:
66
- "OB1 PR Gate"
7+
- ".github/workflows/ob1-gate-v2.yml"
78
- ".github/workflows/ob1-gate.yml"
89
types: [completed]
910

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
name: Update README Contributions
2+
3+
on:
4+
workflow_dispatch:
5+
schedule:
6+
- cron: "17 9 * * *"
7+
8+
permissions:
9+
contents: write
10+
pull-requests: write
11+
12+
jobs:
13+
update:
14+
runs-on: ubuntu-latest
15+
steps:
16+
- name: Checkout main
17+
uses: actions/checkout@v4
18+
with:
19+
ref: main
20+
21+
- name: Setup Node
22+
uses: actions/setup-node@v4
23+
with:
24+
node-version: "22"
25+
26+
- name: Update README recent contributions
27+
env:
28+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
29+
run: node scripts/update-readme-contributions.mjs
30+
31+
- name: Open README update PR
32+
uses: peter-evans/create-pull-request@v6
33+
with:
34+
commit-message: "[docs] Refresh README recent contributions"
35+
title: "[docs] Refresh README recent contributions"
36+
body: "Automated refresh of the generated Recent Contributions section in README.md."
37+
branch: automation/readme-recent-contributions
38+
delete-branch: true

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,7 @@ sync-log.json
2323

2424
# Build artifacts
2525
deno.lock
26+
docs/walkthroughs/*/public/
27+
docs/assets/agent-memory/promotional/generated-backgrounds/**/result.json
28+
docs/assets/agent-memory/screenshots/**/.chrome-*/
29+
integrations/openclaw-agent-memory/dist/

AGENTS.md

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
# OB1 Agent Instructions
2+
3+
## Parallel Agent Worktrees
4+
5+
When multiple AI agents or assistant chats work on this repo, do not put them in the same checkout.
6+
7+
### Setup pattern
8+
9+
- Treat the main repo checkout as the canonical repo for pulling, inspection, and creating worktrees.
10+
- Create one Git worktree per active agent, task, or PR-sized workstream.
11+
- Give each worktree a descriptive folder name and a matching branch name.
12+
- Start every agent task by naming the exact absolute worktree path it owns.
13+
- The assigned worktree path is the boundary. The chat is not the boundary.
14+
15+
### Agent assignment template
16+
17+
Start each parallel-agent task with:
18+
19+
```text
20+
Repository worktree:
21+
/ABSOLUTE/PATH/TO/PROJECT-WORKTREE
22+
23+
Branch:
24+
codex/SHORT-TASK-NAME
25+
26+
Task:
27+
DESCRIBE THE EXACT WORK.
28+
```
29+
30+
### Rules
31+
32+
- Do not switch branches in the canonical repo while another agent may be working.
33+
- Do not edit sibling worktrees unless explicitly asked.
34+
- Before staging or committing, run `git status --short` and stage only files that belong to the current task.
35+
- If `main` or another branch changed underneath the worktree, pause before merging or rebasing unless the task explicitly says to finish the PR end to end.
36+
- After a branch is merged and the worktree is clean, remove the finished worktree with `git worktree remove /ABSOLUTE/PATH/TO/PROJECT-WORKTREE`.
37+
38+
### Quick checks
39+
40+
- If another chat suddenly changed branches, both chats were probably in the same working directory.
41+
- If `git worktree add` says a branch is already checked out, create a new branch name or remove the old clean worktree.
42+
- If cleanup fails, inspect `git status --short` and preserve uncommitted work.
43+
44+
## Required Step: Update Linear
45+
46+
- For feature work tied to a Linear issue, update Linear at the start of the work, at meaningful checkpoints, and before handing back to the user.
47+
- Use the parent issue as the living implementation log and keep child issues aligned with the files and behavior being changed.
48+
- For the OB1 Agent Memory / OpenClaw launch work, the parent issue is `NAT-833`. Record architecture notes, implementation milestones, blockers, and verification results there.
49+
- Do not wait until the end to document decisions. If a decision changes schema, API contract, trust policy, user-facing workflow, or publishing path, capture it in Linear while it is still fresh.
50+
51+
## Agent Memory Product Guardrails
52+
53+
- Keep `OB1 Agent Memory` runtime-neutral. OpenClaw is the flagship launch runtime, not the product boundary.
54+
- Treat inferred or generated memory as evidence by default. Instruction-grade memory requires human confirmation or trusted import.
55+
- Avoid raw transcript, model reasoning trace, secret, and large-code-block storage by default.
56+
- Avoid profanity in all content. Keep docs, examples, seed data, UI copy, prompts, walkthroughs, and generated assets clean and professional.
57+
- Prefer diagram-first documentation for this work: diagram, short explanation, copy-paste setup, then deeper reference.
58+
- Carry Nate B. Jones / OB1 provenance through product surfaces, docs, diagrams, screenshots, and starter seed data. Keep it subtle and useful: micro-branding, source labels, logo marks, and provenance language instead of loud marketing copy.
59+
- Treat public OB1 assets as helpful-first audience growth for Nate Jones. Every public guide, recipe, tutorial, package page, release note, and walkthrough should point back to Nate's Substack and site in a natural way: https://substack.com/@natesnewsletter and https://natebjones.com.
60+
- Make the case by being genuinely useful. The CTA should feel earned: "Nate gives away practical systems like this" rather than generic marketing copy.
61+
- For ClawHub/OpenClaw publishing, do not fall back to Jonathan's personal handle or any non-Nate namespace. If `@natebjones` / Nate OB1 ownership is not available, stop and record the blocker.

CLAUDE.md

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,26 +24,69 @@ resources/ — Official companion files and packaged exports.
2424

2525
Every contribution lives in its own subfolder under the right category and must include `README.md` + `metadata.json`.
2626

27+
## Parallel Agent Worktrees
28+
29+
When multiple AI agents or assistant chats work on this repo, do not put them in the same checkout.
30+
31+
### Setup pattern
32+
33+
- Treat the main repo checkout as the canonical repo for pulling, inspection, and creating worktrees.
34+
- Create one Git worktree per active agent, task, or PR-sized workstream.
35+
- Give each worktree a descriptive folder name and a matching branch name.
36+
- Start every agent task by naming the exact absolute worktree path it owns.
37+
- The assigned worktree path is the boundary. The chat is not the boundary.
38+
39+
### Agent assignment template
40+
41+
Start each parallel-agent task with:
42+
43+
```text
44+
Repository worktree:
45+
/ABSOLUTE/PATH/TO/PROJECT-WORKTREE
46+
47+
Branch:
48+
codex/SHORT-TASK-NAME
49+
50+
Task:
51+
DESCRIBE THE EXACT WORK.
52+
```
53+
54+
### Rules
55+
56+
- Do not switch branches in the canonical repo while another agent may be working.
57+
- Do not edit sibling worktrees unless explicitly asked.
58+
- Before staging or committing, run `git status --short` and stage only files that belong to the current task.
59+
- If `main` or another branch changed underneath the worktree, pause before merging or rebasing unless the task explicitly says to finish the PR end to end.
60+
- After a branch is merged and the worktree is clean, remove the finished worktree with `git worktree remove /ABSOLUTE/PATH/TO/PROJECT-WORKTREE`.
61+
62+
### Quick checks
63+
64+
- If another chat suddenly changed branches, both chats were probably in the same working directory.
65+
- If `git worktree add` says a branch is already checked out, create a new branch name or remove the old clean worktree.
66+
- If cleanup fails, inspect `git status --short` and preserve uncommitted work.
67+
2768
## Guard Rails
2869

2970
- **Never modify the core `thoughts` table structure.** Adding columns is fine; altering or dropping existing ones is not.
3071
- **No credentials, API keys, or secrets in any file.** Use environment variables.
3172
- **No binary blobs** over 1MB. No `.exe`, `.dmg`, `.zip`, `.tar.gz`.
3273
- **No `DROP TABLE`, `DROP DATABASE`, `TRUNCATE`, or unqualified `DELETE FROM`** in SQL files.
74+
- **Avoid profanity in all content.** Keep docs, examples, seed data, UI copy, prompts, walkthroughs, and generated assets clean and professional.
3375
- **MCP servers must be remote (Supabase Edge Functions), not local.** Never use `claude_desktop_config.json`, `StdioServerTransport`, or local Node.js servers. All extensions deploy as Edge Functions and connect via Claude Desktop's custom connectors UI (Settings → Connectors → Add custom connector → paste URL). See `docs/01-getting-started.md` Step 7 for the pattern.
3476

3577
## PR Standards
3678

3779
- **Title format:** `[category] Short description` (e.g., `[recipes] Email history import via Gmail API`, `[skills] Panning for Gold standalone skill pack`)
3880
- **Branch convention:** `contrib/<github-username>/<short-description>`
3981
- **Commit prefixes:** `[category]` matching the contribution type
40-
- Every PR must pass the automated review checks in `.github/workflows/ob1-review.yml` before human review
82+
- Every PR must pass the automated review checks in `.github/workflows/ob1-gate-v2.yml` before human review
4183
- See `CONTRIBUTING.md` for the full review process, metadata.json template, and README requirements
4284

4385
## Key Files
4486

4587
- `CONTRIBUTING.md` — Source of truth for contribution rules, metadata format, and the review process
46-
- `.github/workflows/ob1-review.yml` — Automated PR review
88+
- `.github/workflows/ob1-gate-v2.yml` — Automated PR gate
89+
- `.github/workflows/claude-review.yml` — Maintainer-triggered Claude PR review
4790
- `.github/metadata.schema.json` — JSON schema for metadata.json validation
4891
- `.github/PULL_REQUEST_TEMPLATE.md` — PR description template
4992
- `LICENSE.md` — FSL-1.1-MIT terms

CONTRIBUTING.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ grant select, insert, update, delete on table public.your_table to service_role;
128128
- **"Cross-Extension Integration"** prominently documenting connections to other extensions
129129
- **"Next Steps"** linking to the next extension
130130
- **Tool audit link** — Any extension or integration that exposes MCP tools must link to the [MCP Tool Audit & Optimization Guide](docs/05-tool-audit.md) in its "Next Steps" or closing section. This helps users manage their tool surface area as they add extensions. The link is checked by the automated review.
131+
- **MCP tool annotations** — Any extension or integration that exposes MCP tools must mark read-only tools with `annotations: { readOnlyHint: true }` and write tools with `annotations: { readOnlyHint: false, openWorldHint: false, destructiveHint: false }` unless the tool really can touch arbitrary external resources or destroy data. ChatGPT uses this metadata to distinguish read tools from write actions.
131132
- **Remote MCP setup** — MCP servers must be deployed as Supabase Edge Functions and connected via custom connectors (URL-based). Do NOT use local Node.js servers or `claude_desktop_config.json`. See the [extension template](extensions/_template/) for the correct pattern.
132133

133134
**Primitives** additionally require:
@@ -298,3 +299,4 @@ Every PR is checked against these rules. All must pass before human review.
298299
13. **Internal links** — All relative links in READMEs resolve to existing files
299300
14. **Remote MCP pattern** — Extensions and integrations must use remote MCP via Supabase Edge Functions. No `claude_desktop_config.json`, no local Node.js stdio servers. See the [Getting Started guide](docs/01-getting-started.md) for the correct pattern
300301
15. **Tool audit link** — Extensions and integrations must link to the [MCP Tool Audit & Optimization Guide](docs/05-tool-audit.md) in their README. This ensures users are aware of tool surface area management as they add capabilities
302+
16. **MCP tool annotations** — Read-only tools include `readOnlyHint: true`; write tools include `readOnlyHint: false`, `openWorldHint`, and `destructiveHint`

0 commit comments

Comments
 (0)