Productivity v0.1.0

Task

Tasker docstore task management via tool-dispatch. Use for task lists, due today/overdue, week planning, add/move/complete, or explicit /task commands.

Installation

openclaw skill add amirbrooks/task

Technical Specification

Route task-related requests to tasker_cmd (raw args only, no leading tasker).

  • For natural language, translate the request into CLI args.
  • For /task ..., pass the args through unchanged.
  • Prefer human-readable output. Avoid --stdout-json/--stdout-ndjson unless explicitly requested.
  • For chat-friendly output (Telegram/WhatsApp), add --format telegram. Use --all only when done/archived are explicitly requested.
  • This is the natural-language profile. For slash-only, use skills/task-slash/.
  • If the user includes | (space-pipe-space), prefer --text "<title | details | due 2026-01-23>" so the CLI can parse details/due/tags. Only split on explicit | to avoid corrupting titles.
  • Do not guess separators like "but" or "—"; only split on explicit |.
  • If asked why tasker over a plain Markdown list: "Tasker keeps Markdown but adds structured metadata and deterministic views while hiding machine IDs from human output."
  • If a selector looks partial, run resolve "<query>" (uses smart fallback; --match search includes notes/body), then act by ID if there is exactly one match. Never show IDs in human output.
  • For notes, prefer note add <selector...> -- <text...> to avoid ambiguity; without --, tasker will attempt to infer the split.

