Continuity
Skill inwrkai/continuity
Extract records from chats and discover a workspace schema from spreadsheets or an interview. LLMs are great at summarizing but not good at records — point this at any chat with your connectors and get structured records out, with grounding from other relevant sources. Use when the user mentions continuity, discover schema, extract records from chats, convert a conversation into records, update an inwrk bundle, asks about records already stored in inwrk/, wants to visualize their knowledge base (visualize, canvas, show my knowledge base), apply canvas changes to create, update, or delete records in the bundle, or manage event-driven automations (when X happens do Y, add an automation, check schedules).From its SKILL.md
npx -y skills add inwrkai/continuityAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its file declares
Copied from the file, not written here
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
20.2 KB, ~4.6k tokens by cl100k_base, as published. Nobody here has run it
Continuity
Extract records from chats — against a discovered workspace schema.
LLMs are great at summarizing and going through stuff but not good at records. Point Continuity at any chat with your connectors and get it to extract records. Provide grounding with other relevant sources.
Every business already has an implicit schema across spreadsheets, documents, and conversations. Prefer discovering that schema (setup) over only imposing Continuity's default nine types. Once confirmed, recurring runs create and update records against it, flag misfits, and propose schema changes when patterns recur.
Writes portable records on disk (inwrk/ by default). Also answers questions from an existing bundle without re-extracting.
This skill is self-contained. All stage instructions, object schemas, output format rules, and query guidance live in this skill's references/ directory.
Step 0: Check for updates (installed copies only)
Run this once before query mode, schema setup, or the 6-step workflow. Do not block the user's request on a failed check.
- Resolve
SKILL_DIR= the directory that contains thisSKILL.md. - Skip (development or non-GitHub install) when any of these are true:
- The current workspace root is
SKILL_DIR(you are editing/developing this repo) SKILL_DIRis not a git repositorygit -C "$SKILL_DIR" remote get-url origindoes not containgithub.com/inwrkai/continuity(also accept legacygithub.com/inwrkai/ops-brain)
- The current workspace root is
- Otherwise (cloned install from GitHub), update if behind:
git -C "$SKILL_DIR" fetch origin --quiet
LOCAL=$(git -C "$SKILL_DIR" rev-parse HEAD)
REMOTE=$(git -C "$SKILL_DIR" rev-parse @{u} 2>/dev/null || git -C "$SKILL_DIR" rev-parse origin/main 2>/dev/null || true)
if [ -n "$REMOTE" ] && [ "$LOCAL" != "$REMOTE" ]; then
git -C "$SKILL_DIR" merge-base --is-ancestor "$LOCAL" "$REMOTE" 2>/dev/null \
&& git -C "$SKILL_DIR" pull --ff-only --quiet
fi
- If the pull succeeded, briefly tell the user Continuity was updated, re-read this
SKILL.md(and anyreferences/files you already loaded), then continue with the updated instructions. - If fetch/pull fails (offline, dirty tree, diverged history), continue with the current copy — do not ask the user to fix it unless they explicitly want an upgrade.
When to use
Schema setup when the user:
- Says
continuity setup,discover schema,set up my workspace schema, or equivalent - Attaches CSVs / Sheets for schema discovery with no confirmed
inwrk/schema.mdyet
Extract / update when the user:
- Mentions continuity, extract records from chats, or wants records from a conversation
- Points at a chat (pasted transcript, connectors/MCP, attached exports) and wants actionable records
- Wants grounding from other sources alongside the chat
- Wants to update an existing inwrk bundle with new context
Query when the user:
- Asks about records already in
inwrk/(open tasks, blockers, what changed, etc.) - Wants a summary or filter of an existing bundle without new input
Visualize when the user:
- Asks to visualize, open a canvas, or show my knowledge base
- Wants an interactive live view of records and relationships in an existing bundle
Apply canvas changes when the user:
- Clicks Apply in the continuity canvas (patch arrives via
newComposerChaton Cursor) - Says apply canvas changes and provides or references a canvas patch JSON
Automations when the user:
- Says
add an automation,when X happens do Y,automate …, or equivalent - Asks to confirm, list, disable, or check automations / schedules
- Approves or skips a proposed external automation action (email, message, calendar)
Reference files
| File | Purpose |
|---|---|
| references/stages.md | Extract, review, and write/lessons stage instructions |
| references/objects.md | Fallback default object types and field schemas |
| references/schema-setup.md | Discover and confirm a workspace schema |
| references/schema-vocabulary.md | Suggestion vocabulary for objects, properties, rules |
| references/okf-output.md | Bundle layout, schema files, frontmatter, write/update behavior |
| references/query.md | How to answer questions from an existing bundle |
| references/canvas.md | Suggest and build an interactive knowledge-base canvas |
| references/canvas-update.md | Apply batched create/update/delete patches from the canvas |
| references/events.md | Structured event log (events.jsonl) for mutations and audit |
| references/automations.md | Confirmed Trigger → Condition → Action automations |
Read the relevant reference before executing each stage. For a navigation index, see AGENTS.md.
Schema setup
When setup is requested (or required before first extract — see Step 2), follow schema-setup.md:
- Path A — profile CSVs / Google Sheets / tables; propose objects, fields, relationships, rules
- Path B — short interview if no tabular data
- Ask only questions the data cannot resolve; user confirms
- Write
inwrk/schema.md+inwrk/schema/vN.md; syncindex.md
Bundled demo sources (no connectors): sample/README.md and sample/sources/.
Trigger phrases: continuity setup, discover schema, set up my workspace schema.
If the first extract includes CSV/Sheet attachments and schema.md is missing, run setup before extract unless the user declines and asks to use defaults.
Querying a bundle
If the user is asking about an existing bundle (not providing new context to convert), run Step 0 first, then follow query.md:
- Read
inwrk/index.mdandinwrk/records/index.md(andschema.mdwhen present for type names) - Load only matching record files
- Answer with citations; do not re-run extraction
- When a bundle with records exists, end with a one-line canvas suggestion (see Visualizing a bundle)
Visualizing a bundle
When an inwrk/ bundle with records exists:
- Suggest always — after extract Step 6 summaries, query answers, and schema setup, end with one line offering a live canvas (e.g. "Say visualize to open an interactive knowledge-base canvas.")
- Open only on request — when the user asks to visualize, show their knowledge base, or open a canvas, follow canvas.md
- Apply patches — when the user applies canvas changes, follow canvas-update.md, then refresh the canvas
Do not auto-open a canvas after every run.
Applying canvas changes
When a canvas patch arrives (Apply button chat or explicit "apply canvas changes"):
- Run Step 0 if needed
- Follow canvas-update.md — validate, write creates/updates/deletes, regenerate index and log, emit events, evaluate automations
- Rebuild the canvas from the live bundle per canvas.md Refresh
- Report created / updated / deleted titles, automations fired, and any external actions awaiting approval
Do not re-run extract. Do not bump schema.
Automations
Event-driven Trigger → Condition → Action rules live in inwrk/automations.md (not in schema.md). Structured mutations append to inwrk/events.jsonl. See events.md and automations.md.
When the user asks to add or change an automation:
- Run Step 0 if needed; locate the bundle
- Draft the automation in chat (trigger, optional condition, actions)
- Write as
status: draftor, only after the user confirms,status: confirmed - Never auto-confirm; never execute draft automations
Internal actions (create/update/notify/archive/…) auto-run when a confirmed automation matches. External actions (email, message, calendar via MCP) are always proposed in chat and run only after the user approves.
Evaluation runs lazily after extract Step 5 and canvas apply (and on check schedules / similar). There is no background daemon.
Trigger phrases: add an automation, when X happens do Y, automate …, check schedules, list automations, acknowledge notifications.
6-step workflow (extract / update)
Execute Step 0, then all six steps in order unless the user explicitly requests a partial run, schema-setup-only, or is in query mode.
Step 1: Gather context
Collect the chat (and any grounding) as the transcript:
- The conversation the user pointed at (pasted text, thread export, or chat fetched via connectors / MCP)
- Attached files and other grounding sources the user provided or asked you to pull in
- MCP / connector results the user asked you to fetch
- Images or PDFs described in context (note visual content in the transcript)
- Spreadsheets used as record sources for this run (distinct from schema-setup profiling when schema already exists)
Normalize into a single transcript string. Preserve speaker labels, timestamps, and message order when present. Note the source (chat, connectors, file names) for the run summary.
Determine anchor_date: prefer an explicit transcript date; otherwise use today's date (ISO 8601 YYYY-MM-DD). Relative dates in fields resolve against this anchor.
If no context is provided and the user is not querying an existing bundle or running setup-only, ask for a chat (and optional grounding sources) before proceeding.
Step 2: Locate or create the inwrk bundle
Default output directory: inwrk/ in the current workspace. Honor a user-specified path if given. If inwrk/ is missing but a legacy okf/ bundle exists, rename okf/ → inwrk/ (e.g. mv okf inwrk) before loading, then continue with inwrk/.
Schema gate:
- If
inwrk/schema.mdexists withstatus: confirmed→ load it as authoritative (object_types, field defs, relationships, rules). Prefer it overindex.mdfrontmatter when they disagree; then syncindex.mdif stale. - If
schema.mdis missing:- Offer setup per schema-setup.md (especially if tabular sources are present)
- If the user declines setup and wants to extract now → use default types from objects.md (or a user-requested subset)
- Never silently invent and confirm a full custom schema without user review
If the bundle exists:
- Load
lessons.mdbody (YAML lesson list) - Load
records/index.mdintoprior_record_summaries(do not load every record file yet) - Load workspace schema as above (or
index.mdobject_types/object_schemaswhen no schema) - Load full prior record files only when a draft clearly matches one (see okf-output.md)
If the bundle does not exist:
- Create the directory structure per okf-output.md
- Initialize empty lessons
- Set
prior_record_summariesto empty - Run or offer schema setup; otherwise use default object types from objects.md unless the user scoped otherwise
Confirm the object type scope with the user only if ambiguous and no confirmed schema exists. With a confirmed schema, use that scope.
Step 3: Extract draft records
Follow stages.md — Stage 1: Extract.
Inputs: transcript, lessons, object_types, object_schemas (from workspace schema when present), relationships, rules, prior_record_summaries, anchor_date
Output: JSON array of draft records with object, title, description, fields, citations, confidence (high | medium | low), updates_record_id
Rules:
- One draft = one record instance
- Apply lessons when patterns match
- Align fields to the workspace schema (or fallback defaults)
- Do not hallucinate fields; do not force misfits into wrong fields — note them for the run summary
- Apply identity / dedup rules when considering prior matches
- Resolve relative dates against
anchor_date - Never invent
record_idvalues - Prefer precision over recall
Step 4: Review drafts
Follow stages.md — Stage 2: Review.
Inputs: transcript, drafts, workspace schema (relationships + rules when present), optional user corrections
Output: Revised drafts array (same schema). Edit drafts in place — merge, split, drop, edit, or relink. Do not emit a separate feedback-action vocabulary.
Rules:
- Use transcript as source of truth
- Be conservative — prefer fewer, high-confidence drafts
- Apply user corrections as authoritative
- Use schema dedup / identity keys when merging or setting
updates_record_id - Drop anything below
lowconfidence
Step 5: Write inwrk bundle and update lessons
Follow stages.md — Stage 3: Write and lessons and okf-output.md.
Write or update:
inwrk/index.md— root index withokf_version: "0.1"and object config (synced from schema when present)inwrk/lessons.md— updated lesson YAML when corrections warrant itinwrk/records/<slug>.md— one file per record (create or update in place; handle slug collisions)inwrk/records/index.md— regenerate directory listinginwrk/log.md— append Creation/Update entries for this runinwrk/runs/<date>-<slug>.md— short run summary including schema misfits/proposals when relevant; retain last 20 runsinwrk/events.jsonl— appendrecord.created/record.updated(andrun.completed) per events.md- Evaluate confirmed automations per automations.md — process new events, lazy schedule check; auto-run internal actions; propose external actions for approval
Do not auto-bump schema.md in this step. Propose schema changes in the run file and chat summary; apply only after user approval (then write schema.md, snapshot schema/vN.md, sync index.md, log Schema, emit schema.confirmed / schema.bumped).
Lessons: Update primarily from user corrections. Add a lesson from a self-review catch only when the same pattern recurs. Skip if there is nothing to learn. Max 30 lessons.
Step 6: Chat summary
Report:
- Drafts extracted → kept after review
- Records created vs updated (list titles with object types)
- Lessons added/updated (if any)
- Output path (
inwrk/or custom) - Low-confidence records flagged for user review
- Schema misfits (if any)
- Schema proposals awaiting approval (if any)
- Automations fired (names + triggering records); records created/updated by automations
- External automation actions awaiting approval (if any)
- Open notifications count when
notifications.mdhas open items - Canvas suggestion when the bundle has records (see Visualizing a bundle)
Object type scoping
With confirmed inwrk/schema.md: use that schema's objects and fields. It is authoritative.
Without a workspace schema (fallback): default types Task, Thread, Attendance, Appointment, Lead, Expense, Decision, Blocker, Question from objects.md.
The user may request a subset of defaults:
continuity this chat — only Task, Decision, and Blocker
Prefer discovering a workspace schema via setup rather than hand-authoring only object_schemas in index.md. Legacy custom types in index.md still work; migrate them into schema.md when convenient. See objects.md and schema-setup.md.
Handling updates
When inwrk/ already exists:
records/index.mdbecomes prior summaries; load full files only for likely matches- Match identity using schema dedup rules when present (not title alone)
- Drafts with
updates_record_idupdate the matching record file in place - New drafts create new record files with fresh UUIDs
log.mdgets Update entries for modified records, Creation entries for new ones- Lessons accumulate across runs (max 30), driven mainly by user corrections
- Schema misfits are recorded in the run file; recurring patterns become proposals — bump schema only on user approval
- Mutations append to
events.jsonl; confirmed automations evaluate afterward (internal auto-run; external propose-and-approve)
Quality principles
- Precision over recall — skip uncertain drafts
- No hallucination — only extract fields supported by the transcript
- Schema fidelity — do not force facts into the wrong object or field; flag misfits
- Date anchoring — resolve relative dates to ISO 8601 against
anchor_date - Categorical confidence — use
high/medium/low, not numeric scores - Traceability — preserve source excerpts in record citations and run summaries
- Standalone — do not import, shell out to, or reference external pipeline code
- Summary-first loading — do not load every record on every run
- No silent schema bumps — evolve
schema.mdonly with user approval - No silent automation confirms — only
status: confirmedautomations run; external actions need explicit approval - No automation cascades — events with
source: automationdo not re-trigger automations
Example session
User: "continuity — extract records from this chat: [paste]"
Agent:
- Gathers the chat (plus any connector/grounding context) as transcript; sets
anchor_date - Loads
inwrk/(or creates it); loads confirmed schema or offers setup / uses defaults - Extracts drafts against the schema
- Reviews — merges duplicates via identity rules, drops noise
- Writes the inwrk bundle; notes any schema misfits in the run file
- Reports:
continuity run complete
- 6 drafts → 4 records (3 created, 1 updated)
- Output: inwrk/
- Review: "Fix login bug" (confidence low) — please verify
- Schema misfits: 1 (warranty claim — no Claim object)
Partial runs
If the user requests only a specific stage (e.g., "just extract drafts"), run that stage and return JSON output without writing the full bundle. Schema-setup-only ends after writing schema.md. Default to the full 6-step workflow for extract unless explicitly told otherwise.
Errors and edge cases
- Empty transcript (extract mode): Ask for a chat (and optional grounding); do not proceed
- No drafts found: Report zero extraction; still write a run summary if useful
- All drafts low confidence: Report findings, flag for review, ask whether to write
- Conflicting prior records: Prefer null
updates_record_idover incorrect linkage - Query with missing bundle: Tell the user
inwrk/was not found; offer to create one from a chat or run schema setup - Missing schema on first extract with sheets: Offer setup before extract; if declined, use defaults
- Schema proposal: Present clearly; do not bump until the user approves
- Draft automation: Never execute until the user confirms
- External automation action: Propose payload; do not call MCP until the user approves
- Missing connector for external action: Leave a notification / note in summary; do not fail the whole evaluation
What ships with it: 21 files
128.1 KB alongside SKILL.md
references/
- automations.md12.4 KB
- canvas.md10.9 KB
- canvas-update.md6.5 KB
- events.md7.2 KB
- objects.md11.8 KB
- okf-output.md17.2 KB
- query.md3.7 KB
- schema-setup.md6.6 KB
- schema-vocabulary.md8.3 KB
- stages.md12.9 KB
sample/
- AGENTS.md8.3 KB
- .gitignore161 B
- LICENSE1.0 KB
- README.md9.0 KB