An open API service indexing awesome lists of open source software.

https://github.com/georgeharker/comment-tasks.nvim

Add tasks to clickup from code
https://github.com/georgeharker/comment-tasks.nvim

Last synced: 6 months ago
JSON representation

Add tasks to clickup from code

Awesome Lists containing this project

README

          

# Comment Tasks

A universal Neovim plugin that bridges **10+ task management systems** with code comments across multiple programming languages. Create, update, and manage tasks directly from your comments without leaving your editor.

## ๐Ÿš€ Features

> **Manage tasks from code without losing focus. Maintain task references in code.**

Transform your TODO comments into actionable tasks across 10+ platforms while keeping task URLs embedded in your codebase for perfect traceability.

- **๐Ÿ”— Universal Multi-Provider Support**: Works with 10+ task management systems
- **๐ŸŽฏ Custom Status System**: Configurable workflows for each provider
- **๐ŸŒ Multi-Language Support**: Works with 15+ programming languages using Tree-sitter
- **โœจ Smart Comment Detection**: Handles single-line, block comments, and docstrings
- **๐Ÿ”„ Intelligent URL Insertion**: Context-aware URL placement
- **โšก Unified Command Interface**: Same commands work across all providers
- **๐Ÿ“ File Reference Management**: Structured file associations with tasks
- **๐Ÿงน Comment Prefix Trimming**: Automatically clean TODO, FIXME, and other prefixes
- **๐ŸŽจ Language Override**: Force specific language detection when needed
- **๐Ÿ”ง Modular Architecture**: Extensible system for easy provider addition

## ๐Ÿ“Š Supported Providers

| Provider | Type | Custom Status | Bulk Operations | File References |
|----------|------|---------------|-----------------|-----------------|
| **๐ŸŽฏ [ClickUp](docs/providers/clickup.md)** | Full | โœ… | โœ… | โœ… |
| **๐Ÿ“‹ [Asana](docs/providers/asana.md)** | Full | โœ… | โŒ | โœ… |
| **โšก [Linear](docs/providers/linear.md)** | Full | โœ… | โŒ | โœ… |
| **๐Ÿข [Jira](docs/providers/jira.md)** | Full | โœ… | โŒ | โœ… |
| **๐Ÿ“ [Notion](docs/providers/notion.md)** | Full | โœ… | โŒ | โœ… |
| **๐Ÿ“ˆ [Monday.com](docs/providers/monday.md)** | Full | โœ… | โŒ | โœ… |
| **๐Ÿ™ [GitHub Issues](docs/providers/github.md)** | Basic | โŒ | โŒ | โœ… |
| **๐ŸฆŠ [GitLab Issues](docs/providers/gitlab.md)** | Basic | โŒ | โŒ | โœ… |
| **๐Ÿ“ฆ [Trello](docs/providers/trello.md)** | Basic | โŒ | โŒ | โœ… |
| **โœ… [Todoist](docs/providers/todoist.md)** | Basic | โŒ | โŒ | โœ… |

**Full**: Complete workflow customization with any status names
**Basic**: Open/closed or list-based status management

## ๐ŸŒ Supported Languages

Works with 15+ programming languages including:
**Python** โ€ข **JavaScript/TypeScript** โ€ข **Lua** โ€ข **Rust** โ€ข **C/C++** โ€ข **Go** โ€ข **Java** โ€ข **Ruby** โ€ข **PHP** โ€ข **CSS** โ€ข **HTML** โ€ข **Bash** โ€ข **Vim Script** โ€ข **YAML** โ€ข **JSON**

## ๐Ÿ“ฆ Installation

### Using [lazy.nvim](https://github.com/folke/lazy.nvim)

```lua
{
"georgeharker/comment-tasks.nvim",
dependencies = {
"nvim-lua/plenary.nvim", -- Required for HTTP requests
},
config = function()
require("comment-tasks").setup({
default_provider = "clickup", -- Choose your preferred provider

providers = {
clickup = {
enabled = true,
api_key_env = "CLICKUP_API_KEY",
list_id = "your_clickup_list_id",
statuses = {
new = "To Do",
in_progress = "In Progress",
review = "Code Review",
completed = "Complete",
}
},
-- Add other providers as needed
},
})
end
}
```

**Environment Setup**:
```bash
export CLICKUP_API_KEY="your_api_key_here"
```

๐Ÿ“– **Detailed Installation**: [docs/installation.md](docs/installation.md)

## ๐Ÿš€ Quick Start

1. **Install** the plugin with your preferred package manager
2. **Configure** your task management provider(s)
3. **Set environment variables** for API authentication
4. **Create tasks** from comments using commands

### Example Workflow

```python
# TODO: Implement user authentication system
# This needs proper validation and error handling
```

Place cursor on the comment and run `:ClickUpTask new` โ†’

```python
# TODO: Implement user authentication system
# This needs proper validation and error handling
# https://app.clickup.com/t/task_id
```

Update task status as you progress:
```vim
:ClickUpTask in_progress " When you start working
:ClickUpTask review " When ready for code review
:ClickUpTask close " When finished (uses completed status)
```

## โšก Core Commands

### Provider-Specific Commands (Recommended)

