Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Sync root VISION.md from changed human and agent inputs; use when project taste, doctrine, or maintainer judgment should learn from recent plans, docs, skills, reviews, or repeated misses.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-17 | ✗→✓ | ▲ Improved | 3% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 47% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 29% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 81% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 93% | 0% |
Handle $ARGUMENTS.
VISION.md is living project taste. Treat it like the project doctrine layer: learn from repeated human answers, agent misses, plans, docs, skills, research, reviews, and handoffs, then ignore noise.
This skill is the incremental sync lane. It does not replace a vision router. It keeps root VISION.md current by analyzing changed durable inputs since the last synced commit. Root VISION.md is the mandatory essential read and single project vision source.
Use autogoal before mutable work. This is a derived autogoal workflow.
docs/plans/templates/sync-vision.md when it exists.autogoal task template with agent-native and docspacks when available.
advancement.
and N/A rows.
autogoal owns lifecycle, first-checkpoint requirement extraction,completion semantics, output-budget discipline, and check-complete.mjs.
sync-vision owns input-range accounting, candidate classification, rootdoctrine patch rules, status semantics, and baseline advancement.
Goal handle shape:
txtSync vision; done when changed inputs are classified, VISION.md is patched or reaffirmed, baseline semantics are recorded, and checks pass; plan docs/plans/<path>.md.
Durable state lives in:
txtdocs/sync/vision/status.json docs/sync/vision/runs/<date>-<base>-to-<target>/
status.json fields:
lastSyncedCommit: every relevant committed input through this commit hasbeen classified as captured, reaffirmed, rejected, run-specific, owner-routed, or deferred-with-question.
lastSyncedAt: when the baseline was advanced.lastRunDir: latest run artifact directory.lastTargetCommit: latest target commit analyzed.pendingRunDir: run with unresolved decisions, or null.Never advance lastSyncedCommit merely because artifacts were written. Advance only after the committed range is fully accounted for. Working-tree overlays are visible in artifacts but are not baselined until committed.
Working-tree overlays include relevant untracked files. New doctrine docs, plans, rule files, and root docs must be visible in artifacts before commit, but they are not baselined until committed.
Projects may customize the helper with:
txtdocs/sync/vision/config.json
Supported fields:
includePathspecs: extra git pathspecs to collect.exactInputFiles: extra exact file paths.inputPathPrefixes: extra directory prefixes.excludePathPrefixes: extra excluded prefixes.trackedExts: extra text-like extensions.patterns: extra candidate regexes by category.Keep config project-local. Do not put private URLs, account IDs, or temporary branch state in dotai.
status: read status.json, current HEAD, committed diff count, andworking-tree overlay count. No writes.
preview: write run artifacts and recommendations. Do not patch VISION.md.Do not advance baseline.
sync: default. Write artifacts, patch root VISION.md forhigh-confidence reusable decisions, route non-vision owners, and advance baseline only if all committed inputs are classified.
advance: update status.json to current HEAD only after the active planproves the range is fully accounted for.
Use the helper for accounting from the project root:
bashnode .agents/skills/sync-vision/scripts/collect-vision-diff.mjs --status node .agents/skills/sync-vision/scripts/collect-vision-diff.mjs --dry-run node .agents/skills/sync-vision/scripts/collect-vision-diff.mjs node .agents/skills/sync-vision/scripts/collect-vision-diff.mjs --advance --plan docs/plans/<plan>.md
The helper writes:
changed-files.tsvcandidate-lines.tsvsummary.mdrun.jsonAnalyze changed durable inputs, not the whole repo every time:
VISION.mdAGENTS.md.agents/AGENTS.md.agents/rules/**skills/** when the repo uses top-level source skills, as dotai doesdocs/plans/**docs/sync/** except docs/sync/vision/runs/**docs/research/**docs/solutions/**content/docs/**Generated .agents/skills/** mirrors are not primary input when a source rule or top-level skills/** source exists. Use generated mirrors only for sync audits.
Every candidate line or theme becomes one of:
captured: patch root VISION.md with a compact latest-state rule.reaffirmed: already covered by root; record the section.rejected: stale, one-off, contradicted, too narrow, or not project taste.run-specific: belongs in the active plan only.owner-routed: belongs in a skill/rule, research doc, benchmark target,package docs, product spec, behavior spec, or migration guide instead of VISION.md.
deferred-with-question: missing taste; queue one concise question and donot advance the baseline unless the range can be safely accounted for without it.
Promote to root VISION.md when the rule is reusable project doctrine: global taste, source order, cross-boundary law, public API doctrine, proof standards, review attention, owner-specific doctrine, or supervisor stop conditions.
Do not promote:
autogoal, create or continue a sync-vision plan, and copy everyuser requirement into checkpoint zero.
VISION.md.docs/sync/vision/status.json if present.status or collection mode.summary.md, candidate-lines.tsv, and the changed source files thatactually contain high-signal candidates.
VISION.md only for capturedclusters. Write current-state doctrine, not changelog prose.
validation command.
lastSyncedCommit only when the committed range is fullyclassified.
Advance baseline when all are true:
lastSyncedCommit to target;VISION.md was patched or explicitly reaffirmed for reusable taste;Do not advance baseline when:
status or preview;Include:
sync-vision command.Keep it short. The run artifacts hold the detail.
Other measured skills in the registry, with their headline benchmark lift.