关于 secretary
Secretary 技能用于记录承诺、决策和想法,并维护目标、活动记录与知识图谱。它还涵盖加密记忆及队列和工作进程管理,适合跨会话跟进事项。
主要功能
- 01记录承诺、决策和想法
- 02跟踪目标与里程碑
- 03维护知识图谱
- 04管理加密记忆条目
- 05查看队列与工作进程状态
适用场景
- 01从对话中提取待办事项
- 02记录带有理由的决策
- 03跨会话跟踪目标进度
- 04存储并搜索敏感记忆条目
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mwguerra/ claude-code-plugins --skill secretary安装后在 Claude Code 中输入/secretary确认已加载。
详细介绍
秘书技能
捕获承诺、记录决策、跟踪想法、管理会话,并维护完整的知识库。
使用场景
- 分析对话中的承诺、决策或想法
- 手动记录新的承诺、决策或想法
- 更新跟踪项目的状态(完成、延期、取消)
- 管理队列项目和工作器处理
- 更新知识图谱
- 管理目标和里程碑
- 访问或管理加密的记忆条目
- 检查工作器和队列状态
数据库位置
# Main database
SECRETARY_DB_PATH="$HOME/.claude/secretary/secretary.db"
# Encrypted memory database
SECRETARY_MEMORY_DB_PATH="$HOME/.claude/secretary/memory.db"
# Configuration
SECRETARY_CONFIG_FILE="$HOME/.claude/secretary.json"
# Scripts
PLUGIN_ROOT="$HOME/.claude/plugins/secretary" # or wherever installed
承诺管理
记录承诺
-- Get next ID
SELECT 'C-' || printf('%04d', COALESCE(MAX(CAST(SUBSTR(id, 3) AS INTEGER)), 0) + 1) as next_id
FROM commitments;
-- Insert
INSERT INTO commitments (
id, title, description, source_type, source_session_id,
source_context, project, assignee, stakeholder,
due_date, due_type, priority, status
) VALUES (
:id, :title, :description, :source_type, :session_id,
:context, :project, :assignee, :stakeholder,
:due_date, :due_type, :priority, 'pending'
);
更新承诺
-- Complete
UPDATE commitments SET
status = 'completed', completed_at = datetime('now'), updated_at = datetime('now')
WHERE id = :id;
-- Defer
UPDATE commitments SET
status = 'deferred', deferred_until = :date,
deferred_count = deferred_count + 1, updated_at = datetime('now')
WHERE id = :id;
-- Cancel
UPDATE commitments SET
status = 'canceled', updated_at = datetime('now')
WHERE id = :id;
-- Change priority
UPDATE commitments SET
priority = :new_priority, updated_at = datetime('now')
WHERE id = :id;
列出承诺
-- All pending (sorted by priority)
SELECT id, title, due_date, priority, project, status
FROM commitments
WHERE status IN ('pending', 'in_progress')
ORDER BY
CASE WHEN due_date < date('now') THEN 0 ELSE 1 END,
CASE priority WHEN 'critical' THEN 1 WHEN 'high' THEN 2 WHEN 'medium' THEN 3 ELSE 4 END,
due_date ASC;
-- By project
SELECT id, title, due_date, priority, status
FROM commitments
WHERE project = :project AND status IN ('pending', 'in_progress')
ORDER BY priority DESC;
-- Overdue only
SELECT id, title, due_date, priority, project
FROM commitments
WHERE status IN ('pending', 'in_progress') AND due_date < date('now')
ORDER BY due_date ASC;
检测模式
在对话中查找以下短语:
承诺:
- “我会……”“我将……”“让我……”
- “我们应该……”“我们需要……”
- “TODO:”“FIXME:”“跟进……”
- “别忘了……”“确保……”
- “提醒我……”“再联系……”
决策记录
记录决策
-- Get next ID
SELECT 'D-' || printf('%04d', COALESCE(MAX(CAST(SUBSTR(id, 3) AS INTEGER)), 0) + 1) as next_id
FROM decisions;
-- Insert
INSERT INTO decisions (
id, title, description, rationale, alternatives,
consequences, category, scope, project,
source_session_id, source_context, status, tags
) VALUES (
:id, :title, :description, :rationale, :alternatives_json,
:consequences, :category, :scope, :project,
:session_id, :context, 'active', :tags_json
);
更新决策
-- Supersede
UPDATE decisions SET
status = 'superseded', superseded_by = :new_decision_id,
updated_at = datetime('now')
WHERE id = :old_id;
-- Reverse
UPDATE decisions SET
status = 'reversed', updated_at = datetime('now')
WHERE id = :id;
检测模式
决策:
- “决定……”“决定是……”
- “就选……吧”“我们将使用……”
- “方案是……”“计划是……”
- “从现在起……”“今后……”
- “不……而……”“与其……不如……”
提取流程
- 识别决策短语
- 提取已决定的内容
- 查找理由(“因为”“由于”)
- 识别提及的替代方案(“不……而……”“与其……不如……”)
- 分类:
architecture、process、technology、design - 确定范围:
project-wide、feature、component
想法捕获
记录想法
-- Get next ID
SELECT 'I-' || printf('%04d', COALESCE(MAX(CAST(SUBSTR(id, 3) AS INTEGER)), 0) + 1) as next_id
FROM ideas;
-- Insert
INSERT INTO ideas (
id, title, description, idea_type, category,
project, source_session_id, source_context,
priority, effort, potential_impact, status, tags
) VALUES (
:id, :title, :description, :type, :category,
:project, :session_id, :context,
:priority, :effort, :impact, 'captured', :tags_json
);
更新想法
-- Start exploring
UPDATE ideas SET status = 'exploring', updated_at = datetime('now') WHERE id = :id;
-- Park for later
UPDATE ideas SET status = 'parked', updated_at = datetime('now') WHERE id = :id;
-- Mark done
UPDATE ideas SET status = 'done', updated_at = datetime('now') WHERE id = :id;
-- Discard
UPDATE ideas SET status = 'discarded', updated_at = datetime('now') WHERE id = :id;
目标管理
创建目标
SELECT 'G-' || printf('%04d', COALESCE(MAX(CAST(SUBSTR(id, 3) AS INTEGER)), 0) + 1) as next_id
FROM goals;
INSERT INTO goals (
id, title, description, goal_type, timeframe,
parent_goal_id, project, target_value, target_unit,
target_date, status, milestones, related_commitments
) VALUES (
:id, :title, :description, :type, :timeframe,
:parent_id, :project, :target_value, :target_unit,
:target_date, 'active', :milestones_json, :related_json
);
更新目标进度
UPDATE goals SET
current_value = :value,
progress_percentage = ROUND(100.0 * :value / NULLIF(target_value, 0), 1),
updated_at = datetime('now')
WHERE id = :id;
活动时间线
事件类型
| 类型 | 描述 |
|---|---|
session_start | 新会话开始 |
session_end | 会话已完成 |
commitment | 已提取承诺 |
commitment_completed | 承诺已标记为完成 |
decision | 已记录决策 |
goal_progress | 目标已更新 |
goal_completed | 目标已完成 |
commit | 已创建 Git 提交 |
external_change | 检测到外部变更 |
记录活动
INSERT INTO activity_timeline (
activity_type, entity_type, entity_id,
project, title, details, session_id
) VALUES (:type, :entity_type, :entity_id, :project, :title, :details_json, :session_id);
知识图谱
节点类型
| 类型 | 描述 |
|---|---|
project | 软件项目 |
technology | 语言、框架、工具 |
person | 团队成员、利益相关者 |
concept | 架构模式、方法论 |
tool | 开发工具、服务 |
创建/更新节点
SELECT 'N-' || printf('%04d', COALESCE(MAX(CAST(SUBSTR(id, 3) AS INTEGER)), 0) + 1) as next_id
FROM knowledge_nodes;
INSERT INTO knowledge_nodes (id, name, node_type, description, properties, aliases)
VALUES (:id, :name, :type, :description, :properties_json, :aliases_json)
ON CONFLICT(id) DO UPDATE SET
description = COALESCE(:description, description),
interaction_count = interaction_count + 1,
last_interaction = datetime('now'),
updated_at = datetime('now');
创建/更新边
SELECT 'E-' || printf('%04d', COALESCE(MAX(CAST(SUBSTR(id, 3) AS INTEGER)), 0) + 1) as next_id
FROM knowledge_edges;
INSERT INTO knowledge_edges (id, source_node_id, target_node_id, relationship, strength, properties)
VALUES (:id, :source, :target, :relationship, :strength, :properties_json)
ON CONFLICT(id) DO UPDATE SET
strength = MIN(strength + 0.1, 1.0),
updated_at = datetime('now');
关系类型
uses- 项目使用某项技术knows- 人员了解某项技术owns- 人员拥有某个项目depends_on- 项目依赖另一个项目related_to- 一般关系
加密记忆
通过记忆管理器脚本管理敏感数据:
SCRIPT="$PLUGIN_ROOT/scripts/memory-manager.sh"
# Add a memory entry
bash "$SCRIPT" add "AWS API Key" "AKIA..." api_key "my-project" "aws,production"
# Search memory
bash "$SCRIPT" search "API key"
# List by category
bash "$SCRIPT" list credential
bash "$SCRIPT" list api_key my-project
# View a specific entry
bash "$SCRIPT" show 1
# Delete an entry
bash "$SCRIPT" delete 1
# Check encryption status
bash "$SCRIPT" status
类别:credential、api_key、ip_address、phone、secret、note、general
队列操作
检查队列状态
SELECT status, COUNT(*) as count
FROM queue
GROUP BY status;
强制处理队列
bash "$PLUGIN_ROOT/scripts/process-queue.sh" --limit 10
检查工作器状态
SELECT last_run_at, last_success_at, last_error,
items_processed, total_runs,
last_vault_sync_at, last_github_refresh_at
FROM worker_state WHERE id = 1;
每日笔记
-- Create or update daily note
INSERT INTO daily_notes (id, date)
VALUES (date('now'), date('now'))
ON CONFLICT(id) DO NOTHING;
-- Update with session data
UPDATE daily_notes SET
sessions_count = sessions_count + 1,
last_activity_at = datetime('now'),
updated_at = datetime('now')
WHERE date = date('now');
ID 生成
# Pattern for all entity IDs
# C-0001 for commitments
# D-0001 for decisions
# I-0001 for ideas
# G-0001 for goals
# P-0001 for patterns
# N-0001 for knowledge nodes
# E-0001 for knowledge edges
# SQL pattern to get next ID:
SELECT '<PREFIX>-' || printf('%04d', COALESCE(MAX(CAST(SUBSTR(id, LENGTH('<PREFIX>') + 2) AS INTEGER)), 0) + 1)
FROM <table>;
输出指南
报告捕获的项目时:
## Captured
### Commitment
- **ID:** C-0025
- **Title:** Implement caching layer
- **Priority:** High
- **Due:** This week
- **Source:** Conversation
### Decision
- **ID:** D-0018
- **Title:** Use Redis for caching
- **Category:** Architecture
- **Rationale:** Better performance for distributed systems
### Idea
- **ID:** I-0015
- **Title:** GraphQL migration
- **Type:** Exploration
- **Impact:** High
静默模式
通过钩子(capture.sh)运行时,请静默工作:
- 除非明确要求,否则不要输出
- 将日志记录到 activity_timeline,以便日后查看
- 可通过
/secretary:status或/secretary:briefing查看项目
错误处理
- 在提取过程中跳过格式错误或含糊不清的项目
- 将提取失败记录到调试日志
- 单个项目处理失败时继续处理
- 失败的队列项目最多重试 3 次
- 24 小时后使未处理的队列项目过期
相关命令
/secretary:track- 管理承诺(添加、完成、延期、列出)/secretary:decide- 记录决策及其理由/secretary:idea- 记录想法/secretary:status- 显示完整仪表板/secretary:briefing- 生成上下文简报/secretary:memory- 管理加密记忆/secretary:worker- 检查/触发工作进程
评论
支持 Markdown