Skip to content

Commit eae3c88

Browse files
committed
fix: update skills install paths to align with agent defaults
1 parent 00ae1ce commit eae3c88

1 file changed

Lines changed: 22 additions & 6 deletions

File tree

cmd/hatchet-cli/cli/skills.go

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,10 @@ var skillsInstallCmd = &cobra.Command{
4848
Short: "Install the Hatchet CLI agent skill package into your project",
4949
Long: `Install Hatchet CLI agent skills into your project.
5050
51-
Creates the skill directory structure under {dir}/skills/hatchet-cli/ and
52-
appends a reference section to the project AGENTS.md file.`,
53-
Example: ` # Install to current directory (creates ./skills/hatchet-cli/)
51+
Creates the skill directory structure under {dir}/.agents/skills/hatchet-cli/,
52+
creates {dir}/.claude/skills/hatchet-cli as a symlink, and appends a reference
53+
section to the project AGENTS.md file.`,
54+
Example: ` # Install to current directory
5455
hatchet skills install
5556
5657
# Install to a custom base directory
@@ -67,7 +68,7 @@ func init() {
6768
rootCmd.AddCommand(skillsCmd)
6869
skillsCmd.AddCommand(skillsInstallCmd)
6970

70-
skillsInstallCmd.Flags().StringVarP(&skillsInstallDir, "dir", "d", ".", "Target base directory (skill installs under {dir}/skills/hatchet-cli/)")
71+
skillsInstallCmd.Flags().StringVarP(&skillsInstallDir, "dir", "d", ".", "Target base directory (creates .agents/skills/hatchet-cli, .claude/skills/hatchet-cli, and AGENTS.md)")
7172
skillsInstallCmd.Flags().BoolVarP(&skillsInstallForce, "force", "f", false, "Skip confirmation prompts")
7273
}
7374

@@ -82,7 +83,8 @@ func runSkillsInstall() {
8283
cli.Logger.Fatalf("could not resolve directory: %v", err)
8384
}
8485

85-
skillDir := filepath.Join(baseDir, "skills", "hatchet-cli")
86+
skillDir := filepath.Join(baseDir, ".agents", "skills", "hatchet-cli")
87+
claudeSkillDir := filepath.Join(baseDir, ".claude", "skills", "hatchet-cli")
8688
agentsFile := filepath.Join(baseDir, "AGENTS.md")
8789

8890
// 2. Print header and summary
@@ -98,6 +100,7 @@ func runSkillsInstall() {
98100
fmt.Printf(" %s\n", skillDir+"/references/trigger-and-watch.md")
99101
fmt.Printf(" %s\n", skillDir+"/references/debug-run.md")
100102
fmt.Printf(" %s\n", skillDir+"/references/replay-run.md")
103+
fmt.Printf(" %s (symlink → %s)\n", claudeSkillDir, skillDir)
101104
fmt.Println()
102105
fmt.Printf(" %s (appended)\n", agentsFile)
103106
fmt.Println()
@@ -229,6 +232,19 @@ func runSkillsInstall() {
229232
fmt.Printf(" ⚠ Could not create CLAUDE.md symlink: %v\n", symlinkErr)
230233
}
231234

235+
if mkdirErr := os.MkdirAll(filepath.Dir(claudeSkillDir), 0o755); mkdirErr != nil {
236+
cli.Logger.Fatalf("could not create .claude skills directory: %v", mkdirErr)
237+
}
238+
239+
claudeTarget, relErr := filepath.Rel(filepath.Dir(claudeSkillDir), skillDir)
240+
if relErr != nil {
241+
claudeTarget = skillDir
242+
}
243+
_ = os.Remove(claudeSkillDir)
244+
if symlinkErr := os.Symlink(claudeTarget, claudeSkillDir); symlinkErr != nil {
245+
fmt.Printf(" ⚠ Could not create .claude skill symlink: %v\n", symlinkErr)
246+
}
247+
232248
fmt.Println(styles.SuccessMessage("Skill installed to " + skillDir))
233249

234250
// 7. Append to project AGENTS.md
@@ -270,7 +286,7 @@ func runSkillsInstall() {
270286
fmt.Println(styles.Section("Next steps"))
271287
fmt.Println()
272288
fmt.Println(" • Run " + styles.Code.Render("hatchet docs install") + " to add the Hatchet MCP server to your AI editor")
273-
fmt.Println(" • Commit " + styles.Code.Render("skills/") + " and " + styles.Code.Render("AGENTS.md") + " to version control")
289+
fmt.Println(" • Commit " + styles.Code.Render(".agents/") + ", " + styles.Code.Render(".claude/") + ", and " + styles.Code.Render("AGENTS.md") + " to version control")
274290
fmt.Println()
275291
}
276292

0 commit comments

Comments
 (0)