# LazyClaude Release Checklist

Status: `lazyclaude-ai@0.1.14` is the current release candidate for the HUD
command XML preview fix and sleepy HUD prefix; this checkout is prepared for
the publish run. Versions `0.1.11`, `0.1.12`, and `0.1.13` already exist on npm
and cannot be published again.

DO NOT publish a new version of LazyClaude, run `npm publish`, push release
tags, or add a remote Claude Code marketplace entry without explicit user
approval.

This release path is for personal install convenience, not advertisement,
public repo promotion, or a public launch campaign.

## Verified Locally

- `npm test`
- `npm run validate:plugin`
- `npm run qa:tmux`
- `npm run qa:portable`
- `npm run pack:dry-run`

## Local / Private Checkout Use

Use this track when testing from the current checkout:

1. Run `npm test`.
2. Run `npm run validate:plugin`.
3. Run `npm run qa:tmux`.
4. Start Claude Code with `claude --plugin-dir ./plugins/lazyclaude`.

No npm publication is required for this track.

## Fresh Machine NPM Install Use

Use this track after an approved npm package version exists:

1. Run `npx --yes lazyclaude-ai install`.
2. Run `npx --yes lazyclaude-ai doctor`.
3. Start Claude Code with the normal `claude` command.

The installer should register `lazyclaude@lazyclaude-ai` in Claude Code's user
plugin registry, `settings.json` `enabledPlugins`, and the LazyClaude-managed
local marketplace metadata needed by `claude plugin details`. Do not ask users
to type a generated command that shells out to `npx --yes lazyclaude-ai path` for
normal npm installs.

Run fresh-machine QA from a fresh directory, not from this repository checkout.
Inside the same-name source checkout, older published builds such as
`npx --yes lazyclaude-ai@0.1.11 install` could resolve the local package and
fail with `sh: lazyclaude-ai: command not found`. Current checkout builds include
the local npx shim. Use `cd /tmp` for the fresh directory scenario, or use the
explicit fresh-prefix form:

```bash
npm exec --prefix "$(mktemp -d)" --yes --package lazyclaude-ai -- lazyclaude install
```

## Quiet Public NPM Package Release Or Update

Use this track only when the user explicitly approves making a new package
version installable through `npm`, `npx`, and `bunx`.

1. Confirm the target package name and version with the user.
2. Review `REFERENCE.md` and `docs/migration.md` for sanitized private-reference metadata.
3. Run `npm whoami` and confirm the intended npm account.
4. Re-run the full local verification set from a clean checkout:
   - `npm test`
   - `npm run validate:plugin`
   - `npm run doctor`
   - `npm run qa:tmux`
   - `npm run qa:portable`
   - `npm run pack:dry-run`
5. Inspect `npm pack --dry-run --json` and confirm package contents.
6. Ask for explicit user approval to publish.
7. Only after approval, perform the selected publication path in a separate,
   auditable release step.

For the current unscoped `lazyclaude-ai` package name, use:

```bash
npm publish
```

If the package is renamed to a scoped package such as `@scope/lazyclaude-ai`,
publish it publicly with:

```bash
npm publish --access public
```

## Accidental Publish Rollback

If the wrong package or version is published, stop and report the incident
before further mutation. Depending on npm policy and timing, choose one audited
rollback action with user approval:

1. `npm deprecate <package>@<version> "<message>"`
2. `npm unpublish <package>@<version>` only when allowed and explicitly approved
3. Publish a corrected patch version after verification

## Marketplace Boundary

Local checkout testing still uses `claude --plugin-dir ./plugins/lazyclaude`.
NPM installs should use the global Claude user plugin registry and normal
`claude` launches. A root Claude marketplace file is intentionally not shipped
because users may already have an OMC/omc marketplace or plugin installed. The
npm installer creates a LazyClaude-managed local marketplace under
`LAZYCLAUDE_HOME` and registers only `lazyclaude-ai` in Claude's user marketplace
metadata so skills and hooks appear in `claude plugin details`. Do not add a
remote marketplace entry without explicit user approval. If user-level OMC
creates `.omc/` state during validation, keep it ignored and confirm it is
absent from the package dry-run.

## Rollback

If a local test load causes problems, stop Claude Code, restart without
`claude --plugin-dir ./plugins/lazyclaude`, and run `/reload-plugins` in any
remaining session that should drop the local plugin metadata.

If an npm-installed LazyClaude copy causes problems, run:

```bash
npx --yes lazyclaude-ai uninstall
```
