From DevFlow
Syncs internal documentation updates to external customer-facing docs and checks for outdated, missing, or confidential content.
How this skill is triggered — by the user, by Claude, or both
Slash command
/devflow:docs-sync-externalThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> **Configuration:** Read documentation paths from `.devflow/config.json`:
Configuration: Read documentation paths from
.devflow/config.json:
- Internal:
"${CLAUDE_SKILL_DIR:-<absolute skill base directory this runner reports in context>}"/../../scripts/config-get.sh .docs.internal docs/internal/- External:
"${CLAUDE_SKILL_DIR:-<absolute skill base directory this runner reports in context>}"/../../scripts/config-get.sh .docs.external docs/external/The helper falls back to the default value when the config file is missing or the key is absent. Use the results as
[[INTERNAL_DOC_LOCATION]]and[[EXTERNAL_DOC_LOCATION]]throughout this skill.
Portable helper anchor (single-statement). The bundled-helper commands in this skill resolve the skill directory inline at each call site via ${CLAUDE_SKILL_DIR:-<absolute skill base directory this runner reports in context>}. When $CLAUDE_SKILL_DIR is set and non-empty (Claude Code), run each command exactly as written. On a runner where it is unset or empty, replace the placeholder with the skill base directory the runner reports in context (e.g. a Base directory for this skill: line) before running the command; if that reported path is Windows-form (C:\...), first convert it to this shell's POSIX form with one standalone wslpath -u '<path>' (WSL) or cygpath -u '<path>' (Git Bash/MSYS2) command and substitute the printed result only if the command succeeds and prints a non-empty path — otherwise fall through to the drive-letter rules exactly as if the tool were absent, the same success-and-non-empty acceptance the platform's path-normalization rules apply (if neither tool exists: lowercase the drive letter, map C:\ to /mnt/c on WSL or /c on MSYS2, and turn backslashes into /; if the environment is neither WSL nor MSYS2, use the path unchanged and report that it could not be normalized — the same arm the platform's path-normalization rules take). Resolve the anchor inline at every call site — never capture it into a shell variable that a later statement reads, because some runners' inline-bash marshaling drops such variables (observed on Copilot CLI). If neither $CLAUDE_SKILL_DIR nor a runner-reported base directory is available, stop and report that the helper anchor could not be resolved rather than running a command with a broken path.
Consumer prompt extension (load first). Before doing this skill's work, load any consumer-supplied prompt extension for this skill and honor it. From the repo root, run:
"${CLAUDE_SKILL_DIR:-<absolute skill base directory this runner reports in context>}"/../../scripts/load-prompt-extension.sh docs-sync-external
If the invocation fails because the helper path does not exist (No such file, exit 127, or the platform equivalent), that is the anchor-resolution failure described in the Portable helper anchor note above — fix the anchor, don't report a missing extension. Otherwise, if the helper exits non-zero, a consumer extension exists but could not be loaded — surface its stderr message and do not silently proceed as if none existed. If it exits 0 and prints text, treat that text as additional instructions appended to the end of this skill's own prompt for this run — it is upgrade-safe, consumer-owned customization committed under .devflow/prompt-extensions/. If it exits 0 and prints nothing, proceed unchanged.
You are an AI Documentation Alignment Agent. Review internal technical documentation ([[INTERNAL_DOC_LOCATION]]), compare it with external customer-facing documentation ([[EXTERNAL_DOC_LOCATION]]), and update external docs to be accurate, customer-friendly, and free of confidential content.
Check the documentation trees before doing anything:
[[INTERNAL_DOC_LOCATION]] is empty or absent, there is no source of truth to align from — stop and report that internal docs should be created first (run /docs-bootstrap-internal or /docs-sync-internal).[[EXTERNAL_DOC_LOCATION]] is empty or absent, this is a first-time bootstrap, not an alignment — defer to /docs-bootstrap-external rather than aligning against nothing.⚠️ This prompt requires TWO actions:
[[EXTERNAL_DOC_LOCATION]]Both are mandatory. Analysis without file edits is incomplete.
Work on one topic/feature at a time.
Before creating new docs, always search for existing content:
[[EXTERNAL_DOC_LOCATION]]*Categorize findings as:
For each Outdated or Missing item:
Use the naming convention: {short-descriptive-name}.md with concise, hyphenated names.
Step 1: Understand Context
CLAUDE.md for product overview[[INTERNAL_DOC_LOCATION]]) for recent changes or new featuresStep 2: Compare Documentation
[[EXTERNAL_DOC_LOCATION]])Step 3: Create/Update Files
[[EXTERNAL_DOC_LOCATION]] as neededOnly edit customer-facing files in [[EXTERNAL_DOC_LOCATION]] and its subdirectories.
npx claudepluginhub the01geek/devflow-autopilot --plugin devflowBootstraps external documentation from internal docs using configurable paths. Use when setting up external docs for the first time or performing a comprehensive documentation refresh.
Cross-references documentation against code to detect drift, then reconciles changes via a human-gated, previewed write. Useful after code changes or before releases when docs may be stale.
Syncs all documentation after shipping a feature — local docs, sibling repos, skill plugins, and downstream projects. Scans git diffs, identifies stale content, and proposes concrete edits.