Skip to content

fix(skills): correct factual errors in caching, ai-gateway, deploy, forms, cli, functions, and frameworks skills#81

Merged
seancdavis merged 2 commits into
mainfrom
seandavis/ax-103-fix-factual-errors-in-netlify-skills-surfaced-by-the-axis
Jul 7, 2026
Merged

fix(skills): correct factual errors in caching, ai-gateway, deploy, forms, cli, functions, and frameworks skills#81
seancdavis merged 2 commits into
mainfrom
seandavis/ax-103-fix-factual-errors-in-netlify-skills-surfaced-by-the-axis

Conversation

@seancdavis

@seancdavis seancdavis commented Jul 7, 2026

Copy link
Copy Markdown
Collaborator

Summary

Fixes verified FACTUAL errors across seven skills (AX-103, report §A plus the two doc-currency items). Each wrong skill is corrected, and where a scenario encoded the same error, the scenario is fixed too so the rubric stays in parity with the skill.

What changed and why

  • Caching — deploy invalidation (skills/netlify-caching/SKILL.md): the skill claimed Netlify-Cache-Tag responses are excluded from automatic deploy-based invalidation. That is wrong: Netlify-Cache-Tag is purge-only and its responses are still wiped on deploy. Netlify-Cache-ID is the header that opts a response out of automatic deploy invalidation and auto-registers as a purge tag. Rewrote the section accordingly and added a worked Netlify-Cache-ID + purgeCache({ tags: [sameId] }) example. Correspondingly rewrote axis-scenarios/caching/tags-deploy-invalidation.ts, whose checks were INVERTED (required Netlify-Cache-Tag, forbade Netlify-Cache-ID).
  • Caching — Cache-Status (skills/netlify-caching/SKILL.md): replaced the bare HIT/MISS/REVALIDATED description with the real RFC 9211 format (named layers, fwd=miss, ttl=…).
  • AI Gateway (skills/netlify-ai-gateway/SKILL.md): dropped the stale -preview suffix from the Gemini image IDs (gemini-3-pro-image, gemini-3.1-flash-image), added gemini-3.1-flash-lite-image, and fixed the two example usages. In the chat list, dropped -preview from gemini-3.1-flash-lite (docs no longer carry the preview form) while leaving gemini-3-flash-preview/gemini-3.1-pro-preview/gemini-3.1-pro-preview-customtools, which docs still list with -preview. Verified against docs.netlify.com/build/ai-gateway/overview/. Also updated the stale example IDs in axis-scenarios/ai-gateway/image-generation.ts and image-to-image.ts.
  • netlify.toml reference (skills/netlify-deploy/references/netlify-toml.md): removed the fabricated [[functions]] array-of-tables (path/function) block — only [functions] and [functions."name-or-glob"] exist — and replaced it with a real per-function override example. Fixed axis-scenarios/config/functions-directory.ts, whose judge phrasing treated the fictional array-of-tables as real. Also corrected the publish comment: it resolves under base when base is set, not relative to repo root.
  • Forms (skills/netlify-forms/SKILL.md): added Astro to the SSR list and a caveat that form detection parses prerendered HTML only, so a data-netlify form on an Astro on-demand/SSR route is never registered.
  • CLI (skills/netlify-cli-and-deploy/SKILL.md): corrected the implication that pushing to a branch auto-creates a branch deploy — branch deploys are off by default and must be enabled.
  • Functions (skills/netlify-functions/SKILL.md): fixed the dead #resource-configuration anchor to #memory-or-vcpu.
  • Frameworks (skills/netlify-frameworks/SKILL.md): reconciled the TanStack Start detection signature to current (vite.config.* + @tanstack/react-start) instead of the outdated app.config.*.

Out of scope (owned by other issues): process.env guidance (AX-104) and cross-cutting-rule propagation (AX-105).

Closes AX-103

Summary by CodeRabbit

  • Documentation

    • Clarified AI Gateway image model examples and removed outdated preview-name references.
    • Updated caching docs to explain cache IDs, deploy persistence, purge behavior, and improved cache-status debugging guidance.
    • Refined deploy, functions, forms, frameworks, and configuration guidance for more accurate setup and behavior.
  • Bug Fixes

    • Corrected scenario checks and examples to match current image model names and configuration patterns.
    • Improved guidance around branch deploys and form detection to reduce misconfiguration.

@coderabbitai

coderabbitai Bot commented Jul 7, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

This PR updates documentation and scenario judge criteria across the Netlify context-and-tools skills. Changes include correcting Gemini image model names (removing "-preview" suffixes), clarifying Netlify-Cache-ID vs Netlify-Cache-Tag deploy-survival semantics, fixing functions.toml configuration syntax examples, updating Cache-Status debugging guidance to RFC 9211 format, and minor corrections to branch deploy, forms detection, and framework detection documentation.

Changes

Docs and scenario accuracy fixes

