Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

tidy

Reports module data that the current configuration no longer backs — repositories dropped from a provider, task trees whose syncing was turned off, and local items you may want to retire. The output is JSON, intended for agents (see the tidy skill).

banco tidy [--module <name>] [--pretty]

tidy is detection only — it never deletes anything. It compares what is on disk against .banco/config.yml and prints what no longer belongs, leaving every removal decision to you.

Unlike check, which flags content that was never part of a module, tidy flags content that was synced or created but has since become stale because the configuration changed.

Options

FlagDescription
--module <name>Limit the scan to one module: repos, tasks, notes, bookmarks
--prettyPretty-print the JSON output

Local modules (notes, bookmarks) are only scanned when requested explicitly with --module, since they have no configuration to compare against — the scan instead surfaces their content for your review.

Output

A JSON object with four arrays: repos, tasks, local, and modules.

repos

Each synced repository directory that no longer matches the configuration, with a reason and a git safety summary so nothing is lost on removal.

{
  "provider": "github",
  "name": "old-service",
  "path": "repos/github/old-service",
  "reason": "removed_from_config",
  "git": {
    "branch": "main",
    "uncommitted_changes": false,
    "untracked_files": 2,
    "unmerged_branches": 1,
    "unpushed_commits": 1,
    "local_only_branches": ["spike"],
    "stashes": 0,
    "safe_to_remove": false
  }
}

reason is one of:

ReasonMeaning
removed_from_configDropped from the provider’s explicit projects list
no_longer_matches_patternNo longer matched by the provider’s projects_pattern
provider_disabledThe provider is configured with enabled: false
provider_removedThe provider is gone from .banco/config.yml entirely

safe_to_remove is true only when the working copy holds nothing that would be lost. When git cannot be inspected (e.g. not a git repository), a git.error field is set and safe_to_remove stays false.

branch (current branch, omitted for a detached HEAD) and unmerged_branches (local branches not merged into the current branch) are decision context rather than safety gates — they do not affect safe_to_remove, but a repo on a feature branch or with unmerged work is worth a mention before removal.

tasks

Each task directory whose issues are no longer synced, with file counts split by status.

{
  "provider": "github",
  "path": "tasks/github",
  "reason": "module_disabled",
  "files": 12,
  "open": 5,
  "closed": 7
}

reason is one of module_disabled (the module is listed in the provider’s disabled_modules), removed_from_config, provider_disabled, or provider_removed. Per-project detection (removed_from_config) applies to GitHub projects and to GitLab projects configured via an explicit projects list. The module_disabled reason applies to both the tasks and repos modules, and to the local provider as well — turning repos or tasks off for local (or disabling the whole local provider) flags repos/local and tasks/local just as it does for a remote provider. Local repo findings carry the same git safety summary.

local

When --module notes or --module bookmarks is passed, each item is listed with hints about whether it holds content worth keeping.

{
  "module": "bookmarks",
  "path": "bookmarks/local/tools/ripgrep.md",
  "has_url": true,
  "body_lines": 3,
  "modified": "2026-05-14"
}

modules

Each whole module directory (repos/, tasks/, notes/, bookmarks/) that no enabled provider backs anymore — the module is off for the local provider and no remote provider implements it with the module enabled. This is the headline that an entire top-level directory is now stale; the per-subtree entries in repos/tasks still detail what’s inside it.

{
  "module": "repos",
  "path": "repos",
  "reason": "no_provider_backs_module",
  "entries": 3
}

entries is the number of immediate entries under the directory (provider subdirs, label dirs, or files) — a quick measure of how much is there. As with everything else tidy reports, removing the directory is your decision; review the repos/tasks findings (and their git safety summaries) before deleting a whole tree.

Removal is yours

tidy never deletes. Review the report and remove only what you choose — the bundled tidy skill drives an agent through exactly this: it presents the findings, warns about anything that would be lost, and removes only what you confirm.