align-recipe-pyproject
Skill11k starsChanged 44 days agoApache-2.0View on GitHub
Aligns a Python recipe's pyproject.toml with the repo's standards enforced by .github/workflows/python-validate-recipe.yml, plus one critical [build-system] presence check. Scope is pyproject.toml only — standalone ruff.toml / .ruff.toml files (also forbidden in recipes) are caught by the CI workflow instead, not by this skill. Runs in two modes: a read-only --dry-run that reports what needs alignment, and an apply mode that rewrites pyproject.toml (and optionally manifest.yaml) using comment-preserving TOML/YAML editors. Use when the user wants to "align the recipe's pyproject.toml", "fix pyproject to match the repo standard", "check what needs changing in a recipe's pyproject", or clean up a recipe before submitting a PR.
- Installs packages
1 other project uses a version of this.
Trending
More talk lately.about the whole repository
Most recently taken up by
- google/adk-recipesword for word, first seen Sep 28, 2026
Who's talking about google/adk-samples
- @stephanjanssen.be“Google just open sourced a Python Agent Development Kit @ github.com/google/adk-p... Native Streaming and …”Bluesky · Apr 9, 2025 · 12 likes
- google/adk-python“stream_query and HTTP Streaming to Vertex AI Agent Return Empty/Exhausted Responses (Works via ADK Web)”GitHub · Jul 8, 2025 · 5 reactions
- google/adk-recipes“Support running agents fully locally without Vertex AI (offline mode)”GitHub · Apr 14, 2025 · 4 reactions
- google/adk-recipes“[BUG]: Deployment of Data Science agent to Agent Engine fails ”GitHub · Oct 1, 2025 · 3 reactions
- A Hacker News story“CaMeL-Powered Secure Agent Demo with ADK”Hacker News · Aug 9, 2025 · 3 points
The biggest 5 of 32 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 32
Talked about on GitHub, Bluesky, Hacker News and Stack Overflow (32 times).
On GitHub · 23
- Jul 8, 2025stream_query and HTTP Streaming to Vertex AI Agent Return Empty/Exhausted Responses (Works via ADK Web) — google/adk-python5 reactions
- Apr 14, 2025Support running agents fully locally without Vertex AI (offline mode) — google/adk-recipes4 reactions · 7 comments
- Oct 1, 2025[BUG]: Deployment of Data Science agent to Agent Engine fails — google/adk-recipes3 reactions · 1 comment
- Oct 28, 2026docs: fix 5 broken internal anchor links and 1 dead external link — google-gemini/gemini-cli1 reaction · 4 comments
- Oct 20, 2026Update adk-samples references and python/agents discovery paths for google/adk-recipes restructure — google/agents-cli1 reaction · 2 comments
18 more on GitHub
- Oct 12, 2026list: scan the template dir we cloned, not the clone root — GoogleCloudPlatform/agent-starter-pack1 reaction
- Feb 12, 2026interrupted sometimes didn't work — google/adk-python1 reaction · 10 comments
- Jan 8, 2026Implement 5 ADK agent projects that can be easily run by newbies — addyosmani/adk-product-engineers1 reaction
- Nov 20, 2025[BUG]: deep-search/gemini-fullstack: Wrong prompt to access session state — google/adk-recipes1 reaction
- Jun 21, 2025unable to import StdioServerParameters — google/adk-recipes1 reaction · 2 comments
- Jun 17, 2025VertexAiRagRetrieval needs llama-index package — google/adk-recipes1 reaction · 3 comments
- Jun 5, 2025Bug: display_name in file uploads causes error with Google.GenAI backend (non-Vertex) — google/adk-python1 reaction · 6 comments
- May 18, 2025Missing Image — google/adk-recipes1 reaction
- Apr 11, 2025Duplicate key name — google/adk-recipes1 reaction · 1 comment
- Oct 18, 2026Fix(audit,#17387): Day4 Track2 tranche 1 -- Lab8/Lab9 reformulations honnetes, cures accents — jsboige/CoursIA0 reactions · 14 comments
- Sep 17, 2026Rename sample references to recipe across repository — google/adk-recipes0 reactions
- Sep 12, 2026docs(deep-search): fix cloud deployment instructions and scaffold path (#2575) — google/adk-recipes0 reactions · 4 comments
- Sep 12, 2026docs: fix 404 link to relocated Deep Search sample — google/adk-docs0 reactions · 1 comment
- Sep 9, 2026Add repo skills instructions and documentation links to AI issue response workflow — google/adk-recipes0 reactions
- Jul 24, 2026Fix broken adk-samples links from deleted sample agents and notebooks — google/adk-docs0 reactions · 1 comment
- Jun 12, 2026ci: run the spam-detection bot via the adk-samples reusable workflow — google/adk-go0 reactions · 1 comment
- May 27, 2026Add Deep Search Agent project to portfolio showcase — asafsilner/silner-showcase-prime0 reactions
- Feb 12, 2026fix: path typo in story teller example — google/adk-recipes0 reactions · 3 comments
On Bluesky · 4
- Apr 9, 2025Google just open sourced a Python Agent Development Kit @ github.com/google/adk-p... Native Streaming and #MCP support out of the box 👀… — @stephanjanssen.be12 likes and reposts
- Jul 12, 2026Exploring the ADK Samples repo from Google—it’s like a guidebook for building intelligent agents. Seeing multi-language support reflects… — @iam.slys.dev1 likes and repost
- Dec 9, 2025📦 google / adk-samples ⭐ 6,900 (+67) 🗒 Python A collection of sample agents built with Agent Development Kit (ADK) — @github-trending.bsky.social1 likes and repost
- May 20, 2025Explore practical use-cases & build! 🧪 Hands-on Patent Search Codelab: codelabs.developers.google.com/patent-searc... 📚 Check out sample… — @kweinmeister.bsky.social0 likes and reposts · 1 reply
On Hacker News · 3
- Aug 9, 2025CaMeL-Powered Secure Agent Demo with ADK3 points · 1 comment
- Jun 13, 2025A collection of sample agents built with Agent Development (ADK)2 points
- Aug 13, 2025CaMeL agent to protect against indirect prompt injection1 point · 1 comment
On Stack Overflow · 2
- Aug 30, 2025Google ADK SequentialAgent sub_agents not waiting for user input1 vote
- Aug 29, 2025Issue with deploying ADK Agent on Google Agent Engine0 votes
Other versions1 project uses a version of this.
Word for word · 1
- google/adk-recipes★ 11k100% same
Edited · 0
None found.
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository43 other files it gives its agents.
- AGENTS.mdAGENTS.md
- contrib/kotlin/llm-auditor/AGENTS.mdAGENTS.md
- core/python/adk-voice-agent/AGENTS.mdAGENTS.md
- core/python/adk-voice-agent/sandbox/home/AGENTS.mdAGENTS.md
- core/python/adk-voice-agent/tests/eval/fixtures/alex/repos/portland-trip/AGENTS.mdAGENTS.md
- core/python/ambient-expense-agent/AGENTS.mdAGENTS.md
- core/python/ambient-quality-agent/AGENTS.mdAGENTS.md
- core/python/cross-session-memory/AGENTS.mdAGENTS.md
- core/python/deep-search/AGENTS.mdAGENTS.md
- core/python/genmedia-for-commerce/AGENTS.mdAGENTS.md
- core/python/long-horizon-harness/AGENTS.mdAGENTS.md
- core/python/oauth-user-consent-flow/AGENTS.mdAGENTS.md
- core/python/rag-agent-search/AGENTS.mdAGENTS.md
- core/python/rag-vector-search/AGENTS.mdAGENTS.md
- core/python/safety-plugins/AGENTS.mdAGENTS.md
- core/python/adk-voice-agent/sandbox/home/CLAUDE.mdCLAUDE.md
- core/python/genmedia-for-commerce/CLAUDE.mdCLAUDE.md
- extract-python-environment-variablesSkill
- generate-manifestSkill
- generate-python-runnability-testSkill
- github-pr-reviewSkill
- make-python-recipe-deployableSkill
- prepare-python-recipeSkill
- repo-oracleSkill
- scaffold-python-recipeSkill
- blog-writerSkill
- content-research-writerSkill
- approvalsSkill
- coding-workflowSkill
- connected-apps-mcpSkill
- deliverablesSkill
- filesystemSkill
- recommendationsSkill
- agents-cli-aquaSkill
- custom-investigationSkill
- rcaSkill
- bootstrap-google-toolsSkill
- find-skillsSkill
- google-workspaceSkill
- policySkill
- routinesSkill
- retail-product-searchSkill
- retail-virtual-tryonSkill
The file
We split this skill into the rules it gives an agent
10 rules. About 0 are common, 6 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈6
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 23
Use this skill to bring a Python recipe's pyproject.toml (and, when it disagrees, its manifest.yaml description) into conformance with the …
- Very specific: line 71
No files outside the recipe directory are ever modified.
- Very specific: line 79
Ask for the recipe directory: if the user has not provided one.
- Distinctive: line 84
If nothing needs attention: reply with a single positive line (see the response format below).
- Distinctive: line 85
If something needs attention: render only the non-ok checks.
- Distinctive: line 119
If the descriptions already match, this flag is ignored.
- Distinctive: line 157
Use this to show the user exactly what a given choice will do before you apply it — the two flags are not mutually exclusive.
- Distinctive: line 204
Only for statuses that need extra context.
- Distinctive: line 250
Do NOT commit any changes yourself.
- Very specific: line 254
If any check has status: fixed, remind the user:
≈ “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.
Files
Align Recipe pyproject.toml
Use this skill to bring a Python recipe's pyproject.toml (and, when it disagrees, its manifest.yaml description) into conformance with the repo standard enforced by .github/workflows/python-validate-recipe.yml.
Scope: pyproject.toml only. Standalone ruff.toml / .ruff.toml files are also forbidden in recipes but are enforced by the CI workflow (Check 7 in python-validate-recipe.yml) — outside this skill's concern.
Not in scope: adk-major-current. The CI validator also emits a warn-only notice when a core/ recipe resolves to an older google-adk major. This skill deliberately does not implement it, and you should not add it. The mechanical fix — widening <2.0.0 to <3.0.0 and re-locking — produces a recipe importing a major it was never ported to, and that break surfaces at runtime rather than in any check. Crossing an ADK major is a code migration; this skill only rewrites metadata. If you are asked to "fix the ADK notice", port the recipe by hand.
What This Skill Checks
Runs scripts/align_pyproject.py against a recipe directory. Eight rules:
| Rule ID | What it checks | Auto-fix |
no-local-ruff-config | Recipe pyproject.toml must not declare any [tool.ruff*] table. Ruff config is centralized in the root pyproject.toml. | Yes — removes the tables. |
python-version-floor | [project].requires-python must accept Python 3.11 exactly — it must neither permit anything below (loose floors like >=3.10) nor exclude 3.11 by requiring higher (>=3.12, ~=3.12, etc.). Per AGENTS.md "Minimum python version: 3.11" and CI in .github/workflows/python-dependency-policy.yml, which pins Python 3.11 and would otherwise emit a misleading "lockfile is out of date" error whose real cause is the interpreter mismatch. | Yes — rewrites the specifier so its lower bound is >=3.11 while preserving every upper bound, exclusion, compatible-release (~=) ceiling, and pin (only pure >=/> are dropped or replaced). Applies to BOTH failure modes (loose floors AND higher-than-min floors). If the result would still exclude 3.11 (e.g. >=3.10,!=3.11 → >=3.11,!=3.11, or ~=3.12 → >=3.11,~=3.12 == >=3.12,<4), refuses to apply and returns needs_input for a human to resolve (typically: relax the ceiling, or raise the recipe with the maintainers to update CI's pinned interpreter). |
project-name-matches-folder | [project].name must equal the recipe's required name: the folder basename under core//contrib/, but <vertical>-<solution> under plugins/, whose mandatory vertical namespace (plugins/<vertical>/<solution>) makes the basename non-unique — plugins/retail/product-search and plugins/grocery/product-search would otherwise both claim product-search. | Yes — sets it. |
description-matches-manifest | If [project].description is set, it must equal manifest.description. Field is optional; skipped when absent. | Only with --description-source={pyproject,manifest,delete}. Refuses to touch description otherwise. |
build-system-present | [build-system] must have both requires and build-backend. Without it, uv build and pip install . fail. | No — backend choice is editorial. Reported for the human to fix. |
default-pypi-index | [[tool.uv.index]] must have an entry with default = true pointing at public PyPI (https://pypi.org/simple[/]). Required so uv sync works on Google corp workstations without corp Airlock auth — see the block comment in the root pyproject.toml for the full rationale. | Yes when the block is entirely missing — appends it. No when a default entry exists but points elsewhere (custom private index, TestPyPI, mirror) — reported for the human to reconcile, since the divergence may be intentional. |
stale-python-version-refs | Scans every text file in the recipe for references to a Python version below the 3.11 floor. Raising requires-python is not a self-contained edit: the version is typically repeated in prose (README.md, SKILL.md) and in executable setup code. | No — report-only. Which references are stale and how to reword them is editorial. |
runnability-test-in-testpaths | If [tool.pytest.ini_options].testpaths is set, at least one entry must collect tests/test_runnability.py (which .github/policy.yml requires every Python recipe to have). | No — report-only. Broadening testpaths changes what CI collects. |
Why stale-python-version-refs exists
A bootstrap script that picks an interpreter from an allowlist still containing the old floor will happily build a venv the recipe then refuses to install into:
for py in python3.13 python3.12 python3.11 python3.10 python3; do
# ...
# ERROR: Package requires a different Python: 3.10.x not in '>=3.11'The scan requires a Python-ish context (python 3.10, Python :: 3.10,
>=3.10) rather than matching bare digits, so a model name like
gemini-3.5-flash is not a false positive. It skips lockfiles, virtualenvs,
caches, and binary files, and ignores requires-python in pyproject.toml
itself (owned by python-version-floor, and still pre-rewrite in memory when
this check runs). Hits are capped at 40 in details.hits, but
details.files always lists every affected file.
Edit safety
- TOML edits go through
tomlkit— comments, blank lines, and unrelated tables inpyproject.tomlare preserved. - YAML edits (only when
--description-source=pyprojectoverwritesmanifest.description) go throughruamel.yaml— comments inmanifest.yamlare preserved. - Files are only rewritten if at least one auto-fix actually ran. Otherwise on-disk bytes are untouched.
- No files outside the recipe directory are ever modified. The workflow file, root
pyproject.toml, and other recipes are safe.
Rules for the Agent
- Always use the script — never hand-edit
pyproject.tomlormanifest.yamlto perform these changes. The script exists specifically so edits are style-preserving and reviewable via one report. - Ask for the recipe directory if the user has not provided one. Do not guess. Recipe roots live under
core/python/<name>/,contrib/python/<name>/, orplugins/<vertical>/<solution>/. - Always start with
--dry-rununless the user has explicitly said "apply", "fix it", "just do it", or equivalent. Show them what would change before doing it. - Only report checks that need attention. The script always returns every check's status, but the user does not need to see the ones that passed. Filter to
status != "ok".- If nothing needs attention: reply with a single positive line (see the response format below). Don't list what's fine, don't build a table.
- If something needs attention: render only the non-ok checks.
- If
description-matches-manifestreturnsneeds_input, the descriptions inpyproject.tomlandmanifest.yamldisagree and the script cannot pick a winner. Present the two values side by side and ask the user to choose one of the three resolution options. Do not re-run the script until they choose. - If
build-system-presentreturnsreport_only,[build-system]is missing or incomplete. Tell the user the recipe cannot be built as a package until this is fixed, and offer them a hatchling oruv_buildtemplate snippet. Do not silently pick one. - If
default-pypi-indexreturnsreport_only, the recipe declares a default index that is NOT public PyPI (e.g. a private mirror, TestPyPI). The skill will not overwrite an intentional choice. Show the user the currenturlfromdetails.current_urland ask whether it's deliberate. If yes, they can# noqa-comment it or update the repo standard; if no, they should change the URL tohttps://pypi.org/simple/. Do not auto-rewrite. - If
stale-python-version-refsreturnsreport_only, list the affected files fromdetails.filesand call out any executable ones first (.sh,.py,Makefile, CI YAML) — a stale interpreter allowlist in a bootstrap script is a live bug, not a docs nit, and it produces a confusingrequires a different Pythonfailure at install time. Prose files (README.md,SKILL.md) are lower priority but still inconsistent. Offer to update them; do not rewrite without asking, since some references are legitimately historical ("dropped 3.10 support in v2"). - If
runnability-test-in-testpathsreturnsreport_only, the recipe'stestpathsexcludestests/test_runnability.py, so a bareuv run pytestnever runs it — the recipe looks tested while its import-smoke test silently never executes. Showdetails.testpathsand suggest adding"tests". Do not auto-rewrite. - After apply mode succeeds, remind the user to run
uv syncin the recipe directory if the pyproject changes touched dependencies (the script emits this innoteswhen relevant). - Do not commit any changes. Show the diff or file contents; let the user commit.
Input
| Field | Required | Description |
--recipe-dir | Yes | Path to the recipe root (e.g. core/python/cross-session-memory, contrib/python/my-recipe, plugins/retail/store-ops). |
--dry-run | No | Report what would change without modifying any files. |
--description-source | Only when resolving a description-matches-manifest mismatch. Values: pyproject, manifest, delete. See below. | Chooses how to reconcile a description mismatch. |
--description-source semantics
| Value | Effect |
pyproject | Overwrite manifest.description with the value from [project].description. Use when pyproject is authoritative (e.g. it was updated more recently). |
manifest | Overwrite [project].description with the value from manifest.description. Use when the manifest is authoritative. |
delete | Remove [project].description from pyproject.toml entirely, so manifest.description becomes the single source of truth. Use when the recipe doesn't need a wheel-metadata description. |
If the descriptions already match, this flag is ignored.
Run
Dry-run (read-only report — start here)
uv run --no-project --with tomlkit --with 'ruamel.yaml' --with packaging \
python .agents/skills/align-recipe-pyproject/scripts/align_pyproject.py \
--recipe-dir <RECIPE_DIR> --dry-runOutput: JSON on stdout. Every check produces one entry with id, status (ok / would_fix / needs_input / report_only / error), a human-readable message, and structured details. Exit code is always 0 in dry-run.
Apply (rewrite files)
uv run --no-project --with tomlkit --with 'ruamel.yaml' --with packaging \
python .agents/skills/align-recipe-pyproject/scripts/align_pyproject.py \
--recipe-dir <RECIPE_DIR>Fixes everything the script can safely fix. Exits 0 if nothing is left unresolved, 1 otherwise (typically because description-matches-manifest needs --description-source or build-system-present needs a human).
Apply with description resolution
uv run --no-project --with tomlkit --with 'ruamel.yaml' --with packaging \
python .agents/skills/align-recipe-pyproject/scripts/align_pyproject.py \
--recipe-dir <RECIPE_DIR> --description-source={pyproject|manifest|delete}Preview a description resolution (dry-run + --description-source)
--description-source combines with --dry-run: the script reports the
would_fix outcome of the chosen resolution without writing any files.
Use this to show the user exactly what a given choice will do before you
apply it — the two flags are not mutually exclusive.
uv run --no-project --with tomlkit --with 'ruamel.yaml' --with packaging \
python .agents/skills/align-recipe-pyproject/scripts/align_pyproject.py \
--recipe-dir <RECIPE_DIR> --dry-run \
--description-source={pyproject|manifest|delete}Respond
Filter the report to checks with status != "ok". Never list what's fine — the user is here to see what needs doing.
If everything passed
Reply with a single line, no table, no bullets. Something like:
✓
<RECIPE_DIR>'s pyproject.toml is fully aligned with the repo standard. No changes needed.
Then stop. Do not run any further tools.
If there are things to report
Name the recipe directory once, then render a single Markdown table with these three columns:
| Rule | Status | Details |
- Rule — the check
id, in backticks (e.g.`no-local-ruff-config`). - Status — the raw status value (
would_fix,fixed,needs_input,report_only,error). Do not add emoji unless the user has asked for them. - Details — a compact summary of both what's wrong and what will happen (or what the user must do), merged into one cell so the table stays 3 columns wide. Quote
from→tovalues fromdetailswhen present.
Include exactly one row per non-ok check. Do not include ok rows.
Status-specific guidance for what to put in the Details cell:
would_fix(dry-run) — describe the current-state problem, then say what apply would do. Include thefrom→toor the list of tables to be removed.fixed(apply) — one-liner confirming the change (new value or list of removed tables).needs_input(onlydescription-matches-manifest) — the Details cell says something like"descriptions differ — needs --description-source={pyproject,manifest,delete}". Do not put the two long descriptions inside the table. See "Follow-up content" below.report_only(four rules can hit this:build-system-present,default-pypi-indexwhen a non-PyPI default is declared,stale-python-version-refs, andrunnability-test-in-testpaths) — the Details cell names what's missing or non-conforming (e.g."[build-system] missing; recipe cannot be built as a package"or"default index is TestPyPI, not public PyPI"). Follow-up content goes below the table (see next section).error— the Details cell shows the message verbatim; if it's very long, truncate with…and put the full text below.
Follow-up content below the table
Only for statuses that need extra context. Order: table first, then this content, then closing action.
needs_inputfollow-up — presentpyproject_descriptionandmanifest_descriptionfromdetailsside by side (a small nested table works well), then ask the user to pick one ofpyproject,manifest, ordelete. Do not re-run until they answer.report_onlyfollow-up — explain the impact (recipe cannot be built as a package) and paste both templates so the user can choose:# Hatchling (traditional Python packaging) [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["app"] # ---- OR ---- # uv_build (Astral's uv-native backend) [build-system] requires = ["uv_build>=0.8.14,<0.9.0"] build-backend = "uv_build" [tool.uv.build-backend] module-root = "" module-name = "app"errorfollow-up — if the message was truncated in the table, print it verbatim in full below. Do not attempt to work around it.
Closing action
- Dry-run with at least one
would_fixrow — offer to apply the fixes yourself. Do NOT paste the raw command as a copy-and-paste snippet for the user. Instead ask something like "Want me to apply these fixes?" (a yes/no question is fine; a question with clear options is nicer UX). If the user agrees, run apply mode yourself and render the result as another table (withfixedrows instead ofwould_fix). If the user declines, stop. - Dry-run with only
needs_inputfordescription-matches-manifest— after the table, show the two descriptions side by side and ask the user to pick one ofpyproject,manifest, ordelete. When they choose, run apply yourself with--description-source=<their choice>and render the resulting table. Do not offer generic "apply" — the flag is required. - Dry-run with only
report_only(and nowould_fixrows) — after the table, address the specific case:build-system-present: show the two[build-system]template snippets and stop. This is a manual edit; the skill does not auto-fix it.default-pypi-index: quotedetails.current_url, explain that this is not public PyPI, and ask whether it's intentional. If not, tell the user to change the URL tohttps://pypi.org/simple/. Do not auto-rewrite.stale-python-version-refs: listdetails.files, executable files first, and offer to update them.runnability-test-in-testpaths: quotedetails.testpathsand suggest adding"tests".
- Dry-run with only
errorrows — do not offer to apply. Errors mean the script bailed before it could compute a fix; the user has to resolve the underlying issue first. - Dry-run with a mix (e.g. some
would_fix+ aneeds_input) — offer to apply the fixable ones. The apply run will fix those and leave the others as-is; render the resulting table and then address the remaining statuses per the rules above. - Apply mode with any
fixedrow — end with the "Next steps" reminder (see below).
Do NOT commit any changes yourself. Ever.
After apply mode
If any check has status: fixed, remind the user:
Next steps:
cd <RECIPE_DIR> && uv sync # if dependencies changed
git diff # review the edits before committingThen stop. Do not commit. Do not run any further tools. End your turn.
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
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.