Common mappings:

  • "tasks today" / "overdue" -> tasks --open --format telegram (today + overdue)
  • "what's our week" -> week --days 7 --format telegram
  • "show tasks for Work" -> tasks --project Work --format telegram
  • "show board" -> board --project <name> --format telegram
  • "add today" -> add "<task>" --today [--project <name>] --format telegram
  • "add |
    " -> add --text "<task> | <details>" --format telegram
  • "capture " -> capture "<text>" --format telegram
  • "mark done" -> <code>done "<title>"</code></li> <li>"show config" -> <code>config show</code></li> </ul> </article> </section> </main> <!-- Right / Bottom Sidebar for Metadata --> <aside class="lg:col-span-4 space-y-12 lg:pt-20"> <!-- Related Skills --> <div class="space-y-6 sticky top-24"> <h3 class="text-white/40 text-[10px] font-bold tracking-[0.2em] uppercase"> Related Skills </h3> <div class="grid grid-cols-1 gap-4"> <a href="/pt/skills/0xterrybit/todo" class="block p-5 bg-white/5 hover:bg-white/10 border border-white/5 hover:border-white/20 rounded-xl transition-all group"> <div class="flex justify-between items-center mb-2"> <h4 class="text-gray-200 font-bold group-hover:text-white truncate pr-4">Todo</h4> <span class="text-[10px] text-white/30">v1.1.0</span> </div> <p class="text-[10px] text-gray-500 font-bold uppercase tracking-widest group-hover:text-secondary transition-colors">@0xterrybit</p> </a><a href="/pt/skills/2mawi2/todoist-task-manager" class="block p-5 bg-white/5 hover:bg-white/10 border border-white/5 hover:border-white/20 rounded-xl transition-all group"> <div class="flex justify-between items-center mb-2"> <h4 class="text-gray-200 font-bold group-hover:text-white truncate pr-4">Todoist Task Manager</h4> <span class="text-[10px] text-white/30">v1.0.0</span> </div> <p class="text-[10px] text-gray-500 font-bold uppercase tracking-widest group-hover:text-secondary transition-colors">@2mawi2</p> </a><a href="/pt/skills/adamsardo/codex-sub-agents" class="block p-5 bg-white/5 hover:bg-white/10 border border-white/5 hover:border-white/20 rounded-xl transition-all group"> <div class="flex justify-between items-center mb-2"> <h4 class="text-gray-200 font-bold group-hover:text-white truncate pr-4">OpenAI Codex Sub Agents</h4> <span class="text-[10px] text-white/30">v1.0.0</span> </div> <p class="text-[10px] text-gray-500 font-bold uppercase tracking-widest group-hover:text-secondary transition-colors">@adamsardo</p> </a> </div> <div class="pt-8 mt-8 border-t border-white/5"> <div class="flex items-center gap-3 text-emerald-500 text-xs font-bold uppercase tracking-widest"> <span class="w-2 h-2 bg-emerald-500 rounded-full animate-pulse"></span> Verified Secure </div> </div> </div> </aside> </div> </div> </div> <script> document.addEventListener('DOMContentLoaded', () => { const preBlocks = document.querySelectorAll('article pre'); preBlocks.forEach((pre) => { if (pre.querySelector('.copy-btn')) return; if (!pre.parentElement.classList.contains('code-block-wrapper')) { const wrapper = document.createElement('div'); wrapper.className = 'code-block-wrapper relative'; pre.parentNode.insertBefore(wrapper, pre); wrapper.appendChild(pre); } const button = document.createElement('button'); button.className = 'copy-btn absolute top-3 right-3 px-3 py-1.5 bg-white/10 hover:bg-white/20 text-white text-xs font-bold rounded-lg transition-all border border-white/20 hover:border-white/40'; button.textContent = 'COPY'; button.addEventListener('click', () => { const code = pre.querySelector('code'); const text = code ? code.textContent : pre.textContent; navigator.clipboard.writeText(text).then(() => { button.textContent = 'COPIED!'; button.classList.add('bg-green-500/20', 'border-green-500/40'); setTimeout(() => { button.textContent = 'COPY'; button.classList.remove('bg-green-500/20', 'border-green-500/40'); }, 2000); }); }); pre.parentElement.appendChild(button); }); }); </script> </main> <!-- Footer --> <footer class="relative z-10 border-t border-white/5 bg-black/40 backdrop-blur-xl mt-auto"> <div class="max-w-[1200px] w-full mx-auto px-6 lg:px-12 py-6"> <div class="grid grid-cols-1 md:grid-cols-3 gap-8 items-center"> <!-- Left: Logo & Status --> <div class="flex flex-col gap-4 text-center md:text-left"> <span class="font-black tracking-tighter text-lg text-white/50"> OPENCLAW.<span class="text-primary/50">ARMY</span> 🦞 </span> <div class="flex items-center gap-2 justify-center md:justify-start text-[10px] font-bold text-emerald-500/50 uppercase tracking-widest"> <span class="w-1.5 h-1.5 bg-emerald-500 rounded-full animate-pulse"></span> Shield: Active <span class="text-white/10 mx-2">|</span> Core: v2.4.0 </div> </div> <!-- Center: Links/Copyright --> <div class="flex flex-col gap-2 text-center"> <p class="text-[10px] text-gray-600 font-bold tracking-widest uppercase"> © 2026 CoderGeeta </p> <p class="text-[9px] text-gray-700 font-medium"> Secure. Automate. Dominate. </p> </div> <!-- Right: Social & Support --> <div class="flex gap-4 justify-center md:justify-end"> <div class="flex items-center gap-4"> <a href="https://buymeacoffee.com/codergeeta" target="_blank" rel="noopener noreferrer" class="flex items-center gap-2 px-4 py-2 bg-gradient-to-br from-amber-400 via-orange-500 to-amber-600 border-2 border-amber-300/20 rounded-lg hover:from-amber-300 hover:via-orange-400 hover:to-amber-500 hover:shadow-lg hover:shadow-amber-500/50 transition-all group"> <span class="text-sm group-hover:scale-110 transition-transform">☕</span> <span class="text-xs font-bold uppercase tracking-wider text-white">Me Pague um Café</span> </a> <a href="https://x.com/codergeeta" target="_blank" class="p-2 bg-white/5 rounded-full hover:bg-white/10 text-white/40 hover:text-white transition-all"> <svg class="w-4 h-4" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"> <path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"></path> </svg> </a> </div> </div> </div> </div> </footer> </body></html>