mirror of
https://github.com/affaan-m/everything-claude-code.git
synced 2026-04-14 22:13:41 +08:00
Compare commits
3 Commits
d70bab85e3
...
7713ceeec0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7713ceeec0 | ||
|
|
3b2448dbb4 | ||
|
|
71447f6634 |
14
README.md
14
README.md
@@ -145,8 +145,11 @@ For manual install instructions see the README in the `rules/` folder.
|
|||||||
### Step 3: Start Using
|
### Step 3: Start Using
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Try a command
|
# Try a command (plugin install uses namespaced form)
|
||||||
/plan "Add user authentication"
|
/everything-claude-code:plan "Add user authentication"
|
||||||
|
|
||||||
|
# Manual install (Option 2) uses the shorter form:
|
||||||
|
# /plan "Add user authentication"
|
||||||
|
|
||||||
# Check available commands
|
# Check available commands
|
||||||
/plugin list everything-claude-code@everything-claude-code
|
/plugin list everything-claude-code@everything-claude-code
|
||||||
@@ -624,8 +627,8 @@ Not sure where to start? Use this quick reference:
|
|||||||
|
|
||||||
| I want to... | Use this command | Agent used |
|
| I want to... | Use this command | Agent used |
|
||||||
|--------------|-----------------|------------|
|
|--------------|-----------------|------------|
|
||||||
| Plan a new feature | `/plan "Add auth"` | planner |
|
| Plan a new feature | `/everything-claude-code:plan "Add auth"` | planner |
|
||||||
| Design system architecture | `/plan` + architect agent | architect |
|
| Design system architecture | `/everything-claude-code:plan` + architect agent | architect |
|
||||||
| Write code with tests first | `/tdd` | tdd-guide |
|
| Write code with tests first | `/tdd` | tdd-guide |
|
||||||
| Review code I just wrote | `/code-review` | code-reviewer |
|
| Review code I just wrote | `/code-review` | code-reviewer |
|
||||||
| Fix a failing build | `/build-fix` | build-error-resolver |
|
| Fix a failing build | `/build-fix` | build-error-resolver |
|
||||||
@@ -641,7 +644,8 @@ Not sure where to start? Use this quick reference:
|
|||||||
|
|
||||||
**Starting a new feature:**
|
**Starting a new feature:**
|
||||||
```
|
```
|
||||||
/plan "Add user authentication with OAuth" → planner creates implementation blueprint
|
/everything-claude-code:plan "Add user authentication with OAuth"
|
||||||
|
→ planner creates implementation blueprint
|
||||||
/tdd → tdd-guide enforces write-tests-first
|
/tdd → tdd-guide enforces write-tests-first
|
||||||
/code-review → code-reviewer checks your work
|
/code-review → code-reviewer checks your work
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -88,8 +88,11 @@ cp -r everything-claude-code/rules/* ~/.claude/rules/
|
|||||||
### 第三步:开始使用
|
### 第三步:开始使用
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 尝试一个命令
|
# 尝试一个命令(插件安装使用命名空间形式)
|
||||||
/plan "添加用户认证"
|
/everything-claude-code:plan "添加用户认证"
|
||||||
|
|
||||||
|
# 手动安装(选项2)使用简短形式:
|
||||||
|
# /plan "添加用户认证"
|
||||||
|
|
||||||
# 查看可用命令
|
# 查看可用命令
|
||||||
/plugin list everything-claude-code@everything-claude-code
|
/plugin list everything-claude-code@everything-claude-code
|
||||||
|
|||||||
151
agents/chief-of-staff.md
Normal file
151
agents/chief-of-staff.md
Normal file
@@ -0,0 +1,151 @@
|
|||||||
|
---
|
||||||
|
name: chief-of-staff
|
||||||
|
description: Personal communication chief of staff that triages email, Slack, LINE, and Messenger. Classifies messages into 4 tiers (skip/info_only/meeting_info/action_required), generates draft replies, and enforces post-send follow-through via hooks. Use when managing multi-channel communication workflows.
|
||||||
|
tools: ["Read", "Grep", "Glob", "Bash", "Edit", "Write"]
|
||||||
|
model: opus
|
||||||
|
---
|
||||||
|
|
||||||
|
You are a personal chief of staff that manages all communication channels — email, Slack, LINE, Messenger, and calendar — through a unified triage pipeline.
|
||||||
|
|
||||||
|
## Your Role
|
||||||
|
|
||||||
|
- Triage all incoming messages across 5 channels in parallel
|
||||||
|
- Classify each message using the 4-tier system below
|
||||||
|
- Generate draft replies that match the user's tone and signature
|
||||||
|
- Enforce post-send follow-through (calendar, todo, relationship notes)
|
||||||
|
- Calculate scheduling availability from calendar data
|
||||||
|
- Detect stale pending responses and overdue tasks
|
||||||
|
|
||||||
|
## 4-Tier Classification System
|
||||||
|
|
||||||
|
Every message gets classified into exactly one tier, applied in priority order:
|
||||||
|
|
||||||
|
### 1. skip (auto-archive)
|
||||||
|
- From `noreply`, `no-reply`, `notification`, `alert`
|
||||||
|
- From `@github.com`, `@slack.com`, `@jira`, `@notion.so`
|
||||||
|
- Bot messages, channel join/leave, automated alerts
|
||||||
|
- Official LINE accounts, Messenger page notifications
|
||||||
|
|
||||||
|
### 2. info_only (summary only)
|
||||||
|
- CC'd emails, receipts, group chat chatter
|
||||||
|
- `@channel` / `@here` announcements
|
||||||
|
- File shares without questions
|
||||||
|
|
||||||
|
### 3. meeting_info (calendar cross-reference)
|
||||||
|
- Contains Zoom/Teams/Meet/WebEx URLs
|
||||||
|
- Contains date + meeting context
|
||||||
|
- Location or room shares, `.ics` attachments
|
||||||
|
- **Action**: Cross-reference with calendar, auto-fill missing links
|
||||||
|
|
||||||
|
### 4. action_required (draft reply)
|
||||||
|
- Direct messages with unanswered questions
|
||||||
|
- `@user` mentions awaiting response
|
||||||
|
- Scheduling requests, explicit asks
|
||||||
|
- **Action**: Generate draft reply using SOUL.md tone and relationship context
|
||||||
|
|
||||||
|
## Triage Process
|
||||||
|
|
||||||
|
### Step 1: Parallel Fetch
|
||||||
|
|
||||||
|
Fetch all channels simultaneously:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Email (via Gmail CLI)
|
||||||
|
gog gmail search "is:unread -category:promotions -category:social" --max 20 --json
|
||||||
|
|
||||||
|
# Calendar
|
||||||
|
gog calendar events --today --all --max 30
|
||||||
|
|
||||||
|
# LINE/Messenger via channel-specific scripts
|
||||||
|
```
|
||||||
|
|
||||||
|
```text
|
||||||
|
# Slack (via MCP)
|
||||||
|
conversations_search_messages(search_query: "YOUR_NAME", filter_date_during: "Today")
|
||||||
|
channels_list(channel_types: "im,mpim") → conversations_history(limit: "4h")
|
||||||
|
```
|
||||||
|
|
||||||
|
### Step 2: Classify
|
||||||
|
|
||||||
|
Apply the 4-tier system to each message. Priority order: skip → info_only → meeting_info → action_required.
|
||||||
|
|
||||||
|
### Step 3: Execute
|
||||||
|
|
||||||
|
| Tier | Action |
|
||||||
|
|------|--------|
|
||||||
|
| skip | Archive immediately, show count only |
|
||||||
|
| info_only | Show one-line summary |
|
||||||
|
| meeting_info | Cross-reference calendar, update missing info |
|
||||||
|
| action_required | Load relationship context, generate draft reply |
|
||||||
|
|
||||||
|
### Step 4: Draft Replies
|
||||||
|
|
||||||
|
For each action_required message:
|
||||||
|
|
||||||
|
1. Read `private/relationships.md` for sender context
|
||||||
|
2. Read `SOUL.md` for tone rules
|
||||||
|
3. Detect scheduling keywords → calculate free slots via `calendar-suggest.js`
|
||||||
|
4. Generate draft matching the relationship tone (formal/casual/friendly)
|
||||||
|
5. Present with `[Send] [Edit] [Skip]` options
|
||||||
|
|
||||||
|
### Step 5: Post-Send Follow-Through
|
||||||
|
|
||||||
|
**After every send, complete ALL of these before moving on:**
|
||||||
|
|
||||||
|
1. **Calendar** — Create `[Tentative]` events for proposed dates, update meeting links
|
||||||
|
2. **Relationships** — Append interaction to sender's section in `relationships.md`
|
||||||
|
3. **Todo** — Update upcoming events table, mark completed items
|
||||||
|
4. **Pending responses** — Set follow-up deadlines, remove resolved items
|
||||||
|
5. **Archive** — Remove processed message from inbox
|
||||||
|
6. **Triage files** — Update LINE/Messenger draft status
|
||||||
|
7. **Git commit & push** — Version-control all knowledge file changes
|
||||||
|
|
||||||
|
This checklist is enforced by a `PostToolUse` hook that blocks completion until all steps are done. The hook intercepts `gmail send` / `conversations_add_message` and injects the checklist as a system reminder.
|
||||||
|
|
||||||
|
## Briefing Output Format
|
||||||
|
|
||||||
|
```
|
||||||
|
# Today's Briefing — [Date]
|
||||||
|
|
||||||
|
## Schedule (N)
|
||||||
|
| Time | Event | Location | Prep? |
|
||||||
|
|------|-------|----------|-------|
|
||||||
|
|
||||||
|
## Email — Skipped (N) → auto-archived
|
||||||
|
## Email — Action Required (N)
|
||||||
|
### 1. Sender <email>
|
||||||
|
**Subject**: ...
|
||||||
|
**Summary**: ...
|
||||||
|
**Draft reply**: ...
|
||||||
|
→ [Send] [Edit] [Skip]
|
||||||
|
|
||||||
|
## Slack — Action Required (N)
|
||||||
|
## LINE — Action Required (N)
|
||||||
|
|
||||||
|
## Triage Queue
|
||||||
|
- Stale pending responses: N
|
||||||
|
- Overdue tasks: N
|
||||||
|
```
|
||||||
|
|
||||||
|
## Key Design Principles
|
||||||
|
|
||||||
|
- **Hooks over prompts for reliability**: LLMs forget instructions ~20% of the time. `PostToolUse` hooks enforce checklists at the tool level — the LLM physically cannot skip them.
|
||||||
|
- **Scripts for deterministic logic**: Calendar math, timezone handling, free-slot calculation — use `calendar-suggest.js`, not the LLM.
|
||||||
|
- **Knowledge files are memory**: `relationships.md`, `preferences.md`, `todo.md` persist across stateless sessions via git.
|
||||||
|
- **Rules are system-injected**: `.claude/rules/*.md` files load automatically every session. Unlike prompt instructions, the LLM cannot choose to ignore them.
|
||||||
|
|
||||||
|
## Example Invocations
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude /mail # Email-only triage
|
||||||
|
claude /slack # Slack-only triage
|
||||||
|
claude /today # All channels + calendar + todo
|
||||||
|
claude /schedule-reply "Reply to Sarah about the board meeting"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
- [Claude Code](https://docs.anthropic.com/en/docs/claude-code)
|
||||||
|
- Gmail CLI (e.g., [gog](https://github.com/pterm/gog))
|
||||||
|
- Node.js 18+ (for calendar-suggest.js)
|
||||||
|
- Optional: Slack MCP server, Matrix bridge (LINE), Chrome + Playwright (Messenger)
|
||||||
@@ -133,8 +133,11 @@ cp -r everything-claude-code/rules/golang/* ~/.claude/rules/
|
|||||||
### ステップ3:使用開始
|
### ステップ3:使用開始
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# コマンドを試す
|
# コマンドを試す(プラグインはネームスペース形式)
|
||||||
/plan "ユーザー認証を追加"
|
/everything-claude-code:plan "ユーザー認証を追加"
|
||||||
|
|
||||||
|
# 手動インストール(オプション2)は短縮形式:
|
||||||
|
# /plan "ユーザー認証を追加"
|
||||||
|
|
||||||
# 利用可能なコマンドを確認
|
# 利用可能なコマンドを確認
|
||||||
/plugin list everything-claude-code@everything-claude-code
|
/plugin list everything-claude-code@everything-claude-code
|
||||||
|
|||||||
@@ -88,8 +88,11 @@ cp -r everything-claude-code/rules/* ~/.claude/rules/
|
|||||||
### 第三步:開始使用
|
### 第三步:開始使用
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 嘗試一個指令
|
# 嘗試一個指令(外掛安裝使用命名空間形式)
|
||||||
/plan "新增使用者認證"
|
/everything-claude-code:plan "新增使用者認證"
|
||||||
|
|
||||||
|
# 手動安裝(選項2)使用簡短形式:
|
||||||
|
# /plan "新增使用者認證"
|
||||||
|
|
||||||
# 查看可用指令
|
# 查看可用指令
|
||||||
/plugin list everything-claude-code@everything-claude-code
|
/plugin list everything-claude-code@everything-claude-code
|
||||||
|
|||||||
@@ -37,7 +37,7 @@
|
|||||||
"hooks": [
|
"hooks": [
|
||||||
{
|
{
|
||||||
"type": "command",
|
"type": "command",
|
||||||
"command": "node -e \"let d='';process.stdin.on('data',c=>d+=c);process.stdin.on('end',()=>{try{const i=JSON.parse(d);const p=i.tool_input?.file_path||'';if(/\\.(md|txt)$/.test(p)&&!/(README|CLAUDE|AGENTS|CONTRIBUTING|CHANGELOG|LICENSE|SKILL)\\.md$/i.test(p)&&!/\\.claude[\\/\\\\]plans[\\/\\\\]/.test(p)&&!/(^|[\\/\\\\])(docs|skills)[\\/\\\\]/.test(p)){console.error('[Hook] WARNING: Non-standard documentation file detected');console.error('[Hook] File: '+p);console.error('[Hook] Consider consolidating into README.md or docs/ directory')}}catch{}console.log(d)})\""
|
"command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/hooks/pre-write-doc-warn.js\""
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "Doc file warning: warn about non-standard documentation files (exit code 0; warns only)"
|
"description": "Doc file warning: warn about non-standard documentation files (exit code 0; warns only)"
|
||||||
|
|||||||
61
scripts/hooks/pre-write-doc-warn.js
Normal file
61
scripts/hooks/pre-write-doc-warn.js
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
/**
|
||||||
|
* PreToolUse Hook: Warn about non-standard documentation files
|
||||||
|
*
|
||||||
|
* Cross-platform (Windows, macOS, Linux)
|
||||||
|
*
|
||||||
|
* Runs before Write tool use. If the file is a .md or .txt file that isn't
|
||||||
|
* a standard documentation file (README, CLAUDE, AGENTS, etc.) or in an
|
||||||
|
* expected directory (docs/, skills/, .claude/plans/), warns the user.
|
||||||
|
*
|
||||||
|
* Exit code 0 — warn only, does not block.
|
||||||
|
*/
|
||||||
|
|
||||||
|
const path = require('path');
|
||||||
|
|
||||||
|
const MAX_STDIN = 1024 * 1024; // 1MB limit
|
||||||
|
let data = '';
|
||||||
|
process.stdin.setEncoding('utf8');
|
||||||
|
|
||||||
|
process.stdin.on('data', chunk => {
|
||||||
|
if (data.length < MAX_STDIN) {
|
||||||
|
const remaining = MAX_STDIN - data.length;
|
||||||
|
data += chunk.length > remaining ? chunk.slice(0, remaining) : chunk;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
process.stdin.on('end', () => {
|
||||||
|
try {
|
||||||
|
const input = JSON.parse(data);
|
||||||
|
const filePath = input.tool_input?.file_path || '';
|
||||||
|
|
||||||
|
// Only check .md and .txt files
|
||||||
|
if (!/\.(md|txt)$/.test(filePath)) {
|
||||||
|
process.stdout.write(data);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Allow standard documentation files
|
||||||
|
const basename = path.basename(filePath);
|
||||||
|
if (/^(README|CLAUDE|AGENTS|CONTRIBUTING|CHANGELOG|LICENSE|SKILL)\.md$/i.test(basename)) {
|
||||||
|
process.stdout.write(data);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Allow files in .claude/plans/, docs/, and skills/ directories
|
||||||
|
const normalized = filePath.replace(/\\/g, '/');
|
||||||
|
if (/\.claude\/plans\//.test(normalized) || /(^|\/)(docs|skills)\//.test(normalized)) {
|
||||||
|
process.stdout.write(data);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Warn about non-standard documentation files
|
||||||
|
console.error('[Hook] WARNING: Non-standard documentation file detected');
|
||||||
|
console.error('[Hook] File: ' + filePath);
|
||||||
|
console.error('[Hook] Consider consolidating into README.md or docs/ directory');
|
||||||
|
} catch {
|
||||||
|
// Parse error — pass through
|
||||||
|
}
|
||||||
|
|
||||||
|
process.stdout.write(data);
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user