| name | cli |
| description | 凡是遇到人事、报销、采购、审批、合同、客服等企业业务任务,必须加载此技能,并且必须先通过 skillflaw-cli 查找相关的 Skill 或 Workflow,再继续通过 skillflaw-cli 完成对应企业业务的读取、保存、下载或执行。即使用户没有明确说“用 CLI”,只要涉及上述企业业务,也一律禁止绕过 skillflaw-cli;必须通过 skillflaw-cli 完成技能发现、节点定位和业务执行,禁止直接拼接 HTTP 请求、猜测节点标识,或绕过 skillflaw-cli 调用后端接口。 |
skillflaw-cli
这是我通过 skillflaw-cli 访问 SkillFlaw 既有能力的入口。
我只用它做四类事:发现节点、读取 skill、保存或下载文件、执行 workflow。它不用于修改 CLI 源码本身。
何时使用此技能
当任务同时满足以下两个条件时,我应优先使用此技能:
- 任务是真实企业业务任务,例如人事、报销、采购、审批、合同、客服。
- 需要通过
skillflaw-cli 查找或执行已有的 SkillFlaw skill / workflow。
常见触发场景:
- 查看 My Skills 树,并定位租户、业务域、项目、流程或 skill 节点。
- 把根 skill 或某个租户 / 业务域 / 项目 skill 读成 markdown。
- 把 skill markdown 保存为本地文件。
- 下载项目 bundle 或绑定 skill 文件。
- 带着 JSON payload 执行在线 workflow。
- 在执行前先完成
skillflaw-cli 的认证或配置。
何时不要使用此技能
- 任务是修改
src/cli 源码或测试。
- 任务是直接在后端或数据库里创建、编辑持久化 skill。
- 任务依赖真实缓存失效;当前
skillflaw-cli cache clear 只是占位 skeleton。
apiKey、baseUrl、nodeId、projectId、skillId、flowId、payload 等关键输入缺失,且无法通过前序发现步骤得到。
前置条件
在执行前,我必须先确认:
- 当前环境能用
skillflaw-cli。
- 如果
authMode=api-key,我已经拿到真实 apiKey;禁止猜测。
- 如果
baseUrl 未配置,必须显式提供。
- 只要读取、下载或执行依赖树节点,就必须先发现节点,不能猜标识符。
任一前提缺失时,我必须停止并明确报缺。
SkillFlaw 技能层级与定位规则
我必须先记住一个事实:SkillFlaw 中可读的 skill、可执行的 workflow,都挂在具体项目对象上,不是可以脱离上下文随便猜的全局资源。
规则如下:
- 树结构是唯一可信入口。常见路径是根节点 → 租户 → 业务域 → 项目 → skill / workflow;实际层级必须以
tree root 与 tree children 的真实返回为准。
- workflow、skill 都和项目对象绑定。我要执行流程或读取 skill,先要确认它属于哪个项目对象。
- 如果只知道项目名、流程名、技能名,不知道稳定标识符,我就必须先走树发现,不能猜
nodeId、flowId、projectId、skillId。
- 只有在任务已经给出可信且足以唯一确定目标的
nodeId、flowId、projectId、skillId 时,我才可以直接执行命令。
命令映射
1. 认证
我用以下命令建立或清除 CLI 认证:
skillflaw-cli auth login --api-key <apiKey>
skillflaw-cli auth logout
执行规则:
auth login 会把 API key 写入 CLI 配置。
auth logout 会清掉已存储 API key,并把模式重置为 anonymous。
示例:
-
示例 1:当前任务要读取报销项目 skill,且用户已明确提供 API key。
skillflaw-cli auth login --api-key <apiKey>
-
示例 2:任务结束后,要求清除本地 CLI 认证状态。
skillflaw-cli auth logout
2. CLI 配置
我用以下命令查看或设置基础配置:
skillflaw-cli config init --auth-mode <authMode> --tenant-id <tenantId> --business-id <businessId> --project-id <projectId> --default-node-id <defaultNodeId> --api-key <apiKey> --base-url <baseUrl>
skillflaw-cli config set --auth-mode <authMode> --tenant-id <tenantId> --business-id <businessId> --project-id <projectId> --default-node-id <defaultNodeId> --api-key <apiKey> --base-url <baseUrl>
skillflaw-cli config show
执行规则:
- 配置状态未知时,先
config show。
config init / config set 只能使用显式提供的值;禁止补猜配置。
示例:
-
示例 1:先查看当前 CLI 配置,确认 base URL、认证模式和默认节点是否已存在。
skillflaw-cli config show
-
示例 2:首次初始化 CLI,用户已明确提供 API-key 模式、base URL 与默认租户上下文。
skillflaw-cli config init \
--auth-mode api-key \
--tenant-id <tenantId> \
--business-id <businessId> \
--project-id <projectId> \
--default-node-id <defaultNodeId> \
--api-key <apiKey> \
--base-url <baseUrl>
-
示例 3:只更新 base URL 与默认节点,不改动其他未知配置。
skillflaw-cli config set \
--base-url <baseUrl> \
--default-node-id <defaultNodeId>
3. 树节点发现
在读取、下载或执行之前,我先用 tree 命令定位正确节点:
skillflaw-cli tree root
skillflaw-cli tree children --node-id <nodeId>
执行规则:
- 不知道
nodeId 时,从 tree root 开始。
- 逐层调用
tree children --node-id <nodeId>,直到定位目标。
- 只知道项目语义时,必须先找到对应项目对象,再继续读取或执行。
- 禁止猜 tenant、business、project、flow 标识符。
示例:
-
示例 1:先查看根节点,确认当前账号可见的租户入口。
skillflaw-cli tree root
-
示例 2:已从根节点拿到租户节点 tenant-node-001,继续展开其下一级子节点。
skillflaw-cli tree children --node-id tenant-node-001
-
示例 3:当前只知道“招聘项目”的名字,不知道 nodeId,就必须沿树逐层展开到该项目对象,再继续后续命令。
skillflaw-cli tree root
skillflaw-cli tree children --node-id tenant-node-001
skillflaw-cli tree children --node-id business-node-hr
skillflaw-cli tree children --node-id project-node-recruiting
4. Skill 读取与保存
当目标是拿到 markdown,而不是直接执行时,我用以下命令:
skillflaw-cli skill read --node-id <nodeId>
skillflaw-cli skill read --node-id <nodeId> --format json
skillflaw-cli skill save --node-id <nodeId> --output <output>
执行规则:
- 需要把 skill markdown 读入上下文时,用
skill read。
- 需要把 markdown 写入文件时,用
skill save。
- 优先使用树发现得到的
--node-id。
示例:
-
示例 1:读取某个项目 skill 的 markdown 内容,直接作为当前任务上下文使用。
skillflaw-cli skill read --node-id project-skill-node-001
-
示例 2:读取 skill 的 JSON 结果,供后续脚本或结构化处理使用。
skillflaw-cli skill read --node-id project-skill-node-001 --format json
-
示例 3:将 skill markdown 保存为本地文件,供后续交付或归档。
skillflaw-cli skill save --node-id project-skill-node-001 --output ./artifacts/recruiting-skill.md
5. Skill 与项目下载
当目标是文件产物,而不是内联 markdown 时,我用以下下载命令:
skillflaw-cli skill download --node-id <nodeId>
skillflaw-cli skill download --project-id <projectId> --skill-id <skillId>
skillflaw-cli skill download --project-id <projectId> --bundle
执行规则:
- 已有
--node-id 时优先用它,让 project / skill 标识符从树节点解析。
--bundle 只用于项目 bundle。
- 禁止猜
projectId 或 skillId。
示例:
-
示例 1:已知 skill 节点,直接下载该 skill 对应文件。
skillflaw-cli skill download --node-id project-skill-node-001
-
示例 2:用户已经明确给出可信的 projectId 与 skillId,直接下载绑定 skill 文件。
skillflaw-cli skill download --project-id <projectId> --skill-id <skillId>
-
示例 3:下载整个项目 bundle,用于移交、归档或离线分析。
skillflaw-cli skill download --project-id <projectId> --bundle
6. Workflow 执行
当目标是执行已发布或在线项目流程时,我用以下 workflow 命令:
skillflaw-cli workflow run --node-id <nodeId> --payload <jsonPayload>
skillflaw-cli workflow run --flow-id <flowId> --payload <jsonPayload>
skillflaw-cli workflow run --flow-id <flowId> --version <version> --payload <jsonPayload>
执行规则:
- payload 必须是合法 JSON。
- 已知树节点、未知
flowId 时,用 --node-id 解析。
- 只知道项目语义或名称时,先走树发现,不能跳过项目对象直接执行。
- 既不知道
nodeId 也不知道 flowId 时,回到树发现步骤。
示例:
-
示例 1:已知 workflow 节点,直接带 JSON payload 执行在线流程。
skillflaw-cli workflow run \
--node-id workflow-node-001 \
--payload '{"employee_id":"E1001","reason":"年度调岗审批"}'
-
示例 2:用户已经明确提供可信 flowId,直接执行默认在线版本。
skillflaw-cli workflow run \
--flow-id <flowId> \
--payload '{"contract_no":"HT-2026-001","action":"review"}'
-
示例 3:执行某个指定版本的流程,而不是默认版本。
skillflaw-cli workflow run \
--flow-id <flowId> \
--version <version> \
--payload '{"reimbursement_id":"BX-10086","approve":true}'
典型完整场景示例
以下示例覆盖常见完整链路,便于我在真实任务里直接套用。
场景 A:首次接手任务,先确认配置与认证状态
用户说:“帮我看看当前 CLI 能不能直接读招聘项目 skill。”
推荐顺序:
skillflaw-cli config show
skillflaw-cli auth login --api-key <apiKey>
skillflaw-cli tree root
适用原因:
- 当前不知道是否已配置 base URL、认证模式或默认节点。
- 如果缺少 API key,必须由用户显式提供后再登录。
- 登录完成后,再进入树发现阶段。
场景 B:只知道项目名称,先定位项目对象,再读取 skill
用户说:“读取招聘项目的 Skill markdown 给我看。”
推荐顺序:
skillflaw-cli tree root
skillflaw-cli tree children --node-id tenant-node-001
skillflaw-cli tree children --node-id business-node-hr
skillflaw-cli tree children --node-id project-node-recruiting
skillflaw-cli skill read --node-id project-skill-node-001
适用原因:
- 用户只给了项目语义,没有给
nodeId。
- 必须先定位到具体项目对象,再读取其 skill。
场景 C:读取 skill 后另存为本地文件
用户说:“把招聘项目 skill 保存到本地 markdown 文件,我要发给同事。”
推荐命令:
skillflaw-cli skill save --node-id project-skill-node-001 --output ./deliverables/recruiting-skill.md
适用原因:
- 目标是本地文件产物,而不是在上下文中直接消费 markdown。
场景 D:下载整个项目 bundle
用户说:“把招聘项目整个 bundle 下载下来,我要归档。”
推荐命令:
skillflaw-cli skill download --project-id <projectId> --bundle
适用原因:
- 目标是项目 bundle,不是单个 skill markdown。
场景 E:执行某个项目流程
用户说:“帮我跑一下入职审批流程,payload 已给你。”
如果已定位到 workflow 节点:
skillflaw-cli workflow run \
--node-id workflow-node-onboarding \
--payload '{"candidate_name":"张三","department":"研发","approve":true}'
如果只知道流程名字,不知道节点标识:
skillflaw-cli tree root
skillflaw-cli tree children --node-id tenant-node-001
skillflaw-cli tree children --node-id business-node-hr
skillflaw-cli tree children --node-id project-node-onboarding
skillflaw-cli workflow run \
--node-id workflow-node-onboarding \
--payload '{"candidate_name":"张三","department":"研发","approve":true}'
场景 F:用户已给出可信稳定标识符,直接执行
用户已经明确提供:flowId=<flowId>、version=<version>、payload=<jsonPayload>。
推荐命令:
skillflaw-cli workflow run \
--flow-id <flowId> \
--version <version> \
--payload <jsonPayload>
适用原因:
- 所需标识符已经可信且足以唯一确定目标,不需要重复遍历树。
推荐操作顺序
除非当前任务已经明确提供了所需标识符和配置,否则按以下顺序执行:
- 先检查
skillflaw-cli 是否可用。
- 如果认证或 base URL 不明确,先用
skillflaw-cli config show 查看当前配置。
- 如果需要 API-key 模式,用
skillflaw-cli auth login --api-key <apiKey> 完成认证。
- 使用
skillflaw-cli tree root 和 skillflaw-cli tree children --node-id <nodeId> 发现正确节点。
- 按任务目标选择下一步动作:
- 需要 markdown →
skill read 或 skill save
- 需要文件 →
skill download
- 需要执行 workflow →
workflow run
- 清晰报告结果,包括解析出的 node id、保存的文件路径或 workflow 输出。
输出要求
使用此技能时,我始终要提供:
- 准确 CLI 命令。
- 命令为什么匹配当前任务。
- 关键输出,例如 markdown、节点信息、保存路径、workflow 结果。
- 任何阻塞执行的缺失前提。
输出示例:
- 示例 1:成功读取 skill markdown 时,应报告“使用了哪个
nodeId、为什么命中这个节点、返回的 markdown 摘要是什么”。
- 示例 2:成功保存文件时,应报告“保存路径是什么、源节点是什么、保存的是 skill markdown 还是 bundle”。
- 示例 3:成功执行 workflow 时,应报告“执行命令、payload 来源、workflow 输出或返回状态”。
失败处理
如果命令无法继续执行,我直接报告具体阻塞项。典型阻塞包括:
skillflaw-cli 不可用。
- 在
authMode=api-key 时缺少 apiKey。
baseUrl 缺失或错误。
- 所需的
nodeId、projectId、skillId 或 flowId 未知。
- workflow payload 不是合法 JSON。
失败示例:
- 示例 1:CLI 不可用时,应直接报告“当前环境无法使用
skillflaw-cli,因此不能继续后续树发现或执行步骤”。
- 示例 2:用户要求执行 API-key 模式任务,但未提供
apiKey,应直接报告“缺少 apiKey,无法执行 skillflaw-cli auth login --api-key <apiKey>”。
- 示例 3:只给了“招聘流程”这样的语义名词,却没有任何可信
nodeId / flowId,应先回到树发现步骤,而不是猜测标识符。
- 示例 4:payload 不是合法 JSON 时,应直接指出“当前 payload 非法,必须先修正为合法 JSON 后才能执行
workflow run”。
禁止编造缺失值。禁止偷偷切到直接 HTTP 调用。我的动作必须停留在 skillflaw-cli 的真实能力边界内。