Skip to content

v0.1.0: agent wiring, first-run fixes, OSS layout - #9

Merged
CodeWithInferno merged 1 commit into
mainfrom
v0.1.0-agent-wiring
Jul 28, 2026
Merged

v0.1.0: agent wiring, first-run fixes, OSS layout#9
CodeWithInferno merged 1 commit into
mainfrom
v0.1.0-agent-wiring

Conversation

@CodeWithInferno

Copy link
Copy Markdown
Contributor

Makes tess safe to hand to someone else's laptop, and teaches every AI agent on that laptop to actually use it.

Agent wiring — tess wire

Three layers, run by the installer, idempotent, with --dry-run and --undo:

Layer What Where
Skills portable SKILL.md, loaded only when the task is worktree- or fleet-shaped ~/.agents/skills/ + Claude Code, Cursor, Codex, Gemini, opencode
Guardrail blocks raw git worktree add/remove/move, hands back the tess new equivalent Claude Code PreToolUse · Cursor beforeShellExecution
Primer agent-primer.md fenced into instruction files CLAUDE.md · AGENTS.md · GEMINI.md

Symlinks, not copies, so tess update refreshes every wired agent. The guard fails open in every ambiguous case and only ever denies, never grants — returning permission: allow would have made it approve any command it saw.

Also ships as a Claude Code plugin (.claude-plugin/ + /tess:status|new|ship|fleet|todo). tess wire detects the plugin and skips its own Claude hooks so nothing double-fires.

First-run fixes

Found by auditing a clean machine with an empty HOME:

  • tess claude left orphans. It checked for the agent CLI and fleet backend after creating the worktree and branch. Now preflights before touching disk, and rolls the worktree back if the launch fails.
  • config.example shipped fictional repos. TESS_REPOS="app api" was uncommented, so a new user's first tess new failed about repos they'd never heard of. The fleet is opt-in now.
  • Unknown flags searched your notes. tess --version fell through the dispatcher's catch-all into the vault lookup and printed private note filenames. Unknown options exit 2.
  • status/digest lied when the backend was missing — an empty result and an uninstalled backend were indistinguishable.
  • tess ls leaked a raw find: error on a machine with no worktrees.
  • worktree.sh flag errors pointed at an internal libexec/ path.

Also

tess --version, VERSION, CHANGELOG.md, uninstall.sh (never touches repos, worktrees, or your vault), TESS_NO_AUTOUPDATE=1 opt-out, and README cut from 321 to 75 lines with the detail moved into docs/.

Testing

59 smoke tests, all green — 13 new ones covering every fix above. The tess ls regression test was verified by deliberately re-introducing the bug (suite went 58/1) and restoring it.

Makes tess safe to hand to someone else's laptop, and teaches every AI agent
on that laptop to actually use it.

Agent wiring (`tess wire`) — three layers, run by the installer, idempotent:
- skills: portable SKILL.md linked into every skills root found
  (Claude Code, Cursor, Codex, Gemini, opencode)
- guardrail: a shell hook that blocks raw `git worktree add/remove/move` and
  hands back the `tess new` equivalent. Speaks both Claude Code PreToolUse and
  Cursor beforeShellExecution. Fails open; only ever denies, never grants.
- primer: agent-primer.md fenced into CLAUDE.md / AGENTS.md / GEMINI.md
Symlinks, not copies, so `tess update` refreshes every wired agent.
Ships as a Claude Code plugin too (.claude-plugin/ + 5 slash commands).

First-run fixes found by auditing a clean machine:
- spawn checked for the agent CLI and fleet backend only AFTER creating the
  worktree and branch, leaving orphans behind. Now preflights, and rolls the
  worktree back if the launch fails.
- config.example shipped `TESS_REPOS="app api"` uncommented, so a new user's
  first `tess new` failed about repos they'd never heard of. Fleet is opt-in now.
- unknown flags fell through the dispatcher into the vault note search and
  printed private filenames. They error with exit 2.
- status/digest claimed "no agents running" when the backend was missing.
- `tess ls` leaked a raw find error on a machine with no worktrees.
- worktree.sh flag errors pointed at an internal libexec path.

Also: tess --version, VERSION, CHANGELOG, uninstall.sh, TESS_NO_AUTOUPDATE
opt-out, README cut 321 to 75 lines with detail moved to docs/, and 13 new
smoke tests covering every fix above (59 total, all green).
@CodeWithInferno
CodeWithInferno added this pull request to the merge queue Jul 28, 2026
Merged via the queue into main with commit af69553 Jul 28, 2026
1 check passed
@CodeWithInferno
CodeWithInferno deleted the v0.1.0-agent-wiring branch July 28, 2026 01:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant