agentleFS
metagit-aimetagit-ai/metagit-cli/skills/metagit-rewrite-campaign/SKILL.md

metagit-rewrite-campaign

Skill4 starsChanged 13 days agoMITView on GitHub

Orchestrate a reference-implementation rewrite across source and target repos using campaigns, parity registry conventions, objectives, and subagent handoffs.

The file

We split this skill into the rules it gives an agent

7 rules. About 0 are common, 2 are distinctive, and 5 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈2

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 5

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Use when one source repo is the specification and one target repo is the rewrite — for example migrating metagit-cli from Python to Rust — …

    line 11
  2. Very specific:

    Read _rewrite/parity-registry.yml.

    line 74
  3. Very specific:

    Update parity registry module status in _rewrite/parity-registry.yml when acceptance passes.

    line 108
  4. Distinctive:

    Treat source as spec until parity is explicitly marked done in the registry

    line 147
  5. Very specific:

    Commit _campaigns/ and _rewrite/ to git for reviewable rollups

    line 148
  6. Very specific:

    Run metagit campaign validate and metagit config validate in CI

    line 149
  7. Distinctive:

    Use approvals for schema-breaking or destructive sync operations

    line 150

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Metagit rewrite campaign skill

<!-- modality:native_campaigns --><!-- modality:objective_mr_approval_binding --><!-- modality:coordination_events_scope -->

Use when one source repo is the specification and one target repo is the rewrite — for example migrating metagit-cli from Python to Rust — under a single umbrella workspace.

Docs: metagit-rewrite-workspace.md · campaigns.md

When to use

  • Two-repo (or small N-repo) rewrite with frozen reference_impl
  • Module parity tracked in _rewrite/parity-registry.yml (BYO convention)
  • Orchestrator + subagents: controller sequences phases; repo agents implement
  • MR rollups and objective spine without a separate spreadsheet

When not to use

  • Simple single-repo feature work → metagit-multi-repo or repo-scoped skills
  • Many-repo rollout without a reference pair → metagit-campaign alone
  • You need automated AST/module diff gates → extend parity registry + CI yourself

Quick start

export METAGIT_AGENT_MODE=true

# Bootstrap coordinator (or copy examples/metagit-rewrite/.metagit.yml)
metagit init ./rewrite-coordinator --create --template metagit-rewrite
cd rewrite-coordinator
metagit config validate
metagit project sync --project rewrite

# Campaign (if not created by init template)
metagit campaign new --slug language-rewrite --title "Language rewrite" \
  --repo rewrite/source --repo rewrite/target \
  --reference rewrite/source \
  --goal "CLI and MCP parity with reference implementation"
metagit campaign validate
metagit campaign expand --slug language-rewrite --dry-run

Granularity model

LayerWhere it livesGranularity
Workspace pair.metagit.yml projects/reposRepo
Campaign rollup_campaigns/<slug>.ymlRepo status, MR, notes
Module parity_rewrite/parity-registry.ymlPhase → module → paths
Active work.metagit/sessions/objectives.jsonObjective id + acceptance
Cross-repo edgegraph.relationshipsSource ↔ target semantics

Objective id convention: rewrite-<phase>-<module> (see objectives.example.json in examples).

Orchestrator session loop

1) Bootstrap context

metagit context pack --tier 2 --json -c .metagit.yml
metagit prompt workspace -k session-start --text-only -c .metagit.yml
metagit campaign status --slug language-rewrite --json

2) Pick the next parity module

Read _rewrite/parity-registry.yml. Choose the first module with status: pending in the earliest incomplete phase. Upsert a workspace objective:

echo '{"id":"rewrite-foundation-config-manager","title":"Parity: config manager","status":"in_progress","repos":["rewrite/target"],"acceptance":"Target loads source manifest fixtures"}' \
  | metagit context objective set

3) Dispatch subagent (target repo)

metagit agent profile show -p rewrite -n target --json
metagit agent apply --vendor claude_code --project rewrite --repo target
metagit context repomix --profile rewrite-target --project rewrite --repo target
metagit prompt repo -k subagent-handoff --text-only -c .metagit.yml \
  --project rewrite --repo target

Source analysis before large extractions:

metagit context repomix --profile rewrite-source --project rewrite --repo source
# GitNexus impact on source symbols (when indexed)

4) Record progress

metagit campaign set --slug language-rewrite --repo rewrite/target \
  --status mr-open --mr "https://github.com/org/repo/pull/1"
echo '{"id":"rewrite-foundation-config-manager","status":"done","mr_url":"https://…"}' \
  | metagit context objective set

Update parity registry module status in _rewrite/parity-registry.yml when acceptance passes.

5) Poll coordination (orchestrator)

metagit context events --campaign language-rewrite --since "<iso-cursor>" --json
metagit context handoff list --json
metagit campaign status --slug language-rewrite --json

Bundled script

SKILL_ROOT="$(python3 -c "import metagit, pathlib; print(pathlib.Path(metagit.__file__).parent / 'data/skills/metagit-rewrite-campaign')")"
"$SKILL_ROOT/scripts/rewrite-orchestrator-cycle.sh" . language-rewrite

Or from a full skill install:

./scripts/rewrite-orchestrator-cycle.sh . language-rewrite

Repomix profiles

Bundled profiles for scoped repo context:

ProfileUse
rewrite-sourceReference implementation analysis
rewrite-targetImplementation work in the rewrite tree
metagit context repomix --profile rewrite-source --project rewrite --repo source
metagit context repomix --profile rewrite-target --project rewrite --repo target

Safety

  • Treat source as spec until parity is explicitly marked done in the registry
  • Commit _campaigns/ and _rewrite/ to git for reviewable rollups
  • Run metagit campaign validate and metagit config validate in CI
  • Use approvals for schema-breaking or destructive sync operations
  • campaign expand --dry-run before fanning out many objectives

Related skills

  • metagit-campaign — campaign YAML lifecycle and expand
  • metagit-multi-repo — cross-repo implementation sequencing
  • metagit-control-center — MCP control-plane polling loop
  • metagit-context-pack — tier 0/1/2 session boundaries
  • metagit-gitnexus — impact analysis on the source repo
  • metagit-graph-maintain — durable graph.relationships for source/target edges

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.