promote · git:20261006.39117a3 · 2026-10-06 · sha256 ad53252a3af1aa49

promote git:20261006.39117a3A

Immutable. This exact content never changes and is served at /api/v1/blob/ad53252a3af1aa49.

---
name: promote
disable-model-invocation: true
description: Move this repo's project module (its own agents and skills) into the shared registry as a domain or base module so other repos can use it.
---

# harnist promote — share a project module

```bash
H="${HARNIST_HOME:-$(cat ~/.claude/.harnist/home 2>/dev/null || echo ~/.claude/plugins/marketplaces/harnist)}"
```

## 1. Check that it generalizes

Read the module and show the user anything tied to this repo:

- repo names, local paths and project-specific vocabulary in agent or skill text
- data paths that assume the repo root (`data/...`). Other repos do not have them; add a `rewrites` rule that points to the original location
- rules that only apply here. Keep those in this repo's `overrides.claude_md` instead of promoting them

## 2. Promote

Pick a name that shows layer and purpose, for example `domain/ios-release` or `base/commit-rules`.

```bash
python3 "$H/harnist.py" promote project/<name> --to domain/<new-name>
python3 "$H/harnist.py" generate
```

`promote` moves the module into the shared registry, adds a rewrite rule for `.claude/(skills|agents)/` paths, and renames references in this repo's `harness.yaml` and other project modules. It refuses while the module still depends on another project module.

## 3. Finish

- To use it elsewhere, add the new name to that repo's `harness.yaml` and run `generate` (or `/harnist:init` in edit mode there).
- If every session should have it, add it to the global manifest. The user scope only takes skills, agents and the CLAUDE.md block.
- The module now lives in the registry. Tell the user to back it up or commit it wherever they keep their registry.