用途
project-switch 用于把当前会话的「项目上下文」切换到指定财务项目。切换后,后续所有 skill 操作都在该项目的上下文中执行:产出物写入 projects/{code}/,并引用该项目 project.md 中的阈值、范围与历史上下文。
适用情形:开始或恢复一个财务项目(年度审计、Q2 预算审查、税务申报周期、M&A 尽调)时执行。
本 skill 本身不读项目内容,只设置 current_project_code 上下文变量。后续 skill 通过此变量定位项目目录。
命令格式
/finance:project-switch <project-code> [--show]
参数:
- <project-code>:项目代码(如 2026-audit-ic / Q2-2026-budget / tax-filing-2026 / m-and-a-deal-alpha)
- --show:只显示当前激活项目,不切换
操作步骤
步骤 1:定位项目目录
项目根目录 = ~/.config/finance-skills/projects/{project-code}/
如果目录不存在,提示:
❌ 项目不存在: {project-code}
请使用 /finance:project-list 查看现有项目 或 /finance:project-new 创建新项目
步骤 2:校验 project.md
读取 {project-root}/project.md,校验:
- 必填字段齐全(项目类型/代码/负责人/周期/状态)
- YAML frontmatter 解析正确
- 状态字段是合法值(planning / active / fieldwork / reporting / closed)
如果 project.md 损坏或缺字段,提示:
⚠️ project.md 损坏或缺必填字段
请运行 /finance:project-repair {project-code} 自动修复 或手动编辑 ~/.config/finance-skills/projects/{project-code}/project.md
步骤 3:检查项目状态
读取状态字段:
- planning:允许切换,警告「项目仍在规划阶段,未开始执行」
- active:允许切换,无警告
- fieldwork:允许切换,无警告
- reporting:允许切换,警告「项目在报告阶段,新发现可能不影响最终结论」
- closed:允许切换但提示「项目已关闭,切换为只读模式」
- archived:不允许切换,提示「项目已归档,不可切换」
closed 状态允许切换但提示只读。
步骤 4:写入会话上下文
将以下信息注入会话上下文:
current_project = { code: "{project-code}", type: "{project-type}", root: "~/.config/finance-skills/projects/{project-code}/", status: "{状态}", started: "{开始日期}", next_milestone: "{下次关键日期}", }
关键约束:同时只能激活一个项目。如果已激活另一个项目,提示:
⚠️ 当前已激活项目: {old-code}
切换到 {new-code} 将丢弃 {old-code} 的会话状态(包括未保存的临时笔记) 确认切换吗?[y/N]
步骤 5:输出切换结果
成功切换时输出:
════════════════════════════════════════ ✅ 已切换到项目: {project-code}
项目类型: {type} 负责人: {name} 周期: {period} 当前阶段: {stage} 上次活动: {last-activity} 下次关键日期: {next-milestone} ════════════════════════════════════════
项目根目录: ~/.config/finance-skills/projects/{project-code}/ 所有 skill 操作的产出物将记录到此项目。
输入 /finance:project-status 查看项目详情 输入 /finance:project-list 切换到其他项目 ════════════════════════════════════════
示例
- 用户说「切换到 2026 年度内部控制审计项目」,系统应切换到 2026-audit-ic,加载该项目的 project.md,输出项目摘要。
- 用户说「我要开始做 Q2 预算审查」,系统应先检查 Q2-2026-budget 是否存在,存在则切换,不存在则提示用 /finance:project-new 创建。
- 用户说「现在做的是哪个项目」,系统应使用 --show 模式,只输出当前激活项目信息。
与其他 skill 的协作
切换项目后,以下 skill 会自动使用项目上下文:
- /internal-audit:control-testing:把控制测试底稿写入 projects/{code}/control-testing/
- /month-end-close:*:把月度关账报告写入 projects/{code}/close-{YYYY-MM}/
- /m-and-a:*:把尽调材料写入 projects/{code}/due-diligence/
- /board-reporting:*:把董事会材料写入 projects/{code}/board-{YYYY-Q}/
未切换项目时调用:上述 skill 仍可执行(不强制依赖项目),但会提示「未指定项目上下文,产出物将写入默认目录 ~/.config/finance-skills/scratch/」。
关闭项目
要关闭当前项目,使用 /finance:project-archive {project-code} 或修改 project.md 的状态字段。
切换到 closed 状态后:
- 项目目录变为只读
- 不再出现在 /finance:project-list 的「活跃」列表
- 可通过 /finance:project-switch {code} 重新打开(会自动恢复 closed 状态)
注意事项
- 无项目 ≠ 不能用 skill。基础 skill(如 /tax-filing:vat-monthly-declare)可不依赖项目上下文运行
- 切换不影响数据:所有项目文件独立保存,切换只是「激活焦点」
- 多任务并发:项目是单例的。如果同时跟踪多个项目(如年度审计 + Q2 预算),在两个会话窗口分别切换,不要在同一会话混用
- 凭证不在项目目录:API 凭证统一在 ~/.config/finance-skills/credentials/,不在项目目录内(避免泄露)
限制
- 同一时间只能激活一个项目
- archived 状态的项目不可切换
- 本 skill 只设置上下文变量,不读取项目内容
- 首次执行需读取 ../references/项目空间结构.md 了解 project.md 字段规范