skills/upgrade/SKILL.md
Compare user's data files against the current plugin scaffold to find and fix structural drift — missing sections, wrong placements, format mismatches, CLAUDE.md rule drift, stale placeholders, and directory gaps. Use when the user says "upgrade", "check for updates", "compare scaffold", or after a plugin update.
npx skillsauth add EqualsGroup/claude-executive-assistant upgradeInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
When the plugin evolves — new sections added, conventions changed, rules updated
— existing user data directories fall out of sync. /improve handles content
quality; /upgrade handles structural alignment with the canonical scaffold.
Run this after plugin updates, or periodically to catch drift.
Phase 1: Read (main agent, parallel reads)
│
├── Read all user data files from $EA_ROOT/
├── Read all scaffold templates from ${CLAUDE_PLUGIN_ROOT}/scaffold/
│
▼
Phase 2: Analyze (4 parallel subagents — all research-only, no file edits)
│
├── Subagent 1: Structure & Sections — missing/extra/reordered sections
├── Subagent 2: CLAUDE.md Drift — rules, routing, registry accuracy
├── Subagent 3: Conventions & Format — heading levels, frontmatter, naming
└── Subagent 4: Placement & Migration — wrongly placed content, deprecated patterns
│
▼
Phase 3: Apply (main agent — consolidates findings, applies tiered changes)
│
▼
Phase 4: Report (main agent — structured summary)
Why this shape: The four concerns are independent reads of the same data. Parallel subagents cut wall-clock time. The main agent handles all file I/O.
Step 1 — Read all user data files in parallel:
From $EA_ROOT/:
CLAUDE.mdmemory/ (including memory/people/*)sync/sources.mdoutputs/Step 2 — Read all scaffold templates in parallel:
From ${CLAUDE_PLUGIN_ROOT}/scaffold/:
CLAUDE.mdmemory/ (including memory/people/*)sync/sources.mdAlso list the expected directory structure:
find "${CLAUDE_PLUGIN_ROOT}/scaffold/" -type d | sed "s|${CLAUDE_PLUGIN_ROOT}/scaffold/||"
Step 3 — Prepare subagent payloads:
Each subagent receives: full content of all user data files + full content of all scaffold templates. Pass content directly — subagents should NOT re-read files.
Launch all 4 subagents simultaneously. Each is research-only — returns structured findings, edits nothing.
Input: All user data files + all scaffold templates Task:
For each scaffold file, compare against the corresponding user data file:
Missing sections: Scaffold has ## Section or ### Section headers
that don't exist in the user's file. These represent new features or
organizational improvements added since setup.
#### [Name]). Only flag missing
structural sections.Extra sections: User's file has sections not in the scaffold. These are fine if they contain real data — flag only if they look like they were copied from an old scaffold version and never populated (empty or still have placeholder text).
Section ordering: Check if the user's sections follow the scaffold's ordering. Minor drift is fine — flag only when it causes functional issues (e.g., Dashboard not at top of my-work.md, HIGH Sensitivity not at top of dynamics.md).
Missing directories: Check the user's directory structure against the scaffold's expected directories:
memory/people/outputs/meeting-prep/outputs/assessments/outputs/drafts/outputs/proposals/outputs/reviews/sync/Missing files: Scaffold has files that don't exist in the user's data at all (e.g., a new memory file was added to the scaffold).
Output: For each finding: file, section, issue type (missing/extra/ordering/ directory), scaffold reference, recommended action.
Input: User's CLAUDE.md + scaffold CLAUDE.md Task:
The scaffold CLAUDE.md contains the canonical rules, routing table, and conventions. The user's CLAUDE.md should have all of these plus their customizations. Compare them:
Missing rules/instructions: Scaffold has paragraphs, bullet points, or sections that don't appear in the user's file. These are new rules added since setup. For each, determine:
[Your Name])? → Skip if the user
has already customized this section.Modified rules: User's file has a rule that's similar to but different from the scaffold version. Flag only if the scaffold version is strictly better (e.g., more complete, fixes a bug in the instruction). Don't flag legitimate user customizations.
Memory File Registry accuracy: Compare the registry table in the user's CLAUDE.md against the scaffold's. Check:
Outdated conventions: User's CLAUDE.md references conventions or patterns that the scaffold no longer uses.
Line count: Check if user's CLAUDE.md exceeds ~200 lines. If so, flag sections that could be moved to memory files per the Context Placement Rule.
Output: For each finding: location (line range or section), issue type (missing-rule/modified-rule/registry-drift/outdated-convention/bloated), scaffold reference, recommended action. Include the exact text to add/replace where applicable.
Input: All user data files + all scaffold templates Task:
Frontmatter: Each memory file and sync/sources.md should start with
*Last synced: [date or never]*. CLAUDE.md should start with
*Last improved: [date or never]*. Flag files missing this.
Heading hierarchy: Check that heading levels are consistent:
# Title## Section### Subsection# → ### without ##)People file format: Each file in memory/people/ should follow:
# Full Name
**Role:** ...
**Domain:** ...
## Working Style
## Coaching Points
## Performance Review Insights
## Current Focus
## Recent Context
Flag files missing required sections or using wrong heading levels.
Flag files not using kebab-case naming (first-last.md).
Placeholder remnants: Scan all files for unfilled [square bracket]
placeholders. Ignore:
[text](url)[x] or [ ][Name] in meetings.md
template sections)Stale sync timestamps: Flag any file where *Last synced:* is older
than 30 days (suggests the file isn't being maintained).
People migration check: If memory/people.md exists (monolithic format),
flag for migration to per-person files in memory/people/.
Output: For each finding: file, location, issue type, recommended fix.
Input: All user data files + all scaffold templates + scaffold CLAUDE.md (for Context Placement Rules and format reference) Task:
Wrongly placed data: Using the format reference from CLAUDE.md, check whether content in each file actually belongs there:
my-work.md →
should be in my-work.md Master Listmemory/people/ → should be in person filesCLAUDE.md → should be in a memory filemy-work.md → should be in projects.md
(my-work.md tracks your tasks, not project status)meetings.md → should be in meetings.mddynamics.md → should be in
dynamics.mdDeprecated patterns: Check for patterns the scaffold no longer uses:
people.md (should be per-person files)~~text~~ in memory files (should be clean-removed)[x] completed checkboxes still present (should be removed)sources.md structure: Compare user's sync/sources.md against scaffold:
Output directory naming: Check files in outputs/ follow conventions:
meeting-prep/YYYY-MM-DD-[name].mdassessments/[name]/drafts/YYYY-MM-DD-[recipient]-[topic].mdreviews/YYYY-MM-DD-[doc-name].mdOutput: For each finding: file, content snippet, current location, correct location, issue type, recommended action.
Consolidate all 4 subagent results. Apply in three tiers:
These are safe structural additions that don't modify existing content:
*Last synced: never* or *Last improved: never*)~~strikethroughs~~, [x] completed
items, revision annotations, self-referential commentaryPresent as a single list for user to approve/reject:
Report template:
## Upgrade Summary
**Plugin version:** [version from plugin.json]
**Data location:** $EA_ROOT
### Structure Alignment
| File | Missing Sections | Added | Extra (kept) |
|------|-----------------|-------|--------------|
### Directories
- [Created/already existed]
### CLAUDE.md Drift
| Change | Type | Action |
|--------|------|--------|
| [description] | missing-rule / registry-drift / ... | auto-applied / proposed / reported |
CLAUDE.md line count: [N] (target: ≤200)
### Format Fixes Applied
- [file] — [what was fixed]
### Content Placement Issues
| Content | From | Should Be In | Action |
|---------|------|-------------|--------|
| [snippet] | [file:section] | [file:section] | proposed / reported |
### Deprecated Patterns Removed
- [file] — [what was removed]
### Stale Placeholders (fill when convenient)
- [file:line] — `[placeholder text]`
### Proposed Changes (Tier 2 — awaiting approval)
- [change and rationale]
### Suggestions (Tier 3 — for later)
- [suggestion and rationale]
### Stats
- X sections added
- X directories created
- X rules synced to CLAUDE.md
- X format issues fixed
- X deprecated patterns removed
- X placement issues found
- X stale placeholders found
## Important Context section or any section the user has clearly customized (contains no [placeholder] text).upgrade: align data files with plugin scaffold vX.Y.Zdevelopment
Sync memory files from external sources (~~documents, ~~messaging, ~~code) using parallel subagents. Use when the user says "sync", "refresh", "pull latest", or "update from sources".
testing
Interactive setup wizard — initializes the EA memory folder, fills in placeholders, and checks connector availability. Use when the user says "setup", "initialize", "get started", or when the SessionStart hook reports memory is not initialized.
testing
Review a document with full memory context, then post structured comments on specific sections. Use when the user says "review this", "look at this doc", "give me feedback on", or shares a document link for analysis.
documentation
Generate structured meeting prep docs using memory context. Usage: /meeting-prep [meeting-type] Examples: /meeting-prep standup, /meeting-prep 1:1 Run without arguments to auto-detect from your calendar. Also triggers on "prep me for", "meeting with", "1:1 with", "prepare for".