Skip to content

Implement CLI onboarding commands#9

Merged
Niaobu merged 10 commits intomainfrom
claude/plan-issue-8-fjy9p
Jan 11, 2026
Merged

Implement CLI onboarding commands#9
Niaobu merged 10 commits intomainfrom
claude/plan-issue-8-fjy9p

Conversation

@Niaobu
Copy link
Contributor

@Niaobu Niaobu commented Jan 11, 2026

Summary

Implements issue #8: Improve onboarding and setup.

  • unityctl setup - One-command setup (config + package + skill)
    • Auto-detects Unity project or prompts for path
    • Creates config only when running from outside project directory
  • unityctl config set/get/list - Configuration management
  • unityctl package add/remove/update/status - Unity package management (UPM or local)
  • unityctl skill add/remove/status - Claude Code skill management (local or global)
  • unityctl update - Self-update CLI, bridge, and Unity package from NuGet

Also includes:

  • scripts/install.sh and scripts/install.ps1 for one-liner installation
  • SKILL.md embedded as resource in CLI assembly
  • Updated error messages to reference new commands

Closes #8

Test plan

  • Run unityctl setup from Unity project directory
  • Run unityctl setup --project <path> from parent directory
  • Run unityctl package status to verify package detection
  • Run unityctl skill add --global and verify file created
  • Run unityctl update --check to verify NuGet query
  • Run unityctl config set project-path <path> and verify config created

claude and others added 3 commits January 11, 2026 09:15
Created detailed plan addressing all three requirements:

1. CLI installation commands:
   - unityctl install package (UPM/local)
   - unityctl install skill (Claude Code integration)
   - unityctl init/config (project path setup)
   - unityctl setup (combined one-command setup)

2. Update functionality:
   - unityctl update (self-update CLI and bridge)
   - Auto-restart bridge after updates
   - Update Unity package references

3. Consolidated package distribution:
   - Analysis of 4 different approaches
   - Recommendation: Installation script + update command
   - Maintains good architecture while improving UX

Plan includes:
- Detailed implementation approach for each feature
- Technical specifications and code examples
- User experience mockups
- Phased implementation sequence (6 PRs)
- Cross-platform considerations
- Testing strategy
- Success criteria

Ready for review and implementation.
Researched 13+ popular dev tools (git, npm, docker, cargo, dotnet,
kubectl, gh, rustup, terraform, etc.) to identify best practices for
CLI command structure.

Key findings:
- Modern CLIs use noun-verb grouping (docker, kubectl, gh)
- 'init' is universal for directory initialization
- 'config set/get/list' is standard pattern
- 'package add' matches dotnet pattern better than 'install package'

Recommended changes to original plan:
- unityctl install package → unityctl package add
- unityctl install skill → unityctl skill add
- unityctl config set-project → unityctl config set project-path
- Add config get/list commands
- Add --yes flags for non-interactive mode
- Add granular update flags (--tools-only, --package-only)

Benefits:
- More discoverable (grouped commands)
- Better alignment with dotnet CLI
- Natural extensibility (package remove, skill status, etc.)
- Familiar to users of modern dev tools
New commands:
- setup: One-command setup (config + package + skill)
  - Auto-detects Unity project or prompts for path
  - Creates config only when running from outside project
- config set/get/list: Configuration management
- package add/remove/update/status: Unity package management
- skill add/remove/status: Claude Code skill management
- update: Self-update CLI, bridge, and Unity package

Other changes:
- Embed SKILL.md as resource in CLI assembly
- Add install.sh and install.ps1 scripts for one-liner install
- Removed init command (merged into setup)
- Setup no longer starts bridge (install vs runtime separation)
@Niaobu Niaobu force-pushed the claude/plan-issue-8-fjy9p branch from bee07b0 to 3dd9a05 Compare January 11, 2026 16:53
- SetupCommand: Use case-sensitive path comparison on Unix, case-insensitive on Windows
- PackageCommands: Validate --method parameter and provide clear error for invalid values
- Align skill add description with package add ("Add" instead of "Install")
- Rename UpdateStepResult.Component to Step for consistency with SetupStepResult
- Remove unnecessary async pattern from RemoveSkill and ShowSkillStatus
- Make StatusPackageAsync private (not called externally)
Strip build metadata (everything after '+') from AssemblyInformationalVersion.
.NET SDK appends git commit hashes to this attribute, causing invalid URLs like:
  #v0.3.1+826b410a0bbd4027888ff31edc464ac26d110d09

Now correctly generates:
  #v0.3.1
Skills must be in a folder named after the skill with a SKILL.md file inside.
Changed from: .claude/skills/unity-editor.md
Changed to:   .claude/skills/unity-editor/SKILL.md
@Niaobu Niaobu merged commit aa6fc84 into main Jan 11, 2026
@Niaobu Niaobu deleted the claude/plan-issue-8-fjy9p branch February 10, 2026 07:20
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.

Improve onboarding and setup

2 participants