#!/usr/bin/env bash # Sync Cursor-style agent rules to Codex-friendly markdown and generate AGENTS.override.md. # Usage: sync-codex.sh [agents_dir] [base_agents_md] [output_override] set -euo pipefail agents_dir="${1:-.agents}" base_agents_md="${2:-AGENTS.md}" output_override="${3:-AGENTS.override.md}" rules_dir="${agents_dir}/rules" generated_rules_dir="${agents_dir}/generated/codex/rules" script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" if [[ ! -f "$base_agents_md" ]]; then echo "Error: base AGENTS file '$base_agents_md' does not exist." >&2 exit 1 fi if [[ ! -d "$rules_dir" ]]; then echo "Error: rules directory '$rules_dir' does not exist." >&2 exit 1 fi mkdir -p "$generated_rules_dir" find "$generated_rules_dir" -type f -name "*.md" -delete mapfile -t rule_sources < <(find "$rules_dir" -type f -name "*.mdc" | sort) for src in "${rule_sources[@]}"; do rel="${src#$rules_dir/}" dest="$generated_rules_dir/${rel%.mdc}.md" mkdir -p "$(dirname "$dest")" "$script_dir/convert-frontmatter.sh" cursor-to-codex "$src" "$dest" done tmp_file="$(mktemp "${TMPDIR:-/tmp}/codex-agents-override.XXXXXX")" trap 'rm -f "$tmp_file"' EXIT { echo "" echo "" echo cat "$base_agents_md" echo echo "---" echo echo "## Codex Rule Supplements" echo "- Generated from \`$rules_dir/*.mdc\`." echo "- Regenerate with \`make codex\`." for src in "${rule_sources[@]}"; do rel="${src#$rules_dir/}" generated="$generated_rules_dir/${rel%.mdc}.md" echo echo "---" echo echo "" cat "$generated" echo echo "" done } > "$tmp_file" mv "$tmp_file" "$output_override" trap - EXIT echo "Generated $output_override" echo "Generated Codex rule markdown under $generated_rules_dir"