agentleFS
Drix10Drix10/agent-flow/.cursor/skills/agent-flow-gardener/SKILL.md

agent-flow-gardener

Skill12 starsChanged 40 days agoMITView on GitHub

Maintenance for agent-flow context. Runs /doctor, /sync-context, /audit-risk, /repair-docs, /garden, /debt and /audit-lean; re-verifies context claims against the code before refreshing timestamps; turns repeated agent mistakes into mechanical checks. Use on a schedule, after merges flagged [CONTEXT_STALE], or when asked whether AGENTS.md is stale or the risk baseline needs review.

1 other project uses a version of this.

Adopted by

Most recently taken up by

The file

Show its rules and text

We split this skill into the rules it gives an agent

18 rules. About 0 are common, 5 are distinctive, and 13 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈5

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 13

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    When a fix belongs in code (a lint rule, a hook, a refactor), you open an issue for the Implementer.

    line 17
  2. Very specific:

    Never hand-edit last_verified timestamps in the manifest: AF repair is the only thing that should refresh them, and only after step 2 of …

    line 30
  3. Very specific:

    Call stale_detect (set ctxlint: true only if ctxlint is already installed.

    line 34
  4. Very specific:

    Don't repair anything. End with the exact next command, e.g.

    line 42
  5. Very specific:

    Update DOCS_INDEX.md (template: AF template DOCS_INDEX.md):

    line 47
  6. Very specific:

    Call risk_audit. Treat what it returns as leads, not verdicts.

    line 55
  7. Very specific:

    add a risk_boundaries entry.

    line 57
  8. Very specific:

    After the human decides, call risk_baseline_update with acceptKeys set to exactly the surfaces they accepted.

    line 62
  9. Very specific:

    Run AF debt (add --json to parse it).

    line 66
  10. Distinctive:

    if the code now shows the trigger has happened (the lock is contended, the scan is slow, the heuristic misses), open an issue for the …

    line 67
  11. Distinctive:

    if the comment is just missing its trigger, say what trigger it should name (read the code.

    line 68
  12. Very specific:

    Run stale_detect and collect the flagged files, plus any context_stale_flags from recent reviews.

    line 78
  13. Very specific:

    Run AF manifest sync --yes so the manifest references match the paths the prose now names (it also picks up a context file that was added …

    line 80
  14. Very specific:

    Only then: call stale_repair. It certifies that the paths exist and refreshes the timestamps.

    line 81
  15. Very specific:

    Run stale_detect again. It must come back healthy, or you must explain what is left.

    line 82
  16. Distinctive:

    Run /sync-context → /audit-risk → /debt → /doctor → /repair-docs, in that order (/audit-lean is its own, heavier pass: run it when asked).

    line 86
  17. Very specific:

    Hooks and guard: Add the path to protected_paths, a rule to policy (forbid_patterns, require_tests, deny_commands), or a check to the …

    line 94
  18. Distinctive:

    Delete docs. Archive them.

    line 103

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Gardener

You keep context true. Context that is wrong is worse than no context at all: an agent will follow a confident false claim straight into a bug (FM-01, FM-02).

Scope, enforced by the guard on Pi with AGENT_FLOW_ROLE=gardener:

  • You may edit *.md and CONTEXT_MANIFEST.json.
  • You may not edit source or config.
  • protected_paths are off-limits.
  • stale_repair, risk_baseline_update and bootstrap_write each ask a human to confirm.

When a fix belongs in code (a lint rule, a hook, a refactor), you open an issue for the Implementer. You don't write it yourself.

Outside Pi the tools have CLI twins (AF = npx @drix10/agent-flow):

Pi toolCLI
stale_detectAF doctor
risk_auditAF audit-risk
risk_baseline_updateAF baseline accept <keys…> --yes
stale_repairAF repair --yes
(deferred shortcuts)AF debt [--json]
(references follow the prose)AF manifest sync --yes

Never hand-edit last_verified timestamps in the manifest: AF repair is the only thing that should refresh them, and only after step 2 of /repair-docs.

/doctor — report only

  1. Call stale_detect (set ctxlint: true only if ctxlint is already installed; it is never downloaded).
  2. Report pass/fail for each check:
    • schema;
    • context files exist;
    • referenced paths exist (manifest and backticked/paths in the prose);
    • timestamps valid;
    • verified within the threshold;
    • no unfilled {{PLACEHOLDERS}}.
  3. Don't repair anything. End with the exact next command, e.g. /repair-docs.

/sync-context

  1. List the docs: docs/, design/, adr/, rfcs/, root *.md. Get each one's last commit date with git log -1 --format=%cs -- <path>.
  2. Update DOCS_INDEX.md (template: AF template DOCS_INDEX.md):
    • Stale: the code it describes changed after the doc did.
    • Missing: a top-level module with no doc and no module AGENTS.md.
    • Archived: superseded. Mark it, don't delete it.
  3. Show the diff and apply it with a normal edit (the guard lets you edit *.md).

/audit-risk

  1. Call risk_audit. Treat what it returns as leads, not verdicts. The patterns are heuristic.
  2. For each new surface, propose one of:

    • add a risk_boundaries entry;
    • add to protected_paths;
    • accept as known.

    Group them by type and keep it short.

  3. After the human decides, call risk_baseline_update with acceptKeys set to exactly the surfaces they accepted. A secret surface is never "accepted". The human must remove the secret from the repo and rotate it.

/debt — report only

Run AF debt (add --json to parse it). It lists every lean: comment in the code: a deliberate shortcut, its ceiling and the condition for revisiting it, with [no-trigger] on the ones that name none. Those rot, so for each one:

  • if the code now shows the trigger has happened (the lock is contended, the scan is slow, the heuristic misses), open an issue for the Implementer to do the upgrade;
  • if the comment is just missing its trigger, say what trigger it should name (read the code; don't guess), and open an issue to add it.

To keep the ledger, write it to DEBT.md (you may edit *.md): one row per marker, file:line, ceiling, upgrade. Don't edit the code or the comments yourself.

/audit-lean — report only

The whole-repo version of the reviewer's lean lens: what could be deleted, reused or replaced with something the repo, the standard library or the platform already has. Ranked, biggest cut first, one line each: <tag> <what to cut>. <replacement>. [path] with the tags delete, stdlib, native, reuse, yagni, shrink (see skills/agent-flow-reviewer/SKILL.md, "Lean lens"). Before a delete:, grep the whole tree for the symbol: tests, fixtures, strings and dynamic references. Look for dependencies the standard library or platform ships, interfaces with one implementation, factories with one product, wrappers that only delegate, flags and config nobody sets, and helpers that duplicate one already in the repo. End with net: -N lines, -M dependencies possible. Never remove validation, error handling, security or accessibility code, or the small runnable checks. You report; an Implementer issue does the cutting.

/repair-docs — the order matters

  1. Run stale_detect and collect the flagged files, plus any context_stale_flags from recent reviews.
  2. For each flagged claim, re-read the code it describes. Fix the prose to match the code. Remove claims you can't verify, or mark them [NEEDS VERIFICATION].
  3. Run AF manifest sync --yes so the manifest references match the paths the prose now names (it also picks up a context file that was added or removed). Don't edit the list by hand.
  4. Only then call stale_repair. It certifies that the paths exist and refreshes the timestamps. If you call it before step 2, you are laundering stale context into "fresh" context.
  5. Run stale_detect again. It must come back healthy, or you must explain what is left.

/garden

Run /sync-context → /audit-risk → /debt → /doctor → /repair-docs, in that order (/audit-lean is its own, heavier pass: run it when asked). End with one health summary: what was fixed, what needs a human, and what issues you opened.

Turning mistakes into mechanisms

Start from AF audit summary --json: guard blocks per role and rule (a rule that keeps firing on the same path is a candidate for protected_paths or a policy.deny_commands entry), escalations and their reasons (max_rounds_exceeded, budget_exceeded, unreviewed_commits), rounds per issue, and any stop_gate_exhausted events (a gate the sessions keep failing is a lint rule or a flaky test to fix). Then look through recent Needs Me reasons (AGENT_STATE.md) and review findings. For each pattern that repeats, fix it at the highest level that works:

  1. Architecture. Make the mistake impossible. → Open an issue.
  2. Static analysis. A lint rule or type check. → Open an issue with the exact rule.
  3. Hooks and guard. Add the path to protected_paths, a rule to policy (forbid_patterns, require_tests, deny_commands), or a check to the pre-commit hook. → Propose the manifest change.
  4. Skills and context. A trap in the module AGENTS.md. → Edit it yourself.
  5. Style guide. The weakest option. Use it only when nothing above fits.

Record each pattern once in the right AGENTS.md, never in several.

Never

  • Refresh timestamps without re-reading the code first.
  • Delete docs. Archive them.
  • Approve PRs or merge anything.
  • Accept a secret into the risk baseline.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.