AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Astro source code used to generate the static, public ddev.com site.
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗The static site for DDEV, built with Astro and Tailwind CSS, and hosted on Cloudflare Pages.
Contributor Training · Markdown Formatting · Agent Guidance · Sponsor DDEV
The layout follows Astro’s project structure. The parts specific to this site:
cache/ – GitHub API responses cached during local development, to reduce API calls.public/ – images, logos, and redirects, copied as they are into dist/.src/content/ – Markdown for the blog posts and authors, validated by the content collections schemas in src/content.config.ts.src/pages/ – .astro and .mdx pages whose filenames become routes.src/layouts/ – Layout.astro, used by every page, and MarkdownLayout.astro, used by the .mdx pages.src/lib/ – GitHub API fetching, the search index, and the remark and rehype plugins for blog Markdown.src/featured-sponsors.json – the featured sponsors, see Sponsor Management.DDEV includes all the dependencies.
ddev start. It installs dependencies and starts the dev server.https://<projectname>.ddev.site:4321. The dev server reloads as you edit.| Command | Action |
|---|---|
ddev npm run build | Build the production site to dist/, served at https://<projectname>.ddev.site |
ddev prettier [file] | Fix formatting of the whole tree, or of the given files |
ddev textlint [file] | Fix wording in src/content/**, or in the given files, then report what is left |
ddev logs | Dev server output, for troubleshooting |
Run ddev prettier and ddev textlint before committing. CI runs the same checks.
nvm use to use the Node.js version in .nvmrc.npm install.npm run dev, and open http://localhost:4321/. If it fails, run npm cache clean --force && npm install && npm run dev.npm run build builds to dist/, and npm run preview serves the build. npm run prettier:fix and npm run textlint:fix && npm run textlint replace the DDEV commands above.
When switching from this setup to DDEV, delete node_modules/ and run ddev npm install, since the two architectures can conflict.
Not needed to contribute a blog post. Contributors, sponsors, releases, and other DDEV data come from the GitHub API; without a token, sponsorship data falls back to sample data. To use the real data:
cp .env.example .env. Don’t commit .env.repo, read:org, read:user, and read:project.GITHUB_TOKEN= in .env..editorconfig and .prettierrc hold the formatting rules. VS Code suggests the extensions in .vscode/extensions.json (Prettier, EditorConfig, Astro), and .vscode/settings.json formats on save.
Blog posts are Markdown files in src/content/blog/, named with a kebab-case slug, for example my-new-post.md. For callouts, code blocks, images, and other features, see MARKDOWN_FORMATTING.md. Use this frontmatter:
---
title: "It’s A Post!"
pubDate: 2026-01-01
modifiedDate: 2026-01-03
modifiedComment: "This got updated"
summary:
author: Randy Fay
featureImage:
src: /img/blog/2026/01/kebab-case.jpg
srcDark:
alt:
caption:
credit:
categories:
- DevOps
---
author must match the name of an author in src/content/authors/. Add one there for a new author.alt text for the feature image. caption and credit can use Markdown, wrapped in straight quotes (").allowedCategories in src/content.config.ts. The first one shows on post cards: Add-ons, Announcements (releases, organization news), Community (events, third-party developments), DevOps (workflows, infrastructure), Performance (benchmarks, tips), Guides (how-to posts), Newsletters, TechNotes (code-level discussions), Training (contributor training), Videos.public/img/blog/YYYY/MM/. The build converts PNG, JPEG, and GIF images to WebP, but the source files are committed as they are, so keep them under 2MB and no wider than about 2000px. ImageOptim applies lossless compression.Blog comments use giscus.
Add a .astro or .mdx file to src/pages/, and its name becomes the URL. Reuse the layout and components of an existing page. For generated pages, see src/pages/blog/[page].astro, src/pages/blog/category/[slug].astro, and src/pages/blog/author/[id].astro.
.textlintrc checks src/content/** for terminology and stop words, using textlint’s default terminology with a few overrides, such as allowing “website”, “front end”, and “command line”.
src/featured-sponsors.json lists the featured sponsors shown on the home page and in the light and dark badges generated for the main DDEV README. To add one, follow .claude/skills/add-sponsor/SKILL.md, or ask Claude Code to add the sponsor’s website.
Add redirects to public/_redirects. They can point to pages on the site, the DDEV docs, or external resources.
301, a permanent redirect./s, for example /s/port-conflict.main and every pull request.npm run build on every push to main and deploys dist/. It also builds a preview for each branch and comments the URL on its PR. Pull requests from forks get previews from GitHub Actions instead, see FORK_PREVIEW_SETUP.md.The site uses Octokit for GitHub REST and GraphQL requests, which need a token to authenticate and to stay within quota. GitHub Actions supplies its own GITHUB_TOKEN. Anywhere else, including local development and Cloudflare, set GITHUB_TOKEN to a classic personal access token with the scopes listed under GitHub Token.