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.