chadtmiller.com/knotless
git that lives in your Atmosphere account
7
import { unified } from '@astrojs/markdown-remark'
import starlight from '@astrojs/starlight'
import { defineConfig } from 'astro/config'
import { remarkLinks, remarkMermaid } from './plugins.mjs'
import { remarkReference } from './reference.mjs'
/** Where the site is served: under the pages' own origin, beside the app. */
const base = '/docs'
// The sidebar follows docs/README.md: guides, then reference, then design.
const page = (label, slug) => ({ label, slug })
export default defineConfig({
site: 'https://knotless.dev',
base,
markdown: { processor: unified({ remarkPlugins: [[remarkLinks, { base }], remarkMermaid, remarkReference] }) },
integrations: [
starlight({
title: 'knotless docs',
description: 'Git repositories stored in atproto accounts: guides, reference and design.',
customCss: ['./src/theme.css'],
components: { SiteTitle: './src/SiteTitle.astro', ThemeSelect: './src/ThemeSelect.astro' },
social: [{ icon: 'seti:git', label: 'The repository', href: 'https://knotless.dev/chadtmiller.com/knotless' }],
lastUpdated: false,
// Code as the pages show it: a plain block, GitHub's colours.
expressiveCode: {
themes: ['github-dark', 'github-light'],
defaultProps: { frame: 'none' },
styleOverrides: {
borderRadius: 'var(--radius-md)',
borderColor: 'var(--line)',
codeBackground: 'var(--soft)',
codeFontFamily: 'var(--font-mono)',
codeFontSize: 'var(--text-sm)',
uiFontFamily: 'var(--font-sans)',
frames: { frameBoxShadowCssValue: 'none' },
},
},
pagination: true,
sidebar: [
page('Overview', ''),
{
label: 'Guides',
items: [
page('Getting started', 'guide/getting-started'),
page('Collaborating', 'guide/collaborating'),
page('Private repositories', 'guide/private'),
page('Agents', 'guide/agents'),
page('Review agents', 'guide/reviews'),
page('Running knotless-serve', 'guide/server'),
page('Workflows', 'guide/workflows'),
],
},
{
label: 'Reference',
items: [
page('Actions', 'reference/actions'),
page('Commands', 'reference/cli'),
page('MCP tools', 'reference/mcp'),
page('HTTP and XRPC API', 'reference/api'),
page('Workflow files', 'reference/workflows'),
page('knotless-run internals', 'reference/runner-internals'),
page('Performance', 'reference/performance'),
page('Observability', 'observability'),
],
},
{
label: 'Design',
items: [
page('Overview', 'design'),
page('Storage', 'design/storage'),
page('Naming and identity', 'design/identity'),
page('Access', 'design/access'),
page('Gateway', 'design/gateway'),
page('Pulls, issues and moderation', 'design/collaboration'),
page('knotless-serve', 'design/serve'),
page('knotless-run', 'design/runner'),
page('Shared steps', 'design/reusable-workflows'),
page('The merge queue', 'design/merge-queue'),
page('Releases', 'design/packages'),
page('Integrity and trust', 'design/security'),
page('Prior art', 'design/prior-art'),
],
},
{ label: 'Contributing', items: [page('Development', 'development')] },
],
}),
],
})