Observed since 20 Oct, 22:16 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Scaffold and compile modular agent guidance into AGENTS.md
Agentic Guidance Builder is a Python CLI for authoring modular guidance content and compiling it into a final AGENTS.md file.
This repository is the tool itself. It helps you:
This repo contains the V1 implementation of the Agentic Guidance Builder CLI.
The current product shape is intentionally simple:
agents/guidance/agents/content/agd-settings.tomlAGENTS.mdMost repos accumulate agent instructions in a single giant file. That gets hard to maintain.
This tool breaks that problem into smaller pieces:
Instead of hand-maintaining one large output file, you author small source documents and build the final result.
agd initagents/guidance/agd-settings.tomlagents/guidance/templates/base/agd validateagd buildThis project currently targets Python >=3.13.
Install from PyPI once published:
uv tool install agenticguidancebuilder
Or install from source for local development:
uv sync --group dev
In this repository:
uv sync
Run the CLI with either:
uv run agd --help
or:
uv run agent-guidance --help
Initialize a repo:
uv run agd init \
--project-name "Example Repo" \
--languages python \
--frameworks django,vue
Inspect discovered content:
uv run agd list
Validate the tree:
uv run agd validate
Build the compiled output:
uv run agd build
Build OpenCode runtime exports:
uv run agd build --adapter opencode
Build Copilot runtime exports:
uv run agd build --adapter copilot
Include examples:
uv run agd build --include-examples
Refresh packaged base templates in an existing repo:
uv run agd upgrade --templates
Refresh packaged starter skills and commands:
uv run agd upgrade --content
Refresh packaged tool bootstrap assets:
uv run agd upgrade --tools
Refresh all packaged templates and starter assets:
uv run agd upgrade
After agd init, the target repo looks like this:
agd-settings.toml
agents/
guidance/
guidance.md
languages/
<language>/
guidance.md
examples/
example.md
frameworks/
<framework>/
guidance.md
examples/
example.md
project/
guidance.md
examples/
example.md
templates/
base/
agents.md.j2
macros.j2
section.guidance.md.j2
section.examples.md.j2
content/
skills/
test-skill.md
commands/
test-command.md
agents/
test-agent.md
Compiled guidance content lives under agents/guidance/.
agents/guidance/guidance.md is the global fileagents/guidance/languages/<name>/guidance.md is language-specific guidanceagents/guidance/frameworks/<name>/guidance.md is framework-specific guidanceagents/guidance/project/guidance.md is repo-specific guidanceexamples/ documents are optional example content for those scopesMarkdown files can include optional YAML frontmatter.
Example:
---
id: language-python-guidance
title: Python Guidance
description: Durable guidance for the Python language.
kind: guidance
scope: language
name: python
tags:
- language
- python
applies_to:
- python
status: active
order: 1
---
# Python Guidance
## Purpose
- Explain what belongs here.
If frontmatter is omitted, defaults are derived from the file path and headings.
Example files are regular Markdown source documents with kind: example.
They are useful for:
Examples are only included in the compiled output when enabled.
Repository-level settings live in agd-settings.toml at the repo root.
Example:
[project]
name = "Example Repo"
summary = ""
[build]
default_output = "AGENTS.md"
include_examples_by_default = false
[vars]
product_name = "Example Repo"
repository_name = "example-repo"
Current behavior:
project.name can supply the default project name for buildsbuild.default_output can supply the default output pathbuild.include_examples_by_default can supply the default example-inclusion behavior[vars] values are exposed to Jinja templates as varsMarkdown and final templates can use these top-level values:
projectbuildselectionsettingsvarsdocThis keeps the authoring model lightweight while still allowing customization.
agd initScaffolds the guidance tree and starter files.
Common flags:
--project-name--languages--frameworks--force--dry-runLanguage and framework names are generic. The CLI scaffolds whatever names you pass.
agd buildBuilds the compiled output artifact.
Common flags:
--adapter--project-name--output--include-examples--languages--frameworks--dry-runIf filters are omitted, all discovered language and framework packages are included.
agd validateValidates the guidance tree and reports grouped errors and warnings.
agd listLists discovered guidance content and shows metadata like:
idscopenameorderpathagd upgradeRefreshes packaged templates and starter assets in an existing repo.
If no scope flags are provided, it refreshes all supported packaged assets.
Common flags:
--target--dry-run--templates--content--toolsExamples:
agd upgradeagd upgrade --templatesagd upgrade --content --toolsagd upgrade-templatesRefreshes packaged files under agents/guidance/templates/base/ in an existing repo.
Common flags:
--target--dry-runagd upgrade-contentRefreshes packaged starter content under agents/content/.
Today that includes:
Common flags:
--target--dry-runagd upgrade-toolsRefreshes packaged tool bootstrap assets under agents/tools/.
Common flags:
--target--dry-runagd upgrade-allRefreshes all packaged templates and starter assets that have dedicated upgrade flows.
Common flags:
--target--dry-runUseful local commands:
task ai:setup-all-agents
task ai:setup-root
task ai:setup-opencode
task ai:setup-all-agents refreshes derived runtime files from the canonical agents/ tree.
There is no fixed allowlist.
These all work:
uv run agd init --languages python,elixir --frameworks django,phoenix
The simplest customization path is just editing the authored docs under agents/guidance/.
That is usually enough for:
agd-settings.tomlUse the settings file when values should be shared across multiple source docs or templates.
Good uses:
Project-specific templates live under agents/guidance/templates/base/.
If present, they override the packaged defaults:
agents.md.j2macros.j2section.guidance.md.j2section.examples.md.j2Example custom agents.md.j2:
# {{ project.name }} Guidance
Product: {{ vars.product_name }}
{% if global_guidance %}
{{ render_guidance_section(global_guidance) }}
{% endif %}
Use agents/content/ for authored assets that should not be part of the compiled AGENTS.md source tree.
That includes reusable tool-agnostic authored assets like:
Use agents/tools/ only when a future adapter genuinely needs tool-owned authored assets that cannot come from shared canonical content.
Use frontmatter roles to describe adapter-specific projection behavior when needed. For example, a canonical command can carry a role like opencode-command or copilot-repository-instructions without changing the top-level source taxonomy.
When a tool needs a bootstrap or base file that is not naturally derived from shared canonical content, keep that authored source in agents/tools/<tool>/. For example, OpenCode can use agents/tools/opencode/opencode.json as the canonical base config that the adapter copies to the repo root.
The build pipeline currently supports these adapters:
agents-md - writes the compiled AGENTS.md onlyopencode - writes AGENTS.md, .opencode/commands/, .opencode/agents/, .opencode/skills/, and opencode.jsoncopilot - writes AGENTS.md, .github/copilot-instructions.md, .github/instructions/, .github/skills/, and .github/agents/Authoring stays markdown-first:
agents/guidance/agents/content/agents/tools/ is reserved for assets that are truly tool-specific and cannot come from the shared canonical content layerThe baked-in assets are intentionally single files so adapters can read one canonical source and remap it into the output layout each tool expects. For example, agents/content/agents/context-gatherer.md is the single authored source and the adapters generate OpenCode and Copilot agent files from it.
This tool ships with packaged starter assets for:
During agd init, those packaged assets are copied into the target repository and become normal editable project files. Tool-specific or optional starter assets are only scaffolded when a packaged source file exists.
If you want newer packaged defaults later without re-running full init, use the upgrade commands:
agd upgradeagd upgrade-templatesagd upgrade-contentagd upgrade-toolsagd upgrade-allThe intended flow is to install the CLI once, then run it inside any repository you want to scaffold or build.
Examples:
# install once
uv tool install agenticguidancebuilder
# scaffold guidance in another repo
cd /path/to/other-repo
agd init --project-name "Other Repo" --languages python --frameworks django
# validate and build there
agd validate
agd build
The scaffold currently includes default skills such as:
agents/content/skills/code-change-review.mdagents/content/skills/guidance-layout-migration.mdIt is designed to support strict, deterministic review work by requiring the reviewer to:
This keeps review work grounded in the actual guidance tree instead of drifting into taste-only feedback.
The CLI uses simple prefixed output:
INFO: for progressOK: for successful actionsWARN: for non-fatal states like skipped or unchanged filesERROR: for failuresThis keeps the CLI readable while still being easy to scan in automation.
README.md - product overview and usageagents/AGENTS.md - repo-specific development guidance for this repository itselfRun local checks with:
uv run ruff check src tests
uv run pytest
uv build
Refresh derived guidance/runtime files with:
task ai:setup-all-agents
pyproject.toml.uv build.dist/ to verify the wheel and sdist contents.uv publish --token <pypi-token> if needed.GitHub Actions also publishes on tag pushes matching v* using the PYPI_TOKEN repository secret.
If you prefer PyPI trusted publishing later, the workflow is already split into build and publish jobs, so switching from PYPI_TOKEN to OIDC is straightforward.
The current implementation is a focused V1.
init -> list -> validate -> buildAGENTS.mdDownload counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 1.3.0 | 23 Mar 2026 | 2 |
This describes our collected data; it is not a security assessment.
Shared repository data · GitHub
Observed since 20 Oct, 22:16 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:11a924b0cfc052f3af6131bfd7b2e9b6455b67f0353844faa0ee6944700e3bdb