[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-microsoft-add-seo":3,"mdc--8q6khe-key":43,"related-repo-microsoft-add-seo":3214,"related-org-microsoft-add-seo":3313},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":26,"repoUrl":27,"updatedAt":28,"license":29,"forks":30,"topics":31,"repo":38,"sourceUrl":41,"mdContent":42},"add-seo","optimize Power Pages sites for SEO","Adds SEO essentials to a Power Pages code site, including robots.txt, sitemap.xml, meta tags, Open Graph tags, and favicon configuration. Use when the user wants to improve search engine optimization or make their site more searchable.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"microsoft","Microsoft","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fmicrosoft.png",[12,16,19,22,23],{"name":13,"slug":14,"type":15},"Marketing","marketing","tag",{"name":17,"slug":18,"type":15},"SEO","seo",{"name":20,"slug":21,"type":15},"Power Pages","power-pages",{"name":9,"slug":8,"type":15},{"name":24,"slug":25,"type":15},"Frontend","frontend",564,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fpower-platform-skills","2026-04-06T18:34:43.680002",null,114,[32,33,34,35,36,21,37],"claude-code-plugin","claude-code-skills","code-apps","github-copilot-plugin","power-apps","power-platform",{"repoUrl":27,"stars":26,"forks":30,"topics":39,"description":40},[32,33,34,35,36,21,37],"A plugin marketplace for Claude Code\u002FGitHub Copilot that provides Power Platform development plugins, including reusable skills, agents, and commands for building and deploying solutions.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fpower-platform-skills\u002Ftree\u002FHEAD\u002Fplugins\u002Fpower-pages\u002Fskills\u002Fadd-seo","---\nname: add-seo\ndescription: >-\n  Adds SEO essentials to a Power Pages code site, including robots.txt, sitemap.xml,\n  meta tags, Open Graph tags, and favicon configuration. Use when the user wants to\n  improve search engine optimization or make their site more searchable.\nuser-invocable: true\nallowed-tools: Read, Write, Edit, Grep, Glob, Bash, AskUserQuestion, Task, TaskCreate, TaskUpdate, TaskList, mcp__plugin_power-pages_playwright__browser_navigate, mcp__plugin_power-pages_playwright__browser_snapshot, mcp__plugin_power-pages_playwright__browser_click, mcp__plugin_power-pages_playwright__browser_close\nmodel: sonnet\n---\n\n> **Plugin check**: Run `node \"${PLUGIN_ROOT}\u002Fscripts\u002Fcheck-version.js\"` — if it outputs a message, show it to the user before proceeding.\n\n# Add SEO\n\nAdd essential SEO assets to a Power Pages code site: `robots.txt`, `sitemap.xml`, and meta tags.\n\n> **Prerequisite:** This skill expects an existing Power Pages code site created via `\u002Fcreate-site`. Run that skill first if the site does not exist yet.\n\n## Core Principles\n\n- **Crawlability first:** Every public page must be discoverable by search engines via a valid `robots.txt` and `sitemap.xml` before any other SEO work matters.\n- **Accurate metadata:** Meta tags (title, description, Open Graph) must truthfully represent page content — misleading metadata harms rankings.\n- **Framework-aware placement:** SEO assets must be placed in the correct location for the detected framework (public directory, layout component, etc.).\n\n**Initial request:** $ARGUMENTS\n\n## Workflow\n\n1. **Phase 1: Verify Site Exists** → Locate the Power Pages project\n2. **Phase 2: Gather SEO Configuration** → Site URL, pages, preferences\n3. **Phase 3: Plan & Approve** → Present SEO additions inline, get user approval\n4. **Phase 4: Add robots.txt** → Create robots.txt in public directory\n5. **Phase 5: Add sitemap.xml** → Generate sitemap.xml from site routes\n6. **Phase 6: Add Meta Tags** → Add title, description, viewport, Open Graph, and favicon to index.html\n7. **Phase 7: Verify & Commit** → Verify via Playwright, commit changes\n\n---\n\n## Phase 1: Verify Site Exists\n\n**Goal:** Confirm a Power Pages code site exists and understand its structure.\n\n### Actions\n\n#### 1.1 Locate Project\n\nLook for `powerpages.config.json` in the current directory or immediate subdirectories to find the project root. Use your file-search tool (e.g., `Glob` with patterns `powerpages.config.json` and `*\u002Fpowerpages.config.json`) rather than a shell-specific command.\n\n**If not found**: Tell the user to create a site first with `\u002Fcreate-site`.\n\n#### 1.2 Read Existing Config\n\nRead `powerpages.config.json` to get the site name and config.\n\n#### 1.3 Detect Framework & Discover Routes\n\nRead `package.json` to determine the framework and locate key files. See `${PLUGIN_ROOT}\u002Freferences\u002Fframework-conventions.md` for the full framework → public directory → index HTML mapping and route discovery patterns.\n\nBuild a list of all routes (e.g., `\u002F`, `\u002Fabout`, `\u002Fcontact`, `\u002Fblog`).\n\n### Output\n\n- Project root path identified\n- Framework detected (React, Vue, Angular, or Astro)\n- Full list of discoverable routes\n\n---\n\n## Phase 2: Gather SEO Configuration\n\n**Goal:** Collect all SEO preferences from the user before making any changes.\n\n### Actions\n\n\u003C!-- not-a-gate: data-gathering — production URL + exclusion list shape the upcoming Phase 3 plan but don't write anything on their own -->\n\nUse `AskUserQuestion` to collect SEO preferences:\n\n#### Call 1\n\n| Question | Header | Options |\n|----------|--------|---------|\n| What is the production URL for your site? (e.g., \u003Chttps:\u002F\u002Fcontoso.powerappsportals.com>) | Site URL | *(free text — use single generic option so user types via \"Other\")* |\n| Which pages should be excluded from search engine indexing? | Exclusions | None — index all pages (Recommended), Admin\u002Fauth pages only, Let me specify |\n\n\u003C!-- not-a-gate: data-gathering — meta description + OG tag choice shape the upcoming Phase 3 plan but don't write anything on their own -->\n\n#### Call 2\n\n| Question | Header | Options |\n|----------|--------|---------|\n| What meta description should appear in search results? | Description | *(free text — use single generic option so user types via \"Other\")* |\n| Add Open Graph tags for social media sharing? | OG Tags | Yes — add Open Graph and Twitter Card tags (Recommended), No — skip social tags |\n\n### Output\n\n- Production URL confirmed\n- Exclusion list finalized\n- Meta description text\n- Open Graph tag preference (yes\u002Fno)\n\n---\n\n## Phase 3: Plan & Approve\n\n**Goal:** Present the full SEO plan to the user and get explicit approval before making changes.\n\n### Actions\n\nPresent the SEO additions that will be made as a clear, inline summary:\n\n1. **robots.txt content** — which paths will be allowed\u002Fdisallowed\n2. **sitemap.xml content** — all discovered routes with the production URL and priority assignments\n3. **Meta tags to add to index.html** — title, description, viewport, charset, Open Graph, Twitter Card\n4. **Favicon** — link tag and placeholder SVG\n\n\u003C!-- gate: add-seo:3.plan-approval | category=plan | cancel-leaves=nothing -->\n\n> 🚦 **Gate (plan · add-seo:3.plan-approval):** Final sign-off on the SEO additions before any `robots.txt` \u002F `sitemap.xml` \u002F `index.html` write.\n>\n> **Trigger:** Phase 3 has presented the full plan inline (robots.txt, sitemap.xml, meta tags, favicon).\n> **Why we ask:** SEO assets land on disk with the wrong production URL, wrong exclusions, or unwanted OG tags — fixable but noisy in git history.\n> **Cancel leaves:** Nothing — no file writes yet.\n\nAfter presenting the plan, use `AskUserQuestion` to get approval:\n\n| Question | Header | Options |\n|----------|--------|---------|\n| Here is the SEO plan. How would you like to proceed? | SEO Plan Approval | Approve and proceed (Recommended), I'd like to make changes |\n\nIf the user chooses \"I'd like to make changes\", ask what they want to change, update the plan accordingly, and present the revised plan for approval again.\n\n### Output\n\n- User-approved SEO plan ready for implementation\n\n---\n\n## Phase 4: Add robots.txt\n\n**Goal:** Create a valid `robots.txt` that tells search engines which pages to crawl.\n\n### Actions\n\nCreate `robots.txt` in the public directory (`\u003CPROJECT_ROOT>\u002Fpublic\u002Frobots.txt`):\n\n```text\nUser-agent: *\nAllow: \u002F\n\nSitemap: \u003CPRODUCTION_URL>\u002Fsitemap.xml\n```\n\nIf the user specified pages to exclude, add `Disallow` directives:\n\n```text\nUser-agent: *\nAllow: \u002F\nDisallow: \u002Fadmin\u002F\nDisallow: \u002Fauth\u002F\n\nSitemap: \u003CPRODUCTION_URL>\u002Fsitemap.xml\n```\n\n### Output\n\n- `public\u002Frobots.txt` created with correct directives\n\n---\n\n## Phase 5: Add sitemap.xml\n\n**Goal:** Generate a complete `sitemap.xml` listing all discoverable routes with proper priorities.\n\n### Actions\n\nCreate `sitemap.xml` in the public directory (`\u003CPROJECT_ROOT>\u002Fpublic\u002Fsitemap.xml`).\n\nGenerate entries for each discovered route using the production URL:\n\n```xml\n\u003C?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\u003Curlset xmlns=\"http:\u002F\u002Fwww.sitemaps.org\u002Fschemas\u002Fsitemap\u002F0.9\">\n  \u003Curl>\n    \u003Cloc>\u003CPRODUCTION_URL>\u002F\u003C\u002Floc>\n    \u003Clastmod>\u003CTODAY_DATE>\u003C\u002Flastmod>\n    \u003Cchangefreq>weekly\u003C\u002Fchangefreq>\n    \u003Cpriority>1.0\u003C\u002Fpriority>\n  \u003C\u002Furl>\n  \u003Curl>\n    \u003Cloc>\u003CPRODUCTION_URL>\u002Fabout\u003C\u002Floc>\n    \u003Clastmod>\u003CTODAY_DATE>\u003C\u002Flastmod>\n    \u003Cchangefreq>monthly\u003C\u002Fchangefreq>\n    \u003Cpriority>0.8\u003C\u002Fpriority>\n  \u003C\u002Furl>\n  \u003C!-- Additional routes... -->\n\u003C\u002Furlset>\n```\n\n**Priority rules:**\n\n- Home page (`\u002F`): `1.0`\n- Top-level pages: `0.8`\n- Sub-pages: `0.6`\n\n**Exclusions:** Do not include routes the user chose to exclude (e.g., `\u002Fadmin\u002F*`, `\u002Fauth\u002F*`).\n\n### Output\n\n- `public\u002Fsitemap.xml` created with all routes, correct URLs, and no placeholders\n\n---\n\n## Phase 6: Add Meta Tags\n\n**Goal:** Add comprehensive meta tags, Open Graph tags, and a favicon to the site's HTML.\n\n### Actions\n\n#### 6.1 Essential Meta Tags\n\nAdd or update meta tags in the site's `index.html` (location depends on framework — see Phase 1.3):\n\n```html\n\u003Chead>\n  \u003Cmeta charset=\"UTF-8\" \u002F>\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \u002F>\n  \u003Ctitle>\u003CSITE_TITLE>\u003C\u002Ftitle>\n  \u003Cmeta name=\"description\" content=\"\u003CMETA_DESCRIPTION>\" \u002F>\n  \u003Cmeta name=\"robots\" content=\"index, follow\" \u002F>\n  \u003Clink rel=\"canonical\" href=\"\u003CPRODUCTION_URL>\u002F\" \u002F>\n  \u003Clink rel=\"sitemap\" type=\"application\u002Fxml\" href=\"\u002Fsitemap.xml\" \u002F>\n\u003C\u002Fhead>\n```\n\n#### 6.2 Open Graph Tags (if user opted in)\n\nAdd Open Graph and Twitter Card meta tags inside `\u003Chead>`:\n\n```html\n\u003C!-- Open Graph -->\n\u003Cmeta property=\"og:type\" content=\"website\" \u002F>\n\u003Cmeta property=\"og:title\" content=\"\u003CSITE_TITLE>\" \u002F>\n\u003Cmeta property=\"og:description\" content=\"\u003CMETA_DESCRIPTION>\" \u002F>\n\u003Cmeta property=\"og:url\" content=\"\u003CPRODUCTION_URL>\u002F\" \u002F>\n\u003Cmeta property=\"og:site_name\" content=\"\u003CSITE_TITLE>\" \u002F>\n\n\u003C!-- Twitter Card -->\n\u003Cmeta name=\"twitter:card\" content=\"summary\" \u002F>\n\u003Cmeta name=\"twitter:title\" content=\"\u003CSITE_TITLE>\" \u002F>\n\u003Cmeta name=\"twitter:description\" content=\"\u003CMETA_DESCRIPTION>\" \u002F>\n```\n\n#### 6.3 Favicon\n\nCheck if a favicon already exists in the public directory. If not, add a simple SVG favicon link:\n\n```html\n\u003Clink rel=\"icon\" type=\"image\u002Fsvg+xml\" href=\"\u002Ffavicon.svg\" \u002F>\n```\n\nCreate a minimal placeholder `public\u002Ffavicon.svg` using the site's primary color:\n\n```xml\n\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" viewBox=\"0 0 100 100\">\n  \u003Crect width=\"100\" height=\"100\" rx=\"20\" fill=\"\u003CPRIMARY_COLOR>\"\u002F>\n  \u003Ctext x=\"50\" y=\"70\" font-size=\"50\" text-anchor=\"middle\" fill=\"white\" font-family=\"system-ui, sans-serif\" font-weight=\"bold\">\u003CFIRST_LETTER>\u003C\u002Ftext>\n\u003C\u002Fsvg>\n```\n\nWhere `\u003CFIRST_LETTER>` is the first letter of the site name and `\u003CPRIMARY_COLOR>` is the primary theme color from the site's configuration.\n\n#### 6.4 Astro-Specific Handling\n\nFor Astro sites, meta tags should be added to the base layout component (e.g., `src\u002Flayouts\u002FLayout.astro`) rather than a root `index.html`. Astro uses component-based `\u003Chead>` management.\n\n### Output\n\n- Meta tags added to `index.html` (or Astro layout equivalent)\n- Open Graph and Twitter Card tags added (if opted in)\n- Favicon SVG created and linked (if not already present)\n\n---\n\n## Phase 7: Verify & Commit\n\n**Goal:** Confirm all SEO assets are in place, verify via Playwright, and commit changes.\n\n### Actions\n\n#### 7.1 Verify Files Exist\n\nConfirm the following files were created\u002Fupdated:\n\n- `public\u002Frobots.txt`\n- `public\u002Fsitemap.xml`\n- `public\u002Ffavicon.svg` (if created)\n- `index.html` or equivalent (meta tags added)\n\n#### 7.2 Verify via Playwright\n\nIf a dev server is running (or start one):\n\n1. Navigate to the site root and use `browser_snapshot` to verify meta tags are present in the page source\n2. Navigate to `\u002Frobots.txt` and verify it loads\n3. Navigate to `\u002Fsitemap.xml` and verify it loads\n\n#### 7.3 Record Skill Usage\n\n> Reference: `${PLUGIN_ROOT}\u002Freferences\u002Fskill-tracking-reference.md`\n\nFollow the skill tracking instructions in the reference to record this skill's usage. Use `--skillName \"AddSeo\"`.\n\n#### 7.4 Git Commit\n\n> **CRITICAL — This step is MANDATORY. You MUST commit the SEO changes before finishing. Do NOT skip this step.**\n\nStage the specific SEO files and commit:\n\n```bash\ngit add public\u002Frobots.txt public\u002Fsitemap.xml public\u002Ffavicon.svg index.html\ngit commit -m \"Add SEO: robots.txt, sitemap.xml, meta tags, favicon\"\n```\n\nAdjust the file paths based on what was actually created (e.g., include `src\u002Flayouts\u002FLayout.astro` instead of `index.html` for Astro sites, omit `favicon.svg` if it was not created). Only stage files that were created or modified by this skill.\n\n#### 7.5 Present Summary\n\nPresent a summary of what was added:\n\n| Asset | Status | Details |\n|-------|--------|---------|\n| `robots.txt` | Created | Allows all crawlers, references sitemap |\n| `sitemap.xml` | Created | X URLs mapped with priorities |\n| Meta tags | Added | title, description, viewport, canonical, robots |\n| Open Graph | Added\u002FSkipped | og:title, og:description, og:url, Twitter Card |\n| Favicon | Created\u002FSkipped | SVG favicon with site initial |\n\n#### 7.6 Suggest Next Steps\n\nAfter the summary, suggest:\n\n- **Deploy the site** to make SEO changes live: `\u002Fdeploy-site`\n- If data model is needed: `\u002Fsetup-datamodel`\n- For more advanced SEO: consider structured data (JSON-LD), performance optimization, and accessibility audit\n\n### Output\n\n- All files verified on disk\n- Playwright verification passed\n- Git commit created with all SEO changes\n\n---\n\n## Important Notes\n\n### Progress Tracking\n\nUse `TaskCreate` at the start to track each phase:\n\n| Task | Description |\n|------|-------------|\n| Phase 1 | Verify site exists and detect framework |\n| Phase 2 | Gather SEO configuration from user |\n| Phase 3 | Present plan and get user approval |\n| Phase 4 | Create robots.txt |\n| Phase 5 | Generate sitemap.xml |\n| Phase 6 | Add meta tags, Open Graph, and favicon |\n| Phase 7 | Verify via Playwright and commit |\n\nUpdate each task with `TaskUpdate` as it is completed.\n\n### Key Decision Points\n\n- **Phase 1:** If `powerpages.config.json` is not found, stop and redirect the user to `\u002Fcreate-site`.\n- **Phase 2:** If the user specifies custom exclusions, confirm the exact paths before proceeding.\n- **Phase 3:** Do not proceed to implementation until the user explicitly approves the plan.\n- **Phase 6.4:** If the framework is Astro, meta tags go into the layout component, not `index.html`.\n- **Phase 7.2:** If Playwright verification fails (e.g., robots.txt does not load), diagnose and fix before committing.\n\n**Begin with Phase 1: Verify Site Exists**\n",{"data":44,"body":48},{"name":4,"description":6,"user-invocable":45,"allowed-tools":46,"model":47},true,"Read, Write, Edit, Grep, Glob, Bash, AskUserQuestion, Task, TaskCreate, TaskUpdate, TaskList, mcp__plugin_power-pages_playwright__browser_navigate, mcp__plugin_power-pages_playwright__browser_snapshot, mcp__plugin_power-pages_playwright__browser_click, mcp__plugin_power-pages_playwright__browser_close","sonnet",{"type":49,"children":50},"root",[51,78,84,105,126,133,182,192,198,272,276,281,291,298,305,340,357,363,375,381,401,435,441,459,462,467,476,481,494,500,583,589,651,656,679,682,687,696,701,706,749,809,821,863,868,873,881,884,889,905,910,930,942,955,964,969,983,986,991,1007,1012,1029,1034,1186,1194,1237,1261,1266,1280,1283,1288,1297,1302,1308,1320,1756,1762,1775,2259,2265,2270,2355,2368,2407,2428,2434,2461,2466,2491,2494,2499,2508,2513,2519,2524,2563,2569,2574,2613,2619,2633,2645,2651,2662,2667,2742,2769,2775,2780,2901,2907,2912,2947,2952,2970,2973,2979,2985,2997,3109,3122,3128,3200,3208],{"type":52,"tag":53,"props":54,"children":55},"element","blockquote",{},[56],{"type":52,"tag":57,"props":58,"children":59},"p",{},[60,67,69,76],{"type":52,"tag":61,"props":62,"children":63},"strong",{},[64],{"type":65,"value":66},"text","Plugin check",{"type":65,"value":68},": Run ",{"type":52,"tag":70,"props":71,"children":73},"code",{"className":72},[],[74],{"type":65,"value":75},"node \"${PLUGIN_ROOT}\u002Fscripts\u002Fcheck-version.js\"",{"type":65,"value":77}," — if it outputs a message, show it to the user before proceeding.",{"type":52,"tag":79,"props":80,"children":81},"h1",{"id":4},[82],{"type":65,"value":83},"Add SEO",{"type":52,"tag":57,"props":85,"children":86},{},[87,89,95,97,103],{"type":65,"value":88},"Add essential SEO assets to a Power Pages code site: ",{"type":52,"tag":70,"props":90,"children":92},{"className":91},[],[93],{"type":65,"value":94},"robots.txt",{"type":65,"value":96},", ",{"type":52,"tag":70,"props":98,"children":100},{"className":99},[],[101],{"type":65,"value":102},"sitemap.xml",{"type":65,"value":104},", and meta tags.",{"type":52,"tag":53,"props":106,"children":107},{},[108],{"type":52,"tag":57,"props":109,"children":110},{},[111,116,118,124],{"type":52,"tag":61,"props":112,"children":113},{},[114],{"type":65,"value":115},"Prerequisite:",{"type":65,"value":117}," This skill expects an existing Power Pages code site created via ",{"type":52,"tag":70,"props":119,"children":121},{"className":120},[],[122],{"type":65,"value":123},"\u002Fcreate-site",{"type":65,"value":125},". Run that skill first if the site does not exist yet.",{"type":52,"tag":127,"props":128,"children":130},"h2",{"id":129},"core-principles",[131],{"type":65,"value":132},"Core Principles",{"type":52,"tag":134,"props":135,"children":136},"ul",{},[137,162,172],{"type":52,"tag":138,"props":139,"children":140},"li",{},[141,146,148,153,155,160],{"type":52,"tag":61,"props":142,"children":143},{},[144],{"type":65,"value":145},"Crawlability first:",{"type":65,"value":147}," Every public page must be discoverable by search engines via a valid ",{"type":52,"tag":70,"props":149,"children":151},{"className":150},[],[152],{"type":65,"value":94},{"type":65,"value":154}," and ",{"type":52,"tag":70,"props":156,"children":158},{"className":157},[],[159],{"type":65,"value":102},{"type":65,"value":161}," before any other SEO work matters.",{"type":52,"tag":138,"props":163,"children":164},{},[165,170],{"type":52,"tag":61,"props":166,"children":167},{},[168],{"type":65,"value":169},"Accurate metadata:",{"type":65,"value":171}," Meta tags (title, description, Open Graph) must truthfully represent page content — misleading metadata harms rankings.",{"type":52,"tag":138,"props":173,"children":174},{},[175,180],{"type":52,"tag":61,"props":176,"children":177},{},[178],{"type":65,"value":179},"Framework-aware placement:",{"type":65,"value":181}," SEO assets must be placed in the correct location for the detected framework (public directory, layout component, etc.).",{"type":52,"tag":57,"props":183,"children":184},{},[185,190],{"type":52,"tag":61,"props":186,"children":187},{},[188],{"type":65,"value":189},"Initial request:",{"type":65,"value":191}," $ARGUMENTS",{"type":52,"tag":127,"props":193,"children":195},{"id":194},"workflow",[196],{"type":65,"value":197},"Workflow",{"type":52,"tag":199,"props":200,"children":201},"ol",{},[202,212,222,232,242,252,262],{"type":52,"tag":138,"props":203,"children":204},{},[205,210],{"type":52,"tag":61,"props":206,"children":207},{},[208],{"type":65,"value":209},"Phase 1: Verify Site Exists",{"type":65,"value":211}," → Locate the Power Pages project",{"type":52,"tag":138,"props":213,"children":214},{},[215,220],{"type":52,"tag":61,"props":216,"children":217},{},[218],{"type":65,"value":219},"Phase 2: Gather SEO Configuration",{"type":65,"value":221}," → Site URL, pages, preferences",{"type":52,"tag":138,"props":223,"children":224},{},[225,230],{"type":52,"tag":61,"props":226,"children":227},{},[228],{"type":65,"value":229},"Phase 3: Plan & Approve",{"type":65,"value":231}," → Present SEO additions inline, get user approval",{"type":52,"tag":138,"props":233,"children":234},{},[235,240],{"type":52,"tag":61,"props":236,"children":237},{},[238],{"type":65,"value":239},"Phase 4: Add robots.txt",{"type":65,"value":241}," → Create robots.txt in public directory",{"type":52,"tag":138,"props":243,"children":244},{},[245,250],{"type":52,"tag":61,"props":246,"children":247},{},[248],{"type":65,"value":249},"Phase 5: Add sitemap.xml",{"type":65,"value":251}," → Generate sitemap.xml from site routes",{"type":52,"tag":138,"props":253,"children":254},{},[255,260],{"type":52,"tag":61,"props":256,"children":257},{},[258],{"type":65,"value":259},"Phase 6: Add Meta Tags",{"type":65,"value":261}," → Add title, description, viewport, Open Graph, and favicon to index.html",{"type":52,"tag":138,"props":263,"children":264},{},[265,270],{"type":52,"tag":61,"props":266,"children":267},{},[268],{"type":65,"value":269},"Phase 7: Verify & Commit",{"type":65,"value":271}," → Verify via Playwright, commit changes",{"type":52,"tag":273,"props":274,"children":275},"hr",{},[],{"type":52,"tag":127,"props":277,"children":279},{"id":278},"phase-1-verify-site-exists",[280],{"type":65,"value":209},{"type":52,"tag":57,"props":282,"children":283},{},[284,289],{"type":52,"tag":61,"props":285,"children":286},{},[287],{"type":65,"value":288},"Goal:",{"type":65,"value":290}," Confirm a Power Pages code site exists and understand its structure.",{"type":52,"tag":292,"props":293,"children":295},"h3",{"id":294},"actions",[296],{"type":65,"value":297},"Actions",{"type":52,"tag":299,"props":300,"children":302},"h4",{"id":301},"_11-locate-project",[303],{"type":65,"value":304},"1.1 Locate Project",{"type":52,"tag":57,"props":306,"children":307},{},[308,310,316,318,324,326,331,332,338],{"type":65,"value":309},"Look for ",{"type":52,"tag":70,"props":311,"children":313},{"className":312},[],[314],{"type":65,"value":315},"powerpages.config.json",{"type":65,"value":317}," in the current directory or immediate subdirectories to find the project root. Use your file-search tool (e.g., ",{"type":52,"tag":70,"props":319,"children":321},{"className":320},[],[322],{"type":65,"value":323},"Glob",{"type":65,"value":325}," with patterns ",{"type":52,"tag":70,"props":327,"children":329},{"className":328},[],[330],{"type":65,"value":315},{"type":65,"value":154},{"type":52,"tag":70,"props":333,"children":335},{"className":334},[],[336],{"type":65,"value":337},"*\u002Fpowerpages.config.json",{"type":65,"value":339},") rather than a shell-specific command.",{"type":52,"tag":57,"props":341,"children":342},{},[343,348,350,355],{"type":52,"tag":61,"props":344,"children":345},{},[346],{"type":65,"value":347},"If not found",{"type":65,"value":349},": Tell the user to create a site first with ",{"type":52,"tag":70,"props":351,"children":353},{"className":352},[],[354],{"type":65,"value":123},{"type":65,"value":356},".",{"type":52,"tag":299,"props":358,"children":360},{"id":359},"_12-read-existing-config",[361],{"type":65,"value":362},"1.2 Read Existing Config",{"type":52,"tag":57,"props":364,"children":365},{},[366,368,373],{"type":65,"value":367},"Read ",{"type":52,"tag":70,"props":369,"children":371},{"className":370},[],[372],{"type":65,"value":315},{"type":65,"value":374}," to get the site name and config.",{"type":52,"tag":299,"props":376,"children":378},{"id":377},"_13-detect-framework-discover-routes",[379],{"type":65,"value":380},"1.3 Detect Framework & Discover Routes",{"type":52,"tag":57,"props":382,"children":383},{},[384,385,391,393,399],{"type":65,"value":367},{"type":52,"tag":70,"props":386,"children":388},{"className":387},[],[389],{"type":65,"value":390},"package.json",{"type":65,"value":392}," to determine the framework and locate key files. See ",{"type":52,"tag":70,"props":394,"children":396},{"className":395},[],[397],{"type":65,"value":398},"${PLUGIN_ROOT}\u002Freferences\u002Fframework-conventions.md",{"type":65,"value":400}," for the full framework → public directory → index HTML mapping and route discovery patterns.",{"type":52,"tag":57,"props":402,"children":403},{},[404,406,412,413,419,420,426,427,433],{"type":65,"value":405},"Build a list of all routes (e.g., ",{"type":52,"tag":70,"props":407,"children":409},{"className":408},[],[410],{"type":65,"value":411},"\u002F",{"type":65,"value":96},{"type":52,"tag":70,"props":414,"children":416},{"className":415},[],[417],{"type":65,"value":418},"\u002Fabout",{"type":65,"value":96},{"type":52,"tag":70,"props":421,"children":423},{"className":422},[],[424],{"type":65,"value":425},"\u002Fcontact",{"type":65,"value":96},{"type":52,"tag":70,"props":428,"children":430},{"className":429},[],[431],{"type":65,"value":432},"\u002Fblog",{"type":65,"value":434},").",{"type":52,"tag":292,"props":436,"children":438},{"id":437},"output",[439],{"type":65,"value":440},"Output",{"type":52,"tag":134,"props":442,"children":443},{},[444,449,454],{"type":52,"tag":138,"props":445,"children":446},{},[447],{"type":65,"value":448},"Project root path identified",{"type":52,"tag":138,"props":450,"children":451},{},[452],{"type":65,"value":453},"Framework detected (React, Vue, Angular, or Astro)",{"type":52,"tag":138,"props":455,"children":456},{},[457],{"type":65,"value":458},"Full list of discoverable routes",{"type":52,"tag":273,"props":460,"children":461},{},[],{"type":52,"tag":127,"props":463,"children":465},{"id":464},"phase-2-gather-seo-configuration",[466],{"type":65,"value":219},{"type":52,"tag":57,"props":468,"children":469},{},[470,474],{"type":52,"tag":61,"props":471,"children":472},{},[473],{"type":65,"value":288},{"type":65,"value":475}," Collect all SEO preferences from the user before making any changes.",{"type":52,"tag":292,"props":477,"children":479},{"id":478},"actions-1",[480],{"type":65,"value":297},{"type":52,"tag":57,"props":482,"children":483},{},[484,486,492],{"type":65,"value":485},"Use ",{"type":52,"tag":70,"props":487,"children":489},{"className":488},[],[490],{"type":65,"value":491},"AskUserQuestion",{"type":65,"value":493}," to collect SEO preferences:",{"type":52,"tag":299,"props":495,"children":497},{"id":496},"call-1",[498],{"type":65,"value":499},"Call 1",{"type":52,"tag":501,"props":502,"children":503},"table",{},[504,528],{"type":52,"tag":505,"props":506,"children":507},"thead",{},[508],{"type":52,"tag":509,"props":510,"children":511},"tr",{},[512,518,523],{"type":52,"tag":513,"props":514,"children":515},"th",{},[516],{"type":65,"value":517},"Question",{"type":52,"tag":513,"props":519,"children":520},{},[521],{"type":65,"value":522},"Header",{"type":52,"tag":513,"props":524,"children":525},{},[526],{"type":65,"value":527},"Options",{"type":52,"tag":529,"props":530,"children":531},"tbody",{},[532,565],{"type":52,"tag":509,"props":533,"children":534},{},[535,551,556],{"type":52,"tag":536,"props":537,"children":538},"td",{},[539,541,549],{"type":65,"value":540},"What is the production URL for your site? (e.g., ",{"type":52,"tag":542,"props":543,"children":547},"a",{"href":544,"rel":545},"https:\u002F\u002Fcontoso.powerappsportals.com",[546],"nofollow",[548],{"type":65,"value":544},{"type":65,"value":550},")",{"type":52,"tag":536,"props":552,"children":553},{},[554],{"type":65,"value":555},"Site URL",{"type":52,"tag":536,"props":557,"children":558},{},[559],{"type":52,"tag":560,"props":561,"children":562},"em",{},[563],{"type":65,"value":564},"(free text — use single generic option so user types via \"Other\")",{"type":52,"tag":509,"props":566,"children":567},{},[568,573,578],{"type":52,"tag":536,"props":569,"children":570},{},[571],{"type":65,"value":572},"Which pages should be excluded from search engine indexing?",{"type":52,"tag":536,"props":574,"children":575},{},[576],{"type":65,"value":577},"Exclusions",{"type":52,"tag":536,"props":579,"children":580},{},[581],{"type":65,"value":582},"None — index all pages (Recommended), Admin\u002Fauth pages only, Let me specify",{"type":52,"tag":299,"props":584,"children":586},{"id":585},"call-2",[587],{"type":65,"value":588},"Call 2",{"type":52,"tag":501,"props":590,"children":591},{},[592,610],{"type":52,"tag":505,"props":593,"children":594},{},[595],{"type":52,"tag":509,"props":596,"children":597},{},[598,602,606],{"type":52,"tag":513,"props":599,"children":600},{},[601],{"type":65,"value":517},{"type":52,"tag":513,"props":603,"children":604},{},[605],{"type":65,"value":522},{"type":52,"tag":513,"props":607,"children":608},{},[609],{"type":65,"value":527},{"type":52,"tag":529,"props":611,"children":612},{},[613,633],{"type":52,"tag":509,"props":614,"children":615},{},[616,621,626],{"type":52,"tag":536,"props":617,"children":618},{},[619],{"type":65,"value":620},"What meta description should appear in search results?",{"type":52,"tag":536,"props":622,"children":623},{},[624],{"type":65,"value":625},"Description",{"type":52,"tag":536,"props":627,"children":628},{},[629],{"type":52,"tag":560,"props":630,"children":631},{},[632],{"type":65,"value":564},{"type":52,"tag":509,"props":634,"children":635},{},[636,641,646],{"type":52,"tag":536,"props":637,"children":638},{},[639],{"type":65,"value":640},"Add Open Graph tags for social media sharing?",{"type":52,"tag":536,"props":642,"children":643},{},[644],{"type":65,"value":645},"OG Tags",{"type":52,"tag":536,"props":647,"children":648},{},[649],{"type":65,"value":650},"Yes — add Open Graph and Twitter Card tags (Recommended), No — skip social tags",{"type":52,"tag":292,"props":652,"children":654},{"id":653},"output-1",[655],{"type":65,"value":440},{"type":52,"tag":134,"props":657,"children":658},{},[659,664,669,674],{"type":52,"tag":138,"props":660,"children":661},{},[662],{"type":65,"value":663},"Production URL confirmed",{"type":52,"tag":138,"props":665,"children":666},{},[667],{"type":65,"value":668},"Exclusion list finalized",{"type":52,"tag":138,"props":670,"children":671},{},[672],{"type":65,"value":673},"Meta description text",{"type":52,"tag":138,"props":675,"children":676},{},[677],{"type":65,"value":678},"Open Graph tag preference (yes\u002Fno)",{"type":52,"tag":273,"props":680,"children":681},{},[],{"type":52,"tag":127,"props":683,"children":685},{"id":684},"phase-3-plan-approve",[686],{"type":65,"value":229},{"type":52,"tag":57,"props":688,"children":689},{},[690,694],{"type":52,"tag":61,"props":691,"children":692},{},[693],{"type":65,"value":288},{"type":65,"value":695}," Present the full SEO plan to the user and get explicit approval before making changes.",{"type":52,"tag":292,"props":697,"children":699},{"id":698},"actions-2",[700],{"type":65,"value":297},{"type":52,"tag":57,"props":702,"children":703},{},[704],{"type":65,"value":705},"Present the SEO additions that will be made as a clear, inline summary:",{"type":52,"tag":199,"props":707,"children":708},{},[709,719,729,739],{"type":52,"tag":138,"props":710,"children":711},{},[712,717],{"type":52,"tag":61,"props":713,"children":714},{},[715],{"type":65,"value":716},"robots.txt content",{"type":65,"value":718}," — which paths will be allowed\u002Fdisallowed",{"type":52,"tag":138,"props":720,"children":721},{},[722,727],{"type":52,"tag":61,"props":723,"children":724},{},[725],{"type":65,"value":726},"sitemap.xml content",{"type":65,"value":728}," — all discovered routes with the production URL and priority assignments",{"type":52,"tag":138,"props":730,"children":731},{},[732,737],{"type":52,"tag":61,"props":733,"children":734},{},[735],{"type":65,"value":736},"Meta tags to add to index.html",{"type":65,"value":738}," — title, description, viewport, charset, Open Graph, Twitter Card",{"type":52,"tag":138,"props":740,"children":741},{},[742,747],{"type":52,"tag":61,"props":743,"children":744},{},[745],{"type":65,"value":746},"Favicon",{"type":65,"value":748}," — link tag and placeholder SVG",{"type":52,"tag":53,"props":750,"children":751},{},[752,785],{"type":52,"tag":57,"props":753,"children":754},{},[755,757,762,764,769,771,776,777,783],{"type":65,"value":756},"🚦 ",{"type":52,"tag":61,"props":758,"children":759},{},[760],{"type":65,"value":761},"Gate (plan · add-seo:3.plan-approval):",{"type":65,"value":763}," Final sign-off on the SEO additions before any ",{"type":52,"tag":70,"props":765,"children":767},{"className":766},[],[768],{"type":65,"value":94},{"type":65,"value":770}," \u002F ",{"type":52,"tag":70,"props":772,"children":774},{"className":773},[],[775],{"type":65,"value":102},{"type":65,"value":770},{"type":52,"tag":70,"props":778,"children":780},{"className":779},[],[781],{"type":65,"value":782},"index.html",{"type":65,"value":784}," write.",{"type":52,"tag":57,"props":786,"children":787},{},[788,793,795,800,802,807],{"type":52,"tag":61,"props":789,"children":790},{},[791],{"type":65,"value":792},"Trigger:",{"type":65,"value":794}," Phase 3 has presented the full plan inline (robots.txt, sitemap.xml, meta tags, favicon).\n",{"type":52,"tag":61,"props":796,"children":797},{},[798],{"type":65,"value":799},"Why we ask:",{"type":65,"value":801}," SEO assets land on disk with the wrong production URL, wrong exclusions, or unwanted OG tags — fixable but noisy in git history.\n",{"type":52,"tag":61,"props":803,"children":804},{},[805],{"type":65,"value":806},"Cancel leaves:",{"type":65,"value":808}," Nothing — no file writes yet.",{"type":52,"tag":57,"props":810,"children":811},{},[812,814,819],{"type":65,"value":813},"After presenting the plan, use ",{"type":52,"tag":70,"props":815,"children":817},{"className":816},[],[818],{"type":65,"value":491},{"type":65,"value":820}," to get approval:",{"type":52,"tag":501,"props":822,"children":823},{},[824,842],{"type":52,"tag":505,"props":825,"children":826},{},[827],{"type":52,"tag":509,"props":828,"children":829},{},[830,834,838],{"type":52,"tag":513,"props":831,"children":832},{},[833],{"type":65,"value":517},{"type":52,"tag":513,"props":835,"children":836},{},[837],{"type":65,"value":522},{"type":52,"tag":513,"props":839,"children":840},{},[841],{"type":65,"value":527},{"type":52,"tag":529,"props":843,"children":844},{},[845],{"type":52,"tag":509,"props":846,"children":847},{},[848,853,858],{"type":52,"tag":536,"props":849,"children":850},{},[851],{"type":65,"value":852},"Here is the SEO plan. How would you like to proceed?",{"type":52,"tag":536,"props":854,"children":855},{},[856],{"type":65,"value":857},"SEO Plan Approval",{"type":52,"tag":536,"props":859,"children":860},{},[861],{"type":65,"value":862},"Approve and proceed (Recommended), I'd like to make changes",{"type":52,"tag":57,"props":864,"children":865},{},[866],{"type":65,"value":867},"If the user chooses \"I'd like to make changes\", ask what they want to change, update the plan accordingly, and present the revised plan for approval again.",{"type":52,"tag":292,"props":869,"children":871},{"id":870},"output-2",[872],{"type":65,"value":440},{"type":52,"tag":134,"props":874,"children":875},{},[876],{"type":52,"tag":138,"props":877,"children":878},{},[879],{"type":65,"value":880},"User-approved SEO plan ready for implementation",{"type":52,"tag":273,"props":882,"children":883},{},[],{"type":52,"tag":127,"props":885,"children":887},{"id":886},"phase-4-add-robotstxt",[888],{"type":65,"value":239},{"type":52,"tag":57,"props":890,"children":891},{},[892,896,898,903],{"type":52,"tag":61,"props":893,"children":894},{},[895],{"type":65,"value":288},{"type":65,"value":897}," Create a valid ",{"type":52,"tag":70,"props":899,"children":901},{"className":900},[],[902],{"type":65,"value":94},{"type":65,"value":904}," that tells search engines which pages to crawl.",{"type":52,"tag":292,"props":906,"children":908},{"id":907},"actions-3",[909],{"type":65,"value":297},{"type":52,"tag":57,"props":911,"children":912},{},[913,915,920,922,928],{"type":65,"value":914},"Create ",{"type":52,"tag":70,"props":916,"children":918},{"className":917},[],[919],{"type":65,"value":94},{"type":65,"value":921}," in the public directory (",{"type":52,"tag":70,"props":923,"children":925},{"className":924},[],[926],{"type":65,"value":927},"\u003CPROJECT_ROOT>\u002Fpublic\u002Frobots.txt",{"type":65,"value":929},"):",{"type":52,"tag":931,"props":932,"children":937},"pre",{"className":933,"code":935,"language":65,"meta":936},[934],"language-text","User-agent: *\nAllow: \u002F\n\nSitemap: \u003CPRODUCTION_URL>\u002Fsitemap.xml\n","",[938],{"type":52,"tag":70,"props":939,"children":940},{"__ignoreMap":936},[941],{"type":65,"value":935},{"type":52,"tag":57,"props":943,"children":944},{},[945,947,953],{"type":65,"value":946},"If the user specified pages to exclude, add ",{"type":52,"tag":70,"props":948,"children":950},{"className":949},[],[951],{"type":65,"value":952},"Disallow",{"type":65,"value":954}," directives:",{"type":52,"tag":931,"props":956,"children":959},{"className":957,"code":958,"language":65,"meta":936},[934],"User-agent: *\nAllow: \u002F\nDisallow: \u002Fadmin\u002F\nDisallow: \u002Fauth\u002F\n\nSitemap: \u003CPRODUCTION_URL>\u002Fsitemap.xml\n",[960],{"type":52,"tag":70,"props":961,"children":962},{"__ignoreMap":936},[963],{"type":65,"value":958},{"type":52,"tag":292,"props":965,"children":967},{"id":966},"output-3",[968],{"type":65,"value":440},{"type":52,"tag":134,"props":970,"children":971},{},[972],{"type":52,"tag":138,"props":973,"children":974},{},[975,981],{"type":52,"tag":70,"props":976,"children":978},{"className":977},[],[979],{"type":65,"value":980},"public\u002Frobots.txt",{"type":65,"value":982}," created with correct directives",{"type":52,"tag":273,"props":984,"children":985},{},[],{"type":52,"tag":127,"props":987,"children":989},{"id":988},"phase-5-add-sitemapxml",[990],{"type":65,"value":249},{"type":52,"tag":57,"props":992,"children":993},{},[994,998,1000,1005],{"type":52,"tag":61,"props":995,"children":996},{},[997],{"type":65,"value":288},{"type":65,"value":999}," Generate a complete ",{"type":52,"tag":70,"props":1001,"children":1003},{"className":1002},[],[1004],{"type":65,"value":102},{"type":65,"value":1006}," listing all discoverable routes with proper priorities.",{"type":52,"tag":292,"props":1008,"children":1010},{"id":1009},"actions-4",[1011],{"type":65,"value":297},{"type":52,"tag":57,"props":1013,"children":1014},{},[1015,1016,1021,1022,1028],{"type":65,"value":914},{"type":52,"tag":70,"props":1017,"children":1019},{"className":1018},[],[1020],{"type":65,"value":102},{"type":65,"value":921},{"type":52,"tag":70,"props":1023,"children":1025},{"className":1024},[],[1026],{"type":65,"value":1027},"\u003CPROJECT_ROOT>\u002Fpublic\u002Fsitemap.xml",{"type":65,"value":434},{"type":52,"tag":57,"props":1030,"children":1031},{},[1032],{"type":65,"value":1033},"Generate entries for each discovered route using the production URL:",{"type":52,"tag":931,"props":1035,"children":1039},{"className":1036,"code":1037,"language":1038,"meta":936,"style":936},"language-xml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003C?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\u003Curlset xmlns=\"http:\u002F\u002Fwww.sitemaps.org\u002Fschemas\u002Fsitemap\u002F0.9\">\n  \u003Curl>\n    \u003Cloc>\u003CPRODUCTION_URL>\u002F\u003C\u002Floc>\n    \u003Clastmod>\u003CTODAY_DATE>\u003C\u002Flastmod>\n    \u003Cchangefreq>weekly\u003C\u002Fchangefreq>\n    \u003Cpriority>1.0\u003C\u002Fpriority>\n  \u003C\u002Furl>\n  \u003Curl>\n    \u003Cloc>\u003CPRODUCTION_URL>\u002Fabout\u003C\u002Floc>\n    \u003Clastmod>\u003CTODAY_DATE>\u003C\u002Flastmod>\n    \u003Cchangefreq>monthly\u003C\u002Fchangefreq>\n    \u003Cpriority>0.8\u003C\u002Fpriority>\n  \u003C\u002Furl>\n  \u003C!-- Additional routes... -->\n\u003C\u002Furlset>\n","xml",[1040],{"type":52,"tag":70,"props":1041,"children":1042},{"__ignoreMap":936},[1043,1054,1063,1072,1081,1090,1099,1108,1117,1125,1134,1142,1151,1160,1168,1177],{"type":52,"tag":1044,"props":1045,"children":1048},"span",{"class":1046,"line":1047},"line",1,[1049],{"type":52,"tag":1044,"props":1050,"children":1051},{},[1052],{"type":65,"value":1053},"\u003C?xml version=\"1.0\" encoding=\"UTF-8\"?>\n",{"type":52,"tag":1044,"props":1055,"children":1057},{"class":1046,"line":1056},2,[1058],{"type":52,"tag":1044,"props":1059,"children":1060},{},[1061],{"type":65,"value":1062},"\u003Curlset xmlns=\"http:\u002F\u002Fwww.sitemaps.org\u002Fschemas\u002Fsitemap\u002F0.9\">\n",{"type":52,"tag":1044,"props":1064,"children":1066},{"class":1046,"line":1065},3,[1067],{"type":52,"tag":1044,"props":1068,"children":1069},{},[1070],{"type":65,"value":1071},"  \u003Curl>\n",{"type":52,"tag":1044,"props":1073,"children":1075},{"class":1046,"line":1074},4,[1076],{"type":52,"tag":1044,"props":1077,"children":1078},{},[1079],{"type":65,"value":1080},"    \u003Cloc>\u003CPRODUCTION_URL>\u002F\u003C\u002Floc>\n",{"type":52,"tag":1044,"props":1082,"children":1084},{"class":1046,"line":1083},5,[1085],{"type":52,"tag":1044,"props":1086,"children":1087},{},[1088],{"type":65,"value":1089},"    \u003Clastmod>\u003CTODAY_DATE>\u003C\u002Flastmod>\n",{"type":52,"tag":1044,"props":1091,"children":1093},{"class":1046,"line":1092},6,[1094],{"type":52,"tag":1044,"props":1095,"children":1096},{},[1097],{"type":65,"value":1098},"    \u003Cchangefreq>weekly\u003C\u002Fchangefreq>\n",{"type":52,"tag":1044,"props":1100,"children":1102},{"class":1046,"line":1101},7,[1103],{"type":52,"tag":1044,"props":1104,"children":1105},{},[1106],{"type":65,"value":1107},"    \u003Cpriority>1.0\u003C\u002Fpriority>\n",{"type":52,"tag":1044,"props":1109,"children":1111},{"class":1046,"line":1110},8,[1112],{"type":52,"tag":1044,"props":1113,"children":1114},{},[1115],{"type":65,"value":1116},"  \u003C\u002Furl>\n",{"type":52,"tag":1044,"props":1118,"children":1120},{"class":1046,"line":1119},9,[1121],{"type":52,"tag":1044,"props":1122,"children":1123},{},[1124],{"type":65,"value":1071},{"type":52,"tag":1044,"props":1126,"children":1128},{"class":1046,"line":1127},10,[1129],{"type":52,"tag":1044,"props":1130,"children":1131},{},[1132],{"type":65,"value":1133},"    \u003Cloc>\u003CPRODUCTION_URL>\u002Fabout\u003C\u002Floc>\n",{"type":52,"tag":1044,"props":1135,"children":1137},{"class":1046,"line":1136},11,[1138],{"type":52,"tag":1044,"props":1139,"children":1140},{},[1141],{"type":65,"value":1089},{"type":52,"tag":1044,"props":1143,"children":1145},{"class":1046,"line":1144},12,[1146],{"type":52,"tag":1044,"props":1147,"children":1148},{},[1149],{"type":65,"value":1150},"    \u003Cchangefreq>monthly\u003C\u002Fchangefreq>\n",{"type":52,"tag":1044,"props":1152,"children":1154},{"class":1046,"line":1153},13,[1155],{"type":52,"tag":1044,"props":1156,"children":1157},{},[1158],{"type":65,"value":1159},"    \u003Cpriority>0.8\u003C\u002Fpriority>\n",{"type":52,"tag":1044,"props":1161,"children":1163},{"class":1046,"line":1162},14,[1164],{"type":52,"tag":1044,"props":1165,"children":1166},{},[1167],{"type":65,"value":1116},{"type":52,"tag":1044,"props":1169,"children":1171},{"class":1046,"line":1170},15,[1172],{"type":52,"tag":1044,"props":1173,"children":1174},{},[1175],{"type":65,"value":1176},"  \u003C!-- Additional routes... -->\n",{"type":52,"tag":1044,"props":1178,"children":1180},{"class":1046,"line":1179},16,[1181],{"type":52,"tag":1044,"props":1182,"children":1183},{},[1184],{"type":65,"value":1185},"\u003C\u002Furlset>\n",{"type":52,"tag":57,"props":1187,"children":1188},{},[1189],{"type":52,"tag":61,"props":1190,"children":1191},{},[1192],{"type":65,"value":1193},"Priority rules:",{"type":52,"tag":134,"props":1195,"children":1196},{},[1197,1215,1226],{"type":52,"tag":138,"props":1198,"children":1199},{},[1200,1202,1207,1209],{"type":65,"value":1201},"Home page (",{"type":52,"tag":70,"props":1203,"children":1205},{"className":1204},[],[1206],{"type":65,"value":411},{"type":65,"value":1208},"): ",{"type":52,"tag":70,"props":1210,"children":1212},{"className":1211},[],[1213],{"type":65,"value":1214},"1.0",{"type":52,"tag":138,"props":1216,"children":1217},{},[1218,1220],{"type":65,"value":1219},"Top-level pages: ",{"type":52,"tag":70,"props":1221,"children":1223},{"className":1222},[],[1224],{"type":65,"value":1225},"0.8",{"type":52,"tag":138,"props":1227,"children":1228},{},[1229,1231],{"type":65,"value":1230},"Sub-pages: ",{"type":52,"tag":70,"props":1232,"children":1234},{"className":1233},[],[1235],{"type":65,"value":1236},"0.6",{"type":52,"tag":57,"props":1238,"children":1239},{},[1240,1245,1247,1253,1254,1260],{"type":52,"tag":61,"props":1241,"children":1242},{},[1243],{"type":65,"value":1244},"Exclusions:",{"type":65,"value":1246}," Do not include routes the user chose to exclude (e.g., ",{"type":52,"tag":70,"props":1248,"children":1250},{"className":1249},[],[1251],{"type":65,"value":1252},"\u002Fadmin\u002F*",{"type":65,"value":96},{"type":52,"tag":70,"props":1255,"children":1257},{"className":1256},[],[1258],{"type":65,"value":1259},"\u002Fauth\u002F*",{"type":65,"value":434},{"type":52,"tag":292,"props":1262,"children":1264},{"id":1263},"output-4",[1265],{"type":65,"value":440},{"type":52,"tag":134,"props":1267,"children":1268},{},[1269],{"type":52,"tag":138,"props":1270,"children":1271},{},[1272,1278],{"type":52,"tag":70,"props":1273,"children":1275},{"className":1274},[],[1276],{"type":65,"value":1277},"public\u002Fsitemap.xml",{"type":65,"value":1279}," created with all routes, correct URLs, and no placeholders",{"type":52,"tag":273,"props":1281,"children":1282},{},[],{"type":52,"tag":127,"props":1284,"children":1286},{"id":1285},"phase-6-add-meta-tags",[1287],{"type":65,"value":259},{"type":52,"tag":57,"props":1289,"children":1290},{},[1291,1295],{"type":52,"tag":61,"props":1292,"children":1293},{},[1294],{"type":65,"value":288},{"type":65,"value":1296}," Add comprehensive meta tags, Open Graph tags, and a favicon to the site's HTML.",{"type":52,"tag":292,"props":1298,"children":1300},{"id":1299},"actions-5",[1301],{"type":65,"value":297},{"type":52,"tag":299,"props":1303,"children":1305},{"id":1304},"_61-essential-meta-tags",[1306],{"type":65,"value":1307},"6.1 Essential Meta Tags",{"type":52,"tag":57,"props":1309,"children":1310},{},[1311,1313,1318],{"type":65,"value":1312},"Add or update meta tags in the site's ",{"type":52,"tag":70,"props":1314,"children":1316},{"className":1315},[],[1317],{"type":65,"value":782},{"type":65,"value":1319}," (location depends on framework — see Phase 1.3):",{"type":52,"tag":931,"props":1321,"children":1325},{"className":1322,"code":1323,"language":1324,"meta":936,"style":936},"language-html shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Chead>\n  \u003Cmeta charset=\"UTF-8\" \u002F>\n  \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \u002F>\n  \u003Ctitle>\u003CSITE_TITLE>\u003C\u002Ftitle>\n  \u003Cmeta name=\"description\" content=\"\u003CMETA_DESCRIPTION>\" \u002F>\n  \u003Cmeta name=\"robots\" content=\"index, follow\" \u002F>\n  \u003Clink rel=\"canonical\" href=\"\u003CPRODUCTION_URL>\u002F\" \u002F>\n  \u003Clink rel=\"sitemap\" type=\"application\u002Fxml\" href=\"\u002Fsitemap.xml\" \u002F>\n\u003C\u002Fhead>\n","html",[1326],{"type":52,"tag":70,"props":1327,"children":1328},{"__ignoreMap":936},[1329,1349,1393,1452,1487,1544,1601,1661,1740],{"type":52,"tag":1044,"props":1330,"children":1331},{"class":1046,"line":1047},[1332,1338,1344],{"type":52,"tag":1044,"props":1333,"children":1335},{"style":1334},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[1336],{"type":65,"value":1337},"\u003C",{"type":52,"tag":1044,"props":1339,"children":1341},{"style":1340},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[1342],{"type":65,"value":1343},"head",{"type":52,"tag":1044,"props":1345,"children":1346},{"style":1334},[1347],{"type":65,"value":1348},">\n",{"type":52,"tag":1044,"props":1350,"children":1351},{"class":1046,"line":1056},[1352,1357,1362,1368,1373,1378,1384,1388],{"type":52,"tag":1044,"props":1353,"children":1354},{"style":1334},[1355],{"type":65,"value":1356},"  \u003C",{"type":52,"tag":1044,"props":1358,"children":1359},{"style":1340},[1360],{"type":65,"value":1361},"meta",{"type":52,"tag":1044,"props":1363,"children":1365},{"style":1364},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[1366],{"type":65,"value":1367}," charset",{"type":52,"tag":1044,"props":1369,"children":1370},{"style":1334},[1371],{"type":65,"value":1372},"=",{"type":52,"tag":1044,"props":1374,"children":1375},{"style":1334},[1376],{"type":65,"value":1377},"\"",{"type":52,"tag":1044,"props":1379,"children":1381},{"style":1380},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[1382],{"type":65,"value":1383},"UTF-8",{"type":52,"tag":1044,"props":1385,"children":1386},{"style":1334},[1387],{"type":65,"value":1377},{"type":52,"tag":1044,"props":1389,"children":1390},{"style":1334},[1391],{"type":65,"value":1392}," \u002F>\n",{"type":52,"tag":1044,"props":1394,"children":1395},{"class":1046,"line":1065},[1396,1400,1404,1409,1413,1417,1422,1426,1431,1435,1439,1444,1448],{"type":52,"tag":1044,"props":1397,"children":1398},{"style":1334},[1399],{"type":65,"value":1356},{"type":52,"tag":1044,"props":1401,"children":1402},{"style":1340},[1403],{"type":65,"value":1361},{"type":52,"tag":1044,"props":1405,"children":1406},{"style":1364},[1407],{"type":65,"value":1408}," name",{"type":52,"tag":1044,"props":1410,"children":1411},{"style":1334},[1412],{"type":65,"value":1372},{"type":52,"tag":1044,"props":1414,"children":1415},{"style":1334},[1416],{"type":65,"value":1377},{"type":52,"tag":1044,"props":1418,"children":1419},{"style":1380},[1420],{"type":65,"value":1421},"viewport",{"type":52,"tag":1044,"props":1423,"children":1424},{"style":1334},[1425],{"type":65,"value":1377},{"type":52,"tag":1044,"props":1427,"children":1428},{"style":1364},[1429],{"type":65,"value":1430}," content",{"type":52,"tag":1044,"props":1432,"children":1433},{"style":1334},[1434],{"type":65,"value":1372},{"type":52,"tag":1044,"props":1436,"children":1437},{"style":1334},[1438],{"type":65,"value":1377},{"type":52,"tag":1044,"props":1440,"children":1441},{"style":1380},[1442],{"type":65,"value":1443},"width=device-width, initial-scale=1.0",{"type":52,"tag":1044,"props":1445,"children":1446},{"style":1334},[1447],{"type":65,"value":1377},{"type":52,"tag":1044,"props":1449,"children":1450},{"style":1334},[1451],{"type":65,"value":1392},{"type":52,"tag":1044,"props":1453,"children":1454},{"class":1046,"line":1074},[1455,1459,1464,1469,1474,1479,1483],{"type":52,"tag":1044,"props":1456,"children":1457},{"style":1334},[1458],{"type":65,"value":1356},{"type":52,"tag":1044,"props":1460,"children":1461},{"style":1340},[1462],{"type":65,"value":1463},"title",{"type":52,"tag":1044,"props":1465,"children":1466},{"style":1334},[1467],{"type":65,"value":1468},">\u003C",{"type":52,"tag":1044,"props":1470,"children":1471},{"style":1340},[1472],{"type":65,"value":1473},"SITE_TITLE",{"type":52,"tag":1044,"props":1475,"children":1476},{"style":1334},[1477],{"type":65,"value":1478},">\u003C\u002F",{"type":52,"tag":1044,"props":1480,"children":1481},{"style":1340},[1482],{"type":65,"value":1463},{"type":52,"tag":1044,"props":1484,"children":1485},{"style":1334},[1486],{"type":65,"value":1348},{"type":52,"tag":1044,"props":1488,"children":1489},{"class":1046,"line":1083},[1490,1494,1498,1502,1506,1510,1515,1519,1523,1527,1531,1536,1540],{"type":52,"tag":1044,"props":1491,"children":1492},{"style":1334},[1493],{"type":65,"value":1356},{"type":52,"tag":1044,"props":1495,"children":1496},{"style":1340},[1497],{"type":65,"value":1361},{"type":52,"tag":1044,"props":1499,"children":1500},{"style":1364},[1501],{"type":65,"value":1408},{"type":52,"tag":1044,"props":1503,"children":1504},{"style":1334},[1505],{"type":65,"value":1372},{"type":52,"tag":1044,"props":1507,"children":1508},{"style":1334},[1509],{"type":65,"value":1377},{"type":52,"tag":1044,"props":1511,"children":1512},{"style":1380},[1513],{"type":65,"value":1514},"description",{"type":52,"tag":1044,"props":1516,"children":1517},{"style":1334},[1518],{"type":65,"value":1377},{"type":52,"tag":1044,"props":1520,"children":1521},{"style":1364},[1522],{"type":65,"value":1430},{"type":52,"tag":1044,"props":1524,"children":1525},{"style":1334},[1526],{"type":65,"value":1372},{"type":52,"tag":1044,"props":1528,"children":1529},{"style":1334},[1530],{"type":65,"value":1377},{"type":52,"tag":1044,"props":1532,"children":1533},{"style":1380},[1534],{"type":65,"value":1535},"\u003CMETA_DESCRIPTION>",{"type":52,"tag":1044,"props":1537,"children":1538},{"style":1334},[1539],{"type":65,"value":1377},{"type":52,"tag":1044,"props":1541,"children":1542},{"style":1334},[1543],{"type":65,"value":1392},{"type":52,"tag":1044,"props":1545,"children":1546},{"class":1046,"line":1092},[1547,1551,1555,1559,1563,1567,1572,1576,1580,1584,1588,1593,1597],{"type":52,"tag":1044,"props":1548,"children":1549},{"style":1334},[1550],{"type":65,"value":1356},{"type":52,"tag":1044,"props":1552,"children":1553},{"style":1340},[1554],{"type":65,"value":1361},{"type":52,"tag":1044,"props":1556,"children":1557},{"style":1364},[1558],{"type":65,"value":1408},{"type":52,"tag":1044,"props":1560,"children":1561},{"style":1334},[1562],{"type":65,"value":1372},{"type":52,"tag":1044,"props":1564,"children":1565},{"style":1334},[1566],{"type":65,"value":1377},{"type":52,"tag":1044,"props":1568,"children":1569},{"style":1380},[1570],{"type":65,"value":1571},"robots",{"type":52,"tag":1044,"props":1573,"children":1574},{"style":1334},[1575],{"type":65,"value":1377},{"type":52,"tag":1044,"props":1577,"children":1578},{"style":1364},[1579],{"type":65,"value":1430},{"type":52,"tag":1044,"props":1581,"children":1582},{"style":1334},[1583],{"type":65,"value":1372},{"type":52,"tag":1044,"props":1585,"children":1586},{"style":1334},[1587],{"type":65,"value":1377},{"type":52,"tag":1044,"props":1589,"children":1590},{"style":1380},[1591],{"type":65,"value":1592},"index, follow",{"type":52,"tag":1044,"props":1594,"children":1595},{"style":1334},[1596],{"type":65,"value":1377},{"type":52,"tag":1044,"props":1598,"children":1599},{"style":1334},[1600],{"type":65,"value":1392},{"type":52,"tag":1044,"props":1602,"children":1603},{"class":1046,"line":1101},[1604,1608,1613,1618,1622,1626,1631,1635,1640,1644,1648,1653,1657],{"type":52,"tag":1044,"props":1605,"children":1606},{"style":1334},[1607],{"type":65,"value":1356},{"type":52,"tag":1044,"props":1609,"children":1610},{"style":1340},[1611],{"type":65,"value":1612},"link",{"type":52,"tag":1044,"props":1614,"children":1615},{"style":1364},[1616],{"type":65,"value":1617}," rel",{"type":52,"tag":1044,"props":1619,"children":1620},{"style":1334},[1621],{"type":65,"value":1372},{"type":52,"tag":1044,"props":1623,"children":1624},{"style":1334},[1625],{"type":65,"value":1377},{"type":52,"tag":1044,"props":1627,"children":1628},{"style":1380},[1629],{"type":65,"value":1630},"canonical",{"type":52,"tag":1044,"props":1632,"children":1633},{"style":1334},[1634],{"type":65,"value":1377},{"type":52,"tag":1044,"props":1636,"children":1637},{"style":1364},[1638],{"type":65,"value":1639}," href",{"type":52,"tag":1044,"props":1641,"children":1642},{"style":1334},[1643],{"type":65,"value":1372},{"type":52,"tag":1044,"props":1645,"children":1646},{"style":1334},[1647],{"type":65,"value":1377},{"type":52,"tag":1044,"props":1649,"children":1650},{"style":1380},[1651],{"type":65,"value":1652},"\u003CPRODUCTION_URL>\u002F",{"type":52,"tag":1044,"props":1654,"children":1655},{"style":1334},[1656],{"type":65,"value":1377},{"type":52,"tag":1044,"props":1658,"children":1659},{"style":1334},[1660],{"type":65,"value":1392},{"type":52,"tag":1044,"props":1662,"children":1663},{"class":1046,"line":1110},[1664,1668,1672,1676,1680,1684,1689,1693,1698,1702,1706,1711,1715,1719,1723,1727,1732,1736],{"type":52,"tag":1044,"props":1665,"children":1666},{"style":1334},[1667],{"type":65,"value":1356},{"type":52,"tag":1044,"props":1669,"children":1670},{"style":1340},[1671],{"type":65,"value":1612},{"type":52,"tag":1044,"props":1673,"children":1674},{"style":1364},[1675],{"type":65,"value":1617},{"type":52,"tag":1044,"props":1677,"children":1678},{"style":1334},[1679],{"type":65,"value":1372},{"type":52,"tag":1044,"props":1681,"children":1682},{"style":1334},[1683],{"type":65,"value":1377},{"type":52,"tag":1044,"props":1685,"children":1686},{"style":1380},[1687],{"type":65,"value":1688},"sitemap",{"type":52,"tag":1044,"props":1690,"children":1691},{"style":1334},[1692],{"type":65,"value":1377},{"type":52,"tag":1044,"props":1694,"children":1695},{"style":1364},[1696],{"type":65,"value":1697}," type",{"type":52,"tag":1044,"props":1699,"children":1700},{"style":1334},[1701],{"type":65,"value":1372},{"type":52,"tag":1044,"props":1703,"children":1704},{"style":1334},[1705],{"type":65,"value":1377},{"type":52,"tag":1044,"props":1707,"children":1708},{"style":1380},[1709],{"type":65,"value":1710},"application\u002Fxml",{"type":52,"tag":1044,"props":1712,"children":1713},{"style":1334},[1714],{"type":65,"value":1377},{"type":52,"tag":1044,"props":1716,"children":1717},{"style":1364},[1718],{"type":65,"value":1639},{"type":52,"tag":1044,"props":1720,"children":1721},{"style":1334},[1722],{"type":65,"value":1372},{"type":52,"tag":1044,"props":1724,"children":1725},{"style":1334},[1726],{"type":65,"value":1377},{"type":52,"tag":1044,"props":1728,"children":1729},{"style":1380},[1730],{"type":65,"value":1731},"\u002Fsitemap.xml",{"type":52,"tag":1044,"props":1733,"children":1734},{"style":1334},[1735],{"type":65,"value":1377},{"type":52,"tag":1044,"props":1737,"children":1738},{"style":1334},[1739],{"type":65,"value":1392},{"type":52,"tag":1044,"props":1741,"children":1742},{"class":1046,"line":1119},[1743,1748,1752],{"type":52,"tag":1044,"props":1744,"children":1745},{"style":1334},[1746],{"type":65,"value":1747},"\u003C\u002F",{"type":52,"tag":1044,"props":1749,"children":1750},{"style":1340},[1751],{"type":65,"value":1343},{"type":52,"tag":1044,"props":1753,"children":1754},{"style":1334},[1755],{"type":65,"value":1348},{"type":52,"tag":299,"props":1757,"children":1759},{"id":1758},"_62-open-graph-tags-if-user-opted-in",[1760],{"type":65,"value":1761},"6.2 Open Graph Tags (if user opted in)",{"type":52,"tag":57,"props":1763,"children":1764},{},[1765,1767,1773],{"type":65,"value":1766},"Add Open Graph and Twitter Card meta tags inside ",{"type":52,"tag":70,"props":1768,"children":1770},{"className":1769},[],[1771],{"type":65,"value":1772},"\u003Chead>",{"type":65,"value":1774},":",{"type":52,"tag":931,"props":1776,"children":1778},{"className":1322,"code":1777,"language":1324,"meta":936,"style":936},"\u003C!-- Open Graph -->\n\u003Cmeta property=\"og:type\" content=\"website\" \u002F>\n\u003Cmeta property=\"og:title\" content=\"\u003CSITE_TITLE>\" \u002F>\n\u003Cmeta property=\"og:description\" content=\"\u003CMETA_DESCRIPTION>\" \u002F>\n\u003Cmeta property=\"og:url\" content=\"\u003CPRODUCTION_URL>\u002F\" \u002F>\n\u003Cmeta property=\"og:site_name\" content=\"\u003CSITE_TITLE>\" \u002F>\n\n\u003C!-- Twitter Card -->\n\u003Cmeta name=\"twitter:card\" content=\"summary\" \u002F>\n\u003Cmeta name=\"twitter:title\" content=\"\u003CSITE_TITLE>\" \u002F>\n\u003Cmeta name=\"twitter:description\" content=\"\u003CMETA_DESCRIPTION>\" \u002F>\n",[1779],{"type":52,"tag":70,"props":1780,"children":1781},{"__ignoreMap":936},[1782,1791,1849,1906,1962,2018,2074,2082,2090,2147,2203],{"type":52,"tag":1044,"props":1783,"children":1784},{"class":1046,"line":1047},[1785],{"type":52,"tag":1044,"props":1786,"children":1788},{"style":1787},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[1789],{"type":65,"value":1790},"\u003C!-- Open Graph -->\n",{"type":52,"tag":1044,"props":1792,"children":1793},{"class":1046,"line":1056},[1794,1798,1802,1807,1811,1815,1820,1824,1828,1832,1836,1841,1845],{"type":52,"tag":1044,"props":1795,"children":1796},{"style":1334},[1797],{"type":65,"value":1337},{"type":52,"tag":1044,"props":1799,"children":1800},{"style":1340},[1801],{"type":65,"value":1361},{"type":52,"tag":1044,"props":1803,"children":1804},{"style":1364},[1805],{"type":65,"value":1806}," property",{"type":52,"tag":1044,"props":1808,"children":1809},{"style":1334},[1810],{"type":65,"value":1372},{"type":52,"tag":1044,"props":1812,"children":1813},{"style":1334},[1814],{"type":65,"value":1377},{"type":52,"tag":1044,"props":1816,"children":1817},{"style":1380},[1818],{"type":65,"value":1819},"og:type",{"type":52,"tag":1044,"props":1821,"children":1822},{"style":1334},[1823],{"type":65,"value":1377},{"type":52,"tag":1044,"props":1825,"children":1826},{"style":1364},[1827],{"type":65,"value":1430},{"type":52,"tag":1044,"props":1829,"children":1830},{"style":1334},[1831],{"type":65,"value":1372},{"type":52,"tag":1044,"props":1833,"children":1834},{"style":1334},[1835],{"type":65,"value":1377},{"type":52,"tag":1044,"props":1837,"children":1838},{"style":1380},[1839],{"type":65,"value":1840},"website",{"type":52,"tag":1044,"props":1842,"children":1843},{"style":1334},[1844],{"type":65,"value":1377},{"type":52,"tag":1044,"props":1846,"children":1847},{"style":1334},[1848],{"type":65,"value":1392},{"type":52,"tag":1044,"props":1850,"children":1851},{"class":1046,"line":1065},[1852,1856,1860,1864,1868,1872,1877,1881,1885,1889,1893,1898,1902],{"type":52,"tag":1044,"props":1853,"children":1854},{"style":1334},[1855],{"type":65,"value":1337},{"type":52,"tag":1044,"props":1857,"children":1858},{"style":1340},[1859],{"type":65,"value":1361},{"type":52,"tag":1044,"props":1861,"children":1862},{"style":1364},[1863],{"type":65,"value":1806},{"type":52,"tag":1044,"props":1865,"children":1866},{"style":1334},[1867],{"type":65,"value":1372},{"type":52,"tag":1044,"props":1869,"children":1870},{"style":1334},[1871],{"type":65,"value":1377},{"type":52,"tag":1044,"props":1873,"children":1874},{"style":1380},[1875],{"type":65,"value":1876},"og:title",{"type":52,"tag":1044,"props":1878,"children":1879},{"style":1334},[1880],{"type":65,"value":1377},{"type":52,"tag":1044,"props":1882,"children":1883},{"style":1364},[1884],{"type":65,"value":1430},{"type":52,"tag":1044,"props":1886,"children":1887},{"style":1334},[1888],{"type":65,"value":1372},{"type":52,"tag":1044,"props":1890,"children":1891},{"style":1334},[1892],{"type":65,"value":1377},{"type":52,"tag":1044,"props":1894,"children":1895},{"style":1380},[1896],{"type":65,"value":1897},"\u003CSITE_TITLE>",{"type":52,"tag":1044,"props":1899,"children":1900},{"style":1334},[1901],{"type":65,"value":1377},{"type":52,"tag":1044,"props":1903,"children":1904},{"style":1334},[1905],{"type":65,"value":1392},{"type":52,"tag":1044,"props":1907,"children":1908},{"class":1046,"line":1074},[1909,1913,1917,1921,1925,1929,1934,1938,1942,1946,1950,1954,1958],{"type":52,"tag":1044,"props":1910,"children":1911},{"style":1334},[1912],{"type":65,"value":1337},{"type":52,"tag":1044,"props":1914,"children":1915},{"style":1340},[1916],{"type":65,"value":1361},{"type":52,"tag":1044,"props":1918,"children":1919},{"style":1364},[1920],{"type":65,"value":1806},{"type":52,"tag":1044,"props":1922,"children":1923},{"style":1334},[1924],{"type":65,"value":1372},{"type":52,"tag":1044,"props":1926,"children":1927},{"style":1334},[1928],{"type":65,"value":1377},{"type":52,"tag":1044,"props":1930,"children":1931},{"style":1380},[1932],{"type":65,"value":1933},"og:description",{"type":52,"tag":1044,"props":1935,"children":1936},{"style":1334},[1937],{"type":65,"value":1377},{"type":52,"tag":1044,"props":1939,"children":1940},{"style":1364},[1941],{"type":65,"value":1430},{"type":52,"tag":1044,"props":1943,"children":1944},{"style":1334},[1945],{"type":65,"value":1372},{"type":52,"tag":1044,"props":1947,"children":1948},{"style":1334},[1949],{"type":65,"value":1377},{"type":52,"tag":1044,"props":1951,"children":1952},{"style":1380},[1953],{"type":65,"value":1535},{"type":52,"tag":1044,"props":1955,"children":1956},{"style":1334},[1957],{"type":65,"value":1377},{"type":52,"tag":1044,"props":1959,"children":1960},{"style":1334},[1961],{"type":65,"value":1392},{"type":52,"tag":1044,"props":1963,"children":1964},{"class":1046,"line":1083},[1965,1969,1973,1977,1981,1985,1990,1994,1998,2002,2006,2010,2014],{"type":52,"tag":1044,"props":1966,"children":1967},{"style":1334},[1968],{"type":65,"value":1337},{"type":52,"tag":1044,"props":1970,"children":1971},{"style":1340},[1972],{"type":65,"value":1361},{"type":52,"tag":1044,"props":1974,"children":1975},{"style":1364},[1976],{"type":65,"value":1806},{"type":52,"tag":1044,"props":1978,"children":1979},{"style":1334},[1980],{"type":65,"value":1372},{"type":52,"tag":1044,"props":1982,"children":1983},{"style":1334},[1984],{"type":65,"value":1377},{"type":52,"tag":1044,"props":1986,"children":1987},{"style":1380},[1988],{"type":65,"value":1989},"og:url",{"type":52,"tag":1044,"props":1991,"children":1992},{"style":1334},[1993],{"type":65,"value":1377},{"type":52,"tag":1044,"props":1995,"children":1996},{"style":1364},[1997],{"type":65,"value":1430},{"type":52,"tag":1044,"props":1999,"children":2000},{"style":1334},[2001],{"type":65,"value":1372},{"type":52,"tag":1044,"props":2003,"children":2004},{"style":1334},[2005],{"type":65,"value":1377},{"type":52,"tag":1044,"props":2007,"children":2008},{"style":1380},[2009],{"type":65,"value":1652},{"type":52,"tag":1044,"props":2011,"children":2012},{"style":1334},[2013],{"type":65,"value":1377},{"type":52,"tag":1044,"props":2015,"children":2016},{"style":1334},[2017],{"type":65,"value":1392},{"type":52,"tag":1044,"props":2019,"children":2020},{"class":1046,"line":1092},[2021,2025,2029,2033,2037,2041,2046,2050,2054,2058,2062,2066,2070],{"type":52,"tag":1044,"props":2022,"children":2023},{"style":1334},[2024],{"type":65,"value":1337},{"type":52,"tag":1044,"props":2026,"children":2027},{"style":1340},[2028],{"type":65,"value":1361},{"type":52,"tag":1044,"props":2030,"children":2031},{"style":1364},[2032],{"type":65,"value":1806},{"type":52,"tag":1044,"props":2034,"children":2035},{"style":1334},[2036],{"type":65,"value":1372},{"type":52,"tag":1044,"props":2038,"children":2039},{"style":1334},[2040],{"type":65,"value":1377},{"type":52,"tag":1044,"props":2042,"children":2043},{"style":1380},[2044],{"type":65,"value":2045},"og:site_name",{"type":52,"tag":1044,"props":2047,"children":2048},{"style":1334},[2049],{"type":65,"value":1377},{"type":52,"tag":1044,"props":2051,"children":2052},{"style":1364},[2053],{"type":65,"value":1430},{"type":52,"tag":1044,"props":2055,"children":2056},{"style":1334},[2057],{"type":65,"value":1372},{"type":52,"tag":1044,"props":2059,"children":2060},{"style":1334},[2061],{"type":65,"value":1377},{"type":52,"tag":1044,"props":2063,"children":2064},{"style":1380},[2065],{"type":65,"value":1897},{"type":52,"tag":1044,"props":2067,"children":2068},{"style":1334},[2069],{"type":65,"value":1377},{"type":52,"tag":1044,"props":2071,"children":2072},{"style":1334},[2073],{"type":65,"value":1392},{"type":52,"tag":1044,"props":2075,"children":2076},{"class":1046,"line":1101},[2077],{"type":52,"tag":1044,"props":2078,"children":2079},{"emptyLinePlaceholder":45},[2080],{"type":65,"value":2081},"\n",{"type":52,"tag":1044,"props":2083,"children":2084},{"class":1046,"line":1110},[2085],{"type":52,"tag":1044,"props":2086,"children":2087},{"style":1787},[2088],{"type":65,"value":2089},"\u003C!-- Twitter Card -->\n",{"type":52,"tag":1044,"props":2091,"children":2092},{"class":1046,"line":1119},[2093,2097,2101,2105,2109,2113,2118,2122,2126,2130,2134,2139,2143],{"type":52,"tag":1044,"props":2094,"children":2095},{"style":1334},[2096],{"type":65,"value":1337},{"type":52,"tag":1044,"props":2098,"children":2099},{"style":1340},[2100],{"type":65,"value":1361},{"type":52,"tag":1044,"props":2102,"children":2103},{"style":1364},[2104],{"type":65,"value":1408},{"type":52,"tag":1044,"props":2106,"children":2107},{"style":1334},[2108],{"type":65,"value":1372},{"type":52,"tag":1044,"props":2110,"children":2111},{"style":1334},[2112],{"type":65,"value":1377},{"type":52,"tag":1044,"props":2114,"children":2115},{"style":1380},[2116],{"type":65,"value":2117},"twitter:card",{"type":52,"tag":1044,"props":2119,"children":2120},{"style":1334},[2121],{"type":65,"value":1377},{"type":52,"tag":1044,"props":2123,"children":2124},{"style":1364},[2125],{"type":65,"value":1430},{"type":52,"tag":1044,"props":2127,"children":2128},{"style":1334},[2129],{"type":65,"value":1372},{"type":52,"tag":1044,"props":2131,"children":2132},{"style":1334},[2133],{"type":65,"value":1377},{"type":52,"tag":1044,"props":2135,"children":2136},{"style":1380},[2137],{"type":65,"value":2138},"summary",{"type":52,"tag":1044,"props":2140,"children":2141},{"style":1334},[2142],{"type":65,"value":1377},{"type":52,"tag":1044,"props":2144,"children":2145},{"style":1334},[2146],{"type":65,"value":1392},{"type":52,"tag":1044,"props":2148,"children":2149},{"class":1046,"line":1127},[2150,2154,2158,2162,2166,2170,2175,2179,2183,2187,2191,2195,2199],{"type":52,"tag":1044,"props":2151,"children":2152},{"style":1334},[2153],{"type":65,"value":1337},{"type":52,"tag":1044,"props":2155,"children":2156},{"style":1340},[2157],{"type":65,"value":1361},{"type":52,"tag":1044,"props":2159,"children":2160},{"style":1364},[2161],{"type":65,"value":1408},{"type":52,"tag":1044,"props":2163,"children":2164},{"style":1334},[2165],{"type":65,"value":1372},{"type":52,"tag":1044,"props":2167,"children":2168},{"style":1334},[2169],{"type":65,"value":1377},{"type":52,"tag":1044,"props":2171,"children":2172},{"style":1380},[2173],{"type":65,"value":2174},"twitter:title",{"type":52,"tag":1044,"props":2176,"children":2177},{"style":1334},[2178],{"type":65,"value":1377},{"type":52,"tag":1044,"props":2180,"children":2181},{"style":1364},[2182],{"type":65,"value":1430},{"type":52,"tag":1044,"props":2184,"children":2185},{"style":1334},[2186],{"type":65,"value":1372},{"type":52,"tag":1044,"props":2188,"children":2189},{"style":1334},[2190],{"type":65,"value":1377},{"type":52,"tag":1044,"props":2192,"children":2193},{"style":1380},[2194],{"type":65,"value":1897},{"type":52,"tag":1044,"props":2196,"children":2197},{"style":1334},[2198],{"type":65,"value":1377},{"type":52,"tag":1044,"props":2200,"children":2201},{"style":1334},[2202],{"type":65,"value":1392},{"type":52,"tag":1044,"props":2204,"children":2205},{"class":1046,"line":1136},[2206,2210,2214,2218,2222,2226,2231,2235,2239,2243,2247,2251,2255],{"type":52,"tag":1044,"props":2207,"children":2208},{"style":1334},[2209],{"type":65,"value":1337},{"type":52,"tag":1044,"props":2211,"children":2212},{"style":1340},[2213],{"type":65,"value":1361},{"type":52,"tag":1044,"props":2215,"children":2216},{"style":1364},[2217],{"type":65,"value":1408},{"type":52,"tag":1044,"props":2219,"children":2220},{"style":1334},[2221],{"type":65,"value":1372},{"type":52,"tag":1044,"props":2223,"children":2224},{"style":1334},[2225],{"type":65,"value":1377},{"type":52,"tag":1044,"props":2227,"children":2228},{"style":1380},[2229],{"type":65,"value":2230},"twitter:description",{"type":52,"tag":1044,"props":2232,"children":2233},{"style":1334},[2234],{"type":65,"value":1377},{"type":52,"tag":1044,"props":2236,"children":2237},{"style":1364},[2238],{"type":65,"value":1430},{"type":52,"tag":1044,"props":2240,"children":2241},{"style":1334},[2242],{"type":65,"value":1372},{"type":52,"tag":1044,"props":2244,"children":2245},{"style":1334},[2246],{"type":65,"value":1377},{"type":52,"tag":1044,"props":2248,"children":2249},{"style":1380},[2250],{"type":65,"value":1535},{"type":52,"tag":1044,"props":2252,"children":2253},{"style":1334},[2254],{"type":65,"value":1377},{"type":52,"tag":1044,"props":2256,"children":2257},{"style":1334},[2258],{"type":65,"value":1392},{"type":52,"tag":299,"props":2260,"children":2262},{"id":2261},"_63-favicon",[2263],{"type":65,"value":2264},"6.3 Favicon",{"type":52,"tag":57,"props":2266,"children":2267},{},[2268],{"type":65,"value":2269},"Check if a favicon already exists in the public directory. If not, add a simple SVG favicon link:",{"type":52,"tag":931,"props":2271,"children":2273},{"className":1322,"code":2272,"language":1324,"meta":936,"style":936},"\u003Clink rel=\"icon\" type=\"image\u002Fsvg+xml\" href=\"\u002Ffavicon.svg\" \u002F>\n",[2274],{"type":52,"tag":70,"props":2275,"children":2276},{"__ignoreMap":936},[2277],{"type":52,"tag":1044,"props":2278,"children":2279},{"class":1046,"line":1047},[2280,2284,2288,2292,2296,2300,2305,2309,2313,2317,2321,2326,2330,2334,2338,2342,2347,2351],{"type":52,"tag":1044,"props":2281,"children":2282},{"style":1334},[2283],{"type":65,"value":1337},{"type":52,"tag":1044,"props":2285,"children":2286},{"style":1340},[2287],{"type":65,"value":1612},{"type":52,"tag":1044,"props":2289,"children":2290},{"style":1364},[2291],{"type":65,"value":1617},{"type":52,"tag":1044,"props":2293,"children":2294},{"style":1334},[2295],{"type":65,"value":1372},{"type":52,"tag":1044,"props":2297,"children":2298},{"style":1334},[2299],{"type":65,"value":1377},{"type":52,"tag":1044,"props":2301,"children":2302},{"style":1380},[2303],{"type":65,"value":2304},"icon",{"type":52,"tag":1044,"props":2306,"children":2307},{"style":1334},[2308],{"type":65,"value":1377},{"type":52,"tag":1044,"props":2310,"children":2311},{"style":1364},[2312],{"type":65,"value":1697},{"type":52,"tag":1044,"props":2314,"children":2315},{"style":1334},[2316],{"type":65,"value":1372},{"type":52,"tag":1044,"props":2318,"children":2319},{"style":1334},[2320],{"type":65,"value":1377},{"type":52,"tag":1044,"props":2322,"children":2323},{"style":1380},[2324],{"type":65,"value":2325},"image\u002Fsvg+xml",{"type":52,"tag":1044,"props":2327,"children":2328},{"style":1334},[2329],{"type":65,"value":1377},{"type":52,"tag":1044,"props":2331,"children":2332},{"style":1364},[2333],{"type":65,"value":1639},{"type":52,"tag":1044,"props":2335,"children":2336},{"style":1334},[2337],{"type":65,"value":1372},{"type":52,"tag":1044,"props":2339,"children":2340},{"style":1334},[2341],{"type":65,"value":1377},{"type":52,"tag":1044,"props":2343,"children":2344},{"style":1380},[2345],{"type":65,"value":2346},"\u002Ffavicon.svg",{"type":52,"tag":1044,"props":2348,"children":2349},{"style":1334},[2350],{"type":65,"value":1377},{"type":52,"tag":1044,"props":2352,"children":2353},{"style":1334},[2354],{"type":65,"value":1392},{"type":52,"tag":57,"props":2356,"children":2357},{},[2358,2360,2366],{"type":65,"value":2359},"Create a minimal placeholder ",{"type":52,"tag":70,"props":2361,"children":2363},{"className":2362},[],[2364],{"type":65,"value":2365},"public\u002Ffavicon.svg",{"type":65,"value":2367}," using the site's primary color:",{"type":52,"tag":931,"props":2369,"children":2371},{"className":1036,"code":2370,"language":1038,"meta":936,"style":936},"\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" viewBox=\"0 0 100 100\">\n  \u003Crect width=\"100\" height=\"100\" rx=\"20\" fill=\"\u003CPRIMARY_COLOR>\"\u002F>\n  \u003Ctext x=\"50\" y=\"70\" font-size=\"50\" text-anchor=\"middle\" fill=\"white\" font-family=\"system-ui, sans-serif\" font-weight=\"bold\">\u003CFIRST_LETTER>\u003C\u002Ftext>\n\u003C\u002Fsvg>\n",[2372],{"type":52,"tag":70,"props":2373,"children":2374},{"__ignoreMap":936},[2375,2383,2391,2399],{"type":52,"tag":1044,"props":2376,"children":2377},{"class":1046,"line":1047},[2378],{"type":52,"tag":1044,"props":2379,"children":2380},{},[2381],{"type":65,"value":2382},"\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" viewBox=\"0 0 100 100\">\n",{"type":52,"tag":1044,"props":2384,"children":2385},{"class":1046,"line":1056},[2386],{"type":52,"tag":1044,"props":2387,"children":2388},{},[2389],{"type":65,"value":2390},"  \u003Crect width=\"100\" height=\"100\" rx=\"20\" fill=\"\u003CPRIMARY_COLOR>\"\u002F>\n",{"type":52,"tag":1044,"props":2392,"children":2393},{"class":1046,"line":1065},[2394],{"type":52,"tag":1044,"props":2395,"children":2396},{},[2397],{"type":65,"value":2398},"  \u003Ctext x=\"50\" y=\"70\" font-size=\"50\" text-anchor=\"middle\" fill=\"white\" font-family=\"system-ui, sans-serif\" font-weight=\"bold\">\u003CFIRST_LETTER>\u003C\u002Ftext>\n",{"type":52,"tag":1044,"props":2400,"children":2401},{"class":1046,"line":1074},[2402],{"type":52,"tag":1044,"props":2403,"children":2404},{},[2405],{"type":65,"value":2406},"\u003C\u002Fsvg>\n",{"type":52,"tag":57,"props":2408,"children":2409},{},[2410,2412,2418,2420,2426],{"type":65,"value":2411},"Where ",{"type":52,"tag":70,"props":2413,"children":2415},{"className":2414},[],[2416],{"type":65,"value":2417},"\u003CFIRST_LETTER>",{"type":65,"value":2419}," is the first letter of the site name and ",{"type":52,"tag":70,"props":2421,"children":2423},{"className":2422},[],[2424],{"type":65,"value":2425},"\u003CPRIMARY_COLOR>",{"type":65,"value":2427}," is the primary theme color from the site's configuration.",{"type":52,"tag":299,"props":2429,"children":2431},{"id":2430},"_64-astro-specific-handling",[2432],{"type":65,"value":2433},"6.4 Astro-Specific Handling",{"type":52,"tag":57,"props":2435,"children":2436},{},[2437,2439,2445,2447,2452,2454,2459],{"type":65,"value":2438},"For Astro sites, meta tags should be added to the base layout component (e.g., ",{"type":52,"tag":70,"props":2440,"children":2442},{"className":2441},[],[2443],{"type":65,"value":2444},"src\u002Flayouts\u002FLayout.astro",{"type":65,"value":2446},") rather than a root ",{"type":52,"tag":70,"props":2448,"children":2450},{"className":2449},[],[2451],{"type":65,"value":782},{"type":65,"value":2453},". Astro uses component-based ",{"type":52,"tag":70,"props":2455,"children":2457},{"className":2456},[],[2458],{"type":65,"value":1772},{"type":65,"value":2460}," management.",{"type":52,"tag":292,"props":2462,"children":2464},{"id":2463},"output-5",[2465],{"type":65,"value":440},{"type":52,"tag":134,"props":2467,"children":2468},{},[2469,2481,2486],{"type":52,"tag":138,"props":2470,"children":2471},{},[2472,2474,2479],{"type":65,"value":2473},"Meta tags added to ",{"type":52,"tag":70,"props":2475,"children":2477},{"className":2476},[],[2478],{"type":65,"value":782},{"type":65,"value":2480}," (or Astro layout equivalent)",{"type":52,"tag":138,"props":2482,"children":2483},{},[2484],{"type":65,"value":2485},"Open Graph and Twitter Card tags added (if opted in)",{"type":52,"tag":138,"props":2487,"children":2488},{},[2489],{"type":65,"value":2490},"Favicon SVG created and linked (if not already present)",{"type":52,"tag":273,"props":2492,"children":2493},{},[],{"type":52,"tag":127,"props":2495,"children":2497},{"id":2496},"phase-7-verify-commit",[2498],{"type":65,"value":269},{"type":52,"tag":57,"props":2500,"children":2501},{},[2502,2506],{"type":52,"tag":61,"props":2503,"children":2504},{},[2505],{"type":65,"value":288},{"type":65,"value":2507}," Confirm all SEO assets are in place, verify via Playwright, and commit changes.",{"type":52,"tag":292,"props":2509,"children":2511},{"id":2510},"actions-6",[2512],{"type":65,"value":297},{"type":52,"tag":299,"props":2514,"children":2516},{"id":2515},"_71-verify-files-exist",[2517],{"type":65,"value":2518},"7.1 Verify Files Exist",{"type":52,"tag":57,"props":2520,"children":2521},{},[2522],{"type":65,"value":2523},"Confirm the following files were created\u002Fupdated:",{"type":52,"tag":134,"props":2525,"children":2526},{},[2527,2535,2543,2553],{"type":52,"tag":138,"props":2528,"children":2529},{},[2530],{"type":52,"tag":70,"props":2531,"children":2533},{"className":2532},[],[2534],{"type":65,"value":980},{"type":52,"tag":138,"props":2536,"children":2537},{},[2538],{"type":52,"tag":70,"props":2539,"children":2541},{"className":2540},[],[2542],{"type":65,"value":1277},{"type":52,"tag":138,"props":2544,"children":2545},{},[2546,2551],{"type":52,"tag":70,"props":2547,"children":2549},{"className":2548},[],[2550],{"type":65,"value":2365},{"type":65,"value":2552}," (if created)",{"type":52,"tag":138,"props":2554,"children":2555},{},[2556,2561],{"type":52,"tag":70,"props":2557,"children":2559},{"className":2558},[],[2560],{"type":65,"value":782},{"type":65,"value":2562}," or equivalent (meta tags added)",{"type":52,"tag":299,"props":2564,"children":2566},{"id":2565},"_72-verify-via-playwright",[2567],{"type":65,"value":2568},"7.2 Verify via Playwright",{"type":52,"tag":57,"props":2570,"children":2571},{},[2572],{"type":65,"value":2573},"If a dev server is running (or start one):",{"type":52,"tag":199,"props":2575,"children":2576},{},[2577,2590,2603],{"type":52,"tag":138,"props":2578,"children":2579},{},[2580,2582,2588],{"type":65,"value":2581},"Navigate to the site root and use ",{"type":52,"tag":70,"props":2583,"children":2585},{"className":2584},[],[2586],{"type":65,"value":2587},"browser_snapshot",{"type":65,"value":2589}," to verify meta tags are present in the page source",{"type":52,"tag":138,"props":2591,"children":2592},{},[2593,2595,2601],{"type":65,"value":2594},"Navigate to ",{"type":52,"tag":70,"props":2596,"children":2598},{"className":2597},[],[2599],{"type":65,"value":2600},"\u002Frobots.txt",{"type":65,"value":2602}," and verify it loads",{"type":52,"tag":138,"props":2604,"children":2605},{},[2606,2607,2612],{"type":65,"value":2594},{"type":52,"tag":70,"props":2608,"children":2610},{"className":2609},[],[2611],{"type":65,"value":1731},{"type":65,"value":2602},{"type":52,"tag":299,"props":2614,"children":2616},{"id":2615},"_73-record-skill-usage",[2617],{"type":65,"value":2618},"7.3 Record Skill Usage",{"type":52,"tag":53,"props":2620,"children":2621},{},[2622],{"type":52,"tag":57,"props":2623,"children":2624},{},[2625,2627],{"type":65,"value":2626},"Reference: ",{"type":52,"tag":70,"props":2628,"children":2630},{"className":2629},[],[2631],{"type":65,"value":2632},"${PLUGIN_ROOT}\u002Freferences\u002Fskill-tracking-reference.md",{"type":52,"tag":57,"props":2634,"children":2635},{},[2636,2638,2644],{"type":65,"value":2637},"Follow the skill tracking instructions in the reference to record this skill's usage. Use ",{"type":52,"tag":70,"props":2639,"children":2641},{"className":2640},[],[2642],{"type":65,"value":2643},"--skillName \"AddSeo\"",{"type":65,"value":356},{"type":52,"tag":299,"props":2646,"children":2648},{"id":2647},"_74-git-commit",[2649],{"type":65,"value":2650},"7.4 Git Commit",{"type":52,"tag":53,"props":2652,"children":2653},{},[2654],{"type":52,"tag":57,"props":2655,"children":2656},{},[2657],{"type":52,"tag":61,"props":2658,"children":2659},{},[2660],{"type":65,"value":2661},"CRITICAL — This step is MANDATORY. You MUST commit the SEO changes before finishing. Do NOT skip this step.",{"type":52,"tag":57,"props":2663,"children":2664},{},[2665],{"type":65,"value":2666},"Stage the specific SEO files and commit:",{"type":52,"tag":931,"props":2668,"children":2672},{"className":2669,"code":2670,"language":2671,"meta":936,"style":936},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","git add public\u002Frobots.txt public\u002Fsitemap.xml public\u002Ffavicon.svg index.html\ngit commit -m \"Add SEO: robots.txt, sitemap.xml, meta tags, favicon\"\n","bash",[2673],{"type":52,"tag":70,"props":2674,"children":2675},{"__ignoreMap":936},[2676,2710],{"type":52,"tag":1044,"props":2677,"children":2678},{"class":1046,"line":1047},[2679,2685,2690,2695,2700,2705],{"type":52,"tag":1044,"props":2680,"children":2682},{"style":2681},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[2683],{"type":65,"value":2684},"git",{"type":52,"tag":1044,"props":2686,"children":2687},{"style":1380},[2688],{"type":65,"value":2689}," add",{"type":52,"tag":1044,"props":2691,"children":2692},{"style":1380},[2693],{"type":65,"value":2694}," public\u002Frobots.txt",{"type":52,"tag":1044,"props":2696,"children":2697},{"style":1380},[2698],{"type":65,"value":2699}," public\u002Fsitemap.xml",{"type":52,"tag":1044,"props":2701,"children":2702},{"style":1380},[2703],{"type":65,"value":2704}," public\u002Ffavicon.svg",{"type":52,"tag":1044,"props":2706,"children":2707},{"style":1380},[2708],{"type":65,"value":2709}," index.html\n",{"type":52,"tag":1044,"props":2711,"children":2712},{"class":1046,"line":1056},[2713,2717,2722,2727,2732,2737],{"type":52,"tag":1044,"props":2714,"children":2715},{"style":2681},[2716],{"type":65,"value":2684},{"type":52,"tag":1044,"props":2718,"children":2719},{"style":1380},[2720],{"type":65,"value":2721}," commit",{"type":52,"tag":1044,"props":2723,"children":2724},{"style":1380},[2725],{"type":65,"value":2726}," -m",{"type":52,"tag":1044,"props":2728,"children":2729},{"style":1334},[2730],{"type":65,"value":2731}," \"",{"type":52,"tag":1044,"props":2733,"children":2734},{"style":1380},[2735],{"type":65,"value":2736},"Add SEO: robots.txt, sitemap.xml, meta tags, favicon",{"type":52,"tag":1044,"props":2738,"children":2739},{"style":1334},[2740],{"type":65,"value":2741},"\"\n",{"type":52,"tag":57,"props":2743,"children":2744},{},[2745,2747,2752,2754,2759,2761,2767],{"type":65,"value":2746},"Adjust the file paths based on what was actually created (e.g., include ",{"type":52,"tag":70,"props":2748,"children":2750},{"className":2749},[],[2751],{"type":65,"value":2444},{"type":65,"value":2753}," instead of ",{"type":52,"tag":70,"props":2755,"children":2757},{"className":2756},[],[2758],{"type":65,"value":782},{"type":65,"value":2760}," for Astro sites, omit ",{"type":52,"tag":70,"props":2762,"children":2764},{"className":2763},[],[2765],{"type":65,"value":2766},"favicon.svg",{"type":65,"value":2768}," if it was not created). Only stage files that were created or modified by this skill.",{"type":52,"tag":299,"props":2770,"children":2772},{"id":2771},"_75-present-summary",[2773],{"type":65,"value":2774},"7.5 Present Summary",{"type":52,"tag":57,"props":2776,"children":2777},{},[2778],{"type":65,"value":2779},"Present a summary of what was added:",{"type":52,"tag":501,"props":2781,"children":2782},{},[2783,2804],{"type":52,"tag":505,"props":2784,"children":2785},{},[2786],{"type":52,"tag":509,"props":2787,"children":2788},{},[2789,2794,2799],{"type":52,"tag":513,"props":2790,"children":2791},{},[2792],{"type":65,"value":2793},"Asset",{"type":52,"tag":513,"props":2795,"children":2796},{},[2797],{"type":65,"value":2798},"Status",{"type":52,"tag":513,"props":2800,"children":2801},{},[2802],{"type":65,"value":2803},"Details",{"type":52,"tag":529,"props":2805,"children":2806},{},[2807,2828,2848,2866,2884],{"type":52,"tag":509,"props":2808,"children":2809},{},[2810,2818,2823],{"type":52,"tag":536,"props":2811,"children":2812},{},[2813],{"type":52,"tag":70,"props":2814,"children":2816},{"className":2815},[],[2817],{"type":65,"value":94},{"type":52,"tag":536,"props":2819,"children":2820},{},[2821],{"type":65,"value":2822},"Created",{"type":52,"tag":536,"props":2824,"children":2825},{},[2826],{"type":65,"value":2827},"Allows all crawlers, references sitemap",{"type":52,"tag":509,"props":2829,"children":2830},{},[2831,2839,2843],{"type":52,"tag":536,"props":2832,"children":2833},{},[2834],{"type":52,"tag":70,"props":2835,"children":2837},{"className":2836},[],[2838],{"type":65,"value":102},{"type":52,"tag":536,"props":2840,"children":2841},{},[2842],{"type":65,"value":2822},{"type":52,"tag":536,"props":2844,"children":2845},{},[2846],{"type":65,"value":2847},"X URLs mapped with priorities",{"type":52,"tag":509,"props":2849,"children":2850},{},[2851,2856,2861],{"type":52,"tag":536,"props":2852,"children":2853},{},[2854],{"type":65,"value":2855},"Meta tags",{"type":52,"tag":536,"props":2857,"children":2858},{},[2859],{"type":65,"value":2860},"Added",{"type":52,"tag":536,"props":2862,"children":2863},{},[2864],{"type":65,"value":2865},"title, description, viewport, canonical, robots",{"type":52,"tag":509,"props":2867,"children":2868},{},[2869,2874,2879],{"type":52,"tag":536,"props":2870,"children":2871},{},[2872],{"type":65,"value":2873},"Open Graph",{"type":52,"tag":536,"props":2875,"children":2876},{},[2877],{"type":65,"value":2878},"Added\u002FSkipped",{"type":52,"tag":536,"props":2880,"children":2881},{},[2882],{"type":65,"value":2883},"og:title, og:description, og:url, Twitter Card",{"type":52,"tag":509,"props":2885,"children":2886},{},[2887,2891,2896],{"type":52,"tag":536,"props":2888,"children":2889},{},[2890],{"type":65,"value":746},{"type":52,"tag":536,"props":2892,"children":2893},{},[2894],{"type":65,"value":2895},"Created\u002FSkipped",{"type":52,"tag":536,"props":2897,"children":2898},{},[2899],{"type":65,"value":2900},"SVG favicon with site initial",{"type":52,"tag":299,"props":2902,"children":2904},{"id":2903},"_76-suggest-next-steps",[2905],{"type":65,"value":2906},"7.6 Suggest Next Steps",{"type":52,"tag":57,"props":2908,"children":2909},{},[2910],{"type":65,"value":2911},"After the summary, suggest:",{"type":52,"tag":134,"props":2913,"children":2914},{},[2915,2931,2942],{"type":52,"tag":138,"props":2916,"children":2917},{},[2918,2923,2925],{"type":52,"tag":61,"props":2919,"children":2920},{},[2921],{"type":65,"value":2922},"Deploy the site",{"type":65,"value":2924}," to make SEO changes live: ",{"type":52,"tag":70,"props":2926,"children":2928},{"className":2927},[],[2929],{"type":65,"value":2930},"\u002Fdeploy-site",{"type":52,"tag":138,"props":2932,"children":2933},{},[2934,2936],{"type":65,"value":2935},"If data model is needed: ",{"type":52,"tag":70,"props":2937,"children":2939},{"className":2938},[],[2940],{"type":65,"value":2941},"\u002Fsetup-datamodel",{"type":52,"tag":138,"props":2943,"children":2944},{},[2945],{"type":65,"value":2946},"For more advanced SEO: consider structured data (JSON-LD), performance optimization, and accessibility audit",{"type":52,"tag":292,"props":2948,"children":2950},{"id":2949},"output-6",[2951],{"type":65,"value":440},{"type":52,"tag":134,"props":2953,"children":2954},{},[2955,2960,2965],{"type":52,"tag":138,"props":2956,"children":2957},{},[2958],{"type":65,"value":2959},"All files verified on disk",{"type":52,"tag":138,"props":2961,"children":2962},{},[2963],{"type":65,"value":2964},"Playwright verification passed",{"type":52,"tag":138,"props":2966,"children":2967},{},[2968],{"type":65,"value":2969},"Git commit created with all SEO changes",{"type":52,"tag":273,"props":2971,"children":2972},{},[],{"type":52,"tag":127,"props":2974,"children":2976},{"id":2975},"important-notes",[2977],{"type":65,"value":2978},"Important Notes",{"type":52,"tag":292,"props":2980,"children":2982},{"id":2981},"progress-tracking",[2983],{"type":65,"value":2984},"Progress Tracking",{"type":52,"tag":57,"props":2986,"children":2987},{},[2988,2989,2995],{"type":65,"value":485},{"type":52,"tag":70,"props":2990,"children":2992},{"className":2991},[],[2993],{"type":65,"value":2994},"TaskCreate",{"type":65,"value":2996}," at the start to track each phase:",{"type":52,"tag":501,"props":2998,"children":2999},{},[3000,3015],{"type":52,"tag":505,"props":3001,"children":3002},{},[3003],{"type":52,"tag":509,"props":3004,"children":3005},{},[3006,3011],{"type":52,"tag":513,"props":3007,"children":3008},{},[3009],{"type":65,"value":3010},"Task",{"type":52,"tag":513,"props":3012,"children":3013},{},[3014],{"type":65,"value":625},{"type":52,"tag":529,"props":3016,"children":3017},{},[3018,3031,3044,3057,3070,3083,3096],{"type":52,"tag":509,"props":3019,"children":3020},{},[3021,3026],{"type":52,"tag":536,"props":3022,"children":3023},{},[3024],{"type":65,"value":3025},"Phase 1",{"type":52,"tag":536,"props":3027,"children":3028},{},[3029],{"type":65,"value":3030},"Verify site exists and detect framework",{"type":52,"tag":509,"props":3032,"children":3033},{},[3034,3039],{"type":52,"tag":536,"props":3035,"children":3036},{},[3037],{"type":65,"value":3038},"Phase 2",{"type":52,"tag":536,"props":3040,"children":3041},{},[3042],{"type":65,"value":3043},"Gather SEO configuration from user",{"type":52,"tag":509,"props":3045,"children":3046},{},[3047,3052],{"type":52,"tag":536,"props":3048,"children":3049},{},[3050],{"type":65,"value":3051},"Phase 3",{"type":52,"tag":536,"props":3053,"children":3054},{},[3055],{"type":65,"value":3056},"Present plan and get user approval",{"type":52,"tag":509,"props":3058,"children":3059},{},[3060,3065],{"type":52,"tag":536,"props":3061,"children":3062},{},[3063],{"type":65,"value":3064},"Phase 4",{"type":52,"tag":536,"props":3066,"children":3067},{},[3068],{"type":65,"value":3069},"Create robots.txt",{"type":52,"tag":509,"props":3071,"children":3072},{},[3073,3078],{"type":52,"tag":536,"props":3074,"children":3075},{},[3076],{"type":65,"value":3077},"Phase 5",{"type":52,"tag":536,"props":3079,"children":3080},{},[3081],{"type":65,"value":3082},"Generate sitemap.xml",{"type":52,"tag":509,"props":3084,"children":3085},{},[3086,3091],{"type":52,"tag":536,"props":3087,"children":3088},{},[3089],{"type":65,"value":3090},"Phase 6",{"type":52,"tag":536,"props":3092,"children":3093},{},[3094],{"type":65,"value":3095},"Add meta tags, Open Graph, and favicon",{"type":52,"tag":509,"props":3097,"children":3098},{},[3099,3104],{"type":52,"tag":536,"props":3100,"children":3101},{},[3102],{"type":65,"value":3103},"Phase 7",{"type":52,"tag":536,"props":3105,"children":3106},{},[3107],{"type":65,"value":3108},"Verify via Playwright and commit",{"type":52,"tag":57,"props":3110,"children":3111},{},[3112,3114,3120],{"type":65,"value":3113},"Update each task with ",{"type":52,"tag":70,"props":3115,"children":3117},{"className":3116},[],[3118],{"type":65,"value":3119},"TaskUpdate",{"type":65,"value":3121}," as it is completed.",{"type":52,"tag":292,"props":3123,"children":3125},{"id":3124},"key-decision-points",[3126],{"type":65,"value":3127},"Key Decision Points",{"type":52,"tag":134,"props":3129,"children":3130},{},[3131,3154,3164,3174,3190],{"type":52,"tag":138,"props":3132,"children":3133},{},[3134,3139,3141,3146,3148,3153],{"type":52,"tag":61,"props":3135,"children":3136},{},[3137],{"type":65,"value":3138},"Phase 1:",{"type":65,"value":3140}," If ",{"type":52,"tag":70,"props":3142,"children":3144},{"className":3143},[],[3145],{"type":65,"value":315},{"type":65,"value":3147}," is not found, stop and redirect the user to ",{"type":52,"tag":70,"props":3149,"children":3151},{"className":3150},[],[3152],{"type":65,"value":123},{"type":65,"value":356},{"type":52,"tag":138,"props":3155,"children":3156},{},[3157,3162],{"type":52,"tag":61,"props":3158,"children":3159},{},[3160],{"type":65,"value":3161},"Phase 2:",{"type":65,"value":3163}," If the user specifies custom exclusions, confirm the exact paths before proceeding.",{"type":52,"tag":138,"props":3165,"children":3166},{},[3167,3172],{"type":52,"tag":61,"props":3168,"children":3169},{},[3170],{"type":65,"value":3171},"Phase 3:",{"type":65,"value":3173}," Do not proceed to implementation until the user explicitly approves the plan.",{"type":52,"tag":138,"props":3175,"children":3176},{},[3177,3182,3184,3189],{"type":52,"tag":61,"props":3178,"children":3179},{},[3180],{"type":65,"value":3181},"Phase 6.4:",{"type":65,"value":3183}," If the framework is Astro, meta tags go into the layout component, not ",{"type":52,"tag":70,"props":3185,"children":3187},{"className":3186},[],[3188],{"type":65,"value":782},{"type":65,"value":356},{"type":52,"tag":138,"props":3191,"children":3192},{},[3193,3198],{"type":52,"tag":61,"props":3194,"children":3195},{},[3196],{"type":65,"value":3197},"Phase 7.2:",{"type":65,"value":3199}," If Playwright verification fails (e.g., robots.txt does not load), diagnose and fix before committing.",{"type":52,"tag":57,"props":3201,"children":3202},{},[3203],{"type":52,"tag":61,"props":3204,"children":3205},{},[3206],{"type":65,"value":3207},"Begin with Phase 1: Verify Site Exists",{"type":52,"tag":3209,"props":3210,"children":3211},"style",{},[3212],{"type":65,"value":3213},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":3215,"total":3312},[3216,3228,3242,3252,3267,3280,3296],{"slug":3217,"name":3217,"fn":3218,"description":3219,"org":3220,"tags":3221,"stars":26,"repoUrl":27,"updatedAt":3227},"activate-site","provision and activate Power Pages sites","Activates and provisions a Power Pages website in a Power Platform environment via the Power Platform REST API. Use when the user wants to activate, provision, turn on, or enable a Power Pages website or portal.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3222,3225,3226],{"name":3223,"slug":3224,"type":15},"Deployment","deployment",{"name":9,"slug":8,"type":15},{"name":20,"slug":21,"type":15},"2026-04-06T18:34:34.732549",{"slug":3229,"name":3229,"fn":3230,"description":3231,"org":3232,"tags":3233,"stars":26,"repoUrl":27,"updatedAt":3241},"add-connector","add Power Platform connectors to apps","Adds any Power Platform connector to a Power Apps code app. Generic fallback for connectors not covered by a specific skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3234,3237,3239],{"name":3235,"slug":3236,"type":15},"Integrations","integrations",{"name":3238,"slug":36,"type":15},"Power Apps",{"name":3240,"slug":37,"type":15},"Power Platform","2026-07-31T05:54:47.042251",{"slug":3243,"name":3243,"fn":3244,"description":3245,"org":3246,"tags":3247,"stars":26,"repoUrl":27,"updatedAt":3251},"add-datasource","add data sources to Power Apps","Adds a data source or connector to a Power Apps code app. Asks what the user wants to accomplish and routes to the appropriate specialized skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3248,3249,3250],{"name":3235,"slug":3236,"type":15},{"name":9,"slug":8,"type":15},{"name":3238,"slug":36,"type":15},"2026-07-03T16:31:47.822186",{"slug":3253,"name":3253,"fn":3254,"description":3255,"org":3256,"tags":3257,"stars":26,"repoUrl":27,"updatedAt":3266},"add-dataverse","add Dataverse tables to Power Apps","Use when the user wants to add Dataverse tables (existing or new) to a Power Apps mobile app, extend an existing Dataverse table with new columns, or apply an approved data model plan.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3258,3261,3264,3265],{"name":3259,"slug":3260,"type":15},"Data Modeling","data-modeling",{"name":3262,"slug":3263,"type":15},"Dataverse","dataverse",{"name":9,"slug":8,"type":15},{"name":3238,"slug":36,"type":15},"2026-07-31T05:54:46.078014",{"slug":3268,"name":3268,"fn":3269,"description":3270,"org":3271,"tags":3272,"stars":26,"repoUrl":27,"updatedAt":3279},"add-excel","integrate Excel Online into Power Apps","Adds Excel Online (Business) connector to a Power Apps code app. Use when reading or writing Excel workbook data from OneDrive or SharePoint.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3273,3276,3277,3278],{"name":3274,"slug":3275,"type":15},"Excel","excel",{"name":3235,"slug":3236,"type":15},{"name":9,"slug":8,"type":15},{"name":3238,"slug":36,"type":15},"2026-07-31T05:54:44.030943",{"slug":3281,"name":3281,"fn":3282,"description":3283,"org":3284,"tags":3285,"stars":26,"repoUrl":27,"updatedAt":3295},"add-mcscopilot","add Copilot Studio connectors to Power Apps","Adds Microsoft Copilot Studio connector to a Power Apps code app. Use when invoking Copilot Studio agents, sending prompts to agents, or integrating agent responses.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3286,3289,3292,3293,3294],{"name":3287,"slug":3288,"type":15},"Agents","agents",{"name":3290,"slug":3291,"type":15},"Copilot Studio","copilot-studio",{"name":3235,"slug":3236,"type":15},{"name":9,"slug":8,"type":15},{"name":3238,"slug":36,"type":15},"2026-07-31T05:54:39.025597",{"slug":3297,"name":3297,"fn":3298,"description":3299,"org":3300,"tags":3301,"stars":26,"repoUrl":27,"updatedAt":3311},"add-sample-data","populate Power Pages tables with sample data","Populates Dataverse tables with sample records for testing and demoing a Power Pages site. Use when the user wants to add sample data, seed data, generate test records, or insert demo data into their tables.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3302,3305,3306,3307,3308],{"name":3303,"slug":3304,"type":15},"Database","database",{"name":3262,"slug":3263,"type":15},{"name":9,"slug":8,"type":15},{"name":20,"slug":21,"type":15},{"name":3309,"slug":3310,"type":15},"Testing","testing","2026-04-06T18:34:41.141155",26,{"items":3314,"total":3505},[3315,3337,3356,3377,3392,3409,3420,3433,3448,3463,3480,3493],{"slug":3316,"name":3316,"fn":3317,"description":3318,"org":3319,"tags":3320,"stars":3334,"repoUrl":3335,"updatedAt":3336},"rushstack-best-practices","manage Rush monorepos with best practices","Provides best practices and guidance for working with Rush monorepos. Use when the user is working in a Rush-based repository, asks about Rush commands (install, update, build, rebuild), needs help with project selection, dependency management, build caching, subspace configuration, or troubleshooting Rush-specific issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3321,3324,3327,3328,3331],{"name":3322,"slug":3323,"type":15},"Engineering","engineering",{"name":3325,"slug":3326,"type":15},"Local Development","local-development",{"name":9,"slug":8,"type":15},{"name":3329,"slug":3330,"type":15},"Project Management","project-management",{"name":3332,"slug":3333,"type":15},"Rush","rush",6484,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Frushstack","2026-04-06T18:34:44.965032",{"slug":3338,"name":3338,"fn":3339,"description":3340,"org":3341,"tags":3342,"stars":3353,"repoUrl":3354,"updatedAt":3355},"azure-ai-agents-persistent-dotnet","build AI agents with Azure .NET SDK","Azure AI Agents Persistent SDK for .NET. Low-level SDK for creating and managing AI agents with threads, messages, runs, and tools. Use for agent CRUD, conversation threads, streaming responses, function calling, file search, and code interpreter. Triggers: \"PersistentAgentsClient\", \"persistent agents\", \"agent threads\", \"agent runs\", \"streaming agents\", \"function calling agents .NET\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3343,3346,3347,3350],{"name":3344,"slug":3345,"type":15},".NET","net",{"name":3287,"slug":3288,"type":15},{"name":3348,"slug":3349,"type":15},"Azure","azure",{"name":3351,"slug":3352,"type":15},"LLM","llm",2804,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills","2026-07-03T16:32:10.297433",{"slug":3357,"name":3357,"fn":3358,"description":3359,"org":3360,"tags":3361,"stars":3353,"repoUrl":3354,"updatedAt":3376},"azure-ai-anomalydetector-java","build anomaly detection applications with Java","Build anomaly detection applications with Azure AI Anomaly Detector SDK for Java. Use when implementing univariate\u002Fmultivariate anomaly detection, time-series analysis, or AI-powered monitoring.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3362,3365,3366,3369,3372,3373],{"name":3363,"slug":3364,"type":15},"Analytics","analytics",{"name":3348,"slug":3349,"type":15},{"name":3367,"slug":3368,"type":15},"Data Analysis","data-analysis",{"name":3370,"slug":3371,"type":15},"Java","java",{"name":9,"slug":8,"type":15},{"name":3374,"slug":3375,"type":15},"Monitoring","monitoring","2026-05-13T06:14:16.261754",{"slug":3378,"name":3378,"fn":3379,"description":3380,"org":3381,"tags":3382,"stars":3353,"repoUrl":3354,"updatedAt":3391},"azure-ai-contentsafety-java","build content moderation applications with Azure AI","Build content moderation applications with Azure AI Content Safety SDK for Java. Use when implementing text\u002Fimage analysis, blocklist management, or harm detection for hate, violence, sexual content, and self-harm.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3383,3386,3387,3388],{"name":3384,"slug":3385,"type":15},"AI Infrastructure","ai-infrastructure",{"name":3348,"slug":3349,"type":15},{"name":3370,"slug":3371,"type":15},{"name":3389,"slug":3390,"type":15},"Security","security","2026-07-07T06:53:31.293235",{"slug":3393,"name":3393,"fn":3394,"description":3395,"org":3396,"tags":3397,"stars":3353,"repoUrl":3354,"updatedAt":3408},"azure-ai-contentsafety-py","detect harmful content with Azure AI Content Safety","Azure AI Content Safety SDK for Python. Use for detecting harmful content in text and images with multi-severity classification.\nTriggers: \"azure-ai-contentsafety\", \"ContentSafetyClient\", \"content moderation\", \"harmful content\", \"text analysis\", \"image analysis\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3398,3399,3402,3403,3404,3407],{"name":3348,"slug":3349,"type":15},{"name":3400,"slug":3401,"type":15},"Compliance","compliance",{"name":3351,"slug":3352,"type":15},{"name":9,"slug":8,"type":15},{"name":3405,"slug":3406,"type":15},"Python","python",{"name":3389,"slug":3390,"type":15},"2026-07-18T05:14:23.017504",{"slug":3410,"name":3410,"fn":3411,"description":3412,"org":3413,"tags":3414,"stars":3353,"repoUrl":3354,"updatedAt":3419},"azure-ai-language-conversations-py","implement conversational language understanding with Python","Implement Conversational Language Understanding (CLU) using the azure-ai-language-conversations Python SDK. Use when working with ConversationAnalysisClient to analyze conversation intent and entities, building NLP features, or integrating language understanding into applications.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3415,3416,3417,3418],{"name":3363,"slug":3364,"type":15},{"name":3348,"slug":3349,"type":15},{"name":3351,"slug":3352,"type":15},{"name":3405,"slug":3406,"type":15},"2026-07-31T05:54:29.068751",{"slug":3421,"name":3421,"fn":3422,"description":3423,"org":3424,"tags":3425,"stars":3353,"repoUrl":3354,"updatedAt":3432},"azure-ai-translation-text-py","translate text using Azure AI services","Azure AI Text Translation SDK for real-time text translation, transliteration, language detection, and dictionary lookup. Use for translating text content in applications.\nTriggers: \"text translation\", \"translator\", \"translate text\", \"transliterate\", \"TextTranslationClient\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3426,3429,3430,3431],{"name":3427,"slug":3428,"type":15},"API Development","api-development",{"name":3348,"slug":3349,"type":15},{"name":9,"slug":8,"type":15},{"name":3405,"slug":3406,"type":15},"2026-07-18T05:14:16.988376",{"slug":3434,"name":3434,"fn":3435,"description":3436,"org":3437,"tags":3438,"stars":3353,"repoUrl":3354,"updatedAt":3447},"azure-ai-vision-imageanalysis-py","analyze images with Azure AI Vision","Azure AI Vision Image Analysis SDK for captions, tags, objects, OCR, people detection, and smart cropping. Use for computer vision and image understanding tasks.\nTriggers: \"image analysis\", \"computer vision\", \"OCR\", \"object detection\", \"ImageAnalysisClient\", \"image caption\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3439,3440,3443,3446],{"name":3348,"slug":3349,"type":15},{"name":3441,"slug":3442,"type":15},"Computer Vision","computer-vision",{"name":3444,"slug":3445,"type":15},"Images","images",{"name":3405,"slug":3406,"type":15},"2026-07-18T05:14:18.007737",{"slug":3449,"name":3449,"fn":3450,"description":3451,"org":3452,"tags":3453,"stars":3353,"repoUrl":3354,"updatedAt":3462},"azure-appconfiguration-java","manage configuration with Azure App Configuration","Azure App Configuration SDK for Java. Centralized application configuration management with key-value settings, feature flags, and snapshots.\nTriggers: \"ConfigurationClient java\", \"app configuration java\", \"feature flag java\", \"configuration setting java\", \"azure config java\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3454,3455,3458,3461],{"name":3348,"slug":3349,"type":15},{"name":3456,"slug":3457,"type":15},"Configuration","configuration",{"name":3459,"slug":3460,"type":15},"Feature Flags","feature-flags",{"name":3370,"slug":3371,"type":15},"2026-07-03T16:32:01.278468",{"slug":3464,"name":3464,"fn":3465,"description":3466,"org":3467,"tags":3468,"stars":3353,"repoUrl":3354,"updatedAt":3479},"azure-cosmos-rust","build applications with Azure Cosmos DB","Azure Cosmos DB library for Rust (NoSQL API). Document CRUD, containers, and globally distributed data.\nTriggers: \"cosmos db rust\", \"CosmosClient rust\", \"document crud rust\", \"NoSQL rust\", \"partition key rust\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3469,3472,3473,3476],{"name":3470,"slug":3471,"type":15},"Cosmos DB","cosmos-db",{"name":3303,"slug":3304,"type":15},{"name":3474,"slug":3475,"type":15},"NoSQL","nosql",{"name":3477,"slug":3478,"type":15},"Rust","rust","2026-07-31T05:54:27.021432",{"slug":3481,"name":3481,"fn":3465,"description":3482,"org":3483,"tags":3484,"stars":3353,"repoUrl":3354,"updatedAt":3492},"azure-cosmos-ts","Azure Cosmos DB JavaScript\u002FTypeScript SDK (@azure\u002Fcosmos) for data plane operations. Use for CRUD operations on documents, queries, bulk operations, and container management. Triggers: \"Cosmos DB\", \"@azure\u002Fcosmos\", \"CosmosClient\", \"document CRUD\", \"NoSQL queries\", \"bulk operations\", \"partition key\", \"container.items\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3485,3486,3487,3488,3489],{"name":3470,"slug":3471,"type":15},{"name":3303,"slug":3304,"type":15},{"name":9,"slug":8,"type":15},{"name":3474,"slug":3475,"type":15},{"name":3490,"slug":3491,"type":15},"TypeScript","typescript","2026-07-03T16:31:19.368382",{"slug":3494,"name":3494,"fn":3495,"description":3496,"org":3497,"tags":3498,"stars":3353,"repoUrl":3354,"updatedAt":3504},"azure-data-tables-java","build table storage applications with Java","Build table storage applications with Azure Tables SDK for Java. Use when working with Azure Table Storage or Cosmos DB Table API for NoSQL key-value data, schemaless storage, or structured data at scale.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3499,3500,3501,3502,3503],{"name":3348,"slug":3349,"type":15},{"name":3470,"slug":3471,"type":15},{"name":3303,"slug":3304,"type":15},{"name":3370,"slug":3371,"type":15},{"name":3474,"slug":3475,"type":15},"2026-05-13T06:14:17.582229",267]