package main import ( "encoding/json" "errors" "os" "path/filepath" ) const marketplacePath = ".claude-plugin/marketplace.json" func findRepoRoot() (string, error) { cwd, err := os.Getwd() if err != nil { return "", err } path := cwd for { candidate := filepath.Join(path, marketplacePath) if _, err := os.Stat(candidate); err == nil { return path, nil } parent := filepath.Dir(path) if parent == path { break } path = parent } return "", errors.New("repository root not found") } func readJSONFile(path string, target any) error { data, err := os.ReadFile(path) if err != nil { return err } return json.Unmarshal(data, target) } func readJSONMap(path string) (map[string]any, error) { data, err := os.ReadFile(path) if err != nil { return nil, err } var payload map[string]any if err := json.Unmarshal(data, &payload); err != nil { return nil, err } return payload, nil }