secretary
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseSecretary Skill
Secretary 技能
Capture commitments, record decisions, track ideas, manage sessions, and maintain the full knowledge base.
捕获承诺、记录决策、追踪想法、管理会话,并维护完整的知识库。
When to Use
使用场景
- Analyzing conversation for commitments, decisions, or ideas
- Recording a new commitment, decision, or idea manually
- Updating the status of a tracked item (complete, defer, cancel)
- Managing queue items and worker processing
- Updating the knowledge graph
- Managing goals and milestones
- Accessing or managing encrypted memory entries
- Checking worker and queue status
- 分析对话中的承诺、决策或想法
- 手动记录新的承诺、决策或想法
- 更新追踪项的状态(完成、延期、取消)
- 管理队列项和工作进程
- 更新知识图谱
- 管理目标和里程碑
- 访问或管理加密存储条目
- 检查工作进程和队列状态
Database Locations
数据库位置
bash
undefinedbash
undefinedMain database
Main database
SECRETARY_DB_PATH="$HOME/.claude/secretary/secretary.db"
SECRETARY_DB_PATH="$HOME/.claude/secretary/secretary.db"
Encrypted memory database
Encrypted memory database
SECRETARY_MEMORY_DB_PATH="$HOME/.claude/secretary/memory.db"
SECRETARY_MEMORY_DB_PATH="$HOME/.claude/secretary/memory.db"
Configuration
Configuration
SECRETARY_CONFIG_FILE="$HOME/.claude/secretary.json"
SECRETARY_CONFIG_FILE="$HOME/.claude/secretary.json"
Scripts
Scripts
PLUGIN_ROOT="$HOME/.claude/plugins/secretary" # or wherever installed
undefinedPLUGIN_ROOT="$HOME/.claude/plugins/secretary" # or wherever installed
undefinedCommitment Management
承诺管理
Recording a Commitment
记录承诺
sql
-- 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'
);sql
-- 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'
);Updating Commitments
更新承诺
sql
-- 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;sql
-- 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;Listing Commitments
列出承诺
sql
-- 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;sql
-- 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;Detection Patterns
检测模式
Look for these phrases in conversation:
Commitments:
- "I will...", "I'll...", "Let me..."
- "We should...", "We need to..."
- "TODO:", "FIXME:", "Follow up on..."
- "Don't forget to...", "Make sure to..."
- "Remind me to...", "Get back to..."
在对话中寻找以下表述:
承诺相关表述:
- "我将...", "我会...", "让我..."
- "我们应该...", "我们需要..."
- "TODO:", "FIXME:", "跟进..."
- "别忘了...", "确保..."
- "提醒我...", "回复..."
Decision Recording
决策记录
Recording a Decision
记录决策
sql
-- 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
);sql
-- 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
);Updating Decisions
更新决策
sql
-- 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;sql
-- 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;Detection Patterns
检测模式
Decisions:
- "Decided to...", "The decision is..."
- "Let's go with...", "We'll use..."
- "The approach is...", "The plan is..."
- "From now on...", "Going forward..."
- "Instead of...", "Rather than..."
决策相关表述:
- "决定...", "决策是..."
- "我们选择...", "我们将使用..."
- "方法是...", "计划是..."
- "从现在起...", "今后..."
- "代替...", "而不是..."
Extraction Process
提取流程
- Identify decision phrase
- Extract what was decided
- Look for rationale ("because", "since", "due to")
- Identify alternatives mentioned ("instead of", "rather than")
- Categorize: ,
architecture,process,technologydesign - Determine scope: ,
project-wide,featurecomponent
- 识别决策表述
- 提取决策内容
- 寻找理由("因为"、"由于"、"鉴于")
- 识别提及的替代方案("代替"、"而不是")
- 分类:(架构)、
architecture(流程)、process(技术)、technology(设计)design - 确定范围:(项目级)、
project-wide(功能)、feature(组件)component
Idea Capture
想法捕获
Recording an Idea
记录想法
sql
-- 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
);sql
-- 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
);Updating Ideas
更新想法
sql
-- 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;sql
-- 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;Goal Management
目标管理
Creating a Goal
创建目标
sql
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
);sql
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
);Updating Goal Progress
更新目标进度
sql
UPDATE goals SET
current_value = :value,
progress_percentage = ROUND(100.0 * :value / NULLIF(target_value, 0), 1),
updated_at = datetime('now')
WHERE id = :id;sql
UPDATE goals SET
current_value = :value,
progress_percentage = ROUND(100.0 * :value / NULLIF(target_value, 0), 1),
updated_at = datetime('now')
WHERE id = :id;Activity Timeline
活动时间线
Event Types
事件类型
| Type | Description |
|---|---|
| New session began |
| Session completed |
| Commitment extracted |
| Commitment marked done |
| Decision recorded |
| Goal updated |
| Goal finished |
| Git commit made |
| Change detected from outside |
| 类型 | 描述 |
|---|---|
| 新会话开始 |
| 会话结束 |
| 提取承诺 |
| 标记承诺完成 |
| 记录决策 |
| 更新目标 |
| 完成目标 |
| 执行Git提交 |
| 检测到外部变更 |
Recording Activity
记录活动
sql
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);sql
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);Knowledge Graph
知识图谱
Node Types
节点类型
| Type | Description |
|---|---|
| Software projects |
| Languages, frameworks, tools |
| Team members, stakeholders |
| Architectural patterns, methodologies |
| Development tools, services |
| 类型 | 描述 |
|---|---|
| 软件项目 |
| 语言、框架、工具 |
| 团队成员、利益相关者 |
| 架构模式、方法论 |
| 开发工具、服务 |
Creating/Updating Nodes
创建/更新节点
sql
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');sql
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');Creating/Updating Edges
创建/更新边
sql
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');sql
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');Relationship Types
关系类型
- - Project uses technology
uses - - Person knows technology
knows - - Person owns project
owns - - Project depends on another
depends_on - - General relationship
related_to
- - 项目使用技术
uses - - 人员掌握技术
knows - - 人员负责项目
owns - - 项目依赖其他项目
depends_on - - 通用关系
related_to
Encrypted Memory
加密存储
Manage sensitive data via the memory manager script:
bash
SCRIPT="$PLUGIN_ROOT/scripts/memory-manager.sh"通过存储管理脚本管理敏感数据:
bash
SCRIPT="$PLUGIN_ROOT/scripts/memory-manager.sh"Add a memory entry
Add a memory entry
bash "$SCRIPT" add "AWS API Key" "AKIA..." api_key "my-project" "aws,production"
bash "$SCRIPT" add "AWS API Key" "AKIA..." api_key "my-project" "aws,production"
Search memory
Search memory
bash "$SCRIPT" search "API key"
bash "$SCRIPT" search "API key"
List by category
List by category
bash "$SCRIPT" list credential
bash "$SCRIPT" list api_key my-project
bash "$SCRIPT" list credential
bash "$SCRIPT" list api_key my-project
View a specific entry
View a specific entry
bash "$SCRIPT" show 1
bash "$SCRIPT" show 1
Delete an entry
Delete an entry
bash "$SCRIPT" delete 1
bash "$SCRIPT" delete 1
Check encryption status
Check encryption status
bash "$SCRIPT" status
Categories: `credential`, `api_key`, `ip_address`, `phone`, `secret`, `note`, `general`bash "$SCRIPT" status
分类:`credential`(凭证)、`api_key`(API密钥)、`ip_address`(IP地址)、`phone`(电话)、`secret`(机密)、`note`(笔记)、`general`(通用)Queue Operations
队列操作
Check Queue Status
检查队列状态
sql
SELECT status, COUNT(*) as count
FROM queue
GROUP BY status;sql
SELECT status, COUNT(*) as count
FROM queue
GROUP BY status;Force Process Queue
强制处理队列
bash
bash "$PLUGIN_ROOT/scripts/process-queue.sh" --limit 10bash
bash "$PLUGIN_ROOT/scripts/process-queue.sh" --limit 10Check Worker State
检查工作进程状态
sql
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;sql
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;Daily Notes
每日笔记
sql
-- 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');sql
-- 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 Generation
ID生成
bash
undefinedbash
undefinedPattern for all entity IDs
所有实体ID的格式
C-0001 for commitments
C-0001 用于承诺
D-0001 for decisions
D-0001 用于决策
I-0001 for ideas
I-0001 用于想法
G-0001 for goals
G-0001 用于目标
P-0001 for patterns
P-0001 用于模式
N-0001 for knowledge nodes
N-0001 用于知识节点
E-0001 for knowledge edges
E-0001 用于知识边
SQL pattern to get next ID:
获取下一个ID的SQL格式:
SELECT '<PREFIX>-' || printf('%04d', COALESCE(MAX(CAST(SUBSTR(id, LENGTH('<PREFIX>') + 2) AS INTEGER)), 0) + 1)
FROM <table>;
undefinedSELECT '<PREFIX>-' || printf('%04d', COALESCE(MAX(CAST(SUBSTR(id, LENGTH('<PREFIX>') + 2) AS INTEGER)), 0) + 1)
FROM <table>;
undefinedOutput Guidelines
输出规范
When reporting captured items:
markdown
undefined报告捕获的内容时:
markdown
undefinedCaptured
已捕获内容
Commitment
承诺
- ID: C-0025
- Title: Implement caching layer
- Priority: High
- Due: This week
- Source: Conversation
- ID: C-0025
- 标题: 实现缓存层
- 优先级: 高
- 截止时间: 本周
- 来源: 对话
Decision
决策
- ID: D-0018
- Title: Use Redis for caching
- Category: Architecture
- Rationale: Better performance for distributed systems
- ID: D-0018
- 标题: 使用Redis进行缓存
- 分类: 架构
- 理由: 提升分布式系统的性能
Idea
想法
- ID: I-0015
- Title: GraphQL migration
- Type: Exploration
- Impact: High
undefined- ID: I-0015
- 标题: GraphQL迁移
- 类型: 探索
- 影响: 高
undefinedSilence Mode
静默模式
When operating via hooks (capture.sh), work silently:
- Do not output unless explicitly requested
- Log to activity_timeline for later review
- Items are reviewed via or
/secretary:status/secretary:briefing
通过钩子(capture.sh)运行时,静默工作:
- 除非明确要求,否则不输出内容
- 将日志记录到activity_timeline供后续查看
- 通过或
/secretary:status查看内容/secretary:briefing
Error Handling
错误处理
- Skip malformed or ambiguous items during extraction
- Log extraction failures to debug log
- Continue processing on individual item failures
- Retry failed queue items up to 3 times
- Expire unprocessed queue items after 24 hours
- 提取过程中跳过格式错误或模糊的内容
- 将提取失败记录到调试日志
- 单个内容处理失败时继续处理其他内容
- 失败的队列项最多重试3次
- 未处理的队列项24小时后过期
Related Commands
相关命令
- - Manage commitments (add, complete, defer, list)
/secretary:track - - Record decisions with rationale
/secretary:decide - - Capture ideas
/secretary:idea - - Show full dashboard
/secretary:status - - Generate context briefing
/secretary:briefing - - Manage encrypted memory
/secretary:memory - - Check/trigger worker processing
/secretary:worker
- - 管理承诺(添加、完成、延期、列出)
/secretary:track - - 记录带理由的决策
/secretary:decide - - 捕获想法
/secretary:idea - - 显示完整仪表盘
/secretary:status - - 生成上下文简报
/secretary:briefing - - 管理加密存储
/secretary:memory - - 检查/触发工作进程处理
/secretary:worker