```vim
" ClickUp (Full custom status support)
:ClickUpTask " Create task (default)
:ClickUpTask create " Create task (explicit)
:ClickUpTask in_progress " Update to 'In Progress' status
:ClickUpTask close " Complete task (uses completed status)
:ClickUpTask addfile " Add current file to task

" GitHub Issues (Basic support)
:GitHubTask " Create issue (default)
:GitHubTask create " Create issue (explicit)
:GitHubTask close " Close issue
:GitHubTask addfile " Add file reference

" Asana (Full custom status support)
:AsanaTask " Create task (default)
:AsanaTask create " Create task (explicit)
:AsanaTask blocked " Update to 'Blocked' status
:AsanaTask close " Complete task
:ClickUpTask review " Update to 'Code Review' status
:ClickUpTask completed " Complete task
:ClickUpTask addfile " Add current file to task

" GitHub Issues (Basic support)
:GitHubTask new " Create issue
:GitHubTask close " Close issue
:GitHubTask addfile " Add file reference

" Asana (Full custom status support)
:AsanaTask new " Create task
:AsanaTask blocked " Update to 'Blocked' status
:AsanaTask completed " Complete task
```

### Generic Commands (Uses default_provider)

```vim
:CommentTask new " Create task with default provider
:CommentTask completed " Complete task with default provider
:CommentTask " Create task with default provider (default)
:CommentTask create " Create task with default provider (explicit)
:CommentTask close " Complete task with default provider
:CommentTaskAddFile " Add file reference with default provider
```

**Available commands are generated dynamically** from your status configuration.

## โš™๏ธ Configuration

### Basic Setup

```lua
require("comment-tasks").setup({
default_provider = "clickup", -- Provider for generic commands

providers = {
clickup = {
enabled = true,
api_key_env = "CLICKUP_API_KEY",
list_id = "123456789",
statuses = {
new = "To Do", -- Special: creates tasks
completed = "Complete", -- Special: completes tasks
review = "Code Review", -- Custom: creates :ClickUpTask review
blocked = "Blocked", -- Custom: creates :ClickUpTask blocked
}
}
}
})
```

### Status System

Commands are **automatically generated** from your status configuration:

```lua
statuses = {
new = "Backlog", -- โ†’ :ClickUpTask new (creates with "Backlog")
completed = "Done", -- โ†’ :ClickUpTask completed (updates to "Done")
review = "In Review", -- โ†’ :ClickUpTask review (updates to "In Review")
testing = "QA Testing", -- โ†’ :ClickUpTask testing (updates to "QA Testing")
}
```

๐Ÿ“– **Complete Configuration**: [docs/configuration.md](docs/configuration.md)

## ๐Ÿ“š Documentation

### Setup Guides
- ๐Ÿ“ฆ **[Installation Guide](docs/installation.md)** - Complete installation instructions
- โš™๏ธ **[Configuration Reference](docs/configuration.md)** - All configuration options

### Provider Guides
- ๐ŸŽฏ **[ClickUp Setup](docs/providers/clickup.md)**
- ๐Ÿ“‹ **[Asana Setup](docs/providers/asana.md)**
- ๐Ÿ™ **[GitHub Issues Setup](docs/providers/github.md)**
- โšก **[Linear Setup](docs/providers/linear.md)**
- ๐Ÿข **[Jira Setup](docs/providers/jira.md)**
- ๐Ÿ“ **[Notion Setup](docs/providers/notion.md)**
- ๐Ÿ“ˆ **[Monday.com Setup](docs/providers/monday.md)**
- ๐Ÿ“ฆ **[Trello Setup](docs/providers/trello.md)**
- ๐ŸฆŠ **[GitLab Issues Setup](docs/providers/gitlab.md)**
- โœ… **[Todoist Setup](docs/providers/todoist.md)**

### Examples

### Reference
- ๐Ÿ”ง **[API Reference](docs/api-reference.md)** - Lua API & keybinding examples

## ๐Ÿ”ง Keybinding Examples

```lua
vim.keymap.set("n", "tcc", function()
require("comment-tasks").create_clickup_task_from_comment()
end, { desc = "Create ClickUp task" })

vim.keymap.set("n", "tgh", function()
require("comment-tasks").create_github_task_from_comment()
end, { desc = "Create GitHub issue" })

vim.keymap.set("n", "tc", function()
require("comment-tasks").create_task_from_comment()
end, { desc = "Create task (default provider)" })

vim.keymap.set("n", "tu", function()
require("comment-tasks").update_task_status_from_comment("completed")
end, { desc = "Complete task" })

vim.keymap.set("n", "tx", function()
require("comment-tasks").close_task_from_comment()
end, { desc = "Close task" })
```

## ๐Ÿค Contributing

We welcome contributions! See our [Contributing Guide](CONTRIBUTING.md) for:

- ๐Ÿ†• Adding new providers
- ๐Ÿ› Bug reports and fixes
- ๐Ÿ“– Documentation improvements
- ๐Ÿ’ก Feature suggestions

### Development Setup

```bash
git clone https://github.com/georgeharker/comment-tasks.nvim.git
cd comment-tasks.nvim
```

## ๐Ÿ“„ License

MIT License - see [LICENSE](LICENSE) for details.

## ๐Ÿ™ Support

- ๐Ÿ“– **Documentation**: Check [docs/](docs/) for detailed guides
- ๐Ÿ› **Issues**: Report bugs on [GitHub Issues](https://github.com/georgeharker/comment-tasks.nvim/issues)
- ๐Ÿ’ฌ **Discussions**: Ask questions in [GitHub Discussions](https://github.com/georgeharker/comment-tasks.nvim/discussions)

---

**Ready to get started?** Check out the [Installation Guide](docs/installation.md) and choose your [provider setup](docs/providers/).