Skip to content
Back to skills

Migrate

ASecurity

Adopt govctl in an existing project by discovering and confirming historical decisions, specifications, and active work before backfilling a governed baseline

  • 272 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added June 5, 2026
developmentgobashapidatabase

Works with

  • api

Security analysis

A100/100

Scanned September 30, 2026

npx -y skills add govctl-org/govctl --skill migrate --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Migrate?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Migrate
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/govctl-org-migrate/badge)](https://www.skillsdirectory.com/skills/govctl-org-migrate)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: migrate
description: "Adopt govctl in an existing project by discovering and confirming historical decisions, specifications, and active work before backfilling a governed baseline"
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, TodoWrite
argument-hint: '[optional scope hint, e.g. "focus on database decisions"]'
---

# Brownfield Migration

Adopt govctl incrementally in an existing codebase per [[ADR-0032]], recovering
governance from real evidence without inventing history or changing behavior.
This differs from the `govctl migrate` command, which upgrades outdated
artifact formats in an already governed project.

## Discovery

If `gov/config.toml` is missing, use `init` when the request authorizes
scaffolding; otherwise ask first. If it exists, find what earlier runs already
migrated with `govctl status`, `govctl search <topic>`, and the `rfc`, `adr`,
and `work` list commands. Use `govctl <resource> --help` for current syntax.

Read the smallest useful evidence: docs and changelogs, manifests, schemas, API
contracts, deployment config, code comments that expose durable constraints,
VCS history that shows why a choice was made, and issue trackers only for
active work. Extend an existing artifact that already owns a subject instead of
duplicating it.

## Hard Stops

- Discovery is read-only. Create artifacts or annotate source only after the
  user selects the scope.
- Ask the user before any lifecycle or destructive artifact operation (accept,
  reject, finalize, advance, bump, deprecate, supersede, delete) unless the
  request already authorizes it. Source annotation also needs approval; one
  approval may cover a stated batch.
- Edit governed files only through govctl commands, using root `govctl clause`
  for Clauses.
- Never present inferred rationale, alternatives, requirements, implementation
  or test status, or active work as fact.
- Do not make an RFC normative or advance it just because related code exists.
- Do not create Work Items that track the migration itself.
- Change product code only through approved, behavior-neutral annotations.
- Stop when evidence conflicts, a backfill would misrepresent history, or a
  transition lacks approval or evidence.

## Choosing Candidates

| Candidate        | Backfill when                                                | Never as                           |
| ---------------- | ------------------------------------------------------------ | ---------------------------------- |
| ADR              | Evidence shows a consequential choice and why it was made    | A retroactive source of obligation |
| RFC              | An existing specification or stable contract is identifiable | A dump of current behavior         |
| Work Item        | The user confirms unfinished active or queued work           | A list of every TODO or cleanup    |
| Source reference | A stable, high-signal code site relates to a recovered item  | Blanket or generated-file markup   |

Prefer decisions that are hard to reverse, cross-cutting, or repeatedly
questioned; skip tool-enforced style, incidental dependencies, and behavior
inferred only from code.

For each candidate record the evidence location, what it supports, what is
inferred, whether rationale and alternatives are recoverable, and the proposed
type and priority. Say plainly when evidence is missing: a historical ADR may
omit unrecoverable alternatives but never invents one, and RFC Clauses still
pass the `rfc-writer` contract test. Present this as a compact report and let
the user select, defer, or reject each group before any change.

## Backfill Loop

Work in small batches so partial migration stays useful:

1. Recheck governed state and the selected evidence.
2. Draft with `adr-writer`, `rfc-writer`, or `wi-writer`.
3. Review with `adr-reviewer` or `rfc-reviewer`.
4. Show uncertainties and proposed lifecycle outcomes to the user.
5. Perform only approved transitions.
6. Run `govctl check` and render affected projections.
7. Optionally record the batch with `commit`.

- **ADRs:** reconstruct context and alternatives where evidence allows and
  separate observed consequences from predictions. Accept an adopted choice as
  historical only after user confirmation; route an unresolved one to
  `discuss`.
- **RFCs:** keep traceability to the source. Each phase needs approval and
  evidence: existing implementation for `impl`, complete implementation for
  `test`, and complete implementation and tests for `stable`. Otherwise stop at
  the last defensible phase.
- **Work Items:** include scope, governing references, categorized testable
  criteria, and risk-matched guards.
- **Source references:** follow the repository's comment conventions, use
  resolvable `[[...]]` links, and never claim more conformance than the
  evidence supports.

## Resuming And Failures

On resume, rediscover existing artifacts and references, match candidates by
subject and evidence rather than title, skip completed work, keep user changes
instead of overwriting them, and report the prior partial state.

When a check, render, or review fails, keep the batch unpublished, fix the
content, and rerun the failing check. Never advance lifecycle state to make
validation pass; escalate when no authoritative recovery path exists.

## Done When

- each selected candidate is created, deferred, or rejected explicitly;
- artifacts separate recovered fact from inference, and every lifecycle state
  has evidence and approval;
- annotations resolve and no duplicates or product changes were introduced;
- `govctl check` passes and projections are current; and
- the report lists artifacts, states, annotated paths, uncertain history,
  remaining scope, and validation results.

Normal workflows (`discuss`, `spec`, `gov`, `quick`) can start after the first
coherent baseline; exhaustive backfill is not required.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.