init: git all the things!

This commit is contained in:
2026-06-06 20:02:17 -07:00
commit d19b3f3248
5 changed files with 1693 additions and 0 deletions
+310
View File
@@ -0,0 +1,310 @@
# AGENTS.md
## Project
This repository contains a mirrored copy of the Arizona Institute for Autism website.
Raw mirror source:
```txt
./www.azinstitute4autism.com
```
New Astro site target:
```txt
./www
```
The mirror was created with:
```sh
wget --mirror --page-requisites --adjust-extension --convert-links --no-parent https://www.azinstitute4autism.com
```
Do not modify, move, rename, or delete `./www.azinstitute4autism.com`.
Treat the mirror as read-only raw source material.
## Primary goal
Create a clean, maintainable Astro + TypeScript site in `./www` that reproduces the current public site as faithfully as practical while replacing HubSpot-generated structure with a future-friendly static site architecture.
The new site should be suitable for:
- static hosting
- file-based editing
- Front Matter CMS in VS Code
- future blog posting
- future Spanish and Arabic publishing
- future Netlify, nginx, Cloudflare Pages, or Vercel deployment
## Stack
Use:
- Astro
- TypeScript
- npm
- Markdown-first content
- MDX only when embedded Astro/React-style components are genuinely needed
- Astro content collections
- Zod frontmatter validation
- plain CSS with design tokens
- Astro image optimization where appropriate
Do not use:
- Tailwind
- a database
- a headless CMS
- HubSpot APIs
- HubSpot CLI
- HubSpot-hosted production assets unless unavoidable
- a form backend
- deployment-specific config unless explicitly requested
## Content strategy
Use file-based Markdown as the default content format.
Use `.md` for:
- normal blog posts
- normal service pages
- informational pages
- author profiles
Use `.mdx` only for pages or posts that need embedded components.
The content should be structured to work well with Front Matter CMS in VS Code.
Use these content folders:
```txt
src/content/pages/en
src/content/pages/ar
src/content/pages/es
src/content/blog/en
src/content/blog/ar
src/content/blog/es
src/content/authors/en
src/content/authors/ar
src/content/authors/es
```
## Multilingual requirements
Support:
- English
- Arabic
- Spanish
English is the default language.
URL patterns:
```txt
English:
/
/aba
/autismevaluations
/library/post-slug
Arabic:
/ar
/ar/aba
/ar/autismevaluations
/ar/library/post-slug
Spanish:
/es
/es/aba
/es/autismevaluations
/es/library/post-slug
```
Arabic pages must use:
```html
<html lang="ar" dir="rtl">
```
English pages must use:
```html
<html lang="en" dir="ltr">
```
Spanish pages must use:
```html
<html lang="es" dir="ltr">
```
Add RTL CSS support for Arabic.
Do not invent large Arabic or Spanish translations unless source content is available. Use clearly marked placeholders when needed.
## Design rules
The new design should be mostly faithful to the current site while becoming more maintainable.
Use plain CSS with design tokens.
Create reusable Astro components for repeated layout sections.
Do not create a messy page-by-page clone of HubSpot output.
Favor:
- semantic HTML
- reusable components
- organized CSS
- clear data files
- consistent spacing
- accessible markup
- predictable file structure
## URL and SEO rules
Preserve existing public URL paths whenever possible.
Preserve or document:
- page title
- meta description
- canonical URL
- Open Graph tags
- Twitter card tags
- JSON-LD/schema
- H1
- image alt text
- internal links
Generate nginx rewrite rules only for paths that must change.
Do not create unnecessary redirects for paths that are preserved.
## Assets
Self-host assets wherever practical.
Extract and organize:
- images
- SVGs
- icons
- fonts
- PDFs
- media files
- downloads
Use:
```txt
public/assets/images
public/assets/fonts
public/assets/media
public/assets/downloads
src/assets/images
```
Use `public/assets` for content/frontmatter references.
Use `src/assets` for images imported into Astro components and optimized by Astro.
Document any remaining external asset dependencies.
## Forms
Recreate visible forms as styled static HTML.
Do not implement backend submission.
Every form must include TODO comments, for example:
```html
<!-- TODO: Wire this form to Netlify Forms, a custom API endpoint, or another backend service. -->
<!-- TODO: Add spam protection before production launch. -->
```
## Likes and views
Preserve the AIA like/view counter conceptually.
Use this API base URL as the default:
```txt
https://api.azinstitute4autism.com
```
Do not hardcode it throughout the app.
Use:
```txt
PUBLIC_AIA_API_BASE=https://api.azinstitute4autism.com
```
Add it to `.env.example`.
The component must degrade gracefully when the API is unavailable.
## Validation
After meaningful changes, run:
```sh
npm run build
```
When available, also run:
```sh
npm run audit:links
```
If a command fails, diagnose and fix it when practical.
If it cannot be fixed, document the issue in:
```txt
reports/migration-summary.md
```
## Required reports
Create:
```txt
reports/url-inventory.csv
reports/asset-inventory.csv
reports/seo-audit.md
reports/accessibility-audit.md
reports/broken-links.md
reports/cleanup-log.md
reports/redirect-map.csv
reports/nginx-rewrites.conf
reports/migration-summary.md
```
## Working style
Before large filesystem changes:
1. Inspect the mirror.
2. Summarize the implementation plan.
3. Proceed methodically.
At the end of a task, summarize:
- what changed
- what works
- what needs manual review
- build results
- audit results
- unresolved issues
Prioritize a clean, maintainable foundation over a pixel-perfect but messy clone.
+52
View File
@@ -0,0 +1,52 @@
# Autonomous Codex
Use the project launcher to run Codex with the `azi4a2-autonomous` permission
profile:
```sh
./codex-auto
```
For a non-interactive task:
```sh
./codex-auto exec "Continue the Astro migration, verify the build and audits, and document unresolved issues."
```
The launcher automatically permits non-interactive runs in this mounted
workspace even when Codex cannot discover its Git metadata.
The profile:
- never pauses for approval
- limits filesystem access to minimal runtime files plus this project
- allows writes in this project
- keeps `.codex` and `www.azinstitute4autism.com` read-only
- permits normal Git operations, including staging and committing
- enables live web search and outbound network retrievals
Outbound network access is domain-unrestricted because package installation and
retrieval sources vary. The sandbox cannot distinguish a retrieval from another
outbound request, so do not place secrets in project files or task prompts.
The profile is stored outside the workspace at:
```txt
~/.codex/azi4a2-autonomous.config.toml
```
Do not add `--sandbox`; legacy sandbox flags override the custom permission
profile. Do not use `--dangerously-bypass-approvals-and-sandbox`.
## Verification
The nested setup smoke test confirmed that the project is readable and
`~/.codex/auth.json` is not readable. In the current host session, sandboxed
shell retrievals resolved domains but were reset by the beta network proxy.
After launching `./codex-auto` directly, verify shell retrievals with:
```sh
curl -fsS https://registry.npmjs.org/astro >/dev/null
```
Live web search is separate from shell network access and remains enabled.
+108
View File
@@ -0,0 +1,108 @@
@AGENTS.md
# CLAUDE.md
## Claude Code instructions
This project is intended to be worked on with Claude Code.
Before starting the HubSpot-to-Astro migration, read:
```txt
MIGRATION_BRIEF.md
```
Then inspect:
```txt
./www.azinstitute4autism.com
```
and create the new Astro site in:
```txt
./www
```
Do not modify or delete:
```txt
./www.azinstitute4autism.com
```
## Expected workflow
For the migration task:
1. Read `AGENTS.md`.
2. Read `MIGRATION_BRIEF.md`.
3. Inspect the local mirror.
4. Provide a concise implementation plan.
5. Scaffold or update the Astro project in `./www`.
6. Build extraction, crawl, audit, sitemap, and redirect tools.
7. Extract content, media, metadata, navigation, and forms.
8. Refactor into reusable Astro components.
9. Configure Astro content collections and Front Matter CMS.
10. Add English, Arabic, and Spanish structure.
11. Add RTL CSS for Arabic.
12. Add SEO, sitemap, robots, redirects, and reports.
13. Run build and audits.
14. Fix practical errors.
15. Document incomplete items in `reports/migration-summary.md`.
## Important Claude-specific behavior
Do not rely on a single massive prompt if the same information already exists in `MIGRATION_BRIEF.md`.
When asked to begin migration, first read the relevant project files, then work from the files.
## Safety and preservation
Treat `./www.azinstitute4autism.com` as read-only source material.
Do not delete or overwrite raw source assets.
Do not remove files unless you are certain they are generated output in `./www`.
Do not make assumptions about form backend behavior. Forms must remain static with TODO comments.
Do not invent large Spanish or Arabic translations. Create placeholders only when source content does not exist.
## Commands
Use npm.
Expected commands after setup:
```sh
npm install
npm run dev
npm run build
npm run preview
npm run audit:links
```
If any command fails, investigate and fix when practical.
If unresolved, document the issue in:
```txt
www/reports/migration-summary.md
```
## Completion summary
When finished, report:
- files and folders created
- content migrated
- pages and posts extracted
- assets copied or converted
- forms recreated
- multilingual structure status
- like/view counter status
- SEO status
- redirect status
- build status
- audit status
- manual review items
+1208
View File
File diff suppressed because it is too large Load Diff
Executable
+15
View File
@@ -0,0 +1,15 @@
#!/usr/bin/env bash
set -euo pipefail
repo_root="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
if [[ "${1:-}" == "exec" ]]; then
shift
set -- exec --skip-git-repo-check "$@"
fi
exec codex \
--profile-v2 azi4a2-autonomous \
--strict-config \
--cd "$repo_root" \
"$@"