This repository contains a personal static website built with Swift and Saga. Keep agent-facing instructions and repository documentation in English.
- Use Saga as the static site generator. The site is produced by the
RychillieSwift executable target. - The Swift executable target lives in
Sources/Rychillie. - Conductor helper scripts live in
Sources/Scriptsand should not be moved intoSources/Rychillie. - Content lives in
content/. - Generated output goes to
deploy/and should not be edited or committed. - Generated Tailwind output goes to
content/static/styles.cssand should not be edited or committed. - Generated responsive image variants go to
deploy/static/images/and should not be edited or committed. content/static/tailwind.cssis the Tailwind source file. It currently imports Tailwind CSS.Sources/Rychillie/Styles/Theme.swiftcentralizes Tailwind utility class strings for layout, typography, dark mode, cards, notes, tags, and Markdown rendering.Sources/Rychillie/Core/contains site constants, localized copy, content metadata, Markdown/LLMS generation, and processors.Sources/Rychillie/Layout/contains the shared HTML shell, reusable layout components, and inline Swift-rendered SVG icons.Sources/Rychillie/Pages/contains the home, notes index, note detail, and about renderers.Sources/Rychillie/main.swiftis responsible for compiling Tailwind throughSwiftTailwind, running Saga fromcontent/todeploy/, registering Markdown readers/writers, rendering localized pages, generating LLMS/Markdown outputs, generating responsive images, and removing source-only static files from generated output.
- Prefer editing source templates, content files, and styles over generated files.
- Prefer adding or changing reusable visual classes in
Themeinstead of scattering long class strings through templates, unless a class is truly one-off. - If styling changes require new Tailwind utilities, update Swift templates,
Theme, orcontent/static/tailwind.css; do not editcontent/static/styles.css. - Pages and notes are Markdown files under
content/, localized undercontent/en/notes/andcontent/pt-BR/notes/. - Note metadata uses required
tags, optionalsummary, and optionaltype. Supported note types arearticle,talk,video,participated, andother; missingtypedefaults toarticle. - The home page bento grid links to localized event notes and should keep English and Portuguese paths in sync.
- Use
Sources/Rychillie/Core/Site.swiftfor shared site constants, localized copy, locale paths, and external links. - Use
Sources/Rychillie/Layout/Layout.swiftfor the base shell, metadata, canonical/alternate links, Markdown alternates, hashed CSS link, navigation, and footer. - Use
Sources/Rychillie/Layout/Components.swiftfor shared cards, responsive image helpers, note cards, and inline action links. - Use
Sources/Rychillie/Layout/Icons.swiftfor inline SVG icons instead of adding static icon files. - Use
Sources/Rychillie/Core/LLMS.swiftfor/llms.txt,/llms-full.txt, and clean per-note.mdoutput. Do not hand-edit generated Markdown indeploy/. - Use
Sources/Rychillie/Core/Processors.swiftfor Moon syntax highlighting processors. content/static/images/contains source images.Sources/Scripts/generate-images.shcreates optimized PNG/WebP/GIF variants duringsaga build.content/_headerscontrols Cloudflare Pages cache headers and content types for generated CSS, images, Markdown, text, and XML files.- Use
origin/mainas the comparison base for diffs and pull requests in Conductor workspaces. - Do not rename the current branch unless the user explicitly asks.
- Keep changes focused on the requested website behavior, content, or configuration.
- Do not commit local secrets or Conductor context files.
.context/cloudflare.envis only for local Cloudflare testing.
- Pull request CI runs from
.github/workflows/ci.yml. - GitHub Actions deploys to Cloudflare Pages on pushes to
main. - The workflow lives in
.github/workflows/deploy-cloudflare-pages.yml. - CI and deploy workflows use
macos-latest, install the Saga CLI, ImageMagick, and SwiftLint, runswiftlint lint --quiet, runsaga build, and verifydeploy/index.html. - The deploy workflow deploys
deploy/withcloudflare/wrangler-action@v3. - The Cloudflare Pages project name is
rychillie.
- This repository currently uses the legacy shared Conductor configuration in
conductor.json; do not migrate it to.conductor/settings.tomlunless the user explicitly asks. - Setup runs
zsh Sources/Scripts/conductor-setup.shand verifies Swift, the Saga CLI, ImageMagick, and SwiftLint. - Run starts
saga devthroughzsh Sources/Scripts/conductor-run.sh. - The run script uses
CONDUCTOR_PORT, falling back to3000outside Conductor. runScriptModeisconcurrentbecause each workspace receives its own port range.
- Run
saga buildafter meaningful changes to Swift templates, Saga configuration, Tailwind styling, or content. - Run
swiftlint lint --quietafter meaningful Swift changes. - For documentation-only changes,
git diff --checkis sufficient unless the docs describe behavior that needs verification. - Use
saga dev --port "$CONDUCTOR_PORT"for local preview inside Conductor when needed. - If required build tools are missing, install them with:
brew install loopwerk/tap/saga imagemagick swiftlint