From ark-skills
Agent-driven task creation and management via tasknotes MCP or direct markdown write
How this skill is triggered — by the user, by Claude, or both
Slash command
/ark-skills:ark-tasknotesThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Create and manage TaskNote tickets automatically during development workflows. Tasks sync to Linear via linear-updater.
Create and manage TaskNote tickets automatically during development workflows. Tasks sync to Linear via linear-updater.
tasknotes_health_check{vault_path}/TaskNotes/meta/{task_prefix}counter for next available ID| Mode | Trigger | Description |
|---|---|---|
| Create | /ark-tasknotes or /ark-tasknotes create | Create and manage tasks (default) |
| Status | /ark-tasknotes status | Task overview and triage recommendations |
| Trigger | Task Type | Priority |
|---|---|---|
| Bug discovered during code review | Bug | Based on severity |
| Feature completed, needs verification | Story | medium |
| Tech debt identified during maintenance | Task | low-medium |
| Incident debugged, root cause found | Bug | Based on impact |
| Research finding needs follow-up | Story | medium |
Before creating, search for existing tasks on the same topic:
If MCP available:
tasknotes_query_tasks({
conjunction: "and",
children: [{
type: "condition",
id: "1",
property: "status",
operator: "is_not",
value: "done"
}],
sortKey: "due",
sortDirection: "asc"
})
Review results. If a matching task exists, update it instead of creating a duplicate.
If MCP unavailable:
grep -rl "{keyword}" {vault_path}/TaskNotes/Tasks/ --include="*.md" | head -5
COUNTER=$(cat {vault_path}/TaskNotes/meta/{task_prefix}counter)
TASK_ID="{task_prefix}$(printf '%03d' $COUNTER)"
echo "Next task ID: $TASK_ID"
Option A: MCP + post-edit (preferred when Obsidian is running)
tasknotes_create_task({
title: "{task title}",
status: "backlog",
priority: "{low|medium|high|urgent}",
tags: ["{task_type}"],
projects: ["{project_name}"],
details: "{description with context}"
})
task-id: "{TASK_ID}"
task-type: "{epic|story|bug|task}"
work-type: "{development|research|deployment|docs|infrastructure}"
component: "{module_name}"
urgency: "{blocking|high|normal|low}"
summary: "<=200 char description"
Option B: Direct markdown write (fallback when Obsidian is not running)
Determine the subdirectory from task type:
TaskNotes/Tasks/Epic/TaskNotes/Tasks/Story/TaskNotes/Tasks/Bug/TaskNotes/Tasks/Task/Write the file {TASK_ID}-{slug}.md:
---
title: "{task title}"
tags:
- task
- {task_type}
task-id: "{TASK_ID}"
task-type: "{epic|story|bug|task}"
status: backlog
priority: "{low|medium|high|critical}"
project: "{project_name}"
work-type: "{development|research|deployment|docs}"
component: "{module_name}"
urgency: "{blocking|high|normal|low}"
created: "{today}"
summary: "<=200 char description"
---
# {task title}
## Description
{detailed description}
## Related
- [[related-task-or-page]]
echo $((COUNTER + 1)) > {vault_path}/TaskNotes/meta/{task_prefix}counter
Tell the user: "Created {task_type} {TASK_ID}: {title}"
cd {vault_path}
git add TaskNotes/
git commit -m "task: create {TASK_ID} — {title}"
git push
TaskNotes/meta/{task_prefix}counter exists. If missing, alert user that the vault may be misconfigured.Display a task overview with opinionated triage recommendations. Read-only — never creates, updates, or closes tasks.
Read the project's CLAUDE.md to find: task prefix, vault path, TaskNotes path (same as Create Mode).
If MCP available (preferred):
tasknotes_health_check to verify MCP is runningtasknotes_get_stats for aggregate counts by status and prioritytasknotes_query_tasks({
conjunction: "and",
children: [{
type: "condition",
id: "1",
property: "status",
operator: "is_not",
value: "done"
}],
sortKey: "priority",
sortDirection: "desc"
})
tasknotes_query_tasks({
conjunction: "and",
children: [{
type: "condition",
id: "1",
property: "status",
operator: "is",
value: "done"
}],
sortKey: "updated",
sortDirection: "desc"
})
Take only the 5 most recent from the results.
If MCP unavailable (fallback):
{vault_path}/TaskNotes/Tasks/**/*.md files{vault_path}/TaskNotes/Archive/**/*.md (sort by mtime, limit 5)For each open task, extract these fields from frontmatter:
task-id, title, status, priority, urgency, created, last-updated, blockedBy, depends-on, component, work-type, session
From the raw data, compute:
last-updated (or created if never updated) for in-progress tasks. Flag if > 3 days.blockedBy references another open tasktask or bug and priority medium or lowerPrint the report using this format:
TaskNotes Status: {project_name} ({task_prefix})
Overview
backlog: N | todo: N | in-progress: N | done: N
Total open: N | Completed this week: N | Created this week: N
Active Work (in-progress)
{task-id} {title} [{priority}] {N}d active
...
Needs Attention
{task-id} Stale {N}d -- no update since {date} [{priority}]
{task-id} Blocked by {blocker-id} [{priority}]
...
Up Next (todo, by priority)
{task-id} {title} [{priority}, {urgency}]
...
Recently Completed (last 7d)
{task-id} {title} -- done {date}
...
Recommendation
1. {action} {task-id} ({reasoning})
2. {action} {task-id} ({reasoning})
3. Defer {task-id} ({reasoning})
Section rules:
Generate the Recommendation section using these priorities in order:
/ark-tasknotes to create your first task, or /ark-health to check vault configuration."| Tool | Purpose | Key Parameters |
|---|---|---|
tasknotes_health_check | Verify MCP is running | none |
tasknotes_create_task | Create task | title (req), status, priority, tags, projects, details |
tasknotes_update_task | Update task | task file path, properties to update |
tasknotes_query_tasks | Search tasks | conjunction, children (filter conditions), sortKey |
tasknotes_get_task | Get by file path | file path (NOT task-id) |
tasknotes_list_tasks | List with pagination | page, limit |
tasknotes_toggle_status | Cycle status | task file path |
tasknotes_get_stats | Task statistics | none |
Machine-readable subcontract consumed by /ark-context-warmup. Spec: docs/superpowers/specs/2026-04-12-ark-context-warmup-design.md. Calling convention: docs/superpowers/plans/2026-04-12-ark-context-warmup-implementation.md D6.
warmup_contract:
version: 1
commands:
- id: status-and-search
shell: 'python3 "$ARK_SKILLS_ROOT/skills/ark-tasknotes/scripts/warmup_search.py" --tasknotes {{tasknotes_path}} --prefix {{task_prefix}} --task-normalized {{task_normalized}} --task-summary {{task_summary}} --scenario {{scenario}} --json'
inputs:
tasknotes_path:
from: env
env_var: WARMUP_TASKNOTES_PATH
required: true
task_prefix:
from: env
env_var: WARMUP_TASK_PREFIX
required: true
task_normalized:
from: env
env_var: WARMUP_TASK_NORMALIZED
required: true
task_summary:
from: env
env_var: WARMUP_TASK_SUMMARY
required: true
scenario:
from: env
env_var: WARMUP_SCENARIO
required: true
output:
format: json
extract:
matches: '$.matches'
status_summary: '$.status_summary'
extracted_component: '$.extracted_component'
required_fields: [matches, status_summary]
Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub helloworldsungin/ark-skills --plugin ark-skills