From 707b83fe5f8566358b7fb79d9408bb85bbbc2736 Mon Sep 17 00:00:00 2001 From: Chris Jackson <201591867+chrisjackson-coding@users.noreply.github.com> Date: Wed, 19 Aug 2026 09:44:37 +0100 Subject: [PATCH 1/4] Proposal: declare how long an observation stays trustworthy, and measure it Concrete basis for the discussion in #565, deliberately not wired into any skill. The design decisions worth arguing about are which artefacts require what, and that should be settled before anything enforces it. The problem: context carries no freshness marker. A calendar read from four hours ago and one from a minute ago sit side by side with identical authority, which is how a long session ends up using yesterday's date, an unchecked inbox, and a stale task list while sounding entirely current. Three pieces. **A per-vault declaration** (System/knowledge-half-life.yaml, shipped as seed so user tuning is never overwritten). Volatility is personal: one person's pipeline moves weekly, another's task list hourly, so a fixed table ships wrong for most people. Sources that do not decay are declared `never`, because a user's decisions and corrections are superseded rather than aged out. **Observations recorded mechanically.** A PostToolUse hook stamps a source the moment a tool that reads it is called. This is the part that matters: an assistant that cannot notice its context has gone stale is exactly the one that will forget to record when it last looked, so self-reporting would inherit the original defect. The ledger reflects what happened, not what was believed. **An artefact contract**, which is the half that can honestly be enforced. An assistant cannot audit its own memory for staleness, but "a daily plan requires a calendar read newer than its half-life" is checkable from outside. On this vault, run against yesterday's daily plan, it returns exactly the failure that occurred: email STALE at 240 minutes, week_priorities NOT OBSERVED. Distinctions the module refuses to collapse, each of which has already caused a real failure somewhere in this codebase: a missing config is UNAVAILABLE rather than everything-is-fresh; a typo in a half-life fails loudly rather than silently becoming fresh-forever; an unknown source gets the cautious answer; and "stale" reads differently from "never observed" because they call for different responses. 18 tests. All twelve quality gates pass. Co-Authored-By: Claude Opus 5 Co-authored-by: davekilleen --- .claude/hooks/observation-recorder.py | 93 +++++++++++ System/knowledge-half-life.example.yaml | 49 ++++++ System/knowledge-half-life.yaml | 49 ++++++ core/portable_contract.py | 3 + core/tests/test_freshness.py | 158 ++++++++++++++++++ core/utils/freshness.py | 203 ++++++++++++++++++++++++ 6 files changed, 555 insertions(+) create mode 100755 .claude/hooks/observation-recorder.py create mode 100644 System/knowledge-half-life.example.yaml create mode 100644 System/knowledge-half-life.yaml create mode 100644 core/tests/test_freshness.py create mode 100644 core/utils/freshness.py diff --git a/.claude/hooks/observation-recorder.py b/.claude/hooks/observation-recorder.py new file mode 100755 index 000000000..b544c0f76 --- /dev/null +++ b/.claude/hooks/observation-recorder.py @@ -0,0 +1,93 @@ +#!/usr/bin/env python3 +"""Stamp a knowledge source the moment a tool that reads it is called. + +Runs on PostToolUse. The point is that observation recording must not depend on +the assistant choosing to record: an assistant that cannot notice its context +has gone stale is exactly the one that will forget to write down when it last +looked. This watches what actually happened instead. + +Mapping is by tool name, deliberately coarse. A calendar tool means the calendar +was observed; which calendar, and whether the assistant then used the result +correctly, are different questions this does not pretend to answer. + +Silent and exit 0 throughout. A vault that cannot record an observation is no +worse off than one with no ledger at all, and nothing here is worth interrupting +a tool call for. +""" +from __future__ import annotations + +import json +import os +import sys +from pathlib import Path + +# Substring match against the tool name, first hit wins. Ordered so that more +# specific patterns precede general ones. +TOOL_SOURCES: tuple[tuple[str, str], ...] = ( + ("calendar_get", "calendar"), + ("calendar_search", "calendar"), + ("calendar_", "calendar"), + ("apple-mail", "email"), + ("apple_mail", "email"), + ("gmail", "email"), + ("search_meetings", "meetings"), + ("get_meeting", "meetings"), + ("granola", "meetings"), + ("wispr", "meetings"), + ("list_tasks", "tasks"), + ("update_task", "tasks"), + ("create_task", "tasks"), + ("get_week_progress", "week_priorities"), + ("get_week_priorities", "week_priorities"), + ("get_quarterly_goals", "quarter_goals"), + ("get_goal_status", "quarter_goals"), + ("pipedrive", "pipeline"), + ("lookup_person", "people"), + ("build_people_index", "people"), + ("list_companies", "accounts"), + ("refresh_company", "accounts"), +) + + +def _source_for(tool_name: str) -> str | None: + lowered = (tool_name or "").lower() + for needle, source in TOOL_SOURCES: + if needle in lowered: + return source + return None + + +def main() -> int: + try: + payload = json.load(sys.stdin) + except (json.JSONDecodeError, ValueError): + return 0 + if not isinstance(payload, dict): + return 0 + + tool_name = "" + for key in ("tool_name", "toolName", "name", "tool"): + value = payload.get(key) + if isinstance(value, str) and value: + tool_name = value + break + + source = _source_for(tool_name) + if source is None: + return 0 + + vault = Path(os.environ.get("CLAUDE_PROJECT_DIR") or os.getcwd()) + sys.path.insert(0, str(vault)) + try: + from core.utils.freshness import observe + except Exception: # noqa: BLE001 - a vault without the module is not a fault + return 0 + try: + observe(vault, source) + except Exception: # noqa: BLE001 + return 0 + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/System/knowledge-half-life.example.yaml b/System/knowledge-half-life.example.yaml new file mode 100644 index 000000000..bcc16982e --- /dev/null +++ b/System/knowledge-half-life.example.yaml @@ -0,0 +1,49 @@ +# How long an observation stays trustworthy, per source. +# +# Context carries no freshness. Everything an assistant holds presents with +# equal authority whether it was observed a minute ago or yesterday, and in a +# long session that is how a stale calendar read, an unchecked inbox, or +# yesterday's date get used as though fresh. +# +# This file makes the decay assumption explicit and per-vault, because +# volatility is personal: one person's pipeline moves weekly, another's task +# list moves hourly. Shipped as a seed, so your tuning is never overwritten by +# an update. +# +# Durations accept s, m, h, d. `never` means the observation does not decay -- +# use it for things that are superseded rather than aged out. + +sources: + # World state, cheap to re-observe, expensive to be wrong about. + clock: {half_life: 5m, note: "re-stated every prompt by the session-clock hook"} + calendar: {half_life: 30m} + email: {half_life: 30m} + ci: {half_life: 10m, note: "pull request and build state"} + meetings: {half_life: 1h, note: "captures from a meeting recorder"} + tasks: {half_life: 4h} + timesheet: {half_life: 8h} + + # Vault content: changes on a human cadence. + week_priorities: {half_life: 2d} + people: {half_life: 14d} + accounts: {half_life: 7d, note: "deal state moves faster than the person behind it"} + pipeline: {half_life: 2d} + quarter_goals: {half_life: 14d} + pillars: {half_life: 90d} + + # Not observations. These are superseded, never stale. + user_decisions: {half_life: never} + user_corrections: {half_life: never} + +# What a given output must have freshly observed before it is written. +# +# This is the half that can actually be enforced. An assistant cannot reliably +# audit its own memory for staleness, but "this artefact requires a calendar +# read newer than its half-life" is checkable from the outside. +artefacts: + daily-plan: {requires_fresh: [clock, calendar, email, tasks, week_priorities]} + daily-review: {requires_fresh: [clock, calendar, email, tasks, meetings]} + week-plan: {requires_fresh: [clock, calendar, tasks, week_priorities, quarter_goals]} + week-review: {requires_fresh: [clock, tasks, week_priorities, quarter_goals]} + meeting-prep: {requires_fresh: [clock, calendar, people, accounts]} + pipeline-sync: {requires_fresh: [clock, pipeline, accounts]} diff --git a/System/knowledge-half-life.yaml b/System/knowledge-half-life.yaml new file mode 100644 index 000000000..bcc16982e --- /dev/null +++ b/System/knowledge-half-life.yaml @@ -0,0 +1,49 @@ +# How long an observation stays trustworthy, per source. +# +# Context carries no freshness. Everything an assistant holds presents with +# equal authority whether it was observed a minute ago or yesterday, and in a +# long session that is how a stale calendar read, an unchecked inbox, or +# yesterday's date get used as though fresh. +# +# This file makes the decay assumption explicit and per-vault, because +# volatility is personal: one person's pipeline moves weekly, another's task +# list moves hourly. Shipped as a seed, so your tuning is never overwritten by +# an update. +# +# Durations accept s, m, h, d. `never` means the observation does not decay -- +# use it for things that are superseded rather than aged out. + +sources: + # World state, cheap to re-observe, expensive to be wrong about. + clock: {half_life: 5m, note: "re-stated every prompt by the session-clock hook"} + calendar: {half_life: 30m} + email: {half_life: 30m} + ci: {half_life: 10m, note: "pull request and build state"} + meetings: {half_life: 1h, note: "captures from a meeting recorder"} + tasks: {half_life: 4h} + timesheet: {half_life: 8h} + + # Vault content: changes on a human cadence. + week_priorities: {half_life: 2d} + people: {half_life: 14d} + accounts: {half_life: 7d, note: "deal state moves faster than the person behind it"} + pipeline: {half_life: 2d} + quarter_goals: {half_life: 14d} + pillars: {half_life: 90d} + + # Not observations. These are superseded, never stale. + user_decisions: {half_life: never} + user_corrections: {half_life: never} + +# What a given output must have freshly observed before it is written. +# +# This is the half that can actually be enforced. An assistant cannot reliably +# audit its own memory for staleness, but "this artefact requires a calendar +# read newer than its half-life" is checkable from the outside. +artefacts: + daily-plan: {requires_fresh: [clock, calendar, email, tasks, week_priorities]} + daily-review: {requires_fresh: [clock, calendar, email, tasks, meetings]} + week-plan: {requires_fresh: [clock, calendar, tasks, week_priorities, quarter_goals]} + week-review: {requires_fresh: [clock, tasks, week_priorities, quarter_goals]} + meeting-prep: {requires_fresh: [clock, calendar, people, accounts]} + pipeline-sync: {requires_fresh: [clock, pipeline, accounts]} diff --git a/core/portable_contract.py b/core/portable_contract.py index 13f34b70f..620a2efff 100644 --- a/core/portable_contract.py +++ b/core/portable_contract.py @@ -225,6 +225,9 @@ def _r(rule_id: str, path: str, kind: str, ownership: str, note: str = "") -> Ru _r("seed-pillars-live", "System/pillars.yaml", "file", "seed", "shipped empty; user pillar registry — never overwritten"), _r("seed-pillars-example", "System/pillars.example.yaml", "file", "seed"), + _r("seed-half-life-live", "System/knowledge-half-life.yaml", "file", "seed", + "per-vault decay assumptions; user tuning is never overwritten"), + _r("seed-half-life-example", "System/knowledge-half-life.example.yaml", "file", "seed"), _r("seed-trusted-mcps-example", "System/trusted-mcps.example.yaml", "file", "seed"), _r("seed-mcp-example", "System/.mcp.json.example", "file", "seed"), _r("seed-env-example", "env.example", "file", "seed"), diff --git a/core/tests/test_freshness.py b/core/tests/test_freshness.py new file mode 100644 index 000000000..0e637a65b --- /dev/null +++ b/core/tests/test_freshness.py @@ -0,0 +1,158 @@ +"""Freshness must be a fact about the ledger, never an opinion about the assistant. + +The failure these guard against: a long session where a calendar read from four +hours ago and one from a minute ago carry identical authority, so the stale one +gets used and nothing says otherwise. +""" +from __future__ import annotations + +import time + +import pytest + +from core.utils import freshness + +CONFIG = """ +sources: + clock: {half_life: 5m} + calendar: {half_life: 30m} + email: {half_life: 30m} + tasks: {half_life: 4h} + week_priorities: {half_life: 2d} + user_corrections: {half_life: never} +artefacts: + daily-plan: {requires_fresh: [clock, calendar, email, tasks, week_priorities]} +""" + + +def _vault(tmp_path, config: str = CONFIG): + (tmp_path / "System").mkdir(parents=True, exist_ok=True) + (tmp_path / "System" / "knowledge-half-life.yaml").write_text(config, encoding="utf-8") + return tmp_path + + +@pytest.mark.parametrize( + ("text", "seconds"), + [("45s", 45), ("30m", 1800), ("4h", 14400), ("2d", 172800), ("1.5h", 5400)], +) +def test_durations_parse(text, seconds): + assert freshness.parse_duration(text) == seconds + + +def test_never_is_not_a_duration_but_a_declaration(): + assert freshness.parse_duration("never") is None + + +def test_a_typo_in_a_half_life_fails_loudly(tmp_path): + """Silently becoming "fresh forever" is the worst possible reading of a typo.""" + with pytest.raises(ValueError): + freshness.parse_duration("30 minutes") + + vault = _vault(tmp_path, "sources:\n calendar: {half_life: soon}\n") + with pytest.raises(freshness.HalfLifeUnavailable): + freshness.load_config(vault) + + +def test_a_missing_config_is_unavailable_not_all_fresh(tmp_path): + """Not being able to judge freshness must not read as everything being fine.""" + with pytest.raises(freshness.HalfLifeUnavailable): + freshness.load_config(tmp_path) + + +def test_an_artefact_requiring_an_unknown_source_refuses_to_load(tmp_path): + """Such a contract could never be satisfied, and would fail invisibly.""" + vault = _vault( + tmp_path, + "sources:\n calendar: {half_life: 30m}\nartefacts:\n x: {requires_fresh: [calendar, ghost]}\n", + ) + with pytest.raises(freshness.HalfLifeUnavailable, match="ghost"): + freshness.load_config(vault) + + +def test_a_source_never_observed_is_not_fresh(tmp_path): + vault = _vault(tmp_path) + config = freshness.load_config(vault) + + assert freshness.is_fresh(config, vault, "calendar") is False + assert freshness.age_seconds(vault, "calendar") is None + + +def test_observation_makes_a_source_fresh_and_time_takes_it_away(tmp_path): + vault = _vault(tmp_path) + config = freshness.load_config(vault) + now = time.time() + + freshness.observe(vault, "calendar", at=now) + assert freshness.is_fresh(config, vault, "calendar", now=now + 60) is True + + # 30-minute half-life: 31 minutes later it is not. + assert freshness.is_fresh(config, vault, "calendar", now=now + 1860) is False + + +def test_a_source_that_does_not_decay_is_always_fresh(tmp_path): + """Corrections and decisions are superseded, not aged out.""" + vault = _vault(tmp_path) + config = freshness.load_config(vault) + + assert freshness.is_fresh(config, vault, "user_corrections", now=time.time() + 10**7) is True + + +def test_an_unknown_source_gets_the_cautious_answer(tmp_path): + vault = _vault(tmp_path) + config = freshness.load_config(vault) + + assert freshness.is_fresh(config, vault, "astrology") is False + + +def test_missing_for_names_exactly_what_the_artefact_lacks(tmp_path): + vault = _vault(tmp_path) + config = freshness.load_config(vault) + now = time.time() + + freshness.observe(vault, "calendar", at=now) + freshness.observe(vault, "tasks", at=now) + freshness.observe(vault, "email", at=now - 4 * 3600) # stale + + missing = freshness.missing_for(config, vault, "daily-plan", now=now) + + assert set(missing) == {"clock", "email", "week_priorities"} + + +def test_an_artefact_with_no_contract_requires_nothing(tmp_path): + """Not every output needs a contract; inventing one is worse than having none.""" + vault = _vault(tmp_path) + config = freshness.load_config(vault) + + assert freshness.missing_for(config, vault, "some-other-skill") == () + + +def test_report_distinguishes_stale_from_never_observed(tmp_path): + """"Old" and "never looked" call for different responses from a reader.""" + vault = _vault(tmp_path) + config = freshness.load_config(vault) + now = time.time() + freshness.observe(vault, "email", at=now - 4 * 3600) + + rows = {r["source"]: r["state"] for r in freshness.report(config, vault, "daily-plan", now=now)["sources"]} + + assert rows["email"] == "STALE" + assert rows["calendar"] == "NOT OBSERVED" + + +def test_a_corrupt_ledger_reads_as_no_observations(tmp_path): + """A damaged ledger must not make everything look freshly observed.""" + vault = _vault(tmp_path) + ledger = vault / "System" / ".dex" + ledger.mkdir(parents=True, exist_ok=True) + (ledger / "observations.json").write_text("{not json", encoding="utf-8") + + assert freshness.read_ledger(vault) == {} + + +def test_observing_never_raises_even_when_the_ledger_cannot_be_written(tmp_path): + """Losing an observation is survivable. Failing a tool call over one is not.""" + vault = _vault(tmp_path) + (vault / "System" / ".dex").mkdir(parents=True, exist_ok=True) + (vault / "System" / ".dex" / "observations.json").mkdir() + + freshness.observe(vault, "calendar") # must not raise diff --git a/core/utils/freshness.py b/core/utils/freshness.py new file mode 100644 index 000000000..5d7c450a3 --- /dev/null +++ b/core/utils/freshness.py @@ -0,0 +1,203 @@ +"""Whether what the assistant knows is still true, per source. + +The problem this addresses: context carries no freshness marker. A calendar read +from four hours ago and one from a minute ago sit side by side with identical +authority, so in a long session stale observations get used as though fresh. + +Two deliberate boundaries, because they decide what this module can honestly do: + +**Observations are recorded mechanically, not self-reported.** An assistant that +cannot notice its context is stale also cannot be trusted to record when it last +looked. The companion PostToolUse hook stamps a source the moment a tool that +reads it is called, so the ledger reflects what happened rather than what the +assistant believes happened. + +**Staleness is a fact about the ledger, not about the assistant.** This module +answers "was `calendar` observed within its half-life", which is checkable. It +does not answer "does the assistant hold a stale belief", which is not. + +The useful consequence is the artefact contract: `missing_for("daily-plan")` +returns the sources a daily plan requires and does not have fresh, and that is +enforceable from outside the assistant. +""" +from __future__ import annotations + +import json +import re +import time +from dataclasses import dataclass +from pathlib import Path +from typing import Any + +CONFIG_RELATIVE = Path("System") / "knowledge-half-life.yaml" +LEDGER_RELATIVE = Path("System") / ".dex" / "observations.json" + +NEVER = "never" +_DURATION = re.compile(r"^\s*(?P\d+(?:\.\d+)?)\s*(?P[smhd])\s*$", re.IGNORECASE) +_UNIT_SECONDS = {"s": 1, "m": 60, "h": 3600, "d": 86400} + + +class HalfLifeUnavailable(RuntimeError): + """The configuration could not be read, so nothing can be judged stale. + + Deliberately distinct from "everything is fresh". A caller that cannot read + the config knows nothing about freshness and must say so rather than + reporting a clean result. + """ + + +def parse_duration(value: Any) -> float | None: + """Seconds for a duration string, or None for ``never``. + + Raises ValueError on anything else, because a typo in a half-life should + fail loudly rather than silently become "fresh forever". + """ + if isinstance(value, str) and value.strip().lower() == NEVER: + return None + match = _DURATION.match(str(value)) + if not match: + raise ValueError(f"not a duration: {value!r} (expected e.g. 30m, 4h, 2d, or never)") + return float(match.group("value")) * _UNIT_SECONDS[match.group("unit").lower()] + + +@dataclass(frozen=True) +class Source: + name: str + half_life_seconds: float | None # None means it never decays + + @property + def decays(self) -> bool: + return self.half_life_seconds is not None + + +@dataclass(frozen=True) +class Config: + sources: dict[str, Source] + artefacts: dict[str, tuple[str, ...]] + + def source(self, name: str) -> Source | None: + return self.sources.get(name) + + +def load_config(vault_root: Path) -> Config: + """Read the half-life declaration. Raises when it cannot be trusted.""" + path = vault_root / CONFIG_RELATIVE + try: + import yaml + + raw = yaml.safe_load(path.read_text(encoding="utf-8")) or {} + except FileNotFoundError as error: + raise HalfLifeUnavailable(f"no half-life config at {CONFIG_RELATIVE}") from error + except Exception as error: # noqa: BLE001 - surfaced as one honest failure + raise HalfLifeUnavailable(f"half-life config unreadable: {error}") from error + + if not isinstance(raw, dict): + raise HalfLifeUnavailable("half-life config is not a mapping") + + sources: dict[str, Source] = {} + for name, body in (raw.get("sources") or {}).items(): + if not isinstance(body, dict) or "half_life" not in body: + raise HalfLifeUnavailable(f"source {name!r} has no half_life") + try: + seconds = parse_duration(body["half_life"]) + except ValueError as error: + raise HalfLifeUnavailable(f"source {name!r}: {error}") from error + sources[str(name)] = Source(str(name), seconds) + + artefacts: dict[str, tuple[str, ...]] = {} + for name, body in (raw.get("artefacts") or {}).items(): + required = (body or {}).get("requires_fresh") or [] + unknown = [s for s in required if s not in sources] + if unknown: + # A contract naming a source that does not exist would silently + # never be satisfiable, which is worse than refusing to load. + raise HalfLifeUnavailable(f"artefact {name!r} requires unknown source(s): {unknown}") + artefacts[str(name)] = tuple(str(s) for s in required) + + return Config(sources=sources, artefacts=artefacts) + + +def _ledger_path(vault_root: Path) -> Path: + return vault_root / LEDGER_RELATIVE + + +def read_ledger(vault_root: Path) -> dict[str, float]: + """Last observation time per source. A missing ledger is empty, not an error.""" + try: + data = json.loads(_ledger_path(vault_root).read_text(encoding="utf-8")) + except (FileNotFoundError, json.JSONDecodeError, OSError): + return {} + if not isinstance(data, dict): + return {} + return {str(k): float(v) for k, v in data.items() if isinstance(v, (int, float))} + + +def observe(vault_root: Path, source: str, *, at: float | None = None) -> None: + """Record that a source was just read. Written atomically.""" + import os + + path = _ledger_path(vault_root) + ledger = read_ledger(vault_root) + ledger[source] = time.time() if at is None else at + try: + path.parent.mkdir(parents=True, exist_ok=True) + tmp = path.with_suffix(".tmp") + tmp.write_text(json.dumps(ledger, indent=2, sort_keys=True), encoding="utf-8") + os.replace(tmp, path) + except OSError: + # Losing one observation is survivable; failing a prompt over it is not. + return + + +def age_seconds(vault_root: Path, source: str, *, now: float | None = None) -> float | None: + """How long since a source was observed, or None if it never has been.""" + seen = read_ledger(vault_root).get(source) + if seen is None: + return None + return (time.time() if now is None else now) - seen + + +def is_fresh(config: Config, vault_root: Path, source: str, *, now: float | None = None) -> bool: + """Whether a source counts as freshly observed. + + An unknown source is not fresh: a caller asking about something the config + does not describe should get the cautious answer, not a confident one. + """ + declared = config.source(source) + if declared is None: + return False + if not declared.decays: + return True + age = age_seconds(vault_root, source, now=now) + if age is None: + return False + return age <= (declared.half_life_seconds or 0) + + +def missing_for(config: Config, vault_root: Path, artefact: str, *, now: float | None = None) -> tuple[str, ...]: + """Sources this artefact requires fresh and does not have. + + An unknown artefact returns nothing rather than raising: not every output + needs a contract, and inventing a requirement would be worse than having none. + """ + required = config.artefacts.get(artefact) + if not required: + return () + return tuple(s for s in required if not is_fresh(config, vault_root, s, now=now)) + + +def report(config: Config, vault_root: Path, artefact: str, *, now: float | None = None) -> dict[str, Any]: + """Everything a Sources block needs, in one call.""" + required = config.artefacts.get(artefact, ()) + rows = [] + for name in required: + age = age_seconds(vault_root, name, now=now) + rows.append( + { + "source": name, + "observed_seconds_ago": age, + "fresh": is_fresh(config, vault_root, name, now=now), + "state": "NOT OBSERVED" if age is None else "fresh" if is_fresh(config, vault_root, name, now=now) else "STALE", + } + ) + return {"artefact": artefact, "sources": rows, "missing": list(missing_for(config, vault_root, artefact, now=now))} From 93c7e7f0e473a7f9b370f1e6f8ade29b5f9bf760 Mon Sep 17 00:00:00 2001 From: Chris Jackson <201591867+chrisjackson-coding@users.noreply.github.com> Date: Wed, 19 Aug 2026 10:01:28 +0100 Subject: [PATCH 2/4] Split transcripts from meetings: a finalised capture never ages out Raised on review. The single meetings entry conflated two things with opposite decay: whether new captures exist, which goes stale within the hour, and what was said in a meeting, which does not go stale at all. A finalised transcript is a record, superseded by a later meeting rather than aged out, so it belongs with decisions and corrections in the never category. Co-Authored-By: Claude Opus 5 --- System/knowledge-half-life.example.yaml | 3 ++- System/knowledge-half-life.yaml | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/System/knowledge-half-life.example.yaml b/System/knowledge-half-life.example.yaml index bcc16982e..2fd8e65ad 100644 --- a/System/knowledge-half-life.example.yaml +++ b/System/knowledge-half-life.example.yaml @@ -19,7 +19,8 @@ sources: calendar: {half_life: 30m} email: {half_life: 30m} ci: {half_life: 10m, note: "pull request and build state"} - meetings: {half_life: 1h, note: "captures from a meeting recorder"} + meetings: {half_life: 1h, note: "whether new captures exist"} + transcripts: {half_life: never, note: "a finalised capture is a record of what was said; superseded by a later meeting, never aged out"} tasks: {half_life: 4h} timesheet: {half_life: 8h} diff --git a/System/knowledge-half-life.yaml b/System/knowledge-half-life.yaml index bcc16982e..2fd8e65ad 100644 --- a/System/knowledge-half-life.yaml +++ b/System/knowledge-half-life.yaml @@ -19,7 +19,8 @@ sources: calendar: {half_life: 30m} email: {half_life: 30m} ci: {half_life: 10m, note: "pull request and build state"} - meetings: {half_life: 1h, note: "captures from a meeting recorder"} + meetings: {half_life: 1h, note: "whether new captures exist"} + transcripts: {half_life: never, note: "a finalised capture is a record of what was said; superseded by a later meeting, never aged out"} tasks: {half_life: 4h} timesheet: {half_life: 8h} From f35e24df1cb30d593c601a5afc2c7c7ea5e5f8e6 Mon Sep 17 00:00:00 2001 From: Chris Jackson <201591867+chrisjackson-coding@users.noreply.github.com> Date: Tue, 8 Sep 2026 21:51:44 +0100 Subject: [PATCH 3/4] Keep observation-recorder.py tracked under the shipped-hooks ignore rule Co-authored-by: davekilleen --- .gitignore | 1 + docs/architecture/INVENTORY.md | 8 +++++--- .../examples/dex-lens-catalog-enriched-preview.json | 2 +- .../dex-contracts/dist/portable-vault.contract.json | 13 +++++++++++++ 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 64c5ac0ac..37cd4c6fd 100644 --- a/.gitignore +++ b/.gitignore @@ -111,6 +111,7 @@ System/my-customizations.md !.claude/hooks/session-clock.sh !.claude/hooks/correction-capture.sh !.claude/hooks/correction-capture.py +!.claude/hooks/observation-recorder.py !.claude/hooks/dex-core-orientation.sh !.claude/hooks/ensure-mcp-user-scope.cjs !.claude/hooks/connection-health-checker.cjs diff --git a/docs/architecture/INVENTORY.md b/docs/architecture/INVENTORY.md index 1b87091ec..dd47048e8 100644 --- a/docs/architecture/INVENTORY.md +++ b/docs/architecture/INVENTORY.md @@ -1,6 +1,6 @@ - + # Architecture Inventory @@ -154,7 +154,7 @@ Derived from `core/portable_contract.py` `RULES` and `MUTATION_POLICY`. | Class | Rule count | Update action | | --- | ---: | --- | | `brain` | 46 | `replace` | -| `seed` | 38 | `write-if-absent` | +| `seed` | 40 | `write-if-absent` | | `generated` | 9 | `regenerate` | | `vault` | 19 | `never` | | `runtime` | 15 | `never` | @@ -210,7 +210,7 @@ Derived from `core/portable_contract.py` `RULES` and `MUTATION_POLICY`. -
seed declared paths (38) +
seed declared paths (40) - `00-Inbox/Daily_Plans/README.md` (file; `seed-inbox-daily-plans-readme`) - `00-Inbox/Ideas/README.md` (file; `seed-inbox-ideas-readme`) @@ -243,6 +243,8 @@ Derived from `core/portable_contract.py` `RULES` and `MUTATION_POLICY`. - `System/Session_Learnings/README.md` (file; `seed-session-learnings-readme`) - `System/Templates` (dir; `seed-templates`) - `System/integrations` (dir; `seed-integrations`) +- `System/knowledge-half-life.example.yaml` (file; `seed-half-life-example`) +- `System/knowledge-half-life.yaml` (file; `seed-half-life-live`) - `System/pillars.example.yaml` (file; `seed-pillars-example`) - `System/pillars.yaml` (file; `seed-pillars-live`) - `System/trusted-mcps.example.yaml` (file; `seed-trusted-mcps-example`) diff --git a/docs/examples/dex-lens-catalog-enriched-preview.json b/docs/examples/dex-lens-catalog-enriched-preview.json index 3cab629d4..a461146d6 100644 --- a/docs/examples/dex-lens-catalog-enriched-preview.json +++ b/docs/examples/dex-lens-catalog-enriched-preview.json @@ -1 +1 @@ -{"catalogue":{"capabilities":[{"availability":"active","capability_class":"active-skill","capability_id":"apple-mail-setup","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","privacy-minimal-disclosure"],"host_adapters":["claude-code","cowork"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/apple-mail-setup/SKILL.md","summary":"The shipped Apple Mail Setup skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["capture-without-friction"],"portable_brief":{"goal":"Set up and verify Apple Mail search on macOS, including the search index that silently returns nothing when it was never built.","method_outline":["Inspect the current local state and the person's request.","Run the Apple Mail Setup workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.96.3","summary":"Set up and verify Apple Mail search on macOS, including the search index that silently returns nothing when it was never built. Use when the user says 'connect Apple Mail', 'set up mail search', 'Dex can't find my emails', 'mail search returns nothing'. Not for Gmail or Google Workspace; use `google-workspace-setup`.","title":"Apple Mail Setup","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Set up and verify Apple Mail search on macOS, including the search index that silently returns nothing when it was never built."},{"availability":"active","capability_class":"active-skill","capability_id":"atlassian-setup","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","scoped-agency-human-control"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/atlassian-setup/SKILL.md","summary":"The shipped Atlassian Setup skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["keep-projects-on-track"],"portable_brief":{"goal":"Connect Jira and Confluence for project tracking and knowledge search.","method_outline":["Inspect the current local state and the person's request.","Run the Atlassian Setup workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available.","Access to the relevant local app or external service, authorized by the person."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Connect Jira and Confluence for project tracking and knowledge search. Use when the user says 'connect Jira', 'hook up Confluence', 'my tickets/board'. Not for a personal task app like Todoist/Things/Trello; use `todoist-setup`/`things-setup`/`trello-setup`.","title":"Atlassian Setup","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","External connections remain subject to the provider's availability and authorization."],"value":"Connect Jira and Confluence for project tracking and knowledge search."},{"availability":"active","capability_class":"active-skill","capability_id":"backup-now","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","honest-health-observability","ownership-portability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["local-file-access","off-machine-destination"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"verified","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_backup_vault.py","summary":"Real behaviour coverage of a single run: a successful run stores the set and records it, a failure records the actual error rather than a generic one, and a run that fails part-way leaves no half-written copy behind to be mistaken for a good one."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/backup-now/SKILL.md","summary":"The shipped skill defines the on-demand run, the rule against inferring success from the command finishing, and the quiet note when the last successful copy is old."}],"impact_tier":"high","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Take a verified copy on demand before a risky change, and report the recorded result rather than the command's exit.","method_outline":["Run the same copying path the schedule uses; do not build a second one.","Read the run record afterwards and report what it says.","On failure, repeat the recorded reason exactly rather than softening it.","Mention quietly when the previous successful copy is old."],"rollback_advice":"Delete the copy that was just made; on-demand runs add a copy and never change the live material.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["A failed run is never reported as a copy that exists.","The reported size and destination come from the record, not the intent.","A run with no configured destination fails clearly instead of guessing one."]},"prerequisites":["Backups already configured; without a destination the run fails with a plain message rather than improvising one.","A minute or so, and room at the destination."],"release_provenance":"core-release","since_release":"1.95.1","summary":"Run a vault backup right now and report the verified result. Use when the user says 'back up now', 'take a backup before I do this', or is about to make a big change. Not for scheduling or changing where backups go (`backup-setup`); not for getting files back (`backup-restore`).","title":"Backup Now","trade_offs":["An on-demand copy covers one moment and is not a substitute for a schedule.","Success is read from the run record rather than from the command exiting, so a partial copy is reported as a failure."],"value":"Takes a copy right now, before a bulk edit or a migration, and reports what actually landed rather than treating a finished command as a success."},{"availability":"active","capability_class":"active-skill","capability_id":"backup-restore","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","ownership-portability","honest-health-observability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["local-file-access","off-machine-destination"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"verified","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_backup_vault.py","summary":"Real behaviour coverage of all three modes: verification passes on an intact copy and detects a damaged one, the test mode unpacks only into a temporary folder, a real restore refuses the live location and any folder that is not empty, and a damaged newest copy points at the newest intact one instead."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"doc: docs/backup-restore.md","summary":"The shipped recovery guide covers what a full rebuild needs beyond the copies, including the credentials and schedules deliberately left out of them."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/backup-restore/SKILL.md","summary":"The shipped skill defines the three modes, the routine test restore, and the rule to report exactly what the tool printed rather than a reassuring summary."}],"impact_tier":"high","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Prove a backup restores, and perform a real restore without ever writing over the live material.","method_outline":["Check the copy's fingerprints and history before trusting it.","Offer a routine test that unpacks into a throwaway folder and then deletes it.","For a real restore, require a new or empty destination and refuse the live one.","State plainly what is not in the copy and must be re-established by hand."],"rollback_advice":"Delete the folder the restore was written into; because a restore never targets the live location, removing that folder returns the system to its prior state.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["A deliberately damaged copy is detected rather than restored.","The live material is provably untouched after a restore.","A failed verification is reported as failure, with the next intact copy named."]},"prerequisites":["At least one completed copy to check.","A new or empty folder to restore into when a real recovery is wanted."],"release_provenance":"core-release","since_release":"1.95.1","summary":"Verify a vault backup, prove it restores, or restore it to a folder of the user's choosing. Use when the user says 'restore my backup', 'test my backups', 'are my backups any good', or after data loss. Never overwrites the live vault. Not for taking a backup (`backup-now`); not for scheduling (`backup-setup`).","title":"Backup Restore","trade_offs":["A restore never overwrites the live material, so moving it back into place stays a deliberate human step.","Where a copy is damaged it says so and points at the next intact one rather than pretending the newest is usable."],"value":"Proves the copies actually come back — fingerprints checked, the whole thing unpacked into a scratch folder — and, when a real recovery is needed, puts it somewhere new instead of over the live work."},{"availability":"active","capability_class":"active-skill","capability_id":"backup-setup","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","ownership-portability","honest-health-observability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["local-file-access","off-machine-destination","scheduler"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"verified","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_backup_vault.py","summary":"Real behaviour coverage of the copying engine and its scheduler: the ladder of older copies keeps what it claims and never deletes the newest one, a real sign-in token never reaches the archive, an ordinary note that merely looks secret is still kept, and on a system without the supported scheduler nothing is installed and the equivalent instruction is printed instead."},{"level":"verified","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_doctor.py","summary":"The health check's backup probe is covered directly: a recent, successful run that quietly stored less than a full copy is reported as broken rather than passing as fine."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"doc: docs/backup-restore.md","summary":"The shipped recovery guide states what a full rebuild needs beyond the copies themselves, including the things deliberately excluded from them."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/backup-setup/SKILL.md","summary":"The shipped skill defines the destination choice, the retention ladder, the scheduling step, and the rule that setup is not reported as done until a real run has succeeded."}],"impact_tier":"high","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Set up scheduled, verified copies of the person's whole working record, kept somewhere other than the machine that made them.","method_outline":["Choose a destination off the machine, and never write credentials into it.","Exclude keys, tokens and caches from the copy on purpose, and say what was excluded.","Keep a ladder of recent and older copies, and never delete the newest one.","Prove it by running one for real before calling the setup finished.","Add a health check that treats a stale copy as a problem, not a warning."],"rollback_advice":"Remove the scheduled job and the backup settings; existing copies stay where they are and the person's live material is never touched by the setup.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["A real credential file is provably absent from the copy.","The newest copy survives even a retention rule that would delete everything.","A run that failed is reported as failed, with the recorded reason."]},"prerequisites":["A synced folder or a cloud storage account for the copies to go to.","Automatic scheduling is wired up for macOS; on other systems the person is given the exact line to schedule it themselves, and nothing is installed behind their back."],"release_provenance":"core-release","since_release":"1.95.1","summary":"Set up automatic vault backups to a synced folder or a cloud provider, with verified archives and tiered retention. Use when the user says 'back up my vault', 'set up backups', 'where are my backups going', or asks about losing their notes. Not for restoring or testing a restore (`backup-restore`); not for a one-off backup right now (`backup-now`).","title":"Backup Setup","trade_offs":["Keys and sign-in tokens are deliberately left out of the copies, so rebuilding on a new machine means entering those again.","A backup that has never been test-restored is still only a hope, which is why proving the restore is a separate step."],"value":"Puts the person's whole working record on a schedule that copies it somewhere else, keeps a ladder of older copies, and says so loudly when it quietly stops working."},{"availability":"active","capability_class":"active-skill","capability_id":"calendar-setup","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","scoped-agency-human-control"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/calendar-setup/SKILL.md","summary":"The shipped Calendar Setup skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["start-each-day-focused"],"portable_brief":{"goal":"Grant Python calendar access for ~30x faster calendar queries.","method_outline":["Inspect the current local state and the person's request.","Run the Calendar Setup workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Grant Python calendar access for ~30x faster calendar queries. Use when the user says 'connect my calendar', 'calendar is slow', 'set up calendar access'. Not for connecting Google Workspace as a whole; use `google-workspace-setup`.","title":"Calendar Setup","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Grant Python calendar access for ~30x faster calendar queries."},{"availability":"active","capability_class":"active-skill","capability_id":"change-job","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","scoped-agency-human-control","durable-memory-provenance"],"host_adapters":["claude-code","cowork"],"host_requirements":["skills-directory","durable-goals-or-tasks","task-or-note-store"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_instruction_honesty.py","summary":"Pins the transition's load-bearing promises: the settings after-check is relayed word for word, a failed check stops every later pass, nothing is deleted, each project is its own question, and connections are listed for review, never removed. The tests read the shipped instructions."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_transition_capsule.py","summary":"Covers the snapshot-and-verify lane the transition relies on: the pre-change capture, the after-check that names lost or unexpected changes, and the exact restore of the two settings files."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/change-job/SKILL.md","summary":"The shipped skill defines the five passes, the rule that every pass is previewed, confirmed and skippable, and the closing ledger naming what changed and how to undo each step."}],"impact_tier":"high","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Guide a job or role transition where every pass is previewed, confirmed, skippable, and undoable, and the settings that were not re-answered provably carry forward.","method_outline":["Lay out the five passes in plain words and get a yes before starting.","Re-run setup with carry-forward; relay the after-check and stop everything if it fails.","Re-sort people from their recorded emails, plan shown first, never guessing.","Archive the old role's planning whole and walk projects one at a time.","Re-point open tasks at the new pillars and hand grooming to the backlog skill."],"rollback_advice":"The settings snapshot restores the two configuration files exactly as captured; archived pages move back from the dated role-transition folder; the people re-sort reverses by running it against the old domain.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["A failed settings check stops the transition before any later pass runs.","Nothing is deleted; every exit is archive, park, or leave alone.","The closing ledger names each pass done or skipped and how to undo it."]},"prerequisites":["A vault that completed first-time setup.","The new role's work email domain, so people can be re-sorted."],"release_provenance":"core-release","since_release":"1.97.7","summary":"Guided job or role transition: re-run the setup questions with every unanswered setting carried forward and checked afterwards, re-sort people for the new work email domain, archive the old role's goals, priorities and projects (never deleted), re-point open tasks at the new pillars, and close with a ledger of what changed and how to undo each step. Use when the user says 'I changed jobs', 'I'm changing jobs', 'new role', 'new job', 'went full-time', or 'I'm now [role] at [company]'. Not for a preference change within the same job; use `reset`. Not for first-time setup; use `setup`.","title":"Change Job","trade_offs":["The setup questions are asked again in full, even when only a few answers changed.","People with no recorded email are left where they are rather than guessed, so a few pages may still need moving by hand."],"value":"Moves a whole Dex from one job to the next without losing anything: setup answers carried forward and checked against a snapshot, people re-sorted for the new work email, the old role's planning archived rather than deleted, and open tasks re-pointed at the new pillars."},{"availability":"active","capability_class":"active-skill","capability_id":"commitments","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","scoped-agency-human-control","durable-memory-provenance"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","meeting-source","task-or-note-store"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_commitments_skill.py","summary":"Dedicated tests pin the load-bearing promises: it reuses the existing scanner rather than building a second one, never creates a task without confirmation, says so plainly when the scan is unavailable instead of inventing a list, and reads back what it created before reporting. The tests read the shipped instructions, not a live scan."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/commitments/SKILL.md","summary":"The shipped skill defines the present-then-confirm flow, the split between promises made and asks received, and the refusal to pad an empty result."}],"impact_tier":"core","jobs":["manage-tasks-reliably"],"portable_brief":{"goal":"Create a review that surfaces open promises and asks from existing records and tracks only the ones the person confirms.","method_outline":["Read the existing commitment sources rather than building a second store.","Drop anything already tracked, and group the rest by who owes whom.","Put genuinely ambiguous items in an unclear group instead of guessing direction.","Offer each item for confirmation, then read back exactly what was created."],"rollback_advice":"Delete the tasks the review created; the meetings and notes it read from are never modified, so the source record is unaffected.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["An empty result is reported as empty, not padded with vague follow-ups.","No item becomes tracked work without an explicit yes.","Every item reported as captured has a real identifier behind it."]},"prerequisites":["Meeting notes or people records the scan can read.","A task list the confirmed commitments can become."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Reconcile the promises you made and the asks you received across meetings and notes into a clear owner/due/source list, then — only with your confirmation — turn the real ones into tracked tasks. Use when the user says 'what did I promise', 'what am I on the hook for', 'anything I owe people', 'loose ends', or after a run of meetings. Also use proactively during daily-plan/daily-review when uncaptured commitments surface. Not for tracking work you handed off to others; use `delegate-check`. Not for recording a decision you made; use `decision-log`.","title":"Commitments","trade_offs":["Which direction a promise runs is inferred from wording, so genuinely unclear items are shown as unclear rather than guessed.","Nothing becomes tracked without item-by-item confirmation, which costs the person a little attention each time."],"value":"Pulls the small promises — “I’ll send that over”, “can you review this” — out of meetings and notes into one list of who owes what, and tracks only the ones the person confirms are real."},{"availability":"active","capability_class":"active-skill","capability_id":"create-mcp","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","compounding-correctability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/create-mcp/SKILL.md","summary":"The shipped Create Mcp skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Build a brand-new MCP integration from scratch with a guided wizard.","method_outline":["Inspect the current local state and the person's request.","Run the Create Mcp workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available.","Access to the relevant local app or external service, authorized by the person."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Build a brand-new MCP integration from scratch with a guided wizard. Use when the user wants Dex to talk to a tool that has no existing server — 'build an integration for X', 'Dex can't connect to Y yet'. Not for installing an MCP that already exists; use `integrate-mcp`. Not for a prompt-only workflow with no external tool; use `create-skill`.","title":"Create Mcp","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","External connections remain subject to the provider's availability and authorization."],"value":"Build a brand-new MCP integration from scratch with a guided wizard."},{"availability":"active","capability_class":"active-skill","capability_id":"create-skill","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","compounding-correctability"],"host_adapters":["claude-code","cowork"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/create-skill/SKILL.md","summary":"The shipped Create Skill skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Author a new Dex skill.","method_outline":["Inspect the current local state and the person's request.","Run the Create Skill workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Author a new Dex skill — a reusable `/command` — that actually fires and passes the quality bar. Runs a collision check, classifies the shape, writes a router-grade description, generates the real package (SKILL.md + evals), and grades it with `skill-score` before calling it done. Use when the user says 'make a skill', 'I want a /command for X', 'turn this into a skill'. A skill the user builds for themselves is saved under `.claude/skills-custom/` (protected from updates) and coached, never blocked; a first-party skill is held to the hard gate. Not for connecting an external tool; use `create-mcp`. Not for grading a skill that already exists; use `skill-score`.","title":"Create Skill","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Author a new Dex skill."},{"availability":"active","capability_class":"active-skill","capability_id":"daily-plan","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","scoped-agency-human-control"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","readable-task-source"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_commitments_skill.py","summary":"The planning path is covered where commitments become bounded, reviewable tasks."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/daily-plan/SKILL.md","summary":"The shipped skill defines the daily planning workflow and its required source checks."}],"impact_tier":"core","jobs":["start-each-day-focused"],"portable_brief":{"goal":"Create a daily planning routine that combines meetings, tasks and commitments into one bounded plan.","method_outline":["Read current commitments and calendar shape.","Choose a short list that fits the available time.","Keep any task creation reviewable by the person."],"rollback_advice":"Disable or remove the planning command; the workflow should not require irreversible data changes.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The output names a realistic number of actions for today.","The person can reject or edit task changes before anything persists."]},"prerequisites":["A readable task list or commitment source.","Calendar access improves the plan but is not the only input."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Build today's plan from calendar, tasks, priorities and commitments, with smart scheduling suggestions. Use when the user says 'plan my day', 'what's on today', 'help me focus', or starts the morning. Also use proactively at the first session of the day. Not for reviewing a finished day; use `daily-review`.","title":"Daily Plan","trade_offs":["The plan is only as current as the sources it can inspect.","It drafts priorities; the person still chooses what to do."],"value":"Helps a person choose a small, realistic focus list before the day scatters across meetings, tasks and loose commitments."},{"availability":"active","capability_class":"active-skill","capability_id":"daily-review","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","scoped-agency-human-control","compounding-correctability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","readable-task-source","durable-memory-store"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_review_retirement.py","summary":"A dedicated test pins the end-of-day behaviour Dex ships: the review runs in the current conversation, and where a review already exists for today it checks that one rather than writing a competing second version. It reads the shipped instructions, not a live day."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_skill_delegated_gathering.py","summary":"Covers the paired gathering instructions this review depends on for a large collection of notes, so the heavy reading step cannot be silently orphaned by a later edit."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/daily-review/SKILL.md","summary":"The shipped skill defines the end-of-day workflow, the check against an existing review, and the confirmation rules before anything is written."}],"impact_tier":"high","jobs":["start-each-day-focused","reflect-and-improve-continuously"],"portable_brief":{"goal":"Create an end-of-day routine that compares intention with what actually happened and sets one starting point for tomorrow.","method_outline":["Read the day's plan, completed work and any meeting record the person approved.","Name what was finished, what slipped and what a meeting left owing.","Check whether a review already exists for today and correct it rather than duplicating it.","Agree one starting point for tomorrow with the person before writing anything."],"rollback_advice":"Stop running the routine and delete the generated review files; the underlying tasks, notes and meeting records are never rewritten by it, so they need no undo.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The review distinguishes finished work from work that merely moved.","A second run on the same day does not create a competing record.","Nothing is written to the person's own material without their confirmation."]},"prerequisites":["Today's plan, tasks or notes in a place the system can read.","A few minutes with the person; the review asks questions it cannot answer for them."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Close out the day: what got done vs planned, meeting follow-ups, learnings, and tomorrow's focus. Use when the user says 'review my day', 'wrap up', 'end of day', or it's evening. Also use proactively when the day's work is clearly done. Not for setting up the morning; use `daily-plan`.","title":"Daily Review","trade_offs":["A review can only see the parts of the day that were written down somewhere.","It proposes tomorrow's focus and any change to the record; the person confirms both."],"value":"Closes the day the morning plan opened: what actually got done against what was intended, what a meeting left behind, and what tomorrow starts with — so the loop finishes instead of drifting."},{"availability":"active","capability_class":"active-skill","capability_id":"decision-log","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","compounding-correctability","context-orientation"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","durable-memory-store"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_adoption_effective_behavior.py","summary":"Real behaviour coverage of how this capability is switched on and off again: the test adopts it through Dex's live change system, proves the change can be rewound exactly, and proves a rewind refuses rather than overwrite a file the person has since edited. That covers the switch-on path, not the recording conversation itself."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/decision-log/SKILL.md","summary":"The shipped skill defines what a decision record must contain, where it is filed, and the rule that earlier entries are never rewritten to make history look cleaner."}],"impact_tier":"high","jobs":["keep-projects-on-track"],"portable_brief":{"goal":"Create a decision record that captures the choice, the real alternatives, the reasoning and when to revisit it.","method_outline":["Search for an earlier decision on the same topic before recording a new one.","Capture the choice, what made it necessary, the options considered and why this one won.","Set a review date, or state plainly that no review is needed.","File it in the narrowest useful place and confirm where it went."],"rollback_advice":"Delete the appended decision entry; earlier entries are never modified, so removing the new one restores the previous state exactly.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The record contains no option or reason the person did not actually give.","An earlier decision it replaces is linked rather than overwritten.","Dates are absolute, so the record still reads correctly years later."]},"prerequisites":["A home for decisions that is separate from the meeting they came out of.","The person's own account of the options; the record never supplies reasoning they did not give."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Capture an important decision with its context, options, rationale, and review date, then find it again when it matters.","title":"Decision Log","trade_offs":["A decision record earns its keep only if it can be found again, which depends on where it is filed.","A superseded decision is added as a new entry rather than edited, so the history grows rather than tidies."],"value":"Keeps the reason behind a choice — the options, the rationale, the date to look at it again — so nobody has to reconstruct it from memory months later."},{"availability":"active","capability_class":"active-skill","capability_id":"delegate-check","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","scoped-agency-human-control","durable-memory-provenance"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","task-or-note-store","relationship-history"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_adoption_effective_behavior.py","summary":"Real behaviour coverage of how this capability is switched on and off again: the test adopts it through Dex's live change system, proves the change can be rewound exactly, and proves a rewind refuses rather than overwrite a file the person has since edited. That covers the switch-on path, not the review conversation itself."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/delegate-check/SKILL.md","summary":"The shipped skill defines what counts as an open handoff, the order attention is spent in, and the rule that no message is sent and no record changed without approval."}],"impact_tier":"high","jobs":["manage-tasks-reliably"],"portable_brief":{"goal":"Create a delegation review that separates moving work from stuck work and proposes one proportionate follow-up.","method_outline":["Collect open handoffs from tasks and recent meeting notes, and merge duplicates.","For each, record what, who, when it was handed over, what is expected and when.","Order the review by what needs attention, keeping healthy items brief.","Draft one short nudge per stuck item and send nothing without approval."],"rollback_advice":"Stop running the review and discard its drafts; it changes a record only after the person confirms, so nothing needs to be undone on their behalf.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Silence is reported as unclear status, never as progress or failure.","Conflicting records are shown as a conflict rather than resolved silently.","No message leaves and no status changes without an explicit yes."]},"prerequisites":["Tasks or meeting notes that record who owns what.","The person's approval before any nudge is sent or any status is changed."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Review open delegations — what you handed off, to whom, its status, and the next useful nudge. Use when the user says 'what did I delegate', 'who owes me', 'check my handoffs', 'follow up with someone'. Not for prepping a meeting; use meeting-prep.","title":"Delegate Check","trade_offs":["Where two records disagree about status, it shows the disagreement instead of quietly picking one.","It will not chase a handoff whose agreed date has not arrived, so a genuinely early risk can still be missed."],"value":"Shows what was handed to other people, what is moving, what is stuck and the one short nudge worth sending — and reports silence as unknown rather than as progress."},{"availability":"active","capability_class":"active-skill","capability_id":"dex-add-mcp","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","compounding-correctability"],"host_adapters":["claude-code","cowork"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/dex-add-mcp/SKILL.md","summary":"The shipped Dex Add Mcp skill defines the workflow Lens is cataloguing."}],"impact_tier":"medium","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Add a known MCP server to config using Dex-safe user scope.","method_outline":["Inspect the current local state and the person's request.","Run the Dex Add Mcp workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available.","Access to the relevant local app or external service, authorized by the person."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Add a known MCP server to config using Dex-safe user scope. Use when the user has server details in hand and says 'add this MCP', 'register this server'. Not for discovering/installing from a marketplace; use `integrate-mcp`. Not for building one; use `create-mcp`.","title":"Dex Add Mcp","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","External connections remain subject to the provider's availability and authorization."],"value":"Add a known MCP server to config using Dex-safe user scope."},{"availability":"active","capability_class":"active-skill","capability_id":"dex-backlog","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","compounding-correctability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/dex-backlog/SKILL.md","summary":"The shipped Dex Backlog skill defines the workflow Lens is cataloguing."}],"impact_tier":"medium","jobs":["reflect-and-improve-continuously"],"portable_brief":{"goal":"Show the AI-ranked backlog of Dex system-improvement ideas.","method_outline":["Inspect the current local state and the person's request.","Run the Dex Backlog workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Show the AI-ranked backlog of Dex system-improvement ideas. Use when the user says 'show my Dex ideas', 'what's in the backlog', 'what should we build next'. Not for workshopping one idea into a plan; use `dex-improve`. Not for discovering existing features; use `dex-level-up`.","title":"Dex Backlog","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Show the AI-ranked backlog of Dex system-improvement ideas."},{"availability":"active","capability_class":"active-skill","capability_id":"dex-doctor","changed_in":[],"compatibility":{"foundation_capabilities":["honest-health-observability","safe-change-recovery","privacy-minimal-disclosure"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["local-diagnostics","feature-status-vocabulary"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"verified","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_doctor.py","summary":"Doctor behavior is covered by the main health-check test suite."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/dex-doctor/SKILL.md","summary":"The shipped skill defines the checkup flow and safe repair boundary."}],"impact_tier":"core","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Create a local health check that distinguishes working, off, broken and unknown states without over-claiming.","method_outline":["Probe the same paths the real features use.","Report unknown when evidence is incomplete.","Keep any repair action behind a separate approval path."],"rollback_advice":"Disable repair actions first; the diagnostic report can remain read-only.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["A sabotaged probe does not become working.","Unknown and off states are visible to the person.","No secret value appears in output."]},"prerequisites":["A host can run local checks against its own configuration.","Repair paths must be separately gated from diagnosis."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Whole-system checkup: verifies every Dex feature honestly (working/off/broken/couldn't-check), self-heals what's provably safe, guides the rest. Use when the user says 'is Dex healthy', 'something's broken', 'check my setup', 'run diagnostics'. Not for discovering unused *features*; use `dex-level-up`. Not for applying an update; use `dex-update`.","title":"Dex Doctor","trade_offs":["A check can report unknown when evidence is missing.","Automatic repair must remain limited to provably safe fixes."],"value":"Gives the person an honest system check: what works, what is off, what is broken and what should not be guessed."},{"availability":"active","capability_class":"active-skill","capability_id":"dex-improve","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","compounding-correctability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/dex-improve/SKILL.md","summary":"The shipped Dex Improve skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["reflect-and-improve-continuously"],"portable_brief":{"goal":"Workshop one improvement idea into an implementation plan.","method_outline":["Inspect the current local state and the person's request.","Run the Dex Improve workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Workshop one improvement idea into an implementation plan. Use when the user says 'let's flesh out idea-X', 'turn this into a plan', 'improve Dex's Y'. Not for ranking the whole backlog; use `dex-backlog`. Not for a PRD for the user's own product; use `product-brief`.","title":"Dex Improve","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Workshop one improvement idea into an implementation plan."},{"availability":"active","capability_class":"active-skill","capability_id":"dex-level-up","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","compounding-correctability"],"host_adapters":["claude-code","cowork"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/dex-level-up/SKILL.md","summary":"The shipped Dex Level Up skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Surface Dex features the user isn't using yet, based on their usage patterns.","method_outline":["Inspect the current local state and the person's request.","Run the Dex Level Up workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Surface Dex features the user isn't using yet, based on their usage patterns. Use when the user says 'what am I missing', 'show me new features', 'level up my Dex'. Not for diagnosing what's broken; use `dex-doctor`. Not for what changed in a release; use `dex-whats-new`.","title":"Dex Level Up","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Surface Dex features the user isn't using yet, based on their usage patterns."},{"availability":"active","capability_class":"active-skill","capability_id":"dex-obsidian-setup","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","compounding-correctability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/dex-obsidian-setup/SKILL.md","summary":"The shipped Dex Obsidian Setup skill defines the workflow Lens is cataloguing."}],"impact_tier":"medium","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Turn on Obsidian mode and migrate the vault to wiki links.","method_outline":["Inspect the current local state and the person's request.","Run the Dex Obsidian Setup workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Turn on Obsidian mode and migrate the vault to wiki links. Use when the user says 'I use Obsidian', 'enable wiki links', 'make this work in Obsidian'. Not for connecting an external tool/API; use `create-mcp`/`integrate-mcp`.","title":"Dex Obsidian Setup","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Turn on Obsidian mode and migrate the vault to wiki links."},{"availability":"active","capability_class":"active-skill","capability_id":"dex-orient","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","compounding-correctability"],"host_adapters":["claude-code","cowork"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/dex-orient/SKILL.md","summary":"The shipped Dex Orient skill defines the workflow Lens is cataloguing."}],"impact_tier":"niche","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Orient a Dex Core contributor in release truth, local changes and the canonical architecture maps.","method_outline":["Inspect the current local state and the person's request.","Run the Dex Orient workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.69.0","summary":"Orient in the Dex Core codebase: prints the released version, what's merged-but-not-released, and where the architecture map + inventory live. Use at the start of any dex-core development or investigation, or whenever you're unsure what's shipped vs built-locally vs prototype.","title":"Dex Orient","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Orient in the Dex Core codebase: prints the released version, what's merged-but-not-released, and where the architecture map + inventory live. Use at the start of any dex-core development or investigation, or whenever you're unsure what's shipped vs built-locally vs prototype."},{"availability":"active","capability_class":"active-skill","capability_id":"dex-rollback","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","compounding-correctability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/dex-rollback/SKILL.md","summary":"The shipped Dex Rollback skill defines the workflow Lens is cataloguing."}],"impact_tier":"core","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Rewind one receipt-backed Dex adoption through the frozen lifecycle service.","method_outline":["Inspect the current local state and the person's request.","Run the Dex Rollback workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Rewind one receipt-backed Dex adoption through the frozen lifecycle service. Use when the user says 'undo the update', 'go back', 'that broke something after updating'. Not for applying an update; use `dex-update`.","title":"Dex Rollback","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Rewind one receipt-backed Dex adoption through the frozen lifecycle service."},{"availability":"active","capability_class":"active-skill","capability_id":"dex-update","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","compounding-correctability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/dex-update/SKILL.md","summary":"The shipped Dex Update skill defines the workflow Lens is cataloguing."}],"impact_tier":"core","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Preview and safely adopt a Dex update through the receipt-backed lifecycle (look → back up → apply → verify → rewindable).","method_outline":["Inspect the current local state and the person's request.","Run the Dex Update workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Preview and safely adopt a Dex update through the receipt-backed lifecycle (look → back up → apply → verify → rewindable). Use when the user says 'update Dex', 'install the new version', or a release notice appeared. Not for undoing an update; use `dex-rollback`. Not just seeing what changed; use `dex-whats-new`.","title":"Dex Update","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Preview and safely adopt a Dex update through the receipt-backed lifecycle (look → back up → apply → verify → rewindable)."},{"availability":"active","capability_class":"active-skill","capability_id":"dex-whats-new","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","compounding-correctability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/dex-whats-new/SKILL.md","summary":"The shipped Dex Whats New skill defines the workflow Lens is cataloguing."}],"impact_tier":"medium","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Show recent system improvements.","method_outline":["Inspect the current local state and the person's request.","Run the Dex Whats New workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Show recent system improvements — captured learnings plus new Claude capabilities. Use when the user says 'what's new', 'any updates to how Dex works'. Not for previewing and applying a version update; use `dex-update`. Not for unused existing features; use `dex-level-up`.","title":"Dex Whats New","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Show recent system improvements."},{"availability":"active","capability_class":"active-skill","capability_id":"diff-adopt","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","compounding-correctability"],"host_adapters":["claude-code","cowork"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/diff-adopt/SKILL.md","summary":"The shipped Diff Adopt skill defines the workflow Lens is cataloguing."}],"impact_tier":"niche","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Adopt one shared DexDiff methodology.","method_outline":["Inspect the current local state and the person's request.","Run the Diff Adopt workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.49.0","summary":"Adopt one shared DexDiff methodology — reads a workflow description, adapts it to your role and vault, and walks you through setup. Use when the user says 'adopt this workflow', 'set me up like this doc'. Not for a full published profile by handle; use `diff-adopt-profile`.","title":"Diff Adopt","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Adopt one shared DexDiff methodology."},{"availability":"active","capability_class":"active-skill","capability_id":"diff-adopt-profile","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","compounding-correctability"],"host_adapters":["claude-code","cowork"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/diff-adopt-profile/SKILL.md","summary":"The shipped Diff Adopt Profile skill defines the workflow Lens is cataloguing."}],"impact_tier":"niche","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Adopt a full published Heydex profile by handle ('set me up like @davekilleen').","method_outline":["Inspect the current local state and the person's request.","Run the Diff Adopt Profile workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.49.0","summary":"Adopt a full published Heydex profile by handle ('set me up like @davekilleen'). Use when the user says 'set me up like ', or names a handle. Not for a single workflow doc; use `diff-adopt`. Not for creating your own profile; use `diff-profile`.","title":"Diff Adopt Profile","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Adopt a full published Heydex profile by handle ('set me up like @davekilleen')."},{"availability":"active","capability_class":"active-skill","capability_id":"diff-generate","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","compounding-correctability"],"host_adapters":["claude-code","cowork"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/diff-generate/SKILL.md","summary":"The shipped Diff Generate skill defines the workflow Lens is cataloguing."}],"impact_tier":"niche","jobs":["reflect-and-improve-continuously"],"portable_brief":{"goal":"Package one workflow.","method_outline":["Inspect the current local state and the person's request.","Run the Diff Generate workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.49.0","summary":"Package one workflow — how you use Dex for a specific job — into a shareable DexDiff methodology doc. Use when the user says 'share how I do X', 'package this workflow'. Not for packaging your *entire* system; use `diff-profile`. Not for adopting someone else's; use `diff-adopt`.","title":"Diff Generate","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Package one workflow."},{"availability":"active","capability_class":"active-skill","capability_id":"diff-list","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","compounding-correctability"],"host_adapters":["claude-code","cowork"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/diff-list/SKILL.md","summary":"The shipped Diff List skill defines the workflow Lens is cataloguing."}],"impact_tier":"niche","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Show all adopted DexDiff workflows.","method_outline":["Inspect the current local state and the person's request.","Run the Diff List workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.49.0","summary":"Show all adopted DexDiff workflows — what's installed, when it was adopted, and what it includes","title":"Diff List","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Show all adopted DexDiff workflows."},{"availability":"active","capability_class":"active-skill","capability_id":"diff-profile","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","compounding-correctability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/diff-profile/SKILL.md","summary":"The shipped Diff Profile skill defines the workflow Lens is cataloguing."}],"impact_tier":"niche","jobs":["reflect-and-improve-continuously"],"portable_brief":{"goal":"Package your entire Dex system into a shareable DexDiff profile so others can replicate how you work.","method_outline":["Inspect the current local state and the person's request.","Run the Diff Profile workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.49.0","summary":"Package your entire Dex system into a shareable DexDiff profile so others can replicate how you work. Use when the user says 'share my whole setup', 'publish my profile'. Not for a single workflow; use `diff-generate`. Not for adopting a whole profile; use `diff-adopt-profile`.","title":"Diff Profile","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Package your entire Dex system into a shareable DexDiff profile so others can replicate how you work."},{"availability":"active","capability_class":"active-skill","capability_id":"diff-remove","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","compounding-correctability"],"host_adapters":["claude-code","cowork"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/diff-remove/SKILL.md","summary":"The shipped Diff Remove skill defines the workflow Lens is cataloguing."}],"impact_tier":"niche","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Remove a previously adopted DexDiff workflow.","method_outline":["Inspect the current local state and the person's request.","Run the Diff Remove workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.49.0","summary":"Remove a previously adopted DexDiff workflow — deletes its generated skills and config, leaves your data untouched. Use when the user says 'remove that workflow', 'undo the adoption'. Not for listing what's installed; use `diff-list`.","title":"Diff Remove","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Remove a previously adopted DexDiff workflow."},{"availability":"active","capability_class":"active-skill","capability_id":"enable-semantic-search","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","privacy-minimal-disclosure","ownership-portability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","local-search-index","durable-memory-store"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/enable-semantic-search/SKILL.md","summary":"The shipped skill defines the pre-flight checks, the guided local install, the collections it discovers from the person's own material, and the later health check on those collections. There is no test of the workflow's own judgement calls; the shipped skill file is the definition of the behaviour, which is why this entry claims support rather than proof."}],"impact_tier":"high","jobs":["reflect-and-improve-continuously"],"portable_brief":{"goal":"Add meaning-based search over the person's own notes, running locally, without sending their material anywhere.","method_outline":["Check what is already installed before proposing anything.","Explain in plain terms what is being installed and roughly what it costs in space.","Discover the natural groupings in the person's own material rather than imposing one.","Fall back cleanly to exact-word search wherever the index is unavailable."],"rollback_advice":"Remove the local search index and its tool; every workflow that used it falls back to exact-word search, and the notes themselves are never modified.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Notes never leave the person's machine as part of the setup.","A search by meaning finds a note that shares no words with the query.","Every routine that uses it still works when the index is absent."]},"prerequisites":["A one-off local setup with room on the machine for the search index.","Enough accumulated notes that exact-word searching is already missing things."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Turn on local AI-powered semantic (meaning-based) search over the vault, with smart collection discovery. Use when the user says 'enable semantic search', 'search by meaning', 'set up QMD', or search keeps missing obvious matches. Not for scraping the web; use `scrape`.","title":"Enable Semantic Search","trade_offs":["The guided setup names macOS package steps; other systems need their own equivalents.","Meaning-based results are broader than exact matches, so an occasional loose result is the price of finding the right one."],"value":"Makes the person's own notes searchable by meaning rather than exact wording, on their own machine — so looking for “customer churn” still finds the note that said “people keep leaving”."},{"availability":"active","capability_class":"active-skill","capability_id":"feedback","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","compounding-correctability"],"host_adapters":["claude-code","cowork"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/feedback/SKILL.md","summary":"The shipped Feedback skill defines the workflow Lens is cataloguing."}],"impact_tier":"core","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Report a Dex bug to the Dex team with zero homework.","method_outline":["Inspect the current local state and the person's request.","Run the Feedback workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.82.0","summary":"Report a Dex bug to the Dex team with zero homework — Dex investigates locally, builds a privacy-safe report, shows it to you (or auto-sends if you've chosen that), and tracks the ticket until it's fixed. Use when the user says \"report this\", \"send this to the Dex team\", \"file feedback\", \"/feedback\", asks \"what happened to my bug report\", or accepts Doctor's offer to report a Dex bug. Also use when the user describes something in Dex misbehaving in their own words, without asking for a report at all — \"the meeting sync is doing something weird\", \"this keeps breaking\", \"X stopped working\", \"that's not what I asked for\" — investigate first, then offer. Not for capturing ideas about your own vault or workflow; use the improvements backlog for those. Not for trouble in the user's own notes, calendar or projects, which is never a Dex defect.","title":"Feedback","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Report a Dex bug to the Dex team with zero homework."},{"availability":"active","capability_class":"active-skill","capability_id":"getting-started","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","scoped-agency-human-control"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/getting-started/SKILL.md","summary":"The shipped Getting Started skill defines the workflow Lens is cataloguing."}],"impact_tier":"core","jobs":["start-each-day-focused"],"portable_brief":{"goal":"Give a new Dex user a practical post-onboarding tour that adapts to the data already available.","method_outline":["Inspect the current local state and the person's request.","Run the Getting Started workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Interactive post-onboarding tour that adapts to whatever data exists (calendar, Granola, or none). Use right after onboarding, or when the user says 'show me around', 'how do I start'. Also use proactively when the vault is < 7 days old. Not for the initial setup itself; use `setup`.","title":"Getting Started","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Interactive post-onboarding tour that adapts to whatever data exists (calendar, Granola, or none). Use right after onboarding, or when the user says 'show me around', 'how do I start'. Also use proactively when the vault is < 7 days old. Not for the initial setup itself; use `setup`."},{"availability":"active","capability_class":"active-skill","capability_id":"goal-backlog","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","scoped-agency-human-control","durable-memory-provenance"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","durable-goals-or-tasks","task-or-note-store"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_instruction_honesty.py","summary":"Pins the load-bearing promises: no task is deleted or moved silently, deletions are previewed line by line and approved per task, parking preserves content, and the offer to structure freeform goals is made once. The tests read the shipped instructions."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_work_server_task_goal_readers.py","summary":"Covers the grouped backlog reader the skill drives: grouping by goal, the pick-up-first ordering, staleness counts, and the handling of provisional goals recovered from freeform text."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/goal-backlog/SKILL.md","summary":"The shipped skill defines the one-goal-at-a-time pass, the four honest exits for stale work, and the rule that nothing leaves the backlog without a yes."}],"impact_tier":"high","jobs":["manage-tasks-reliably"],"portable_brief":{"goal":"Create a grooming pass that shows open work under each quarter goal and records the user's own decisions about what stays, what goes, and what gets picked up first.","method_outline":["Load the grouped backlog and present the largest and stalest groups first.","Confirm or clear each doubtful goal link before anything else.","Offer four exits for stale work - done, parked, deleted with per-task approval, or kept.","Record the pick-up-first order weekly planning will pull from."],"rollback_advice":"Move a parked task's lines back from the Someday file to the tasks file to revive it; ask to clear a pick-up-first order to undo it. Deletions are the one permanent exit, which is why each requires its own yes.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Nothing is deleted or moved without the exact lines shown and a yes for that task.","The offer to structure freeform goals is made once, never repeated after a no.","An empty backlog is reported as empty, not padded with invented work."]},"prerequisites":["Quarterly goals in the structured page shape, so tasks can link to them.","An open task backlog in the standard tasks file."],"release_provenance":"core-release","since_release":"1.97.7","summary":"Groom the open task pool goal by goal: see everything under each quarter goal, confirm doubtful goal links, retire what has gone stale, and mark what gets picked up first when that goal earns week-time. Use when the user says 'groom my backlog', 'what's under this goal', 'my tasks are a swamp', 'clean up my tasks', or when open tasks have piled up untouched. Not for routing new inbox items; use `triage`. Not for setting the week's priorities; use `week-plan`.","title":"Goal Backlog","trade_offs":["Staleness is measured from when a task was created, not from real activity, so a task advanced elsewhere can look idle.","Every retirement is confirmed item by item, which costs attention on a large backlog."],"value":"Turns a flat, overgrown task list back into a groomed pool: open work shown goal by goal, doubtful links confirmed, stale items retired only with approval, and a picked-up-first order that weekly planning actually uses."},{"availability":"active","capability_class":"active-skill","capability_id":"google-workspace-setup","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","privacy-minimal-disclosure"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/google-workspace-setup/SKILL.md","summary":"The shipped Google Workspace Setup skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["capture-without-friction"],"portable_brief":{"goal":"Connect Google Workspace (Gmail, Calendar, Docs) for email-aware planning and meeting prep.","method_outline":["Inspect the current local state and the person's request.","Run the Google Workspace Setup workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available.","Access to the relevant local app or external service, authorized by the person."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Connect Google Workspace (Gmail, Calendar, Docs) for email-aware planning and meeting prep. Use when the user says 'connect Gmail/Google', 'hook up my work email'. Not for local macOS calendar speed only; use `calendar-setup`. Not for Microsoft; use `ms-teams-setup`.","title":"Google Workspace Setup","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","External connections remain subject to the provider's availability and authorization."],"value":"Connect Google Workspace (Gmail, Calendar, Docs) for email-aware planning and meeting prep."},{"availability":"active","capability_class":"active-skill","capability_id":"granola-setup","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","privacy-minimal-disclosure"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/granola-setup/SKILL.md","summary":"The shipped Granola Setup skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["capture-without-friction"],"portable_brief":{"goal":"Connect Granola via its official API for automatic meeting sync and transcripts.","method_outline":["Inspect the current local state and the person's request.","Run the Granola Setup workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available.","Access to the relevant local app or external service, authorized by the person."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Connect Granola via its official API for automatic meeting sync and transcripts. Use when the user says 'connect Granola', 'my meetings aren't syncing', 'set up meeting notes'. Not for Zoom recordings; use `zoom-setup`. Not for processing meetings already synced; use `process-meetings`.","title":"Granola Setup","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","External connections remain subject to the provider's availability and authorization."],"value":"Connect Granola via its official API for automatic meeting sync and transcripts."},{"availability":"active","capability_class":"active-skill","capability_id":"identity-snapshot","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","compounding-correctability","honest-health-observability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","durable-memory-store","durable-goals-or-tasks"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/identity-snapshot/SKILL.md","summary":"The shipped skill defines the sources it reads, the structure of the profile it writes, and its rule to report a neglected area honestly rather than flatter the person. There is no test of the workflow's own judgement calls; the shipped skill file is the definition of the behaviour, which is why this entry claims support rather than proof."}],"impact_tier":"high","jobs":["reflect-and-improve-continuously"],"portable_brief":{"goal":"Create an observed profile of how a person works, generated from their own records rather than from self-description.","method_outline":["Read the accumulated goals, priorities, tasks and captured learnings.","Describe patterns using actual data points, not general statements.","Say plainly where an area is neglected or where pace dropped.","Date every generation so change over time is visible."],"rollback_advice":"Delete the generated profile; it is written from other records and never modifies them, so removing it loses nothing else.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Nothing in the profile was asked of the person directly.","A missing source is marked as missing rather than smoothed over.","Each claim can be traced to a specific record."]},"prerequisites":["Enough accumulated history for a pattern to exist; a new system has nothing to read.","A place for the profile to live and be replaced as it changes."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Generate a living profile of the user's working patterns, decision tendencies and quality preferences from their Dex data. Use when the user says 'what are my patterns', 'how do I work', or during `week-review`. Also use proactively when the model (older than 7 days) is stale. Not for planning a week; use `week-plan`.","title":"Identity Snapshot","trade_offs":["It sees only what was captured, so habits that never got written down are invisible to it.","Generated too early it describes noise; it becomes useful after months of material."],"value":"Writes a dated profile of how the person actually works, built from their own accumulated records rather than from what they say about themselves — so drift over months becomes visible."},{"availability":"active","capability_class":"active-skill","capability_id":"industry-truths","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","compounding-correctability","context-orientation"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","durable-memory-store"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/industry-truths/SKILL.md","summary":"The shipped skill defines the three time horizons, the interview that draws the beliefs out, and the later passes that review them and compare them against what actually happened. There is no test of the workflow's own judgement calls; the shipped skill file is the definition of the behaviour, which is why this entry claims support rather than proof."}],"impact_tier":"high","jobs":["keep-projects-on-track"],"portable_brief":{"goal":"Create a record of time-horizoned beliefs about a market so strategic choices can be checked against stated assumptions.","method_outline":["Draw out beliefs by conversation rather than by form-filling.","Separate them into what is true now, what is emerging, and what is a bet.","Record who or what the person watches for signals of change.","Schedule a later pass that compares the beliefs against what actually happened."],"rollback_advice":"Delete the assumptions file; it is a standalone record, and strategy notes that referenced it simply lose the link.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Each belief is specific enough to be proved wrong.","The horizon each belief sits in is explicit.","There is a stated point at which the beliefs get reviewed."]},"prerequisites":["A domain the person genuinely follows, and roughly fifteen minutes of conversation.","A willingness to be wrong in writing; the value arrives when the beliefs are checked later."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Define time-horizoned assumptions about your industry (today / 6mo / 12mo) that ground strategic thinking. Use when the user is making roadmap, positioning or investment calls, or says 'what am I assuming about the market'. Also use proactively before a big strategic recommendation. Not for capturing a single decision; use `decision-log`.","title":"Industry Truths","trade_offs":["Assumptions written once and never revisited age badly, and can mislead more than having none.","It records beliefs, not evidence; the sources behind them remain the person's responsibility."],"value":"Makes the beliefs a strategy rests on explicit — what is true today, in six months, in a year — so later decisions can be checked against them instead of quietly assuming them."},{"availability":"active","capability_class":"active-skill","capability_id":"initiative-kickoff","changed_in":[],"compatibility":{"foundation_capabilities":["scoped-agency-human-control","durable-memory-provenance","context-orientation"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","durable-goals-or-tasks","project-records"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_initiative_kickoff_skill.py","summary":"Dedicated tests pin the load-bearing promises: success signals must be checkable, no connection to a goal is manufactured where none fits, nothing is created without confirmation, and the person's setting for creating new people records is respected. The tests read the shipped instructions, not a live kickoff."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/initiative-kickoff/SKILL.md","summary":"The shipped skill defines the framing questions, the honest ladder to goals, and the read-back of what was created before anything is called kicked off."}],"impact_tier":"high","jobs":["keep-projects-on-track"],"portable_brief":{"goal":"Create a kickoff routine that turns a decision to start something into an outcome, checkable success signals, an owner and first steps.","method_outline":["Get the outcome, the reason it is worth starting now, and what is out of scope.","Name two to four signals somebody could actually check later.","Name the accountable owner and the people involved.","Connect it to a real existing goal, or record it honestly as a standalone bet.","Draft the first few steps and create only the ones confirmed."],"rollback_advice":"Delete the initiative record and the first steps it created; nothing else in the person's goals or projects is altered by the kickoff.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Every success signal could be verified by someone else months later.","No connection to a goal exists that the goals themselves do not support.","What is reported as created matches what actually exists."]},"prerequisites":["A decision already taken; this is where a decision becomes work, not where it gets made.","Somewhere to keep the initiative, and existing goals to connect it to if any exist."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Turn a decision to start something new — a hire, a partnership, a go-to-market push, an internal bet — into a real initiative: the outcome and why now, what success looks like, who's involved, the first concrete steps, and a project page that ladders to your pillars and goals. Use when the user says 'let's kick off X', 'I'm starting a new initiative', 'set up a project for this', or 'we've decided to do Y'. Also use proactively when the user commits to a new effort mid-conversation. Not for spec'ing a product feature or writing a PRD; use `product-brief`. Not for checking the status of projects already underway; use `project-health`.","title":"Initiative Kickoff","trade_offs":["Where an initiative does not connect to a real goal it is recorded as a standalone bet rather than tied to an invented one.","Success signals have to be checkable later, which takes more thought up front than a general aim."],"value":"Turns “we’ve decided to do this” into something that can actually start: an outcome, signs of success somebody could check later, a named owner and the first few steps."},{"availability":"active","capability_class":"active-skill","capability_id":"integrate-mcp","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","compounding-correctability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/integrate-mcp/SKILL.md","summary":"The shipped Integrate Mcp skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Install and wire up an existing MCP server from Smithery.ai or a GitHub repo.","method_outline":["Inspect the current local state and the person's request.","Run the Integrate Mcp workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available.","Access to the relevant local app or external service, authorized by the person."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Install and wire up an existing MCP server from Smithery.ai or a GitHub repo. Use when the user names a tool that already has a server — 'add the Notion MCP', 'install this Smithery server'. Not for building a new integration from nothing; use `create-mcp`. Not for adding one already-known server safely; use `dex-add-mcp`.","title":"Integrate Mcp","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","External connections remain subject to the provider's availability and authorization."],"value":"Install and wire up an existing MCP server from Smithery.ai or a GitHub repo."},{"availability":"active","capability_class":"active-skill","capability_id":"journal","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","compounding-correctability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/journal/SKILL.md","summary":"The shipped Journal skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["reflect-and-improve-continuously"],"portable_brief":{"goal":"Toggle journaling or start a morning/evening/weekly journal entry.","method_outline":["Inspect the current local state and the person's request.","Run the Journal workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Toggle journaling or start a morning/evening/weekly journal entry. Use when the user says 'journal', 'morning pages', 'evening reflection'. Also use proactively when a journaling-enabled user starts/ends the day. Not for a structured end-of-day work review; use `daily-review`.","title":"Journal","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Toggle journaling or start a morning/evening/weekly journal entry."},{"availability":"active","capability_class":"active-skill","capability_id":"manage-capabilities","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","compounding-correctability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/manage-capabilities/SKILL.md","summary":"The shipped Manage Capabilities skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Turn optional Dex rooms/features on or off without deleting any content.","method_outline":["Inspect the current local state and the person's request.","Run the Manage Capabilities workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.63.0","summary":"Turn optional Dex rooms/features on or off without deleting any content. Use when the user says 'turn off X', 'enable the career room', 'hide a feature I don't use'. Not for diagnosing breakage; use `dex-doctor`. Not for a full role restructure; use `reset`.","title":"Manage Capabilities","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Turn optional Dex rooms/features on or off without deleting any content."},{"availability":"active","capability_class":"active-skill","capability_id":"meeting-closeout","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","scoped-agency-human-control","privacy-minimal-disclosure"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","meeting-source","task-or-note-store"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_meeting_closeout_skill.py","summary":"Dedicated tests pin the load-bearing promises: this is one meeting rather than a bulk catch-up, owners are named or honestly marked unknown, the person's setting for creating new people records is respected, no task is created without confirmation, and a meeting it cannot find is asked for rather than reconstructed. The tests read the shipped instructions, not a live meeting."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/meeting-closeout/SKILL.md","summary":"The shipped skill defines the closeout, the hard boundary on where meeting material may be read from, and the read-back before anything is reported as captured."}],"impact_tier":"high","jobs":["capture-without-friction"],"portable_brief":{"goal":"Create a single-meeting closeout that captures decisions, owners, personal promises and one next step while they are still fresh.","method_outline":["Work only from notes the person supplied or from their own configured store.","Extract decisions, action items with a named owner, personal promises and one next step.","Mark an owner the notes do not name as unknown instead of assigning one.","Offer each follow-up for confirmation, then read back what was actually saved."],"rollback_advice":"Delete the generated closeout note and any follow-ups it created; the original meeting notes are appended to or left alone, never rewritten.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["No decision, owner or promise appears that the notes do not support.","A meeting with no available notes produces a request, never a recap.","What is reported as saved matches what is actually on disk."]},"prerequisites":["Notes from the meeting — pasted, dictated, or already saved wherever the person keeps them.","Somewhere to write the follow-ups the person approves."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Close out the meeting you just had while it's fresh — lock the decisions, the action items and who owns each, what you personally committed to, and the single next step — then capture it and, only with your OK, turn the actions into tracked tasks. Use when the user says 'wrap up this meeting', 'close out my 3pm', 'here are my notes from the call', or right after a meeting ends. Also use proactively when the user pastes raw notes from a meeting that just happened. Not for bulk-processing many already-synced meetings; use `process-meetings`. Not for prepping a meeting that hasn't happened yet; use `meeting-prep`.","title":"Meeting Closeout","trade_offs":["It will not go looking in outside services for a meeting it cannot find; it asks for the notes instead.","Owners the notes do not name are recorded as unknown rather than guessed, which leaves real gaps visible."],"value":"Locks one meeting's decisions, owners and personal promises while it is still fresh, and refuses to invent an owner or a recap for a meeting it cannot actually see."},{"availability":"active","capability_class":"active-skill","capability_id":"meeting-prep","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","privacy-minimal-disclosure","durable-memory-provenance"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","relationship-history","meeting-source"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_meeting_prep_calendar_journey.py","summary":"Statically checks the calendar-first instruction contract and journey order across the inline skill and delegated research prompt, including required attendee filters, feature-status guidance, and the structured person-page handoff; it does not simulate Calendar MCP runtime behavior."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_instruction_honesty.py","summary":"A dedicated test pins that this capability reports a source that is switched off or broken in Dex's honest wording, rather than letting a gap in the gathering pass as a finished brief."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_skill_delegated_gathering.py","summary":"Covers the paired gathering instructions the prep depends on when the history is large, so the reading step cannot be orphaned by a later edit."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/meeting-prep/SKILL.md","summary":"The shipped skill defines what is gathered, how the brief is shaped for the person's seniority and preferences, and the requirement to spot-check claims before presenting them."}],"impact_tier":"high","jobs":["capture-without-friction"],"portable_brief":{"goal":"Create a pre-meeting brief that gathers attendee history and open threads from approved sources and states what it could not find.","method_outline":["Identify the meeting and its attendees from the calendar or the person's own words.","Read only approved history: past notes, people records, related project material.","Confirm a sample of the files the brief cites actually exist before repeating them.","Present context, open threads and suggested talking points, and name the gaps."],"rollback_advice":"Stop running the routine; the brief is produced for the conversation and changes nothing in the person's own records, so there is nothing to unwind.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Every claim in the brief traces to a file that exists.","Missing history is stated as missing rather than filled in plausibly.","No source outside the approved reading scope is opened."]},"prerequisites":["A calendar entry, or simply the meeting named out loud.","Some history worth gathering: earlier notes, people records or related project material."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Prepare for a specific upcoming meeting by gathering attendee context, history and related topics. Use when the user says 'prep me for my meeting with X', 'what do I need for the 2pm', or before a calendar event. Also use proactively when a meeting is imminent. Not for writing up a meeting that already happened; use `process-meetings`.","title":"Meeting Prep","trade_offs":["A brief is only as good as the history already captured; a genuinely first meeting has little to gather.","Anything the brief claims should be checked against the real file before it is repeated in the room."],"value":"Walks into the meeting already holding the attendees, the history and the open threads, instead of spending the last five minutes searching for them."},{"availability":"active","capability_class":"active-skill","capability_id":"ms-teams-setup","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","privacy-minimal-disclosure"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/ms-teams-setup/SKILL.md","summary":"The shipped Ms Teams Setup skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["track-people-and-relationships"],"portable_brief":{"goal":"Connect Microsoft Teams for cross-channel context awareness.","method_outline":["Inspect the current local state and the person's request.","Run the Ms Teams Setup workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available.","Access to the relevant local app or external service, authorized by the person."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Connect Microsoft Teams for cross-channel context awareness. Use when the user says 'connect Teams', 'hook up Microsoft'. Not for Google email/calendar; use `google-workspace-setup`.","title":"Ms Teams Setup","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","External connections remain subject to the provider's availability and authorization."],"value":"Connect Microsoft Teams for cross-channel context awareness."},{"availability":"active","capability_class":"active-skill","capability_id":"pipedrive-setup","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","privacy-minimal-disclosure"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/pipedrive-setup/SKILL.md","summary":"The shipped Pipedrive Setup skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["track-people-and-relationships"],"portable_brief":{"goal":"Connect Pipedrive CRM for a live pipeline view and confirm-gated deal updates.","method_outline":["Inspect the current local state and the person's request.","Run the Pipedrive Setup workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available.","Access to the relevant local app or external service, authorized by the person."],"release_provenance":"core-release","since_release":"1.95.1","summary":"Connect Pipedrive CRM for a live pipeline view and confirm-gated deal updates. Use when the user says 'connect Pipedrive', 'link my CRM', 'sync my pipeline with Pipedrive'. Not for pipeline analysis without a CRM; use `pipeline-health`. Not for reconciling an already-connected CRM; use `pipeline-sync`.","title":"Pipedrive Setup","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","External connections remain subject to the provider's availability and authorization."],"value":"Connect Pipedrive CRM for a live pipeline view and confirm-gated deal updates."},{"availability":"active","capability_class":"active-skill","capability_id":"pipeline-sync","changed_in":[],"compatibility":{"foundation_capabilities":["scoped-agency-human-control","honest-health-observability","safe-change-recovery","privacy-minimal-disclosure"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","pipedrive-connection","pipeline-sync-companion"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_mature_skill_amendments.py","summary":"The shipped instructions cover partial reads, prerequisites, confirmation and recovery limits."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_pipedrive_server.py","summary":"Pipedrive adapter tests support key read and write safety behavior, not complete synchronization."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/pipeline-sync/SKILL.md","summary":"The active release skill defines the pipeline reconciliation workflow."}],"impact_tier":"high","jobs":["keep-projects-on-track"],"portable_brief":{"goal":"Reconciles Pipedrive deal facts with local strategy notes through explicit previews and read-back checks.","method_outline":["Discover complete deal and note inputs.","Map differences without treating partial reads as complete.","Preview, confirm and read back each approved reconciliation."],"rollback_advice":"Stop the reconciliation and keep both systems unchanged; use the last preview and read-back receipt to recover any confirmed partial update.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Incomplete reads remain visibly incomplete.","A retry does not assume idempotency without proof."]},"prerequisites":["A configured Pipedrive connection the host can read.","The pipeline-sync companion instructions and explicit authority for any proposed write."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Live view of your Pipedrive pipeline reconciled against your local pipeline tracker; flags drift, maps focus deals, and pushes confirmed updates to the CRM. Use when the user says 'sync my pipeline', 'show me my pipeline', 'reconcile the CRM'. Not for connecting Pipedrive in the first place; use `pipedrive-setup`.","title":"Pipeline Sync","trade_offs":["It requires both the Pipedrive connection and its companion instructions; write behavior remains human-confirmed and only supported, not behaviorally verified.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Reconciles Pipedrive deal facts with local strategy notes through explicit previews and read-back checks."},{"availability":"active","capability_class":"active-skill","capability_id":"process-meetings","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","durable-memory-provenance","privacy-minimal-disclosure"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","meeting-source","task-or-note-store"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_process_meetings_soft_commitment_wiring.py","summary":"Meeting processing is covered where soft commitments are detected and routed."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/process-meetings/SKILL.md","summary":"The shipped skill defines the meeting processing workflow."}],"impact_tier":"core","jobs":["capture-without-friction","track-people-and-relationships"],"portable_brief":{"goal":"Create a meeting processing routine that extracts decisions, commitments and relationship context from approved meeting material.","method_outline":["Read only the approved meeting source.","Identify decisions, action items and people references.","Offer reviewable tasks or note updates."],"rollback_advice":"Disable the meeting processor and remove generated follow-up drafts; keep original meeting notes untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["No unrelated meeting content is read.","Every proposed follow-up cites the meeting source.","The person can edit before task creation."]},"prerequisites":["Meeting notes or transcripts in a readable local source.","A place to write reviewable follow-up tasks."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Turn synced meetings into updated person pages, extracted tasks and organized notes. Use when the user says 'process my meetings', 'catch up my notes', or after Granola/Otter syncs. Also use proactively when unprocessed meetings exist. Not for prepping an upcoming meeting; use `meeting-prep`.","title":"Process Meetings","trade_offs":["Transcript quality controls output quality.","Private meeting material must stay within the host's declared read scope."],"value":"Turns meeting material into people context and follow-up tasks, reducing the chance that decisions or promises disappear after the call."},{"availability":"active","capability_class":"active-skill","capability_id":"product-brief","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","durable-memory-provenance","scoped-agency-human-control"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","project-records"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/product-brief/SKILL.md","summary":"The shipped skill defines the guided extraction, the questions asked in conversation rather than as a form, and the structure of the brief it produces. There is no test of the workflow's own judgement calls; the shipped skill file is the definition of the behaviour, which is why this entry claims support rather than proof."}],"impact_tier":"high","jobs":["keep-projects-on-track"],"portable_brief":{"goal":"Create a guided questioning routine that turns a rough product idea into a written brief a team could execute.","method_outline":["Start from whatever the person has, however rough, without judging it.","Ask two or three questions at a time, conversationally, and wait for answers.","Fill the gaps that matter — who it is for, what problem, what success looks like.","Produce the written brief and keep it where the work will happen."],"rollback_advice":"Delete the generated brief; the questioning changes nothing else, so no other record needs restoring.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Nothing in the brief was supplied by the system rather than the person.","Open questions are listed as open, not resolved by assumption.","The brief is specific enough for someone else to act on."]},"prerequisites":["An idea worth the time; the questioning is guided but not instant.","Somewhere to keep the finished brief next to the work it belongs to."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Extract a product idea through guided questions and generate a PRD. Use when the user says 'write a PRD', 'spec this feature', 'turn this idea into a brief'. Not for a non-product initiative like hiring or partnerships (use `initiative-kickoff` once shipped); not for checking existing projects' status (use `project-health`).","title":"Product Brief","trade_offs":["The brief is only as sharp as the answers given; it will not invent a market, a user or a measure.","It is shaped around product work, so a hire, a partnership or an operational bet is served better elsewhere."],"value":"Draws a half-formed product idea out through questions and leaves a written brief a team could actually build from, instead of an idea that only made sense in one head."},{"availability":"active","capability_class":"active-skill","capability_id":"project-health","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","honest-health-observability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","project-records"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/project-health/SKILL.md","summary":"The shipped skill defines the four checks it makes per project — activity, active tasks, blockers and next-step clarity — and the traffic-light thresholds behind them. There is no test of the workflow's own judgement calls; the shipped skill file is the definition of the behaviour, which is why this entry claims support rather than proof."}],"impact_tier":"high","jobs":["start-each-day-focused"],"portable_brief":{"goal":"Create a fast scan across active projects that reports what is stale, blocked or missing a clear next step.","method_outline":["List the active projects and read when each last changed.","Check whether each has current tasks, a recorded blocker and a clear next action.","Report one line per project with the reason it was flagged.","Keep the output short enough to read in one pass."],"rollback_advice":"Stop running the scan; it reads project material and writes a report, so removing the report leaves the projects exactly as they were.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Every flag names the specific reason it was raised.","Thresholds for stale and blocked are stated, not implied.","A healthy project takes one line, not a paragraph."]},"prerequisites":["Project notes the scan can read.","Some record of recent activity, so going quiet means something."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Scan active projects for status, blockers and next actions. Use when the user says 'how are my projects', 'what's stuck', 'project status'. Also use proactively when projects have gone quiet. Not for writing a spec for a new product idea; use `product-brief`.","title":"Project Health","trade_offs":["Quietness is judged from when project files last changed, which misreads work happening somewhere else.","It is deliberately small: it flags what to look at, it does not diagnose why."],"value":"Answers “what’s stuck?” across every active project in one pass: how long since anything moved, what is blocked, and whether the next step is actually clear."},{"availability":"active","capability_class":"active-skill","capability_id":"prompt-improver","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","compounding-correctability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/prompt-improver/SKILL.md","summary":"The shipped Prompt Improver skill defines the workflow Lens is cataloguing."}],"impact_tier":"medium","jobs":["reflect-and-improve-continuously"],"portable_brief":{"goal":"Rewrite a vague prompt into a rich, structured one, with automatic fallback.","method_outline":["Inspect the current local state and the person's request.","Run the Prompt Improver workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Rewrite a vague prompt into a rich, structured one, with automatic fallback. Use when the user says 'improve this prompt', 'make this prompt better', or hands over a thin instruction. Not for creating a reusable skill; use `create-skill`.","title":"Prompt Improver","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Rewrite a vague prompt into a rich, structured one, with automatic fallback."},{"availability":"active","capability_class":"active-skill","capability_id":"relationship-radar","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","durable-memory-provenance","scoped-agency-human-control"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["relationship-history","skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_relationship_radar_skill.py","summary":"Relationship radar skill behavior is covered in the skill test."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/relationship-radar/SKILL.md","summary":"The shipped skill defines the cold-relationship workflow."}],"impact_tier":"high","jobs":["track-people-and-relationships"],"portable_brief":{"goal":"Create a relationship review that identifies important contacts with stale recent engagement.","method_outline":["Read approved relationship or meeting evidence.","Rank by importance and recency.","Suggest reviewable next actions rather than sending messages."],"rollback_advice":"Remove the radar command or delete its generated suggestions; do not alter source relationship history.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The output names why each person surfaced.","No message is sent automatically.","The person can dismiss or defer a suggestion."]},"prerequisites":["A relationship or meeting history source.","A rule for what counts as important enough to surface."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Spot the relationships going cold — people you were in regular contact with and haven't touched in a while, and important contacts who are slipping — ranked by how stale each has become, so you can reconnect before it costs you. Use when the user says 'who should I reach out to', 'who am I losing touch with', 'who's going cold', 'who needs attention', or during a weekly review. Also use proactively when someone important hasn't come up in a long time. Not for prepping a specific upcoming meeting; use `meeting-prep`. Not for specific promises you owe people; use `commitments`.","title":"Relationship Radar","trade_offs":["Recency signals can miss context the system cannot see.","The person still decides whether to reach out."],"value":"Shows important relationships that are going quiet so the person can reconnect before silence becomes a problem."},{"availability":"active","capability_class":"active-skill","capability_id":"reset","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","compounding-correctability"],"host_adapters":["claude-code","cowork"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/reset/SKILL.md","summary":"The shipped Reset skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Restructure an existing Dex vault for a new role or changed preferences, without losing data.","method_outline":["Inspect the current local state and the person's request.","Run the Reset workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Re-run the setup questions over an existing Dex vault when preferences or setup answers changed, without losing data. Use when the user says 'restructure my Dex', 'redo my setup', 'my pillars are wrong now'. Not for a job or role change; use `change-job` — it runs this same reset plus the people, archive and task passes. Not for first-time setup; use `setup`. Not for just toggling one feature; use `manage-capabilities`.","title":"Reset","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Restructure an existing Dex vault for a new role or changed preferences, without losing data."},{"availability":"active","capability_class":"active-skill","capability_id":"review","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","compounding-correctability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/review/SKILL.md","summary":"The shipped Review skill defines the workflow Lens is cataloguing."}],"impact_tier":"niche","jobs":["reflect-and-improve-continuously"],"portable_brief":{"goal":"Keeps the old review command working by handing it directly to the current daily review workflow.","method_outline":["Inspect the current local state and the person's request.","Run the Review workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Deprecation alias for `daily-review`. The end-of-day review was renamed; `/review` now redirects to `daily-review` and will be removed after one release. Use when the user types `/review` out of habit — hand straight off to `daily-review`, which owns end-of-day review and learning capture. Not for running the review here; use `daily-review`.","title":"Review","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Keeps the old review command working by handing it directly to the current daily review workflow."},{"availability":"active","capability_class":"active-skill","capability_id":"save-insight","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","compounding-correctability","context-orientation"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["durable-memory-store","skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_learning_capture_command_name.py","summary":"Learning capture command naming is pinned by tests."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/save-insight/SKILL.md","summary":"The shipped skill defines the reusable-learning capture flow."}],"impact_tier":"high","jobs":["reflect-and-improve-continuously"],"portable_brief":{"goal":"Create a lightweight learning capture routine for reusable lessons from completed work.","method_outline":["Ask what changed future behavior.","Store only the reusable rule and source context.","Prefer small scoped memories over broad summaries."],"rollback_advice":"Delete or archive the saved learning entry; keep original project records separate.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The saved item has a clear reuse condition.","It does not contain secrets or raw private material.","Future work can cite where it came from."]},"prerequisites":["A durable memory or notes store.","A review habit for deciding what is worth keeping."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Capture a reusable learning from completed work so future similar work is easier. Use when the user says 'save this learning', 'capture this insight', or finishes something tricky. Also use proactively after non-routine work. Not for recording a *decision* and its rationale; use `decision-log`.","title":"Save Insight","trade_offs":["Low-quality memories can clutter future context.","The person or system needs a rule for when to save learning."],"value":"Turns a learning from completed work into durable context future agents can reuse instead of rediscovering it."},{"availability":"active","capability_class":"active-skill","capability_id":"scrape","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","scoped-agency-human-control"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/scrape/SKILL.md","summary":"The shipped Scrape skill defines the workflow Lens is cataloguing."}],"impact_tier":"niche","jobs":["keep-projects-on-track"],"portable_brief":{"goal":"Scrape web pages via Scrapling.","method_outline":["Inspect the current local state and the person's request.","Run the Scrape workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available.","Access to the relevant local app or external service, authorized by the person."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Scrape web pages via Scrapling — stealth fetching, anti-bot bypass, CSS selectors, no API key. Use when the user says 'scrape', 'pull data from this URL', 'extract from this site'. Not for meaning-based search of the user's own vault; use `enable-semantic-search`.","title":"Scrape","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","External connections remain subject to the provider's availability and authorization."],"value":"Scrape web pages via Scrapling."},{"availability":"active","capability_class":"active-skill","capability_id":"setup","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","compounding-correctability"],"host_adapters":["claude-code","cowork"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/setup/SKILL.md","summary":"The shipped Setup skill defines the workflow Lens is cataloguing."}],"impact_tier":"core","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Run first-time Dex onboarding: build the vault structure, capture the user profile and configure MCPs.","method_outline":["Inspect the current local state and the person's request.","Run the Setup workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Run first-time Dex onboarding: build the vault structure, capture the user profile and configure MCPs. Use when `System/.onboarding-complete` is absent or the user says 'set up Dex', 'start onboarding'. Not for the post-onboarding tour; use `getting-started`. Not for a mid-life role change; use `reset`.","title":"Setup","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Run first-time Dex onboarding: build the vault structure, capture the user profile and configure MCPs."},{"availability":"active","capability_class":"active-skill","capability_id":"skill-score","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","compounding-correctability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/skill-score/SKILL.md","summary":"The shipped Skill Score skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Grade a Dex skill against the shape-aware quality rubric and report a ship/revise/no verdict with the exact fixes.","method_outline":["Inspect the current local state and the person's request.","Run the Skill Score workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.69.0","summary":"Grade a Dex skill against the shape-aware quality rubric and report a ship/revise/no verdict with the exact fixes. Use when you finish writing or editing a skill, when create-skill hands off a new package, before shipping a first-party skill, or when the user asks \"is this skill any good / will it fire / score my skill\". Also use proactively right after any SKILL.md is created or its description changes. Not for authoring a new skill from scratch (use create-skill) or fixing broken YAML frontmatter alone (create-skill's validator does that); skill-score judges architecture and routing, not just format.","title":"Skill Score","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Grade a Dex skill against the shape-aware quality rubric and report a ship/revise/no verdict with the exact fixes."},{"availability":"active","capability_class":"active-skill","capability_id":"things-setup","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","scoped-agency-human-control"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/things-setup/SKILL.md","summary":"The shipped Things Setup skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["manage-tasks-reliably"],"portable_brief":{"goal":"Connect Things 3 (macOS only) so Dex reads and updates your Things tasks.","method_outline":["Inspect the current local state and the person's request.","Run the Things Setup workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available.","Access to the relevant local app or external service, authorized by the person."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Connect Things 3 (macOS only) so Dex reads and updates your Things tasks. Use when the user says 'I use Things', 'sync my Things inbox', or pastes a `things://` link. Not for Todoist (`todoist-setup`) or Trello (`trello-setup`).","title":"Things Setup","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","External connections remain subject to the provider's availability and authorization."],"value":"Connect Things 3 (macOS only) so Dex reads and updates your Things tasks."},{"availability":"active","capability_class":"active-skill","capability_id":"todoist-setup","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","scoped-agency-human-control"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/todoist-setup/SKILL.md","summary":"The shipped Todoist Setup skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["manage-tasks-reliably"],"portable_brief":{"goal":"Connect Todoist so Dex reads and updates your Todoist tasks two ways.","method_outline":["Inspect the current local state and the person's request.","Run the Todoist Setup workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available.","Access to the relevant local app or external service, authorized by the person."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Connect Todoist so Dex reads and updates your Todoist tasks two ways. Use when the user says 'I use Todoist', 'sync Todoist', or pastes a todoist.com link. Not for Things 3 (`things-setup`) or Trello (`trello-setup`); not for Jira tickets (`atlassian-setup`).","title":"Todoist Setup","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","External connections remain subject to the provider's availability and authorization."],"value":"Connect Todoist so Dex reads and updates your Todoist tasks two ways."},{"availability":"active","capability_class":"active-skill","capability_id":"trello-setup","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","scoped-agency-human-control"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/trello-setup/SKILL.md","summary":"The shipped Trello Setup skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["manage-tasks-reliably"],"portable_brief":{"goal":"Connect Trello so Dex reads your boards and manages cards.","method_outline":["Inspect the current local state and the person's request.","Run the Trello Setup workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available.","Access to the relevant local app or external service, authorized by the person."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Connect Trello so Dex reads your boards and manages cards. Use when the user says 'I use Trello', 'my Trello board', or pastes a trello.com link. Not for Todoist (`todoist-setup`) or Things (`things-setup`).","title":"Trello Setup","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","External connections remain subject to the provider's availability and authorization."],"value":"Connect Trello so Dex reads your boards and manages cards."},{"availability":"active","capability_class":"active-skill","capability_id":"triage","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","durable-memory-provenance","scoped-agency-human-control"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","durable-goals-or-tasks","task-or-note-store"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/triage/SKILL.md","summary":"The shipped skill defines the routing workflow, the index it builds of existing projects and people, and the way current priorities raise confidence in a destination. There is no test of the workflow's own judgement calls; the shipped skill file is the definition of the behaviour, which is why this entry claims support rather than proof."}],"impact_tier":"core","jobs":["manage-tasks-reliably"],"portable_brief":{"goal":"Create a routing pass that clears loose captures into the right home using the person's current priorities.","method_outline":["Read current priorities and goals before touching the pile.","Build an index of the existing projects, people and areas that could receive an item.","Route each item to its best home, and leave anything genuinely unclear untouched.","Keep the decision per item fast; this is a clearing pass, not an analysis."],"rollback_advice":"Move the routed files back to the capture folder; the routing only relocates and links items, so their content is unchanged.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Items matching current priorities surface first.","Nothing is filed to a destination the person cannot recognise.","Unclear items are left in place rather than moved somewhere plausible."]},"prerequisites":["A capture folder or set of notes where loose items actually accumulate.","Current priorities or goals, so routing follows what matters now rather than in general."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Route orphaned inbox files and pull scattered `- [ ]` tasks into the right project/person/goal using current priorities. Use when the user says 'clean up my inbox', 'triage', 'sort out these notes'. Also use proactively when `00-Inbox/` is piling up. Not for updating notes from meetings; use `process-meetings`.","title":"Triage","trade_offs":["Routing is a fast suggestion rather than a considered judgement, and is meant to be reviewed.","An item with no clear home is left where it is rather than filed somewhere merely plausible."],"value":"Clears the pile-up: loose files and stray unticked boxes get routed to the project, person or goal they belong to, weighted by what the person said matters this week."},{"availability":"active","capability_class":"active-skill","capability_id":"week-plan","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","durable-memory-provenance","scoped-agency-human-control"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","durable-goals-or-tasks"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_work_server_weekly_priority_creation.py","summary":"Weekly priority creation is covered through the Work MCP path."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/week-plan/SKILL.md","summary":"The shipped skill defines the weekly planning routine."}],"impact_tier":"high","jobs":["start-each-day-focused"],"portable_brief":{"goal":"Create a weekly planning routine that maps goals and commitments to a bounded set of priorities.","method_outline":["Read goals, open tasks and calendar pressure.","Select a short priority set for the week.","Expose uncertainty instead of forcing a fake complete plan."],"rollback_advice":"Remove the weekly planning command or its scheduled reminder; preserve the underlying tasks and goals.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The plan names priorities, not a generic task dump.","Capacity limits are visible in the output."]},"prerequisites":["Some durable goal or task record the host can read.","A cadence for reviewing the plan."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Set the week's priorities against goals, calendar shape and task effort. Use when the user says 'plan my week', 'what should I focus on this week', or on their first working day. Also use proactively at the first session of a new week. Not for reviewing the week just past; use `week-review`.","title":"Week Plan","trade_offs":["A weekly plan can become stale mid-week unless the person revisits it.","It depends on honest capacity data."],"value":"Turns goals, capacity and open work into a weekly focus plan, so repeated work starts from priorities rather than a blank chat."},{"availability":"active","capability_class":"active-skill","capability_id":"week-review","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","honest-health-observability","compounding-correctability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","durable-goals-or-tasks"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_instruction_honesty.py","summary":"A dedicated test pins that the weekly review reads the person's own configured working week and lands on their last working day, rather than assuming everyone finishes on a Friday."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_skill_delegated_gathering.py","summary":"Covers the paired gathering instructions the weekly review depends on, so the bulk reading step cannot be orphaned by a later edit."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/week-review/SKILL.md","summary":"The shipped skill defines the weekly review, its insistence on concrete measures over percentages, and the goal and pattern discussion that stays with the person."}],"impact_tier":"high","jobs":["start-each-day-focused","reflect-and-improve-continuously"],"portable_brief":{"goal":"Create a weekly review that reports concrete finished work and honest gaps instead of a synthetic progress score.","method_outline":["Gather the week's priorities, completed work and meeting record first.","Report what finished, what did not, and what changed — in countable terms.","Surface repeating patterns as questions for the person rather than verdicts.","Confirm next week's priorities with the person before recording them."],"rollback_advice":"Stop running the routine and delete the generated weekly summaries; priorities and goals live in their own records and are left as they were.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["No percentage or score appears that the underlying data cannot support.","Unfinished work is named plainly rather than folded into an average.","The review runs on the person's own last working day, not a fixed one."]},"prerequisites":["A record of the week's priorities or goals to review against.","The person's own working week, so the review lands on their last working day rather than an assumed Friday."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Review the week with concrete accomplishments (not fake percentages), pattern detection and goal tracking. Use when the user says 'how was my week', 'week review', or it's their last working day. Also use proactively when a week's priorities are largely resolved. Not for planning the coming week; use `week-plan`.","title":"Week Review","trade_offs":["An honest review depends on the week having been written down as it happened.","The patterns it names are prompts for the person's judgement, not conclusions about them."],"value":"Reviews the week in concrete finished work and the patterns behind it, and deliberately refuses to invent a completion percentage that would make a bad week look measured."},{"availability":"active","capability_class":"active-skill","capability_id":"weekly-reflection","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","scoped-agency-human-control","compounding-correctability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","durable-memory-store"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_adoption_effective_behavior.py","summary":"Real behaviour coverage of how this capability is switched on and off again: the test adopts it through Dex's live change system, proves the change can be rewound exactly, and proves a rewind refuses rather than overwrite a file the person has since edited. That covers the switch-on path, not the reflection conversation itself."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/weekly-reflection/SKILL.md","summary":"The shipped skill defines the three questions, the one-at-a-time pacing, and the rule against turning a feeling into a task or forcing a positive lesson."}],"impact_tier":"high","jobs":["reflect-and-improve-continuously"],"portable_brief":{"goal":"Create a short weekly reflection on how work felt, kept separate from any measure of what was produced.","method_outline":["Ask what gave energy, one question at a time, and reflect the answer back.","Ask what drained energy, and offer any pattern as a possibility rather than a diagnosis.","Ask for one small, observable change the person controls.","Offer to keep the answers; accept no as an answer."],"rollback_advice":"Delete the saved reflection entry; entries are appended, so earlier writing is untouched and removal restores the previous state.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The week is not graded, scored or turned into a lesson.","The chosen change is small enough to actually happen.","Nothing is saved that the person did not agree to save."]},"prerequisites":["A few quiet minutes; this is the one thing that cannot be done on the person's behalf.","Somewhere private to keep the answers, or the choice not to keep them at all."],"release_provenance":"core-release","since_release":"1.80.0","summary":"A short guided reflection on what energized you, what drained you, and one change for next week. Use when the user wants to reflect on how work *felt*, not what got done — 'reflect on my week', 'what's draining me'. Not for progress-and-goals tracking; use `week-review`.","title":"Weekly Reflection","trade_offs":["It deliberately does not measure or score the week, which some people will want instead.","Reflection compounds only if the answers are kept and read again later."],"value":"Three questions about how the week felt — what gave energy, what took it, one thing to change — kept deliberately separate from the record of what got done."},{"availability":"active","capability_class":"active-skill","capability_id":"wispr-setup","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","privacy-minimal-disclosure"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/wispr-setup/SKILL.md","summary":"The shipped Wispr Setup skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["capture-without-friction"],"portable_brief":{"goal":"Connect Wispr Flow so meeting captures arrive in the vault on their own.","method_outline":["Inspect the current local state and the person's request.","Run the Wispr Setup workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available.","Access to the relevant local app or external service, authorized by the person."],"release_provenance":"core-release","since_release":"1.97.0","summary":"Connect Wispr Flow so meeting captures arrive in your vault on their own. Use when the user says 'connect Wispr', 'set up Wispr Flow', 'my Wispr meetings aren't in Dex'. Not for Granola; use `granola-setup`. Not for processing meetings already in the vault; use `process-meetings`.","title":"Wispr Setup","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","External connections remain subject to the provider's availability and authorization."],"value":"Connect Wispr Flow so meeting captures arrive in the vault on their own."},{"availability":"active","capability_class":"active-skill","capability_id":"xray","changed_in":[],"compatibility":{"foundation_capabilities":["honest-health-observability","context-orientation","compounding-correctability"],"host_adapters":["claude-code","cowork"],"host_requirements":["skills-directory","local-diagnostics"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/xray/SKILL.md","summary":"The shipped skill defines the default mode that explains the current conversation, the deeper modes on how the system is built and how to extend it, and the show-the-work-then-explain-why structure. There is no test of the workflow's own judgement calls; the shipped skill file is the definition of the behaviour, which is why this entry claims support rather than proof."}],"impact_tier":"high","jobs":["reflect-and-improve-continuously"],"portable_brief":{"goal":"Explain the mechanics of what the system just did, using the current conversation as the teaching material.","method_outline":["Identify what was read, written, and which tools ran in this conversation.","Explain why each step was necessary, in the person's own terms.","Connect each concrete step to the underlying idea it demonstrates.","End with what the person could change or extend themselves."],"rollback_advice":"Stop offering the explanation; it only reads and describes the conversation, so nothing in the person's system needs to be undone.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Every step described actually happened in this conversation.","Nothing is presented as a health verdict about the system.","The explanation would make sense to someone who did not build it."]},"prerequisites":["A conversation that has actually done something worth explaining.","A host that can report the steps it took during that conversation."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Explain what just happened under the hood — the context, MCP tools, and hooks behind Dex's last response — as AI education. Use when the user says 'how did you do that', 'what just happened', 'explain the mechanics'. Not for a system health check; use `dex-doctor`.","title":"Xray","trade_offs":["It explains what happened; it is not a health check and will not say whether anything is broken.","The explanation is only as accurate as what the host exposes about its own run."],"value":"Explains what the system just did and why — which files it read, which tools ran, what was loaded before the conversation even started — so the person learns their own setup instead of trusting it blindly."},{"availability":"active","capability_class":"active-skill","capability_id":"zoom-setup","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","privacy-minimal-disclosure"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/zoom-setup/SKILL.md","summary":"The shipped Zoom Setup skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["capture-without-friction"],"portable_brief":{"goal":"Connect Zoom for meeting recordings, scheduling and transcript context.","method_outline":["Inspect the current local state and the person's request.","Run the Zoom Setup workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available.","Access to the relevant local app or external service, authorized by the person."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Connect the official Zoom for Claude connector for meeting recordings, transcripts, AI summaries, cloud-recording lists and Zoom Chat/Canvas search. Use when the user says 'connect Zoom', 'pull my Zoom recordings', 'search my Zoom meetings'. Not for Granola-sourced notes; use `granola-setup`. Not for Teams; use `ms-teams-setup`.","title":"Zoom Setup","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","External connections remain subject to the provider's availability and authorization."],"value":"Connect Zoom for meeting recordings, scheduling and transcript context."},{"availability":"dormant","capability_class":"active-skill","capability_id":"account-plan","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","durable-memory-provenance","scoped-agency-human-control"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_mature_skill_amendments.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/sales/account-plan/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track","track-people-and-relationships"],"portable_brief":{"goal":"Builds a sourced account plan that keeps goals, relationships, risks and next moves in one reviewable place.","method_outline":["Collect dated account facts with per-field provenance.","Separate knowns, unknowns and recommendations.","Preview any saved plan and read it back after confirmation."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Important claims cite their source and date.","No account write occurs without an exact confirmed preview."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Create or update strategic account plan","title":"Account Plan","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Builds a sourced account plan that keeps goals, relationships, risks and next moves in one reviewable place."},{"availability":"dormant","capability_class":"active-skill","capability_id":"call-prep","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","privacy-minimal-disclosure","durable-memory-provenance"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_mature_skill_amendments.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/sales/call-prep/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track","capture-without-friction","track-people-and-relationships"],"portable_brief":{"goal":"Turns current relationship, account and meeting evidence into a concise call brief without inventing intent.","method_outline":["Time-box and date the approved inputs.","Surface objectives, context and honest unknowns.","Draft questions and a read-only brief."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Every material point has a source or an unknown label.","The brief does not claim another person's intent."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Prepare a sourced, read-only brief for a person or account call","title":"Call Prep","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Turns current relationship, account and meeting evidence into a concise call brief without inventing intent."},{"availability":"dormant","capability_class":"active-skill","capability_id":"deal-review","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","honest-health-observability","durable-memory-provenance"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_mature_skill_amendments.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/sales/deal-review/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track","manage-tasks-reliably"],"portable_brief":{"goal":"Reviews deal evidence, value coverage and dated activity so pipeline attention goes to the right places.","method_outline":["Read canonical deal values and activity dates.","Keep unchecked and unknown-value deals visible.","Calculate only over a disclosed denominator."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Totals exclude unknown values instead of treating them as zero.","Coverage names checked and unchecked deals."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Review active deals from canonical activity evidence and surface unknowns","title":"Deal Review","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Reviews deal evidence, value coverage and dated activity so pipeline attention goes to the right places."},{"availability":"dormant","capability_class":"active-skill","capability_id":"pipeline-health","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","honest-health-observability","scoped-agency-human-control"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_mature_skill_amendments.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/sales/pipeline-health/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track"],"portable_brief":{"goal":"Checks pipeline coverage, stage movement and forecast assumptions against configured sales definitions.","method_outline":["Confirm stages, probabilities, targets and period.","Distinguish missing data from zero.","Show sourced benchmarks, denominators and arithmetic."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Every percentage can be recomputed from shown inputs.","Missing configuration returns an unknown result."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Analyze pipeline coverage and forecast confidence from configured sales definitions","title":"Pipeline Health","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Checks pipeline coverage, stage movement and forecast assumptions against configured sales definitions."},{"availability":"dormant","capability_class":"active-skill","capability_id":"customer-intel","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","durable-memory-provenance","privacy-minimal-disclosure"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_mature_skill_amendments.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/product/customer-intel/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track"],"portable_brief":{"goal":"Synthesizes dated customer evidence into traceable themes while preserving quotes, contradictions and weak-signal limits.","method_outline":["Build a source-ID and date ledger.","Deduplicate repeated evidence without dropping provenance.","Return insufficient evidence when the record cannot support a theme."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Quotes remain faithful to their source.","Contradictory evidence stays visible."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Synthesize recent customer feedback and pain points","title":"Customer Intel","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Synthesizes dated customer evidence into traceable themes while preserving quotes, contradictions and weak-signal limits."},{"availability":"dormant","capability_class":"active-skill","capability_id":"feature-decision","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","durable-memory-provenance","scoped-agency-human-control"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_mature_skill_amendments.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/product/feature-decision/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track"],"portable_brief":{"goal":"Frames an evidence-backed feature recommendation while keeping the human decision and prior record intact.","method_outline":["Gather outcomes, constraints, effort evidence and unknowns.","Compare alternatives and make a labelled recommendation.","Preview a proposed record and preserve or explicitly supersede earlier decisions."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The recommendation is not presented as an accepted decision.","Any persisted record reads back to the confirmed preview."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Framework for making feature prioritization decisions","title":"Feature Decision","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Frames an evidence-backed feature recommendation while keeping the human decision and prior record intact."},{"availability":"dormant","capability_class":"active-skill","capability_id":"roadmap","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","honest-health-observability","durable-memory-provenance"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_mature_skill_amendments.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/product/roadmap/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track","start-each-day-focused"],"portable_brief":{"goal":"Builds a roadmap view from canonical dated status evidence, with disclosed status coverage and honest unknowns.","method_outline":["Read canonical goals, initiatives and status dates.","Keep unknown distinct from blocked.","Reconcile status counts over a declared cohort and cite the evidence."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Every status has a source and freshness date.","Excluded or unknown work is shown beside the denominator."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Review roadmap status, evidence freshness, blockers, and alignment","title":"Roadmap","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Builds a roadmap view from canonical dated status evidence, with disclosed status coverage and honest unknowns."},{"availability":"dormant","capability_class":"active-skill","capability_id":"audience-intel","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","durable-memory-provenance","privacy-minimal-disclosure"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_role_skill_contracts.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/marketing/audience-intel/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track"],"portable_brief":{"goal":"Finds evidence-backed audience patterns without turning repeated anecdotes into invented personas.","method_outline":["Time-box and deduplicate the evidence ledger.","Compare segments, quotes and contradictions.","Label observed patterns separately from inference."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Every audience claim cites quote, source and date.","Insufficient evidence produces an honest limited result."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Use when synthesizing dated customer conversations, feedback, or behavior evidence into audience or persona insight, especially when sources are numerous, repeated, time-bounded, or disagree.","title":"Audience Intel","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Finds evidence-backed audience patterns without turning repeated anecdotes into invented personas."},{"availability":"dormant","capability_class":"active-skill","capability_id":"campaign-review","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","compounding-correctability","context-orientation"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_role_skill_contracts.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/marketing/campaign-review/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track","reflect-and-improve-continuously"],"portable_brief":{"goal":"Turns campaign goals, comparable actuals and attribution limits into reusable learning.","method_outline":["Establish the goal, baseline and comparable period.","Normalize target and actual metrics.","Separate correlation, causation, hypotheses and missing data."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Every result cites its source and denominator.","Any saved review is previewed, confirmed and read back."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Use when a completed or in-flight marketing campaign needs an evidence-backed review of its goal, baseline, targets, actuals, or learnings.","title":"Campaign Review","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Turns campaign goals, comparable actuals and attribution limits into reusable learning."},{"availability":"dormant","capability_class":"active-skill","capability_id":"content-calendar","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","honest-health-observability","scoped-agency-human-control"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_role_skill_contracts.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/marketing/content-calendar/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track","start-each-day-focused"],"portable_brief":{"goal":"Builds a dated content inventory that separates commitments from ideas and exposes collisions, gaps and undated work.","method_outline":["Define the period, timezone and canonical status evidence.","Detect duplicate items and date collisions.","Report committed, idea and undated buckets separately."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["No date, status or coverage percentage is inferred.","Any calendar change requires a confirmed preview."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Use when inventorying content commitments, ideas, and schedule coverage for a specified period and timezone.","title":"Content Calendar","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Builds a dated content inventory that separates commitments from ideas and exposes collisions, gaps and undated work."},{"availability":"dormant","capability_class":"active-skill","capability_id":"messaging-audit","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","compounding-correctability","durable-memory-provenance"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_role_skill_contracts.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/marketing/messaging-audit/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track"],"portable_brief":{"goal":"Compares current messaging with a cited approved baseline and distinguishes drift from intentional variation.","method_outline":["Select and date the canonical baseline.","Normalize terms by audience and channel.","Classify contradictions, intentional variants, stale copy and unsupported claims."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The source-date matrix can be traced to each finding.","No copy is changed without human confirmation."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Use when comparing product or campaign messaging across content against a cited canonical baseline and its supporting evidence.","title":"Messaging Audit","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Compares current messaging with a cited approved baseline and distinguishes drift from intentional variation."},{"availability":"dormant","capability_class":"active-skill","capability_id":"architecture-decision","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","compounding-correctability","scoped-agency-human-control"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_role_skill_contracts.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/engineering/architecture-decision/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track"],"portable_brief":{"goal":"Compares architecture options and records an accepted choice only after the named human authority decides.","method_outline":["Collect constraints, evidence and alternatives.","Compare consequences and trade-offs.","Keep proposed, accepted and superseded ADR states distinct."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The record names decision authority and sources.","History is appended or superseded, never silently rewritten."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Use when a system or design choice needs an evidence-backed ADR, explicit alternatives and trade-offs, or review of proposed, accepted, or superseded decision history.","title":"Architecture Decision","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Compares architecture options and records an accepted choice only after the named human authority decides."},{"availability":"dormant","capability_class":"active-skill","capability_id":"incident-review","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","compounding-correctability","honest-health-observability","safe-change-recovery"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_role_skill_contracts.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/engineering/incident-review/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track","evolve-the-system-itself","reflect-and-improve-continuously"],"portable_brief":{"goal":"Creates a blameless, evidence-led incident review with a cited timeline and verifiable prevention work.","method_outline":["Build a timezone-aware fact timeline.","Separate facts, hypotheses and contradictions.","Assign prevention actions only from confirmed ownership and proof."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Unknown causes and owners remain explicit.","Follow-up checks name evidence of prevention."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Use when a service or operational incident needs a cited, timezone-aware timeline, blameless learning review, or prevention actions with accountable follow-up.","title":"Incident Review","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Creates a blameless, evidence-led incident review with a cited timeline and verifiable prevention work."},{"availability":"dormant","capability_class":"active-skill","capability_id":"tech-debt","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","honest-health-observability","scoped-agency-human-control"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_role_skill_contracts.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/engineering/tech-debt/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track","evolve-the-system-itself","start-each-day-focused"],"portable_brief":{"goal":"Creates a deduplicated, evidence-linked technical-debt inventory with honest risk, effort and confidence.","method_outline":["Link code or operational evidence and first-seen dates.","Separate impact, effort, confidence and cost of delay.","Escalate security evidence through the approved path."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Age is never guessed from an undated mention.","Prioritisation retains its evidence and uncertainty."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Use when technical debt needs linked code or operational evidence, deduplication, first-seen provenance, or impact, effort, confidence, and cost-of-delay prioritization.","title":"Tech Debt","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Creates a deduplicated, evidence-linked technical-debt inventory with honest risk, effort and confidence."},{"availability":"dormant","capability_class":"active-skill","capability_id":"board-prep","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","privacy-minimal-disclosure","scoped-agency-human-control","honest-health-observability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_role_skill_contracts.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/finance/board-prep/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track"],"portable_brief":{"goal":"Builds a reconciled, dated financial narrative and question set as a draft for authorised human review.","method_outline":["Set the as-of date, source hierarchy, unit and currency.","Reconcile actuals and expose forecast limits.","Draft the narrative and likely questions without approving or sending it."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Totals reconcile to cited sources.","Unknowns and forecast assumptions remain visible."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Use when preparing a finance draft for a board or leadership review from dated actuals, budgets, forecasts, cash data, and decision context. Not for detailed line-item variance analysis; use variance-analysis.","title":"Board Prep","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Builds a reconciled, dated financial narrative and question set as a draft for authorised human review."},{"availability":"dormant","capability_class":"active-skill","capability_id":"close-status","changed_in":[],"compatibility":{"foundation_capabilities":["honest-health-observability","durable-memory-provenance","context-orientation"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_role_skill_contracts.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/finance/close-status/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track","manage-tasks-reliably"],"portable_brief":{"goal":"Shows month-end close progress, blockers and critical path from the authoritative checklist rather than guessed status.","method_outline":["Load the approved checklist and as-of date.","Count complete items over the explicit denominator.","Derive dependencies and critical path while separating blocked, unknown and not started."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Completion can be recomputed from counted evidence.","No missing state becomes complete by inference."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Use when reporting the evidence-backed status of a named month-end or quarter-end close, its blockers, counted completion, and dependency path. Not for explaining budget variances; use variance-analysis.","title":"Close Status","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Shows month-end close progress, blockers and critical path from the authoritative checklist rather than guessed status."},{"availability":"dormant","capability_class":"active-skill","capability_id":"variance-analysis","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","honest-health-observability","context-orientation"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_role_skill_contracts.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/finance/variance-analysis/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track","reflect-and-improve-continuously"],"portable_brief":{"goal":"Explains reconciled actual-versus-plan differences with validated formulas, materiality and honest causal limits.","method_outline":["Normalize units, signs and comparable periods.","Validate formulas, materiality and reconciled totals.","Label timing or permanent causes as evidenced, hypothesised or unknown."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Shown arithmetic reproduces each variance.","Unsupported causal explanations remain hypotheses."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Use when explaining a dated actual-versus-budget or actual-versus-forecast variance for a comparable finance period. Not for tracking close checklist completion; use close-status.","title":"Variance Analysis","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Explains reconciled actual-versus-plan differences with validated formulas, materiality and honest causal limits."},{"availability":"dormant","capability_class":"active-skill","capability_id":"expansion-opportunities","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","durable-memory-provenance","scoped-agency-human-control","privacy-minimal-disclosure"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_role_skill_contracts.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/customer-success/expansion-opportunities/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track","track-people-and-relationships"],"portable_brief":{"goal":"Finds account expansion hypotheses while keeping customer evidence, expressed need, fit and speculation separate.","method_outline":["Gather dated account evidence and expressed needs.","Assess fit without inventing value or likelihood.","Keep CRM changes, outreach and commercial action behind human approval."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Every hypothesis shows its evidence and confidence.","No recommendation becomes pipeline or customer communication automatically."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Use when reviewing customer accounts for evidence-backed expansion hypotheses based on current usage, product fit, and expressed needs. Not for renewal strategy or negotiation; use renewal-prep.","title":"Expansion Opportunities","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Finds account expansion hypotheses while keeping customer evidence, expressed need, fit and speculation separate."},{"availability":"dormant","capability_class":"active-skill","capability_id":"health-score","changed_in":[],"compatibility":{"foundation_capabilities":["honest-health-observability","context-orientation","durable-memory-provenance"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_role_skill_contracts.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/customer-success/health-score/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track","track-people-and-relationships"],"portable_brief":{"goal":"Applies a configured account-health rubric to dated inputs, or returns not scored when honest scoring is impossible.","method_outline":["Confirm the scoring rubric and data freshness.","Calculate only from permitted dated inputs.","Keep unknown distinct from red or green and review signals when not scored."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The score can be reproduced from the configured rubric.","Silence alone never becomes churn risk."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Use when reviewing customer-account health with a configured scoring rubric and dated inputs, or when reporting why a portfolio cannot yet be scored. Not for finding expansion opportunities; use expansion-opportunities.","title":"Health Score","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Applies a configured account-health rubric to dated inputs, or returns not scored when honest scoring is impossible."},{"availability":"dormant","capability_class":"active-skill","capability_id":"renewal-prep","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","durable-memory-provenance","scoped-agency-human-control","privacy-minimal-disclosure"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_role_skill_contracts.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/customer-success/renewal-prep/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track","track-people-and-relationships"],"portable_brief":{"goal":"Prepares a sourced renewal brief from contract, ARR, dated outcomes and explicit risks without making commercial commitments.","method_outline":["Cite contract, ARR, renewal date and outcome evidence.","Separate risk from unknown and recommendations from decisions.","Keep pricing and customer communication human-authorised."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Every value claim has a dated source.","The brief sends nothing and changes no commercial record."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Use when preparing an evidence-backed brief for an upcoming customer renewal from contract, ARR, dated outcomes, usage, and risk evidence. Not for health scoring; use health-score.","title":"Renewal Prep","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Prepares a sourced renewal brief from contract, ARR, dated outcomes and explicit risks without making commercial commitments."},{"availability":"dormant","capability_class":"active-skill","capability_id":"metrics-review","changed_in":[],"compatibility":{"foundation_capabilities":["honest-health-observability","context-orientation","durable-memory-provenance"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_role_skill_contracts.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/operations/metrics-review/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track","evolve-the-system-itself"],"portable_brief":{"goal":"Reviews comparable operational metrics and validates anomalies before interpreting performance.","method_outline":["Define each metric, unit, window, source, baseline and target.","Check freshness and comparability.","Validate anomalies before offering a non-causal interpretation."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Every number has a definition and source date.","Missing or incomparable data stays unknown."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Use when a business or operational metric needs definition and source provenance checked, freshness and comparability validated, or an anomaly reviewed against a baseline and target.","title":"Metrics Review","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Reviews comparable operational metrics and validates anomalies before interpreting performance."},{"availability":"dormant","capability_class":"active-skill","capability_id":"process-audit","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","honest-health-observability","compounding-correctability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_role_skill_contracts.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/operations/process-audit/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track","reflect-and-improve-continuously"],"portable_brief":{"goal":"Maps a bounded process from observed samples, then tests bottleneck improvements with measurable outcomes.","method_outline":["Define process start, end, owner and outcome.","Sample observed queues, handoffs, rework and failures.","Propose a controlled experiment with a success measure."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Claims disclose the observed sample and limits.","An experiment is not called successful before measurement."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Use when an operational process needs its start, end, owner, outcome, representative sample, measured queues or handoffs, bottleneck evidence, or controlled improvement experiment made explicit.","title":"Process Audit","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Maps a bounded process from observed samples, then tests bottleneck improvements with measurable outcomes."},{"availability":"dormant","capability_class":"active-skill","capability_id":"design-review","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","durable-memory-provenance","scoped-agency-human-control"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_role_skill_contracts.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/design/design-review/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track"],"portable_brief":{"goal":"Prepares or documents a design review with versioned artifacts, traceable requirements and explicit decision authority.","method_outline":["Choose preparation or documentation mode.","Identify artifact versions, requirements and evidence.","Keep recommendations distinct from authorised decisions."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Every finding points to a versioned artifact and requirement.","A decision record names who accepted it."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Use when a design artifact or revision needs a prepared review packet or an evidence-backed record of a review outcome, requirements, and decisions.","title":"Design Review","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Prepares or documents a design review with versioned artifacts, traceable requirements and explicit decision authority."},{"availability":"dormant","capability_class":"active-skill","capability_id":"design-system-audit","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","honest-health-observability","compounding-correctability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_role_skill_contracts.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/design/design-system-audit/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track","evolve-the-system-itself"],"portable_brief":{"goal":"Measures design-system use against canonical components and tokens with a declared sample and denominator.","method_outline":["Select canonical components, tokens and a representative sample.","Calculate adoption over a disclosed denominator.","Separate accidental deviations from intentional exceptions."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Coverage and adoption can be recomputed from shown inputs.","Exceptions retain owner, reason and evidence."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Use when assessing use of named design-system components or tokens across a defined sample of product artifacts, including adoption and deviation questions.","title":"Design System Audit","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Measures design-system use against canonical components and tokens with a declared sample and denominator."},{"availability":"dormant","capability_class":"active-skill","capability_id":"career-setup","changed_in":[],"compatibility":{"foundation_capabilities":["privacy-minimal-disclosure","ownership-portability","scoped-agency-human-control","safe-change-recovery"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","career-room-enabled","room-capability-manager"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":true,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_mature_skill_amendments.py","summary":"The shipped instructions close the reviewed evidence, authority and recovery gaps."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_capabilities.py","summary":"Room activation verifies release-owned skill identity before changing profile or files."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/capabilities/career/skills/career-setup/SKILL.md","summary":"The release ships this room skill as the source used when the room is enabled."}],"impact_tier":"high","jobs":["track-career-growth"],"portable_brief":{"goal":"Sets up the career room and its consented evidence space while verifying the room, hooks and connected tools honestly.","method_outline":["Preview the canonical career evidence paths and sensitive-data boundary.","Enable only after consent.","Verify room, hook and MCP state and surface capture failures."],"rollback_advice":"Disable the room through the capability manager; preserve the person's room content and remove only release-owned surfaced skill copies.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["All evidence paths use the portable room contract.","Failed setup leaves a clear recovery state."]},"prerequisites":["Enable the career room; its skills are installed as one room bundle, not adopted independently.","Keep the room's approved source and privacy boundaries available to the host."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Initialize career development system (job description, ladder, reviews, goals)","title":"Career Setup","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Sets up the career room and its consented evidence space while verifying the room, hooks and connected tools honestly."},{"availability":"dormant","capability_class":"active-skill","capability_id":"career-coach","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","durable-memory-provenance","compounding-correctability","privacy-minimal-disclosure"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","career-room-enabled","room-capability-manager"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_mature_skill_amendments.py","summary":"The shipped instructions close the reviewed evidence, authority and recovery gaps."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_capabilities.py","summary":"Room activation verifies release-owned skill identity before changing profile or files."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/capabilities/career/skills/career-coach/SKILL.md","summary":"The release ships this room skill as the source used when the room is enabled."}],"impact_tier":"high","jobs":["track-career-growth","reflect-and-improve-continuously"],"portable_brief":{"goal":"Turns sourced career evidence into reflective coaching while keeping uncertainty, HR limits and save consent explicit.","method_outline":["Choose the coaching mode and inspect consented evidence.","Separate missing evidence from missing competency and label confidence.","Preview and confirm any saved reflection."],"rollback_advice":"Disable the room through the capability manager; preserve the person's room content and remove only release-owned surfaced skill copies.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Claims cite evidence and uncertainty.","The coach does not impersonate HR or a manager."]},"prerequisites":["Enable the career room; its skills are installed as one room bundle, not adopted independently.","Keep the room's approved source and privacy boundaries available to the host."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Personal career coach with 4 modes: weekly reports, monthly reflections, self-reviews, promotion assessments","title":"Career Coach","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Turns sourced career evidence into reflective coaching while keeping uncertainty, HR limits and save consent explicit."},{"availability":"dormant","capability_class":"active-skill","capability_id":"resume-builder","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","durable-memory-provenance","privacy-minimal-disclosure","ownership-portability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","career-room-enabled","room-capability-manager"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_mature_skill_amendments.py","summary":"The shipped instructions close the reviewed evidence, authority and recovery gaps."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_capabilities.py","summary":"Room activation verifies release-owned skill identity before changing profile or files."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/capabilities/career/skills/resume-builder/SKILL.md","summary":"The release ships this room skill as the source used when the room is enabled."}],"impact_tier":"high","jobs":["track-career-growth"],"portable_brief":{"goal":"Builds a truthful, portable resume from sourced evidence and verifies the rendered result before claiming pagination.","method_outline":["Gather cited outcomes without inventing metrics.","Label any user-supplied estimate.","Render-check pages and separately confirm every cross-file write."],"rollback_advice":"Disable the room through the capability manager; preserve the person's room content and remove only release-owned surfaced skill copies.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Every claim maps to evidence or an explicit supplied estimate.","Pagination is claimed only after rendering."]},"prerequisites":["Enable the career room; its skills are installed as one room bundle, not adopted independently.","Keep the room's approved source and privacy boundaries available to the host."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Build resume and LinkedIn profile through guided interview","title":"Resume Builder","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Builds a truthful, portable resume from sourced evidence and verifies the rendered result before claiming pagination."},{"availability":"dormant","capability_class":"active-skill","capability_id":"quarter-plan","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","durable-memory-provenance","scoped-agency-human-control","safe-change-recovery"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","quarter-goals-room-enabled","room-capability-manager"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_mature_skill_amendments.py","summary":"The shipped instructions close the reviewed evidence, authority and recovery gaps."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_capabilities.py","summary":"Room activation verifies release-owned skill identity before changing profile or files."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/capabilities/quarter_goals/skills/quarter-plan/SKILL.md","summary":"The release ships this room skill as the source used when the room is enabled."}],"impact_tier":"high","jobs":["start-each-day-focused"],"portable_brief":{"goal":"Builds a quarter plan across the correct fiscal boundary with previewed, conflict-safe and verified writes.","method_outline":["Confirm fiscal-quarter dates and current goals.","Preview every archive, move or goal mutation separately.","Preserve conflicting bytes and read back approved results."],"rollback_advice":"Disable the room through the capability manager; preserve the person's room content and remove only release-owned surfaced skill copies.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["No mutation occurs without its exact confirmation.","Conflicts preserve the existing file and report recovery."]},"prerequisites":["Enable the quarter goals room; its skills are installed as one room bundle, not adopted independently.","Keep the room's approved source and privacy boundaries available to the host."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Set 3-5 strategic goals for the quarter","title":"Quarter Plan","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Builds a quarter plan across the correct fiscal boundary with previewed, conflict-safe and verified writes."},{"availability":"dormant","capability_class":"active-skill","capability_id":"quarter-review","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","durable-memory-provenance","compounding-correctability","honest-health-observability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","quarter-goals-room-enabled","room-capability-manager"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_mature_skill_amendments.py","summary":"The shipped instructions close the reviewed evidence, authority and recovery gaps."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_capabilities.py","summary":"Room activation verifies release-owned skill identity before changing profile or files."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/capabilities/quarter_goals/skills/quarter-review/SKILL.md","summary":"The release ships this room skill as the source used when the room is enabled."}],"impact_tier":"high","jobs":["start-each-day-focused","reflect-and-improve-continuously"],"portable_brief":{"goal":"Reviews a quarter from sourced statistics and reflections without inferring completion or chaining unapproved mutations.","method_outline":["Source every statistic and expose unknowns.","Keep reflection, archive and next-plan changes under separate consent.","Make archive recovery idempotent and never infer completion percentages."],"rollback_advice":"Disable the room through the capability manager; preserve the person's room content and remove only release-owned surfaced skill copies.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Every statistic has a source and denominator.","A repeated archive action cannot duplicate or overwrite work."]},"prerequisites":["Enable the quarter goals room; its skills are installed as one room bundle, not adopted independently.","Keep the room's approved source and privacy boundaries available to the host."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Review quarter completion and capture learnings","title":"Quarter Review","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Reviews a quarter from sourced statistics and reflections without inferring completion or chaining unapproved mutations."},{"availability":"active","capability_class":"mcp-server","capability_id":"dex-analytics","evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: core/mcp/analytics_server.py","summary":"The shipped source tree contains the reviewed Dex Analytics implementation."}],"example_tools":["check_analytics_status","identify_user","test_connection","track_event"],"impact_tier":"medium","jobs":["reflect-and-improve-continuously"],"prerequisites":["The Dex analytics MCP server is registered locally."],"release_provenance":"core-release","server_name":"dex-analytics","source_paths":["core/mcp/analytics_server.py"],"summary":"dex-analytics exposes 4 local MCP tools; examples include check_analytics_status, identify_user, test_connection, track_event.","title":"Dex Analytics","tool_count":4,"trade_offs":["Usage signals are only as complete as the events the local system records."],"value":"Shows which Dex workflows are being used so the system can improve from real behavior."},{"availability":"active","capability_class":"mcp-server","capability_id":"dex-calendar-mcp","evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: core/mcp/calendar_server.py","summary":"The shipped source tree contains the reviewed Dex Calendar MCP implementation."}],"example_tools":["calendar_create_event","calendar_delete_event","calendar_get_events","calendar_get_events_with_attendees","calendar_get_next_event"],"impact_tier":"high","jobs":["start-each-day-focused","track-people-and-relationships"],"prerequisites":["Local calendar access is authorized and the server is registered."],"release_provenance":"core-release","server_name":"dex-calendar-mcp","source_paths":["core/mcp/calendar_server.py"],"summary":"dex-calendar-mcp exposes 15 local MCP tools; examples include calendar_create_event, calendar_delete_event, calendar_get_events, calendar_get_events_with_attendees, calendar_get_next_event.","title":"Dex Calendar MCP","tool_count":15,"trade_offs":["Calendar results depend on operating-system permissions and the freshness of local calendars."],"value":"Makes calendar pressure and meeting context available to planning and preparation workflows."},{"availability":"active","capability_class":"mcp-server","capability_id":"dex-career-mcp","evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: core/mcp/career_server.py","summary":"The shipped source tree contains the reviewed Dex Career MCP implementation."}],"example_tools":["analyze_coverage","generate_evidence_from_work","parse_ladder","promotion_readiness_score","scan_evidence"],"impact_tier":"medium","jobs":["track-career-growth"],"prerequisites":["The career capability is enabled and its local data paths exist."],"release_provenance":"core-release","server_name":"dex-career-mcp","source_paths":["core/mcp/career_server.py"],"summary":"dex-career-mcp exposes 8 local MCP tools; examples include analyze_coverage, generate_evidence_from_work, parse_ladder, promotion_readiness_score, scan_evidence.","title":"Dex Career MCP","tool_count":8,"trade_offs":["Career outputs remain bounded by the evidence the person has chosen to capture."],"value":"Keeps career evidence and development work consented, sourced and reviewable."},{"availability":"active","capability_class":"mcp-server","capability_id":"dex-customization-migration-mcp","evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: core/mcp/customization_migration_server.py","summary":"The shipped source tree contains the reviewed Dex Customization Migration MCP implementation."}],"example_tools":["assess_customizations","preview_customization_capsule","read_activation_status","read_customization_capsule_blob","read_customization_capsule_section"],"impact_tier":"medium","jobs":["evolve-the-system-itself"],"prerequisites":["A compatible migration plan and lifecycle service are available."],"release_provenance":"core-release","server_name":"dex-customization-migration-mcp","source_paths":["core/mcp/customization_migration_server.py"],"summary":"dex-customization-migration-mcp exposes 7 local MCP tools; examples include assess_customizations, preview_customization_capsule, read_activation_status, read_customization_capsule_blob, read_customization_capsule_section.","title":"Dex Customization Migration MCP","tool_count":7,"trade_offs":["Migration remains confirm-gated and may refuse changes that cannot be safely reversed."],"value":"Moves approved customizations through Dex's receipt-backed lifecycle instead of editing the vault ad hoc."},{"availability":"active","capability_class":"mcp-server","capability_id":"dex-granola-mcp","evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: core/mcp/granola_server.py","summary":"The shipped source tree contains the reviewed Dex Granola MCP implementation."}],"example_tools":["granola_check_available","granola_get_extent","granola_get_meeting_details","granola_get_recent_meetings","granola_get_today_meetings"],"impact_tier":"high","jobs":["capture-without-friction","track-people-and-relationships"],"prerequisites":["Granola access is connected and authorized by the person."],"release_provenance":"core-release","server_name":"dex-granola-mcp","source_paths":["core/mcp/granola_server.py"],"summary":"dex-granola-mcp exposes 6 local MCP tools; examples include granola_check_available, granola_get_extent, granola_get_meeting_details, granola_get_recent_meetings, granola_get_today_meetings.","title":"Dex Granola MCP","tool_count":6,"trade_offs":["Meeting coverage depends on the upstream Granola account and transcript availability."],"value":"Brings meeting records into Dex for processing without relying on manual transcript copying."},{"availability":"active","capability_class":"mcp-server","capability_id":"dex-improvements-mcp","evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: core/mcp/dex_improvements_server.py","summary":"The shipped source tree contains the reviewed Dex Improvements MCP implementation."}],"example_tools":["capture_idea","enrich_idea","get_backlog_stats","get_idea_details","list_ideas"],"impact_tier":"high","jobs":["reflect-and-improve-continuously","evolve-the-system-itself"],"prerequisites":["The local improvements store is available."],"release_provenance":"core-release","server_name":"dex-improvements-mcp","source_paths":["core/mcp/dex_improvements_server.py"],"summary":"dex-improvements-mcp exposes 9 local MCP tools; examples include capture_idea, enrich_idea, get_backlog_stats, get_idea_details, list_ideas.","title":"Dex Improvements MCP","tool_count":9,"trade_offs":["Ranking is advisory and still needs a person to choose what should change."],"value":"Turns observed friction into a ranked, inspectable backlog of system improvements."},{"availability":"active","capability_class":"mcp-server","capability_id":"dex-onboarding-mcp","evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: core/mcp/onboarding_server.py","summary":"The shipped source tree contains the reviewed Dex Onboarding MCP implementation."}],"example_tools":["apply_confirmed_onboarding_context","check_onboarding_complete","cleanup_qa_session","finalize_onboarding","generate_nudge_calendar"],"impact_tier":"high","jobs":["evolve-the-system-itself"],"prerequisites":["Dex is running from a writable local vault during onboarding."],"release_provenance":"core-release","server_name":"dex-onboarding-mcp","source_paths":["core/mcp/onboarding_server.py"],"summary":"dex-onboarding-mcp exposes 19 local MCP tools; examples include apply_confirmed_onboarding_context, check_onboarding_complete, cleanup_qa_session, finalize_onboarding, generate_nudge_calendar.","title":"Dex Onboarding MCP","tool_count":19,"trade_offs":["Setup quality depends on the person supplying accurate preferences and granting chosen permissions."],"value":"Coordinates first-run setup through explicit, locally verified onboarding steps."},{"availability":"active","capability_class":"mcp-server","capability_id":"dex-pipedrive-mcp","evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: core/integrations/pipedrive/pipedrive_server.py","summary":"The shipped source tree contains the reviewed Dex Pipedrive MCP implementation."}],"example_tools":["pipedrive_add_deal_activity","pipedrive_add_deal_note","pipedrive_create_deal","pipedrive_create_org","pipedrive_find_deal"],"impact_tier":"high","jobs":["keep-projects-on-track","track-people-and-relationships"],"prerequisites":["Pipedrive is explicitly connected and its local server is registered."],"release_provenance":"core-release","server_name":"dex-pipedrive-mcp","source_paths":["core/integrations/pipedrive/pipedrive_server.py"],"summary":"dex-pipedrive-mcp exposes 15 local MCP tools; examples include pipedrive_add_deal_activity, pipedrive_add_deal_note, pipedrive_create_deal, pipedrive_create_org, pipedrive_find_deal.","title":"Dex Pipedrive MCP","tool_count":15,"trade_offs":["External records depend on Pipedrive availability, and writes remain opt-in and confirmation-gated."],"value":"Connects customer relationship data to Dex so deal context can support planning and follow-through."},{"availability":"active","capability_class":"mcp-server","capability_id":"dex-resume-mcp","evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: core/mcp/resume_server.py","summary":"The shipped source tree contains the reviewed Dex Resume MCP implementation."}],"example_tools":["add_role","compile_resume","export_resume","extract_achievements","generate_linkedin"],"impact_tier":"medium","jobs":["track-career-growth"],"prerequisites":["Consented career evidence exists in the local career space."],"release_provenance":"core-release","server_name":"dex-resume-mcp","source_paths":["core/mcp/resume_server.py"],"summary":"dex-resume-mcp exposes 12 local MCP tools; examples include add_role, compile_resume, export_resume, extract_achievements, generate_linkedin.","title":"Dex Resume MCP","tool_count":12,"trade_offs":["The server cannot fill evidence gaps without the person's review and additional source material."],"value":"Builds truthful application material from consented career evidence rather than invented claims."},{"availability":"active","capability_class":"mcp-server","capability_id":"dex-session-memory","evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: core/mcp/session_memory_server.py","summary":"The shipped source tree contains the reviewed Dex Session Memory implementation."}],"example_tools":["get_entity_timeline","get_observation_timeline","get_recent_decisions","get_recent_tool_usage","get_session_context"],"impact_tier":"high","jobs":["reflect-and-improve-continuously","keep-projects-on-track"],"prerequisites":["The local session-memory store is available."],"release_provenance":"core-release","server_name":"dex-session-memory","source_paths":["core/mcp/session_memory_server.py"],"summary":"dex-session-memory exposes 8 local MCP tools; examples include get_entity_timeline, get_observation_timeline, get_recent_decisions, get_recent_tool_usage, get_session_context.","title":"Dex Session Memory","tool_count":8,"trade_offs":["Remembered context can become stale and must retain clear provenance."],"value":"Carries sourced context across sessions so repeated work does not restart from an empty chat."},{"availability":"active","capability_class":"mcp-server","capability_id":"dex-work-mcp","evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: core/mcp/work_server.py","summary":"The shipped source tree contains the reviewed Dex Work MCP implementation."}],"example_tools":["analyze_calendar_capacity","boot_today","build_company_index","build_people_index","capture_skill_rating"],"impact_tier":"core","jobs":["manage-tasks-reliably","keep-projects-on-track","track-people-and-relationships"],"prerequisites":["A Dex vault and its portable path contract are available."],"release_provenance":"core-release","server_name":"dex-work-mcp","source_paths":["core/mcp/work_server.py"],"summary":"dex-work-mcp exposes 53 local MCP tools; examples include analyze_calendar_capacity, boot_today, build_company_index, build_people_index, capture_skill_rating.","title":"Dex Work MCP","tool_count":53,"trade_offs":["Mutations remain bounded by confirmation, validation and the local vault's current structure."],"value":"Provides the validated task, project, person and company operations that core Dex workflows rely on."},{"automation_label":"com.dex.changelog-checker","availability":"active","cadence":"every 6 hours; also at load","capability_class":"scheduled-automation","capability_id":"dex-changelog-checker","evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: .scripts/com.dex.changelog-checker.plist","summary":"The shipped source tree contains the reviewed Dex Changelog Checker implementation."}],"impact_tier":"medium","installer_path":".scripts/install-learning-automation.sh","jobs":["evolve-the-system-itself"],"prerequisites":["The learning automation launch agent is installed on macOS."],"program_target":"{{VAULT_PATH}}/.scripts/check-anthropic-changelog.cjs","release_provenance":"core-release","run_at_load":true,"source_paths":[".scripts/com.dex.changelog-checker.plist",".scripts/install-learning-automation.sh"],"summary":"Runs {{VAULT_PATH}}/.scripts/check-anthropic-changelog.cjs every 6 hours; also at load.","title":"Dex Changelog Checker","trade_offs":["The check is periodic, so upstream changes are not surfaced instantly."],"value":"Checks for relevant upstream capability changes several times a day without manual polling."},{"automation_label":"com.dex.learning-review","availability":"active","cadence":"daily at 17:00","capability_class":"scheduled-automation","capability_id":"dex-learning-review","evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: .scripts/com.dex.learning-review.plist","summary":"The shipped source tree contains the reviewed Dex Learning Review implementation."}],"impact_tier":"high","installer_path":".scripts/install-learning-automation.sh","jobs":["reflect-and-improve-continuously"],"prerequisites":["The learning automation launch agent is installed on macOS."],"program_target":"{{VAULT_PATH}}/.scripts/learning-review-prompt.sh","release_provenance":"core-release","run_at_load":false,"source_paths":[".scripts/com.dex.learning-review.plist",".scripts/install-learning-automation.sh"],"summary":"Runs {{VAULT_PATH}}/.scripts/learning-review-prompt.sh daily at 17:00.","title":"Dex Learning Review","trade_offs":["A scheduled prompt still depends on the person choosing to review and adopt useful changes."],"value":"Prompts a daily review so observed friction can become durable learning."},{"automation_label":"com.dex.meeting-intel","availability":"active","cadence":"every 30 minutes; also at load","capability_class":"scheduled-automation","capability_id":"dex-meeting-intel","evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: .scripts/meeting-intel/com.dex.meeting-intel.plist.template","summary":"The shipped source tree contains the reviewed Dex Meeting Intel implementation."}],"impact_tier":"high","installer_path":".scripts/meeting-intel/install-automation.sh","jobs":["capture-without-friction","track-people-and-relationships"],"prerequisites":["Granola is connected and the meeting-intelligence launch agent is installed on macOS."],"program_target":".scripts/meeting-intel/sync-from-granola.cjs","release_provenance":"core-release","run_at_load":true,"source_paths":[".scripts/meeting-intel/com.dex.meeting-intel.plist.template",".scripts/meeting-intel/install-automation.sh"],"summary":"Runs .scripts/meeting-intel/sync-from-granola.cjs every 30 minutes; also at load.","title":"Dex Meeting Intel","trade_offs":["Sync freshness depends on both the upstream service and the local machine being able to run the job."],"value":"Keeps Granola meeting material synchronized frequently enough for timely preparation and closeout."},{"automation_label":"com.dex.smoke-nightly","availability":"active","cadence":"daily at 03:15","capability_class":"scheduled-automation","capability_id":"dex-smoke-nightly","evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: .scripts/com.dex.smoke-nightly.plist.template","summary":"The shipped source tree contains the reviewed Dex Smoke Nightly implementation."}],"impact_tier":"high","installer_path":".scripts/install-smoke-automation.sh","jobs":["evolve-the-system-itself"],"prerequisites":["The nightly smoke launch agent is installed on macOS."],"program_target":"__VAULT_PATH__/.scripts/nightly-smoke.sh","release_provenance":"core-release","run_at_load":false,"source_paths":[".scripts/com.dex.smoke-nightly.plist.template",".scripts/install-smoke-automation.sh"],"summary":"Runs __VAULT_PATH__/.scripts/nightly-smoke.sh daily at 03:15.","title":"Dex Smoke Nightly","trade_offs":["A nightly check can detect known failures but cannot prove every workflow is healthy."],"value":"Runs a nightly health smoke check so breakage can surface before a person depends on the system."},{"automation_label":"com.dex.vault-backup","availability":"active","cadence":"daily at a user-selected time","capability_class":"scheduled-automation","capability_id":"dex-vault-backup","evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: core/backup/install_backup_job.py","summary":"The shipped source tree contains the reviewed Dex Vault Backup implementation."}],"impact_tier":"core","installer_path":"core/backup/install_backup_job.py","jobs":["evolve-the-system-itself"],"prerequisites":["Backup setup is complete and its destination has been verified."],"program_target":"core/backup/backup_vault.py","release_provenance":"core-release","run_at_load":false,"source_paths":["core/backup/install_backup_job.py","core/backup/backup_vault.py"],"summary":"Runs core/backup/backup_vault.py daily at a user-selected time.","title":"Dex Vault Backup","trade_offs":["A schedule is not proof of recovery; the person must still test that a backup can be restored."],"value":"Creates a scheduled recovery copy of the person's vault at a time they choose."},{"availability":"parked","capability_class":"system-engine","capability_id":"connection-manager-engine","component_count":20,"evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: core/integrations/connection-manager/auth-context.cjs","summary":"The shipped source tree contains the reviewed Connection Manager Engine implementation."}],"example_components":["core/integrations/connection-manager/auth-context.cjs","core/integrations/connection-manager/broker-client.cjs","core/integrations/connection-manager/broker.cjs","core/integrations/connection-manager/catalog.cjs","core/integrations/connection-manager/connect.cjs"],"impact_tier":"high","jobs":["evolve-the-system-itself"],"prerequisites":["A reviewed person-facing doorway must be released before this engine can be used."],"release_provenance":"core-release","source_paths":["core/integrations/connection-manager/auth-context.cjs","core/integrations/connection-manager/broker-client.cjs","core/integrations/connection-manager/broker.cjs","core/integrations/connection-manager/catalog.cjs","core/integrations/connection-manager/connect.cjs","core/integrations/connection-manager/contract.cjs","core/integrations/connection-manager/dex-call.cjs","core/integrations/connection-manager/fs-safe.cjs","core/integrations/connection-manager/get-token.cjs","core/integrations/connection-manager/health.cjs","core/integrations/connection-manager/index.cjs","core/integrations/connection-manager/lib/connector-ledger.js","core/integrations/connection-manager/lib/connector-model.js","core/integrations/connection-manager/lib/connector-verify.js","core/integrations/connection-manager/lib/oauth-refresh.js","core/integrations/connection-manager/lib/rate-limit.js","core/integrations/connection-manager/oauth-flow.cjs","core/integrations/connection-manager/pinned-providers.cjs","core/integrations/connection-manager/presence.cjs","core/integrations/connection-manager/token-store.cjs"],"summary":"Groups 20 shipped source components. Parked: it is not wired into the live product.","title":"Connection Manager Engine","trade_offs":["The engine is shipped groundwork and must not be recommended as currently usable."],"value":"Provides local connection custody and provider metadata, but its person-facing doorway remains unavailable."},{"availability":"active","capability_class":"system-engine","capability_id":"entity-temperature-engine","component_count":9,"evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: core/entity_engine/__init__.py","summary":"The shipped source tree contains the reviewed Entity Temperature Engine implementation."}],"example_components":["core/entity_engine/__init__.py","core/entity_engine/cli.py","core/entity_engine/contract.py","core/entity_engine/cooling.py","core/entity_engine/index.py"],"impact_tier":"high","jobs":["track-people-and-relationships"],"prerequisites":["Entity indexing and relationship data are available locally."],"release_provenance":"core-release","source_paths":["core/entity_engine/__init__.py","core/entity_engine/cli.py","core/entity_engine/contract.py","core/entity_engine/cooling.py","core/entity_engine/index.py","core/entity_engine/relationships.py","core/entity_engine/reroute.py","core/entity_engine/temperature.py","core/entity_engine/write.py"],"summary":"Groups 9 shipped source components.","title":"Entity Temperature Engine","trade_offs":["Temperature is a prioritization signal, not an objective measure of relationship importance."],"value":"Keeps people and entity context warm when it matters and cools stale signals over time."},{"availability":"active","capability_class":"system-engine","capability_id":"proactive-promise-engine","component_count":2,"evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: core/health/promises.py","summary":"The shipped source tree contains the reviewed Proactive Promise Engine implementation."}],"example_components":["core/health/promises.py","core/tests/test_health_promises.py"],"impact_tier":"core","jobs":["manage-tasks-reliably","evolve-the-system-itself"],"prerequisites":["Dex Doctor can inspect the relevant local runtime evidence."],"release_provenance":"core-release","source_paths":["core/health/promises.py","core/tests/test_health_promises.py"],"summary":"Groups 2 shipped source components.","title":"Proactive Promise Engine","trade_offs":["A promise only detects the failure modes its evidence and thresholds explicitly cover."],"value":"Defines the concrete promises Dex health checks use to catch silent reliability failures."},{"availability":"parked","capability_class":"system-engine","capability_id":"ritual-intelligence-engine","component_count":22,"evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: core/ritual_intelligence/__init__.py","summary":"The shipped source tree contains the reviewed Ritual Intelligence Engine implementation."}],"example_components":["core/ritual_intelligence/__init__.py","core/ritual_intelligence/__main__.py","core/ritual_intelligence/actions.py","core/ritual_intelligence/brief_generate.py","core/ritual_intelligence/calendar_ingest.py"],"impact_tier":"high","jobs":["start-each-day-focused","capture-without-friction"],"prerequisites":["The parked engine would need an approved live integration before it could serve users."],"release_provenance":"core-release","source_paths":["core/ritual_intelligence/__init__.py","core/ritual_intelligence/__main__.py","core/ritual_intelligence/actions.py","core/ritual_intelligence/brief_generate.py","core/ritual_intelligence/calendar_ingest.py","core/ritual_intelligence/cli.py","core/ritual_intelligence/contact_promote.py","core/ritual_intelligence/contact_suggest.py","core/ritual_intelligence/corrections.py","core/ritual_intelligence/db.py","core/ritual_intelligence/manual_note_match.py","core/ritual_intelligence/matching.py","core/ritual_intelligence/meeting_intel_projection.py","core/ritual_intelligence/meeting_reconcile.py","core/ritual_intelligence/models.py","core/ritual_intelligence/prep_state.py","core/ritual_intelligence/projection_write.py","core/ritual_intelligence/ritual_match.py","core/ritual_intelligence/service.py","core/ritual_intelligence/transcript_ingest.py","core/ritual_intelligence/transcript_reconcile.py","core/ritual_intelligence/transcript_store.py"],"summary":"Groups 22 shipped source components. Parked: it is not wired into the live product.","title":"Ritual Intelligence Engine","trade_offs":["This capability is parked and must not be presented as currently available."],"value":"Contains a richer meeting and ritual intelligence engine that is code-complete but not wired into the live product."},{"availability":"active","capability_class":"system-engine","capability_id":"session-hook-orchestration","component_count":31,"evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: .claude/hooks/README.md","summary":"The shipped source tree contains the reviewed Session Hook Orchestration implementation."}],"example_components":[".claude/hooks/README.md",".claude/hooks/adapters/jira.cjs",".claude/hooks/adapters/run.cjs",".claude/hooks/adapters/service-aliases.json",".claude/hooks/adapters/things.cjs"],"impact_tier":"core","jobs":["evolve-the-system-itself","start-each-day-focused"],"prerequisites":["Claude Code hooks are installed and enabled for the Dex vault."],"release_provenance":"core-release","source_paths":[".claude/hooks/README.md",".claude/hooks/adapters/jira.cjs",".claude/hooks/adapters/run.cjs",".claude/hooks/adapters/service-aliases.json",".claude/hooks/adapters/things.cjs",".claude/hooks/adapters/todoist.cjs",".claude/hooks/adapters/trello.cjs",".claude/hooks/career-evidence-capture.cjs",".claude/hooks/claude-composition-refresh.sh",".claude/hooks/company-context-injector.cjs",".claude/hooks/connection-health-checker.cjs",".claude/hooks/correction-capture.py",".claude/hooks/correction-capture.sh",".claude/hooks/daily-plan-quick-ref.cjs",".claude/hooks/dex-core-orientation.sh",".claude/hooks/dex-safety-guard.sh",".claude/hooks/ensure-mcp-user-scope.cjs",".claude/hooks/health-pulse.sh",".claude/hooks/integration-concierge.cjs",".claude/hooks/maintenance.cjs",".claude/hooks/meeting-cache-builder.cjs",".claude/hooks/meeting-queue-check.cjs",".claude/hooks/paths.cjs",".claude/hooks/person-context-injector.cjs",".claude/hooks/post-meeting-person-update.cjs",".claude/hooks/session-clock.sh",".claude/hooks/session-end.sh",".claude/hooks/session-start.sh",".claude/hooks/skill-freshness.py",".claude/hooks/soft-promise-detector.py",".claude/hooks/vault-autocommit.cjs"],"summary":"Groups 31 shipped source components.","title":"Session Hook Orchestration","trade_offs":["Hook behavior depends on the host honoring the configured lifecycle events and local permissions."],"value":"Coordinates session startup, safety, context injection, maintenance and closeout around the user's work."}],"capability_families":[{"aliases":[],"assessment":{"mode":"automatic","profile":"catalogue"},"components":[{"capability_id":"dex-granola-mcp","component_type":"capability"},{"capability_id":"dex-meeting-intel","component_type":"capability"},{"capability_id":"granola-setup","component_type":"capability"},{"capability_id":"meeting-closeout","component_type":"capability"},{"capability_id":"meeting-prep","component_type":"capability"},{"capability_id":"process-meetings","component_type":"capability"}],"family_id":"meeting-follow-through","jobs":["capture-without-friction","track-people-and-relationships"],"member_capability_ids":["dex-granola-mcp","dex-meeting-intel","granola-setup","meeting-closeout","meeting-prep","process-meetings"],"outcome":"Meetings become notes, people context and tracked follow-up.","title":"Meeting follow-through"},{"aliases":[],"assessment":{"mode":"automatic","profile":"catalogue"},"components":[{"capability_id":"entity-temperature-engine","component_type":"capability"},{"capability_id":"relationship-radar","component_type":"capability"}],"family_id":"living-people-company-context","jobs":["track-people-and-relationships"],"member_capability_ids":["entity-temperature-engine","relationship-radar"],"outcome":"People and company pages are created, refreshed and connected over time.","title":"Living people and company context"},{"aliases":[],"assessment":{"mode":"automatic","profile":"catalogue"},"components":[{"capability_id":"commitments","component_type":"capability"},{"capability_id":"delegate-check","component_type":"capability"},{"capability_id":"dex-work-mcp","component_type":"capability"},{"capability_id":"proactive-promise-engine","component_type":"capability"},{"capability_id":"triage","component_type":"capability"}],"family_id":"durable-task-continuity","jobs":["evolve-the-system-itself","keep-projects-on-track","manage-tasks-reliably","track-people-and-relationships"],"member_capability_ids":["commitments","delegate-check","dex-work-mcp","proactive-promise-engine","triage"],"outcome":"Tasks can be captured from several places and completion returns to linked surfaces.","title":"Durable task continuity"},{"aliases":[],"assessment":{"mode":"automatic","profile":"catalogue"},"components":[{"capability_id":"things-setup","component_type":"capability"},{"capability_id":"todoist-setup","component_type":"capability"},{"capability_id":"trello-setup","component_type":"capability"}],"family_id":"external-task-interoperability","jobs":["manage-tasks-reliably"],"member_capability_ids":["things-setup","todoist-setup","trello-setup"],"outcome":"Todoist, Things and Trello can exchange tasks on request without pretending background polling exists.","title":"External task interoperability"},{"aliases":[],"assessment":{"mode":"automatic","profile":"catalogue"},"components":[{"capability_id":"apple-mail-setup","component_type":"capability"},{"capability_id":"atlassian-setup","component_type":"capability"},{"capability_id":"calendar-setup","component_type":"capability"},{"capability_id":"dex-calendar-mcp","component_type":"capability"},{"capability_id":"google-workspace-setup","component_type":"capability"},{"capability_id":"ms-teams-setup","component_type":"capability"},{"capability_id":"zoom-setup","component_type":"capability"}],"family_id":"connected-work-context","jobs":["capture-without-friction","keep-projects-on-track","start-each-day-focused","track-people-and-relationships"],"member_capability_ids":["apple-mail-setup","atlassian-setup","calendar-setup","dex-calendar-mcp","google-workspace-setup","ms-teams-setup","zoom-setup"],"outcome":"Google, Teams, Zoom, Atlassian and Apple Mail can inform plans, preparation and reviews when explicitly connected.","title":"Connected work context"},{"aliases":[],"assessment":{"mode":"automatic","profile":"catalogue"},"components":[{"capability_id":"dex-pipedrive-mcp","component_type":"capability"},{"capability_id":"pipedrive-setup","component_type":"capability"},{"capability_id":"pipeline-sync","component_type":"capability"}],"family_id":"pipedrive-pipeline-continuity","jobs":["keep-projects-on-track","track-people-and-relationships"],"member_capability_ids":["dex-pipedrive-mcp","pipedrive-setup","pipeline-sync"],"outcome":"Live pipeline context informs local work; external writes stay previewed and confirmed.","title":"Pipedrive pipeline continuity"},{"aliases":[],"assessment":{"mode":"automatic","profile":"catalogue"},"components":[{"capability_id":"daily-plan","component_type":"capability"},{"capability_id":"daily-review","component_type":"capability"},{"capability_id":"week-plan","component_type":"capability"},{"capability_id":"week-review","component_type":"capability"},{"capability_id":"weekly-reflection","component_type":"capability"}],"family_id":"daily-weekly-operating-rhythm","jobs":["reflect-and-improve-continuously","start-each-day-focused"],"member_capability_ids":["daily-plan","daily-review","week-plan","week-review","weekly-reflection"],"outcome":"Planning, review and reflection form one repeatable operating cadence.","title":"Daily and weekly operating rhythm"},{"aliases":[],"assessment":{"mode":"automatic","profile":"catalogue"},"components":[{"capability_id":"decision-log","component_type":"capability"},{"capability_id":"dex-session-memory","component_type":"capability"},{"capability_id":"enable-semantic-search","component_type":"capability"},{"capability_id":"journal","component_type":"capability"},{"capability_id":"save-insight","component_type":"capability"}],"family_id":"durable-work-memory","jobs":["keep-projects-on-track","reflect-and-improve-continuously"],"member_capability_ids":["decision-log","dex-session-memory","enable-semantic-search","journal","save-insight"],"outcome":"Sourced decisions, commitments, context and patterns remain available across sessions.","title":"Durable work memory"},{"aliases":[],"assessment":{"mode":"automatic","profile":"catalogue"},"components":[{"capability_id":"dex-doctor","component_type":"capability"},{"capability_id":"dex-smoke-nightly","component_type":"capability"}],"family_id":"proactive-health-and-recovery","jobs":["evolve-the-system-itself"],"member_capability_ids":["dex-doctor","dex-smoke-nightly"],"outcome":"Doctor and scheduled checks distinguish healthy, off, broken and unknown, then use bounded repair paths.","title":"Proactive health and recovery"},{"aliases":[],"assessment":{"mode":"automatic","profile":"catalogue"},"components":[{"capability_id":"backup-now","component_type":"capability"},{"capability_id":"backup-restore","component_type":"capability"},{"capability_id":"backup-setup","component_type":"capability"},{"capability_id":"dex-vault-backup","component_type":"capability"}],"family_id":"backup-and-restore-confidence","jobs":["evolve-the-system-itself"],"member_capability_ids":["backup-now","backup-restore","backup-setup","dex-vault-backup"],"outcome":"Backups are created and recovery is proved by a safe restore rehearsal.","title":"Backup and restore confidence"},{"aliases":[],"assessment":{"mode":"automatic","profile":"catalogue"},"components":[{"capability_id":"dex-rollback","component_type":"capability"},{"capability_id":"dex-update","component_type":"capability"},{"capability_id":"diff-adopt","component_type":"capability"},{"capability_id":"diff-adopt-profile","component_type":"capability"},{"capability_id":"diff-generate","component_type":"capability"},{"capability_id":"diff-list","component_type":"capability"},{"capability_id":"diff-profile","component_type":"capability"},{"capability_id":"diff-remove","component_type":"capability"}],"family_id":"safe-change-and-rewind","jobs":["evolve-the-system-itself","reflect-and-improve-continuously"],"member_capability_ids":["dex-rollback","dex-update","diff-adopt","diff-adopt-profile","diff-generate","diff-list","diff-profile","diff-remove"],"outcome":"Changes are previewed, verified, receipted and reversible.","title":"Safe change and rewind"},{"aliases":[],"assessment":{"mode":"automatic","profile":"catalogue"},"components":[{"capability_id":"create-mcp","component_type":"capability"},{"capability_id":"create-skill","component_type":"capability"},{"capability_id":"dex-add-mcp","component_type":"capability"},{"capability_id":"dex-whats-new","component_type":"capability"},{"capability_id":"integrate-mcp","component_type":"capability"},{"capability_id":"manage-capabilities","component_type":"capability"},{"capability_id":"skill-score","component_type":"capability"}],"family_id":"capability-discovery-and-adoption","jobs":["evolve-the-system-itself"],"member_capability_ids":["create-mcp","create-skill","dex-add-mcp","dex-whats-new","integrate-mcp","manage-capabilities","skill-score"],"outcome":"Useful methods can be discovered, reviewed, adopted and created through the safe lifecycle.","title":"Capability discovery and adoption"},{"aliases":[],"assessment":{"mode":"manual-only","reason":"A person must confirm that no private work leaves the machine before feedback is shared."},"components":[{"capability_id":"feedback","component_type":"capability"}],"family_id":"privacy-safe-feedback-loop","jobs":["evolve-the-system-itself"],"member_capability_ids":["feedback"],"outcome":"A problem can become a minimal report and a returned answer or fix without exporting private work.","title":"Privacy-safe feedback loop"},{"aliases":[],"assessment":{"mode":"automatic","profile":"catalogue"},"components":[{"capability_id":"career-coach","component_type":"capability"},{"capability_id":"career-setup","component_type":"capability"},{"capability_id":"dex-career-mcp","component_type":"capability"},{"capability_id":"dex-resume-mcp","component_type":"capability"},{"capability_id":"resume-builder","component_type":"capability"}],"family_id":"career-growth-evidence","jobs":["reflect-and-improve-continuously","track-career-growth"],"member_capability_ids":["career-coach","career-setup","dex-career-mcp","dex-resume-mcp","resume-builder"],"outcome":"Career and Resume tools turn consented evidence into development and application support without inventing claims.","title":"Career growth evidence"}],"jobs_taxonomy":[{"confirmed_gap_signals":["The Lens session finds a gap related to capture without friction."],"description":"Capture useful ideas, meeting context and incoming information before it disappears or becomes filing work.","job_id":"capture-without-friction","label":"Capture Without Friction"},{"confirmed_gap_signals":["The Lens session finds a gap related to start each day focused."],"description":"Turn current priorities, tasks and calendar pressure into a realistic focus for the day.","job_id":"start-each-day-focused","label":"Start Each Day Focused"},{"confirmed_gap_signals":["The Lens session finds a gap related to track people and relationships."],"description":"Keep the context, commitments and history needed to show up well for important people and organizations.","job_id":"track-people-and-relationships","label":"Track People & Relationships"},{"confirmed_gap_signals":["The Lens session finds a gap related to manage tasks reliably."],"description":"Keep tasks, promises and delegated work from scattering or quietly going unmet.","job_id":"manage-tasks-reliably","label":"Manage Tasks Reliably"},{"confirmed_gap_signals":["The Lens session finds a gap related to reflect and improve continuously."],"description":"Turn reflection, decisions and observed friction into durable learning and better ways of working.","job_id":"reflect-and-improve-continuously","label":"Reflect & Improve Continuously"},{"confirmed_gap_signals":["The Lens session finds a gap related to keep projects on track."],"description":"Maintain enough project truth, decisions and next actions to keep important work moving.","job_id":"keep-projects-on-track","label":"Keep Projects On Track"},{"confirmed_gap_signals":["The Lens session finds a gap related to track career growth."],"description":"Use consented evidence and reflection to support truthful career development and application material.","job_id":"track-career-growth","label":"Track Career Growth"},{"confirmed_gap_signals":["The Lens session finds a gap related to evolve the system itself."],"description":"Inspect, extend, update and recover the system without sacrificing human control or portability.","job_id":"evolve-the-system-itself","label":"Evolve the System Itself"}],"portable_brief":{"audience":"the person's own AI system","format":"markdown","safety_boundary":"Brief only: Lens presents adaptation guidance and never applies Dex changes automatically."}},"metadata":{"catalog_version":7,"contract_version":"dex-lens-catalogue-v2","core_release":"v0.0.0-preview","expires_at":"2026-09-24T12:00:00Z","key_id":"dex-core-lens-1","produced_at":"2026-08-25T12:00:00Z","producer":"Dex Core enriched preview (version-independent example)"},"signature":"UNSIGNED-PREVIEW-NOT-FOR-PUBLICATION"} +{"catalogue":{"capabilities":[{"availability":"active","capability_class":"active-skill","capability_id":"apple-mail-setup","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","privacy-minimal-disclosure"],"host_adapters":["claude-code","cowork"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/apple-mail-setup/SKILL.md","summary":"The shipped Apple Mail Setup skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["capture-without-friction"],"portable_brief":{"goal":"Set up and verify Apple Mail search on macOS, including the search index that silently returns nothing when it was never built.","method_outline":["Inspect the current local state and the person's request.","Run the Apple Mail Setup workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.96.3","summary":"Set up and verify Apple Mail search on macOS, including the search index that silently returns nothing when it was never built. Use when the user says 'connect Apple Mail', 'set up mail search', 'Dex can't find my emails', 'mail search returns nothing'. Not for Gmail or Google Workspace; use `google-workspace-setup`.","title":"Apple Mail Setup","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Set up and verify Apple Mail search on macOS, including the search index that silently returns nothing when it was never built."},{"availability":"active","capability_class":"active-skill","capability_id":"atlassian-setup","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","scoped-agency-human-control"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/atlassian-setup/SKILL.md","summary":"The shipped Atlassian Setup skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["keep-projects-on-track"],"portable_brief":{"goal":"Connect Jira and Confluence for project tracking and knowledge search.","method_outline":["Inspect the current local state and the person's request.","Run the Atlassian Setup workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available.","Access to the relevant local app or external service, authorized by the person."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Connect Jira and Confluence for project tracking and knowledge search. Use when the user says 'connect Jira', 'hook up Confluence', 'my tickets/board'. Not for a personal task app like Todoist/Things/Trello; use `todoist-setup`/`things-setup`/`trello-setup`.","title":"Atlassian Setup","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","External connections remain subject to the provider's availability and authorization."],"value":"Connect Jira and Confluence for project tracking and knowledge search."},{"availability":"active","capability_class":"active-skill","capability_id":"backup-now","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","honest-health-observability","ownership-portability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["local-file-access","off-machine-destination"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"verified","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_backup_vault.py","summary":"Real behaviour coverage of a single run: a successful run stores the set and records it, a failure records the actual error rather than a generic one, and a run that fails part-way leaves no half-written copy behind to be mistaken for a good one."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/backup-now/SKILL.md","summary":"The shipped skill defines the on-demand run, the rule against inferring success from the command finishing, and the quiet note when the last successful copy is old."}],"impact_tier":"high","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Take a verified copy on demand before a risky change, and report the recorded result rather than the command's exit.","method_outline":["Run the same copying path the schedule uses; do not build a second one.","Read the run record afterwards and report what it says.","On failure, repeat the recorded reason exactly rather than softening it.","Mention quietly when the previous successful copy is old."],"rollback_advice":"Delete the copy that was just made; on-demand runs add a copy and never change the live material.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["A failed run is never reported as a copy that exists.","The reported size and destination come from the record, not the intent.","A run with no configured destination fails clearly instead of guessing one."]},"prerequisites":["Backups already configured; without a destination the run fails with a plain message rather than improvising one.","A minute or so, and room at the destination."],"release_provenance":"core-release","since_release":"1.95.1","summary":"Run a vault backup right now and report the verified result. Use when the user says 'back up now', 'take a backup before I do this', or is about to make a big change. Not for scheduling or changing where backups go (`backup-setup`); not for getting files back (`backup-restore`).","title":"Backup Now","trade_offs":["An on-demand copy covers one moment and is not a substitute for a schedule.","Success is read from the run record rather than from the command exiting, so a partial copy is reported as a failure."],"value":"Takes a copy right now, before a bulk edit or a migration, and reports what actually landed rather than treating a finished command as a success."},{"availability":"active","capability_class":"active-skill","capability_id":"backup-restore","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","ownership-portability","honest-health-observability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["local-file-access","off-machine-destination"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"verified","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_backup_vault.py","summary":"Real behaviour coverage of all three modes: verification passes on an intact copy and detects a damaged one, the test mode unpacks only into a temporary folder, a real restore refuses the live location and any folder that is not empty, and a damaged newest copy points at the newest intact one instead."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"doc: docs/backup-restore.md","summary":"The shipped recovery guide covers what a full rebuild needs beyond the copies, including the credentials and schedules deliberately left out of them."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/backup-restore/SKILL.md","summary":"The shipped skill defines the three modes, the routine test restore, and the rule to report exactly what the tool printed rather than a reassuring summary."}],"impact_tier":"high","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Prove a backup restores, and perform a real restore without ever writing over the live material.","method_outline":["Check the copy's fingerprints and history before trusting it.","Offer a routine test that unpacks into a throwaway folder and then deletes it.","For a real restore, require a new or empty destination and refuse the live one.","State plainly what is not in the copy and must be re-established by hand."],"rollback_advice":"Delete the folder the restore was written into; because a restore never targets the live location, removing that folder returns the system to its prior state.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["A deliberately damaged copy is detected rather than restored.","The live material is provably untouched after a restore.","A failed verification is reported as failure, with the next intact copy named."]},"prerequisites":["At least one completed copy to check.","A new or empty folder to restore into when a real recovery is wanted."],"release_provenance":"core-release","since_release":"1.95.1","summary":"Verify a vault backup, prove it restores, or restore it to a folder of the user's choosing. Use when the user says 'restore my backup', 'test my backups', 'are my backups any good', or after data loss. Never overwrites the live vault. Not for taking a backup (`backup-now`); not for scheduling (`backup-setup`).","title":"Backup Restore","trade_offs":["A restore never overwrites the live material, so moving it back into place stays a deliberate human step.","Where a copy is damaged it says so and points at the next intact one rather than pretending the newest is usable."],"value":"Proves the copies actually come back — fingerprints checked, the whole thing unpacked into a scratch folder — and, when a real recovery is needed, puts it somewhere new instead of over the live work."},{"availability":"active","capability_class":"active-skill","capability_id":"backup-setup","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","ownership-portability","honest-health-observability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["local-file-access","off-machine-destination","scheduler"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"verified","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_backup_vault.py","summary":"Real behaviour coverage of the copying engine and its scheduler: the ladder of older copies keeps what it claims and never deletes the newest one, a real sign-in token never reaches the archive, an ordinary note that merely looks secret is still kept, and on a system without the supported scheduler nothing is installed and the equivalent instruction is printed instead."},{"level":"verified","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_doctor.py","summary":"The health check's backup probe is covered directly: a recent, successful run that quietly stored less than a full copy is reported as broken rather than passing as fine."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"doc: docs/backup-restore.md","summary":"The shipped recovery guide states what a full rebuild needs beyond the copies themselves, including the things deliberately excluded from them."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/backup-setup/SKILL.md","summary":"The shipped skill defines the destination choice, the retention ladder, the scheduling step, and the rule that setup is not reported as done until a real run has succeeded."}],"impact_tier":"high","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Set up scheduled, verified copies of the person's whole working record, kept somewhere other than the machine that made them.","method_outline":["Choose a destination off the machine, and never write credentials into it.","Exclude keys, tokens and caches from the copy on purpose, and say what was excluded.","Keep a ladder of recent and older copies, and never delete the newest one.","Prove it by running one for real before calling the setup finished.","Add a health check that treats a stale copy as a problem, not a warning."],"rollback_advice":"Remove the scheduled job and the backup settings; existing copies stay where they are and the person's live material is never touched by the setup.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["A real credential file is provably absent from the copy.","The newest copy survives even a retention rule that would delete everything.","A run that failed is reported as failed, with the recorded reason."]},"prerequisites":["A synced folder or a cloud storage account for the copies to go to.","Automatic scheduling is wired up for macOS; on other systems the person is given the exact line to schedule it themselves, and nothing is installed behind their back."],"release_provenance":"core-release","since_release":"1.95.1","summary":"Set up automatic vault backups to a synced folder or a cloud provider, with verified archives and tiered retention. Use when the user says 'back up my vault', 'set up backups', 'where are my backups going', or asks about losing their notes. Not for restoring or testing a restore (`backup-restore`); not for a one-off backup right now (`backup-now`).","title":"Backup Setup","trade_offs":["Keys and sign-in tokens are deliberately left out of the copies, so rebuilding on a new machine means entering those again.","A backup that has never been test-restored is still only a hope, which is why proving the restore is a separate step."],"value":"Puts the person's whole working record on a schedule that copies it somewhere else, keeps a ladder of older copies, and says so loudly when it quietly stops working."},{"availability":"active","capability_class":"active-skill","capability_id":"calendar-setup","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","scoped-agency-human-control"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/calendar-setup/SKILL.md","summary":"The shipped Calendar Setup skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["start-each-day-focused"],"portable_brief":{"goal":"Grant Python calendar access for ~30x faster calendar queries.","method_outline":["Inspect the current local state and the person's request.","Run the Calendar Setup workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Grant Python calendar access for ~30x faster calendar queries. Use when the user says 'connect my calendar', 'calendar is slow', 'set up calendar access'. Not for connecting Google Workspace as a whole; use `google-workspace-setup`.","title":"Calendar Setup","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Grant Python calendar access for ~30x faster calendar queries."},{"availability":"active","capability_class":"active-skill","capability_id":"change-job","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","scoped-agency-human-control","durable-memory-provenance"],"host_adapters":["claude-code","cowork"],"host_requirements":["skills-directory","durable-goals-or-tasks","task-or-note-store"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_instruction_honesty.py","summary":"Pins the transition's load-bearing promises: the settings after-check is relayed word for word, a failed check stops every later pass, nothing is deleted, each project is its own question, and connections are listed for review, never removed. The tests read the shipped instructions."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_transition_capsule.py","summary":"Covers the snapshot-and-verify lane the transition relies on: the pre-change capture, the after-check that names lost or unexpected changes, and the exact restore of the two settings files."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/change-job/SKILL.md","summary":"The shipped skill defines the five passes, the rule that every pass is previewed, confirmed and skippable, and the closing ledger naming what changed and how to undo each step."}],"impact_tier":"high","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Guide a job or role transition where every pass is previewed, confirmed, skippable, and undoable, and the settings that were not re-answered provably carry forward.","method_outline":["Lay out the five passes in plain words and get a yes before starting.","Re-run setup with carry-forward; relay the after-check and stop everything if it fails.","Re-sort people from their recorded emails, plan shown first, never guessing.","Archive the old role's planning whole and walk projects one at a time.","Re-point open tasks at the new pillars and hand grooming to the backlog skill."],"rollback_advice":"The settings snapshot restores the two configuration files exactly as captured; archived pages move back from the dated role-transition folder; the people re-sort reverses by running it against the old domain.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["A failed settings check stops the transition before any later pass runs.","Nothing is deleted; every exit is archive, park, or leave alone.","The closing ledger names each pass done or skipped and how to undo it."]},"prerequisites":["A vault that completed first-time setup.","The new role's work email domain, so people can be re-sorted."],"release_provenance":"core-release","since_release":"1.97.7","summary":"Guided job or role transition: re-run the setup questions with every unanswered setting carried forward and checked afterwards, re-sort people for the new work email domain, archive the old role's goals, priorities and projects (never deleted), re-point open tasks at the new pillars, and close with a ledger of what changed and how to undo each step. Use when the user says 'I changed jobs', 'I'm changing jobs', 'new role', 'new job', 'went full-time', or 'I'm now [role] at [company]'. Not for a preference change within the same job; use `reset`. Not for first-time setup; use `setup`.","title":"Change Job","trade_offs":["The setup questions are asked again in full, even when only a few answers changed.","People with no recorded email are left where they are rather than guessed, so a few pages may still need moving by hand."],"value":"Moves a whole Dex from one job to the next without losing anything: setup answers carried forward and checked against a snapshot, people re-sorted for the new work email, the old role's planning archived rather than deleted, and open tasks re-pointed at the new pillars."},{"availability":"active","capability_class":"active-skill","capability_id":"commitments","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","scoped-agency-human-control","durable-memory-provenance"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","meeting-source","task-or-note-store"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_commitments_skill.py","summary":"Dedicated tests pin the load-bearing promises: it reuses the existing scanner rather than building a second one, never creates a task without confirmation, says so plainly when the scan is unavailable instead of inventing a list, and reads back what it created before reporting. The tests read the shipped instructions, not a live scan."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/commitments/SKILL.md","summary":"The shipped skill defines the present-then-confirm flow, the split between promises made and asks received, and the refusal to pad an empty result."}],"impact_tier":"core","jobs":["manage-tasks-reliably"],"portable_brief":{"goal":"Create a review that surfaces open promises and asks from existing records and tracks only the ones the person confirms.","method_outline":["Read the existing commitment sources rather than building a second store.","Drop anything already tracked, and group the rest by who owes whom.","Put genuinely ambiguous items in an unclear group instead of guessing direction.","Offer each item for confirmation, then read back exactly what was created."],"rollback_advice":"Delete the tasks the review created; the meetings and notes it read from are never modified, so the source record is unaffected.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["An empty result is reported as empty, not padded with vague follow-ups.","No item becomes tracked work without an explicit yes.","Every item reported as captured has a real identifier behind it."]},"prerequisites":["Meeting notes or people records the scan can read.","A task list the confirmed commitments can become."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Reconcile the promises you made and the asks you received across meetings and notes into a clear owner/due/source list, then — only with your confirmation — turn the real ones into tracked tasks. Use when the user says 'what did I promise', 'what am I on the hook for', 'anything I owe people', 'loose ends', or after a run of meetings. Also use proactively during daily-plan/daily-review when uncaptured commitments surface. Not for tracking work you handed off to others; use `delegate-check`. Not for recording a decision you made; use `decision-log`.","title":"Commitments","trade_offs":["Which direction a promise runs is inferred from wording, so genuinely unclear items are shown as unclear rather than guessed.","Nothing becomes tracked without item-by-item confirmation, which costs the person a little attention each time."],"value":"Pulls the small promises — “I’ll send that over”, “can you review this” — out of meetings and notes into one list of who owes what, and tracks only the ones the person confirms are real."},{"availability":"active","capability_class":"active-skill","capability_id":"create-mcp","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","compounding-correctability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/create-mcp/SKILL.md","summary":"The shipped Create Mcp skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Build a brand-new MCP integration from scratch with a guided wizard.","method_outline":["Inspect the current local state and the person's request.","Run the Create Mcp workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available.","Access to the relevant local app or external service, authorized by the person."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Build a brand-new MCP integration from scratch with a guided wizard. Use when the user wants Dex to talk to a tool that has no existing server — 'build an integration for X', 'Dex can't connect to Y yet'. Not for installing an MCP that already exists; use `integrate-mcp`. Not for a prompt-only workflow with no external tool; use `create-skill`.","title":"Create Mcp","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","External connections remain subject to the provider's availability and authorization."],"value":"Build a brand-new MCP integration from scratch with a guided wizard."},{"availability":"active","capability_class":"active-skill","capability_id":"create-skill","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","compounding-correctability"],"host_adapters":["claude-code","cowork"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/create-skill/SKILL.md","summary":"The shipped Create Skill skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Author a new Dex skill.","method_outline":["Inspect the current local state and the person's request.","Run the Create Skill workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Author a new Dex skill — a reusable `/command` — that actually fires and passes the quality bar. Runs a collision check, classifies the shape, writes a router-grade description, generates the real package (SKILL.md + evals), and grades it with `skill-score` before calling it done. Use when the user says 'make a skill', 'I want a /command for X', 'turn this into a skill'. A skill the user builds for themselves is saved under `.claude/skills-custom/` (protected from updates) and coached, never blocked; a first-party skill is held to the hard gate. Not for connecting an external tool; use `create-mcp`. Not for grading a skill that already exists; use `skill-score`.","title":"Create Skill","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Author a new Dex skill."},{"availability":"active","capability_class":"active-skill","capability_id":"daily-plan","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","scoped-agency-human-control"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","readable-task-source"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_commitments_skill.py","summary":"The planning path is covered where commitments become bounded, reviewable tasks."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/daily-plan/SKILL.md","summary":"The shipped skill defines the daily planning workflow and its required source checks."}],"impact_tier":"core","jobs":["start-each-day-focused"],"portable_brief":{"goal":"Create a daily planning routine that combines meetings, tasks and commitments into one bounded plan.","method_outline":["Read current commitments and calendar shape.","Choose a short list that fits the available time.","Keep any task creation reviewable by the person."],"rollback_advice":"Disable or remove the planning command; the workflow should not require irreversible data changes.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The output names a realistic number of actions for today.","The person can reject or edit task changes before anything persists."]},"prerequisites":["A readable task list or commitment source.","Calendar access improves the plan but is not the only input."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Build today's plan from calendar, tasks, priorities and commitments, with smart scheduling suggestions. Use when the user says 'plan my day', 'what's on today', 'help me focus', or starts the morning. Also use proactively at the first session of the day. Not for reviewing a finished day; use `daily-review`.","title":"Daily Plan","trade_offs":["The plan is only as current as the sources it can inspect.","It drafts priorities; the person still chooses what to do."],"value":"Helps a person choose a small, realistic focus list before the day scatters across meetings, tasks and loose commitments."},{"availability":"active","capability_class":"active-skill","capability_id":"daily-review","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","scoped-agency-human-control","compounding-correctability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","readable-task-source","durable-memory-store"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_review_retirement.py","summary":"A dedicated test pins the end-of-day behaviour Dex ships: the review runs in the current conversation, and where a review already exists for today it checks that one rather than writing a competing second version. It reads the shipped instructions, not a live day."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_skill_delegated_gathering.py","summary":"Covers the paired gathering instructions this review depends on for a large collection of notes, so the heavy reading step cannot be silently orphaned by a later edit."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/daily-review/SKILL.md","summary":"The shipped skill defines the end-of-day workflow, the check against an existing review, and the confirmation rules before anything is written."}],"impact_tier":"high","jobs":["start-each-day-focused","reflect-and-improve-continuously"],"portable_brief":{"goal":"Create an end-of-day routine that compares intention with what actually happened and sets one starting point for tomorrow.","method_outline":["Read the day's plan, completed work and any meeting record the person approved.","Name what was finished, what slipped and what a meeting left owing.","Check whether a review already exists for today and correct it rather than duplicating it.","Agree one starting point for tomorrow with the person before writing anything."],"rollback_advice":"Stop running the routine and delete the generated review files; the underlying tasks, notes and meeting records are never rewritten by it, so they need no undo.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The review distinguishes finished work from work that merely moved.","A second run on the same day does not create a competing record.","Nothing is written to the person's own material without their confirmation."]},"prerequisites":["Today's plan, tasks or notes in a place the system can read.","A few minutes with the person; the review asks questions it cannot answer for them."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Close out the day: what got done vs planned, meeting follow-ups, learnings, and tomorrow's focus. Use when the user says 'review my day', 'wrap up', 'end of day', or it's evening. Also use proactively when the day's work is clearly done. Not for setting up the morning; use `daily-plan`.","title":"Daily Review","trade_offs":["A review can only see the parts of the day that were written down somewhere.","It proposes tomorrow's focus and any change to the record; the person confirms both."],"value":"Closes the day the morning plan opened: what actually got done against what was intended, what a meeting left behind, and what tomorrow starts with — so the loop finishes instead of drifting."},{"availability":"active","capability_class":"active-skill","capability_id":"decision-log","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","compounding-correctability","context-orientation"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","durable-memory-store"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_adoption_effective_behavior.py","summary":"Real behaviour coverage of how this capability is switched on and off again: the test adopts it through Dex's live change system, proves the change can be rewound exactly, and proves a rewind refuses rather than overwrite a file the person has since edited. That covers the switch-on path, not the recording conversation itself."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/decision-log/SKILL.md","summary":"The shipped skill defines what a decision record must contain, where it is filed, and the rule that earlier entries are never rewritten to make history look cleaner."}],"impact_tier":"high","jobs":["keep-projects-on-track"],"portable_brief":{"goal":"Create a decision record that captures the choice, the real alternatives, the reasoning and when to revisit it.","method_outline":["Search for an earlier decision on the same topic before recording a new one.","Capture the choice, what made it necessary, the options considered and why this one won.","Set a review date, or state plainly that no review is needed.","File it in the narrowest useful place and confirm where it went."],"rollback_advice":"Delete the appended decision entry; earlier entries are never modified, so removing the new one restores the previous state exactly.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The record contains no option or reason the person did not actually give.","An earlier decision it replaces is linked rather than overwritten.","Dates are absolute, so the record still reads correctly years later."]},"prerequisites":["A home for decisions that is separate from the meeting they came out of.","The person's own account of the options; the record never supplies reasoning they did not give."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Capture an important decision with its context, options, rationale, and review date, then find it again when it matters.","title":"Decision Log","trade_offs":["A decision record earns its keep only if it can be found again, which depends on where it is filed.","A superseded decision is added as a new entry rather than edited, so the history grows rather than tidies."],"value":"Keeps the reason behind a choice — the options, the rationale, the date to look at it again — so nobody has to reconstruct it from memory months later."},{"availability":"active","capability_class":"active-skill","capability_id":"delegate-check","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","scoped-agency-human-control","durable-memory-provenance"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","task-or-note-store","relationship-history"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_adoption_effective_behavior.py","summary":"Real behaviour coverage of how this capability is switched on and off again: the test adopts it through Dex's live change system, proves the change can be rewound exactly, and proves a rewind refuses rather than overwrite a file the person has since edited. That covers the switch-on path, not the review conversation itself."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/delegate-check/SKILL.md","summary":"The shipped skill defines what counts as an open handoff, the order attention is spent in, and the rule that no message is sent and no record changed without approval."}],"impact_tier":"high","jobs":["manage-tasks-reliably"],"portable_brief":{"goal":"Create a delegation review that separates moving work from stuck work and proposes one proportionate follow-up.","method_outline":["Collect open handoffs from tasks and recent meeting notes, and merge duplicates.","For each, record what, who, when it was handed over, what is expected and when.","Order the review by what needs attention, keeping healthy items brief.","Draft one short nudge per stuck item and send nothing without approval."],"rollback_advice":"Stop running the review and discard its drafts; it changes a record only after the person confirms, so nothing needs to be undone on their behalf.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Silence is reported as unclear status, never as progress or failure.","Conflicting records are shown as a conflict rather than resolved silently.","No message leaves and no status changes without an explicit yes."]},"prerequisites":["Tasks or meeting notes that record who owns what.","The person's approval before any nudge is sent or any status is changed."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Review open delegations — what you handed off, to whom, its status, and the next useful nudge. Use when the user says 'what did I delegate', 'who owes me', 'check my handoffs', 'follow up with someone'. Not for prepping a meeting; use meeting-prep.","title":"Delegate Check","trade_offs":["Where two records disagree about status, it shows the disagreement instead of quietly picking one.","It will not chase a handoff whose agreed date has not arrived, so a genuinely early risk can still be missed."],"value":"Shows what was handed to other people, what is moving, what is stuck and the one short nudge worth sending — and reports silence as unknown rather than as progress."},{"availability":"active","capability_class":"active-skill","capability_id":"dex-add-mcp","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","compounding-correctability"],"host_adapters":["claude-code","cowork"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/dex-add-mcp/SKILL.md","summary":"The shipped Dex Add Mcp skill defines the workflow Lens is cataloguing."}],"impact_tier":"medium","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Add a known MCP server to config using Dex-safe user scope.","method_outline":["Inspect the current local state and the person's request.","Run the Dex Add Mcp workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available.","Access to the relevant local app or external service, authorized by the person."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Add a known MCP server to config using Dex-safe user scope. Use when the user has server details in hand and says 'add this MCP', 'register this server'. Not for discovering/installing from a marketplace; use `integrate-mcp`. Not for building one; use `create-mcp`.","title":"Dex Add Mcp","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","External connections remain subject to the provider's availability and authorization."],"value":"Add a known MCP server to config using Dex-safe user scope."},{"availability":"active","capability_class":"active-skill","capability_id":"dex-backlog","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","compounding-correctability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/dex-backlog/SKILL.md","summary":"The shipped Dex Backlog skill defines the workflow Lens is cataloguing."}],"impact_tier":"medium","jobs":["reflect-and-improve-continuously"],"portable_brief":{"goal":"Show the AI-ranked backlog of Dex system-improvement ideas.","method_outline":["Inspect the current local state and the person's request.","Run the Dex Backlog workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Show the AI-ranked backlog of Dex system-improvement ideas. Use when the user says 'show my Dex ideas', 'what's in the backlog', 'what should we build next'. Not for workshopping one idea into a plan; use `dex-improve`. Not for discovering existing features; use `dex-level-up`.","title":"Dex Backlog","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Show the AI-ranked backlog of Dex system-improvement ideas."},{"availability":"active","capability_class":"active-skill","capability_id":"dex-doctor","changed_in":[],"compatibility":{"foundation_capabilities":["honest-health-observability","safe-change-recovery","privacy-minimal-disclosure"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["local-diagnostics","feature-status-vocabulary"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"verified","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_doctor.py","summary":"Doctor behavior is covered by the main health-check test suite."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/dex-doctor/SKILL.md","summary":"The shipped skill defines the checkup flow and safe repair boundary."}],"impact_tier":"core","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Create a local health check that distinguishes working, off, broken and unknown states without over-claiming.","method_outline":["Probe the same paths the real features use.","Report unknown when evidence is incomplete.","Keep any repair action behind a separate approval path."],"rollback_advice":"Disable repair actions first; the diagnostic report can remain read-only.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["A sabotaged probe does not become working.","Unknown and off states are visible to the person.","No secret value appears in output."]},"prerequisites":["A host can run local checks against its own configuration.","Repair paths must be separately gated from diagnosis."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Whole-system checkup: verifies every Dex feature honestly (working/off/broken/couldn't-check), self-heals what's provably safe, guides the rest. Use when the user says 'is Dex healthy', 'something's broken', 'check my setup', 'run diagnostics'. Not for discovering unused *features*; use `dex-level-up`. Not for applying an update; use `dex-update`.","title":"Dex Doctor","trade_offs":["A check can report unknown when evidence is missing.","Automatic repair must remain limited to provably safe fixes."],"value":"Gives the person an honest system check: what works, what is off, what is broken and what should not be guessed."},{"availability":"active","capability_class":"active-skill","capability_id":"dex-improve","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","compounding-correctability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/dex-improve/SKILL.md","summary":"The shipped Dex Improve skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["reflect-and-improve-continuously"],"portable_brief":{"goal":"Workshop one improvement idea into an implementation plan.","method_outline":["Inspect the current local state and the person's request.","Run the Dex Improve workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Workshop one improvement idea into an implementation plan. Use when the user says 'let's flesh out idea-X', 'turn this into a plan', 'improve Dex's Y'. Not for ranking the whole backlog; use `dex-backlog`. Not for a PRD for the user's own product; use `product-brief`.","title":"Dex Improve","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Workshop one improvement idea into an implementation plan."},{"availability":"active","capability_class":"active-skill","capability_id":"dex-level-up","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","compounding-correctability"],"host_adapters":["claude-code","cowork"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/dex-level-up/SKILL.md","summary":"The shipped Dex Level Up skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Surface Dex features the user isn't using yet, based on their usage patterns.","method_outline":["Inspect the current local state and the person's request.","Run the Dex Level Up workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Surface Dex features the user isn't using yet, based on their usage patterns. Use when the user says 'what am I missing', 'show me new features', 'level up my Dex'. Not for diagnosing what's broken; use `dex-doctor`. Not for what changed in a release; use `dex-whats-new`.","title":"Dex Level Up","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Surface Dex features the user isn't using yet, based on their usage patterns."},{"availability":"active","capability_class":"active-skill","capability_id":"dex-obsidian-setup","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","compounding-correctability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/dex-obsidian-setup/SKILL.md","summary":"The shipped Dex Obsidian Setup skill defines the workflow Lens is cataloguing."}],"impact_tier":"medium","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Turn on Obsidian mode and migrate the vault to wiki links.","method_outline":["Inspect the current local state and the person's request.","Run the Dex Obsidian Setup workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Turn on Obsidian mode and migrate the vault to wiki links. Use when the user says 'I use Obsidian', 'enable wiki links', 'make this work in Obsidian'. Not for connecting an external tool/API; use `create-mcp`/`integrate-mcp`.","title":"Dex Obsidian Setup","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Turn on Obsidian mode and migrate the vault to wiki links."},{"availability":"active","capability_class":"active-skill","capability_id":"dex-orient","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","compounding-correctability"],"host_adapters":["claude-code","cowork"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/dex-orient/SKILL.md","summary":"The shipped Dex Orient skill defines the workflow Lens is cataloguing."}],"impact_tier":"niche","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Orient a Dex Core contributor in release truth, local changes and the canonical architecture maps.","method_outline":["Inspect the current local state and the person's request.","Run the Dex Orient workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.69.0","summary":"Orient in the Dex Core codebase: prints the released version, what's merged-but-not-released, and where the architecture map + inventory live. Use at the start of any dex-core development or investigation, or whenever you're unsure what's shipped vs built-locally vs prototype.","title":"Dex Orient","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Orient in the Dex Core codebase: prints the released version, what's merged-but-not-released, and where the architecture map + inventory live. Use at the start of any dex-core development or investigation, or whenever you're unsure what's shipped vs built-locally vs prototype."},{"availability":"active","capability_class":"active-skill","capability_id":"dex-rollback","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","compounding-correctability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/dex-rollback/SKILL.md","summary":"The shipped Dex Rollback skill defines the workflow Lens is cataloguing."}],"impact_tier":"core","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Rewind one receipt-backed Dex adoption through the frozen lifecycle service.","method_outline":["Inspect the current local state and the person's request.","Run the Dex Rollback workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Rewind one receipt-backed Dex adoption through the frozen lifecycle service. Use when the user says 'undo the update', 'go back', 'that broke something after updating'. Not for applying an update; use `dex-update`.","title":"Dex Rollback","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Rewind one receipt-backed Dex adoption through the frozen lifecycle service."},{"availability":"active","capability_class":"active-skill","capability_id":"dex-update","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","compounding-correctability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/dex-update/SKILL.md","summary":"The shipped Dex Update skill defines the workflow Lens is cataloguing."}],"impact_tier":"core","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Preview and safely adopt a Dex update through the receipt-backed lifecycle (look → back up → apply → verify → rewindable).","method_outline":["Inspect the current local state and the person's request.","Run the Dex Update workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Preview and safely adopt a Dex update through the receipt-backed lifecycle (look → back up → apply → verify → rewindable). Use when the user says 'update Dex', 'install the new version', or a release notice appeared. Not for undoing an update; use `dex-rollback`. Not just seeing what changed; use `dex-whats-new`.","title":"Dex Update","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Preview and safely adopt a Dex update through the receipt-backed lifecycle (look → back up → apply → verify → rewindable)."},{"availability":"active","capability_class":"active-skill","capability_id":"dex-whats-new","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","compounding-correctability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/dex-whats-new/SKILL.md","summary":"The shipped Dex Whats New skill defines the workflow Lens is cataloguing."}],"impact_tier":"medium","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Show recent system improvements.","method_outline":["Inspect the current local state and the person's request.","Run the Dex Whats New workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Show recent system improvements — captured learnings plus new Claude capabilities. Use when the user says 'what's new', 'any updates to how Dex works'. Not for previewing and applying a version update; use `dex-update`. Not for unused existing features; use `dex-level-up`.","title":"Dex Whats New","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Show recent system improvements."},{"availability":"active","capability_class":"active-skill","capability_id":"diff-adopt","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","compounding-correctability"],"host_adapters":["claude-code","cowork"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/diff-adopt/SKILL.md","summary":"The shipped Diff Adopt skill defines the workflow Lens is cataloguing."}],"impact_tier":"niche","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Adopt one shared DexDiff methodology.","method_outline":["Inspect the current local state and the person's request.","Run the Diff Adopt workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.49.0","summary":"Adopt one shared DexDiff methodology — reads a workflow description, adapts it to your role and vault, and walks you through setup. Use when the user says 'adopt this workflow', 'set me up like this doc'. Not for a full published profile by handle; use `diff-adopt-profile`.","title":"Diff Adopt","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Adopt one shared DexDiff methodology."},{"availability":"active","capability_class":"active-skill","capability_id":"diff-adopt-profile","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","compounding-correctability"],"host_adapters":["claude-code","cowork"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/diff-adopt-profile/SKILL.md","summary":"The shipped Diff Adopt Profile skill defines the workflow Lens is cataloguing."}],"impact_tier":"niche","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Adopt a full published Heydex profile by handle ('set me up like @davekilleen').","method_outline":["Inspect the current local state and the person's request.","Run the Diff Adopt Profile workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.49.0","summary":"Adopt a full published Heydex profile by handle ('set me up like @davekilleen'). Use when the user says 'set me up like ', or names a handle. Not for a single workflow doc; use `diff-adopt`. Not for creating your own profile; use `diff-profile`.","title":"Diff Adopt Profile","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Adopt a full published Heydex profile by handle ('set me up like @davekilleen')."},{"availability":"active","capability_class":"active-skill","capability_id":"diff-generate","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","compounding-correctability"],"host_adapters":["claude-code","cowork"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/diff-generate/SKILL.md","summary":"The shipped Diff Generate skill defines the workflow Lens is cataloguing."}],"impact_tier":"niche","jobs":["reflect-and-improve-continuously"],"portable_brief":{"goal":"Package one workflow.","method_outline":["Inspect the current local state and the person's request.","Run the Diff Generate workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.49.0","summary":"Package one workflow — how you use Dex for a specific job — into a shareable DexDiff methodology doc. Use when the user says 'share how I do X', 'package this workflow'. Not for packaging your *entire* system; use `diff-profile`. Not for adopting someone else's; use `diff-adopt`.","title":"Diff Generate","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Package one workflow."},{"availability":"active","capability_class":"active-skill","capability_id":"diff-list","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","compounding-correctability"],"host_adapters":["claude-code","cowork"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/diff-list/SKILL.md","summary":"The shipped Diff List skill defines the workflow Lens is cataloguing."}],"impact_tier":"niche","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Show all adopted DexDiff workflows.","method_outline":["Inspect the current local state and the person's request.","Run the Diff List workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.49.0","summary":"Show all adopted DexDiff workflows — what's installed, when it was adopted, and what it includes","title":"Diff List","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Show all adopted DexDiff workflows."},{"availability":"active","capability_class":"active-skill","capability_id":"diff-profile","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","compounding-correctability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/diff-profile/SKILL.md","summary":"The shipped Diff Profile skill defines the workflow Lens is cataloguing."}],"impact_tier":"niche","jobs":["reflect-and-improve-continuously"],"portable_brief":{"goal":"Package your entire Dex system into a shareable DexDiff profile so others can replicate how you work.","method_outline":["Inspect the current local state and the person's request.","Run the Diff Profile workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.49.0","summary":"Package your entire Dex system into a shareable DexDiff profile so others can replicate how you work. Use when the user says 'share my whole setup', 'publish my profile'. Not for a single workflow; use `diff-generate`. Not for adopting a whole profile; use `diff-adopt-profile`.","title":"Diff Profile","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Package your entire Dex system into a shareable DexDiff profile so others can replicate how you work."},{"availability":"active","capability_class":"active-skill","capability_id":"diff-remove","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","compounding-correctability"],"host_adapters":["claude-code","cowork"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/diff-remove/SKILL.md","summary":"The shipped Diff Remove skill defines the workflow Lens is cataloguing."}],"impact_tier":"niche","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Remove a previously adopted DexDiff workflow.","method_outline":["Inspect the current local state and the person's request.","Run the Diff Remove workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.49.0","summary":"Remove a previously adopted DexDiff workflow — deletes its generated skills and config, leaves your data untouched. Use when the user says 'remove that workflow', 'undo the adoption'. Not for listing what's installed; use `diff-list`.","title":"Diff Remove","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Remove a previously adopted DexDiff workflow."},{"availability":"active","capability_class":"active-skill","capability_id":"enable-semantic-search","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","privacy-minimal-disclosure","ownership-portability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","local-search-index","durable-memory-store"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/enable-semantic-search/SKILL.md","summary":"The shipped skill defines the pre-flight checks, the guided local install, the collections it discovers from the person's own material, and the later health check on those collections. There is no test of the workflow's own judgement calls; the shipped skill file is the definition of the behaviour, which is why this entry claims support rather than proof."}],"impact_tier":"high","jobs":["reflect-and-improve-continuously"],"portable_brief":{"goal":"Add meaning-based search over the person's own notes, running locally, without sending their material anywhere.","method_outline":["Check what is already installed before proposing anything.","Explain in plain terms what is being installed and roughly what it costs in space.","Discover the natural groupings in the person's own material rather than imposing one.","Fall back cleanly to exact-word search wherever the index is unavailable."],"rollback_advice":"Remove the local search index and its tool; every workflow that used it falls back to exact-word search, and the notes themselves are never modified.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Notes never leave the person's machine as part of the setup.","A search by meaning finds a note that shares no words with the query.","Every routine that uses it still works when the index is absent."]},"prerequisites":["A one-off local setup with room on the machine for the search index.","Enough accumulated notes that exact-word searching is already missing things."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Turn on local AI-powered semantic (meaning-based) search over the vault, with smart collection discovery. Use when the user says 'enable semantic search', 'search by meaning', 'set up QMD', or search keeps missing obvious matches. Not for scraping the web; use `scrape`.","title":"Enable Semantic Search","trade_offs":["The guided setup names macOS package steps; other systems need their own equivalents.","Meaning-based results are broader than exact matches, so an occasional loose result is the price of finding the right one."],"value":"Makes the person's own notes searchable by meaning rather than exact wording, on their own machine — so looking for “customer churn” still finds the note that said “people keep leaving”."},{"availability":"active","capability_class":"active-skill","capability_id":"feedback","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","compounding-correctability"],"host_adapters":["claude-code","cowork"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/feedback/SKILL.md","summary":"The shipped Feedback skill defines the workflow Lens is cataloguing."}],"impact_tier":"core","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Report a Dex bug to the Dex team with zero homework.","method_outline":["Inspect the current local state and the person's request.","Run the Feedback workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.82.0","summary":"Report a Dex bug to the Dex team with zero homework — Dex investigates locally, builds a privacy-safe report, shows it to you (or auto-sends if you've chosen that), and tracks the ticket until it's fixed. Use when the user says \"report this\", \"send this to the Dex team\", \"file feedback\", \"/feedback\", asks \"what happened to my bug report\", or accepts Doctor's offer to report a Dex bug. Also use when the user describes something in Dex misbehaving in their own words, without asking for a report at all — \"the meeting sync is doing something weird\", \"this keeps breaking\", \"X stopped working\", \"that's not what I asked for\" — investigate first, then offer. Not for capturing ideas about your own vault or workflow; use the improvements backlog for those. Not for trouble in the user's own notes, calendar or projects, which is never a Dex defect.","title":"Feedback","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Report a Dex bug to the Dex team with zero homework."},{"availability":"active","capability_class":"active-skill","capability_id":"getting-started","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","scoped-agency-human-control"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/getting-started/SKILL.md","summary":"The shipped Getting Started skill defines the workflow Lens is cataloguing."}],"impact_tier":"core","jobs":["start-each-day-focused"],"portable_brief":{"goal":"Give a new Dex user a practical post-onboarding tour that adapts to the data already available.","method_outline":["Inspect the current local state and the person's request.","Run the Getting Started workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Interactive post-onboarding tour that adapts to whatever data exists (calendar, Granola, or none). Use right after onboarding, or when the user says 'show me around', 'how do I start'. Also use proactively when the vault is < 7 days old. Not for the initial setup itself; use `setup`.","title":"Getting Started","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Interactive post-onboarding tour that adapts to whatever data exists (calendar, Granola, or none). Use right after onboarding, or when the user says 'show me around', 'how do I start'. Also use proactively when the vault is < 7 days old. Not for the initial setup itself; use `setup`."},{"availability":"active","capability_class":"active-skill","capability_id":"goal-backlog","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","scoped-agency-human-control","durable-memory-provenance"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","durable-goals-or-tasks","task-or-note-store"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_instruction_honesty.py","summary":"Pins the load-bearing promises: no task is deleted or moved silently, deletions are previewed line by line and approved per task, parking preserves content, and the offer to structure freeform goals is made once. The tests read the shipped instructions."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_work_server_task_goal_readers.py","summary":"Covers the grouped backlog reader the skill drives: grouping by goal, the pick-up-first ordering, staleness counts, and the handling of provisional goals recovered from freeform text."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/goal-backlog/SKILL.md","summary":"The shipped skill defines the one-goal-at-a-time pass, the four honest exits for stale work, and the rule that nothing leaves the backlog without a yes."}],"impact_tier":"high","jobs":["manage-tasks-reliably"],"portable_brief":{"goal":"Create a grooming pass that shows open work under each quarter goal and records the user's own decisions about what stays, what goes, and what gets picked up first.","method_outline":["Load the grouped backlog and present the largest and stalest groups first.","Confirm or clear each doubtful goal link before anything else.","Offer four exits for stale work - done, parked, deleted with per-task approval, or kept.","Record the pick-up-first order weekly planning will pull from."],"rollback_advice":"Move a parked task's lines back from the Someday file to the tasks file to revive it; ask to clear a pick-up-first order to undo it. Deletions are the one permanent exit, which is why each requires its own yes.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Nothing is deleted or moved without the exact lines shown and a yes for that task.","The offer to structure freeform goals is made once, never repeated after a no.","An empty backlog is reported as empty, not padded with invented work."]},"prerequisites":["Quarterly goals in the structured page shape, so tasks can link to them.","An open task backlog in the standard tasks file."],"release_provenance":"core-release","since_release":"1.97.7","summary":"Groom the open task pool goal by goal: see everything under each quarter goal, confirm doubtful goal links, retire what has gone stale, and mark what gets picked up first when that goal earns week-time. Use when the user says 'groom my backlog', 'what's under this goal', 'my tasks are a swamp', 'clean up my tasks', or when open tasks have piled up untouched. Not for routing new inbox items; use `triage`. Not for setting the week's priorities; use `week-plan`.","title":"Goal Backlog","trade_offs":["Staleness is measured from when a task was created, not from real activity, so a task advanced elsewhere can look idle.","Every retirement is confirmed item by item, which costs attention on a large backlog."],"value":"Turns a flat, overgrown task list back into a groomed pool: open work shown goal by goal, doubtful links confirmed, stale items retired only with approval, and a picked-up-first order that weekly planning actually uses."},{"availability":"active","capability_class":"active-skill","capability_id":"google-workspace-setup","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","privacy-minimal-disclosure"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/google-workspace-setup/SKILL.md","summary":"The shipped Google Workspace Setup skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["capture-without-friction"],"portable_brief":{"goal":"Connect Google Workspace (Gmail, Calendar, Docs) for email-aware planning and meeting prep.","method_outline":["Inspect the current local state and the person's request.","Run the Google Workspace Setup workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available.","Access to the relevant local app or external service, authorized by the person."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Connect Google Workspace (Gmail, Calendar, Docs) for email-aware planning and meeting prep. Use when the user says 'connect Gmail/Google', 'hook up my work email'. Not for local macOS calendar speed only; use `calendar-setup`. Not for Microsoft; use `ms-teams-setup`.","title":"Google Workspace Setup","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","External connections remain subject to the provider's availability and authorization."],"value":"Connect Google Workspace (Gmail, Calendar, Docs) for email-aware planning and meeting prep."},{"availability":"active","capability_class":"active-skill","capability_id":"granola-setup","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","privacy-minimal-disclosure"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/granola-setup/SKILL.md","summary":"The shipped Granola Setup skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["capture-without-friction"],"portable_brief":{"goal":"Connect Granola via its official API for automatic meeting sync and transcripts.","method_outline":["Inspect the current local state and the person's request.","Run the Granola Setup workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available.","Access to the relevant local app or external service, authorized by the person."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Connect Granola via its official API for automatic meeting sync and transcripts. Use when the user says 'connect Granola', 'my meetings aren't syncing', 'set up meeting notes'. Not for Zoom recordings; use `zoom-setup`. Not for processing meetings already synced; use `process-meetings`.","title":"Granola Setup","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","External connections remain subject to the provider's availability and authorization."],"value":"Connect Granola via its official API for automatic meeting sync and transcripts."},{"availability":"active","capability_class":"active-skill","capability_id":"identity-snapshot","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","compounding-correctability","honest-health-observability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","durable-memory-store","durable-goals-or-tasks"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/identity-snapshot/SKILL.md","summary":"The shipped skill defines the sources it reads, the structure of the profile it writes, and its rule to report a neglected area honestly rather than flatter the person. There is no test of the workflow's own judgement calls; the shipped skill file is the definition of the behaviour, which is why this entry claims support rather than proof."}],"impact_tier":"high","jobs":["reflect-and-improve-continuously"],"portable_brief":{"goal":"Create an observed profile of how a person works, generated from their own records rather than from self-description.","method_outline":["Read the accumulated goals, priorities, tasks and captured learnings.","Describe patterns using actual data points, not general statements.","Say plainly where an area is neglected or where pace dropped.","Date every generation so change over time is visible."],"rollback_advice":"Delete the generated profile; it is written from other records and never modifies them, so removing it loses nothing else.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Nothing in the profile was asked of the person directly.","A missing source is marked as missing rather than smoothed over.","Each claim can be traced to a specific record."]},"prerequisites":["Enough accumulated history for a pattern to exist; a new system has nothing to read.","A place for the profile to live and be replaced as it changes."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Generate a living profile of the user's working patterns, decision tendencies and quality preferences from their Dex data. Use when the user says 'what are my patterns', 'how do I work', or during `week-review`. Also use proactively when the model (older than 7 days) is stale. Not for planning a week; use `week-plan`.","title":"Identity Snapshot","trade_offs":["It sees only what was captured, so habits that never got written down are invisible to it.","Generated too early it describes noise; it becomes useful after months of material."],"value":"Writes a dated profile of how the person actually works, built from their own accumulated records rather than from what they say about themselves — so drift over months becomes visible."},{"availability":"active","capability_class":"active-skill","capability_id":"industry-truths","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","compounding-correctability","context-orientation"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","durable-memory-store"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/industry-truths/SKILL.md","summary":"The shipped skill defines the three time horizons, the interview that draws the beliefs out, and the later passes that review them and compare them against what actually happened. There is no test of the workflow's own judgement calls; the shipped skill file is the definition of the behaviour, which is why this entry claims support rather than proof."}],"impact_tier":"high","jobs":["keep-projects-on-track"],"portable_brief":{"goal":"Create a record of time-horizoned beliefs about a market so strategic choices can be checked against stated assumptions.","method_outline":["Draw out beliefs by conversation rather than by form-filling.","Separate them into what is true now, what is emerging, and what is a bet.","Record who or what the person watches for signals of change.","Schedule a later pass that compares the beliefs against what actually happened."],"rollback_advice":"Delete the assumptions file; it is a standalone record, and strategy notes that referenced it simply lose the link.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Each belief is specific enough to be proved wrong.","The horizon each belief sits in is explicit.","There is a stated point at which the beliefs get reviewed."]},"prerequisites":["A domain the person genuinely follows, and roughly fifteen minutes of conversation.","A willingness to be wrong in writing; the value arrives when the beliefs are checked later."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Define time-horizoned assumptions about your industry (today / 6mo / 12mo) that ground strategic thinking. Use when the user is making roadmap, positioning or investment calls, or says 'what am I assuming about the market'. Also use proactively before a big strategic recommendation. Not for capturing a single decision; use `decision-log`.","title":"Industry Truths","trade_offs":["Assumptions written once and never revisited age badly, and can mislead more than having none.","It records beliefs, not evidence; the sources behind them remain the person's responsibility."],"value":"Makes the beliefs a strategy rests on explicit — what is true today, in six months, in a year — so later decisions can be checked against them instead of quietly assuming them."},{"availability":"active","capability_class":"active-skill","capability_id":"initiative-kickoff","changed_in":[],"compatibility":{"foundation_capabilities":["scoped-agency-human-control","durable-memory-provenance","context-orientation"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","durable-goals-or-tasks","project-records"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_initiative_kickoff_skill.py","summary":"Dedicated tests pin the load-bearing promises: success signals must be checkable, no connection to a goal is manufactured where none fits, nothing is created without confirmation, and the person's setting for creating new people records is respected. The tests read the shipped instructions, not a live kickoff."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/initiative-kickoff/SKILL.md","summary":"The shipped skill defines the framing questions, the honest ladder to goals, and the read-back of what was created before anything is called kicked off."}],"impact_tier":"high","jobs":["keep-projects-on-track"],"portable_brief":{"goal":"Create a kickoff routine that turns a decision to start something into an outcome, checkable success signals, an owner and first steps.","method_outline":["Get the outcome, the reason it is worth starting now, and what is out of scope.","Name two to four signals somebody could actually check later.","Name the accountable owner and the people involved.","Connect it to a real existing goal, or record it honestly as a standalone bet.","Draft the first few steps and create only the ones confirmed."],"rollback_advice":"Delete the initiative record and the first steps it created; nothing else in the person's goals or projects is altered by the kickoff.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Every success signal could be verified by someone else months later.","No connection to a goal exists that the goals themselves do not support.","What is reported as created matches what actually exists."]},"prerequisites":["A decision already taken; this is where a decision becomes work, not where it gets made.","Somewhere to keep the initiative, and existing goals to connect it to if any exist."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Turn a decision to start something new — a hire, a partnership, a go-to-market push, an internal bet — into a real initiative: the outcome and why now, what success looks like, who's involved, the first concrete steps, and a project page that ladders to your pillars and goals. Use when the user says 'let's kick off X', 'I'm starting a new initiative', 'set up a project for this', or 'we've decided to do Y'. Also use proactively when the user commits to a new effort mid-conversation. Not for spec'ing a product feature or writing a PRD; use `product-brief`. Not for checking the status of projects already underway; use `project-health`.","title":"Initiative Kickoff","trade_offs":["Where an initiative does not connect to a real goal it is recorded as a standalone bet rather than tied to an invented one.","Success signals have to be checkable later, which takes more thought up front than a general aim."],"value":"Turns “we’ve decided to do this” into something that can actually start: an outcome, signs of success somebody could check later, a named owner and the first few steps."},{"availability":"active","capability_class":"active-skill","capability_id":"integrate-mcp","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","compounding-correctability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/integrate-mcp/SKILL.md","summary":"The shipped Integrate Mcp skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Install and wire up an existing MCP server from Smithery.ai or a GitHub repo.","method_outline":["Inspect the current local state and the person's request.","Run the Integrate Mcp workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available.","Access to the relevant local app or external service, authorized by the person."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Install and wire up an existing MCP server from Smithery.ai or a GitHub repo. Use when the user names a tool that already has a server — 'add the Notion MCP', 'install this Smithery server'. Not for building a new integration from nothing; use `create-mcp`. Not for adding one already-known server safely; use `dex-add-mcp`.","title":"Integrate Mcp","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","External connections remain subject to the provider's availability and authorization."],"value":"Install and wire up an existing MCP server from Smithery.ai or a GitHub repo."},{"availability":"active","capability_class":"active-skill","capability_id":"journal","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","compounding-correctability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/journal/SKILL.md","summary":"The shipped Journal skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["reflect-and-improve-continuously"],"portable_brief":{"goal":"Toggle journaling or start a morning/evening/weekly journal entry.","method_outline":["Inspect the current local state and the person's request.","Run the Journal workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Toggle journaling or start a morning/evening/weekly journal entry. Use when the user says 'journal', 'morning pages', 'evening reflection'. Also use proactively when a journaling-enabled user starts/ends the day. Not for a structured end-of-day work review; use `daily-review`.","title":"Journal","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Toggle journaling or start a morning/evening/weekly journal entry."},{"availability":"active","capability_class":"active-skill","capability_id":"manage-capabilities","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","compounding-correctability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/manage-capabilities/SKILL.md","summary":"The shipped Manage Capabilities skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Turn optional Dex rooms/features on or off without deleting any content.","method_outline":["Inspect the current local state and the person's request.","Run the Manage Capabilities workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.63.0","summary":"Turn optional Dex rooms/features on or off without deleting any content. Use when the user says 'turn off X', 'enable the career room', 'hide a feature I don't use'. Not for diagnosing breakage; use `dex-doctor`. Not for a full role restructure; use `reset`.","title":"Manage Capabilities","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Turn optional Dex rooms/features on or off without deleting any content."},{"availability":"active","capability_class":"active-skill","capability_id":"meeting-closeout","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","scoped-agency-human-control","privacy-minimal-disclosure"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","meeting-source","task-or-note-store"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_meeting_closeout_skill.py","summary":"Dedicated tests pin the load-bearing promises: this is one meeting rather than a bulk catch-up, owners are named or honestly marked unknown, the person's setting for creating new people records is respected, no task is created without confirmation, and a meeting it cannot find is asked for rather than reconstructed. The tests read the shipped instructions, not a live meeting."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/meeting-closeout/SKILL.md","summary":"The shipped skill defines the closeout, the hard boundary on where meeting material may be read from, and the read-back before anything is reported as captured."}],"impact_tier":"high","jobs":["capture-without-friction"],"portable_brief":{"goal":"Create a single-meeting closeout that captures decisions, owners, personal promises and one next step while they are still fresh.","method_outline":["Work only from notes the person supplied or from their own configured store.","Extract decisions, action items with a named owner, personal promises and one next step.","Mark an owner the notes do not name as unknown instead of assigning one.","Offer each follow-up for confirmation, then read back what was actually saved."],"rollback_advice":"Delete the generated closeout note and any follow-ups it created; the original meeting notes are appended to or left alone, never rewritten.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["No decision, owner or promise appears that the notes do not support.","A meeting with no available notes produces a request, never a recap.","What is reported as saved matches what is actually on disk."]},"prerequisites":["Notes from the meeting — pasted, dictated, or already saved wherever the person keeps them.","Somewhere to write the follow-ups the person approves."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Close out the meeting you just had while it's fresh — lock the decisions, the action items and who owns each, what you personally committed to, and the single next step — then capture it and, only with your OK, turn the actions into tracked tasks. Use when the user says 'wrap up this meeting', 'close out my 3pm', 'here are my notes from the call', or right after a meeting ends. Also use proactively when the user pastes raw notes from a meeting that just happened. Not for bulk-processing many already-synced meetings; use `process-meetings`. Not for prepping a meeting that hasn't happened yet; use `meeting-prep`.","title":"Meeting Closeout","trade_offs":["It will not go looking in outside services for a meeting it cannot find; it asks for the notes instead.","Owners the notes do not name are recorded as unknown rather than guessed, which leaves real gaps visible."],"value":"Locks one meeting's decisions, owners and personal promises while it is still fresh, and refuses to invent an owner or a recap for a meeting it cannot actually see."},{"availability":"active","capability_class":"active-skill","capability_id":"meeting-prep","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","privacy-minimal-disclosure","durable-memory-provenance"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","relationship-history","meeting-source"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_meeting_prep_calendar_journey.py","summary":"Statically checks the calendar-first instruction contract and journey order across the inline skill and delegated research prompt, including required attendee filters, feature-status guidance, and the structured person-page handoff; it does not simulate Calendar MCP runtime behavior."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_instruction_honesty.py","summary":"A dedicated test pins that this capability reports a source that is switched off or broken in Dex's honest wording, rather than letting a gap in the gathering pass as a finished brief."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_skill_delegated_gathering.py","summary":"Covers the paired gathering instructions the prep depends on when the history is large, so the reading step cannot be orphaned by a later edit."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/meeting-prep/SKILL.md","summary":"The shipped skill defines what is gathered, how the brief is shaped for the person's seniority and preferences, and the requirement to spot-check claims before presenting them."}],"impact_tier":"high","jobs":["capture-without-friction"],"portable_brief":{"goal":"Create a pre-meeting brief that gathers attendee history and open threads from approved sources and states what it could not find.","method_outline":["Identify the meeting and its attendees from the calendar or the person's own words.","Read only approved history: past notes, people records, related project material.","Confirm a sample of the files the brief cites actually exist before repeating them.","Present context, open threads and suggested talking points, and name the gaps."],"rollback_advice":"Stop running the routine; the brief is produced for the conversation and changes nothing in the person's own records, so there is nothing to unwind.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Every claim in the brief traces to a file that exists.","Missing history is stated as missing rather than filled in plausibly.","No source outside the approved reading scope is opened."]},"prerequisites":["A calendar entry, or simply the meeting named out loud.","Some history worth gathering: earlier notes, people records or related project material."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Prepare for a specific upcoming meeting by gathering attendee context, history and related topics. Use when the user says 'prep me for my meeting with X', 'what do I need for the 2pm', or before a calendar event. Also use proactively when a meeting is imminent. Not for writing up a meeting that already happened; use `process-meetings`.","title":"Meeting Prep","trade_offs":["A brief is only as good as the history already captured; a genuinely first meeting has little to gather.","Anything the brief claims should be checked against the real file before it is repeated in the room."],"value":"Walks into the meeting already holding the attendees, the history and the open threads, instead of spending the last five minutes searching for them."},{"availability":"active","capability_class":"active-skill","capability_id":"ms-teams-setup","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","privacy-minimal-disclosure"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/ms-teams-setup/SKILL.md","summary":"The shipped Ms Teams Setup skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["track-people-and-relationships"],"portable_brief":{"goal":"Connect Microsoft Teams for cross-channel context awareness.","method_outline":["Inspect the current local state and the person's request.","Run the Ms Teams Setup workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available.","Access to the relevant local app or external service, authorized by the person."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Connect Microsoft Teams for cross-channel context awareness. Use when the user says 'connect Teams', 'hook up Microsoft'. Not for Google email/calendar; use `google-workspace-setup`.","title":"Ms Teams Setup","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","External connections remain subject to the provider's availability and authorization."],"value":"Connect Microsoft Teams for cross-channel context awareness."},{"availability":"active","capability_class":"active-skill","capability_id":"pipedrive-setup","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","privacy-minimal-disclosure"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/pipedrive-setup/SKILL.md","summary":"The shipped Pipedrive Setup skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["track-people-and-relationships"],"portable_brief":{"goal":"Connect Pipedrive CRM for a live pipeline view and confirm-gated deal updates.","method_outline":["Inspect the current local state and the person's request.","Run the Pipedrive Setup workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available.","Access to the relevant local app or external service, authorized by the person."],"release_provenance":"core-release","since_release":"1.95.1","summary":"Connect Pipedrive CRM for a live pipeline view and confirm-gated deal updates. Use when the user says 'connect Pipedrive', 'link my CRM', 'sync my pipeline with Pipedrive'. Not for pipeline analysis without a CRM; use `pipeline-health`. Not for reconciling an already-connected CRM; use `pipeline-sync`.","title":"Pipedrive Setup","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","External connections remain subject to the provider's availability and authorization."],"value":"Connect Pipedrive CRM for a live pipeline view and confirm-gated deal updates."},{"availability":"active","capability_class":"active-skill","capability_id":"pipeline-sync","changed_in":[],"compatibility":{"foundation_capabilities":["scoped-agency-human-control","honest-health-observability","safe-change-recovery","privacy-minimal-disclosure"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","pipedrive-connection","pipeline-sync-companion"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_mature_skill_amendments.py","summary":"The shipped instructions cover partial reads, prerequisites, confirmation and recovery limits."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_pipedrive_server.py","summary":"Pipedrive adapter tests support key read and write safety behavior, not complete synchronization."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/pipeline-sync/SKILL.md","summary":"The active release skill defines the pipeline reconciliation workflow."}],"impact_tier":"high","jobs":["keep-projects-on-track"],"portable_brief":{"goal":"Reconciles Pipedrive deal facts with local strategy notes through explicit previews and read-back checks.","method_outline":["Discover complete deal and note inputs.","Map differences without treating partial reads as complete.","Preview, confirm and read back each approved reconciliation."],"rollback_advice":"Stop the reconciliation and keep both systems unchanged; use the last preview and read-back receipt to recover any confirmed partial update.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Incomplete reads remain visibly incomplete.","A retry does not assume idempotency without proof."]},"prerequisites":["A configured Pipedrive connection the host can read.","The pipeline-sync companion instructions and explicit authority for any proposed write."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Live view of your Pipedrive pipeline reconciled against your local pipeline tracker; flags drift, maps focus deals, and pushes confirmed updates to the CRM. Use when the user says 'sync my pipeline', 'show me my pipeline', 'reconcile the CRM'. Not for connecting Pipedrive in the first place; use `pipedrive-setup`.","title":"Pipeline Sync","trade_offs":["It requires both the Pipedrive connection and its companion instructions; write behavior remains human-confirmed and only supported, not behaviorally verified.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Reconciles Pipedrive deal facts with local strategy notes through explicit previews and read-back checks."},{"availability":"active","capability_class":"active-skill","capability_id":"process-meetings","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","durable-memory-provenance","privacy-minimal-disclosure"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","meeting-source","task-or-note-store"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_process_meetings_soft_commitment_wiring.py","summary":"Meeting processing is covered where soft commitments are detected and routed."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/process-meetings/SKILL.md","summary":"The shipped skill defines the meeting processing workflow."}],"impact_tier":"core","jobs":["capture-without-friction","track-people-and-relationships"],"portable_brief":{"goal":"Create a meeting processing routine that extracts decisions, commitments and relationship context from approved meeting material.","method_outline":["Read only the approved meeting source.","Identify decisions, action items and people references.","Offer reviewable tasks or note updates."],"rollback_advice":"Disable the meeting processor and remove generated follow-up drafts; keep original meeting notes untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["No unrelated meeting content is read.","Every proposed follow-up cites the meeting source.","The person can edit before task creation."]},"prerequisites":["Meeting notes or transcripts in a readable local source.","A place to write reviewable follow-up tasks."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Turn synced meetings into updated person pages, extracted tasks and organized notes. Use when the user says 'process my meetings', 'catch up my notes', or after Granola/Otter syncs. Also use proactively when unprocessed meetings exist. Not for prepping an upcoming meeting; use `meeting-prep`.","title":"Process Meetings","trade_offs":["Transcript quality controls output quality.","Private meeting material must stay within the host's declared read scope."],"value":"Turns meeting material into people context and follow-up tasks, reducing the chance that decisions or promises disappear after the call."},{"availability":"active","capability_class":"active-skill","capability_id":"product-brief","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","durable-memory-provenance","scoped-agency-human-control"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","project-records"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/product-brief/SKILL.md","summary":"The shipped skill defines the guided extraction, the questions asked in conversation rather than as a form, and the structure of the brief it produces. There is no test of the workflow's own judgement calls; the shipped skill file is the definition of the behaviour, which is why this entry claims support rather than proof."}],"impact_tier":"high","jobs":["keep-projects-on-track"],"portable_brief":{"goal":"Create a guided questioning routine that turns a rough product idea into a written brief a team could execute.","method_outline":["Start from whatever the person has, however rough, without judging it.","Ask two or three questions at a time, conversationally, and wait for answers.","Fill the gaps that matter — who it is for, what problem, what success looks like.","Produce the written brief and keep it where the work will happen."],"rollback_advice":"Delete the generated brief; the questioning changes nothing else, so no other record needs restoring.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Nothing in the brief was supplied by the system rather than the person.","Open questions are listed as open, not resolved by assumption.","The brief is specific enough for someone else to act on."]},"prerequisites":["An idea worth the time; the questioning is guided but not instant.","Somewhere to keep the finished brief next to the work it belongs to."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Extract a product idea through guided questions and generate a PRD. Use when the user says 'write a PRD', 'spec this feature', 'turn this idea into a brief'. Not for a non-product initiative like hiring or partnerships (use `initiative-kickoff` once shipped); not for checking existing projects' status (use `project-health`).","title":"Product Brief","trade_offs":["The brief is only as sharp as the answers given; it will not invent a market, a user or a measure.","It is shaped around product work, so a hire, a partnership or an operational bet is served better elsewhere."],"value":"Draws a half-formed product idea out through questions and leaves a written brief a team could actually build from, instead of an idea that only made sense in one head."},{"availability":"active","capability_class":"active-skill","capability_id":"project-health","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","honest-health-observability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","project-records"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/project-health/SKILL.md","summary":"The shipped skill defines the four checks it makes per project — activity, active tasks, blockers and next-step clarity — and the traffic-light thresholds behind them. There is no test of the workflow's own judgement calls; the shipped skill file is the definition of the behaviour, which is why this entry claims support rather than proof."}],"impact_tier":"high","jobs":["start-each-day-focused"],"portable_brief":{"goal":"Create a fast scan across active projects that reports what is stale, blocked or missing a clear next step.","method_outline":["List the active projects and read when each last changed.","Check whether each has current tasks, a recorded blocker and a clear next action.","Report one line per project with the reason it was flagged.","Keep the output short enough to read in one pass."],"rollback_advice":"Stop running the scan; it reads project material and writes a report, so removing the report leaves the projects exactly as they were.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Every flag names the specific reason it was raised.","Thresholds for stale and blocked are stated, not implied.","A healthy project takes one line, not a paragraph."]},"prerequisites":["Project notes the scan can read.","Some record of recent activity, so going quiet means something."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Scan active projects for status, blockers and next actions. Use when the user says 'how are my projects', 'what's stuck', 'project status'. Also use proactively when projects have gone quiet. Not for writing a spec for a new product idea; use `product-brief`.","title":"Project Health","trade_offs":["Quietness is judged from when project files last changed, which misreads work happening somewhere else.","It is deliberately small: it flags what to look at, it does not diagnose why."],"value":"Answers “what’s stuck?” across every active project in one pass: how long since anything moved, what is blocked, and whether the next step is actually clear."},{"availability":"active","capability_class":"active-skill","capability_id":"prompt-improver","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","compounding-correctability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/prompt-improver/SKILL.md","summary":"The shipped Prompt Improver skill defines the workflow Lens is cataloguing."}],"impact_tier":"medium","jobs":["reflect-and-improve-continuously"],"portable_brief":{"goal":"Rewrite a vague prompt into a rich, structured one, with automatic fallback.","method_outline":["Inspect the current local state and the person's request.","Run the Prompt Improver workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Rewrite a vague prompt into a rich, structured one, with automatic fallback. Use when the user says 'improve this prompt', 'make this prompt better', or hands over a thin instruction. Not for creating a reusable skill; use `create-skill`.","title":"Prompt Improver","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Rewrite a vague prompt into a rich, structured one, with automatic fallback."},{"availability":"active","capability_class":"active-skill","capability_id":"relationship-radar","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","durable-memory-provenance","scoped-agency-human-control"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["relationship-history","skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_relationship_radar_skill.py","summary":"Relationship radar skill behavior is covered in the skill test."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/relationship-radar/SKILL.md","summary":"The shipped skill defines the cold-relationship workflow."}],"impact_tier":"high","jobs":["track-people-and-relationships"],"portable_brief":{"goal":"Create a relationship review that identifies important contacts with stale recent engagement.","method_outline":["Read approved relationship or meeting evidence.","Rank by importance and recency.","Suggest reviewable next actions rather than sending messages."],"rollback_advice":"Remove the radar command or delete its generated suggestions; do not alter source relationship history.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The output names why each person surfaced.","No message is sent automatically.","The person can dismiss or defer a suggestion."]},"prerequisites":["A relationship or meeting history source.","A rule for what counts as important enough to surface."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Spot the relationships going cold — people you were in regular contact with and haven't touched in a while, and important contacts who are slipping — ranked by how stale each has become, so you can reconnect before it costs you. Use when the user says 'who should I reach out to', 'who am I losing touch with', 'who's going cold', 'who needs attention', or during a weekly review. Also use proactively when someone important hasn't come up in a long time. Not for prepping a specific upcoming meeting; use `meeting-prep`. Not for specific promises you owe people; use `commitments`.","title":"Relationship Radar","trade_offs":["Recency signals can miss context the system cannot see.","The person still decides whether to reach out."],"value":"Shows important relationships that are going quiet so the person can reconnect before silence becomes a problem."},{"availability":"active","capability_class":"active-skill","capability_id":"reset","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","compounding-correctability"],"host_adapters":["claude-code","cowork"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/reset/SKILL.md","summary":"The shipped Reset skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Restructure an existing Dex vault for a new role or changed preferences, without losing data.","method_outline":["Inspect the current local state and the person's request.","Run the Reset workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Re-run the setup questions over an existing Dex vault when preferences or setup answers changed, without losing data. Use when the user says 'restructure my Dex', 'redo my setup', 'my pillars are wrong now'. Not for a job or role change; use `change-job` — it runs this same reset plus the people, archive and task passes. Not for first-time setup; use `setup`. Not for just toggling one feature; use `manage-capabilities`.","title":"Reset","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Restructure an existing Dex vault for a new role or changed preferences, without losing data."},{"availability":"active","capability_class":"active-skill","capability_id":"review","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","compounding-correctability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/review/SKILL.md","summary":"The shipped Review skill defines the workflow Lens is cataloguing."}],"impact_tier":"niche","jobs":["reflect-and-improve-continuously"],"portable_brief":{"goal":"Keeps the old review command working by handing it directly to the current daily review workflow.","method_outline":["Inspect the current local state and the person's request.","Run the Review workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Deprecation alias for `daily-review`. The end-of-day review was renamed; `/review` now redirects to `daily-review` and will be removed after one release. Use when the user types `/review` out of habit — hand straight off to `daily-review`, which owns end-of-day review and learning capture. Not for running the review here; use `daily-review`.","title":"Review","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Keeps the old review command working by handing it directly to the current daily review workflow."},{"availability":"active","capability_class":"active-skill","capability_id":"save-insight","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","compounding-correctability","context-orientation"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["durable-memory-store","skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_learning_capture_command_name.py","summary":"Learning capture command naming is pinned by tests."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/save-insight/SKILL.md","summary":"The shipped skill defines the reusable-learning capture flow."}],"impact_tier":"high","jobs":["reflect-and-improve-continuously"],"portable_brief":{"goal":"Create a lightweight learning capture routine for reusable lessons from completed work.","method_outline":["Ask what changed future behavior.","Store only the reusable rule and source context.","Prefer small scoped memories over broad summaries."],"rollback_advice":"Delete or archive the saved learning entry; keep original project records separate.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The saved item has a clear reuse condition.","It does not contain secrets or raw private material.","Future work can cite where it came from."]},"prerequisites":["A durable memory or notes store.","A review habit for deciding what is worth keeping."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Capture a reusable learning from completed work so future similar work is easier. Use when the user says 'save this learning', 'capture this insight', or finishes something tricky. Also use proactively after non-routine work. Not for recording a *decision* and its rationale; use `decision-log`.","title":"Save Insight","trade_offs":["Low-quality memories can clutter future context.","The person or system needs a rule for when to save learning."],"value":"Turns a learning from completed work into durable context future agents can reuse instead of rediscovering it."},{"availability":"active","capability_class":"active-skill","capability_id":"scrape","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","scoped-agency-human-control"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/scrape/SKILL.md","summary":"The shipped Scrape skill defines the workflow Lens is cataloguing."}],"impact_tier":"niche","jobs":["keep-projects-on-track"],"portable_brief":{"goal":"Scrape web pages via Scrapling.","method_outline":["Inspect the current local state and the person's request.","Run the Scrape workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available.","Access to the relevant local app or external service, authorized by the person."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Scrape web pages via Scrapling — stealth fetching, anti-bot bypass, CSS selectors, no API key. Use when the user says 'scrape', 'pull data from this URL', 'extract from this site'. Not for meaning-based search of the user's own vault; use `enable-semantic-search`.","title":"Scrape","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","External connections remain subject to the provider's availability and authorization."],"value":"Scrape web pages via Scrapling."},{"availability":"active","capability_class":"active-skill","capability_id":"setup","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","compounding-correctability"],"host_adapters":["claude-code","cowork"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/setup/SKILL.md","summary":"The shipped Setup skill defines the workflow Lens is cataloguing."}],"impact_tier":"core","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Run first-time Dex onboarding: build the vault structure, capture the user profile and configure MCPs.","method_outline":["Inspect the current local state and the person's request.","Run the Setup workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Run first-time Dex onboarding: build the vault structure, capture the user profile and configure MCPs. Use when `System/.onboarding-complete` is absent or the user says 'set up Dex', 'start onboarding'. Not for the post-onboarding tour; use `getting-started`. Not for a mid-life role change; use `reset`.","title":"Setup","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Run first-time Dex onboarding: build the vault structure, capture the user profile and configure MCPs."},{"availability":"active","capability_class":"active-skill","capability_id":"skill-score","changed_in":[],"compatibility":{"foundation_capabilities":["safe-change-recovery","compounding-correctability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/skill-score/SKILL.md","summary":"The shipped Skill Score skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["evolve-the-system-itself"],"portable_brief":{"goal":"Grade a Dex skill against the shape-aware quality rubric and report a ship/revise/no verdict with the exact fixes.","method_outline":["Inspect the current local state and the person's request.","Run the Skill Score workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available."],"release_provenance":"core-release","since_release":"1.69.0","summary":"Grade a Dex skill against the shape-aware quality rubric and report a ship/revise/no verdict with the exact fixes. Use when you finish writing or editing a skill, when create-skill hands off a new package, before shipping a first-party skill, or when the user asks \"is this skill any good / will it fire / score my skill\". Also use proactively right after any SKILL.md is created or its description changes. Not for authoring a new skill from scratch (use create-skill) or fixing broken YAML frontmatter alone (create-skill's validator does that); skill-score judges architecture and routing, not just format.","title":"Skill Score","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","The workflow can guide and verify a bounded action, but cannot guarantee the underlying system is healthy."],"value":"Grade a Dex skill against the shape-aware quality rubric and report a ship/revise/no verdict with the exact fixes."},{"availability":"active","capability_class":"active-skill","capability_id":"things-setup","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","scoped-agency-human-control"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/things-setup/SKILL.md","summary":"The shipped Things Setup skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["manage-tasks-reliably"],"portable_brief":{"goal":"Connect Things 3 (macOS only) so Dex reads and updates your Things tasks.","method_outline":["Inspect the current local state and the person's request.","Run the Things Setup workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available.","Access to the relevant local app or external service, authorized by the person."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Connect Things 3 (macOS only) so Dex reads and updates your Things tasks. Use when the user says 'I use Things', 'sync my Things inbox', or pastes a `things://` link. Not for Todoist (`todoist-setup`) or Trello (`trello-setup`).","title":"Things Setup","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","External connections remain subject to the provider's availability and authorization."],"value":"Connect Things 3 (macOS only) so Dex reads and updates your Things tasks."},{"availability":"active","capability_class":"active-skill","capability_id":"todoist-setup","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","scoped-agency-human-control"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/todoist-setup/SKILL.md","summary":"The shipped Todoist Setup skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["manage-tasks-reliably"],"portable_brief":{"goal":"Connect Todoist so Dex reads and updates your Todoist tasks two ways.","method_outline":["Inspect the current local state and the person's request.","Run the Todoist Setup workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available.","Access to the relevant local app or external service, authorized by the person."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Connect Todoist so Dex reads and updates your Todoist tasks two ways. Use when the user says 'I use Todoist', 'sync Todoist', or pastes a todoist.com link. Not for Things 3 (`things-setup`) or Trello (`trello-setup`); not for Jira tickets (`atlassian-setup`).","title":"Todoist Setup","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","External connections remain subject to the provider's availability and authorization."],"value":"Connect Todoist so Dex reads and updates your Todoist tasks two ways."},{"availability":"active","capability_class":"active-skill","capability_id":"trello-setup","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","scoped-agency-human-control"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/trello-setup/SKILL.md","summary":"The shipped Trello Setup skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["manage-tasks-reliably"],"portable_brief":{"goal":"Connect Trello so Dex reads your boards and manages cards.","method_outline":["Inspect the current local state and the person's request.","Run the Trello Setup workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available.","Access to the relevant local app or external service, authorized by the person."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Connect Trello so Dex reads your boards and manages cards. Use when the user says 'I use Trello', 'my Trello board', or pastes a trello.com link. Not for Todoist (`todoist-setup`) or Things (`things-setup`).","title":"Trello Setup","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","External connections remain subject to the provider's availability and authorization."],"value":"Connect Trello so Dex reads your boards and manages cards."},{"availability":"active","capability_class":"active-skill","capability_id":"triage","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","durable-memory-provenance","scoped-agency-human-control"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","durable-goals-or-tasks","task-or-note-store"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/triage/SKILL.md","summary":"The shipped skill defines the routing workflow, the index it builds of existing projects and people, and the way current priorities raise confidence in a destination. There is no test of the workflow's own judgement calls; the shipped skill file is the definition of the behaviour, which is why this entry claims support rather than proof."}],"impact_tier":"core","jobs":["manage-tasks-reliably"],"portable_brief":{"goal":"Create a routing pass that clears loose captures into the right home using the person's current priorities.","method_outline":["Read current priorities and goals before touching the pile.","Build an index of the existing projects, people and areas that could receive an item.","Route each item to its best home, and leave anything genuinely unclear untouched.","Keep the decision per item fast; this is a clearing pass, not an analysis."],"rollback_advice":"Move the routed files back to the capture folder; the routing only relocates and links items, so their content is unchanged.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Items matching current priorities surface first.","Nothing is filed to a destination the person cannot recognise.","Unclear items are left in place rather than moved somewhere plausible."]},"prerequisites":["A capture folder or set of notes where loose items actually accumulate.","Current priorities or goals, so routing follows what matters now rather than in general."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Route orphaned inbox files and pull scattered `- [ ]` tasks into the right project/person/goal using current priorities. Use when the user says 'clean up my inbox', 'triage', 'sort out these notes'. Also use proactively when `00-Inbox/` is piling up. Not for updating notes from meetings; use `process-meetings`.","title":"Triage","trade_offs":["Routing is a fast suggestion rather than a considered judgement, and is meant to be reviewed.","An item with no clear home is left where it is rather than filed somewhere merely plausible."],"value":"Clears the pile-up: loose files and stray unticked boxes get routed to the project, person or goal they belong to, weighted by what the person said matters this week."},{"availability":"active","capability_class":"active-skill","capability_id":"week-plan","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","durable-memory-provenance","scoped-agency-human-control"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","durable-goals-or-tasks"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_work_server_weekly_priority_creation.py","summary":"Weekly priority creation is covered through the Work MCP path."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/week-plan/SKILL.md","summary":"The shipped skill defines the weekly planning routine."}],"impact_tier":"high","jobs":["start-each-day-focused"],"portable_brief":{"goal":"Create a weekly planning routine that maps goals and commitments to a bounded set of priorities.","method_outline":["Read goals, open tasks and calendar pressure.","Select a short priority set for the week.","Expose uncertainty instead of forcing a fake complete plan."],"rollback_advice":"Remove the weekly planning command or its scheduled reminder; preserve the underlying tasks and goals.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The plan names priorities, not a generic task dump.","Capacity limits are visible in the output."]},"prerequisites":["Some durable goal or task record the host can read.","A cadence for reviewing the plan."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Set the week's priorities against goals, calendar shape and task effort. Use when the user says 'plan my week', 'what should I focus on this week', or on their first working day. Also use proactively at the first session of a new week. Not for reviewing the week just past; use `week-review`.","title":"Week Plan","trade_offs":["A weekly plan can become stale mid-week unless the person revisits it.","It depends on honest capacity data."],"value":"Turns goals, capacity and open work into a weekly focus plan, so repeated work starts from priorities rather than a blank chat."},{"availability":"active","capability_class":"active-skill","capability_id":"week-review","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","honest-health-observability","compounding-correctability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","durable-goals-or-tasks"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_instruction_honesty.py","summary":"A dedicated test pins that the weekly review reads the person's own configured working week and lands on their last working day, rather than assuming everyone finishes on a Friday."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_skill_delegated_gathering.py","summary":"Covers the paired gathering instructions the weekly review depends on, so the bulk reading step cannot be orphaned by a later edit."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/week-review/SKILL.md","summary":"The shipped skill defines the weekly review, its insistence on concrete measures over percentages, and the goal and pattern discussion that stays with the person."}],"impact_tier":"high","jobs":["start-each-day-focused","reflect-and-improve-continuously"],"portable_brief":{"goal":"Create a weekly review that reports concrete finished work and honest gaps instead of a synthetic progress score.","method_outline":["Gather the week's priorities, completed work and meeting record first.","Report what finished, what did not, and what changed — in countable terms.","Surface repeating patterns as questions for the person rather than verdicts.","Confirm next week's priorities with the person before recording them."],"rollback_advice":"Stop running the routine and delete the generated weekly summaries; priorities and goals live in their own records and are left as they were.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["No percentage or score appears that the underlying data cannot support.","Unfinished work is named plainly rather than folded into an average.","The review runs on the person's own last working day, not a fixed one."]},"prerequisites":["A record of the week's priorities or goals to review against.","The person's own working week, so the review lands on their last working day rather than an assumed Friday."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Review the week with concrete accomplishments (not fake percentages), pattern detection and goal tracking. Use when the user says 'how was my week', 'week review', or it's their last working day. Also use proactively when a week's priorities are largely resolved. Not for planning the coming week; use `week-plan`.","title":"Week Review","trade_offs":["An honest review depends on the week having been written down as it happened.","The patterns it names are prompts for the person's judgement, not conclusions about them."],"value":"Reviews the week in concrete finished work and the patterns behind it, and deliberately refuses to invent a completion percentage that would make a bad week look measured."},{"availability":"active","capability_class":"active-skill","capability_id":"weekly-reflection","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","scoped-agency-human-control","compounding-correctability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","durable-memory-store"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_adoption_effective_behavior.py","summary":"Real behaviour coverage of how this capability is switched on and off again: the test adopts it through Dex's live change system, proves the change can be rewound exactly, and proves a rewind refuses rather than overwrite a file the person has since edited. That covers the switch-on path, not the reflection conversation itself."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/weekly-reflection/SKILL.md","summary":"The shipped skill defines the three questions, the one-at-a-time pacing, and the rule against turning a feeling into a task or forcing a positive lesson."}],"impact_tier":"high","jobs":["reflect-and-improve-continuously"],"portable_brief":{"goal":"Create a short weekly reflection on how work felt, kept separate from any measure of what was produced.","method_outline":["Ask what gave energy, one question at a time, and reflect the answer back.","Ask what drained energy, and offer any pattern as a possibility rather than a diagnosis.","Ask for one small, observable change the person controls.","Offer to keep the answers; accept no as an answer."],"rollback_advice":"Delete the saved reflection entry; entries are appended, so earlier writing is untouched and removal restores the previous state.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The week is not graded, scored or turned into a lesson.","The chosen change is small enough to actually happen.","Nothing is saved that the person did not agree to save."]},"prerequisites":["A few quiet minutes; this is the one thing that cannot be done on the person's behalf.","Somewhere private to keep the answers, or the choice not to keep them at all."],"release_provenance":"core-release","since_release":"1.80.0","summary":"A short guided reflection on what energized you, what drained you, and one change for next week. Use when the user wants to reflect on how work *felt*, not what got done — 'reflect on my week', 'what's draining me'. Not for progress-and-goals tracking; use `week-review`.","title":"Weekly Reflection","trade_offs":["It deliberately does not measure or score the week, which some people will want instead.","Reflection compounds only if the answers are kept and read again later."],"value":"Three questions about how the week felt — what gave energy, what took it, one thing to change — kept deliberately separate from the record of what got done."},{"availability":"active","capability_class":"active-skill","capability_id":"wispr-setup","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","privacy-minimal-disclosure"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/wispr-setup/SKILL.md","summary":"The shipped Wispr Setup skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["capture-without-friction"],"portable_brief":{"goal":"Connect Wispr Flow so meeting captures arrive in the vault on their own.","method_outline":["Inspect the current local state and the person's request.","Run the Wispr Setup workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available.","Access to the relevant local app or external service, authorized by the person."],"release_provenance":"core-release","since_release":"1.97.0","summary":"Connect Wispr Flow so meeting captures arrive in your vault on their own. Use when the user says 'connect Wispr', 'set up Wispr Flow', 'my Wispr meetings aren't in Dex'. Not for Granola; use `granola-setup`. Not for processing meetings already in the vault; use `process-meetings`.","title":"Wispr Setup","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","External connections remain subject to the provider's availability and authorization."],"value":"Connect Wispr Flow so meeting captures arrive in the vault on their own."},{"availability":"active","capability_class":"active-skill","capability_id":"xray","changed_in":[],"compatibility":{"foundation_capabilities":["honest-health-observability","context-orientation","compounding-correctability"],"host_adapters":["claude-code","cowork"],"host_requirements":["skills-directory","local-diagnostics"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/xray/SKILL.md","summary":"The shipped skill defines the default mode that explains the current conversation, the deeper modes on how the system is built and how to extend it, and the show-the-work-then-explain-why structure. There is no test of the workflow's own judgement calls; the shipped skill file is the definition of the behaviour, which is why this entry claims support rather than proof."}],"impact_tier":"high","jobs":["reflect-and-improve-continuously"],"portable_brief":{"goal":"Explain the mechanics of what the system just did, using the current conversation as the teaching material.","method_outline":["Identify what was read, written, and which tools ran in this conversation.","Explain why each step was necessary, in the person's own terms.","Connect each concrete step to the underlying idea it demonstrates.","End with what the person could change or extend themselves."],"rollback_advice":"Stop offering the explanation; it only reads and describes the conversation, so nothing in the person's system needs to be undone.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Every step described actually happened in this conversation.","Nothing is presented as a health verdict about the system.","The explanation would make sense to someone who did not build it."]},"prerequisites":["A conversation that has actually done something worth explaining.","A host that can report the steps it took during that conversation."],"release_provenance":"core-release","since_release":"1.80.0","summary":"Explain what just happened under the hood — the context, MCP tools, and hooks behind Dex's last response — as AI education. Use when the user says 'how did you do that', 'what just happened', 'explain the mechanics'. Not for a system health check; use `dex-doctor`.","title":"Xray","trade_offs":["It explains what happened; it is not a health check and will not say whether anything is broken.","The explanation is only as accurate as what the host exposes about its own run."],"value":"Explains what the system just did and why — which files it read, which tools ran, what was loaded before the conversation even started — so the person learns their own setup instead of trusting it blindly."},{"availability":"active","capability_class":"active-skill","capability_id":"zoom-setup","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","privacy-minimal-disclosure"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/zoom-setup/SKILL.md","summary":"The shipped Zoom Setup skill defines the workflow Lens is cataloguing."}],"impact_tier":"high","jobs":["capture-without-friction"],"portable_brief":{"goal":"Connect Zoom for meeting recordings, scheduling and transcript context.","method_outline":["Inspect the current local state and the person's request.","Run the Zoom Setup workflow within its documented safety boundary.","Verify the intended result and report anything still needing attention."],"rollback_advice":"Disable or remove the skill if it is not useful; reverse any external configuration through the same provider-controlled setup path.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The workflow reports what it found or changed.","The person keeps control over any consequential action."]},"prerequisites":["An installed Dex release with its skills directory available.","Access to the relevant local app or external service, authorized by the person."],"release_provenance":"core-release","since_release":"1.20.1","summary":"Connect the official Zoom for Claude connector for meeting recordings, transcripts, AI summaries, cloud-recording lists and Zoom Chat/Canvas search. Use when the user says 'connect Zoom', 'pull my Zoom recordings', 'search my Zoom meetings'. Not for Granola-sourced notes; use `granola-setup`. Not for Teams; use `ms-teams-setup`.","title":"Zoom Setup","trade_offs":["Results depend on the current local data and permissions the skill can inspect.","External connections remain subject to the provider's availability and authorization."],"value":"Connect Zoom for meeting recordings, scheduling and transcript context."},{"availability":"dormant","capability_class":"active-skill","capability_id":"account-plan","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","durable-memory-provenance","scoped-agency-human-control"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_mature_skill_amendments.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/sales/account-plan/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track","track-people-and-relationships"],"portable_brief":{"goal":"Builds a sourced account plan that keeps goals, relationships, risks and next moves in one reviewable place.","method_outline":["Collect dated account facts with per-field provenance.","Separate knowns, unknowns and recommendations.","Preview any saved plan and read it back after confirmation."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Important claims cite their source and date.","No account write occurs without an exact confirmed preview."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Create or update strategic account plan","title":"Account Plan","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Builds a sourced account plan that keeps goals, relationships, risks and next moves in one reviewable place."},{"availability":"dormant","capability_class":"active-skill","capability_id":"call-prep","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","privacy-minimal-disclosure","durable-memory-provenance"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_mature_skill_amendments.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/sales/call-prep/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track","capture-without-friction","track-people-and-relationships"],"portable_brief":{"goal":"Turns current relationship, account and meeting evidence into a concise call brief without inventing intent.","method_outline":["Time-box and date the approved inputs.","Surface objectives, context and honest unknowns.","Draft questions and a read-only brief."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Every material point has a source or an unknown label.","The brief does not claim another person's intent."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Prepare a sourced, read-only brief for a person or account call","title":"Call Prep","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Turns current relationship, account and meeting evidence into a concise call brief without inventing intent."},{"availability":"dormant","capability_class":"active-skill","capability_id":"deal-review","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","honest-health-observability","durable-memory-provenance"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_mature_skill_amendments.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/sales/deal-review/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track","manage-tasks-reliably"],"portable_brief":{"goal":"Reviews deal evidence, value coverage and dated activity so pipeline attention goes to the right places.","method_outline":["Read canonical deal values and activity dates.","Keep unchecked and unknown-value deals visible.","Calculate only over a disclosed denominator."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Totals exclude unknown values instead of treating them as zero.","Coverage names checked and unchecked deals."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Review active deals from canonical activity evidence and surface unknowns","title":"Deal Review","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Reviews deal evidence, value coverage and dated activity so pipeline attention goes to the right places."},{"availability":"dormant","capability_class":"active-skill","capability_id":"pipeline-health","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","honest-health-observability","scoped-agency-human-control"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_mature_skill_amendments.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/sales/pipeline-health/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track"],"portable_brief":{"goal":"Checks pipeline coverage, stage movement and forecast assumptions against configured sales definitions.","method_outline":["Confirm stages, probabilities, targets and period.","Distinguish missing data from zero.","Show sourced benchmarks, denominators and arithmetic."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Every percentage can be recomputed from shown inputs.","Missing configuration returns an unknown result."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Analyze pipeline coverage and forecast confidence from configured sales definitions","title":"Pipeline Health","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Checks pipeline coverage, stage movement and forecast assumptions against configured sales definitions."},{"availability":"dormant","capability_class":"active-skill","capability_id":"customer-intel","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","durable-memory-provenance","privacy-minimal-disclosure"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_mature_skill_amendments.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/product/customer-intel/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track"],"portable_brief":{"goal":"Synthesizes dated customer evidence into traceable themes while preserving quotes, contradictions and weak-signal limits.","method_outline":["Build a source-ID and date ledger.","Deduplicate repeated evidence without dropping provenance.","Return insufficient evidence when the record cannot support a theme."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Quotes remain faithful to their source.","Contradictory evidence stays visible."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Synthesize recent customer feedback and pain points","title":"Customer Intel","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Synthesizes dated customer evidence into traceable themes while preserving quotes, contradictions and weak-signal limits."},{"availability":"dormant","capability_class":"active-skill","capability_id":"feature-decision","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","durable-memory-provenance","scoped-agency-human-control"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_mature_skill_amendments.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/product/feature-decision/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track"],"portable_brief":{"goal":"Frames an evidence-backed feature recommendation while keeping the human decision and prior record intact.","method_outline":["Gather outcomes, constraints, effort evidence and unknowns.","Compare alternatives and make a labelled recommendation.","Preview a proposed record and preserve or explicitly supersede earlier decisions."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The recommendation is not presented as an accepted decision.","Any persisted record reads back to the confirmed preview."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Framework for making feature prioritization decisions","title":"Feature Decision","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Frames an evidence-backed feature recommendation while keeping the human decision and prior record intact."},{"availability":"dormant","capability_class":"active-skill","capability_id":"roadmap","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","honest-health-observability","durable-memory-provenance"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_mature_skill_amendments.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/product/roadmap/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track","start-each-day-focused"],"portable_brief":{"goal":"Builds a roadmap view from canonical dated status evidence, with disclosed status coverage and honest unknowns.","method_outline":["Read canonical goals, initiatives and status dates.","Keep unknown distinct from blocked.","Reconcile status counts over a declared cohort and cite the evidence."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Every status has a source and freshness date.","Excluded or unknown work is shown beside the denominator."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Review roadmap status, evidence freshness, blockers, and alignment","title":"Roadmap","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Builds a roadmap view from canonical dated status evidence, with disclosed status coverage and honest unknowns."},{"availability":"dormant","capability_class":"active-skill","capability_id":"audience-intel","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","durable-memory-provenance","privacy-minimal-disclosure"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_role_skill_contracts.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/marketing/audience-intel/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track"],"portable_brief":{"goal":"Finds evidence-backed audience patterns without turning repeated anecdotes into invented personas.","method_outline":["Time-box and deduplicate the evidence ledger.","Compare segments, quotes and contradictions.","Label observed patterns separately from inference."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Every audience claim cites quote, source and date.","Insufficient evidence produces an honest limited result."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Use when synthesizing dated customer conversations, feedback, or behavior evidence into audience or persona insight, especially when sources are numerous, repeated, time-bounded, or disagree.","title":"Audience Intel","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Finds evidence-backed audience patterns without turning repeated anecdotes into invented personas."},{"availability":"dormant","capability_class":"active-skill","capability_id":"campaign-review","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","compounding-correctability","context-orientation"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_role_skill_contracts.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/marketing/campaign-review/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track","reflect-and-improve-continuously"],"portable_brief":{"goal":"Turns campaign goals, comparable actuals and attribution limits into reusable learning.","method_outline":["Establish the goal, baseline and comparable period.","Normalize target and actual metrics.","Separate correlation, causation, hypotheses and missing data."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Every result cites its source and denominator.","Any saved review is previewed, confirmed and read back."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Use when a completed or in-flight marketing campaign needs an evidence-backed review of its goal, baseline, targets, actuals, or learnings.","title":"Campaign Review","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Turns campaign goals, comparable actuals and attribution limits into reusable learning."},{"availability":"dormant","capability_class":"active-skill","capability_id":"content-calendar","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","honest-health-observability","scoped-agency-human-control"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_role_skill_contracts.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/marketing/content-calendar/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track","start-each-day-focused"],"portable_brief":{"goal":"Builds a dated content inventory that separates commitments from ideas and exposes collisions, gaps and undated work.","method_outline":["Define the period, timezone and canonical status evidence.","Detect duplicate items and date collisions.","Report committed, idea and undated buckets separately."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["No date, status or coverage percentage is inferred.","Any calendar change requires a confirmed preview."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Use when inventorying content commitments, ideas, and schedule coverage for a specified period and timezone.","title":"Content Calendar","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Builds a dated content inventory that separates commitments from ideas and exposes collisions, gaps and undated work."},{"availability":"dormant","capability_class":"active-skill","capability_id":"messaging-audit","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","compounding-correctability","durable-memory-provenance"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_role_skill_contracts.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/marketing/messaging-audit/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track"],"portable_brief":{"goal":"Compares current messaging with a cited approved baseline and distinguishes drift from intentional variation.","method_outline":["Select and date the canonical baseline.","Normalize terms by audience and channel.","Classify contradictions, intentional variants, stale copy and unsupported claims."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The source-date matrix can be traced to each finding.","No copy is changed without human confirmation."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Use when comparing product or campaign messaging across content against a cited canonical baseline and its supporting evidence.","title":"Messaging Audit","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Compares current messaging with a cited approved baseline and distinguishes drift from intentional variation."},{"availability":"dormant","capability_class":"active-skill","capability_id":"architecture-decision","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","compounding-correctability","scoped-agency-human-control"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_role_skill_contracts.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/engineering/architecture-decision/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track"],"portable_brief":{"goal":"Compares architecture options and records an accepted choice only after the named human authority decides.","method_outline":["Collect constraints, evidence and alternatives.","Compare consequences and trade-offs.","Keep proposed, accepted and superseded ADR states distinct."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The record names decision authority and sources.","History is appended or superseded, never silently rewritten."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Use when a system or design choice needs an evidence-backed ADR, explicit alternatives and trade-offs, or review of proposed, accepted, or superseded decision history.","title":"Architecture Decision","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Compares architecture options and records an accepted choice only after the named human authority decides."},{"availability":"dormant","capability_class":"active-skill","capability_id":"incident-review","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","compounding-correctability","honest-health-observability","safe-change-recovery"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_role_skill_contracts.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/engineering/incident-review/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track","evolve-the-system-itself","reflect-and-improve-continuously"],"portable_brief":{"goal":"Creates a blameless, evidence-led incident review with a cited timeline and verifiable prevention work.","method_outline":["Build a timezone-aware fact timeline.","Separate facts, hypotheses and contradictions.","Assign prevention actions only from confirmed ownership and proof."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Unknown causes and owners remain explicit.","Follow-up checks name evidence of prevention."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Use when a service or operational incident needs a cited, timezone-aware timeline, blameless learning review, or prevention actions with accountable follow-up.","title":"Incident Review","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Creates a blameless, evidence-led incident review with a cited timeline and verifiable prevention work."},{"availability":"dormant","capability_class":"active-skill","capability_id":"tech-debt","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","honest-health-observability","scoped-agency-human-control"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_role_skill_contracts.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/engineering/tech-debt/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track","evolve-the-system-itself","start-each-day-focused"],"portable_brief":{"goal":"Creates a deduplicated, evidence-linked technical-debt inventory with honest risk, effort and confidence.","method_outline":["Link code or operational evidence and first-seen dates.","Separate impact, effort, confidence and cost of delay.","Escalate security evidence through the approved path."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Age is never guessed from an undated mention.","Prioritisation retains its evidence and uncertainty."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Use when technical debt needs linked code or operational evidence, deduplication, first-seen provenance, or impact, effort, confidence, and cost-of-delay prioritization.","title":"Tech Debt","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Creates a deduplicated, evidence-linked technical-debt inventory with honest risk, effort and confidence."},{"availability":"dormant","capability_class":"active-skill","capability_id":"board-prep","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","privacy-minimal-disclosure","scoped-agency-human-control","honest-health-observability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_role_skill_contracts.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/finance/board-prep/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track"],"portable_brief":{"goal":"Builds a reconciled, dated financial narrative and question set as a draft for authorised human review.","method_outline":["Set the as-of date, source hierarchy, unit and currency.","Reconcile actuals and expose forecast limits.","Draft the narrative and likely questions without approving or sending it."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Totals reconcile to cited sources.","Unknowns and forecast assumptions remain visible."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Use when preparing a finance draft for a board or leadership review from dated actuals, budgets, forecasts, cash data, and decision context. Not for detailed line-item variance analysis; use variance-analysis.","title":"Board Prep","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Builds a reconciled, dated financial narrative and question set as a draft for authorised human review."},{"availability":"dormant","capability_class":"active-skill","capability_id":"close-status","changed_in":[],"compatibility":{"foundation_capabilities":["honest-health-observability","durable-memory-provenance","context-orientation"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_role_skill_contracts.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/finance/close-status/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track","manage-tasks-reliably"],"portable_brief":{"goal":"Shows month-end close progress, blockers and critical path from the authoritative checklist rather than guessed status.","method_outline":["Load the approved checklist and as-of date.","Count complete items over the explicit denominator.","Derive dependencies and critical path while separating blocked, unknown and not started."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Completion can be recomputed from counted evidence.","No missing state becomes complete by inference."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Use when reporting the evidence-backed status of a named month-end or quarter-end close, its blockers, counted completion, and dependency path. Not for explaining budget variances; use variance-analysis.","title":"Close Status","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Shows month-end close progress, blockers and critical path from the authoritative checklist rather than guessed status."},{"availability":"dormant","capability_class":"active-skill","capability_id":"variance-analysis","changed_in":[],"compatibility":{"foundation_capabilities":["durable-memory-provenance","honest-health-observability","context-orientation"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_role_skill_contracts.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/finance/variance-analysis/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track","reflect-and-improve-continuously"],"portable_brief":{"goal":"Explains reconciled actual-versus-plan differences with validated formulas, materiality and honest causal limits.","method_outline":["Normalize units, signs and comparable periods.","Validate formulas, materiality and reconciled totals.","Label timing or permanent causes as evidenced, hypothesised or unknown."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Shown arithmetic reproduces each variance.","Unsupported causal explanations remain hypotheses."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Use when explaining a dated actual-versus-budget or actual-versus-forecast variance for a comparable finance period. Not for tracking close checklist completion; use close-status.","title":"Variance Analysis","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Explains reconciled actual-versus-plan differences with validated formulas, materiality and honest causal limits."},{"availability":"dormant","capability_class":"active-skill","capability_id":"expansion-opportunities","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","durable-memory-provenance","scoped-agency-human-control","privacy-minimal-disclosure"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_role_skill_contracts.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/customer-success/expansion-opportunities/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track","track-people-and-relationships"],"portable_brief":{"goal":"Finds account expansion hypotheses while keeping customer evidence, expressed need, fit and speculation separate.","method_outline":["Gather dated account evidence and expressed needs.","Assess fit without inventing value or likelihood.","Keep CRM changes, outreach and commercial action behind human approval."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Every hypothesis shows its evidence and confidence.","No recommendation becomes pipeline or customer communication automatically."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Use when reviewing customer accounts for evidence-backed expansion hypotheses based on current usage, product fit, and expressed needs. Not for renewal strategy or negotiation; use renewal-prep.","title":"Expansion Opportunities","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Finds account expansion hypotheses while keeping customer evidence, expressed need, fit and speculation separate."},{"availability":"dormant","capability_class":"active-skill","capability_id":"health-score","changed_in":[],"compatibility":{"foundation_capabilities":["honest-health-observability","context-orientation","durable-memory-provenance"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_role_skill_contracts.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/customer-success/health-score/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track","track-people-and-relationships"],"portable_brief":{"goal":"Applies a configured account-health rubric to dated inputs, or returns not scored when honest scoring is impossible.","method_outline":["Confirm the scoring rubric and data freshness.","Calculate only from permitted dated inputs.","Keep unknown distinct from red or green and review signals when not scored."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["The score can be reproduced from the configured rubric.","Silence alone never becomes churn risk."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Use when reviewing customer-account health with a configured scoring rubric and dated inputs, or when reporting why a portfolio cannot yet be scored. Not for finding expansion opportunities; use expansion-opportunities.","title":"Health Score","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Applies a configured account-health rubric to dated inputs, or returns not scored when honest scoring is impossible."},{"availability":"dormant","capability_class":"active-skill","capability_id":"renewal-prep","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","durable-memory-provenance","scoped-agency-human-control","privacy-minimal-disclosure"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_role_skill_contracts.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/customer-success/renewal-prep/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track","track-people-and-relationships"],"portable_brief":{"goal":"Prepares a sourced renewal brief from contract, ARR, dated outcomes and explicit risks without making commercial commitments.","method_outline":["Cite contract, ARR, renewal date and outcome evidence.","Separate risk from unknown and recommendations from decisions.","Keep pricing and customer communication human-authorised."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Every value claim has a dated source.","The brief sends nothing and changes no commercial record."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Use when preparing an evidence-backed brief for an upcoming customer renewal from contract, ARR, dated outcomes, usage, and risk evidence. Not for health scoring; use health-score.","title":"Renewal Prep","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Prepares a sourced renewal brief from contract, ARR, dated outcomes and explicit risks without making commercial commitments."},{"availability":"dormant","capability_class":"active-skill","capability_id":"metrics-review","changed_in":[],"compatibility":{"foundation_capabilities":["honest-health-observability","context-orientation","durable-memory-provenance"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_role_skill_contracts.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/operations/metrics-review/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track","evolve-the-system-itself"],"portable_brief":{"goal":"Reviews comparable operational metrics and validates anomalies before interpreting performance.","method_outline":["Define each metric, unit, window, source, baseline and target.","Check freshness and comparability.","Validate anomalies before offering a non-causal interpretation."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Every number has a definition and source date.","Missing or incomparable data stays unknown."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Use when a business or operational metric needs definition and source provenance checked, freshness and comparability validated, or an anomaly reviewed against a baseline and target.","title":"Metrics Review","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Reviews comparable operational metrics and validates anomalies before interpreting performance."},{"availability":"dormant","capability_class":"active-skill","capability_id":"process-audit","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","honest-health-observability","compounding-correctability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_role_skill_contracts.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/operations/process-audit/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track","reflect-and-improve-continuously"],"portable_brief":{"goal":"Maps a bounded process from observed samples, then tests bottleneck improvements with measurable outcomes.","method_outline":["Define process start, end, owner and outcome.","Sample observed queues, handoffs, rework and failures.","Propose a controlled experiment with a success measure."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Claims disclose the observed sample and limits.","An experiment is not called successful before measurement."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Use when an operational process needs its start, end, owner, outcome, representative sample, measured queues or handoffs, bottleneck evidence, or controlled improvement experiment made explicit.","title":"Process Audit","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Maps a bounded process from observed samples, then tests bottleneck improvements with measurable outcomes."},{"availability":"dormant","capability_class":"active-skill","capability_id":"design-review","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","durable-memory-provenance","scoped-agency-human-control"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_role_skill_contracts.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/design/design-review/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track"],"portable_brief":{"goal":"Prepares or documents a design review with versioned artifacts, traceable requirements and explicit decision authority.","method_outline":["Choose preparation or documentation mode.","Identify artifact versions, requirements and evidence.","Keep recommendations distinct from authorised decisions."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Every finding points to a versioned artifact and requirement.","A decision record names who accepted it."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Use when a design artifact or revision needs a prepared review packet or an evidence-backed record of a review outcome, requirements, and decisions.","title":"Design Review","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Prepares or documents a design review with versioned artifacts, traceable requirements and explicit decision authority."},{"availability":"dormant","capability_class":"active-skill","capability_id":"design-system-audit","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","honest-health-observability","compounding-correctability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","role-source-access","capability-adoption"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":false,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_role_skill_contracts.py","summary":"The shipped instructions meet the reviewed role-specific evidence and depth contract."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_lifecycle_official_capabilities.py","summary":"Lifecycle tests support adoption, replan and rewind of official capability payloads."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/design/design-system-audit/SKILL.md","summary":"The official lifecycle catalogue pins this dormant role skill to the release bytes."}],"impact_tier":"medium","jobs":["keep-projects-on-track","evolve-the-system-itself"],"portable_brief":{"goal":"Measures design-system use against canonical components and tokens with a declared sample and denominator.","method_outline":["Select canonical components, tokens and a representative sample.","Calculate adoption over a disclosed denominator.","Separate accidental deviations from intentional exceptions."],"rollback_advice":"Rewind or remove the adopted role skill through the capability manager; keep the person's source material and prior records untouched.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Coverage and adoption can be recomputed from shown inputs.","Exceptions retain owner, reason and evidence."]},"prerequisites":["Adopt this dormant role skill through Dex's capability manager before using it.","Give the host access only to the approved role sources named by the workflow."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Use when assessing use of named design-system components or tokens across a defined sample of product artifacts, including adoption and deviation questions.","title":"Design System Audit","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Measures design-system use against canonical components and tokens with a declared sample and denominator."},{"availability":"dormant","capability_class":"active-skill","capability_id":"career-setup","changed_in":[],"compatibility":{"foundation_capabilities":["privacy-minimal-disclosure","ownership-portability","scoped-agency-human-control","safe-change-recovery"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","career-room-enabled","room-capability-manager"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":true,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_mature_skill_amendments.py","summary":"The shipped instructions close the reviewed evidence, authority and recovery gaps."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_capabilities.py","summary":"Room activation verifies release-owned skill identity before changing profile or files."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/capabilities/career/skills/career-setup/SKILL.md","summary":"The release ships this room skill as the source used when the room is enabled."}],"impact_tier":"high","jobs":["track-career-growth"],"portable_brief":{"goal":"Sets up the career room and its consented evidence space while verifying the room, hooks and connected tools honestly.","method_outline":["Preview the canonical career evidence paths and sensitive-data boundary.","Enable only after consent.","Verify room, hook and MCP state and surface capture failures."],"rollback_advice":"Disable the room through the capability manager; preserve the person's room content and remove only release-owned surfaced skill copies.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["All evidence paths use the portable room contract.","Failed setup leaves a clear recovery state."]},"prerequisites":["Enable the career room; its skills are installed as one room bundle, not adopted independently.","Keep the room's approved source and privacy boundaries available to the host."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Initialize career development system (job description, ladder, reviews, goals)","title":"Career Setup","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Sets up the career room and its consented evidence space while verifying the room, hooks and connected tools honestly."},{"availability":"dormant","capability_class":"active-skill","capability_id":"career-coach","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","durable-memory-provenance","compounding-correctability","privacy-minimal-disclosure"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","career-room-enabled","room-capability-manager"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_mature_skill_amendments.py","summary":"The shipped instructions close the reviewed evidence, authority and recovery gaps."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_capabilities.py","summary":"Room activation verifies release-owned skill identity before changing profile or files."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/capabilities/career/skills/career-coach/SKILL.md","summary":"The release ships this room skill as the source used when the room is enabled."}],"impact_tier":"high","jobs":["track-career-growth","reflect-and-improve-continuously"],"portable_brief":{"goal":"Turns sourced career evidence into reflective coaching while keeping uncertainty, HR limits and save consent explicit.","method_outline":["Choose the coaching mode and inspect consented evidence.","Separate missing evidence from missing competency and label confidence.","Preview and confirm any saved reflection."],"rollback_advice":"Disable the room through the capability manager; preserve the person's room content and remove only release-owned surfaced skill copies.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Claims cite evidence and uncertainty.","The coach does not impersonate HR or a manager."]},"prerequisites":["Enable the career room; its skills are installed as one room bundle, not adopted independently.","Keep the room's approved source and privacy boundaries available to the host."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Personal career coach with 4 modes: weekly reports, monthly reflections, self-reviews, promotion assessments","title":"Career Coach","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Turns sourced career evidence into reflective coaching while keeping uncertainty, HR limits and save consent explicit."},{"availability":"dormant","capability_class":"active-skill","capability_id":"resume-builder","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","durable-memory-provenance","privacy-minimal-disclosure","ownership-portability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","career-room-enabled","room-capability-manager"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_mature_skill_amendments.py","summary":"The shipped instructions close the reviewed evidence, authority and recovery gaps."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_capabilities.py","summary":"Room activation verifies release-owned skill identity before changing profile or files."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/capabilities/career/skills/resume-builder/SKILL.md","summary":"The release ships this room skill as the source used when the room is enabled."}],"impact_tier":"high","jobs":["track-career-growth"],"portable_brief":{"goal":"Builds a truthful, portable resume from sourced evidence and verifies the rendered result before claiming pagination.","method_outline":["Gather cited outcomes without inventing metrics.","Label any user-supplied estimate.","Render-check pages and separately confirm every cross-file write."],"rollback_advice":"Disable the room through the capability manager; preserve the person's room content and remove only release-owned surfaced skill copies.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Every claim maps to evidence or an explicit supplied estimate.","Pagination is claimed only after rendering."]},"prerequisites":["Enable the career room; its skills are installed as one room bundle, not adopted independently.","Keep the room's approved source and privacy boundaries available to the host."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Build resume and LinkedIn profile through guided interview","title":"Resume Builder","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Builds a truthful, portable resume from sourced evidence and verifies the rendered result before claiming pagination."},{"availability":"dormant","capability_class":"active-skill","capability_id":"quarter-plan","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","durable-memory-provenance","scoped-agency-human-control","safe-change-recovery"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","quarter-goals-room-enabled","room-capability-manager"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_mature_skill_amendments.py","summary":"The shipped instructions close the reviewed evidence, authority and recovery gaps."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_capabilities.py","summary":"Room activation verifies release-owned skill identity before changing profile or files."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/capabilities/quarter_goals/skills/quarter-plan/SKILL.md","summary":"The release ships this room skill as the source used when the room is enabled."}],"impact_tier":"high","jobs":["start-each-day-focused"],"portable_brief":{"goal":"Builds a quarter plan across the correct fiscal boundary with previewed, conflict-safe and verified writes.","method_outline":["Confirm fiscal-quarter dates and current goals.","Preview every archive, move or goal mutation separately.","Preserve conflicting bytes and read back approved results."],"rollback_advice":"Disable the room through the capability manager; preserve the person's room content and remove only release-owned surfaced skill copies.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["No mutation occurs without its exact confirmation.","Conflicts preserve the existing file and report recovery."]},"prerequisites":["Enable the quarter goals room; its skills are installed as one room bundle, not adopted independently.","Keep the room's approved source and privacy boundaries available to the host."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Set 3-5 strategic goals for the quarter","title":"Quarter Plan","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Builds a quarter plan across the correct fiscal boundary with previewed, conflict-safe and verified writes."},{"availability":"dormant","capability_class":"active-skill","capability_id":"quarter-review","changed_in":[],"compatibility":{"foundation_capabilities":["context-orientation","durable-memory-provenance","compounding-correctability","honest-health-observability"],"host_adapters":["agent-plugin","bb","chatgpt-work","claude-code","codex","copilot-cli","cowork","cursor","gemini-cli","pi"],"host_requirements":["skills-directory","quarter-goals-room-enabled","room-capability-manager"],"limitations":["Lens must still verify the host system locally before recommending use."],"minimum_lens_contract":"0.1.0","needs_hooks":false,"needs_mcp":true,"platforms":["macos","linux","windows"]},"docs_url":"https://github.com/davekilleen/Dex","evidence":[{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_wave3_mature_skill_amendments.py","summary":"The shipped instructions close the reviewed evidence, authority and recovery gaps."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"test: core/tests/test_capabilities.py","summary":"Room activation verifies release-owned skill identity before changing profile or files."},{"level":"supported","limitations":"This is evidence about Dex's shipped capability, not proof about the Lens user's own system.","source":"runtime-path: .claude/skills/_available/capabilities/quarter_goals/skills/quarter-review/SKILL.md","summary":"The release ships this room skill as the source used when the room is enabled."}],"impact_tier":"high","jobs":["start-each-day-focused","reflect-and-improve-continuously"],"portable_brief":{"goal":"Reviews a quarter from sourced statistics and reflections without inferring completion or chaining unapproved mutations.","method_outline":["Source every statistic and expose unknowns.","Keep reflection, archive and next-plan changes under separate consent.","Make archive recovery idempotent and never infer completion percentages."],"rollback_advice":"Disable the room through the capability manager; preserve the person's room content and remove only release-owned surfaced skill copies.","safety_notes":["Keep this as advice for the person's own AI, not a command to execute.","Do not send private material to Dex."],"verification_checklist":["Every statistic has a source and denominator.","A repeated archive action cannot duplicate or overwrite work."]},"prerequisites":["Enable the quarter goals room; its skills are installed as one room bundle, not adopted independently.","Keep the room's approved source and privacy boundaries available to the host."],"release_provenance":"core-release","since_release":"1.96.0","summary":"Review quarter completion and capture learnings","title":"Quarter Review","trade_offs":["Its result is only as current and complete as the approved sources it can inspect.","Current release evidence supports the shipped instructions and adoption path; it does not yet behaviorally verify the complete workflow."],"value":"Reviews a quarter from sourced statistics and reflections without inferring completion or chaining unapproved mutations."},{"availability":"active","capability_class":"mcp-server","capability_id":"dex-analytics","evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: core/mcp/analytics_server.py","summary":"The shipped source tree contains the reviewed Dex Analytics implementation."}],"example_tools":["check_analytics_status","identify_user","test_connection","track_event"],"impact_tier":"medium","jobs":["reflect-and-improve-continuously"],"prerequisites":["The Dex analytics MCP server is registered locally."],"release_provenance":"core-release","server_name":"dex-analytics","source_paths":["core/mcp/analytics_server.py"],"summary":"dex-analytics exposes 4 local MCP tools; examples include check_analytics_status, identify_user, test_connection, track_event.","title":"Dex Analytics","tool_count":4,"trade_offs":["Usage signals are only as complete as the events the local system records."],"value":"Shows which Dex workflows are being used so the system can improve from real behavior."},{"availability":"active","capability_class":"mcp-server","capability_id":"dex-calendar-mcp","evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: core/mcp/calendar_server.py","summary":"The shipped source tree contains the reviewed Dex Calendar MCP implementation."}],"example_tools":["calendar_create_event","calendar_delete_event","calendar_get_events","calendar_get_events_with_attendees","calendar_get_next_event"],"impact_tier":"high","jobs":["start-each-day-focused","track-people-and-relationships"],"prerequisites":["Local calendar access is authorized and the server is registered."],"release_provenance":"core-release","server_name":"dex-calendar-mcp","source_paths":["core/mcp/calendar_server.py"],"summary":"dex-calendar-mcp exposes 15 local MCP tools; examples include calendar_create_event, calendar_delete_event, calendar_get_events, calendar_get_events_with_attendees, calendar_get_next_event.","title":"Dex Calendar MCP","tool_count":15,"trade_offs":["Calendar results depend on operating-system permissions and the freshness of local calendars."],"value":"Makes calendar pressure and meeting context available to planning and preparation workflows."},{"availability":"active","capability_class":"mcp-server","capability_id":"dex-career-mcp","evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: core/mcp/career_server.py","summary":"The shipped source tree contains the reviewed Dex Career MCP implementation."}],"example_tools":["analyze_coverage","generate_evidence_from_work","parse_ladder","promotion_readiness_score","scan_evidence"],"impact_tier":"medium","jobs":["track-career-growth"],"prerequisites":["The career capability is enabled and its local data paths exist."],"release_provenance":"core-release","server_name":"dex-career-mcp","source_paths":["core/mcp/career_server.py"],"summary":"dex-career-mcp exposes 8 local MCP tools; examples include analyze_coverage, generate_evidence_from_work, parse_ladder, promotion_readiness_score, scan_evidence.","title":"Dex Career MCP","tool_count":8,"trade_offs":["Career outputs remain bounded by the evidence the person has chosen to capture."],"value":"Keeps career evidence and development work consented, sourced and reviewable."},{"availability":"active","capability_class":"mcp-server","capability_id":"dex-customization-migration-mcp","evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: core/mcp/customization_migration_server.py","summary":"The shipped source tree contains the reviewed Dex Customization Migration MCP implementation."}],"example_tools":["assess_customizations","preview_customization_capsule","read_activation_status","read_customization_capsule_blob","read_customization_capsule_section"],"impact_tier":"medium","jobs":["evolve-the-system-itself"],"prerequisites":["A compatible migration plan and lifecycle service are available."],"release_provenance":"core-release","server_name":"dex-customization-migration-mcp","source_paths":["core/mcp/customization_migration_server.py"],"summary":"dex-customization-migration-mcp exposes 7 local MCP tools; examples include assess_customizations, preview_customization_capsule, read_activation_status, read_customization_capsule_blob, read_customization_capsule_section.","title":"Dex Customization Migration MCP","tool_count":7,"trade_offs":["Migration remains confirm-gated and may refuse changes that cannot be safely reversed."],"value":"Moves approved customizations through Dex's receipt-backed lifecycle instead of editing the vault ad hoc."},{"availability":"active","capability_class":"mcp-server","capability_id":"dex-granola-mcp","evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: core/mcp/granola_server.py","summary":"The shipped source tree contains the reviewed Dex Granola MCP implementation."}],"example_tools":["granola_check_available","granola_get_extent","granola_get_meeting_details","granola_get_recent_meetings","granola_get_today_meetings"],"impact_tier":"high","jobs":["capture-without-friction","track-people-and-relationships"],"prerequisites":["Granola access is connected and authorized by the person."],"release_provenance":"core-release","server_name":"dex-granola-mcp","source_paths":["core/mcp/granola_server.py"],"summary":"dex-granola-mcp exposes 6 local MCP tools; examples include granola_check_available, granola_get_extent, granola_get_meeting_details, granola_get_recent_meetings, granola_get_today_meetings.","title":"Dex Granola MCP","tool_count":6,"trade_offs":["Meeting coverage depends on the upstream Granola account and transcript availability."],"value":"Brings meeting records into Dex for processing without relying on manual transcript copying."},{"availability":"active","capability_class":"mcp-server","capability_id":"dex-improvements-mcp","evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: core/mcp/dex_improvements_server.py","summary":"The shipped source tree contains the reviewed Dex Improvements MCP implementation."}],"example_tools":["capture_idea","enrich_idea","get_backlog_stats","get_idea_details","list_ideas"],"impact_tier":"high","jobs":["reflect-and-improve-continuously","evolve-the-system-itself"],"prerequisites":["The local improvements store is available."],"release_provenance":"core-release","server_name":"dex-improvements-mcp","source_paths":["core/mcp/dex_improvements_server.py"],"summary":"dex-improvements-mcp exposes 9 local MCP tools; examples include capture_idea, enrich_idea, get_backlog_stats, get_idea_details, list_ideas.","title":"Dex Improvements MCP","tool_count":9,"trade_offs":["Ranking is advisory and still needs a person to choose what should change."],"value":"Turns observed friction into a ranked, inspectable backlog of system improvements."},{"availability":"active","capability_class":"mcp-server","capability_id":"dex-onboarding-mcp","evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: core/mcp/onboarding_server.py","summary":"The shipped source tree contains the reviewed Dex Onboarding MCP implementation."}],"example_tools":["apply_confirmed_onboarding_context","check_onboarding_complete","cleanup_qa_session","finalize_onboarding","generate_nudge_calendar"],"impact_tier":"high","jobs":["evolve-the-system-itself"],"prerequisites":["Dex is running from a writable local vault during onboarding."],"release_provenance":"core-release","server_name":"dex-onboarding-mcp","source_paths":["core/mcp/onboarding_server.py"],"summary":"dex-onboarding-mcp exposes 19 local MCP tools; examples include apply_confirmed_onboarding_context, check_onboarding_complete, cleanup_qa_session, finalize_onboarding, generate_nudge_calendar.","title":"Dex Onboarding MCP","tool_count":19,"trade_offs":["Setup quality depends on the person supplying accurate preferences and granting chosen permissions."],"value":"Coordinates first-run setup through explicit, locally verified onboarding steps."},{"availability":"active","capability_class":"mcp-server","capability_id":"dex-pipedrive-mcp","evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: core/integrations/pipedrive/pipedrive_server.py","summary":"The shipped source tree contains the reviewed Dex Pipedrive MCP implementation."}],"example_tools":["pipedrive_add_deal_activity","pipedrive_add_deal_note","pipedrive_create_deal","pipedrive_create_org","pipedrive_find_deal"],"impact_tier":"high","jobs":["keep-projects-on-track","track-people-and-relationships"],"prerequisites":["Pipedrive is explicitly connected and its local server is registered."],"release_provenance":"core-release","server_name":"dex-pipedrive-mcp","source_paths":["core/integrations/pipedrive/pipedrive_server.py"],"summary":"dex-pipedrive-mcp exposes 15 local MCP tools; examples include pipedrive_add_deal_activity, pipedrive_add_deal_note, pipedrive_create_deal, pipedrive_create_org, pipedrive_find_deal.","title":"Dex Pipedrive MCP","tool_count":15,"trade_offs":["External records depend on Pipedrive availability, and writes remain opt-in and confirmation-gated."],"value":"Connects customer relationship data to Dex so deal context can support planning and follow-through."},{"availability":"active","capability_class":"mcp-server","capability_id":"dex-resume-mcp","evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: core/mcp/resume_server.py","summary":"The shipped source tree contains the reviewed Dex Resume MCP implementation."}],"example_tools":["add_role","compile_resume","export_resume","extract_achievements","generate_linkedin"],"impact_tier":"medium","jobs":["track-career-growth"],"prerequisites":["Consented career evidence exists in the local career space."],"release_provenance":"core-release","server_name":"dex-resume-mcp","source_paths":["core/mcp/resume_server.py"],"summary":"dex-resume-mcp exposes 12 local MCP tools; examples include add_role, compile_resume, export_resume, extract_achievements, generate_linkedin.","title":"Dex Resume MCP","tool_count":12,"trade_offs":["The server cannot fill evidence gaps without the person's review and additional source material."],"value":"Builds truthful application material from consented career evidence rather than invented claims."},{"availability":"active","capability_class":"mcp-server","capability_id":"dex-session-memory","evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: core/mcp/session_memory_server.py","summary":"The shipped source tree contains the reviewed Dex Session Memory implementation."}],"example_tools":["get_entity_timeline","get_observation_timeline","get_recent_decisions","get_recent_tool_usage","get_session_context"],"impact_tier":"high","jobs":["reflect-and-improve-continuously","keep-projects-on-track"],"prerequisites":["The local session-memory store is available."],"release_provenance":"core-release","server_name":"dex-session-memory","source_paths":["core/mcp/session_memory_server.py"],"summary":"dex-session-memory exposes 8 local MCP tools; examples include get_entity_timeline, get_observation_timeline, get_recent_decisions, get_recent_tool_usage, get_session_context.","title":"Dex Session Memory","tool_count":8,"trade_offs":["Remembered context can become stale and must retain clear provenance."],"value":"Carries sourced context across sessions so repeated work does not restart from an empty chat."},{"availability":"active","capability_class":"mcp-server","capability_id":"dex-work-mcp","evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: core/mcp/work_server.py","summary":"The shipped source tree contains the reviewed Dex Work MCP implementation."}],"example_tools":["analyze_calendar_capacity","boot_today","build_company_index","build_people_index","capture_skill_rating"],"impact_tier":"core","jobs":["manage-tasks-reliably","keep-projects-on-track","track-people-and-relationships"],"prerequisites":["A Dex vault and its portable path contract are available."],"release_provenance":"core-release","server_name":"dex-work-mcp","source_paths":["core/mcp/work_server.py"],"summary":"dex-work-mcp exposes 53 local MCP tools; examples include analyze_calendar_capacity, boot_today, build_company_index, build_people_index, capture_skill_rating.","title":"Dex Work MCP","tool_count":53,"trade_offs":["Mutations remain bounded by confirmation, validation and the local vault's current structure."],"value":"Provides the validated task, project, person and company operations that core Dex workflows rely on."},{"automation_label":"com.dex.changelog-checker","availability":"active","cadence":"every 6 hours; also at load","capability_class":"scheduled-automation","capability_id":"dex-changelog-checker","evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: .scripts/com.dex.changelog-checker.plist","summary":"The shipped source tree contains the reviewed Dex Changelog Checker implementation."}],"impact_tier":"medium","installer_path":".scripts/install-learning-automation.sh","jobs":["evolve-the-system-itself"],"prerequisites":["The learning automation launch agent is installed on macOS."],"program_target":"{{VAULT_PATH}}/.scripts/check-anthropic-changelog.cjs","release_provenance":"core-release","run_at_load":true,"source_paths":[".scripts/com.dex.changelog-checker.plist",".scripts/install-learning-automation.sh"],"summary":"Runs {{VAULT_PATH}}/.scripts/check-anthropic-changelog.cjs every 6 hours; also at load.","title":"Dex Changelog Checker","trade_offs":["The check is periodic, so upstream changes are not surfaced instantly."],"value":"Checks for relevant upstream capability changes several times a day without manual polling."},{"automation_label":"com.dex.learning-review","availability":"active","cadence":"daily at 17:00","capability_class":"scheduled-automation","capability_id":"dex-learning-review","evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: .scripts/com.dex.learning-review.plist","summary":"The shipped source tree contains the reviewed Dex Learning Review implementation."}],"impact_tier":"high","installer_path":".scripts/install-learning-automation.sh","jobs":["reflect-and-improve-continuously"],"prerequisites":["The learning automation launch agent is installed on macOS."],"program_target":"{{VAULT_PATH}}/.scripts/learning-review-prompt.sh","release_provenance":"core-release","run_at_load":false,"source_paths":[".scripts/com.dex.learning-review.plist",".scripts/install-learning-automation.sh"],"summary":"Runs {{VAULT_PATH}}/.scripts/learning-review-prompt.sh daily at 17:00.","title":"Dex Learning Review","trade_offs":["A scheduled prompt still depends on the person choosing to review and adopt useful changes."],"value":"Prompts a daily review so observed friction can become durable learning."},{"automation_label":"com.dex.meeting-intel","availability":"active","cadence":"every 30 minutes; also at load","capability_class":"scheduled-automation","capability_id":"dex-meeting-intel","evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: .scripts/meeting-intel/com.dex.meeting-intel.plist.template","summary":"The shipped source tree contains the reviewed Dex Meeting Intel implementation."}],"impact_tier":"high","installer_path":".scripts/meeting-intel/install-automation.sh","jobs":["capture-without-friction","track-people-and-relationships"],"prerequisites":["Granola is connected and the meeting-intelligence launch agent is installed on macOS."],"program_target":".scripts/meeting-intel/sync-from-granola.cjs","release_provenance":"core-release","run_at_load":true,"source_paths":[".scripts/meeting-intel/com.dex.meeting-intel.plist.template",".scripts/meeting-intel/install-automation.sh"],"summary":"Runs .scripts/meeting-intel/sync-from-granola.cjs every 30 minutes; also at load.","title":"Dex Meeting Intel","trade_offs":["Sync freshness depends on both the upstream service and the local machine being able to run the job."],"value":"Keeps Granola meeting material synchronized frequently enough for timely preparation and closeout."},{"automation_label":"com.dex.smoke-nightly","availability":"active","cadence":"daily at 03:15","capability_class":"scheduled-automation","capability_id":"dex-smoke-nightly","evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: .scripts/com.dex.smoke-nightly.plist.template","summary":"The shipped source tree contains the reviewed Dex Smoke Nightly implementation."}],"impact_tier":"high","installer_path":".scripts/install-smoke-automation.sh","jobs":["evolve-the-system-itself"],"prerequisites":["The nightly smoke launch agent is installed on macOS."],"program_target":"__VAULT_PATH__/.scripts/nightly-smoke.sh","release_provenance":"core-release","run_at_load":false,"source_paths":[".scripts/com.dex.smoke-nightly.plist.template",".scripts/install-smoke-automation.sh"],"summary":"Runs __VAULT_PATH__/.scripts/nightly-smoke.sh daily at 03:15.","title":"Dex Smoke Nightly","trade_offs":["A nightly check can detect known failures but cannot prove every workflow is healthy."],"value":"Runs a nightly health smoke check so breakage can surface before a person depends on the system."},{"automation_label":"com.dex.vault-backup","availability":"active","cadence":"daily at a user-selected time","capability_class":"scheduled-automation","capability_id":"dex-vault-backup","evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: core/backup/install_backup_job.py","summary":"The shipped source tree contains the reviewed Dex Vault Backup implementation."}],"impact_tier":"core","installer_path":"core/backup/install_backup_job.py","jobs":["evolve-the-system-itself"],"prerequisites":["Backup setup is complete and its destination has been verified."],"program_target":"core/backup/backup_vault.py","release_provenance":"core-release","run_at_load":false,"source_paths":["core/backup/install_backup_job.py","core/backup/backup_vault.py"],"summary":"Runs core/backup/backup_vault.py daily at a user-selected time.","title":"Dex Vault Backup","trade_offs":["A schedule is not proof of recovery; the person must still test that a backup can be restored."],"value":"Creates a scheduled recovery copy of the person's vault at a time they choose."},{"availability":"parked","capability_class":"system-engine","capability_id":"connection-manager-engine","component_count":20,"evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: core/integrations/connection-manager/auth-context.cjs","summary":"The shipped source tree contains the reviewed Connection Manager Engine implementation."}],"example_components":["core/integrations/connection-manager/auth-context.cjs","core/integrations/connection-manager/broker-client.cjs","core/integrations/connection-manager/broker.cjs","core/integrations/connection-manager/catalog.cjs","core/integrations/connection-manager/connect.cjs"],"impact_tier":"high","jobs":["evolve-the-system-itself"],"prerequisites":["A reviewed person-facing doorway must be released before this engine can be used."],"release_provenance":"core-release","source_paths":["core/integrations/connection-manager/auth-context.cjs","core/integrations/connection-manager/broker-client.cjs","core/integrations/connection-manager/broker.cjs","core/integrations/connection-manager/catalog.cjs","core/integrations/connection-manager/connect.cjs","core/integrations/connection-manager/contract.cjs","core/integrations/connection-manager/dex-call.cjs","core/integrations/connection-manager/fs-safe.cjs","core/integrations/connection-manager/get-token.cjs","core/integrations/connection-manager/health.cjs","core/integrations/connection-manager/index.cjs","core/integrations/connection-manager/lib/connector-ledger.js","core/integrations/connection-manager/lib/connector-model.js","core/integrations/connection-manager/lib/connector-verify.js","core/integrations/connection-manager/lib/oauth-refresh.js","core/integrations/connection-manager/lib/rate-limit.js","core/integrations/connection-manager/oauth-flow.cjs","core/integrations/connection-manager/pinned-providers.cjs","core/integrations/connection-manager/presence.cjs","core/integrations/connection-manager/token-store.cjs"],"summary":"Groups 20 shipped source components. Parked: it is not wired into the live product.","title":"Connection Manager Engine","trade_offs":["The engine is shipped groundwork and must not be recommended as currently usable."],"value":"Provides local connection custody and provider metadata, but its person-facing doorway remains unavailable."},{"availability":"active","capability_class":"system-engine","capability_id":"entity-temperature-engine","component_count":9,"evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: core/entity_engine/__init__.py","summary":"The shipped source tree contains the reviewed Entity Temperature Engine implementation."}],"example_components":["core/entity_engine/__init__.py","core/entity_engine/cli.py","core/entity_engine/contract.py","core/entity_engine/cooling.py","core/entity_engine/index.py"],"impact_tier":"high","jobs":["track-people-and-relationships"],"prerequisites":["Entity indexing and relationship data are available locally."],"release_provenance":"core-release","source_paths":["core/entity_engine/__init__.py","core/entity_engine/cli.py","core/entity_engine/contract.py","core/entity_engine/cooling.py","core/entity_engine/index.py","core/entity_engine/relationships.py","core/entity_engine/reroute.py","core/entity_engine/temperature.py","core/entity_engine/write.py"],"summary":"Groups 9 shipped source components.","title":"Entity Temperature Engine","trade_offs":["Temperature is a prioritization signal, not an objective measure of relationship importance."],"value":"Keeps people and entity context warm when it matters and cools stale signals over time."},{"availability":"active","capability_class":"system-engine","capability_id":"proactive-promise-engine","component_count":2,"evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: core/health/promises.py","summary":"The shipped source tree contains the reviewed Proactive Promise Engine implementation."}],"example_components":["core/health/promises.py","core/tests/test_health_promises.py"],"impact_tier":"core","jobs":["manage-tasks-reliably","evolve-the-system-itself"],"prerequisites":["Dex Doctor can inspect the relevant local runtime evidence."],"release_provenance":"core-release","source_paths":["core/health/promises.py","core/tests/test_health_promises.py"],"summary":"Groups 2 shipped source components.","title":"Proactive Promise Engine","trade_offs":["A promise only detects the failure modes its evidence and thresholds explicitly cover."],"value":"Defines the concrete promises Dex health checks use to catch silent reliability failures."},{"availability":"parked","capability_class":"system-engine","capability_id":"ritual-intelligence-engine","component_count":22,"evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: core/ritual_intelligence/__init__.py","summary":"The shipped source tree contains the reviewed Ritual Intelligence Engine implementation."}],"example_components":["core/ritual_intelligence/__init__.py","core/ritual_intelligence/__main__.py","core/ritual_intelligence/actions.py","core/ritual_intelligence/brief_generate.py","core/ritual_intelligence/calendar_ingest.py"],"impact_tier":"high","jobs":["start-each-day-focused","capture-without-friction"],"prerequisites":["The parked engine would need an approved live integration before it could serve users."],"release_provenance":"core-release","source_paths":["core/ritual_intelligence/__init__.py","core/ritual_intelligence/__main__.py","core/ritual_intelligence/actions.py","core/ritual_intelligence/brief_generate.py","core/ritual_intelligence/calendar_ingest.py","core/ritual_intelligence/cli.py","core/ritual_intelligence/contact_promote.py","core/ritual_intelligence/contact_suggest.py","core/ritual_intelligence/corrections.py","core/ritual_intelligence/db.py","core/ritual_intelligence/manual_note_match.py","core/ritual_intelligence/matching.py","core/ritual_intelligence/meeting_intel_projection.py","core/ritual_intelligence/meeting_reconcile.py","core/ritual_intelligence/models.py","core/ritual_intelligence/prep_state.py","core/ritual_intelligence/projection_write.py","core/ritual_intelligence/ritual_match.py","core/ritual_intelligence/service.py","core/ritual_intelligence/transcript_ingest.py","core/ritual_intelligence/transcript_reconcile.py","core/ritual_intelligence/transcript_store.py"],"summary":"Groups 22 shipped source components. Parked: it is not wired into the live product.","title":"Ritual Intelligence Engine","trade_offs":["This capability is parked and must not be presented as currently available."],"value":"Contains a richer meeting and ritual intelligence engine that is code-complete but not wired into the live product."},{"availability":"active","capability_class":"system-engine","capability_id":"session-hook-orchestration","component_count":32,"evidence":[{"level":"supported","limitations":"Source presence proves Dex ships the implementation, not that it is configured or healthy on a Lens user's system.","source":"runtime-path: .claude/hooks/README.md","summary":"The shipped source tree contains the reviewed Session Hook Orchestration implementation."}],"example_components":[".claude/hooks/README.md",".claude/hooks/adapters/jira.cjs",".claude/hooks/adapters/run.cjs",".claude/hooks/adapters/service-aliases.json",".claude/hooks/adapters/things.cjs"],"impact_tier":"core","jobs":["evolve-the-system-itself","start-each-day-focused"],"prerequisites":["Claude Code hooks are installed and enabled for the Dex vault."],"release_provenance":"core-release","source_paths":[".claude/hooks/README.md",".claude/hooks/adapters/jira.cjs",".claude/hooks/adapters/run.cjs",".claude/hooks/adapters/service-aliases.json",".claude/hooks/adapters/things.cjs",".claude/hooks/adapters/todoist.cjs",".claude/hooks/adapters/trello.cjs",".claude/hooks/career-evidence-capture.cjs",".claude/hooks/claude-composition-refresh.sh",".claude/hooks/company-context-injector.cjs",".claude/hooks/connection-health-checker.cjs",".claude/hooks/correction-capture.py",".claude/hooks/correction-capture.sh",".claude/hooks/daily-plan-quick-ref.cjs",".claude/hooks/dex-core-orientation.sh",".claude/hooks/dex-safety-guard.sh",".claude/hooks/ensure-mcp-user-scope.cjs",".claude/hooks/health-pulse.sh",".claude/hooks/integration-concierge.cjs",".claude/hooks/maintenance.cjs",".claude/hooks/meeting-cache-builder.cjs",".claude/hooks/meeting-queue-check.cjs",".claude/hooks/observation-recorder.py",".claude/hooks/paths.cjs",".claude/hooks/person-context-injector.cjs",".claude/hooks/post-meeting-person-update.cjs",".claude/hooks/session-clock.sh",".claude/hooks/session-end.sh",".claude/hooks/session-start.sh",".claude/hooks/skill-freshness.py",".claude/hooks/soft-promise-detector.py",".claude/hooks/vault-autocommit.cjs"],"summary":"Groups 32 shipped source components.","title":"Session Hook Orchestration","trade_offs":["Hook behavior depends on the host honoring the configured lifecycle events and local permissions."],"value":"Coordinates session startup, safety, context injection, maintenance and closeout around the user's work."}],"capability_families":[{"aliases":[],"assessment":{"mode":"automatic","profile":"catalogue"},"components":[{"capability_id":"dex-granola-mcp","component_type":"capability"},{"capability_id":"dex-meeting-intel","component_type":"capability"},{"capability_id":"granola-setup","component_type":"capability"},{"capability_id":"meeting-closeout","component_type":"capability"},{"capability_id":"meeting-prep","component_type":"capability"},{"capability_id":"process-meetings","component_type":"capability"}],"family_id":"meeting-follow-through","jobs":["capture-without-friction","track-people-and-relationships"],"member_capability_ids":["dex-granola-mcp","dex-meeting-intel","granola-setup","meeting-closeout","meeting-prep","process-meetings"],"outcome":"Meetings become notes, people context and tracked follow-up.","title":"Meeting follow-through"},{"aliases":[],"assessment":{"mode":"automatic","profile":"catalogue"},"components":[{"capability_id":"entity-temperature-engine","component_type":"capability"},{"capability_id":"relationship-radar","component_type":"capability"}],"family_id":"living-people-company-context","jobs":["track-people-and-relationships"],"member_capability_ids":["entity-temperature-engine","relationship-radar"],"outcome":"People and company pages are created, refreshed and connected over time.","title":"Living people and company context"},{"aliases":[],"assessment":{"mode":"automatic","profile":"catalogue"},"components":[{"capability_id":"commitments","component_type":"capability"},{"capability_id":"delegate-check","component_type":"capability"},{"capability_id":"dex-work-mcp","component_type":"capability"},{"capability_id":"proactive-promise-engine","component_type":"capability"},{"capability_id":"triage","component_type":"capability"}],"family_id":"durable-task-continuity","jobs":["evolve-the-system-itself","keep-projects-on-track","manage-tasks-reliably","track-people-and-relationships"],"member_capability_ids":["commitments","delegate-check","dex-work-mcp","proactive-promise-engine","triage"],"outcome":"Tasks can be captured from several places and completion returns to linked surfaces.","title":"Durable task continuity"},{"aliases":[],"assessment":{"mode":"automatic","profile":"catalogue"},"components":[{"capability_id":"things-setup","component_type":"capability"},{"capability_id":"todoist-setup","component_type":"capability"},{"capability_id":"trello-setup","component_type":"capability"}],"family_id":"external-task-interoperability","jobs":["manage-tasks-reliably"],"member_capability_ids":["things-setup","todoist-setup","trello-setup"],"outcome":"Todoist, Things and Trello can exchange tasks on request without pretending background polling exists.","title":"External task interoperability"},{"aliases":[],"assessment":{"mode":"automatic","profile":"catalogue"},"components":[{"capability_id":"apple-mail-setup","component_type":"capability"},{"capability_id":"atlassian-setup","component_type":"capability"},{"capability_id":"calendar-setup","component_type":"capability"},{"capability_id":"dex-calendar-mcp","component_type":"capability"},{"capability_id":"google-workspace-setup","component_type":"capability"},{"capability_id":"ms-teams-setup","component_type":"capability"},{"capability_id":"zoom-setup","component_type":"capability"}],"family_id":"connected-work-context","jobs":["capture-without-friction","keep-projects-on-track","start-each-day-focused","track-people-and-relationships"],"member_capability_ids":["apple-mail-setup","atlassian-setup","calendar-setup","dex-calendar-mcp","google-workspace-setup","ms-teams-setup","zoom-setup"],"outcome":"Google, Teams, Zoom, Atlassian and Apple Mail can inform plans, preparation and reviews when explicitly connected.","title":"Connected work context"},{"aliases":[],"assessment":{"mode":"automatic","profile":"catalogue"},"components":[{"capability_id":"dex-pipedrive-mcp","component_type":"capability"},{"capability_id":"pipedrive-setup","component_type":"capability"},{"capability_id":"pipeline-sync","component_type":"capability"}],"family_id":"pipedrive-pipeline-continuity","jobs":["keep-projects-on-track","track-people-and-relationships"],"member_capability_ids":["dex-pipedrive-mcp","pipedrive-setup","pipeline-sync"],"outcome":"Live pipeline context informs local work; external writes stay previewed and confirmed.","title":"Pipedrive pipeline continuity"},{"aliases":[],"assessment":{"mode":"automatic","profile":"catalogue"},"components":[{"capability_id":"daily-plan","component_type":"capability"},{"capability_id":"daily-review","component_type":"capability"},{"capability_id":"week-plan","component_type":"capability"},{"capability_id":"week-review","component_type":"capability"},{"capability_id":"weekly-reflection","component_type":"capability"}],"family_id":"daily-weekly-operating-rhythm","jobs":["reflect-and-improve-continuously","start-each-day-focused"],"member_capability_ids":["daily-plan","daily-review","week-plan","week-review","weekly-reflection"],"outcome":"Planning, review and reflection form one repeatable operating cadence.","title":"Daily and weekly operating rhythm"},{"aliases":[],"assessment":{"mode":"automatic","profile":"catalogue"},"components":[{"capability_id":"decision-log","component_type":"capability"},{"capability_id":"dex-session-memory","component_type":"capability"},{"capability_id":"enable-semantic-search","component_type":"capability"},{"capability_id":"journal","component_type":"capability"},{"capability_id":"save-insight","component_type":"capability"}],"family_id":"durable-work-memory","jobs":["keep-projects-on-track","reflect-and-improve-continuously"],"member_capability_ids":["decision-log","dex-session-memory","enable-semantic-search","journal","save-insight"],"outcome":"Sourced decisions, commitments, context and patterns remain available across sessions.","title":"Durable work memory"},{"aliases":[],"assessment":{"mode":"automatic","profile":"catalogue"},"components":[{"capability_id":"dex-doctor","component_type":"capability"},{"capability_id":"dex-smoke-nightly","component_type":"capability"}],"family_id":"proactive-health-and-recovery","jobs":["evolve-the-system-itself"],"member_capability_ids":["dex-doctor","dex-smoke-nightly"],"outcome":"Doctor and scheduled checks distinguish healthy, off, broken and unknown, then use bounded repair paths.","title":"Proactive health and recovery"},{"aliases":[],"assessment":{"mode":"automatic","profile":"catalogue"},"components":[{"capability_id":"backup-now","component_type":"capability"},{"capability_id":"backup-restore","component_type":"capability"},{"capability_id":"backup-setup","component_type":"capability"},{"capability_id":"dex-vault-backup","component_type":"capability"}],"family_id":"backup-and-restore-confidence","jobs":["evolve-the-system-itself"],"member_capability_ids":["backup-now","backup-restore","backup-setup","dex-vault-backup"],"outcome":"Backups are created and recovery is proved by a safe restore rehearsal.","title":"Backup and restore confidence"},{"aliases":[],"assessment":{"mode":"automatic","profile":"catalogue"},"components":[{"capability_id":"dex-rollback","component_type":"capability"},{"capability_id":"dex-update","component_type":"capability"},{"capability_id":"diff-adopt","component_type":"capability"},{"capability_id":"diff-adopt-profile","component_type":"capability"},{"capability_id":"diff-generate","component_type":"capability"},{"capability_id":"diff-list","component_type":"capability"},{"capability_id":"diff-profile","component_type":"capability"},{"capability_id":"diff-remove","component_type":"capability"}],"family_id":"safe-change-and-rewind","jobs":["evolve-the-system-itself","reflect-and-improve-continuously"],"member_capability_ids":["dex-rollback","dex-update","diff-adopt","diff-adopt-profile","diff-generate","diff-list","diff-profile","diff-remove"],"outcome":"Changes are previewed, verified, receipted and reversible.","title":"Safe change and rewind"},{"aliases":[],"assessment":{"mode":"automatic","profile":"catalogue"},"components":[{"capability_id":"create-mcp","component_type":"capability"},{"capability_id":"create-skill","component_type":"capability"},{"capability_id":"dex-add-mcp","component_type":"capability"},{"capability_id":"dex-whats-new","component_type":"capability"},{"capability_id":"integrate-mcp","component_type":"capability"},{"capability_id":"manage-capabilities","component_type":"capability"},{"capability_id":"skill-score","component_type":"capability"}],"family_id":"capability-discovery-and-adoption","jobs":["evolve-the-system-itself"],"member_capability_ids":["create-mcp","create-skill","dex-add-mcp","dex-whats-new","integrate-mcp","manage-capabilities","skill-score"],"outcome":"Useful methods can be discovered, reviewed, adopted and created through the safe lifecycle.","title":"Capability discovery and adoption"},{"aliases":[],"assessment":{"mode":"manual-only","reason":"A person must confirm that no private work leaves the machine before feedback is shared."},"components":[{"capability_id":"feedback","component_type":"capability"}],"family_id":"privacy-safe-feedback-loop","jobs":["evolve-the-system-itself"],"member_capability_ids":["feedback"],"outcome":"A problem can become a minimal report and a returned answer or fix without exporting private work.","title":"Privacy-safe feedback loop"},{"aliases":[],"assessment":{"mode":"automatic","profile":"catalogue"},"components":[{"capability_id":"career-coach","component_type":"capability"},{"capability_id":"career-setup","component_type":"capability"},{"capability_id":"dex-career-mcp","component_type":"capability"},{"capability_id":"dex-resume-mcp","component_type":"capability"},{"capability_id":"resume-builder","component_type":"capability"}],"family_id":"career-growth-evidence","jobs":["reflect-and-improve-continuously","track-career-growth"],"member_capability_ids":["career-coach","career-setup","dex-career-mcp","dex-resume-mcp","resume-builder"],"outcome":"Career and Resume tools turn consented evidence into development and application support without inventing claims.","title":"Career growth evidence"}],"jobs_taxonomy":[{"confirmed_gap_signals":["The Lens session finds a gap related to capture without friction."],"description":"Capture useful ideas, meeting context and incoming information before it disappears or becomes filing work.","job_id":"capture-without-friction","label":"Capture Without Friction"},{"confirmed_gap_signals":["The Lens session finds a gap related to start each day focused."],"description":"Turn current priorities, tasks and calendar pressure into a realistic focus for the day.","job_id":"start-each-day-focused","label":"Start Each Day Focused"},{"confirmed_gap_signals":["The Lens session finds a gap related to track people and relationships."],"description":"Keep the context, commitments and history needed to show up well for important people and organizations.","job_id":"track-people-and-relationships","label":"Track People & Relationships"},{"confirmed_gap_signals":["The Lens session finds a gap related to manage tasks reliably."],"description":"Keep tasks, promises and delegated work from scattering or quietly going unmet.","job_id":"manage-tasks-reliably","label":"Manage Tasks Reliably"},{"confirmed_gap_signals":["The Lens session finds a gap related to reflect and improve continuously."],"description":"Turn reflection, decisions and observed friction into durable learning and better ways of working.","job_id":"reflect-and-improve-continuously","label":"Reflect & Improve Continuously"},{"confirmed_gap_signals":["The Lens session finds a gap related to keep projects on track."],"description":"Maintain enough project truth, decisions and next actions to keep important work moving.","job_id":"keep-projects-on-track","label":"Keep Projects On Track"},{"confirmed_gap_signals":["The Lens session finds a gap related to track career growth."],"description":"Use consented evidence and reflection to support truthful career development and application material.","job_id":"track-career-growth","label":"Track Career Growth"},{"confirmed_gap_signals":["The Lens session finds a gap related to evolve the system itself."],"description":"Inspect, extend, update and recover the system without sacrificing human control or portability.","job_id":"evolve-the-system-itself","label":"Evolve the System Itself"}],"portable_brief":{"audience":"the person's own AI system","format":"markdown","safety_boundary":"Brief only: Lens presents adaptation guidance and never applies Dex changes automatically."}},"metadata":{"catalog_version":7,"contract_version":"dex-lens-catalogue-v2","core_release":"v0.0.0-preview","expires_at":"2026-09-24T12:00:00Z","key_id":"dex-core-lens-1","produced_at":"2026-08-25T12:00:00Z","producer":"Dex Core enriched preview (version-independent example)"},"signature":"UNSIGNED-PREVIEW-NOT-FOR-PUBLICATION"} diff --git a/packages/dex-contracts/dist/portable-vault.contract.json b/packages/dex-contracts/dist/portable-vault.contract.json index 54d4b1bde..cdb28ee91 100644 --- a/packages/dex-contracts/dist/portable-vault.contract.json +++ b/packages/dex-contracts/dist/portable-vault.contract.json @@ -689,6 +689,19 @@ "ownership": "seed", "note": "SR1 #150: tracked reference-schema templates carrying env-var references; installed if absent, never overwritten once user-owned" }, + { + "id": "seed-half-life-example", + "path": "System/knowledge-half-life.example.yaml", + "kind": "file", + "ownership": "seed" + }, + { + "id": "seed-half-life-live", + "path": "System/knowledge-half-life.yaml", + "kind": "file", + "ownership": "seed", + "note": "per-vault decay assumptions; user tuning is never overwritten" + }, { "id": "seed-pillars-example", "path": "System/pillars.example.yaml", From 97c7f1f1f6cc93fb17cb839869ceef441ff05b32 Mon Sep 17 00:00:00 2001 From: Chris Jackson <201591867+chrisjackson-coding@users.noreply.github.com> Date: Wed, 19 Aug 2026 09:53:30 +0100 Subject: [PATCH 4/4] Starter for the learning routing step: parse, cluster, propose, record Offered against #503, to @joshm-simril's design and @davekilleen's spec. The routing table is Josh's, kept as data rather than code so it can be edited without touching this module, which was one of his own open questions. Deliberately does NOT apply anything. Dex must never silently rewrite its own instructions, so the edit has to be shown and confirmed before it lands, and confirmation belongs in the skill that can hold a conversation. Everything here is analysis and bookkeeping. The split is the point: clustering and destination-proposal are mechanical and testable, while deciding whether a proposed edit is right is judgement. Mixing them would bury an unreviewable decision inside something that looks like a helper. Four pieces, matching the spec on #503: - Parse entries from Session_Learnings with enough location to rewrite one status without disturbing its neighbours. - Cluster by proposed destination rather than by wording, because two entries belonging in the same file are worth reviewing together even when they read differently. Josh's observation was that eight related entries became one rule, not eight edits. - Trigger on volume OR age. Age matters independently: a single correction left for a fortnight is a worse signal than ten from this morning, and a count-only trigger never fires on a slow, steady leak. - Record an outcome as implemented (date and destination) or dropped (date and reason), so a falling count means something was installed rather than something ageing out of view. An invented third status is refused. 14 tests, including that two entries in one file can never have their statuses crossed. All twelve quality gates pass. Co-Authored-By: Claude Opus 5 --- core/tests/test_learning_routing.py | 195 +++++++++++++++++++++ core/utils/learning_routing.py | 256 ++++++++++++++++++++++++++++ 2 files changed, 451 insertions(+) create mode 100644 core/tests/test_learning_routing.py create mode 100644 core/utils/learning_routing.py diff --git a/core/tests/test_learning_routing.py b/core/tests/test_learning_routing.py new file mode 100644 index 000000000..b56e548c4 --- /dev/null +++ b/core/tests/test_learning_routing.py @@ -0,0 +1,195 @@ +"""Captured learnings are worth nothing until something routes them. + +These cover the mechanical half only: parsing, clustering, the trigger, and +recording an outcome. Applying an edit stays in the skill, because it must be +shown and confirmed first. +""" +from __future__ import annotations + +from datetime import date, timedelta +from pathlib import Path + +import pytest + +from core.utils import learning_routing as routing + +TODAY = date(2026, 8, 19) + + +def _day_file(vault: Path, day: str, body: str) -> Path: + folder = vault / routing.LEARNINGS_RELATIVE + folder.mkdir(parents=True, exist_ok=True) + path = folder / f"{day}.md" + path.write_text(f"# Session Learnings - {day}\n\n---\n\n{body}", encoding="utf-8") + return path + + +ENTRY = """## 09:15 - Correction + +**What was said:** + +> stop over inferring from timesheet codes + +**Why it matters:** it invents facts about the day. +**Status:** pending + +--- + +## 11:40 - Correction + +**What was said:** + +> the daily-plan skill skipped step 5.8 entirely + +**Why it matters:** an unrun step looks identical to an empty one. +**Status:** pending + +--- +""" + + +def test_entries_are_parsed_with_their_location(tmp_path): + path = _day_file(tmp_path, "2026-08-18", ENTRY) + + entries = routing.parse_file(path) + + assert len(entries) == 2 + assert entries[0].time == "09:15" + assert "timesheet codes" in entries[0].body + assert entries[0].day == date(2026, 8, 18) + assert all(e.is_pending for e in entries) + + +def test_a_file_that_is_not_a_day_is_ignored(tmp_path): + folder = tmp_path / routing.LEARNINGS_RELATIVE + folder.mkdir(parents=True) + readme = folder / "README.md" + readme.write_text("## 09:00 - not a learning\n**Status:** pending\n", encoding="utf-8") + + assert routing.parse_file(readme) == [] + + +def test_a_malformed_file_yields_nothing_rather_than_raising(tmp_path): + path = _day_file(tmp_path, "2026-08-18", "no entries here at all\n") + + assert routing.parse_file(path) == [] + + +def test_already_routed_entries_are_not_pending(tmp_path): + _day_file( + tmp_path, + "2026-08-18", + "## 09:15 - Done one\n\n**Status:** implemented (2026-08-18 — CLAUDE-custom.md)\n\n---\n", + ) + + entries = routing.read_all(tmp_path) + + assert len(entries) == 1 + assert routing.pending(entries) == [] + + +def test_clusters_group_by_destination_not_by_wording(tmp_path): + _day_file(tmp_path, "2026-08-18", ENTRY) + + clusters = routing.cluster(routing.read_all(tmp_path)) + kinds = {c.kind for c in clusters} + + assert "behavioural" in kinds + assert "skill-defect" in kinds + for c in clusters: + assert c.destination, "every cluster must name where it goes" + + +def test_a_cluster_of_several_entries_becomes_one_edit(tmp_path): + """Josh's point: eight related entries are one rule, not eight edits.""" + many = "".join( + f"## 0{n}:00 - Correction\n\n> stop assuming, always verify first\n\n**Status:** pending\n\n---\n\n" + for n in range(1, 5) + ) + _day_file(tmp_path, "2026-08-18", many) + + clusters = routing.cluster(routing.read_all(tmp_path)) + + assert len(clusters) == 1 + assert len(clusters[0].entries) == 4 + + +def test_the_trigger_fires_on_volume(tmp_path): + body = "".join( + f"## 09:{n:02d} - Correction\n\n> stop doing that\n\n**Status:** pending\n\n---\n\n" + for n in range(12) + ) + _day_file(tmp_path, "2026-08-19", body) + + due, reason = routing.should_review(routing.read_all(tmp_path), today=TODAY) + + assert due is True + assert "pending" in reason + + +def test_the_trigger_fires_on_age_even_for_a_single_entry(tmp_path): + """A count-only trigger never fires on a slow, steady leak.""" + old = (TODAY - timedelta(days=30)).isoformat() + _day_file(tmp_path, old, "## 09:00 - Correction\n\n> stop that\n\n**Status:** pending\n\n---\n") + + due, reason = routing.should_review(routing.read_all(tmp_path), today=TODAY) + + assert due is True + assert "days old" in reason + + +def test_the_trigger_stays_quiet_on_a_small_recent_backlog(tmp_path): + """A hook that fires into a healthy vault is noise.""" + _day_file(tmp_path, "2026-08-19", "## 09:00 - Correction\n\n> stop that\n\n**Status:** pending\n\n---\n") + + due, _ = routing.should_review(routing.read_all(tmp_path), today=TODAY) + + assert due is False + + +def test_the_trigger_is_silent_on_an_empty_vault(tmp_path): + due, reason = routing.should_review(routing.read_all(tmp_path), today=TODAY) + + assert due is False + assert reason == "nothing pending" + + +def test_recording_an_outcome_says_where_it_went(tmp_path): + path = _day_file(tmp_path, "2026-08-18", ENTRY) + entry = routing.parse_file(path)[0] + + assert routing.set_status(entry, routing.IMPLEMENTED, "CLAUDE-custom.md", today=TODAY) is True + + text = path.read_text(encoding="utf-8") + assert "**Status:** implemented (2026-08-19 — CLAUDE-custom.md)" in text + # A falling count must mean something was installed, not that it aged out. + assert routing.pending(routing.parse_file(path)) != routing.parse_file(path) + + +def test_dropping_an_entry_records_why(tmp_path): + path = _day_file(tmp_path, "2026-08-18", ENTRY) + entry = routing.parse_file(path)[0] + + routing.set_status(entry, routing.DROPPED, "already covered by an existing rule", today=TODAY) + + assert "dropped (2026-08-19 — already covered" in path.read_text(encoding="utf-8") + + +def test_two_entries_in_one_file_never_have_their_statuses_crossed(tmp_path): + path = _day_file(tmp_path, "2026-08-18", ENTRY) + second = routing.parse_file(path)[1] + + routing.set_status(second, routing.IMPLEMENTED, "process-meetings SKILL.md", today=TODAY) + + reparsed = routing.parse_file(path) + assert reparsed[0].is_pending, "the first entry must be untouched" + assert reparsed[1].status == routing.IMPLEMENTED + + +def test_an_invented_status_is_refused(tmp_path): + """Without a third state, stale entries either linger or get quietly deleted.""" + path = _day_file(tmp_path, "2026-08-18", ENTRY) + entry = routing.parse_file(path)[0] + + with pytest.raises(ValueError): + routing.set_status(entry, "done", "somewhere") diff --git a/core/utils/learning_routing.py b/core/utils/learning_routing.py new file mode 100644 index 000000000..49223b7fb --- /dev/null +++ b/core/utils/learning_routing.py @@ -0,0 +1,256 @@ +"""Read captured learnings, cluster them, and propose where each should go. + +Written as a starting point for the routing step described in #503 by +@joshm-simril, against the shape @davekilleen specified there. The routing table +below is Josh's, not mine. + +**What this module deliberately does not do: apply anything.** The requirement +that Dex never silently rewrites its own instructions means the edit must be +shown and confirmed before it lands, and confirmation belongs in the skill that +can hold a conversation. Everything here is analysis and bookkeeping: parse the +entries, group the ones that share a cause, propose a destination, and record +the outcome once a human has decided. + +The split matters. Clustering and destination-proposal are mechanical and +testable; deciding whether a proposed edit is right is judgement. Mixing them +would put an unreviewable decision inside a function that looks like a helper. +""" +from __future__ import annotations + +import re +from dataclasses import dataclass, field +from datetime import date, datetime +from pathlib import Path + +LEARNINGS_RELATIVE = Path("System") / "Session_Learnings" + +PENDING = "pending" +IMPLEMENTED = "implemented" +DROPPED = "dropped" + +_HEADING = re.compile(r"^##\s+\[?(?P