CIRs, information filtering, entity resolution, dedup-before-writing protocol, memory management.
From chief-of-staffnpx claudepluginhub tenfourty/cc-marketplace --plugin chief-of-staffThis skill uses the workspace's default tool permissions.
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Guides Payload CMS config (payload.config.ts), collections, fields, hooks, access control, APIs. Debugs validation errors, security, relationships, queries, transactions, hook behavior.
This skill defines how the Chief of Staff filters, prioritises, and surfaces information for the executive.
CIRs are the backbone of information management (McChrystal Group framework). They define:
CIRs are stored in a pinned kbx note tagged cir and established during /setup. They appear in kbx context output at session start.
Tier 1 — Immediate: Surface as soon as detected. Don't wait for a briefing. Examples:
Tier 2 — Daily:
Include in the morning briefing via /briefing. Examples:
Tier 3 — Weekly:
Include in the weekly review via /review. Examples:
When scanning any source (kbx, task backend, chat, project tracker), evaluate each item:
A good Chief of Staff doesn't show everything — they show the right things. The executive's attention is the scarcest resource. Every item surfaced should justify the cognitive load it creates.
If unsure whether something is worth surfacing: err on the side of including it, but put it at the end under "Signals" or "For Your Awareness" rather than "Immediate Attention."
The highest-value information management is connecting signals across sources:
| Pattern | What It Means |
|---|---|
| Same topic in chat + email + kbx transcript + project tracker | Convergence signal: this is important and needs attention |
| Person mentioned in 3+ contexts this week | This person is central to something — check in with them |
| Project in project tracker has no recent chat, email, or kbx activity | Possibly stalled or deprioritised silently |
| Decision from meeting not reflected in task backend | Execution gap: decision made but not actioned |
| Action item in task backend but no follow-up in any channel | Dropped ball: nobody's working on this |
| Email commitment not tracked in task backend | Dropped ball: promised something via email but never captured it |
| External stakeholder emailing frequently with no kbx/chat activity | Relationship happening outside internal channels — may need visibility |
When processing any input (user message, meeting transcript, chat thread), resolve all entity references before acting.
When multiple matches exist:
When the user uses a term kbx doesn't know:
kbx memory add "Term: [TERM]" --body "[meaning and context]" --tags glossarykbx note edit <path> --append "- **[TERM]**: [meaning]"Entity context goes stale. When referencing a person or project from kbx:
updated_at and last_mentioned_at fields/debrief, check if any attendees' profiles were updated. If they weren't and should have been, flag it.Before writing any fact, entity update, or Open Items entry to a kbx entity — whether from meeting transcripts, messaging conversations, email threads, or any other source — run this dedup check to prevent duplicate information accumulating over time.
kbx view <entity-path> --plain| Decision | When | Action |
|---|---|---|
| SKIP | Information is already captured (same meaning, even if phrased differently) | Do nothing. Log "SKIP: [reason]" internally. |
| MERGE | Known but stale, incomplete, or less specific — the new information adds meaningful detail | Update the existing entry in place using the Edit tool — read the entity file, find the existing fact or Open Item line, replace it with the updated version. |
| CREATE | Genuinely new information not present on the entity | Write normally (kbx memory add --entity, kbx person edit, or Edit tool for Open Items). |
This is an in-context check — no extra tool calls beyond the kbx view that commands already perform. The LLM compares existing content with candidate writes in a single reasoning step. Do not over-engineer: if the entity file is short, scan it visually. If long, focus on the ## Facts and ## Open Items sections.
Future improvement: When
kbx memory similar "text" --entity "Name" --threshold 0.85becomes available, call it first to get embedding-based candidate matches, then pass only those candidates to the LLM for the CREATE/MERGE/SKIP decision. This is more reliable (vector similarity catches paraphrases the LLM might miss in a long file) and cheaper (shorter context). Until then, the full entity file read + in-context comparison is the correct approach.
When writing multiple items to the same entity (common in debriefs), read the entity file once, then apply the dedup check to all candidate writes together before executing any of them.
kbx IS the memory system. Manage information across two tiers:
Pinned notes appear in kbx context output, loaded every session:
cir)initiative)cadence)meetings)Keep pinned notes focused and current. If they grow too large, refactor into smaller, more specific notes.
All indexed content is searchable via kbx search:
decision)kbx note edit <path> --pin)kbx note edit <path> --append "...")kbx note edit <path> --body "..." with updated content)kbx note edit <path> --unpin)When kbx context is loaded at session start, also check for stale entity profiles:
kbx entity stale --days 30 --type person --json[Freshness] N pinned people have stale profiles — consider reviewing before meetings.
All information has a shelf life. Track and manage it:
| Type | Freshness Window | Action When Stale |
|---|---|---|
| Task status | 3 days | Flag in briefing |
| Initiative status | 1 week | Flag in review |
| Person context | 1 month | Verify on next interaction |
| Decision | 3 months | Flag for revisit |
| CIRs | 1 month | Suggest reassessment |
| Priorities | 2 weeks | Suggest check-in |
These windows are NOT guidelines — they are thresholds. When presenting information older than the freshness window, you MUST flag it. Do not silently present stale data as current.