Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,11 @@ All notable changes to the claude-plugins project will be documented in this fil

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). Entries are listed newest-first; each plugin section is treated as released when merged to `main`.

### vibe v1.0.85

#### Added
- `vibe-setup-worker` now handles a missing Clerk sign-in key: when the real Clerk stack is needed and `local.env` has no Clerk keys, it does not fetch or type secrets and tells the person to run `! just clerk-keys` (after `aws sso login` if needed), then continues.

### vibe v1.0.84

A mid-run scope change or answer sent to a Claude writer is now acknowledged by id and watched, so a writer stuck in one long turn is caught within the hour instead of when the operator asks (ISS-13096).
Expand Down
2 changes: 1 addition & 1 deletion plugins/vibe/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "vibe",
"description": "Vibe sessions, handoff, seed refresh, and ClosedLoop ticket workflows",
"version": "1.0.84",
"version": "1.0.85",
"dependencies": ["closedloop-core"],
"author": {"name": "ClosedLoop", "email": "support@closedloop.ai"}
}
2 changes: 1 addition & 1 deletion plugins/vibe/.codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "vibe",
"version": "1.0.84",
"version": "1.0.85",
"description": "Vibe sessions, handoff, seed refresh, and ClosedLoop ticket workflows",
"author": {"name": "ClosedLoop", "email": "support@closedloop.ai"},
"homepage": "https://github.com/closedloop-ai/claude-plugins",
Expand Down
2 changes: 1 addition & 1 deletion plugins/vibe/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -523,7 +523,7 @@ harness switch instead of another worker doing its work.

## Runtime Files

Version `1.0.84` contains 12 skills, 16 agents, and one hook manifest
Version `1.0.85` contains 12 skills, 16 agents, and one hook manifest
(`hooks/hooks.json`). It has no standalone commands, root-level shell scripts,
or production Python tools under
`tools/python/`; that directory contains the skill-contract test modules and
Expand Down
7 changes: 7 additions & 0 deletions plugins/vibe/agents/vibe-setup-worker.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,13 @@ The checkout is the one the preflight remembered
as `NEEDS_PERSON` in one plain line. When it is not configured at all,
return `BLOCKED` saying the closedloop-graph connector is missing, for
engineering.
- Real Clerk sign-in stack (for example `just dev`) needed and `local.env` has
no Clerk keys (`NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY` or `CLERK_SECRET_KEY`
blank or absent): never fetch or type the secrets yourself. Tell the person
to run `! just clerk-keys` in the repository (after
`aws sso login --profile <their stage profile>` if needed), returned as
`NEEDS_PERSON` in one plain line, then continue. Agent verification stacks
run Clerk-free and never need this.
- Bootstrap: run `./.closedloop-ai/loops-setup.sh` in the worktree; on failure
read its output and fix the cause if it is a missing prerequisite.
- Local Storybook: start it detached in the worktree on a free port from 6100
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

from __future__ import annotations

import json
from pathlib import Path


Expand All @@ -15,11 +14,6 @@ def read(path: Path) -> str:
return path.read_text()


def test_release_and_both_manifests_are_1084() -> None:
for manifest in (".claude-plugin/plugin.json", ".codex-plugin/plugin.json"):
assert json.loads(read(ROOT / manifest))["version"] == "1.0.84"


def test_orchestrator_sends_scope_changes_through_the_board_and_acts_on_its_flags() -> None:
skill = read(FLEET / "SKILL.md")
assert "deliver <id> --kind scope --to <writer> --text <change>" in skill
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
"""Contracts for the vibe 1.0.85 release: the setup worker points a missing Clerk key at `just clerk-keys`."""

from __future__ import annotations

import json
from pathlib import Path


ROOT = Path(__file__).resolve().parents[2]


def test_release_and_both_manifests_are_1085() -> None:
for manifest in (".claude-plugin/plugin.json", ".codex-plugin/plugin.json"):
assert json.loads((ROOT / manifest).read_text())["version"] == "1.0.85"


def test_setup_worker_sends_missing_clerk_keys_to_the_person() -> None:
text = " ".join((ROOT / "agents" / "vibe-setup-worker.md").read_text().split())
assert "never fetch or type the secrets yourself" in text
assert "`! just clerk-keys`" in text
assert "`aws sso login --profile <their stage profile>`" in text
Loading