Skip to content
Skill Authoring
Skill

/change-publish

Use when accepted ChDRs are ready for promotion from drafts to project memory at docs/adlc/memory/chdr/ and the boot-facing chdr.md index needs regenerating.

BOOST
From plugin
adlc-team-skills
14345 skills
Install
$ npx -y skills add tikalk/adlc-team-skills --skill change-publish --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/change-publish

Context preview

The summary Claude sees to decide when to auto-load this skill.

Use when accepted ChDRs are ready for promotion from drafts to project memory at docs/adlc/memory/chdr/ and the boot-facing chdr.md index needs regenerating.

SKILL.md

change-publish.SKILL.md
name: change-publish
description: Use when accepted ChDRs are ready for promotion from drafts to project memory at docs/adlc/memory/chdr/ and the boot-facing chdr.md index needs regenerating.
disable-model-invocation: true

change-publish

What this skill does

Compile **accepted ChDRs** into the project's memory layer at `{REPO_ROOT}/docs/adlc/memory/chdr/`:

  • Validate accepted ChDRs (status + provenance on Decision claims)
  • Write each promoted ChDR to `docs/adlc/memory/chdr/ChDR-{NNN}.md` with OKF-style frontmatter
  • Regenerate `{REPO_ROOT}/docs/adlc/memory/chdr.md` — the **boot-facing index** that `team-boot` injects into the session-start context (same convention as `pdr.md`/`adr.md`)
  • Mark source drafts `### Status: **Published**`

Unlike `/team-levelup` (which opens a PR against team-ai-directives), `change-publish` writes **project-local memory** — ChDRs describe this repo's evolution and fail the team-wide signal gate. No PR is created; the user commits via their normal flow.

**This skill does not run until ChDRs have been accepted via `/change-clarify`.**

When to use

  • **After `/change-clarify`**: accepted ChDRs need promotion to memory
  • **After re-running `/change-init`**: new accepted ChDRs to add to the memory index

When NOT to use

  • **No accepted ChDRs**: run `/change-clarify` first
  • **Discovering ChDRs**: use `/change-init`
  • **Reviewing ChDRs**: use `/change-clarify`

Process

User Input

$ARGUMENTS

**Examples**:

  • `"ChDR-001 ChDR-003"` — promote only specific ChDRs
  • Empty input: promote all accepted ChDRs

Role & Context

You are acting as a **Memory Publisher** — moving accepted ChDRs from local drafts to durable project memory. Your role:

  • Validate provenance one more time (the poisoning circuit breaker — a promoted unprovenanced decision poisons every future session via team-boot)
  • Write promoted records with frontmatter that `team-boot` can index
  • Regenerate the `chdr.md` index so the next session start sees the new decisions

Outline

1. **Environment Setup** (Phase 0): resolve paths, list accepted ChDRs 2. **Prerequisites Check** (Phase 1): ensure accepted ChDRs exist 3. **Provenance Validation** (Phase 2): re-verify every Decision claim has SHA/URL 4. **Duplicate Check** (Phase 3): skip ChDRs already in memory with same issue key 5. **Memory Record Generation** (Phase 4): write `docs/adlc/memory/chdr/ChDR-{NNN}.md` 6. **Index Regeneration** (Phase 5): rebuild `docs/adlc/memory/chdr.md` (boot-facing) 7. **Draft Status Update** (Phase 6): mark promoted drafts `Published` 8. **Summary** (Phase 7): report results

Execution Steps

Phase 0: Environment Setup

Run:

scripts/bash/setup-change-publish.sh

Parse JSON for `REPO_ROOT`, `CHDR_DRAFTS_DIR`, `MEMORY_DIR`, `MEMORY_INDEX`, `ACCEPTED_CHDRS`.

**If the setup script is unavailable or fails**, resolve manually:

1. `REPO_ROOT` — walk up to `.adlc/`, or `git rev-parse --show-toplevel`. 2. `CHDR_DRAFTS_DIR` — `REPO_ROOT/.adlc/drafts/chdr` 3. `MEMORY_DIR` — `REPO_ROOT/docs/adlc/memory/chdr` 4. `MEMORY_INDEX` — `REPO_ROOT/docs/adlc/memory/chdr.md` (sibling of `docs/adlc/memory/pdr.md`/`adr.md`) 5. `ACCEPTED_CHDRS` — `grep -l '^### Status: \*\*Accepted\*\*' CHDR_DRAFTS_DIR/ChDR-*.md`

Phase 1: Prerequisites Check

If `ACCEPTED_CHDRS` is empty:

No accepted ChDRs found.
Run /change-clarify to accept ChDRs first.

Phase 2: Provenance Validation

For each accepted ChDR, re-verify: every non-trivial sentence in `### Decision` references a SHA (`\b[0-9a-f]{7,40}\b`) or URL (`https?://`). Skip ChDRs that fail provenance — they cannot be promoted (poisoning risk):

## Provenance Validation

**Passing**: N | **Skipped**: M

### Skipped ChDRs

| ChDR | Reason |
|---|---|
| ChDR-XXX | Decision claim lacks SHA/URL provenance |

Skipped ChDRs remain `Accepted` in drafts for the user to fix.

Phase 3: Duplicate Check

For each passing ChDR, check if a memory record already exists with the same `### Issue Links` key. If so, skip (or offer to merge) — do not create duplicates.

Phase 4: Memory Record Generation

For each accepted ChDR, write `{MEMORY_DIR}/ChDR-{NNN}.md`:

---
type: ChDR
title: {title from heading}
description: {descriptor from draft}
resource: ./docs/adlc/memory/chdr/ChDR-{NNN}.md
tags: [chdr]
generated:
  by: agent:change-publish
  at: {today}T00:00:00Z
id: ChDR-{NNN}
created: {date from draft}
verified:
  - by: agent:change-publish
    at: {today}T00:00:00Z
status: stable
stale_after: 365d
sources:
  - id: {sha}
    resource: git:{sha}
    title: {commit subject}
  - id: {issue-key}
    resource: {issue-url}
    title: {issue title}
---

# {Title}

{Content from draft — Context, Decision, Consequences, Evidence verbatim}

## Source

Promoted from: .adlc/drafts/chdr/ChDR-{NNN}.md

Phase 5: Index Regeneration (boot-facing)

**This is the integration point with `team-boot`.** Regenerate `{MEMORY_INDEX}` (`{REPO_ROOT}/docs/adlc/memory/chdr.md`) by listing all `ChDR-*.md` files in `{MEMORY_DIR}` and building a markdown table whose rows start with `| ChDR-` (the awk filter `team-boot` uses):

# Change Decision Records (Memory)

## ChDR Index

| ID | Title | Status | Date | Issues | Commits | Descriptor |
|----|-------|--------|------|--------|---------|------------|
| ChDR-001 | Why payments retries are capped at 3 | stable | 2026-08-16 | PROJ-123 | abc1234 | Consult before changing retry config |

**Stats**: N entries | Last Updated: YYYY-MM-DD

`team-boot`'s `boot.sh`/`boot.ps1` reads this file and emits a `## ChDR Index` section + `CHDR_COUNT` into the session-start context, alongside the PDR/ADR indexes.

Phase 6: Draft Status Update

For each promoted ChDR, update the draft file's status to `### Status: **Published**` and add:

### Promotion

- **Date**: [YYYY-MM-DD]
- **Memory path**: docs/adlc/memory/chdr/ChDR-{NNN}.md

Phase

Read more
Ships withadlc-team-skills

Agent skills that give coding agents your team's context at session start, so they stop working like strangers.

Get the whole plugin

Other skills on adlc-team-skills.