Skip to content

v0.4.0: Jekyll site scaffold for culture.dev/afi#7

Merged
OriNachum merged 3 commits intomainfrom
feat/culture-dev-site
Apr 23, 2026
Merged

v0.4.0: Jekyll site scaffold for culture.dev/afi#7
OriNachum merged 3 commits intomainfrom
feat/culture-dev-site

Conversation

@OriNachum
Copy link
Copy Markdown
Collaborator

Summary

  • Adds Jekyll site scaffold under docs/ modeled on agex-cli: just-the-docs theme, baseurl: /afi, and the jekyll-sitemap plugin so /afi/sitemap.xml is auto-generated at build (required by the Agent First paradigm — agents navigate HTTP surfaces via sitemap, not heuristics).
  • Adds .github/workflows/docs.yml that mirrors agex's deploy pipeline: PR preview + main deploy to Cloudflare Pages project afi via wrangler Direct Upload, with a sticky preview-URL comment on PRs. Deploy step is gated on CLOUDFLARE_API_TOKEN presence, so this PR's CI stays green until the Pages project + secrets are provisioned.
  • Bumps afi-cli to v0.4.0 (minor — new surface, not a bug fix) with a populated CHANGELOG.md entry per the version-bump-every-PR policy.

What this PR does NOT do

  • Does not create the Cloudflare Pages project afi or wire culture.dev/afi routing. That's the companion issue on agentculture/cloudflare (to be opened right after this PR).
  • Does not add a cross-link from the main culture site. That's the companion issue on agentculture/culture.
  • Does not touch docs/agentculture.md, docs/agent-first.md, or docs/rubric.md. They render under /afi/* unchanged.

Test plan

  • uv run pytest -n auto -v — 136 passed
  • scripts/lint-md.sh — clean (new docs/index.md linted separately, MD025 resolved)
  • python3 .claude/skills/version-bump/scripts/bump.py show0.4.0
  • CI green on this PR (docs workflow should skip deploy until secrets land — watch for the ::notice:: line)
  • Once agentculture/cloudflare provisions the Pages project + secrets, re-run this workflow and verify the preview URL comment posts

Follow-ups

  • Open issue on agentculture/culture — add /afi to the sites map, cross-link from the landing page.
  • Open issue on agentculture/cloudflare — create Pages project afi, expose CLOUDFLARE_API_TOKEN + CLOUDFLARE_ACCOUNT_ID to agentculture/afi-cli, and wire the culture.dev/afi/* route.
  • Ping @spark-agex on culture IRC for a sanity check on the scaffold.
  • Ping @spark-culture once both issues exist so the work can proceed in parallel.

— Claude

🤖 Generated with Claude Code

Modeled on agex-cli's setup: just-the-docs theme under docs/, baseurl
/afi, jekyll-sitemap plugin so /afi/sitemap.xml is auto-generated at
build time. Existing docs/*.md render untouched under the new baseurl.

Deploy workflow (.github/workflows/docs.yml) mirrors the agex pipeline:
PR previews + main deploy to Cloudflare Pages project `afi` via
wrangler Direct Upload. Deploy step gated on CLOUDFLARE_API_TOKEN
presence so CI stays green until the Pages project + secrets land via
agentculture/cloudflare.

Companion issues (to be opened) on agentculture/culture (site linkage)
and agentculture/cloudflare (Pages project + secrets).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@qodo-code-review
Copy link
Copy Markdown

Review Summary by Qodo

Add Jekyll site scaffold and Cloudflare Pages deploy pipeline

✨ Enhancement

Grey Divider

Walkthroughs

Description
• Adds Jekyll site scaffold under docs/ with just-the-docs theme, baseurl /afi, and
  jekyll-sitemap plugin for auto-generated sitemap
• Implements GitHub Actions workflow for PR previews and production deploy to Cloudflare Pages via
  wrangler Direct Upload
• Deploy step gated on CLOUDFLARE_API_TOKEN presence to keep CI green until secrets provisioned
• Bumps version to 0.4.0 with populated CHANGELOG.md entry per version-bump-every-PR policy
Diagram
flowchart LR
  A["docs/ scaffold<br/>Jekyll + just-the-docs"] --> B["_config.yml<br/>baseurl /afi"]
  A --> C["Gemfile<br/>jekyll-sitemap plugin"]
  A --> D["index.md<br/>landing page"]
  E["GitHub Actions<br/>docs.yml workflow"] --> F["Build Jekyll site"]
  F --> G["Compute preview branch<br/>from PR head ref"]
  G --> H{"Secrets<br/>present?"}
  H -->|Yes| I["Deploy to CF Pages<br/>wrangler Direct Upload"]
  H -->|No| J["Skip deploy<br/>post notice"]
  I --> K["Post preview URL<br/>comment on PR"]
  L["pyproject.toml"] --> M["Version 0.4.0"]
  N["CHANGELOG.md"] --> M
Loading

Grey Divider

File Changes

1. .github/workflows/docs.yml ⚙️ Configuration changes +110/-0

GitHub Actions workflow for Jekyll build and CF Pages deploy

• New workflow triggered on docs/ changes, PRs, and manual dispatch
• Builds Jekyll site with Ruby 3.2 and bundler caching in docs/ directory
• Sanitizes PR head ref to valid Cloudflare Pages branch name with fallback to pr-<number>
• Checks for CLOUDFLARE_API_TOKEN presence and posts notice if missing
• Deploys to Cloudflare Pages project afi via wrangler Direct Upload (skipped until secrets land)
• Posts or updates sticky preview URL comment on PRs with immutable commit link and branch alias

.github/workflows/docs.yml


2. docs/_config.yml ⚙️ Configuration changes +64/-0

Jekyll configuration for just-the-docs theme and plugins

• Configures Jekyll site with title afi-cli and baseurl /afi for culture.dev routing
• Sets just-the-docs theme with dark-terminal color scheme
• Enables search with button and configures jekyll-seo-tag, jekyll-relative-links, jekyll-sitemap,
 jekyll-redirect-from plugins
• Defines social links, author, and aux navigation links to Culture, agex, GitHub, and PyPI
• Excludes build artifacts and Gemfile from site output

docs/_config.yml


3. docs/Gemfile Dependencies +8/-0

Ruby gem dependencies for Jekyll site

• Specifies Jekyll ~4.3 as core dependency
• Adds just-the-docs ~0.10 theme
• Includes jekyll-seo-tag, jekyll-relative-links, jekyll-sitemap, and jekyll-redirect-from plugins

docs/Gemfile


View more (3)
4. docs/index.md 📝 Documentation +49/-0

Jekyll landing page for afi-cli documentation

• Landing page for afi-cli HTTP surface with front matter (title, nav_order, permalink, description)
• Explains Agent First Interface paradigm and three interface surfaces (CLI, MCP, HTTP)
• Provides quickstart with uv tool install and example commands
• Links to related documentation pages (AgentCulture, Agent First paradigm, Rubric)
• References sitemap.xml for agent discoverability

docs/index.md


5. CHANGELOG.md 📝 Documentation +11/-1

Version 0.4.0 changelog entry for site scaffold

• Adds new [0.4.0] section dated 2026-04-23 with Added and Changed subsections
• Documents Jekyll scaffold files and jekyll-sitemap plugin for auto-generated sitemap
• Documents new GitHub Actions workflow for PR previews and Cloudflare Pages deploy
• Notes that existing docs (agentculture.md, agent-first.md, rubric.md) now render under
 culture.dev/afi/ unchanged
• Moves [0.3.0] section down in changelog

CHANGELOG.md


6. pyproject.toml ⚙️ Configuration changes +1/-1

Version bump to 0.4.0

• Bumps version from 0.3.0 to 0.4.0 per semantic versioning (minor — new feature, not bug fix)

pyproject.toml


Grey Divider

Qodo Logo

@qodo-code-review
Copy link
Copy Markdown

qodo-code-review Bot commented Apr 23, 2026

Code Review by Qodo

🐞 Bugs (1) 📘 Rule violations (1) 📎 Requirement gaps (0)

Grey Divider


Action required

1. 0.4.0 changelog lacks JSON 📘 Rule violation § Compliance
Description
The new CHANGELOG.md entry for 0.4.0 is written as Markdown bullets and does not include the
required JSON object produced by the repo-local version-bump tool. This breaks the required per-PR
JSON changelog format and makes automated parsing/auditing of releases unreliable.
Code

CHANGELOG.md[R8-18]

+## [0.4.0] - 2026-04-23
+
+### Added
+
+- docs/_config.yml, docs/Gemfile, docs/index.md, docs/.gitignore — Jekyll site scaffold modeled on agex-cli with just-the-docs theme, baseurl /afi, and jekyll-sitemap plugin so /afi/sitemap.xml is auto-generated on build.
+- .github/workflows/docs.yml — PR preview + main deploy pipeline to Cloudflare Pages project afi (Direct Upload via wrangler). Deploy step is gated on CLOUDFLARE_API_TOKEN presence so CI stays green until secrets land via agentculture/cloudflare.

+### Changed
+
+- docs/ layout now follows the agex-cli pattern: existing agentculture.md, agent-first.md, and rubric.md render under <https://culture.dev/afi/> without content edits.
+
Evidence
PR Compliance ID 395513 requires that the new version section in CHANGELOG.md include a JSON
object entry for the bumped version. In the added 0.4.0 section, only Markdown headings and bullet
lists are present, with no JSON object line.

Rule 395513: Require version bump with JSON changelog for every PR
CHANGELOG.md[8-18]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The `CHANGELOG.md` entry for version `0.4.0` does not include a JSON object, but PR policy requires a JSON changelog entry for every PR/version bump.

## Issue Context
The new `0.4.0` section currently uses Markdown bullets only. The compliance rule requires adding a JSON object line (as produced by `python3 .claude/skills/version-bump/scripts/bump.py`) for the new version.

## Fix Focus Areas
- CHANGELOG.md[8-18]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. Docs pages lack front matter🐞 Bug ≡ Correctness
Description
The docs landing page links to agentculture.md, agent-first.md, and rubric.md, but those files
have no YAML front matter, so they won't reliably receive the just-the-docs layout/metadata and may
not appear as proper themed pages (and may be omitted from sitemap/navigation).
Code

docs/index.md[R35-41]

+- [**AgentCulture**](agentculture.md) — the OSS org, its agents-as-members
+  model, and where afi-cli sits inside it.
+- [**Agent First**](agent-first.md) — the paradigm: learnability on the CLI,
+  minimalism on MCP, discoverability on HTTP. The *why* behind every design
+  call in this repo.
+- [**Rubric**](rubric.md) — the five-bundle mechanical check that
+  `afi cli verify` runs against any CLI. afi-cli itself is required to pass.
Evidence
Only docs/index.md declares front matter; the linked docs files begin directly with Markdown
headings. The site config expects pages to use a layout (defaults) and pretty permalinks, which
depends on pages being treated as proper Jekyll pages/documents with metadata.

docs/index.md[33-42]
docs/agentculture.md[1-5]
docs/agent-first.md[1-6]
docs/rubric.md[1-6]
docs/_config.yml[24-40]
Best Practice: just-the-docs/Jekyll page metadata

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
The existing docs pages (`agentculture.md`, `agent-first.md`, `rubric.md`) are linked from the new Jekyll home page but have no YAML front matter. This prevents them from reliably being treated as full just-the-docs pages (layout/title/nav/permalink), undermining the new HTTP surface.

### Issue Context
- `docs/index.md` is a proper Jekyll page with front matter.
- The other markdown docs were previously used as raw markdown files for the CLI.

### Fix Focus Areas
- docs/agentculture.md[1-10]
- docs/agent-first.md[1-10]
- docs/rubric.md[1-10]
- docs/index.md[33-42]

### Implementation notes
Add minimal YAML front matter to each doc page, for example:
```md
---
title: AgentCulture
nav_order: 10
---

# AgentCulture
...
```
Also consider setting explicit permalinks if you want stable paths:
- `permalink: /agentculture/`
- `permalink: /agent-first/`
- `permalink: /rubric/`

Then update `docs/index.md` links to point at the permalink paths (or rely on relative-links plugin if you prefer), e.g. `[AgentCulture](/agentculture/)` (or with `relative_url` in liquid if you add it).

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


3. Preview URL missing baseurl🐞 Bug ≡ Correctness
Description
The workflow posts a preview URL at the domain root, but the Jekyll site is configured with
baseurl: "/afi", so generated links/sitemap/canonical URLs will be under /afi/ and the posted
URL will not land on the actual docs entrypoint for reviewers.
Code

.github/workflows/docs.yml[R99-100]

+          ALIAS_URL="https://${BRANCH}.afi.pages.dev"
+          BODY="$MARKER"$'\n'"📘 **docs preview** for this PR:"$'\n\n'"- **Latest deploy:** $DEPLOY_URL  _(immutable — this specific commit)_"$'\n'"- **Branch alias:** $ALIAS_URL  _(always latest — updates on each push)_"
Evidence
The preview comment constructs an alias URL without /afi, while the Jekyll config explicitly sets
baseurl: "/afi", meaning the site expects to be served under that prefix (typical for path-mounted
sites like culture.dev/afi).

.github/workflows/docs.yml[88-100]
docs/_config.yml[1-5]
Best Practice: Jekyll baseurl behavior

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
The workflow posts a Cloudflare Pages preview link that omits the `/afi/` path, but the Jekyll site is configured with `baseurl: "/afi"`. Reviewers clicking the comment link will land on the wrong path, and generated links/sitemap/canonical URLs will not match.

### Issue Context
- The Jekyll site is meant to live at `culture.dev/afi/*`.
- Cloudflare Pages preview domains are typically served from `/`.

### Fix Focus Areas
- .github/workflows/docs.yml[88-101]
- docs/_config.yml[1-5]

### Implementation notes
Choose one approach:
1) **Keep baseurl `/afi`** and update the posted URLs to include `/afi/`:
  - `ALIAS_URL="https://${BRANCH}.afi.pages.dev/afi/"`
  - Optionally also append `/afi/` to the `DEPLOY_URL` shown to reviewers.

2) **Make previews root-mounted** by overriding baseurl during PR builds (recommended if you want `https://<branch>.afi.pages.dev/` to work):
  - Add `docs/_config_preview.yml` with `baseurl: ""` and `url: ""` (or set to the preview origin).
  - In the workflow, for `pull_request` builds run:
    - `bundle exec jekyll build --config _config.yml,_config_preview.yml`
  - Keep production builds using `_config.yml` only.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


View more (1)
4. Account ID not gated🐞 Bug ☼ Reliability
Description
The deploy gate checks only CLOUDFLARE_API_TOKEN, but the deploy step also requires
CLOUDFLARE_ACCOUNT_ID; if only the token is configured, the workflow will proceed to deploy and
fail.
Code

.github/workflows/docs.yml[R64-82]

+      - name: Check Cloudflare secrets
+        id: secrets
+        env:
+          CF_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
+        run: |
+          if [ -n "$CF_API_TOKEN" ]; then
+            echo "present=true" >> "$GITHUB_OUTPUT"
+          else
+            echo "present=false" >> "$GITHUB_OUTPUT"
+            echo "::notice::Cloudflare secrets not yet configured; skipping deploy. See agentculture/cloudflare for wiring."
+          fi
+      - name: Deploy to Cloudflare Pages
+        id: deploy
+        if: steps.secrets.outputs.present == 'true'
+        uses: cloudflare/wrangler-action@9acf94ace14e7dc412b076f2c5c20b8ce93c79cd  # v3
+        with:
+          apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
+          accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
+          command: pages deploy docs/_site --project-name=afi --branch=${{ github.event_name == 'pull_request' && steps.branch.outputs.name || 'main' }}
Evidence
The "Check Cloudflare secrets" step only inspects CLOUDFLARE_API_TOKEN, but
cloudflare/wrangler-action is configured with accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
unconditionally. The conditional if: steps.secrets.outputs.present == 'true' will therefore allow
deploy even when accountId is missing.

.github/workflows/docs.yml[64-83]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
The deploy step is gated only on `CLOUDFLARE_API_TOKEN` presence, but deploy also requires `CLOUDFLARE_ACCOUNT_ID`. Partial secret configuration will trigger a failing deploy instead of a clean skip.

### Issue Context
The workflow is intentionally designed to stay green until secrets land; this bug breaks that goal once a single secret is added.

### Fix Focus Areas
- .github/workflows/docs.yml[64-83]

### Implementation notes
Update the secrets check step to validate both values, e.g.:
- Export both `CF_API_TOKEN` and `CF_ACCOUNT_ID`
- Set `present=true` only when both are non-empty
- Emit a `::notice::` describing exactly which secret is missing (optional but helpful).

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

5. Unpinned Ruby dependencies 🐞 Bug ☼ Reliability
Description
The docs build uses Bundler with version ranges in docs/Gemfile and CI bundler-cache, but no
lockfile was added, so dependency resolution can drift over time and break builds unpredictably.
Code

docs/Gemfile[R1-8]

+source "https://rubygems.org"
+
+gem "jekyll", "~> 4.3"
+gem "just-the-docs", "~> 0.10"
+gem "jekyll-seo-tag"
+gem "jekyll-relative-links"
+gem "jekyll-sitemap"
+gem "jekyll-redirect-from"
Evidence
The Gemfile specifies ranges (e.g., jekyll ~> 4.3, just-the-docs ~> 0.10) and the workflow uses
bundler caching and runs bundle exec jekyll build, meaning the resolved gem versions can change
between runs without a committed lockfile.

docs/Gemfile[1-8]
.github/workflows/docs.yml[31-38]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
Ruby gem versions for the docs site are not locked. With loose constraints and CI builds, this can cause non-deterministic failures or unexpected changes.

### Issue Context
The workflow enables `bundler-cache` and runs `bundle exec jekyll build` in `docs/`.

### Fix Focus Areas
- docs/Gemfile[1-8]
- .github/workflows/docs.yml[31-38]

### Implementation notes
Run `bundle install` in `docs/` and commit the resulting `docs/Gemfile.lock`.
- Keep `Gemfile.lock` **out of the Jekyll site output** (it is already excluded in `_config.yml`).
- Optionally add a CI check that fails if `Gemfile.lock` is missing/out-of-date.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Qodo Logo

Comment thread CHANGELOG.md
Comment thread .github/workflows/docs.yml Outdated
Comment thread docs/index.md
Comment thread .github/workflows/docs.yml
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a Jekyll-based documentation site scaffold under docs/ and a GitHub Actions workflow to build/deploy it to Cloudflare Pages, alongside a version bump to v0.4.0 with a corresponding changelog entry.

Changes:

  • Add Jekyll/just-the-docs scaffold (config, Gemfile, index page, docs gitignore) under docs/.
  • Add .github/workflows/docs.yml to build docs and (when secrets exist) deploy previews/production to Cloudflare Pages.
  • Bump project version to 0.4.0 and add a 0.4.0 changelog entry.

Reviewed changes

Copilot reviewed 7 out of 8 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
uv.lock Updates locked editable package version to 0.4.0.
pyproject.toml Bumps project version to 0.4.0.
CHANGELOG.md Adds 0.4.0 release notes documenting docs scaffolding + deploy workflow.
docs/index.md Adds landing page content for the new HTTP docs surface.
docs/_config.yml Introduces Jekyll site configuration (theme/plugins/baseurl).
docs/Gemfile Adds Ruby gem dependencies for Jekyll + plugins.
docs/.gitignore Ignores Jekyll build artifacts and vendor caches.
.github/workflows/docs.yml Adds CI workflow for building and deploying docs to Cloudflare Pages with PR previews.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread docs/_config.yml
Comment thread docs/_config.yml
Comment thread .github/workflows/docs.yml Outdated
@OriNachum
Copy link
Copy Markdown
Collaborator Author

OriNachum commented Apr 23, 2026

📘 docs preview for this PR:

- docs/_config.yml: drop custom color_scheme: dark-terminal (not present
  in this repo — that was an agex-local SCSS). Use built-in 'dark'
  scheme so Jekyll SCSS compile succeeds and CI docs build passes.
  Fixes the CI failure Qodo flagged.

- .github/workflows/docs.yml: gate deploy on BOTH
  CLOUDFLARE_API_TOKEN and CLOUDFLARE_ACCOUNT_ID (Qodo #4, Copilot).
  The notice now lists which specific secret is missing so nobody
  has to open the deploy log to find out.

- .github/workflows/docs.yml: append /afi/ to the preview-URL comment
  (Qodo #2). Jekyll builds with baseurl: /afi, so the domain root
  returns a 404 — reviewers need the /afi/ entrypoint.

- docs/agentculture.md, agent-first.md, rubric.md: add minimal
  front matter (title + nav_order) so just-the-docs renders them as
  themed pages with navigation + sitemap entries instead of raw
  markdown (Qodo #3, Copilot). Removed the now-redundant H1 lines
  since the theme renders `title:` as the page heading; keeps
  markdownlint MD025 single-h1 happy.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The secrets gate let wrangler through after CLOUDFLARE_API_TOKEN and
CLOUDFLARE_ACCOUNT_ID were added to the repo, but the Cloudflare
Pages project `afi` does not exist yet — creation is tracked in
agentculture/cloudflare#16. Wrangler then failed with HTTP 404
"Project not found", turning CI red for a real-but-tracked reason.

Add a lightweight API precheck: GET
/accounts/$ID/pages/projects/afi and require HTTP 200 before the
deploy step runs. When the project lands on the CF side, CI flips
green without another PR. No credentials leak — the account ID
stays inside an env var (GitHub Actions already masks it).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@sonarqubecloud
Copy link
Copy Markdown

@OriNachum OriNachum merged commit 1d2ffeb into main Apr 23, 2026
9 checks passed
@OriNachum OriNachum deleted the feat/culture-dev-site branch April 23, 2026 17:56
OriNachum added a commit to agentculture/culture that referenced this pull request Apr 23, 2026
…288)

Adds docs/reference/architecture/subsites.md documenting the reference
pattern for hosting an AgentCulture project's docs as a sub-site under
culture.dev. Blesses the afi-cli Jekyll scaffold (agentculture/afi-cli#7)
and the earlier agex-cli scaffold as the canonical starting points; new
sub-sites should begin from the afi-cli version.

Spells out the five culture-side file edits every new sub-site needs —
_data/sites.yml, _config.culture.yml aux_links, _config.culture.yml
footer_content, _includes/head_custom.html rel=related, and
sitemap.html — using the /agex and /afi entries as the concrete
examples.

Points at agentculture/cloudflare as the boundary for DNS / Pages
project / Worker / Redirect Rule. Includes a new-sub-site checklist and
when NOT to make a project a sub-site.

Closes the fourth bullet of #288 ("bless the afi-cli scaffold pattern as
reference for future AgentCulture sub-sites"), which Qodo flagged as a
requirement gap on this PR.

Also extends docs/reference/architecture/index.md from a one-liner into
a navigable index so the new page has a landing point.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
OriNachum added a commit to agentculture/culture that referenced this pull request Apr 23, 2026
* docs: add afi-cli site to culture.dev navigation + sitemap

Wire culture.dev/afi alongside culture.dev/agex so the afi-cli docs site
is discoverable from the main culture site — sites.yml entry, aux_links,
footer, rel=related link, and sitemap index entry.

Closes #288

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs(arch): bless afi-cli scaffold + codify sub-site pattern (closes #288)

Adds docs/reference/architecture/subsites.md documenting the reference
pattern for hosting an AgentCulture project's docs as a sub-site under
culture.dev. Blesses the afi-cli Jekyll scaffold (agentculture/afi-cli#7)
and the earlier agex-cli scaffold as the canonical starting points; new
sub-sites should begin from the afi-cli version.

Spells out the five culture-side file edits every new sub-site needs —
_data/sites.yml, _config.culture.yml aux_links, _config.culture.yml
footer_content, _includes/head_custom.html rel=related, and
sitemap.html — using the /agex and /afi entries as the concrete
examples.

Points at agentculture/cloudflare as the boundary for DNS / Pages
project / Worker / Redirect Rule. Includes a new-sub-site checklist and
when NOT to make a project a sub-site.

Closes the fourth bullet of #288 ("bless the afi-cli scaffold pattern as
reference for future AgentCulture sub-sites"), which Qodo flagged as a
requirement gap on this PR.

Also extends docs/reference/architecture/index.md from a one-liner into
a navigable index so the new page has a landing point.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants