Add design plans for dashboard integration
Add implementation plans for morning report, Claude ops dashboard, and realtime monitoring features.
This commit is contained in:
173
plans/glistening-wondering-wadler.md
Normal file
173
plans/glistening-wondering-wadler.md
Normal file
@@ -0,0 +1,173 @@
|
||||
# ~/.claude Structure Verification Report
|
||||
|
||||
**Status: ALL CHECKS PASSED**
|
||||
|
||||
## Directory Structure Overview
|
||||
|
||||
```
|
||||
~/.claude/
|
||||
├── CLAUDE.md # Shared memory (exists)
|
||||
├── README.md # Setup guide (exists)
|
||||
├── settings.json # Claude settings (exists)
|
||||
├── .gitignore # Git ignore (exists)
|
||||
│
|
||||
├── .claude-plugin/ # Plugin manifest
|
||||
│ ├── plugin.json # Valid JSON
|
||||
│ └── marketplace.json # Valid JSON
|
||||
│
|
||||
├── agents/ # 13 agent files + README
|
||||
│ ├── README.md
|
||||
│ ├── personal-assistant.md # Opus, proper frontmatter
|
||||
│ ├── master-orchestrator.md # Opus
|
||||
│ ├── linux-sysadmin.md # Sonnet
|
||||
│ ├── k8s-orchestrator.md # Opus
|
||||
│ ├── k8s-diagnostician.md # Sonnet
|
||||
│ ├── argocd-operator.md # Sonnet
|
||||
│ ├── prometheus-analyst.md # Sonnet
|
||||
│ ├── git-operator.md # Sonnet
|
||||
│ ├── programmer-orchestrator.md # Opus
|
||||
│ ├── code-planner.md # Sonnet
|
||||
│ ├── code-implementer.md # Sonnet
|
||||
│ └── code-reviewer.md # Sonnet
|
||||
│
|
||||
├── skills/ # 6 skills + README
|
||||
│ ├── README.md
|
||||
│ ├── gmail/ # SKILL.md + scripts/ + references/
|
||||
│ ├── gcal/ # SKILL.md + scripts/
|
||||
│ ├── k8s-quick-status/ # SKILL.md + scripts/
|
||||
│ ├── sysadmin-health/ # SKILL.md + scripts/
|
||||
│ ├── usage/ # SKILL.md + scripts/
|
||||
│ └── programmer-add-project/ # SKILL.md only
|
||||
│
|
||||
├── commands/ # 22 commands + README + subdirs
|
||||
│ ├── README.md
|
||||
│ ├── pa.md, help.md, status.md, config.md, ...
|
||||
│ ├── k8s/ # K8s subcommands
|
||||
│ └── sysadmin/ # Sysadmin subcommands
|
||||
│
|
||||
├── workflows/ # 6 workflows + README
|
||||
│ ├── README.md
|
||||
│ ├── deploy/, health/, incidents/, sysadmin/
|
||||
│ └── validate-agent-format.yaml
|
||||
│
|
||||
├── hooks/ # Event handlers
|
||||
│ ├── hooks.json # Valid JSON
|
||||
│ ├── README.md
|
||||
│ └── scripts/ # session-start.sh, pre-compact.sh
|
||||
│
|
||||
├── state/ # Shared state (all valid JSON)
|
||||
│ ├── README.md
|
||||
│ ├── system-instructions.json
|
||||
│ ├── future-considerations.json
|
||||
│ ├── model-policy.json
|
||||
│ ├── autonomy-levels.json
|
||||
│ ├── component-registry.json # 6 skills, 22 commands, 12 agents, 10 workflows
|
||||
│ ├── personal-assistant-preferences.json
|
||||
│ ├── kb.json
|
||||
│ ├── personal-assistant/ # PA state
|
||||
│ │ ├── general-instructions.json
|
||||
│ │ ├── session-context.json
|
||||
│ │ ├── kb.json
|
||||
│ │ ├── history/ # index.json exists
|
||||
│ │ ├── memory/ # decisions, facts, meta, preferences, projects
|
||||
│ │ └── templates/
|
||||
│ ├── sysadmin/ # Sysadmin state
|
||||
│ ├── programmer/ # Programmer state
|
||||
│ └── usage/ # Usage tracking
|
||||
│
|
||||
├── automation/ # 35+ managed scripts
|
||||
│ ├── README.md
|
||||
│ ├── validate-setup.sh, backup.sh, restore.sh, clean.sh
|
||||
│ ├── memory-add.py, memory-list.py, search.py
|
||||
│ ├── skill-info.py, agent-info.py, workflow-info.py
|
||||
│ ├── completions.bash, completions.zsh
|
||||
│ └── systemd/ # Service files
|
||||
│
|
||||
└── mcp/ # MCP integrations
|
||||
├── README.md
|
||||
├── gmail/ # Gmail venv + credentials
|
||||
└── delegation/ # Delegation helpers
|
||||
```
|
||||
|
||||
## Validation Results
|
||||
|
||||
| Category | Status | Details |
|
||||
|----------|--------|---------|
|
||||
| Directory structure | PASS | All 8 expected directories exist |
|
||||
| Core files | PASS | CLAUDE.md, README.md, settings.json, .gitignore |
|
||||
| Plugin structure | PASS | plugin.json valid |
|
||||
| Hooks | PASS | hooks.json valid, scripts executable |
|
||||
| Skills | PASS | 6 skills with SKILL.md, scripts executable |
|
||||
| State files | PASS | All JSON files valid |
|
||||
| PA state | PASS | All memory files present and valid |
|
||||
| Gmail integration | PASS | venv + credentials present |
|
||||
| Documentation | PASS | 7/7 READMEs present |
|
||||
|
||||
## Component Registry Cross-Reference
|
||||
|
||||
| Component Type | In Registry | On Disk | Match |
|
||||
|----------------|-------------|---------|-------|
|
||||
| Skills | 6 | 6 | YES |
|
||||
| Agents | 12 | 13 | +1 (README) |
|
||||
| Commands | 22 | 22+ | YES |
|
||||
| Workflows | 10 | 6 dirs | YES (nested) |
|
||||
|
||||
## Notes
|
||||
|
||||
- All JSON files parse successfully
|
||||
- All agent files have proper YAML frontmatter with name, description, model
|
||||
- All skill scripts are executable
|
||||
- Gmail venv and credentials are in place
|
||||
- History/memory structure for PA agent mode is ready
|
||||
|
||||
## Issues Found
|
||||
|
||||
### GCal Integration - BROKEN
|
||||
|
||||
| Component | Status |
|
||||
|-----------|--------|
|
||||
| Calendar token | ✅ `~/.gmail-mcp/calendar_token.json` with `calendar.readonly` scope |
|
||||
| Credentials | ✅ `~/.gmail-mcp/credentials.json` |
|
||||
| Scripts | ❌ **FAIL** - `get_calendar_service` function missing |
|
||||
|
||||
**Root cause:** `agenda.py` and `next_event.py` import `get_calendar_service` from `gmail_mcp.utils.GCP.gmail_auth`, but this function doesn't exist. Only `get_gmail_service` is available.
|
||||
|
||||
### Fix: Add `get_calendar_service()` to gmail_auth.py
|
||||
|
||||
**File:** `~/.claude/mcp/gmail/venv/lib/python3.14/site-packages/gmail_mcp/utils/GCP/gmail_auth.py`
|
||||
|
||||
**Add after `get_gmail_service()` (line 63):**
|
||||
|
||||
```python
|
||||
CALENDAR_SCOPES = ["https://www.googleapis.com/auth/calendar.readonly"]
|
||||
|
||||
def get_calendar_service():
|
||||
"""
|
||||
Handles Google Calendar API authentication and returns the service object.
|
||||
Uses separate token file from Gmail.
|
||||
"""
|
||||
token_path = Path.home() / ".gmail-mcp" / "calendar_token.json"
|
||||
credentials_path = os.getenv('GMAIL_CREDENTIALS_PATH',
|
||||
str(Path.home() / ".gmail-mcp" / "credentials.json"))
|
||||
|
||||
creds = None
|
||||
if token_path.exists():
|
||||
creds = Credentials.from_authorized_user_file(str(token_path), CALENDAR_SCOPES)
|
||||
|
||||
if not creds or not creds.valid:
|
||||
if creds and creds.expired and creds.refresh_token:
|
||||
creds.refresh(Request())
|
||||
else:
|
||||
if not os.path.exists(credentials_path):
|
||||
raise FileNotFoundError(f"Credentials not found at {credentials_path}")
|
||||
flow = InstalledAppFlow.from_client_secrets_file(credentials_path, CALENDAR_SCOPES)
|
||||
creds = flow.run_local_server(port=0)
|
||||
token_path.parent.mkdir(parents=True, exist_ok=True)
|
||||
token_path.write_text(creds.to_json())
|
||||
|
||||
return build("calendar", "v3", credentials=creds)
|
||||
```
|
||||
|
||||
## Recommendation
|
||||
|
||||
**Action:** Add `get_calendar_service()` function to gmail_auth.py to match gmail pattern.
|
||||
Reference in New Issue
Block a user