Problem it solves: feedback and 1:1 signal usually live only in spoken conversation and disappear. This plugin captures the 1:1, turns verbal feedback into written SBI, persists it, and forces a follow-up loop so nothing goes silent.
After a 1:1, pulls the Fireflies transcript, captures a 0-10 satisfaction score plus its driver, detects signals, computes risk and trend, and writes a private 1:1 Sessions row. Pushes only four scalar indicators to the public Team Composition row.
- Resolve account and transcriptDetermines the account, resolves the 1:1 Sessions database from the manifest, then pulls the Fireflies transcript for the teammate and date.
- Extract signals with quotesSets each boolean satisfaction signal from the transcript, capturing a verbatim quote for every flag that fires.
- Compute the score deterministicallyApplies the fixed-arithmetic scoring formula to produce the 0-10 score - never an LLM guess.
- Write the private session rowCreates a 1:1 Sessions row with the score, risk level, driver, sectioned summary, action items, blockers, and asks-of-manager.
- Update the public dashboardPushes only the at-a-glance fields - score, risk, trend, last 1:1 date, primary driver - to the public Team Composition row.
Gotcha: The score is never picked by vibe - it is computed by the fixed formula from the extracted boolean signals.
Gotcha: Personal / well-being context lives only in the private well-being section - never in the abstract, a task, the public row, or the daily plan, and never feeds the score.
# or run it explicitly
/em-1on1-logger --person Sam --date today
Turns 1:1 conversations into a structured follow-up email using the SBI framework at one of two severities - Proactive (coaching) or Challenge (consequences explicit). Produces a ready-to-open .eml, logs it, and creates a follow-up task.
- Source the feedbackResolves the account, then pulls the Fireflies transcript or accepts pasted notes to extract the feedback moments.
- Pick moments and severityLists each detected feedback point and asks which to include, the severity (Proactive or Challenge), and the language.
- Draft in SBI+EBuilds the email with an opening, recognition, one numbered Situation-Behavior-Impact-Expectation block per point, and a severity-dependent close.
- Write the .eml and log itWrites the .eml file to the output directory and logs the feedback row via em_db.feedback.create.
- Schedule the follow-upCreates a follow-up task due 14 days out via em-task-manager, deduped by a :followup source key.
Gotcha: The skill never sends - it drafts the .eml and waits; the EM sends manually.
Gotcha: One feedback point per SBI+E block - multi-topic feedback becomes separate numbered sections, not a merged idea.
Re-checks feedback when it comes due. Gets due rows from the writer, pulls recent Fireflies signals to gauge whether behavior changed, then lets the EM act per item - Done, Escalate or Snooze - before anything is written.
- List what is dueReads em_db.feedback.due for every feedback row whose follow-up is pending and due on or before today.
- Gather signals per itemPulls recent Fireflies signals for each teammate since the feedback was shared to gauge whether behavior changed.
- Present with a recommendationShows the teammate, theme, signal summary, and a recommendation, then waits for the EM's choice per item.
- Act: Done, Escalate, or SnoozeUpdates the row through the writer; on Escalate it can hand off to em-feedback-builder for a Challenge email.
Gotcha: It never drafts new feedback - that is em-feedback-builder; this skill only re-checks what was already logged.
Gotcha: It never touches the feedback tables directly - every read and write goes through em_db.feedback.
Creates a teammate's 30-60-90 plan: resolves the role template, branches on hire type (new hire / internal transfer / vendor placement), drafts three phases where every milestone is outcome + criterion + evidence + a week-1 quick win, runs an actionability check, writes the tracker row + plan body, drafts the client sign-off email, and schedules the Day-30/60/90 checkpoint tasks.
- Resolve role and hire typeResolves the account and tracker DB, the role template, and branches on hire type (New Hire / Internal Transfer / Vendor Placement).
- Draft the three phasesBuilds Days 0-30, 31-60, and 61-90, each milestone as outcome + criterion + evidence + target date, plus a week-1 quick win.
- Run the actionability checkRejects vague, activity-shaped goals; every milestone must carry a measurable criterion and an evidence slot.
- Write the row and plan bodyWrites the plan via em_db.onboarding.create_plan (status Pending Approval) and drafts the client sign-off email.
- Schedule the checkpointsCreates the Day-30 / 60 / 90 (and a vendor Fit) checkpoint tasks in JP_TASKS, deduped by source key.
Gotcha: Milestones are capped at five per phase - goal overload is the top pitfall.
Gotcha: The client sign-off email is drafted into the plan body, never sent - the EM sends it.
Runs the active 30/60/90 checkpoint. Pulls the teammate's 1:1s, Fireflies and tasks, proposes did/didn't ticks + evidence per milestone (never auto-ticks - the EM confirms), flags behind-schedule via leading indicators, updates the tracker, routes action items to JP_TASKS, and drafts a stakeholder summary email.
Closes a plan at 90 days. Runs the retro (every milestone vs its evidence), sets Status Completed, captures "what to keep for the next hire", hands off to Growth Paths with role-relevant next goals, records the actual ramp time, and drafts the final 90-day stakeholder summary email. Does not touch performance reviews.
Runs a career-focused 1:1 as a structured, gated conversation: a named Aspiration, a specific next-role Gap, one-to-three dated Growth actions, and the EM's own commitment to unblock it. Writes one growth path only after the EM confirms.
Logs a conflict / tension "clearing conversation" structured with Nonviolent Communication: the observable facts, the separate story in the EM's head, the unmet need, and a specific request plus follow-up date - each a gate that rejects a character judgment or a vague ask.
POC that produces a developmental, CEFR-anchored spoken-English assessment for one teammate from their real Fireflies meeting speech, scoring the transcript-derivable traits (grammar, vocabulary, discourse, interaction) with verbatim evidence, and renders it as a local HTML report. Pronunciation and fluency-timing need audio and are out of scope for this POC. Coaching input only - never a certified level or a hiring/assignment gate.
Turns a fuzzy intention into a SMART goal (Doran 1981), encoding each of the five criteria as a gate that rejects the vague form - no metric, no date, no named account or growth path - then writes one growth path once the EM confirms.
Drafts one teammate's performance review from the platform's own evidence - 1:1 history, feedback log, growth goals, skip-level sessions referenced by id only - with every claim cited to a real record and dated. Never invents a claim, never rates or finalizes: rating and finalization stay a human act in the web app.
Runs the anonymous quarterly team pulse / eNPS survey lifecycle - create (3 pulse questions + 1 eNPS question, share the anonymous survey link), monitor response counts from k-anonymous aggregates, and close with the eNPS summary. Never correlates a response to a person; cells under 4 responses are suppressed.
Logs a skip-level 1:1 (CTO-meets-team, EM absent) from a Fireflies transcript or pasted notes - person, date, themes, sentiment, and the three health signals (morale / management effectiveness / attrition) each backed by a verbatim quote, plus escalations and commitments.