Skip to content

Commit e4a5eab

Browse files
authored
Split documentation into protocol spec and tooling sites (#830)
* feat(site): split into agentreceipts.ai (spec) and obsigna.dev (tooling) Move all tooling content (getting-started, SDKs, mcp-proxy, hook, dashboard, deployment, openclaw, reference) to a new site-obsigna/ Astro+Starlight project that will deploy to obsigna.dev via a cross-repo GH Pages push to agent-receipts/obsigna-site. site/ is now spec-only: specification/, ecosystem/, blog/, and a rewritten spec-centric homepage. site-obsigna/ gets a teal/dark theme and an Overview→choose-your-path homepage. Blog is synced at build time from site/ to site-obsigna/ via scripts/sync-blog.mjs (modelled after the existing sync-spec.mjs). All cross-links updated: spec pages (agentreceipts.ai) that referenced tooling now use absolute obsigna.dev URLs, and tooling pages (obsigna.dev) that referenced spec now use absolute agentreceipts.ai URLs. Two manual prerequisites before the first deploy: 1. Create a fine-grained PAT for agent-receipts/obsigna-site (Contents: Read+Write) and add it as OBSIGNA_SITE_DEPLOY_PAT in agent-receipts/obsigna secrets. 2. Switch obsigna-site GH Pages from workflow-based to branch-based (Settings → Pages → gh-pages branch). * fix(site): stage missed site/ modifications from split The previous commit moved content and added site-obsigna/ but did not stage the edits to site/ itself: - astro.config.mjs: strip tooling sections, add obsigna.dev link - index.mdx: rewrite as spec-centric homepage - blog/openclaw-plugin-deep-dive.mdx: update tooling links to obsigna.dev (absolute URLs) - specification/parameter-disclosure.mdx: update SDK and daemon-setup links to obsigna.dev (absolute URLs) * docs(site): adopt flexoki theme, fix social links, reorder obsigna nav - Apply the flexoki Starlight theme to both site/ and site-obsigna/ for a consistent look; drop site-obsigna's teal accent overrides so the theme owns the palette. - Point the GitHub social link at agent-receipts/obsigna on both sites (was the old agent-receipts/ar repo). - Reorder the obsigna sidebar: Hook above MCP Proxy (the hook is the fastest path), and Dashboard above the SDKs. * docs(site): lead with the hook and surface tooling on the homepages - Spec homepage (agentreceipts.ai): move the tooling section up to just below the intro and reword it as a 'Use it today' callout with direct links to each obsigna.dev tool, so readers discover the working tooling immediately. Give the ecosystem reference its own heading. - Obsigna homepage: reword the title to 'sign and verify every AI agent action' and reorder 'Choose your path' so the hook leads as the fastest path, ahead of the MCP proxy and SDKs. * docs(site): set flexoki accent colors (orange for obsigna, green for spec) Give each site a distinct accent within the shared flexoki theme: obsigna.dev uses orange, the spec site uses green. * ci(site-obsigna): pin actions-gh-pages to a commit SHA Pin peaceiris/actions-gh-pages to the v4.1.0 commit SHA (the version the @v4 floating tag currently resolves to), consistent with the SHA-pinned checkout and setup-node actions in this workflow. Resolves the TODO.
1 parent 2e0ca94 commit e4a5eab

58 files changed

Lines changed: 5460 additions & 269 deletions

Some content is hidden

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

.github/workflows/mdx-snippets.yml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ on:
1616
branches: [main]
1717
paths: &paths
1818
- "site/src/content/**/*.mdx"
19+
- "site-obsigna/src/content/**/*.mdx"
1920
- "scripts/readme_snippets/**"
2021
- ".github/workflows/mdx-snippets.yml"
2122
- "sdk/go/**"
@@ -37,7 +38,7 @@ jobs:
3738
with:
3839
go-version: "1.26"
3940
- name: Run Go .mdx snippets (in-tree)
40-
run: python3 scripts/readme_snippets/check.py --lang go --source local --mode run $(find site/src/content -name '*.mdx' | sort)
41+
run: python3 scripts/readme_snippets/check.py --lang go --source local --mode run $(find site/src/content site-obsigna/src/content -name '*.mdx' | sort)
4142

4243
typescript:
4344
runs-on: ubuntu-latest
@@ -55,11 +56,11 @@ jobs:
5556
working-directory: sdk/ts
5657
run: pnpm install --frozen-lockfile && pnpm run build
5758
- name: Run TypeScript .mdx snippets (in-tree)
58-
run: python3 scripts/readme_snippets/check.py --lang ts --source local --mode run $(find site/src/content -name '*.mdx' | sort)
59+
run: python3 scripts/readme_snippets/check.py --lang ts --source local --mode run $(find site/src/content site-obsigna/src/content -name '*.mdx' | sort)
5960

6061
python:
6162
runs-on: ubuntu-latest
6263
steps:
6364
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
6465
- name: Run Python .mdx snippets (in-tree)
65-
run: python3 scripts/readme_snippets/check.py --lang py --source local --mode run $(find site/src/content -name '*.mdx' | sort)
66+
run: python3 scripts/readme_snippets/check.py --lang py --source local --mode run $(find site/src/content site-obsigna/src/content -name '*.mdx' | sort)

.github/workflows/site-obsigna.yml

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
name: Site (obsigna.dev)
2+
3+
on:
4+
push:
5+
branches: [main]
6+
paths: [site-obsigna/**, sdk/go/**, sdk/ts/**, sdk/py/**, mcp-proxy/**, hook/**]
7+
pull_request:
8+
branches: [main]
9+
paths: [site-obsigna/**]
10+
11+
permissions:
12+
contents: read
13+
14+
defaults:
15+
run:
16+
working-directory: site-obsigna
17+
18+
jobs:
19+
build-and-deploy:
20+
runs-on: ubuntu-latest
21+
steps:
22+
- name: Checkout
23+
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
24+
25+
- name: Setup Node.js
26+
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
27+
with:
28+
node-version: "24"
29+
30+
- name: Install pnpm
31+
run: corepack enable && corepack install
32+
33+
- name: Install dependencies
34+
run: pnpm install --frozen-lockfile
35+
36+
- name: Install Playwright Chromium (for mermaid rendering)
37+
run: pnpm exec playwright install --with-deps chromium
38+
39+
- name: Build site
40+
run: pnpm build
41+
42+
- name: Deploy to obsigna-site gh-pages
43+
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
44+
uses: peaceiris/actions-gh-pages@84c30a85c19949d7eee79c4ff27748b70285e453 # v4.1.0
45+
with:
46+
personal_token: ${{ secrets.OBSIGNA_SITE_DEPLOY_PAT }}
47+
external_repository: agent-receipts/obsigna-site
48+
publish_dir: site-obsigna/dist
49+
cname: obsigna.dev

site-obsigna/.gitignore

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# Astro
2+
dist/
3+
.astro/
4+
5+
# Generated by scripts/sync-blog.mjs from site/src/content/docs/blog/
6+
src/content/docs/blog/
7+
8+
# Dependencies
9+
node_modules/
10+
11+
# Environment
12+
.env
13+
.env.*
14+
15+
# OS
16+
.DS_Store

site-obsigna/astro.config.mjs

Lines changed: 187 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,187 @@
1+
import { defineConfig } from "astro/config";
2+
import starlight from "@astrojs/starlight";
3+
import starlightThemeFlexoki from "starlight-theme-flexoki";
4+
import rehypeMermaid from "rehype-mermaid";
5+
6+
export default defineConfig({
7+
site: "https://obsigna.dev",
8+
markdown: {
9+
// See site/astro.config.mjs for explanation of why this is set explicitly.
10+
gfm: true,
11+
syntaxHighlight: {
12+
type: "shiki",
13+
excludeLangs: ["mermaid"],
14+
},
15+
rehypePlugins: [[rehypeMermaid, { strategy: "inline-svg" }]],
16+
},
17+
integrations: [
18+
starlight({
19+
title: "Obsigna",
20+
tagline: "Tooling for the Agent Receipts protocol",
21+
plugins: [starlightThemeFlexoki({ accentColor: "orange" })],
22+
head: [
23+
{
24+
tag: "link",
25+
attrs: {
26+
rel: "me",
27+
href: "https://github.com/agent-receipts",
28+
},
29+
},
30+
{
31+
tag: "script",
32+
attrs: { type: "application/ld+json" },
33+
content: JSON.stringify({
34+
"@context": "https://schema.org",
35+
"@type": "WebSite",
36+
name: "Obsigna",
37+
url: "https://obsigna.dev",
38+
publisher: {
39+
"@type": "Organization",
40+
name: "Agent Receipts",
41+
url: "https://agentreceipts.ai",
42+
sameAs: ["https://github.com/agent-receipts"],
43+
},
44+
}),
45+
},
46+
],
47+
social: [
48+
{
49+
icon: "github",
50+
label: "GitHub",
51+
href: "https://github.com/agent-receipts/obsigna",
52+
},
53+
],
54+
components: {
55+
SocialIcons: "./src/components/SocialIcons.astro",
56+
},
57+
customCss: ["./src/styles/custom.css"],
58+
sidebar: [
59+
{
60+
label: "Getting Started",
61+
items: [
62+
{ label: "Introduction", slug: "" },
63+
{ label: "Quick Start", slug: "getting-started/quick-start" },
64+
{ label: "Daemon Setup", slug: "getting-started/daemon-setup" },
65+
{ label: "End-to-End Walkthrough", slug: "getting-started/end-to-end" },
66+
],
67+
},
68+
{
69+
label: "Hook",
70+
items: [
71+
{ label: "Overview", slug: "hook/overview" },
72+
{ label: "Installation", slug: "hook/installation" },
73+
{ label: "Claude Code", slug: "hook/claude-code" },
74+
],
75+
},
76+
{
77+
label: "MCP Proxy",
78+
items: [
79+
{ label: "Overview", slug: "mcp-proxy/overview" },
80+
{ label: "Installation", slug: "mcp-proxy/installation" },
81+
{ label: "Configuration", slug: "mcp-proxy/configuration" },
82+
{ label: "Remote MCP Servers", slug: "mcp-proxy/remote-servers" },
83+
{ label: "Approval Server", slug: "mcp-proxy/approval-ui" },
84+
{ label: "Claude Desktop", slug: "mcp-proxy/claude-desktop" },
85+
{ label: "Claude Code", slug: "mcp-proxy/claude-code" },
86+
{ label: "Codex", slug: "mcp-proxy/codex" },
87+
{ label: "Cursor", slug: "mcp-proxy/cursor" },
88+
{ label: "Windsurf", slug: "mcp-proxy/windsurf" },
89+
{ label: "VS Code Copilot", slug: "mcp-proxy/vscode-copilot" },
90+
{
91+
label: "JetBrains AI Assistant",
92+
slug: "mcp-proxy/jetbrains",
93+
},
94+
{ label: "Cline", slug: "mcp-proxy/cline" },
95+
],
96+
},
97+
{
98+
label: "Dashboard",
99+
items: [
100+
{ label: "Overview", slug: "dashboard/overview" },
101+
{ label: "Installation", slug: "dashboard/installation" },
102+
],
103+
},
104+
{
105+
label: "Go SDK",
106+
items: [
107+
{ label: "Overview", slug: "sdk-go/overview" },
108+
{ label: "Installation", slug: "sdk-go/installation" },
109+
{ label: "API Reference", slug: "sdk-go/api-reference" },
110+
],
111+
},
112+
{
113+
label: "TypeScript SDK",
114+
items: [
115+
{ label: "Overview", slug: "sdk-ts/overview" },
116+
{ label: "Installation", slug: "sdk-ts/installation" },
117+
{ label: "API Reference", slug: "sdk-ts/api-reference" },
118+
],
119+
},
120+
{
121+
label: "Python SDK",
122+
items: [
123+
{ label: "Overview", slug: "sdk-py/overview" },
124+
{ label: "Installation", slug: "sdk-py/installation" },
125+
{ label: "API Reference", slug: "sdk-py/api-reference" },
126+
],
127+
},
128+
{
129+
label: "Deployment",
130+
items: [
131+
{
132+
label: "Ephemeral Compute",
133+
slug: "deployment/ephemeral-compute",
134+
},
135+
{
136+
label: "Collector Operations",
137+
slug: "deployment/collector-operations",
138+
},
139+
],
140+
},
141+
{
142+
label: "OpenClaw",
143+
items: [
144+
{ label: "Overview", slug: "openclaw/overview" },
145+
{ label: "Installation", slug: "openclaw/installation" },
146+
{ label: "CLI Reference", slug: "openclaw/cli-reference" },
147+
{ label: "Agent Tools", slug: "openclaw/agent-tools" },
148+
],
149+
},
150+
{
151+
label: "Reference",
152+
items: [
153+
{ label: "CLI Commands", slug: "reference/cli-commands" },
154+
{ label: "Configuration", slug: "reference/configuration" },
155+
],
156+
},
157+
{
158+
label: "Blog",
159+
items: [
160+
{ label: "All Posts", slug: "blog" },
161+
{
162+
label: "Agent Security Tooling Landscape — May 2026",
163+
slug: "blog/agent-security-tooling-landscape-may-2026",
164+
},
165+
{
166+
label: "The audit boundary belongs outside the agent",
167+
slug: "blog/daemon-process-separation",
168+
},
169+
{
170+
label: "OpenClaw Plugin: How It Works",
171+
slug: "blog/openclaw-plugin-deep-dive",
172+
},
173+
{
174+
label: "Agent Security Tooling Landscape — April 2026",
175+
slug: "blog/agent-security-tooling-landscape-april-2026",
176+
},
177+
],
178+
},
179+
{
180+
label: "Protocol Spec →",
181+
link: "https://agentreceipts.ai",
182+
attrs: { target: "_blank" },
183+
},
184+
],
185+
}),
186+
],
187+
});

site-obsigna/package.json

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
{
2+
"name": "obsigna-docs",
3+
"type": "module",
4+
"version": "0.0.1",
5+
"private": true,
6+
"packageManager": "pnpm@9.15.9",
7+
"scripts": {
8+
"sync-blog": "node scripts/sync-blog.mjs",
9+
"test": "node --test \"scripts/**/*.test.mjs\"",
10+
"predev": "node scripts/sync-blog.mjs",
11+
"prebuild": "node scripts/sync-blog.mjs",
12+
"dev": "astro dev",
13+
"build": "astro build",
14+
"preview": "astro preview",
15+
"astro": "astro"
16+
},
17+
"dependencies": {
18+
"@astrojs/starlight": "^0.39",
19+
"astro": "^6",
20+
"sharp": "^0.34",
21+
"starlight-theme-flexoki": "^0.2.2"
22+
},
23+
"engines": {
24+
"node": ">=20"
25+
},
26+
"pnpm": {
27+
"onlyBuiltDependencies": [
28+
"esbuild",
29+
"sharp"
30+
]
31+
},
32+
"devDependencies": {
33+
"playwright": "^1.60.0",
34+
"rehype-mermaid": "^3.0.0"
35+
}
36+
}

0 commit comments

Comments
 (0)