migrate-docs
Discover all documentation in the repo, classify each file, transform content to match harness templates, and migrate everything to the correct location.
Skill by RubenGlez
Chalk Labs
Need help deploying migrate-docs?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/rubenglez-migrate-docs
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: writing, productivity
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/migrate-docs
What's inside
- Skill name
migrate-docs- Description
- Discover all documentation in the repo, classify each file, transform content to match harness templates, and migrate everything to the correct location. Also adopts doctier encrypted tracking for .harness/ on pre-doctier harness projects. Use on any existing project to adopt the harness workflow without starting from scratch.
- License
- MIT
- Instructions
- 176 lines in SKILL.md · view on GitHub
Files (2)
- REFERENCE.md
- SKILL.md
SKILL.md (first lines)
# Migrate Docs
**Precondition: a clean working tree.** The migration ends in a commit of everything it changed; unrelated uncommitted changes would be swept into that commit. If `git status --porcelain` is not empty, stop and ask the user to commit or stash first.
## Step 0: Adopt doctier (pre-doctier harness repos)
Before discovering anything, check whether this repo already uses harness but predates doctier — `.harness/` exists but isn't tracked in git:
```bash
[ -d .harness ] && { [ ! -f .doctier.yml ] || [ -z "$(git ls-files .harness)" ]; } && echo pre-doctier
```
If it prints `pre-doctier`, the docs are already in their harness locations — the migration needed is the storage change, not a doc move. Follow the adoption recipe in [REFERENCE.md](REFERENCE.md) ("Adopting doctier on a repo with an existing (gitignored) `.harness/`"): it runs the doctier bootstrap (Step 4 below), removes the legacy gitignore line, and commits the docs encrypted.
After the adoption, continue with Step 1 only if the repo also has scattered docs outside `.harness/` to migrate. If not, report the adoption — files now tracked (`git ls-files .harness`), ciphertext verified (`git show :.harness/<file> | head -1`), commit hash — and stop; the migration is complete.
## Step 1: Discover
Scan the entire repo for documentation. Do not limit yourself to obvious locations — check everywhere.
**Root-level files**: `README.md`, `CHANGELOG.md`, `HISTORY.md`, `CONTRIBUTING.md`, `CONTRIBUTION.md`, `DESIGN.md`, `SPEC.md`, `PRD.md`, `ROADMAP.md`, `ARCHITECTURE.md`, `SECURITY.md`, `CODE_OF_CONDUCT.md`, and any other `.md` files at the root.
**Common doc directories** — scan recursively: `docs/`, `documentation/`, `wiki/`, `spec/`, `specs/`, `notes/`, `planning/`, `design/`, `.github/`
**Package manifests** — check for usable product context: `package.json` (description, keywords), `pyproject.toml`, `go.mod`, `Cargo.toml`
**Existing harness structure** — read `.harness/` if present to avoid overwriting already-migrated content.
Build a complete inventory: path, one-line description, approximate size. Include everything — classify in the next step.
## Step 2: Classify
For each file, assign one classification:
**`keep-public`** — stays at repo root, no content changes: `README.md`, `CHANGELOG.md`/`HISTORY.md`, `LICENSE`, `CONTRIBUTING.md`/`CONTRIBUTION.md`, `DESIGN.md` when it is a public design-token specification, `SECURITY.md`, `CODE_OF_CONDUCT.md`
**`clean-public`** — stays at repo root but contains internal content to extract: a README mixing architecture decisions, competitive analysis, or internal strategy with public content.
**`migrate`** — move entirely to `.harness/`:
| Content type | Destination |
|---|---|
| Product vision, purpose, audience | `.harness/product/product.md` |
| Roadmap, backlog, feature lists | `.harness/product/roadmap.md` |
| Competitive analysis, market research | `.harness/product/competitors.md` |
| UX flows, interaction design | `.harness/product/ux.md` |
| Domain glossary, entity definitions | `.harness/product/CONTEXT.md` |
| Idea notes, viability research | `.harness/product/idea.md` |
| System architecture, tech stack | `.harness/engineering/architecture.md` |
| Implementation plans, task lists | `.harness/engineering/implementation-plan.md` |
| Feature specs (all in one file, sections per feature) | `.harness/engineering/features.md` |
| Architecture Decision Records | `.harness/adr/NNNN-[slug].md` |
| QA reports, test results | `.harness/qa/report.md` |
**`split`** — file covers more than one harness destination. List each destination and which portion maps there.
**`ignore`** — generated files, lock files, READMEs inside dependency folders.
### Path-referenced docs
Before classifying a file as `migrate`, check whether anything reads it by path: skills, scripts, validators, CI, or links from a public doc (`grep -r "<filename>" --include='*.md' --include='*.yml' -l`, plus the obvious code extensions). A doc that tooling consumes or a public README links to is a functional input — classify it `keep-public` no matter how internal its content looks, and note why in the plan. Moving it breaks the tool or leaves a dangling link, and Step 7 cannot fix a reference that lives inside a skill or script.
### DESIGN.md special case
Do not assume every `DESIGN.md` should stay public. Classify by content:
- Public token/spec file — keep as `DESIGN.md`. It should contain concrete design tokens and contributor-facing implementation rules: colors, typography, spacing, radius, and component tokens.
- UX rationale, product design direction, design principles, interaction model, creative north star, or internal rationale — migrate to `.harness/product/ux.md`.
- Mixed token spec and UX rationale — split it: keep only the public token/spec material in `DESIGN.md`, and move the UX/design-rationale material to `.harness/product/ux.md`.
### Consolidation for existing harness repos
When the repo already uses the harness tree, the migration is also a chance to consolidate an overgrown tree. Fold by default:
- Per-feature spec files (`.harness/engineering/features/[slug].md`) → one `.harness/engineering/features.md` with a section per feature.
- Thin product docs (a few lines each: idea notes, stale research, one-off reports) → merged into `product.md` or dropped if obsolete.
- QA report narrative history → the status-table format from the qa skill's REFERENCE.md (history stays in git).
Apply consolidation only to docs whose content survives the fold — never invent or discard information. Show the fold plan in Step 3 like any other move.
Never link public `DESIGN.md` to `.harness/`, and never keep internal design strategy public just because the filename is `DESIGN.md`.
## Step 3: Show the plan and confirm
Present a table:
```
| Current path | Action | Destination |
|-------------------------|---------------|------------------------------------------|
| docs/vision.md | migrate | .harness/product/product.md |
| README.md | clean-public | README.md (extract strategy to .harness) |
| CHANGELOG.md | keep-public | CHANGELOG.md |
```
Also list: harness files with no source content — these will **not** be created (note which skill produces each properly, e.g. `/product-plan` for product docs, `/dev-plan` for engineering docs) — and files being ignored and why. Never invent content: a harness file only exists if real source material migrated into it.
Ask: "Does this migration plan look right? Anything to change before I proceed?"
Wait for explicit confirmation. Do not write any files until the user approves.
## Step 4: Migrate — spawn parallel subagents
### Doctier bootstrap (once per repo)
`.harness/` is tracked in git as age-encrypted blobs via doctier. If `.doctier.yml` exists at the repo root, skip this — the repo is already set up (a pre-doctier `.harness/` was already handled in Step 0). Otherwise, run the bootstrap in [../_shared/doctier-bootstrap.md](../_shared/doctier-bootstrap.md).
### Spawn the migration subagents
> **Runtime note:** without parallel subagents (e.g. Codex), see [../_shared/runtime-parallelism.md](../_shared/runtime-parallelism.md) and migrate one destination file at a time.
Spawn one subagent per destination harness file **that has source content** — destinations with nothing to migrate are not created (see Step 3). Each writes a different destination file — two subagents must never edit the same `.harness/` file (one writer per doc — concurrent edits merge byte-wise but conflict semantically).
Each receives: full source content, destination path, the canonical template for that destination (mapped in [REFERENCE.md](REFERENCE.md) — the subagent reads the owning skill's template file), and these instructions:
> Transform the source content into the harness template format. Preserve ALL information — do not discard or summarise away anything from the original. Restructure into template sections; if content doesn't fit, add it under the closest match. Do not invent content for empty sections. Write the result to the destination path.
## Step 5: Handle clean-public files
For `clean-public` files: extract internal content to the appropriate `.harness/` file (via the relevant subagent), then edit the public file to remove the extracted sections. Ensure what remains reads cleanly. Never leave a dangling reference.From RubenGlez/harness, MIT.
More from RubenGlez/harness
- 0.552score
metrics
RubenGlez
Measure traction and discoverability across all non-archived GitHub repos and their publications (npm, App Store, Play Store, web properties), judge each…
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
write-a-skill
RubenGlez
Create new harness skills with proper structure, progressive disclosure, and bundled resources.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
task
RubenGlez
Make a small change to a shipped product — a bug fix, behavior tweak, or micro-feature — as one verified slice, syncing the affected feature spec on the way…
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
next-step
RubenGlez
Recommends the next harness skill to use by inspecting the repo, docs, git state, and recent work.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
prototype
RubenGlez
Build throwaway code to answer a specific design question before committing to an implementation approach.
SkillBFreshness: B★ 1Claude Code +9 - 0.544score
product-plan
RubenGlez
Define the full product vision — audience, positioning, features, roadmap, and UX direction — through a structured interview.
SkillBFreshness: B★ 1Claude Code +9 - 0.544score
qa
RubenGlez
Test implemented features against their acceptance criteria, fix simple failures, and write a QA report.
SkillBFreshness: B★ 1Claude Code +9 - 0.544score
dev-plan
RubenGlez
Analyze product docs and the codebase to decide architecture, tech stack, and implementation approach, then generate a technical spec for every must-have…
SkillBFreshness: B★ 1Claude Code +9 - 0.544score
update-docs
RubenGlez
Update all project documentation to reflect the current state of the codebase.
SkillBFreshness: B★ 1Claude Code +9 - 0.544score
implement
RubenGlez
Classify planned features as autonomous or human-approval-required, then implement the current phase as parallel vertical slices — one subagent per feature.
SkillBFreshness: B★ 1Claude Code +9 - 0.497score
address-cves
RubenGlez
Find and fix high and critical application dependency CVEs across all non-archived GitHub repositories available to the authenticated gh CLI user.
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
evolve
RubenGlez
Define what to add, change, or extend on an existing product through a product-level interview, then update the harness docs and hand off to dev-plan.
SkillCFreshness: C★ 1Claude Code +9
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Sep 12, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/RubenGlez/harness
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from RubenGlez
- 0.552score
metrics
RubenGlez
Measure traction and discoverability across all non-archived GitHub repos and their publications (npm, App Store, Play Store, web properties), judge each…
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
write-a-skill
RubenGlez
Create new harness skills with proper structure, progressive disclosure, and bundled resources.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
prototype
RubenGlez
Build throwaway code to answer a specific design question before committing to an implementation approach.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
next-step
RubenGlez
Recommends the next harness skill to use by inspecting the repo, docs, git state, and recent work.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
task
RubenGlez
Make a small change to a shipped product — a bug fix, behavior tweak, or micro-feature — as one verified slice, syncing the affected feature spec on the way…
SkillBFreshness: B★ 1Claude Code +9 - 0.544score
dev-plan
RubenGlez
Analyze product docs and the codebase to decide architecture, tech stack, and implementation approach, then generate a technical spec for every must-have…
SkillBFreshness: B★ 1Claude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get migrate-docs running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
migrate-docs skill. Agent Mart. https://agentmart.dev/skills/rubenglez-migrate-docs (last updated 2026-10-24)