teambition-worklog

根据 Git 提交记录 + Teambition 任务数据,AI 推断并填写 Teambition 工时。当用户说「填工时」「登记工时」「填今天的工时」时使用本 skill。

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "teambition-worklog" with this command: npx skills add kenee/teambition-worklog

Teambition 工时自动填写 Skill

何时使用

用户说「填工时」「登记工时」「填今天的工时」「补工时」「修改工时」或类似意图时使用。

前置条件

  1. Teambition Cookie 已配置到 ~/.workbuddy/.env
    • TEAMBITION_SESSIONID
    • TEAMBITION_SESSIONID_SIG(可选)
    • TB_ACCESS_TOKEN
  2. 工时应用已在企业安装
  3. 可选用户配置:
    • ORG_IDTEAMBITION_ORG_ID
    • USER_IDTEAMBITION_USER_ID

获取方式:登录 teambition.com → F12 → Application → Cookies → 复制对应值

重要:API 返回结构

所有工时相关 API 返回的统一结构:

{
  "ok": true,
  "message": "操作成功",
  "payload": [...]
}

工时记录在 payload 字段中,不是直接返回数组。批量任务查询(tasks-bulk)同理。

重要:任务数据字段

字段说明注意
_idMongoDB ObjectIdAPI 交互用的唯一标识
uniqueId任务编号(整数)前端显示的 #2429
content任务标题不是 name(name 始终为空)
isDone是否完成boolean
dueDate截止日期ISO 8601 格式
project所属项目name_id
project.uniqueIdPrefix项目编号前缀MATRIXECX
accomplished实际完成时间ISO 8601 格式,仅已完成任务有值

工作流程(按顺序执行)

Step 0:自动识别当前用户

~/.workbuddy/.env 或环境变量读取 USER_ID(未配置则使用默认值)。

Step 1:获取当天 Git 提交记录(标准化 JSON)

SKILL_DIR="/Users/ken/.workbuddy/skills/teambition-worklog"

# 输出结构化 JSON(推荐)
bash "$SKILL_DIR/scripts/analyze-git-commits.sh" --json /path/to/repo 2026-04-17

# 兼容文本输出
bash "$SKILL_DIR/scripts/analyze-git-commits.sh" /path/to/repo 2026-04-17

JSON 字段包括:commit_countcommits[]directories[],可直接作为 AI 匹配输入。

Step 2:拉取 Teambition 任务候选(支持分页 + 批量详情)

SKILL_DIR="/Users/ken/.workbuddy/skills/teambition-worklog"

# 项目列表(分页)
bash "$SKILL_DIR/scripts/teambition-api.sh" projects [page_token] [page_size]

# 任务列表(分页)
bash "$SKILL_DIR/scripts/teambition-api.sh" tasks <project_id> [page_token] [page_size]

# 按任务编号搜索(支持逗号分隔多个)
bash "$SKILL_DIR/scripts/teambition-api.sh" search-tasks <project_id> <unique_id|id1,id2,...>

# 任务详情批量查询
bash "$SKILL_DIR/scripts/teambition-api.sh" tasks-bulk "task_id1,task_id2"

# 按项目 + 完成时间范围拉取已完成任务(自动分页遍历)
bash "$SKILL_DIR/scripts/teambition-api.sh" project-done-tasks <project_id> <start_date> <end_date> [--json] [--page-size <n>]

搜索任务建议:优先使用 search-tasks 按编号搜索,比遍历全量任务快得多。

project-done-tasks 使用场景

  • 生成发版日志 / 迭代总结
  • 统计某段时间内团队完成的任务量
  • 按完成日期筛选(基于 accomplished 字段)
  • 返回字段:id, uniqueId, content, accomplished, executor, creator, project, dueDate

Step 2.5:我的任务快捷列表(跨项目查询)

通过 /my/api/tasks/query 端点,使用 TQL 查询跨项目的任务快捷视图:

SKILL_DIR="/Users/ken/.workbuddy/skills/teambition-worklog"

# 我创建的任务(默认只返回未完成)
bash "$SKILL_DIR/scripts/teambition-api.sh" my-tasks created

# 我指派给他人的任务
bash "$SKILL_DIR/scripts/teambition-api.sh" my-tasks assigned

