Repository navigation
fix(init): report skill sync outcomes accurately on the first run - #8580
Conversation
A run where every download failed now says it could not sync instead of "Installed". A copy renamed in place because its old name differs only by case is refreshed in the same run: a stale copy is updated, and an edited one is replaced under --reset-context. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Important Review skippedReview was skipped as selected files did not have any reviewable changes. ⚙️ Run configuration
You can disable this status message by setting the Use the checkbox below for a quick retry:
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configuration
📒 Files selected for processing (2)
🔗 Linked repositories identifiedCodeRabbit considers these linked repositories for cross-repo context during reviews:
Included review availability: This review used your included allowance. Your plan provides up to 4 included reviews per hour; 3 remain after this review. 📝 SummarySummary by CodeRabbit
WalkthroughThe sync now checks whether a skill directory moved from a prior name contains the current manifest content. If the content differs, it attempts installation and records the resulting action. Sync descriptions distinguish failure-only outcomes, additions, and other changes. Tests cover case-only renames, reset behavior, and total or partial download failures. Priority: ⬇️ Low Estimated code review effort: 2 (Simple) | ~10 minutes Change: Bug fix Suggested reviewers: Merge Risk: ⚪ Minimal · up to Case-only renames now refresh stale skills in the same run while preserving local edits unless reset is requested. The sync messages distinguish failure outcomes, and no concrete merge-blocking risk remains. Architecture SummaryArchitecture risk: 🔵 Low · up to The change affects 2 systems. Changed systems: Architecture concerns Review detailsSystems and components
Before / after behavior
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
commit: |
When other skills are present and only some downloads fail, the summary now says some skills could not be synced instead of "Could not sync". Adds a test for a refresh that fails right after a case-only rename. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
🤖 I have created a release *beep* *boop* --- ## [27.12.0](v27.11.2...v27.12.0) (2026-10-08) ### Features * **init:** install Netlify agent skills by default ([#8555](#8555)) ([f3d7e82](f3d7e82)) * **init:** sync installed skills with the manifest ([#8556](#8556)) ([332666c](332666c)) ### Bug Fixes * **deps:** batch low-risk dependency updates ([#8585](#8585)) ([edd9f44](edd9f44)) * **deps:** update content-type to v3 and read the header string directly ([#8572](#8572)) ([969145c](969145c)) * **dev:** use URL separators for static file paths ([#8593](#8593)) ([626224b](626224b)) * **init:** report skill sync outcomes accurately on the first run ([#8580](#8580)) ([0f2b082](0f2b082)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: token-generator-app[bot] <82042599+token-generator-app[bot]@users.noreply.github.com>
Summary
EX-3055. Follow-up to #8556 for the two CodeRabbit comments left open there (1, 2). Both only affected what the first run reported or left on disk; a second
netlify initalready corrected them.installedwasfalsein the analytics event. It now says "Could not sync Netlify skills in .agents/skills (2 failed)." When other skills are already present it says "Some Netlify skills in .agents/skills could not be synced (1 failed).", and a run that adds skills and also has a failure says "Synced" instead of "Installed".--reset-contextuntil the next run. After the rename, the copy is now compared with the release and replaced in the same run, as an update, or as a reset under--reset-context.Testing
tests/unit/utils/init/agent-skills.test.ts: five new tests: every download fails; one fails while the rest are current; stale copy under a case-only prior name; a refresh that fails right after that rename (old copy kept, next run finishes); edited copy under a case-only prior name with--reset-context. All five fail onmain. The three rename tests assert the end state, so they hold on case-sensitive filesystems too, where the existing install-then-remove path already produced it.npm run test:unit(726 tests), the init integration tests (9),npm run typecheck,npm run lint,npm run format:checkandnpm run buildare clean.