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を入力して読み込まれたか確認します。

詳細

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;
検出パターン

会話の中で、次のような表現を探します。

コミットメント:

  • 「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...」

決定事項の記録

決定事項の記録
-- 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;
検出パターン

決定事項:

  • 「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...」
抽出プロセス
  1. 決定を示す表現を特定します
  2. 決定された内容を抽出します
  3. 理由を探します(「because」「since」「due to」)
  4. 言及された代替案を特定します(「instead of」「rather than」)
  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目標が完了しました
commitGit コミットが作成されました
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 - ワーカーの処理を確認/実行します

コメント