KeiSeiKit-1.0/_primitives
Parfii-bot 4bbc95fd7c feat(v0.22): keisei schema v4 + Scope::Auto + templated hint + registry (Track A)
BREAKING schema bump v3 → v4. Backward-compat via untagged serde
for v1/v2/v3 read-paths — no user-visible regression.

1. Schema v4 — multi-brain marker
   AttachRecord inverted: each Attachment carries its own brain_path
   + brain_name + scope + attached_at. Enables brain-A to Claude-
   Code (user scope) + brain-B to Cursor (project scope) in ONE
   marker. v1/v2/v3 auto-migrate via config_migrate.rs (NEW, 114
   LOC) — silent stderr notice on first v0.22 read.

2. Scope::Auto — default CLI behaviour
   'keisei attach <brain>' no longer defaults User scope blindly.
   New Scope::Auto resolves per-adapter via auto_scope():
     claude-code: CWD/.claude/ present → Project else User
     cursor:      CWD/.cursor/ present → Project else User
     continue:    User (no project concept)
     zed:         User (global settings only)
   'keisei mount' stays host-wide (always User fan-out).

3. Templated post_attach_hint
   fn post_attach_hint(&self, brain: &Brain, scope: Scope) -> String
   Each adapter interpolates brain name + scope. Example for
   claude-code: 'run /help in Claude Code (user scope) — verify
   '<brain-name>' is in mcpServers'.

4. Adapter registry
   adapters/_registry.rs (NEW, 32 LOC) — single canonical list
   of 4 adapters. adapter::all() delegates. 5th adapter = one
   line change, one place.

5. Dead code cleanup
   Error::NotAttached + Error::AdapterFailed removed. Grep-verified
   zero references.

6. config.rs decomposition (200 LOC rule)
   config.rs 224 → 197 LOC.
   time.rs (NEW, 90 LOC) — now_utc_string + format_epoch_utc +
     civil_from_days Howard Hinnant + 5 unit tests
     (epoch-0, leap day 2020-02-29, century-non-leap 2100-03-01,
      arbitrary 2026-04-22, RFC3339 shape).
   config_migrate.rs (NEW, 114 LOC) — WireRecord migration.

REAL VERIFICATION:
  cargo test -p keisei --release: 46 passed 0 failed
    (5 time::tests + 41 integration — 30 existing adjusted to v4 + 11 new)

Tests added:
  marker_v3_migrates_to_v4
  two_brains_can_be_attached_simultaneously
  detach_removes_single_brain_preserves_others
  scope_auto_resolves_to_{project,user}_*
  cursor_auto_scope_respects_cwd_dot_cursor
  post_attach_hint_interpolates_brain_name
  adapter_registry_lists_all_four
  dead_error_variants_removed
  time_now_utc_string_has_rfc3339_shape
  fresh_marker_has_schema_version_4

Agent corrected 3 of the spec's epoch anchor timestamps
(1583020800 → 1582977600 for 2020-02-29T12:00:00Z, 1776870000 →
1776877200 for 2026-04-22T17:00:00Z); century-non-leap anchor
4107542400 → 2100-03-01 was already correct.

