Skip to content

Align Fizzy skill installation with basecamp-cli#119

Merged
robzolkos merged 3 commits intomasterfrom
chore/align-skill-install-with-basecamp
Apr 3, 2026
Merged

Align Fizzy skill installation with basecamp-cli#119
robzolkos merged 3 commits intomasterfrom
chore/align-skill-install-with-basecamp

Conversation

@robzolkos
Copy link
Copy Markdown
Collaborator

@robzolkos robzolkos commented Apr 3, 2026

Summary

This aligns Fizzy’s agent skill installation and lifecycle with the more robust basecamp-cli model so the embedded skill has a single source of truth, installs into a canonical shared location, stays in sync across CLI upgrades, and integrates more clearly with Claude plugin setup. The goal is to reduce drift and maintenance overhead while making the README and setup flow match how the skill and Claude integration actually work.

Changes

  • embed the skill directly from skills/fizzy/SKILL.md
  • remove the legacy mirrored internal/skills package and sync-skill workflow
  • standardize the canonical install location to ~/.agents/skills/fizzy/SKILL.md
  • keep Claude skill linking behavior, including copy fallback when symlinks fail
  • add installed-version stamping for the baseline skill
  • refresh installed global skill locations automatically when the CLI version changes
  • repair broken Claude skill symlinks automatically
  • align the interactive skill install options with the Basecamp approach
  • expand skill tests to cover install, refresh, version stamping, absent locations, and symlink repair
  • clarify README language so Claude setup is described as:
    • installing the Claude plugin from the marketplace
    • linking the embedded Fizzy skill into Claude’s skills directory

Summary by cubic

Aligns Fizzy’s skill install flow with basecamp-cli. The embedded SKILL.md installs to ~/.agents/skills/fizzy/, records an installed version, auto-refreshes on CLI upgrades, repairs Claude links, and makes fizzy skill an interactive installer by default.

  • New Features

    • Canonical install at ~/.agents/skills/fizzy/SKILL.md with .installed-version; auto-refreshes all detected installs on CLI version change with a one-line notice; skips dev builds.
    • Repairs broken Claude skill symlinks; falls back to copying if linking fails.
    • Command behavior: fizzy skill is interactive; fizzy skill install installs and links to Claude; fizzy skill print outputs the embedded skill.
  • Refactors

    • Embedded skill moved to skills via embed.FS; removed internal/skills and the sync-skill Makefile target.
    • Startup writes a .last-run-version sentinel in the config dir and refreshes skills on change; wizard option renamed to “Agents (Shared)”.
    • README clarifies fizzy setup claude, the default interactive behavior, and linking for other agents; tests expanded for install, refresh, stamping, symlink repair, and version-guard paths.

Written for commit feeaa05. Summary will update on new commits.

Copilot AI review requested due to automatic review settings April 3, 2026 04:24
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This pull request aligns Fizzy's agent skill installation and lifecycle with the more robust basecamp-cli model. The primary change is embedding the skill directly from skills/fizzy/SKILL.md into the binary, removing the legacy mirrored package, standardizing the install location to ~/.agents/skills/fizzy/SKILL.md, and adding automatic skill refresh when the CLI version changes.

Changes:

  • Embed skill files directly in binary via top-level skills package; remove legacy internal/skills package
  • Add version stamping (.installed-version file) and automatic refresh when CLI version changes
  • Repair broken Claude symlinks automatically and improve Claude plugin setup documentation
  • Expand test coverage to include install, refresh, version tracking, absent locations, and symlink repair scenarios

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
skills/embed.go New package that embeds fizzy skill files into binary via go:embed
README.md Clarified AI agent integration section to better explain Claude plugin and skill linking flow
Makefile Removed sync-skill target as skill is now embedded
internal/commands/skill.go Refactored to read embedded skill, added version tracking, refresh logic, and symlink repair
internal/commands/skill_test.go Expanded test coverage for install, refresh, version management, and symlink repair scenarios
internal/commands/root.go Added CLI version tracking and automatic skill refresh on version change

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link
Copy Markdown
Contributor

@cubic-dev-ai cubic-dev-ai bot left a comment

Choose a reason for hiding this comment

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

3 issues found across 9 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="internal/commands/skill.go">

<violation number="1" location="internal/commands/skill.go:227">
P2: Baseline installs through the wizard can miss `.installed-version` because stamping is conditional on `canonicalFile != expandedPath`. Write the version stamp for canonical installs too.</violation>
</file>

<file name="internal/commands/skill_test.go">

<violation number="1" location="internal/commands/skill_test.go:259">
P3: Test setup errors are silently discarded here, but other tests in this file use `t.Fatal(err)` for identical `os.WriteFile`/`os.MkdirAll` calls. If either fails, the test could pass for the wrong reason (e.g., `copySkillFiles` fails because the source file is missing, not because it detected subdirectories).</violation>

<violation number="2" location="internal/commands/skill_test.go:277">
P3: Test setup errors are silently discarded, inconsistent with other test functions in this file (e.g., `TestInstalledSkillVersion`). If setup fails, the test produces a misleading failure message ("expected true when skill file exists") instead of surfacing the actual setup error.</violation>
</file>

Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.

@github-actions github-actions bot added enhancement New feature or request breaking labels Apr 3, 2026
@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 3, 2026

⚠️ Potential breaking changes detected:

  • Renamed 'Agents (Global)' skill location to 'Agents (Shared)' in the skillLocations variable. This could break scripts or tools relying on the specific name.
  • Renamed function 'expandPath' to 'expandSkillPath', though the original function is kept for backward compatibility, so this may not strictly be breaking depending on any direct references to it outside of this file.

Review carefully before merging. Consider a major version bump.

Copilot AI review requested due to automatic review settings April 3, 2026 04:34
@robzolkos
Copy link
Copy Markdown
Collaborator Author

Fixed — cubic identified that the wizard could miss on canonical installs, and that a couple of skill tests were discarding setup errors. The wizard now always stamps the canonical install version, and the tests now fail explicitly on setup errors.

@robzolkos
Copy link
Copy Markdown
Collaborator Author

Fixed — tightened test setup error handling in skill tests for consistency with the rest of the file.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 9 out of 9 changed files in this pull request and generated no new comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@robzolkos robzolkos merged commit 9b67011 into master Apr 3, 2026
24 checks passed
@robzolkos robzolkos deleted the chore/align-skill-install-with-basecamp branch April 3, 2026 04:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants