Skip to content

v1.2.0: fixes, Claude Code drift, simpler kit

Choose a tag to compare

@chacosoldier chacosoldier released this 25 Sep 09:19
· 5 commits to main since this release
bf113ad

Maintenance release: the modules and skills that shipped since 1.1.1, fixes
for bugs found in a full audit, the Claude Code changes since June, and a
smaller kit. Safe to pull with ./update.sh: your vault/, memory/,
config/user.config.yaml, .mcp.json, and .env are untouched, and any new
config flags are added for you.

If you edited kit files, update.sh may ask you to merge the ones this
release also changed: every agent in .claude/agents/, .claude/settings.json,
CLAUDE.md, the add-agent, mcp-debug, and memory-debt skills, setup.sh,
update.sh, everything in scripts/ and docs/, and the proactive, telegram,
transcribe, dictation, and integrations modules. git diff --stat v1.1.1 v1.2.0
lists them all. Personas and the other skills are unchanged.

Added

  • dictation module: a cleanup endpoint your dictation app (e.g. Handy)
    posts to. It fixes punctuation and fillers, and rewrites words it keeps
    getting wrong using a glossary that grows itself from recurring corrections.
    OpenAI-compatible upstream (Groq by default, Ollama for fully local).
  • /weekly-review skill: end-of-week review of what got done, what
    slipped, decisions, commitments, and next week's top three (#16).
  • researcher persona preset for academia and R&D (#19).
  • Spanish README intro at docs/i18n/README.es.md (#23).
  • Linux and WSL troubleshooting section in the README (#14).
  • scripts/migrate-config.sh: adds config keys a kit update introduces,
    inside the right block, with a .bak; never changes a value you set.
    update.sh runs it, and scripts/init.sh warns when keys are missing.
  • scripts/lib/common.sh: shared output helpers and set_config_flag.
  • transcribe module (highly encouraged) — one-hotkey local call recording +
    transcription. A toggle script drives ffmpeg to capture audio and
    mlx-whisper to transcribe it on-device: first run records, second run stops,
    transcribes, copies the text to your clipboard, and files a markdown transcript
    (with frontmatter) into vault/raw/meetings/ for your notes pipeline. Defaults
    to an aggregate device so both sides of a call are captured. No cloud service,
    no API key, audio never leaves the machine. Device names are overridable via
    TRANSCRIBE_DEVICE_* env vars (record.py devices lists yours); optional
    Hammerspoon/Raycast hotkey binding documented. Opt-in via transcribe: true.
  • crm-merge module + /merge-contacts skill — folds Google Contacts (Takeout
    vCards), a LinkedIn data export (Connections + messages), and your vault
    People/ notes into one local source of truth: a SQLite DB, a JSON file, and a
    self-contained offline HTML browser. Identity resolution uses union-find on
    three keys (verified email, LinkedIn slug, normalized name) with a common-name
    collision guard, so duplicates collapse without over-merging generic names.
    Relationship strength (LinkedIn message count) ranks records. No credentials,
    all stdlib, idempotent. Outputs are git-ignored.
  • lead-pipeline module + /build-list skill — turns a raw candidate list
    into a ranked, CRM-aware outbound list through staged steps that write one CSV
    per stage (discover → clean → dedup-against-CRM → enrich → score → top-N).
    The deterministic stages (clean, dedup, score) run as a stdlib script;
    discovery and enrichment run as assistant steps over optional MCP servers (exa
    free tier minimum; an enrichment provider optional). Dedup tags each lead
    proceed (cold), warm (you already know someone at the account, route the
    intro), or skip (already a known contact), so you never enrich or cold-email
    a relationship. ICP scoring is a tunable JSON rubric (icp.example.json).
  • /chart-tufte skill — self-grade rubric for any quantitative chart,
    grounded in Edward Tufte's Visual Display of Quantitative Information.
    Nine criteria, ten genres, seven remedies, plus a 114-line
    references/vdqi-catalogue.md with named failures (NYT MPG 14.8, TIME
    barrel 59.4) and named exemplars (Minard, Marey, Snow, Playfair). Designed
    to run as the final pass inside /visual-explainer whenever the output is
    a chart.
  • /mcp-debug skill — health-check, trace, or audit your configured MCP
    servers when tools fail silently. Three modes: status (per-server
    reachability), trace <tool> (likely failure mode for one tool), audit
    (recommendations for unused / high-error / duplicate servers). Reads
    ~/.claude.json and ./.mcp.json; redacts secrets in every output.
  • /memory-debt skill — review and apply memory updates that earlier
    sessions proposed but never wrote. Scans vault/Daily/, vault/Reflections/,
    and vault/Journal/ for - [ ] proposals from /reflect, classifies each
    as PENDING / STALE / OBSOLETE / APPLIED, then in apply mode walks through
    approvals one by one. Closes the loop between /reflect (proposes) and
    memory/.

Changed

  • Agents follow your model. Every agent uses model: inherit instead of
    sonnet, so switching models in Claude Code switches the agents too. On a
    Pro plan, see the README for pinning them back to Sonnet. Scheduled modules
    still run on Sonnet.
  • Install Claude Code with the native installer
    (curl -fsSL https://claude.ai/install.sh | bash); npm stays documented as a
    fallback (Node 22+). Docs links point at code.claude.com.
  • README model section rewritten (closes #9): Claude Code's default is now
    Opus 5.5 on every paid plan; how to change it per session, per project, or
    globally.
  • Integrations: pins bumped (@playwright/mcp 0.0.82, scrapling-fetch-mcp
    0.2.4, mcp-server-time 2026.8.18, exa-mcp-server 3.4.1, which needs
    Node 20+). Gmail and Calendar now point at Claude's own connectors.
  • SessionStart hook also runs after /clear and in forked sessions.
  • Config template: flags for crm_merge and lead_pipeline; persona list
    shows all six.
  • transcribe and dictation install their Python dependency into a
    module venv (Homebrew Python refuses a global pip install); record.py
    switches to its venv on its own, so hotkeys keep working.
  • update.sh says what to do on a local-only branch or detached HEAD
    instead of blaming the network.
  • scripts/init.sh checks for Python 3.10+ and counts only real agents.

Removed

  • Tool-scope guard hook (never released): it was not wired into
    settings.json, needed jq, and matched no context the kit sets.
  • Stub modules extra-agents, team, and whatsapp, which were README
    files only. Their reasoning now lives in the "Not built" section of
    modules/README.md; the roadmap is issue #12.
  • mcp-server-fetch from the integrations catalog (Claude Code's built-in
    WebFetch covers it) and the empty google category.
  • Dead config keys: preferences.timezone, extra_agents, team. Existing
    configs keep them; nothing reads them.

Fixed

  • Weekly review ran on Saturday on macOS: launchd counts Sunday as 0, so
    Weekday 6 was Saturday. Now Friday.
  • Scheduled runs could not find claude under launchd's minimal PATH
    (proactive, telegram).
  • The agent template registered as a real agent. It is now
    .claude/agents/_agent-template.md.template.
  • install-integrations.sh left an empty .mcp.json on runs that added
    nothing.
  • Docs claimed config/ is git-ignored; only config/user.config.yaml is.
  • /add-agent and the customization guide pointed at
    _orchestrator-reference.md as an agent registry; routing lives in
    CONSTITUTION.md.
  • Telegram README said the hook "blocks until you approve"; the hook always
    blocks, and you send with send.sh yourself.

Full changelog: v1.1.1...v1.2.0