← Files Done BearARCHIVED FILE
plugin.json
5.67 KB · Nov 3, 2026 · 19:06 UTC
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "donebear-openai",
"version": "1.0.5",
"description": "Local-first GTD task manager",
"author": {
"name": "MATTHEW J BLODE"
},
"extensions": {
"com.openai": {
"interface": {
"capabilities": [],
"category": "Productivity",
"developerName": "MATTHEW J BLODE",
"displayName": "Done Bear",
"longDescription": "Local-first GTD task manager",
"privacyPolicyURL": "https://donebear.com/privacy",
"shortDescription": "Local-first GTD task manager",
"supportURL": "https://donebear.com/contact",
"termsOfServiceURL": "https://donebear.com/terms",
"websiteURL": "https://donebear.com",
"logo": "./assets/logo.png",
"composerIcon": "./assets/logo.png"
},
"publication": {
"release_notes": "Correct task-completion review expectations and improve MCP review metadata.",
"countries": []
},
"review": {
"test_cases": {
"positive": [
{
"description": "List today's tasks",
"prompt": "Use Done Bear to list my Today tasks in Australia/Melbourne.",
"tools_triggered": "task_list",
"expected_behavior": "task_list is called (not project_list). Arguments include view: \"today\" and timezone: \"Australia/Melbourne\". structuredContent has tasks (array), count, total, hasMore. Each task may include title (string), view, completed (null while open). Pass if Today is empty so long as the call succeeded with that shape. Do not require a named title or a specific count."
},
{
"description": "Capture an inbox task",
"prompt": "Use Done Bear to add an inbox task titled ChatGPT review oat milk.",
"tools_triggered": "task_add",
"expected_behavior": "task_add is called with title equal to that string (or containing it) and when: \"inbox\". structuredContent has ok: true, title, number (positive int), view. view should be inbox. Do not require a follow-up list call."
},
{
"description": "Complete a known open task. Setup: keep an open task titled QA: ChatGPT complete basil in the synthetic review workspace and restore it before each run.",
"prompt": "Use Done Bear to mark the task titled QA: ChatGPT complete basil as done.",
"tools_triggered": "search or task_list, then task_done",
"expected_behavior": "Resolve the open fixture titled QA: ChatGPT complete basil with search or task_list, then call task_done with its workspace-scoped positive task number encoded as a string. Never pass the title as task. structuredContent has ok: true, action: \"completed\", count >= 1, and tasks (array of { id, number, title }). One title matches QA: ChatGPT complete basil. This case does not depend on Positive 2. If the title is missing, restore the fixture before running the case."
},
{
"description": "Search for a known task. Setup: retain the sample task Download the desktop or iOS app in the synthetic review workspace.",
"prompt": "Use Done Bear to search for Download the desktop or iOS app.",
"tools_triggered": "search",
"expected_behavior": "search is called with query containing Download the desktop. structuredContent has query, tasks (array), count, total, hasMore. Pass if at least one tasks[].title contains Download the desktop. Empty tasks with a successful call means the Meet Done Bear sample was removed: restore it. Do not require assistant wording."
},
{
"description": "List projects in the workspace. Setup: retain the Meet Done Bear project in the synthetic review workspace.",
"prompt": "Use Done Bear to list my projects.",
"tools_triggered": "get_context",
"expected_behavior": "get_context is called. **Not** project_list. **Not** project (that tool writes). structuredContent has projects (array); each item has name (string) and status (string). viewCounts and taskCounts may also be present. Pass if Meet Done Bear is among projects[].name; extra projects are fine. Do not require a particular project count or description prose."
}
],
"negative": [
{
"description": "Out of scope: weather, not tasks. Done Bear must not call a write tool. A read is also a fail: there is no weather tool. The assistant should answer without Done Bear or say the app cannot do that.",
"prompt": "Use Done Bear to tell me tomorrow's weather in Melbourne."
},
{
"description": "Out of scope: data outside the workspace. No Done Bear tool should run. Inbox-the-view is not an email inbox.",
"prompt": "Use Done Bear to read my email inbox."
},
{
"description": "Out of scope: deleting another user's data. No task_archive / task_done with a tasks sweep. The assistant should refuse. Done Bear has no \"other user's workspace\" delete.",
"prompt": "Use Done Bear to delete every task in someone else's workspace."
}
]
},
"demo_recording_url": "https://donebear.com/chatgpt-demo.mp4",
"commerce": false,
"commerce_description": "Done Bear is a freemium task-management service. This plugin manages tasks for free and existing paid accounts. It does not sell products, initiate subscriptions or process payments. Optional subscriptions are purchased on the Done Bear website."
},
"apps": "./.app.json"
}
}
}
SHA-256: fdda93c017476771fc464cba86d54f21893fa4a64fc76731c323e9c0a7c8c7b8