Linear Todos
⚠️ This is a SOURCE-EXECUTION skill. The agent runs Python code from src/linear_todos/ when you invoke CLI commands. This is not instruction-only. Review src/linear_todos/api.py before first use.
🔐 Security Note: This skill stores your Linear API key in plaintext JSON at ~/.config/linear-todos/config.json only if you run the setup command. Use a dedicated API key with minimal scope. The key is only used for Linear API calls and is never transmitted elsewhere. Prefer environment variables (LINEAR_API_KEY) to avoid persisted state.
Audit Info: This skill makes HTTPS requests only to api.linear.app (Linear's official GraphQL API). No data is sent elsewhere. See src/linear_todos/api.py for the API client implementation.
Credentials
No | Default team ID for todos |
|
LINEAR_STATE_ID | No | Default state for new todos |
|
LINEAR_DONE_STATE_ID | No | State for completed todos |
|
LINEAR_TIMEZONE | No | Your local timezone (e.g.,
America/New_York,
Europe/London). Used for "end of day" calculations. Falls back to OpenClaw
USER.md timezone if available. |
Config Path: ~/.config/linear-todos/config.json (created by setup, permissions 0o600)
Security & Auditing
What This Skill Does
- - HTTP Requests: Makes HTTPS requests only to
https://api.linear.app/graphql (Linear's official API). No telemetry, no third-party services. - Data Storage: Stores your API key and config in
~/.config/linear-todos/config.json (plaintext, permissions 0o600) only if you run the setup command. Team/issue data is fetched fresh each run — nothing is cached locally except your config. - Runtime Behavior: This skill runs from bundled Python source code (not preinstalled system tools). The agent executes
main.py and code in src/linear_todos/ when you run CLI commands. - Setup Behavior: During interactive setup, the wizard temporarily sets
LINEAR_API_KEY in the process environment to test the key. This is only during the setup session and is not persisted. - No Auto-Enable: Does not request platform privileges (
always: false). Will not auto-enable itself for all agents. - Code Locations:
-
src/linear_todos/api.py — All HTTP requests to Linear
-
src/linear_todos/config.py — Config file handling
-
src/linear_todos/setup_wizard.py — Interactive setup
-
src/linear_todos/cli.py — CLI commands
Recommended Security Practices
- 1. Use a dedicated API key: Create a separate Linear API token with minimal scope for this skill. Revoke it if you uninstall or stop using the skill.
- Prefer environment variables: Set
LINEAR_API_KEY in your shell instead of running setup — no plaintext file is created. - Audit the code: Review
src/linear_todos/api.py to verify HTTP destinations before first use. - Run initial setup in isolation: If unsure, run the skill in a container/VM for the first setup to inspect behavior.
Cron Jobs (Optional)
The file cron-jobs.txt contains example cron entries for daily digests. It does NOT automatically install them. Adding cron jobs requires manual action:
CODEBLOCK0
Preferred alternative: Use OpenClaw's built-in cron instead of system crontab:
CODEBLOCK1
A powerful todo management system built on Linear with smart date parsing, priorities, and a complete CLI workflow.
Quick Start
CODEBLOCK2
Setup
1. Get API Key
Get your API key from linear.app/settings/api. Recommendation: Create a dedicated API key with minimal scope for this skill.
2. Run Setup
CODEBLOCK3
This interactive wizard will:
- - Verify your API key
- List your Linear teams
- Let you select your todo team
- Configure initial and done states
- Save settings to
~/.config/linear-todos/config.json (plaintext JSON)
3. Manual Configuration (optional)
Instead of running setup, you can use environment variables:
CODEBLOCK4
Or create ~/.config/linear-todos/config.json:
CODEBLOCK5
Commands
create
Create a new todo with optional timing, priority, and description.
CODEBLOCK6
Natural Date Examples:
CODEBLOCK7
Complete Examples:
CODEBLOCK8
list
List all your todos.
CODEBLOCK9
done
Mark a todo as completed.
CODEBLOCK10
snooze
Reschedule a todo to a later date.
CODEBLOCK11
review
Daily review command that organizes todos by urgency.
CODEBLOCK12
Output sections:
- - 🚨 OVERDUE - Past due date
- 📅 Due Today - Due today
- ⚡ High Priority - Urgent/high priority items
- 📊 This Week - Due within 7 days
- 📅 This Month - Due within 28 days
- 📝 No Due Date - Items without dates
setup
Interactive setup wizard to configure your Linear integration.
CODEBLOCK13
This will guide you through:
- - Verifying your API key
- Selecting your Linear team
- Configuring initial and done states
- Saving settings to INLINECODE34
For Agents
When the user asks for reminders or todos:
1. Parse Natural Language Dates
Convert user input to specific dates:
CODEBLOCK14
2. Determine Priority
Ask if not specified:
- - Urgent (🔥) - Critical, do immediately
- High (⚡) - Important, do soon
- Normal (📌) - Standard priority (default)
- Low (💤) - Can wait
3. Daily Briefing
When asked "what do I have to do today", run:
CODEBLOCK15
Present the output exactly as formatted - don't reformat or summarize.
4. Complete Todos
When user says they completed something, mark it done:
CODEBLOCK16
Date Parsing Reference
| Input | Result |
|---|
| INLINECODE35 | Today |
| INLINECODE36 |
Next day |
|
Friday | Next occurrence of Friday |
|
next Monday | Monday of next week |
|
this Friday | Friday of current week (or next if passed) |
|
in 3 days | 3 days from now |
|
in 2 weeks | 14 days from now |
|
2025-04-15 | Specific date |
Priority Levels
| Level | Number | Icon | Use For |
|---|
| Urgent | 1 | 🔥 | Critical, blocking issues |
| High |
2 | ⚡ | Important, time-sensitive |
| Normal | 3 | 📌 | Standard tasks (default) |
| Low | 4 | 💤 | Nice-to-have, can wait |
| None | 0 | 📋 | No priority set |
Timezone Support
By default, due dates are calculated in UTC (end of day = 23:59:59 UTC). To use your local timezone for "end of day" calculations:
CODEBLOCK17
OpenClaw Integration: If running inside an OpenClaw workspace, the skill will automatically detect your timezone from USER.md (e.g., timezone: America/New_York). No manual configuration needed!
When a timezone is configured:
- -
--when day sets due date to end of today in your timezone (converted to UTC for Linear) - INLINECODE46 sets due date to 7 days from now, end of day in your timezone
- INLINECODE47 sets due date to end of tomorrow in your timezone
Common timezone values: America/New_York, America/Los_Angeles, Europe/London, Europe/Paris, INLINECODE52
Configuration Precedence
Settings are loaded in this order (later overrides earlier):
- 1. Default values (none)
- Config file: INLINECODE53
- Environment variables: INLINECODE54
- Command-line flags:
--team, INLINECODE56
Files
| File | Purpose |
|---|
| INLINECODE57 | Main entry point for the CLI |
| INLINECODE58 |
CLI implementation with all commands |
|
src/linear_todos/api.py | Linear API client |
|
src/linear_todos/config.py | Configuration management |
|
src/linear_todos/dates.py | Date parsing utilities |
|
src/linear_todos/setup_wizard.py | Interactive setup wizard |
Linear Todos
⚠️ 这是一个源代码执行技能。当你调用CLI命令时,代理会运行src/lineartodos/中的Python代码。这不仅仅是指令执行。首次使用前请查看src/lineartodos/api.py。
🔐 安全提示: 此技能仅在您运行setup命令时,才会将您的Linear API密钥以明文JSON格式存储在~/.config/linear-todos/config.json中。请使用具有最小权限范围的专用API密钥。该密钥仅用于Linear API调用,绝不会传输到其他地方。建议使用环境变量(LINEARAPIKEY)以避免持久化状态。
审计信息: 此技能仅向api.linear.app(Linear官方GraphQL API)发起HTTPS请求。不会向其他地方发送任何数据。API客户端实现请参见src/linear_todos/api.py。
凭据
否 | 待办事项的默认团队ID |
| LINEAR
STATEID | 否 | 新待办事项的默认状态 |
| LINEAR
DONESTATE_ID | 否 | 已完成待办事项的状态 |
| LINEAR
TIMEZONE | 否 | 您的本地时区(例如America/NewYork、Europe/London)。用于一天结束计算。如果可用,会回退到OpenClaw的USER.md时区。 |
配置路径: ~/.config/linear-todos/config.json(由setup创建,权限为0o600)
安全与审计
此技能的功能
- - HTTP请求: 仅向https://api.linear.app/graphql(Linear官方API)发起HTTPS请求。无遥测,无第三方服务。
- 数据存储: 仅在您运行setup命令时,将您的API密钥和配置存储在~/.config/linear-todos/config.json中(明文,权限0o600)。团队/问题数据每次运行时都会重新获取——除配置外,不会在本地缓存任何内容。
- 运行时行为: 此技能从捆绑的Python源代码运行(非预装系统工具)。当您运行CLI命令时,代理会执行main.py和src/lineartodos/中的代码。
- 设置行为: 在交互式设置过程中,向导会临时在进程环境中设置LINEARAPI_KEY以测试密钥。这仅在设置会话期间进行,不会持久化。
- 非自动启用: 不请求平台权限(always: false)。不会为所有代理自动启用自身。
- 代码位置:
- src/linear_todos/api.py — 所有对Linear的HTTP请求
- src/linear_todos/config.py — 配置文件处理
- src/linear
todos/setupwizard.py — 交互式设置向导
- src/linear_todos/cli.py — CLI命令
推荐的安全实践
- 1. 使用专用API密钥: 为此技能创建一个具有最小权限范围的独立Linear API令牌。如果卸载或停止使用此技能,请撤销该令牌。
- 优先使用环境变量: 在shell中设置LINEARAPIKEY,而不是运行setup——这样不会创建明文文件。
- 审计代码: 首次使用前,查看src/linear_todos/api.py以验证HTTP目标地址。
- 在隔离环境中运行初始设置: 如果不确定,请在容器/虚拟机中首次运行此技能以检查其行为。
定时任务(可选)
cron-jobs.txt文件包含示例的每日摘要cron条目。它不会自动安装它们。添加cron任务需要手动操作:
bash
首先查看示例:
cat cron-jobs.txt
如果您想使用它们,请编辑您的crontab:
crontab -e
推荐的替代方案: 使用OpenClaw内置的cron替代系统crontab:
bash
openclaw cron add --name morning-digest --schedule 0 8 * \
--payload linear-todos digest --session-target isolated
一个基于Linear构建的强大待办事项管理系统,具有智能日期解析、优先级和完整的CLI工作流程。
快速开始
bash
设置(运行一次)
uv run python main.py setup
创建待办事项
uv run python main.py create 给妈妈打电话 --when day
uv run python main.py create 缴税 --date 2025-04-15
uv run python main.py create 审查PR --priority high --when week
自然语言日期
uv run python main.py create 会议准备 --date tomorrow
uv run python main.py create 周报 --date next Monday
uv run python main.py create 看牙医 --date in 3 days
管理待办事项
uv run python main.py list
uv run python main.py done ABC-123
uv run python main.py snooze ABC-123 next week
每日回顾
uv run python main.py review
设置
1. 获取API密钥
从linear.app/settings/api获取您的API密钥。建议: 为此技能创建一个具有最小权限范围的专用API密钥。
2. 运行设置
bash
uv run python main.py setup
此交互式向导将:
- - 验证您的API密钥
- 列出您的Linear团队
- 让您选择待办事项团队
- 配置初始状态和完成状态
- 将设置保存到~/.config/linear-todos/config.json(明文JSON)
3. 手动配置(可选)
您可以使用环境变量,而不是运行设置:
bash
export LINEARAPIKEY=linapi...
export LINEARTEAMID=your-team-id
export LINEARSTATEID=your-todo-state-id
export LINEARDONESTATE_ID=your-done-state-id
或者创建~/.config/linear-todos/config.json:
json
{
apiKey: linapi...,
teamId: team-uuid,
stateId: todo-state-uuid,
doneStateId: done-state-uuid,
timezone: America/New_York
}
命令
create
创建新的待办事项,可设置时间、优先级和描述。
bash
uv run python main.py create 标题 [选项]
选项:
--when day|week|month 相对截止日期
--date DATE 具体截止日期(支持自然语言)
--priority LEVEL urgent, high, normal, low, none
--desc 描述 添加描述
自然日期示例:
bash
uv run python main.py create 任务 --date tomorrow
uv run python main.py create 任务 --date Friday
uv run python main.py create 任务 --date next Monday
uv run python main.py create 任务 --date in 3 days
uv run python main.py create 任务 --date in 2 weeks
uv run python main.py create 任务 --date 2025-04-15
完整示例:
bash
今天结束前截止
uv run python main.py create 给妈妈打电话 --when day
7天内截止
uv run python main.py create 提交报告 --when week
具体日期,高优先级
uv run python main.py create 发布功能 --date 2025-03-15 --priority high
自然语言日期,带描述
uv run python main.py create 团队会议准备 --date next Monday --desc 准备幻灯片
紧急优先级,明天截止
uv run python main.py create 修复生产错误 --priority urgent --date tomorrow
list
列出所有待办事项。
bash
uv run python main.py list [选项]
选项:
--all 包含已完成的待办事项
--json 以JSON格式输出
done
将待办事项标记为已完成。
bash
uv run python main.py done ISSUE_ID
示例
uv run python main.py done TODO-123
uv run python main.py done ABC-456
snooze
将待办事项重新安排到以后的日期。
bash
uv run python main.py snooze ISSUE_ID [when]
示例
uv run python main.py snooze TODO-123 tomorrow
uv run python main.py snooze TODO-123 next Friday
uv run python main.py snooze TODO-123 in 1 week
review
每日回顾命令,按紧急程度组织待办事项。