Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

Todozi - Your Ai Task Manager

v1.0.0

Todozi Eisenhower matrix API client + LangChain tools. Create matrices, tasks, goals, notes; list/search/update; bulk operations; webhooks. Categories: do, done, dream, delegate, defer, dont.

0· 1.9k·2 current·2 all-time
Security Scan
VirusTotalVirusTotal
Suspicious
View report →
OpenClawOpenClaw
Suspicious
medium confidence
Purpose & Capability
The code and SKILL.md implement a Todozi API client and LangChain tools consistent with the description (create/list/update tasks, matrices, webhooks). However the registry metadata declares no required env vars or primary credential even though both the README and code expect TODOZI_API_KEY (and optionally TODOZI_BASE). Also the code imports substantial libraries (langchain, langgraph, httpx) that aren't declared in metadata.
Instruction Scope
Runtime instructions stay within the stated purpose: calling the Todozi API, listing/creating tasks, and exposing LangChain tools. They do include flows that register an API key and create webhooks (which will send data to arbitrary webhook URLs you supply). There is no instruction to read unrelated system files or hidden env vars, but webhook registration can cause the service to POST user data to external endpoints you configure.
Install Mechanism
There is no install spec (instruction-only skill with a bundled Python file). That lowers installer risk, but the code depends on third-party Python packages (httpx, langchain, langgraph) with no declared dependency list or install instructions in the registry. This mismatch may cause unexpected runtime failures or lead integrators to install dependencies from unknown sources manually.
!
Credentials
The skill requires an API key (TODOZI_API_KEY) and optionally TODOZI_BASE, but the registry lists no required environment variables or primary credential. Requesting/providing an API key is proportionate to the task, but the omission from metadata is an incoherence that could mislead users about what secrets the skill needs. Additionally, the register/webhook endpoints can yield an API key and cause the service to send data to external URLs — this should be considered sensitive.
Persistence & Privilege
always:false and default invocation settings mean the skill is not forced into every agent run. The skill exposes LangChain tools that allow the agent to act on your Todozi data (create/update/delete). This is expected for a task-manager integration, but it increases the impact if the skill is misused, so be cautious when granting autonomous invocation.
What to consider before installing
This skill's code and docs match the stated purpose (a Todozi API client and LangChain tools), but the registry metadata is incomplete: it doesn't declare the TODOZI_API_KEY (and dependency list) that the SKILL.md and code expect. Before installing, verify the source/trustworthiness of todozi.com and the skill author. Do not supply real API keys unless you trust the service; consider creating a limited/test API key. Be careful when registering webhooks — any webhook URL you provide will receive event payloads (potentially exposing task data). Ask the publisher to update the registry metadata to list required env vars (TODOZI_API_KEY, TODOZI_BASE optional) and Python dependencies (e.g., httpx, langchain, langgraph). If you proceed, run the skill in a restricted environment or review the full code for any additional network calls and audit webhook targets.

Like a lobster shell, security has layers — review code before you run it.

ai collaborationvk977ene8bqdg8wtgvtq0vb0yxn80478hcross platformvk977ene8bqdg8wtgvtq0vb0yxn80478hgoalsvk977ene8bqdg8wtgvtq0vb0yxn80478hlatestvk977ene8bqdg8wtgvtq0vb0yxn80478htasksvk977ene8bqdg8wtgvtq0vb0yxn80478htodozi.comvk977ene8bqdg8wtgvtq0vb0yxn80478h
1.9kdownloads
0stars
1versions
Updated 4h ago
v1.0.0
MIT-0

Todozi

Quick Start

As SDK:

from skills.todozi.scripts.todozi import TodoziClient

client = TodoziClient(api_key="your_key")
matrices = await client.list_matrices()
task = await client.create_task("Build feature", priority="high")
await client.complete_item(task.id)

As LangChain Tools:

from skills.todozi.scripts.todozi import TODOZI_TOOLS
# Add to agent tools list

SDK Overview

ClassPurpose
TodoziClientAsync API client
TodoziTaskTask dataclass
TodoziMatrixMatrix dataclass
TodoziStatsStats dataclass

Environment

export TODOZI_API_KEY=your_key
export TODOZI_BASE=https://todozi.com/api  # optional, default provided

Client Methods

Matrices

# List all matrices
matrices = await client.list_matrices()

# Create matrix
matrix = await client.create_matrix("Work", category="do")

# Get matrix
matrix = await client.get_matrix("matrix_id")

# Delete matrix
await client.delete_matrix("matrix_id")

Tasks / Goals / Notes

# Create task
task = await client.create_task(
    title="Review PR",
    priority="high",
    due_date="2026-02-01",
    description="Check the new feature",
    tags=["pr", "review"],
)

# Create goal
goal = await client.create_goal("Ship v2", priority="high")

# Create note
note = await client.create_note("Remember to call Mom")

# Get item
item = await client.get_item("item_id")

# Update item
updated = await client.update_item("item_id", {"title": "New title", "priority": "low"})

# Complete item
await client.complete_item("item_id")

# Delete item
await client.delete_item("item_id")

Lists

# List tasks (with filters)
tasks = await client.list_tasks(status="todo", priority="high")

# List goals
goals = await client.list_goals()

# List notes
notes = await client.list_notes()

# List everything
all_items = await client.list_all()

Search

Searches only: title, description, tags (NOT content)

results = await client.search(
    query="pr",
    type_="task",          # task, goal, or note
    status="pending",
    priority="high",
    category="do",
    tags=["review"],
    limit=10,
)

Bulk Operations

# Update multiple
await client.bulk_update([
    {"id": "id1", "title": "Updated"},
    {"id": "id2", "priority": "low"},
])

# Complete multiple
await client.bulk_complete(["id1", "id2"])

# Delete multiple
await client.bulk_delete(["id1", "id2"])

Webhooks

# Create webhook
webhook = await client.create_webhook(
    url="https://yoururl.com/todozi",
    events=["item.created", "item.completed"],
)

# List webhooks
webhooks = await client.list_webhooks()

# Update webhook
await client.update_webhook(webhook_id, url, ["*"])

# Delete webhook
await client.delete_webhook(webhook_id)

System

# Stats
stats = await client.get_stats()

# Health check
health = await client.health_check()

# Validate API key
valid = await client.validate_api_key()

# Register (get API key)
keys = await client.register(webhook="https://url.com")

LangChain Tools

The skill provides @tool decorated functions for agent integration:

from skills.todozi.scripts.todozi import TODOZI_TOOLS

# Available tools:
# - todozi_create_task(title, priority, due_date, description, thread_id, tags)
# - todozi_list_tasks(status, priority, thread_id, limit)
# - todozi_complete_task(task_id)
# - todozi_get_stats()
# - todozi_search(query, type_, status, priority, limit)
# - todozi_list_matrices()

Categories

CategoryDescription
doDo now (urgent + important)
delegateDelegate (urgent + not important)
deferDefer (not urgent + important)
doneCompleted items
dreamGoals/dreams (not urgent + not important)
dontDon't do (neither)

Common Patterns

Auto-create default matrix:

task = await client.create_task("My task")  # Creates "Default" matrix if needed

Get stats with completion rate:

stats = await client.get_stats()
rate = stats.completed_tasks / stats.total_tasks * 100 if stats.total_tasks > 0 else 0

Search with multiple filters:

results = await client.search("feature", type_="task", status="pending", priority="high")

Complete multiple tasks:

tasks = await client.list_tasks(status="todo")
ids = [t.id for t in tasks[:5]]
await client.bulk_complete(ids)

Comments

Loading comments...