# 我参与的任务
bash "$SKILL_DIR/scripts/teambition-api.sh" my-tasks involved

# 选项
bash "$SKILL_DIR/scripts/teambition-api.sh" my-tasks created --all     # 包含已完成
bash "$SKILL_DIR/scripts/teambition-api.sh" my-tasks created --json    # 原始 JSON 输出
bash "$SKILL_DIR/scripts/teambition-api.sh" my-tasks created --json 20 # 指定每页数量

my-tasks 返回结构(不同于工时 API):

{
  "code": 200,
  "data": {
    "totalSize": 215,
    "nextPageToken": "...",
    "result": [
      {
        "id": "task_id",
        "content": "任务标题",
        "uniqueId": 2433,
        "isDone": false,
        "projectId": "project_id",
        "projectInfo": {"name": "矩阵", "uniqueIdPrefix": "MATRIX"},
        "executorUserInfo": {"name": "执行人"},
        "priority": 0,
        "dueDate": "2026-05-11T10:00:00Z"
      }
    ]
  }
}

使用场景:快速定位用户相关的任务,获取 task_id 后可直接用于工时填写。

Step 2.6:查看活跃任务(项目动态 / 进行中任务)

查看今日或近期有更新的任务,帮助跟踪进度:

SKILL_DIR="/Users/ken/.workbuddy/skills/teambition-worklog"

# 查看我创建的进行中任务(跨项目,默认只返回未完成)
bash "$SKILL_DIR/scripts/teambition-api.sh" my-tasks created --json

# 查看矩阵项目今日活跃任务(按 updated 字段过滤)
# 需要先拉取任务列表,再按日期筛选(见下方 Python 脚本)

# 查看矩阵项目所有任务(分页,支持 nextPageToken 翻页)
bash "$SKILL_DIR/scripts/teambition-api.sh" tasks <project_id> [page_token] [page_size]

Python 筛选今日活跃任务的示例脚本

import json, sys
from datetime import datetime

data = json.load(sys.stdin)
tasks = data.get('result', [])  # 注意:tasks API 返回结构是 {'result': [...]}, 不是 {'data':{'result':[...]}}
today = '2026-05-06'  # 可改为具体日期如 '2026-05-01'

updated_today = [t for t in tasks if t.get('updated', '')[:10] == today]
recent = [t for t in tasks if t.get('updated', '')[:10] >= '2026-05-01']

for t in sorted(updated_today, key=lambda x: x.get('updated', ''), reverse=True):
    uid = t.get('uniqueId', 'N/A')
    content = t.get('content', '')[:60]
    is_done = t.get('isDone', False)
    due = t.get('dueDate', '')[:10] if t.get('dueDate') else '-'
    exec_n = t.get('executor', {}).get('name', '-') if t.get('executor') else '-'
    upd = t.get('updated', '')[11:16]
    stage = t.get('stage', {}).get('name', '-') if t.get('stage') else '-'
    status = '[完成]' if is_done else '[进行中]'
    print(f'#{uid} {status} | {upd} | 截止:{due} | 执行:{exec_n} | 阶段:{stage}')
    print(f'  {content}')

注意

  • tasks API 返回结构为 {"result": [...], "nextPageToken": "...", "totalSize": N}不是 {"data": {"result": [...]}}
  • 分页需将 nextPageToken 作为第二个参数传入脚本
  • updated 字段为 ISO 8601 格式(例:2026-05-06T14:34:00.000Z),取前 10 位即为日期
  • 需要遍历全量任务才能找到某日更新的条目(无服务端按 updated 过滤的 API)

常用项目 ID(见 MEMORY.md):

项目名Project ID
矩阵607e7dcda0d8c08864d129f6
ECShopX4.0619b81caccc9d1bf69e6bb0e
DigiOS-OMS60b71b5d92c96b6938f8636e
标准产品-OMS SaaS607e786ff477e28a891d33f5

Step 3:AI 语义匹配并生成工时建议

输入:

  • Git 结构化提交(Step 1)
  • Teambition 任务候选(Step 2)

输出建议格式:

任务名 | 工时 | 依据

Step 4:写入前查重(按日期查询已填工时)

# 默认查询今天
bash "$SKILL_DIR/scripts/teambition-api.sh" list-worktime

