manage-taskboard
GitHub管理任务板工作流,使用taskctl处理任务、状态同步及评论。明确术语定义与CLI调用规范,支持断点续传和权限重试,严禁擅自修改未批准任务。
Trigger Scenarios
Install
npx skills add chuspeeism/dashi-taskboard --skill manage-taskboard -g -y
SKILL.md
Frontmatter
{
"name": "manage-taskboard",
"description": "Manage Codex Taskboard \/ e-taskboard work with taskctl. Use for taskboard issue IDs, status sync, comments, or taskctl cloud setup—not for unrelated product docs."
}
Manage Taskboard
Use taskctl for every project, issue, relation, and comment operation. Consume its JSON output. Use the exact issue identifier returned by the taskboard or supplied in the prompt. Never assume, derive, or rewrite an identifier prefix.
Open only the relevant section of references/cli.md when command syntax is needed.
Select the CLI and active service
- Use the exact
taskctlbinary and Taskboard URL supplied by the task or injected runtime. Do not replace them with a global CLI, the default port, or another board. - On macOS, when no binary is injected and the desktop app is installed, use
'/Applications/Codex Taskboard.app/Contents/Resources/bin/taskctl' issue get ID --json. Keep the single quotes because the path contains a space. The packaged wrapper reads the active launcher runtime; do not search the filesystem for another CLI or reconstruct the tokenized URL. - On Linux, when no binary is injected and Codex was started by the desktop app, use
taskctl issue get ID --json. The desktop app adds its packaged wrapper to the managed CodexPATH; do not search the filesystem for another CLI or reconstruct the tokenized URL. - If that exact command reaches a sandbox restriction on the loopback service, retry the same command with the required permission. Do not switch binaries or endpoints.
Terminology: local companion
In this product, companion means the device-local loopback service used for cloud mode (Codex/Git/Skill/MCP, path mapping, Basic Auth proxy). Related names: local companion, loopback companion, CODEX_TASKBOARD_COMPANION_URL, cloud-companion.json, LOCAL_COMPANION_REQUIRED.
When writing Chinese, keep the English word or use 本地 companion / 本地配套服务 / 环回代理. Never translate as 伴侣 or invent 伴侣 API. Ordinary task/comment/attachment HTTP routes (/api/tasks, /api/comments, /api/attachments, …) are the Taskboard HTTP API (or local server API)—not “companion API”.
Core workflow
- For an existing issue, first run
issue getandcomment list. Also runattachment list --task. On the first handoff, omit--afterand read the full results. Keep the separatenextCursorfrom each list. When the same task resumes, runissue getagain, then pass each saved cursor to its matching list with--afterso only new or modified entries are returned. Comment lists include the attachments on returned comments; useattachment list --commentwith its own cursor when a known comment attachment list can grow. Read the description and latest comments before deciding whether to start. Treat comments as current requirements, including returned work. If they say to wait, not execute, or not start now, stop and report without changing the status. - Treat
backlogas not approved for execution. Unless the user explicitly authorizes that issue, do not claim it, move it to another status, or perform task work; its assignee alone is not authorization. If work may start, claim it before reading code, downloading attachments, analyzing the implementation, or doing any other task work. Move a claimabletodotoin_progresswith its currentversion; do not continue until the move succeeds. If it is alreadyin_progress, continue only when it is bound to the current conversation. Never move an issue claimed by another conversation. - If the move conflicts because the
versionis stale, runissue getandcomment listagain. Retry once with the latestversiononly when the issue is still a claimabletodo, is not bound to another conversation, is not archived, and its description and latest comments are unchanged. If it was claimed, its status or requirements changed, it is archived, the service is unavailable, a permanent API error occurs, or the retry fails, stop and report. Never loop or take over another agent's claim. - For a new durable requirement, run
context current. Treat its project as a workspace match only whenproject.workspacePathis the current directory or one of its ancestors. An unmatchedlocalproject is the documented fallback, not proof that the requirement belongs in the global project. If the user named a target project or the working directory identifies one, runproject list, select that exact project by id or name, and stop to ask if the result is ambiguous. Search existing project issues before creating one in that confirmed project, then pass its explicit id toissue create. Update a matching issue instead of creating a duplicate. Use the fallback only when the user explicitly wants the global project. Do not track trivial requests. - Execute only the requested work in the issue's branch or worktree when one is bound.
- Verify the requested operation path. Add a comment with the changes, verification result, outcome, and remaining risks. Read the issue again, then move it to
in_reviewwith its currentversion. - Move an issue to
doneonly after the user explicitly accepts it or asks to complete it. Useblockedwhen work cannot continue andcanceledwhen it will not continue.
Other operations
- Run
taskctl project readme get [PROJECT_ID]to inspect project architecture, constraints, and conventions before planning or executing complex tasks. - Keep the project README focused on root overview and conventions; store detailed multi-page documentation in the local repository's
docs/folder. - Preserve existing issue scope when adding requirements or acceptance details.
- Add only relations that the work requires. Use parent for contained work, blocks or blocked_by for dependencies, and related for close association.
- Let
taskctlreadCODEX_THREAD_IDfor controller attribution. Outside Codex, pass the exact conversation ID with--thread-id. This value alone is not a complete task binding. - Any issue that the current conversation claims or continues must store a complete
threadBinding:threadId,codexProjectId,codexProjectKind,codexHostId, andworkspacePath. For an unbound local issue launched with injected Taskboard context, use the currentCODEX_THREAD_ID, the injected project id and workspace path,localproject kind, andlocalhost id. Pass all five explicit--binding-*options on the claim and every laterissue movethat retains ownership. If any identity field is unavailable, stop before moving the issue toin_progress; never create a legacy binding containing onlythreadId. - When an issue already has a complete
threadBinding, preserve its exact five saved values on every status write. Do not rebuild or replace it from the current context, and never take over a binding owned by another conversation. - Use the latest returned
versionwith--if-versionfor concurrent updates. On conflict, read the issue again and reconcile before retrying. - Download and inspect an inline
image only when it is needed to understand the requirement.
Version History
-
5c96d1a
Current 2026-08-27 09:44
新增 Ubuntu x64 桌面打包支持;优化 taskctl 增量工作流;强制要求完整的线程绑定以修复 #218。
-
c1ec1b8
2026-08-19 12:00
新增 macOS 打包版 taskctl 命令的精确引用与引号处理;明确项目选择逻辑。
-
382777f
2026-08-12 21:08
新增本地 companion 术语澄清,明确其指代设备本地回环服务而非聊天角色;增加规则禁止在未获明确授权时执行 backlog 中的任务。
-
43fbfb6
2026-08-12 09:12
引入严格的启动前状态同步机制:要求在执行任何工作前必须先读取当前需求和评论,并确保成功将状态转换为in_progress,以防止并发冲突和误操作。
- 677b544 2026-08-08 07:59


