return {
  -- Buffer deletion
  {
    'famiu/bufdelete.nvim',
    cmd = { 'Bdelete', 'Bwipeout' },
  },

  -- Which-key for keybinding help
  {
    'folke/which-key.nvim',
    event = 'VeryLazy',
    opts = {},
    keys = {
      {
        '<leader>?',
        function()
          require('which-key').show { global = false }
        end,
        desc = 'Buffer Local Keymaps (which-key)',
      },
    },
  },

  -- Comment.nvim for easy commenting
  {
    'numToStr/Comment.nvim',
    config = function()
      require('Comment').setup()
    end,
  },

  -- Terminal integration
  {
    'akinsho/toggleterm.nvim',
    config = function()
      require('toggleterm').setup {
        size = 15,
        direction = 'horizontal',
      }
      vim.keymap.set('n', '<leader>t', function()
        require('toggleterm').toggle()
      end, { desc = 'Toggle Terminal' })
    end,
  },

  -- File explorer (Neo-tree)
  {
    'nvim-neo-tree/neo-tree.nvim',
    branch = 'v3.x',
    dependencies = {
      'nvim-lua/plenary.nvim',
      'nvim-tree/nvim-web-devicons',
      'MunifTanjim/nui.nvim',
    },
    cmd = 'Neotree',
    config = function()
      require('neo-tree').setup {
        close_if_last_window = true,
        popup_border_style = 'rounded',
        enable_git_status = true,
        enable_diagnostics = true,
        window = {
          position = 'left',
          width = 30,
          mapping_options = {
            noremap = true,
            nowait = true,
          },
        },
        filesystem = {
          filtered_items = {
            visible = false,
            hide_dotfiles = false,
            hide_gitignored = true,
            hide_hidden = true,
          },
          follow_current_file = {
            enabled = true,
          },
          use_libuv_file_watcher = true,
        },
        default_component_configs = {
          indent = {
            padding = 0,
          },
        },
      }

      vim.keymap.set('n', '<leader>e', function()
        require('neo-tree.command').execute { toggle = true }
      end, { desc = 'Toggle File Explorer (Neo-tree)' })

      vim.keymap.set('n', '<C-w>e', function()
        local current_buf = vim.api.nvim_get_current_buf()
        local current_buf_ft = vim.api.nvim_buf_get_option(current_buf, 'filetype')
        if current_buf_ft == 'neo-tree' then
          vim.cmd 'wincmd p'
        else
          vim.cmd 'Neotree focus'
        end
      end, { desc = 'Focus File Explorer (Neo-tree)' })
    end,
  },

  -- Faster navigation between frequently used files with Harpoon
  {
    'ThePrimeagen/harpoon',
    dependencies = { 'nvim-lua/plenary.nvim' },
    config = function()
      require('harpoon').setup {}
    end,
    keys = {
      {
        '<leader>ha',
        function()
          require('harpoon.mark').add_file()
        end,
        desc = 'Mark File (Harpoon)',
      },
      {
        '<leader>hh',
        function()
          require('harpoon.ui').toggle_quick_menu()
        end,
        desc = 'Harpoon Menu',
      },
      {
        '<leader>h1',
        function()
          require('harpoon.ui').nav_file(1)
        end,
        desc = 'Go to Harpoon File 1',
      },
      {
        '<leader>h2',
        function()
          require('harpoon.ui').nav_file(2)
        end,
        desc = 'Go to Harpoon File 2',
      },
      {
        '<leader>h3',
        function()
          require('harpoon.ui').nav_file(3)
        end,
        desc = 'Go to Harpoon File 3',
      },
      {
        '<leader>h4',
        function()
          require('harpoon.ui').nav_file(4)
        end,
        desc = 'Go to Harpoon File 4',
      },
    },
  },
  {
    'rest-nvim/rest.nvim',
    dependencies = { 'nvim-lua/plenary.nvim' },
    config = function()
      require('rest-nvim').setup {
        result_split_horizontal = false,
        result_split_in_place = false,
        skip_ssl_verification = false,
        encode_url = true,
        highlight = {
          enabled = true,
          timeout = 150,
        },
        result = {
          show_url = true,
          show_curl_command = false,
          show_http_info = true,
          show_headers = true,
          formatters = {
            json = 'jq',
            html = function(body)
              return vim.fn.system({ 'tidy', '-i', '-q', '-' }, body)
            end,
          },
        },
        jump_to_request = false,
        env_file = '.env',
        custom_dynamic_variables = {},
        yank_dry_run = true,
      }
    end,
    ft = 'http',
  },

  -- Claude Code integration
  {
    'greggh/claude-code.nvim',
    dependencies = { 'nvim-lua/plenary.nvim' },
    config = function()
      require('claude-code').setup {
        window = {
          split_ratio = 0.35,
          position = 'botright',
          enter_insert = true,
          hide_numbers = true,
          hide_signcolumn = true,
        },
        refresh = {
          enable = true,
          updatetime = 100,
          timer_interval = 1000,
          show_notifications = true,
        },
        git = {
          use_git_root = true,
        },
        shell = {
          separator = '&&',
          pushd_cmd = 'pushd',
          popd_cmd = 'popd',
        },
        command = 'claude',
        command_variants = {
          continue = '--continue',
          resume = '--resume',
          verbose = '--verbose',
        },
        keymaps = {
          toggle = {
            normal = '<leader>cc',
            terminal = '<C-,>',
            variants = {
              continue = '<leader>cC',
              verbose = '<leader>cV',
            },
          },
          window_navigation = true,
          scrolling = true,
        },
      }
    end,
  },
}
