mcpField
S
secretary

secretary

github.com/mwguerra生产力3660 次安装26 周前更新
代码仓库

关于 secretary

Secretary 技能用于记录承诺、决策和想法,并维护目标、活动记录与知识图谱。它还涵盖加密记忆及队列和工作进程管理,适合跨会话跟进事项。

主要功能

  1. 01记录承诺、决策和想法
  2. 02跟踪目标与里程碑
  3. 03维护知识图谱
  4. 04管理加密记忆条目
  5. 05查看队列与工作进程状态

适用场景

  1. 01从对话中提取待办事项
  2. 02记录带有理由的决策
  3. 03跨会话跟踪目标进度
  4. 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;
检测模式

决策:

  • “决定……”“决定是……”
  • “就选……吧”“我们将使用……”
  • “方案是……”“计划是……”
  • “从现在起……”“今后……”
  • “不……而……”“与其……不如……”
提取流程
  1. 识别决策短语
  2. 提取已决定的内容
  3. 查找理由(“因为”“由于”)
  4. 识别提及的替代方案(“不……而……”“与其……不如……”)
  5. 分类:architecture、process、technology、design
  6. 确定范围: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