Skip to content
# Publishing and authoring
[Home](/en/ai)
[Catalog](/en/ai/catalog)
Prepare repository-backed components and setups for publication.
## Pages
[Publishing and authoring](/en/ai/docs/authoring)
[CLI commands](/en/ai/docs/commands)
[Supported harnesses](/en/ai/docs/harnesses)
[Overview](/en/ai/docs)
[Quickstart](/en/ai/docs/quickstart)
[Security checks](/en/ai/docs/security-checks)
[Trust and safety](/en/ai/docs/trust)
[Catalog](/en/ai/docs/catalog)
[CLI](/en/ai/docs/cli)
[Install telemetry](/en/ai/docs/cli/telemetry)
[agent](/en/ai/docs/components/agent)
[command](/en/ai/docs/components/command)
[hook](/en/ai/docs/components/hook)
[Components](/en/ai/docs/components)
[instruction](/en/ai/docs/components/instruction)
[mcp](/en/ai/docs/components/mcp)
[plugin](/en/ai/docs/components/plugin)
[setting](/en/ai/docs/components/setting)
[skill](/en/ai/docs/components/skill)
[Concepts](/en/ai/docs/concepts)
[Publishing](/en/ai/docs/publishing)
[Setups](/en/ai/docs/setups)
[Troubleshooting](/en/ai/docs/troubleshooting)
[Trust and safety](/en/ai/docs/trust-and-safety)
## Content
## Publishing content-hub entries The content hub is Git-native. Add one Markdown file per locale under `docs-user-facing/content/en` and `docs-user-facing/content/ru`. Both files must use the same `type` and `slug`. Supported types are `article`, `blog_post`, `changelog`, and `release_notes`. Unknown fields, duplicate identities, future dates, missing translations, and malformed slugs fail the build. Set `draft: true` to keep an entry out of routes, feeds, and indexes. Use `AI_STP_WEB_PROFILE=public_saas` to include the hub and `self_hosted` to omit its public surface. Run `bun run test:feature-profiles` before publishing changes. Every public content, contact, and policy page has two equal projections. The human URL is `/{locale}/...`; the machine URL is `/{locale}/ai/...`. The fixed Human/Machine switch preserves the locale, current route, and query string. New public routes must implement both projections from the same source and keep the switch available. Published versions come from a public GitHub repository at an exact commit and subpath. Validate locally, review the generated passport, then publish through the CLI. Secrets, private paths, caches, and generated output must never enter a passport.
ai_stp