# 指定日期/区间
bash "$SKILL_DIR/scripts/teambition-api.sh" list-worktime 2026-04-17 2026-04-17

通过返回 payload_objectId(任务ID)+ date 判断是否重复写入。

Step 5:新增 / 修改 / 删除工时

# 新增
bash "$SKILL_DIR/scripts/teambition-api.sh" add-worktime <task_id> <hours> [date] [note]

# 查询单条工时
bash "$SKILL_DIR/scripts/teambition-api.sh" worktime-item <worktime_id>

# 修改(参数 '-' 表示沿用原值)
bash "$SKILL_DIR/scripts/teambition-api.sh" update-worktime <worktime_id> [hours|-] [date|-] [note|-]

# 删除
bash "$SKILL_DIR/scripts/teambition-api.sh" delete-worktime <worktime_id>

# 批量新增
bash "$SKILL_DIR/scripts/teambition-api.sh" batch-worktime worklog.json

Step 6:查看工时汇总

# 查看今天的工时汇总(自动关联任务名和项目名)
bash "$SKILL_DIR/scripts/teambition-api.sh" worktime-summary

# 指定日期范围
bash "$SKILL_DIR/scripts/teambition-api.sh" worktime-summary 2026-04-01 2026-04-30

返回 JSON 包含 total_hoursrecord_countrecords[](每条含 uid、project、content、hours、desc)。

API 端点参考

功能端点
项目列表(分页)GET /api/v3/projects?_organizationId={orgId}&pageSize=&pageToken=
任务列表(分页)GET /api/v2/projects/{id}/tasks?...&pageSize=&pageToken=
我的任务快捷列表POST /my/api/tasks/query(需 x-tenant-id 头)
任务详情批量POST /api/tasks/bulk
按日期查询工时POST /api/work-time/list/dates-users
工时详情GET /api/work-time/{worktimeId}
新增工时POST /api/work-time/batch
修改工时PUT /api/work-time/{worktimeId}
删除工时DELETE /api/work-time/{worktimeId}
任务工时概览GET apps.teambition.com/work-time-server/variables/worktime
按完成时间筛选任务GET /api/v2/projects/{id}/tasks?filter=...(本地遍历 + accomplished 过滤)

环境变量注意事项

  • 脚本通过 export 导出变量,Python 子进程可以正确读取
  • 但从外部 Python subprocess 调用时,需要确保环境变量已传递:
    # 方法1:source .env 后运行
    env = dict(os.environ)
    # 方法2:显式 export
    

错误处理

  • Cookie 无效或过期:提示用户重新复制 Cookie
  • 任务 ID 不存在:提示用户更换任务或跳过
  • 网络请求失败:curl 有 30 秒超时,非 2xx 状态码输出警告
  • 无当天 Git 提交:提示用户可手动填写或改查指定日期

依赖工具

  • bash(脚本执行)
  • git(提交记录)
  • curl(Teambition API 调用,超时 30s)
  • python3(JSON 处理)

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

崖州区企业服务

崖州区企业服务技能,用于查询企业基本情况、推荐针对性优惠政策、监管企业安全生产、结合崖州区产业发展情况提供企业发展建议等。支持同时为多家企业生成服务报告。触发词:崖州企业、企业服务、优惠政策、安全生产、企业查询、政策推荐、企业监管、发展建议、产业分析。

Registry SourceRecently Updated
General

REDCap CRF Generator

开发者:邹和建、刘从进 REDCap 数据字典生成器 - 将 Word 文档(CRF/方案)转换为 CSV 格式的 REDCap 数据字典。 适用场景: - 用户上传临床试验 CRF/方案 Word 文档,要求生成数据字典 - 将问卷/调查表转换为 REDCap 可导入的 CSV 格式 功能特点: - 智能识别表...

Registry SourceRecently Updated
General

EcoCompute — LLM Energy Efficiency Advisor

Evidence-first, stateless consulting skill for LLM inference energy optimization using measured benchmark priors and anti-pattern detection.

Registry SourceRecently Updated
General

ccf-events

查询 CCF 近期活动、会议和通知。当用户询问 CCF 近期活动、会议通知、即将举办的研讨会、一个月内将举办的会议、刚刚结束的会议等信息时使用此 skill。

Registry SourceRecently Updated