brewdoc:auto-sync
Auto-Sync
Mode Detection
EXECUTE using Bash tool (args: $ARGUMENTS):
bash "${CLAUDE_SKILL_DIR}/scripts/detect-mode.sh" $ARGUMENTS
Parse output: MODE|ARG|FLAGS. If exit code non-zero → report error, EXIT.
| Mode | Trigger | Scope |
|---|---|---|
| STATUS | status |
Report INDEX state → EXIT |
| INIT | init <path> |
Tag file + add to INDEX → EXIT |
| GLOBAL | global |
~/.claude/** (excludes managed dirs) |
| PROJECT | empty | .claude/** (excludes managed dirs) |
| FILE | file path | Single file |
| FOLDER | folder path | All .md in folder |
Managed directories (excluded from auto-scan, explicit path required):
rules/— sync via/brewdoc:auto-sync .claude/rulesagents/— sync via/brewdoc:auto-sync .claude/agentsskills/— sync via/brewdoc:auto-sync .claude/skills
INDEX Format
{"p":"skills/auth/SKILL.md","t":"skill","u":"2026-02-05","pr":"default"}
| Field | Description |
|---|---|
p |
Relative path |
t |
Type: skill/agent/rule/config/doc |
u |
Last sync date (YYYY-MM-DD) |
pr |
Protocol: default/override |
Paths: Project .claude/auto-sync/INDEX.jsonl | Global ~/.claude/auto-sync/INDEX.jsonl
Frontmatter Fields
Required (3):
auto-sync: enabled
auto-sync-date: 2026-02-05
auto-sync-type: skill
Optional override (multiline YAML):
auto-sync-override: |
sources: src/**/*.ts, .claude/agents/*.md
focus: API endpoints, error handling
preserve: ## User Notes, ## Custom Config
Override Field
When auto-sync-override: present in frontmatter → INDEX gets pr: "override".
Stored in frontmatter only — never in document body.
- Read INDEX.jsonl, verify indexed files exist
- Find all
.mdfiles in scope - Compare indexed vs found → identify non-indexed
- Detect type for non-indexed (
discover.sh typed) — output:TYPE|PATHper line - Output report: Indexed (path, type, protocol, last sync, stale), Non-Indexed (path, detected type, reason), Summary (counts)
- EXIT
Input: init <path>
- Read
<path>— if NOT found → error, EXIT - If has
auto-sync: enabled→ "Already tagged", EXIT - Detect type via discover.sh
- Add frontmatter:
auto-sync: enabled,auto-sync-date: {today},auto-sync-type: {type} - Check frontmatter
auto-sync-override:→ setpr: override|default - Add to INDEX.jsonl
- Output: path, type, protocol; EXIT
Sync Mode (PROJECT/GLOBAL/FILE/FOLDER)
Phase 1: Setup INDEX
EXECUTE using Bash tool:
SCOPE="project" # or "global"
INDEX_DIR=".claude/auto-sync"
[ "$SCOPE" = "global" ] && INDEX_DIR="$HOME/.claude/auto-sync"
mkdir -p "$INDEX_DIR" && INDEX_FILE="$INDEX_DIR/INDEX.jsonl" && touch "$INDEX_FILE"
echo "INDEX=$INDEX_FILE"
Phase 2: Discover + Queue (load config: INTERVAL_DAYS, PARALLEL_AGENTS from .claude/tasks/cfg/brewdoc.config.json)
- Find tagged files — EXECUTE using Bash tool:
bash "${CLAUDE_SKILL_DIR}/scripts/discover.sh" "$SCOPE_PATH" typed
Output: TYPE|PATH per line (types: skill, agent, rule, config, doc). Capped at MAX_FILES (default 50).
-
For each file not in INDEX → auto-add:
- Read file, use type from discover output
- If no frontmatter → add
auto-sync: enabled,auto-sync-date,auto-sync-type - Check
<auto-sync-override>→ setpr - Add to INDEX (
index-ops.sh add)
-
Find stale entries — EXECUTE using Bash tool:
bash "${CLAUDE_SKILL_DIR}/scripts/index-ops.sh" stale "$INDEX_FILE" "$INTERVAL_DAYS"
- Queue: new + stale files
Phase 3: Process + Report
-
Launch
bd-auto-sync-processoragents (maxPARALLEL_AGENTSbatches, model="sonnet"):Task(subagent_type="brewdoc:bd-auto-sync-processor", prompt="PATH: {path} | TYPE: {type} | FLAGS: {flags}")Context: BD_PLUGIN_ROOT is injected into agent prompt by pre-task.mjs hook.
-
For each result:
- If status =
updatedorunchanged→ update INDEXuto today (index-ops.sh update) - If status =
error→ log to Errors table, do NOT update INDEX (file remains stale for retry)
- If status =
-
Output report:
## Auto-Sync Complete
| Metric | Count |
|--------|-------|
| Discovered | {N} |
| Queued (stale/new) | {N} |
| Updated | {N} |
| Unchanged | {N} |
| Errors | {N} |
### Updated
| Path | Type | Changes |
|------|------|---------|
### Errors
| Path | Error |
|------|-------|
Error Handling
| Error | Action |
|---|---|
| INDEX corrupt | Rebuild from discovery |
| File not found | Skip, add to errors |
| Agent timeout | Retry once |
| No tagged files | Report "0 found" |
/brewdoc:doc called |
"Use /brewdoc:auto-sync" |