Skip to content

feat: add /release one-spell client handoff + rename quality-engineer → quality#126

Open
abdout wants to merge 5 commits into
chore/quality-vocabulary-cleanupfrom
feat/release-orchestrator
Open

feat: add /release one-spell client handoff + rename quality-engineer → quality#126
abdout wants to merge 5 commits into
chore/quality-vocabulary-cleanupfrom
feat/release-orchestrator

Conversation

@abdout
Copy link
Copy Markdown
Contributor

@abdout abdout commented May 28, 2026

Summary

  • Add /release <block> — the one spell to give away your work: chains /handover/check/ship/watch, then auto-comments the production URL on the related GitHub issue and closes it
  • Rename the quality-engineer agent to quality — shorter, matches the pattern of other domain agents
  • Wire release into every keyword surface: project + global CLAUDE.md, quality agent, spellbook, WORKFLOWS

Stacked on top of PR #124 (vocabulary cleanup). The Lifecycle row goes from 6 → 7 verbs.

Why

After PR #124, the "send a feature to a client" flow still required four invocations: handover → check → ship → watch. That's friction for the most common shipping path. /release collapses it to one verb while preserving the four sharp-edged tools underneath — no logic duplication, just sequencing.

Behavior

/release admission
  ↳ Pre-flight: refuse if dirty tree or not on main
  ↳ Resolve issue: --issue #N → HEAD commit Closes/Refs → fuzzy title match
  ↳ Stage 1: /handover admission     (5-pass Playwright QA)
  ↳ Stage 2: /check                   (typecheck + build + visual)
  ↳ Stage 3: /ship                    (vercel --prod with auto-fix)
  ↳ Stage 4: /watch <prod-url>        (smoke test in prod)
  ↳ Stage 5: gh issue comment + close (durable client record)
  ↳ Optional: --notify-slack #demos   (via slack MCP)

Idempotent re-runs via sentinel cache (.claude/release-state.json) — stages that passed in the last 10 minutes skip on retry.

Commits

  1. feat(commands): add /release one-spell orchestrator
  2. refactor(agents): rename quality-engineer → quality, add /release orchestrator
  3. docs(claude.md): add /release to Pipeline + Tools surfaces
  4. feat(spellbook): add release spell + cross-link from check/ship/watch/handover
  5. docs(workflows): add section 1.9 Release to client

Files

Created: .claude/commands/release.md
Renamed: .claude/agents/quality-engineer.md.claude/agents/quality.md
Modified: project + global CLAUDE.md, agents/report.md, commands/profile.md, docs/{AGILE,WORKFLOWS}.md, src/components/docs/spellbook-data.ts, src/components/root/{home,topic}/config.ts

Canonical vocabulary is now 7 verbs

Phase Verb Purpose
Pre-ship /check Typecheck + build + visual + tests
Self-quality /handover Multi-pass Playwright QA before client demo
Ship /ship Production deploy (Vercel --prod)
Post-ship /watch Verify production: visual + console + smoke
Give away /release One spell: handover → check → ship → watch → notify
Resolve /report Auto-fix user-reported issues
Iterate /quick fix → commit → push

Test plan

  • cat .claude/commands/release.md exists with the four delegation stages
  • Fresh session: typing /release admission runs handover → check → ship → watch
  • Successful run posts the production URL + verdict as a comment on the related GitHub issue and closes it
  • Dirty tree or non-main branch → /release refuses with clear blocker
  • grep -rn quality-engineer returns zero matches across the repo
  • pnpm tsc --noEmit shows no new errors from spellbook/config changes
  • Published spellbook at kun.databayt.org/docs/keywords shows the release spell

Closes #125

🤖 Generated with Claude Code

abdout and others added 5 commits May 28, 2026 16:26
The "send it to the client" verb. One invocation chains the four
canonical lifecycle commands, then auto-comments the production URL
on the related GitHub issue:

  /release <block>
    ├─ /handover <block>        (5-pass Playwright QA)
    ├─ /check                    (typecheck + build + visual)
    ├─ /ship                     (vercel --prod)
    ├─ /watch <prod-url>         (post-deploy verify)
    └─ gh issue comment + close  (durable client-facing record)

Behavior:
- Pre-conditions match /ship: working tree clean, on main, up to date
- Delegates to existing commands — no logic duplication
- Idempotent via sentinel cache (.claude/release-state.json):
  re-runs skip stages that passed within the last 10 minutes
- Issue resolution order: --issue #N flag, Closes/Refs in HEAD, fuzzy
  match on type/feat title, prompt user
- Opt-in --notify-slack <channel> uses existing slack MCP

Refs #125

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…hestrator

The agent file's name was a role title ("Quality Engineer"); its job
is routing the 17 niche keywords and the orchestrators. Shorter name
matches that — and matches the pattern of other domain agents
(structure, pattern, etc.).

Renames:
- .claude/agents/quality-engineer.md → quality.md
- frontmatter name: quality-engineer → quality
- heading: Quality Engineer → Quality

Adds /release as the third orchestrator alongside qa and /handover.
The agent now lists three composition keywords with clear delegation
pointers (handover.md, release.md).

Updated references everywhere the agent was named:
- .claude/agents/report.md (handoff + Reports to)
- .claude/CLAUDE.md (path reference)
- .claude/commands/profile.md (qa + ali profiles)
- docs/AGILE.md (role table + handover section)
- src/components/docs/spellbook-data.ts (f("quality") in handover + report spells)
- src/components/root/home/config.ts (id, title, description, href)
- src/components/root/topic/config.ts (key, id, content, references, usage)

URL change: /engine/quality-engineer → /engine/quality. The topic
config also updated the description from "Tracks 19 keywords" to the
truthful "Routes 17 niche keywords; owns qa, /handover, /release."

Refs #125

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Pipeline section: new note describing /release as the one-spell
  client handoff with its preconditions
- Tools/Quality row: add release alongside check, handover, report
- Behavior section: explicit "Send to client → /release <block>"

The global ~/.claude/CLAUDE.md keyword vocabulary table also gets
release added under Lifecycle (now 7 verbs) and a cross-reference
in Orchestrator. That file lives outside the repo.

Refs #125

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…/handover

New spell in Charm Work chapter:

  release — Give away to client — one spell, four stages, durable record
    order:   quality agent, Browser MCP, Vercel, GitHub
    connects: handover, check, ship, watch

Cross-links added so the spell graph reflects the orchestration:
- Pipeline ship → release
- Pipeline check → release
- Pipeline watch → release
- Charm Work ship → release
- Charm Work check → release
- Defense handover → release

Each spell that release composes now points at release as a related
spell. The user discovering /ship or /handover can follow the arrow
to the orchestrator.

Refs #125

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Document the one-spell client handoff. Cross-link from section 1.7
Handover so users see /release as the natural next step after a
clean handover.

Refs #125

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@vercel
Copy link
Copy Markdown

vercel Bot commented May 28, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
kun Ready Ready Preview, Comment May 28, 2026 1:32pm

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