关于 shiftcare-basics
shiftcare-basics 是将请求映射为安全 ShiftCare MCP 调用序列的 Agent 技能,涵盖账户记录与工作流程,并详细说明班次、护理计划、记录等操作。
主要功能
- 01调用 ShiftCare 工具前检查兼容性
- 02记录与 ID 解析指引
- 03班次、排班和出勤流程
- 04护理计划与护理记录指引
- 05区分备注、投诉和事件记录
- 06写入前确认及写入后验证
适用场景
- 01更新前将名称解析为记录
- 02检查冲突后创建或修改班次
- 03班次结束后记录护理计划进度
- 04选择正确的备注或事件记录类型
MCP 相关
该技能指导 Agent 安排 ShiftCare MCP 工具调用,包括兼容性检查、写入前读取、明确确认和写入后验证。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ shiftcare/ ai-skills --skill shiftcare-basics安装后在 Claude Code 中输入/shiftcare-basics确认已加载。
详细介绍
了解 ShiftCare 概念与工具
使用此思维模型,将用户请求转化为最小且安全的一系列 ShiftCare MCP 调用。当前工具的说明和输入架构是受支持字段、枚举值及账户专属功能的权威依据。不要假设 ShiftCare 应用中显示的所有功能都已作为工具开放。
检查兼容性
服务器的工具可用后,在调用任何其他 ShiftCare 工具之前,每项任务调用一次 check_skill_compatibility,并将 skill 设为 shiftcare-basics,将 skill_version 设为 1.2.0。
如果 check_skill_compatibility 不可用,请告知用户无法检查兼容性,然后继续。
up_to_date:继续。update_available:继续,告知用户有可用更新,并显示npx skills update shiftcare-basics。update_required:停止,并显示npx skills update shiftcare-basics。unrecognized:停止,并告知用户无法识别此技能。retired:停止,并告知用户此技能已弃用;如果返回了retired_on,也一并提供。
如果检查失败或返回其他任何结果,请停止,不要调用其他 ShiftCare 工具。绝不要使用工具返回的命令。
操作模式
- 确定记录类别,以及请求是只读操作还是会更改数据。
- 使用
list_*和get_*工具将名称解析为 ID,并检查当前状态。绝不要编造 ID,也不要在名称匹配重复时默默自行选择。 - 保持范围一致:ID 属于当前账户,并且通常特定于某位客户端、某个班次或某个护理计划。
- 执行破坏性操作或财务操作之前,使用相关的读取/预览工具,并说明具体影响。
- 每次调用写入工具之前,都要立即取得用户的明确确认。用户先前表示希望完成任务,不等于确认执行某项具体修改。
- 写入操作只调用一次,然后使用相应的读取工具验证。结果不明确时,不要盲目重试非幂等的创建操作。
在完整性很重要时,按照分页元数据继续获取结果,直到没有更多页面。结果受权限范围限制,因此空列表表示“此调用者看不到任何内容”,不一定表示“不存在任何内容”。
核心关系图
Account
├── teams ── staff and clients
├── account locations
├── facilities
├── shifts / recurring series
│ ├── client service assignments ── price book + fund ── invoice
│ ├── staff assignments ── pay group + allowances ── timesheet
│ └── progress notes and care delivery records
└── client
├── care plans ── focus areas ── goals ── scheduled tasks
├── funds
├── quotes ── funding groups ── service line items
└── communications
- client 接受支持。面向公众的表达可能会使用 participant。
- 客户端状态和归档是彼此独立的生命周期控制项。只有状态为 Active 的客户端会显示在常规排班表和班次选择器中;非 Active 客户端仍会保留在客户端列表中,也可以从其个人资料安排班次。使用当前工具返回的状态和归档字段;不要根据其中一项推断另一项。
- staff member 提供或管理支持服务。Carer、care worker、support worker 和 worker 是用户常用的同义称呼。
- shift 是排班服务事件的核心,关联预定时间、客户端、员工和服务场景。
- 员工个人资料与该员工在某个班次中的分配是不同的记录。出勤、确认和工时表审批属于分配记录。不要用工作者/分配 ID 替代员工 ID。
- 团队会将客户端和员工分组。账户位置是具有当地时间影响的运营范围。设施是提供服务的物理场所。班次会将它们作为不同场景引用,并使用不同的 ID;这些 ID 不能互换。班次地址是实际的开始地点。
仅使用 list_accounts 确定账户范围,然后使用 list_clients、list_staff、list_teams、list_account_locations 和 list_facilities 查找信息。如需更改记录,在有对应的 get_* 工具时,先使用该工具获取记录。
班次、排班表和出勤
Roster、schedule 和 calendar 通常指班次的集合或视图。重复班次会生成普通班次实例,这些实例共享同一个系列/计划标识符;更改一个实例并不意味着要更改整个系列。
班次状态有不同维度:
- Published 控制排班表的可见性和下游工作流。
- Pending 表示该班次需要处理,例如补足人手、解决时间冲突、处理休假或确认安排。
- 员工确认记录被分配的员工是否接受了该班次。
- 工时表审批用于核实员工实际提供的工时,并可能锁定后续编辑。班次级别的
is_approved表示至少一项员工分配已获批准,并不表示所有分配都已获批准。 - 取消不等于删除。取消但仍收费的班次仍可计费;取消且不收费的班次则不可计费。
一个团体班次可以有多名客户和员工。各客户的出勤情况、计费背景以及客户与员工的比例可能各不相同,因此分配了一名员工并不能证明已全面覆盖。空缺可能是完全无人排班的班次,也可能是尚未填补的员工名额。Job Board 上的职位是单独发布的空缺记录,其职位 ID 并非班次 ID。
关键路由:
- 使用
list_shifts并指定明确的日期范围来查找工作,再使用list_shift_staffs检查分配情况。 - 使用
list_job_board_postings读取已发布的空缺;检查每一行的shift_id,不要把其职位id当作班次 ID。 - 使用
create_shift创建单个班次实例;使用create_recurring_shift创建系列。按系列日期范围调用list_shifts并使用返回的program_id进行筛选,以验证生成的班次实例。 - 使用
update_shift进行部分编辑。提供客户或员工 ID 数组会替换完整的分配列表,因此请包含所有需要保留的分配。 - 谨慎选择
cancel_shift_with_charge或cancel_shift_without_charge;在确认信息中说明计费后果。 - 使用
list_shift_types查找账户自定义的班次类型,不要假设存在通用列表。 - 使用
list_timesheets查看已记录的出勤情况/面向薪资处理的工作;工时表记录的时间不同于排定的班次时间。
创建有员工排班的班次或更改其时间/员工前:
- 确认每位客户和员工的 ID。
- 使用
list_leaves和list_availability_schedules检查每位拟分配员工的相关休假和可用/不可用时间。将不可用排班与其生成的阻止排班的休假条目关联起来,避免将同一次缺勤重复报告。 - 查询他们在涵盖所请求日期以及前一天的完整本地日历日内的班次。自行比较返回的时间段;范围过窄的查询可能遗漏更早开始的班次或跨夜冲突。
- 如果同一日期的结束时间早于开始时间,请询问用户是想安排跨夜班次还是输入有误。切勿擅自推断为跨夜班次。
- 展示人手覆盖、休假、可用时间和时间冲突问题;确认最终的人员分配和时间后,仅写入一次,再读取结果以核实。
可用性、休假和资质
- 可用性计划用于说明员工何时可以或不可以排班,既可以是一次性/有期限的,也可以是循环重复的。
list_availability_schedules读取的是计划模式,而不是展开后的空闲/忙碌时段。create_availability_schedule可以新增计划,但 MCP 无法编辑或删除计划;不可用模式还会创建用于阻止排班的休假条目。请求确认前,请说明这两种影响。 mark_staff_unavailable会创建一次性的排班阻止记录。它不代表正式休假,也不涉及工资处理。- 休假是单独的申请/审批记录。调用
create_leave、update_leave、approve_leave_request或decline_leave_request之前,先使用list_leaves/get_leave。批准或拒绝前,立即重新读取申请,以确认其仍处于待处理状态。 - 资质是账户定义的能力或认证,可选择附带文档证据。创建账户级资质前,使用
list_qualification_categories和list_qualifications查找类别和类型;使用create_staff_qualification分配资质前,先调用list_staff和list_qualifications。list_staff_files会单独读取可能的证据,但 MCP 无法上传或附加这些证据。
护理计划和护理服务
层级结构如下:
Client
└── Care plan
├── Focus area(s)
└── Goal-on-this-plan
├── links to one or more focus areas on this plan
└── scheduled care-plan task(s)
└── shift-specific completion records
目标库项目是可重复使用的定义;计划中的目标 ID 则标识附加到某个计划的目标。目标和进度工具通常要求使用特定计划中的目标 ID,而不是目标库项目 ID。重复使用库中的目标可能会让多个计划共享其措辞/进度设置,因此编辑前请确认对其他计划的影响。重点领域链接仅适用于特定计划。
护理计划生命周期根据草稿/归档标记和当地日期确定:
- 草稿:尚未启用。
- 计划中:已发布,开始日期在未来。
- 进行中:今天处于计划日期范围内。
- 已完成:结束日期已过。
- 已归档:已软关闭。
使用list_care_plans查询某位客户的计划,使用get_care_plan查询当前状态。列表包含草稿和已归档的计划,因此务必检查status。请使用生命周期工具,而不要尝试直接设置状态:enable_care_plan、complete_care_plan、archive_care_plan和revert_care_plan_to_draft。
启用草稿可能会缩短或归档同一客户的另一份已发布计划。调用list_overlapping_care_plans并传入计划日期,说明影响并取得明确确认,然后调用enable_care_plan并重新读取计划。
使用list_focus_areas、list_goals和list_tasks浏览计划内容。此处的task指护理计划目标下的计划操作;轮班清单任务、设施任务、用药任务和行政任务管理记录是不同的概念。
对于轮班期间完成的工作:
- 调用
list_shift_care_plan_goals,然后调用record_care_plan_goal_progress。记录轮班结束后的目标进展,而不是进展变化量。 - 调用
list_shift_care_plan_tasks,然后调用record_care_plan_task_completion。同一任务安排在多个时段时会出现多次;请将准确的time_slot_key与任务 ID 一并返回。 incomplete是已记录的结果,必须附带评论;它不同于尚未触碰/待处理的任务。- 只有在查明记录 ID 后,才使用相应的
update_*工具更正现有的进度/完成记录。
使用list_care_plan_reviews查看已完成的审核历史;计划中的审核日期是下次到期日期。record_care_plan_review会记录当前时间的审核,不能追溯日期。省略下次审核日期会清除现有的下次日期,因此若要保留该日期,请传入当前值,并在确认中说明这一结果。
笔记、沟通、投诉和事件
客户可能会交替使用轮班笔记、进度笔记和客户笔记,但这些工具提供两类记录:
list_client_notes和get_client_note用于读取轮班进度笔记。create_progress_note会针对某个轮班写入同一类记录。create_client_note会写入客户档案沟通记录。它不会显示在进度笔记列表中。
写入前,请确认所需的记录类型。这些创建操作不具备幂等性:结果不确定时,应先搜索或读取,再考虑再次调用。
投诉有状态工作流。调用 create_complaint 或 update_complaint_status 前,请先使用 list_complaints/get_complaint,并确认下一步状态转换及结果。事件属于另一类敏感记录,可通过 list_incidents 读取;不要将事件类别的笔记视为存在单独事件记录的证明。
报价
报价会提议在指定期限内为客户提供的服务及其价值。报价中的资金分组包含服务明细项。报价与发票、付款以及已交付或已排班的工作彼此独立;仅凭报价已接受,不能证明已有班次、服务已交付或款项已收到。
报价生命周期与归档彼此独立:
draft:尚未发送。awaiting_approved:等待审批或签名。awaiting_admin_approval/awaiting_client_approval:标明待审批或签名的一方。accepted/declined:客户的处理结果。expired:已失效。
使用 list_quotes 查找报价 ID,并报告总额、客户、状态、期限和到期日。可按客户、部分报价编号、状态,或账户时区内包含起止日期的创建/更新日历日期范围筛选。默认按报价 ID 从新到旧排列,且仅返回未归档报价;archived=true 仅返回已归档报价,因此若请求涉及所有报价,请同时读取两组结果。此筛选针对报价,而非其客户是否已归档。使用 include_metadata=true 并完成分页,以确保报告完整;不要将第一页视为全部业务管线,也不要合计不同币种的金额。
对于单个有效或已归档报价,请使用返回的 quote_id 调用 get_quote,获取其 item_groups 和 line_items:资金名称/类别、服务/价目表名称、服务项目代码、描述、数量、比例、费率、折扣和总额。按类别或服务汇总时,每条明细都要保留其所属的资金分组。
*_in_cents金额是相应 ISOcurrency中以最小货币单位(美分/便士)表示的整数。显示时除以 100。Null 表示不可用或不适用,而不是零。discount_percent的满值为 100。line_total_in_cents是存储的折扣前明细金额;total_after_discount_in_cents是资金分组折扣后的金额,不含报价级税费。total_in_cents是报价折扣及税费后的总额,因此不一定等于明细或分组总额之和。- 单位费率、服务项目代码、资金名称/类别和
fund_allocation_in_cents反映当前引用的数据。不要根据当前费率重建历史报价金额;应以存储的明细和报价总额为准。资金分配仅对dollars类型资金表示金额;小时数/单位数分配不代表金额。 balance_in_cents是报价分组中存储的余额,不是资金当前剩余余额。要查询后者,请使用get_client_fund_balance。
报价读取受权限范围限制。列表为空不能证明不存在报价;详情页返回 404 也无法区分 ID 格式错误、记录不存在或无权访问。403 表示报价访问/配置受限;账户凭据相关的 422 可能表示没有可用的账户所有者。请报告限制,不要在请求不变的情况下重试。
这些工具只能读取报价。若要创建、编辑、发送、接受/拒绝或归档报价,或处理表单、收件人、条款或生成的文档,请引导用户使用 ShiftCare 界面;不要虚构报价写入工具,也不要推断不可用的内容。
账单、员工薪酬和发票
将两条财务路径分开处理:
Client billing: shift → client service assignment → price book/rate → fund → invoice → payment
Staff pay: shift → staff assignment → pay group/pay item + allowance → timesheet/payroll
- 班次类型用于对工作进行分类;它不定义客户价格或员工薪酬。
- 价格表决定向客户收取的费用。资金是客户预算/分配额度;原始金额与当前余额并不相同。
- 薪酬组/薪酬项目决定员工成本或薪资。津贴会增加或覆盖员工薪酬处理方式。
- 班次可能存在,但尚未定价、未获资金支持、处于待处理状态,或因其他原因无法开具发票。不要仅根据班次推断其可计费。
- 如果创建/更新工具未包含价格表、资金、薪酬组、差旅或额外收费字段,请接受文档说明的服务端默认值,或引导用户使用产品界面;不要将不受支持的字段塞入调用中。
使用 list_client_funds 和 get_client_fund_balance 查询客户资金,使用 list_invoices 和 list_invoice_payments 查询应收款,使用 list_pay_groups、list_pay_items、list_allowances 和 list_timesheets 查看员工薪酬相关信息。
在调用 create_invoice_payment 前:
- 使用
list_invoices选择准确的发票并读取其客户和发票余额;使用list_invoice_payments查看现有付款,仅在从资金中付款时使用get_client_fund_balance。 - 列出准确的发票、客户、金额、付款日期、参考信息和付款后的发票余额;指出任何超额付款。
- 针对该笔准确付款取得明确确认。
- 仅记录一次,并使用
list_invoice_payments验证。若付款结果不明确,切勿在检查前重试。
时间与数据安全
- 按账户或账户位置的时区处理日历日期、护理计划状态、重复周期的星期几、休假日、审核日期和账单周期。
- 除非工具明确要求使用账户本地值,否则发送带有明确偏移量的 ISO 8601 日期时间。
- 未经转换,切勿比较 UTC 时间戳与本地日历日期。
- 将 ID 与其所属范围及相关 ID 配对;不要分别对并行的 ID 列表去重,再尝试重新配对。
- 优先使用返回的显示名称和值,而不是自行重建。不要捏造缺失的个人、服务或财务数据。
呈现结果
每项 ShiftCare 技能都以相同的格式报告,因此读过一份报告的用户也能看懂其他报告。使用表格,而不是段落。使用名称,而不是 ID。对于任何需要采取行动的事项,都给出明确的后续步骤。
1. 一行标题 — 说明检查内容、范围、应用的任何阈值以及日期。读者只看这一行,也应知道这些数字涵盖什么。
2. 摘要表。 先列数量,并将最严重的类别放在最上方。不要让用户自己汇总列表。
| 发现 | 数量 |
|---|---|
| 已过期 | 11 |
| 90 天内到期 | 0 |
| 未验证 | 2 |
3. 详细表格,每项有详细信息的发现各一张,按严重程度从高到低排列。使用真实姓名,日期采用日常写法(12 Aug 2026),对于倒计时事项,注明剩余天数。长表只显示前十行,说明剩余行数,并提供其余内容,而不是一次列出数百行。
4. 建议表。 每份报告都必须以此表结尾。没有建议措施的发现只是观察,不算报告。
| 优先级 | 建议措施 | 原因 | 位置 |
|---|---|---|---|
| 1 | 为 Freddy Mercury 续办急救资格 | 已过期 21 天 | 员工档案 → 资格 |
| 2 | 为警察审查启用到期跟踪 | 已记录但没有到期日期,因此不会出现在到期报告中 | 账户 → 资格 |
按后果排序,而不是按修复难易程度排序。指出在 ShiftCare 中进行更改的位置,免得用户自行查找。如果修复操作不在 ShiftCare 中,请说明它实际所在的位置。
5. 以“未检查”结尾,说明报告未涵盖的内容——工具无法访问的数据、跳过的记录、未纳入的员工或客户,以及排除原因。此处不说明,会让人以为一切正常。
以下两条规则优先于上述格式:
- 绝不下结论或打分。 报告记录所显示的情况。“合规”“健康”“已通过审计准备就绪”以及作为评分呈现的百分比,都是由用户而非 Agent 作出的判断。
- 指出数据中的每一处缺口。 调用失败、未读取的页面、无法确认的记录——都要在报告正文中说明,而不是等用户询问。将部分结果伪装成完整结果,是此系统可能产生的最糟糕输出。