# Agents & automation

This repository powers [ivandamnjanovic.com](https://ivandamnjanovic.com/) (GitHub Pages).

## Read order

1. [`/llms.txt`](./llms.txt) — entry point ([llms.txt](https://llmstxt.org/) convention)
2. [`machine-readable-files/index.md`](./machine-readable-files/index.md) — profile, capabilities, navigation
3. [`machine-readable-files/contact.md`](./machine-readable-files/contact.md) — personal vs commercial channels
4. [`machine-readable-files/manifest.json`](./machine-readable-files/manifest.json) — JSON index of all markdown resources

Each HTML page exposes `<link rel="alternate" type="text/markdown">` to its mirror and `<link rel="related" href="/llms.txt">`.

Root [`.nojekyll`](./.nojekyll) keeps GitHub Pages from compiling `machine-readable-files/*.md` into HTML; canonical URLs must stay raw `.md`.

## Sync rules

When site content changes, update paired HTML and `machine-readable-files/*.md`, bump `last_updated` in YAML front matter, and update `sitemap.xml` / `sitemap-md.xml` `lastmod` dates. See [`README.md`](./README.md).

When locale mirrors change, run `npm run validate:i18n` (or any `translate:<locale>` script, which chains validation). English root content must stay basic ASCII in visible text; each `/{locale}/` mirror must follow its script profile in [`scripts/i18n/locales.json`](scripts/i18n/locales.json). Policy: [`docs/i18n.md`](./docs/i18n.md).

**Scaffold vs ready:** `/{path}/.i18n-scaffold` = structural placeholders only (skipped by validator; not linked from EN nav). `/{path}/.i18n-ready` = full DeepL build complete. Run `npm run scaffold:locales` before first translate.

## Contact policy

- **Personal:** X [@idamnjanovic](https://x.com/idamnjanov) — no `mailto:` or email in this repo.
- **Commercial / org:** [ambientsystems.ai](https://www.ambientsystems.ai/), [Ambient-Team](https://github.com/Ambient-Team).