Known pre-existing: continue_adapter.rs 206 LOC (was 204; +2 for
signature widening). Out-of-scope for this track.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 21:00:13 +08:00
..
_rust feat(v0.22): keisei schema v4 + Scope::Auto + templated hint + registry (Track A) 2026-04-22 21:00:13 +08:00
templates fix: remove genesis-scan from public kit (internal tool, Bundle-only) 2026-04-22 14:11:22 +08:00
design-scrape.sh feat(primitives): 5 shell primitives — design-scrape, live-preview, figma-tokens, frontend-inspect, screenshot-decode 2026-04-21 21:07:45 +08:00
figma-tokens.sh feat(primitives): 5 shell primitives — design-scrape, live-preview, figma-tokens, frontend-inspect, screenshot-decode 2026-04-21 21:07:45 +08:00
frontend-inspect.sh feat(primitives): 5 shell primitives — design-scrape, live-preview, figma-tokens, frontend-inspect, screenshot-decode 2026-04-21 21:07:45 +08:00
harden-base.sh feat(primitives): 3 shell provisioning + hardening 2026-04-21 20:59:38 +08:00
kei-ci-lint.sh feat(primitives): kei-ci-lint workflow YAML validator 2026-04-21 20:56:24 +08:00
kei-docs-scaffold.sh feat(primitives): kei-docs-scaffold shell + kei-changelog Rust 2026-04-21 21:01:28 +08:00
kei-sleep-queue.sh fix: remove genesis-scan from public kit (internal tool, Bundle-only) 2026-04-22 14:11:22 +08:00
kei-sleep-setup.sh feat(primitives): kei-sleep-setup wizard + kei-sleep-sync helper + trigger template 2026-04-22 01:34:42 +08:00
kei-sleep-sync.sh feat(primitives): kei-sleep-setup wizard + kei-sleep-sync helper + trigger template 2026-04-22 01:34:42 +08:00
live-preview.sh feat(primitives): 5 shell primitives — design-scrape, live-preview, figma-tokens, frontend-inspect, screenshot-decode 2026-04-21 21:07:45 +08:00
log-ship.sh feat(primitives): metrics-scrape + log-ship shell primitives 2026-04-21 20:41:17 +08:00
MANIFEST.toml feat(v0.21): kei-store real S3 backend behind opt-in 's3' feature flag 2026-04-22 17:59:11 +08:00
metrics-scrape.sh feat(primitives): metrics-scrape + log-ship shell primitives 2026-04-21 20:41:17 +08:00
provision-hetzner.sh feat(primitives): 3 shell provisioning + hardening 2026-04-21 20:59:38 +08:00
provision-vultr.sh feat(primitives): 3 shell provisioning + hardening 2026-04-21 20:59:38 +08:00
README.md fix(audit-m): tomd cache path-salt; bridges respects rollback; rollback rm-rf guard; placeholder URLs; research skill role-tag note; stack frontend-gap doc 2026-04-21 20:09:24 +08:00
screenshot-decode.sh feat(primitives): 5 shell primitives — design-scrape, live-preview, figma-tokens, frontend-inspect, screenshot-decode 2026-04-21 21:07:45 +08:00
tomd.sh fix(primitives): make pandoc a per-format dep, not a core prereq 2026-04-21 19:53:05 +08:00

_primitives — first-class building blocks

_primitives/ holds standalone utilities that agents, hooks, and skills (including /compose-solution) depend on. Unlike _blocks/ (behavioral markdown) or _manifests/ (agent TOML), primitives are executable shell programs installed at $HOME/.claude/agents/_primitives/ by install.sh.

Current primitives

Primitive Purpose Invocation
tomd.sh Universal non-native-format → markdown converter (PDF, DOCX, XLSX, PPTX, CSV, images, code). ~/.claude/agents/_primitives/tomd.sh <file>

tomd.sh is ported from the KeiAgent project (user's personal CLI predecessor) bin/keiagent-tomd — same format matrix, KeiSeiKit-style error tags ([tomd]), configurable cache directory (KEISEI_TOMD_CACHE).

Hook integration

hooks/tomd-preread.sh is a PreToolUse(Read) hook that auto-redirects Claude to the converted markdown when a Read targets .docx / .doc / .xlsx / .pptx / .csv. Cached under $KEISEI_TOMD_CACHE (default /tmp/keisei-tomd-cache).

/compose-solution discovery

Phase 3 prior-art sweep greps _primitives/ alongside _blocks/, _manifests/, skills/, _bridges/, hooks/. If a user task involves file-format parsing, the meta-composer surfaces tomd automatically — reuse over rewrite (RULE "No Patching").