Layer / File(s) Summary
Gemini image model name corrections
axis-scenarios/ai-gateway/image-generation.ts, axis-scenarios/ai-gateway/image-to-image.ts, skills/netlify-ai-gateway/SKILL.md
Judge checks and doc examples/model lists now reference non--preview Gemini image model IDs (e.g., gemini-3-pro-image, gemini-3.1-flash-image).
Cache-ID vs cache-tag semantics
axis-scenarios/caching/tags-deploy-invalidation.ts, skills/netlify-caching/SKILL.md
Judge criteria and docs now require Netlify-Cache-ID for deploy-surviving cache behavior, clarify Netlify-Cache-Tag is purge-only, and rework Cache-Status debugging guidance to RFC 9211-style multi-layer reporting.
Functions configuration syntax clarification
axis-scenarios/config/functions-directory.ts, skills/netlify-deploy/references/netlify-toml.md
Judge checklist and reference examples clarify use of single-table [functions] and [functions."name-or-glob"] overrides instead of [[functions]], plus updated publish directory comment.
Deploy, forms, frameworks, and functions doc updates
skills/netlify-cli-and-deploy/SKILL.md, skills/netlify-forms/SKILL.md, skills/netlify-frameworks/SKILL.md, skills/netlify-functions/SKILL.md
Notes branch deploys are disabled by default, clarifies form detection only scans prerendered HTML at build time, updates TanStack Start detection to vite.config.*, and fixes the Memory resource limit doc link.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

Suggested reviewers: aitchiss, khendrikse, eduardoboucas, minivan, aarthykc

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly matches the PR’s main change: correcting factual errors across multiple skills and related scenarios.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch seandavis/ax-103-fix-factual-errors-in-netlify-skills-surfaced-by-the-axis

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@seancdavis

Copy link
Copy Markdown
Collaborator Author

Codex review: I audited this against AX-103 and the branch diff. I did not find blocking issues. Generated Codex/Cursor mirrors are in sync, and skill-validator check --strict skills/ passes with network access. I did not run AXIS tests per request.

@seancdavis seancdavis marked this pull request as ready for review July 7, 2026 20:14
@seancdavis seancdavis merged commit 8f49f34 into main Jul 7, 2026
1 of 2 checks passed
@seancdavis seancdavis deleted the seandavis/ax-103-fix-factual-errors-in-netlify-skills-surfaced-by-the-axis branch July 7, 2026 20:27

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@skills/netlify-caching/SKILL.md`:
- Around line 148-150: Add a language tag to the fenced Cache-Status example in
SKILL.md so markdownlint passes; update the existing fence around the
Cache-Status header example to use a suitable tag like http or text, keeping the
snippet content unchanged.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 2696ba1a-cd57-48ff-aeb0-d3d1aa2c38f3

📥 Commits

Reviewing files that changed from the base of the PR and between fce2a2f and 5523cef.

⛔ Files ignored due to path filters (14)
  • codex/skills/netlify-ai-gateway/SKILL.md is excluded by !codex/**
  • codex/skills/netlify-caching/SKILL.md is excluded by !codex/**
  • codex/skills/netlify-cli-and-deploy/SKILL.md is excluded by !codex/**
  • codex/skills/netlify-deploy/references/netlify-toml.md is excluded by !codex/**
  • codex/skills/netlify-forms/SKILL.md is excluded by !codex/**
  • codex/skills/netlify-frameworks/SKILL.md is excluded by !codex/**
  • codex/skills/netlify-functions/SKILL.md is excluded by !codex/**
  • cursor/rules/netlify-ai-gateway.mdc is excluded by !cursor/**
  • cursor/rules/netlify-caching.mdc is excluded by !cursor/**
  • cursor/rules/netlify-cli-and-deploy.mdc is excluded by !cursor/**
  • cursor/rules/netlify-deploy-netlify-toml.mdc is excluded by !cursor/**
  • cursor/rules/netlify-forms.mdc is excluded by !cursor/**
  • cursor/rules/netlify-frameworks.mdc is excluded by !cursor/**
  • cursor/rules/netlify-functions.mdc is excluded by !cursor/**
📒 Files selected for processing (11)
  • axis-scenarios/ai-gateway/image-generation.ts
  • axis-scenarios/ai-gateway/image-to-image.ts
  • axis-scenarios/caching/tags-deploy-invalidation.ts
  • axis-scenarios/config/functions-directory.ts
  • skills/netlify-ai-gateway/SKILL.md
  • skills/netlify-caching/SKILL.md
  • skills/netlify-cli-and-deploy/SKILL.md
  • skills/netlify-deploy/references/netlify-toml.md
  • skills/netlify-forms/SKILL.md
  • skills/netlify-frameworks/SKILL.md
  • skills/netlify-functions/SKILL.md

Comment on lines +148 to +150
```
Cache-Status: "Netlify Edge"; fwd=miss, "Netlify Durable"; hit; ttl=3600
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Add a language tag to the Cache-Status fence.

Markdownlint already flags this block. Use http or text so the docs stay lint-clean.

🛠️ Proposed fix
-```
+```http
 Cache-Status: "Netlify Edge"; fwd=miss, "Netlify Durable"; hit; ttl=3600
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
```
Cache-Status: "Netlify Edge"; fwd=miss, "Netlify Durable"; hit; ttl=3600
```
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 148-148: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@skills/netlify-caching/SKILL.md` around lines 148 - 150, Add a language tag
to the fenced Cache-Status example in SKILL.md so markdownlint passes; update
the existing fence around the Cache-Status header example to use a suitable tag
like http or text, keeping the snippet content unchanged.

Source: Linters/SAST tools

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant