You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add AGENTS.md agent guidance file to the developers repo
WLAN Pi development increasingly involves AI assistants and LLM-powered tooling (Claude Code, Codex, Copilot, Cursor, and similar). These tools do not currently have a single, authoritative file describing how to work within the WLAN Pi ecosystem. As a result, they copy patterns from whichever repo they land in, including archived and legacy repos that contain cruft and anti-patterns. This can lead to production of inconsistent or even incorrect output.
This issue is to track creation of an agent guidance file in the developers repo that AI agents and LLMs might consume to understand how to interact with WLAN Pi development generically. The term "agent guidance file" is used throughout; "skill" is avoided because it has a competing, tool-specific meaning in current agent ecosystems.
Goal
Add AGENTS.md at the repo root of the developers repo, following the convention agent tools read automatically. The guidance is org-wide: it applies to AI agents working across all WLAN Pi repos, not just developers.
The file should be guidance, not a rigid standard. It points to the existing docs in the developers repo rather than duplicating them.
Distribution model
The AGENTS.md convention is per-repo: agent tools read the file at the root of the repo they are currently working in. A file that lives only in developers is invisible to an agent working in wlanpi-profiler or wlanpi-core, which is exactly the scenario this issue exists to fix.
This issue delivers the file in developers.
A follow-up issue will roll out a thin stub AGENTS.md to each active repo. The stub states the platform rule and links to the file. Stubs contain no independent guidance so there is only one source to maintain.
All links in the file and the stubs must be absolute GitHub URLs, not relative paths, so they resolve regardless of which repo the file is read from or copied into.
Tool coverage of AGENTS.md varies. Some tools key on other filenames (for example CLAUDE.md for Claude Code, GEMINI.md for Gemini CLI). This issue targets AGENTS.md only. Symlinks or pointer files for other conventions are out of scope here and can be handled in the rollout issue if needed.
Authority model
The developers repo should be the source of truth for WLAN Pi development guidance.
Repo-specific READMEs and top-level docs are useful evidence of patterns, but they may contain historical cruft, legacy decisions, or release-specific guidance.
Archived repos, legacy repos, and older Debian-suite branches must not override the current guidance in developers.
Target platform
Current development targets Debian 13 ("Trixie").
Python targets 3.13, because that is the system python3 package in Trixie. WLAN Pi is tied to the system Python package.
Do not target Python 3.14 or 3.15. There are no plans to do so at this time. This means do not describe the policy as Python 3.13+.
Do not select alternate production Python runtimes with pyenv, conda, uv-managed interpreters, or similar tools. The interpreter version is determined by Debian Trixie's system python3 package. Production apps are distributed as .deb packages and may use dh_virtualenv under /opt/wlanpi-{app}.
Exception: Python 3.11 on Bookworm and Python 3.9 on Bullseye remain valid when explicitly working on the relevant older Debian suite branch or an existing-package bug fix. The guidance file must state this exception so agents do not refuse legitimate maintenance work.
If an active repo still carries py39 or py311 in tox.ini or pyproject.toml, update it to include py313 when the repo is next actively worked on. See style/PYTHON.md.
Maintenance note: the platform rule is intentionally duplicated in AGENTS.md and style/PYTHON.md. When the target suite or Python version changes, both files must be updated in the same change. AGENTS.md should carry a comment or line noting this coupling.
Conventions to capture
Framed as recommendations, each linking to the authoritative doc via absolute URL:
Be concise. Avoid filler and unnecessary preamble.
Do not use em dashes in prose. Do not use double hyphens as punctuation. CLI flags and URLs may contain -- where required.
Do not make assumptions. Ask for clarity when a task is ambiguous.
Do not invent files, abstractions, dependencies, or features that were not requested. Build only what is needed.
Prefer boring, well-understood technology. Reach for something novel only where innovation is genuinely required, and call it out when you do.
Match the surrounding style of the file you are editing. Keep changes minimal and reviewable.
Python: follow style/PYTHON.md. Use pyproject.toml for new packages, not setup.py. Support running as python -m app. Use argparse, not a hand-rolled parser. Test with pytest. Use tox for test, lint, and format workflows.
Packaging: follow architecture/PACKAGING.md and architecture/FHS.md. WLAN Pi uses Debian .deb packaging exclusively. Package names use the mandatory wlanpi- prefix. Python apps use dh_virtualenv where applicable. App files go under /opt/wlanpi-{app}, config under /etc/wlanpi-{app}, logs under /var/log/wlanpi-{app}, variable data under /var/lib/wlanpi-{app}, systemd units under /lib/systemd/system. Use debhelper-compat (= 13).
Documentation: follow style/README_STANDARDS.md. Markdown only (no .rst). Start with a short What/Why section. Use Title Case headings. Use language hints on code fences. Keep tone neutral and professional. Link back to the developers repo.
Git: follow CONTRIBUTING.md, GIT_WORKFLOW.md, RELEASE_PROCESS.md, and style/DCH.md. Target dev when it exists, else main. Never commit directly to dev or main. Branch naming: u/<user>/<desc>, feature/<desc>, bugfix/<desc>, hotfix/<desc>. Squash merges for temporary branches only; regular merge commit for dev into main. Manage debian/changelog with dch.
Licensing: prefer BSD-3-Clause for new projects, following licensing/licensing.md.
Recognizing cruft
The guidance file should warn LLMs not to copy outdated patterns from old repos. In AGENTS.md itself, describe cruft at the pattern level rather than naming specific repos, since repo names go stale and add length. Patterns found during the org review:
Hardcoded python3.9 or python3.11 interpreter paths (seen in wlanpi-core/WORKFLOW.md).
Bookworm, Bullseye, or Buster defaults presented as if current (seen in wlanpi-profiler, wlanpi-desktop, wlanpi-kernel, build, sbuild-debian-package, raspap-webgui).
setup.py based packaging for new projects.
Any pattern from archived, abandoned, or legacy repos.
The repo names above are evidence for this issue, not content for the guidance file.
When in doubt, defer to the developers repo, not the repo being edited.
Size and validation
Keep the file short. Target under roughly 150 lines. Oversized agent files consume context and get ignored or truncated by tooling.
Before closing, validate the file: run at least one agent tool against a sample task in a WLAN Pi repo with the file present, and confirm it avoids at least one known anti-pattern from the cruft list (for example, it does not reach for sudo pip install or setup.py).
Non-goals
Not a canonical, exhaustive standards document. The developers repo style and architecture docs remain the source of truth.
Not a replacement for human review. Humans should always review the output.
Not an attempt to mandate every detail ("you must do X, Y, and Z").
Not the per-repo stub rollout. That is a follow-up issue blocked on this one.
Acceptance criteria
AGENTS.md added at the repo root of developers, concise and scoped (target under ~150 lines).
States the authority model clearly: developers repo is the source of truth.
States the hard platform rule: Debian 13 Trixie, Python 3.13 exactly, no Python 3.14, no Python 3.15, no 3.13+, Python version is tied to the OS Python package.
States the maintenance exception: Python 3.11/3.9 are valid only on the corresponding older Debian suite branches or existing-package bug fixes.
Captures the conventions above as recommendations linking to existing docs via absolute GitHub URLs.
Includes a "Recognizing Cruft" section written at the pattern level, without naming specific legacy repos. Maybe?
Notes the coupling between the platform rule in AGENTS.md and style/PYTHON.md so both are updated together at the next suite transition.
Prose contains no em dashes and no double hyphens used as punctuation.
README indexes the new file under the appropriate section.
GETTING_STARTED.md changed from Python 3.13+ to Python 3.13.
style/PYTHON.md updated to make the policy explicit: WLAN Pi follows Debian Trixie's system python3 package (3.13), does not target Python 3.14 or 3.15, and does not describe the policy as 3.13+.
Validated against at least one agent tool on a sample task, confirming it steers away from a known anti-pattern.
Follow-up issue filed for the per-repo stub rollout.
Resolved decisions
Filename and location: AGENTS.md at the repo root of developers. Other filename conventions (CLAUDE.md, GEMINI.md) are out of scope for this issue.
Scope: org-wide guidance, reusable across all WLAN Pi repos, distributed via thin per-repo stubs in a follow-up issue.
The no-3.14 / no-3.15 rule lives in both the guidance file and style/PYTHON.md, with an explicit note that the two must be updated together.
Cruft examples in the guidance file are pattern-level only; repo names stay in this issue.
Terminology: "agent guidance file" throughout, not "skill file".
Add AGENTS.md agent guidance file to the developers repo
WLAN Pi development increasingly involves AI assistants and LLM-powered tooling (Claude Code, Codex, Copilot, Cursor, and similar). These tools do not currently have a single, authoritative file describing how to work within the WLAN Pi ecosystem. As a result, they copy patterns from whichever repo they land in, including archived and legacy repos that contain cruft and anti-patterns. This can lead to production of inconsistent or even incorrect output.
This issue is to track creation of an agent guidance file in the
developersrepo that AI agents and LLMs might consume to understand how to interact with WLAN Pi development generically. The term "agent guidance file" is used throughout; "skill" is avoided because it has a competing, tool-specific meaning in current agent ecosystems.Goal
Add
AGENTS.mdat the repo root of thedevelopersrepo, following the convention agent tools read automatically. The guidance is org-wide: it applies to AI agents working across all WLAN Pi repos, not justdevelopers.The file should be guidance, not a rigid standard. It points to the existing docs in the
developersrepo rather than duplicating them.Distribution model
The
AGENTS.mdconvention is per-repo: agent tools read the file at the root of the repo they are currently working in. A file that lives only indevelopersis invisible to an agent working inwlanpi-profilerorwlanpi-core, which is exactly the scenario this issue exists to fix.developers.AGENTS.mdto each active repo. The stub states the platform rule and links to the file. Stubs contain no independent guidance so there is only one source to maintain.Tool coverage of
AGENTS.mdvaries. Some tools key on other filenames (for exampleCLAUDE.mdfor Claude Code,GEMINI.mdfor Gemini CLI). This issue targetsAGENTS.mdonly. Symlinks or pointer files for other conventions are out of scope here and can be handled in the rollout issue if needed.Authority model
The
developersrepo should be the source of truth for WLAN Pi development guidance.Repo-specific READMEs and top-level docs are useful evidence of patterns, but they may contain historical cruft, legacy decisions, or release-specific guidance.
Archived repos, legacy repos, and older Debian-suite branches must not override the current guidance in
developers.Target platform
python3package in Trixie. WLAN Pi is tied to the system Python package.Python 3.13+.python3package. Production apps are distributed as.debpackages and may usedh_virtualenvunder/opt/wlanpi-{app}.py39orpy311intox.iniorpyproject.toml, update it to includepy313when the repo is next actively worked on. Seestyle/PYTHON.md.Maintenance note: the platform rule is intentionally duplicated in
AGENTS.mdandstyle/PYTHON.md. When the target suite or Python version changes, both files must be updated in the same change.AGENTS.mdshould carry a comment or line noting this coupling.Conventions to capture
Framed as recommendations, each linking to the authoritative doc via absolute URL:
--where required.style/PYTHON.md. Usepyproject.tomlfor new packages, notsetup.py. Support running aspython -m app. Useargparse, not a hand-rolled parser. Test withpytest. Usetoxfor test, lint, and format workflows.architecture/PACKAGING.mdandarchitecture/FHS.md. WLAN Pi uses Debian.debpackaging exclusively. Package names use the mandatorywlanpi-prefix. Python apps usedh_virtualenvwhere applicable. App files go under/opt/wlanpi-{app}, config under/etc/wlanpi-{app}, logs under/var/log/wlanpi-{app}, variable data under/var/lib/wlanpi-{app}, systemd units under/lib/systemd/system. Usedebhelper-compat (= 13).style/README_STANDARDS.md. Markdown only (no.rst). Start with a short What/Why section. Use Title Case headings. Use language hints on code fences. Keep tone neutral and professional. Link back to thedevelopersrepo.CONTRIBUTING.md,GIT_WORKFLOW.md,RELEASE_PROCESS.md, andstyle/DCH.md. Targetdevwhen it exists, elsemain. Never commit directly todevormain. Branch naming:u/<user>/<desc>,feature/<desc>,bugfix/<desc>,hotfix/<desc>. Squash merges for temporary branches only; regular merge commit fordevintomain. Managedebian/changelogwithdch.licensing/licensing.md.Recognizing cruft
The guidance file should warn LLMs not to copy outdated patterns from old repos. In
AGENTS.mditself, describe cruft at the pattern level rather than naming specific repos, since repo names go stale and add length. Patterns found during the org review:sudo python3 -m pip install ...(seen infpms-legacy,profiler-legacy, etc).python3.9orpython3.11interpreter paths (seen inwlanpi-core/WORKFLOW.md).wlanpi-profiler,wlanpi-desktop,wlanpi-kernel,build,sbuild-debian-package,raspap-webgui).setup.pybased packaging for new projects.The repo names above are evidence for this issue, not content for the guidance file.
When in doubt, defer to the
developersrepo, not the repo being edited.Size and validation
sudo pip installorsetup.py).Non-goals
developersrepo style and architecture docs remain the source of truth.Acceptance criteria
AGENTS.mdadded at the repo root ofdevelopers, concise and scoped (target under ~150 lines).developersrepo is the source of truth.3.13+, Python version is tied to the OS Python package.AGENTS.mdandstyle/PYTHON.mdso both are updated together at the next suite transition.GETTING_STARTED.mdchanged fromPython 3.13+toPython 3.13.style/PYTHON.mdupdated to make the policy explicit: WLAN Pi follows Debian Trixie's systempython3package (3.13), does not target Python 3.14 or 3.15, and does not describe the policy as3.13+.Resolved decisions
AGENTS.mdat the repo root ofdevelopers. Other filename conventions (CLAUDE.md,GEMINI.md) are out of scope for this issue.style/PYTHON.md, with an explicit note that the two must be updated together.