agent-skills-systemrdl
A hierarchical SystemRDL 2.0 authoring reference for coding agents, packaged as an Agent Plugin.
The plugin contains one Agent Skill, systemrdl-ref, that lets an agent
write legal Accellera SystemRDL 2.0 — syntactically valid, semantically consistent, and free of
the property combinations the standard forbids.
Why
The SystemRDL 2.0 standard is ~130 pages. An agent asked to write a register map otherwise has to
guess, or read the whole thing. Both produce descriptions that look right and are subtly illegal:
mutually exclusive properties set together, woclr on a read-only field, a writable field
straddling an access-width boundary.
How it is organized
Content is a disclosure ladder — a loading order, not a filing scheme:
| L | Artifact | Loaded when | Budget |
|---|---|---|---|
| L0 | name + description |
always resident | ~100 tok |
| L1 | SKILL.md |
the skill activates | ≤ 1500 tok |
| L2 | references/<area>/INDEX.md — 5 hubs |
the agent picks an area | ≤ 1400 tok |
| L3 | 30 leaf pages | the agent picks a construct | ≤ 2500 tok |
| L4 | references/_deep/ — 3 pages |
exhaustive lookup only | unbounded |
A trivial task stops at a hub for ~2.2k tokens; a typical one reaches two leaves for ~5.7k; only exhaustive lookups (full BNF, full UVM/IP-XACT access-mode mapping) go further.
src/agent_skills_systemrdl/share/skills/systemrdl-ref/ (== skills/systemrdl-ref)
├── SKILL.md # entry point: authoring loop, 5 rules, hub map, express lane
├── references/
│ ├── components/ # field, reg, regfile, mem, addrmap, signal, enum, struct, constraint
│ ├── properties/ # sw/hw access, counters, interrupts, reset, addressing, HDL path, UDPs
│ ├── language/ # lexical, types, expressions, scoping, parameters, preprocessor, BNF
│ ├── patterns/ # recipes, arrays, reuse, antipatterns
│ ├── validation/ # checklist, compiler errors, tooling
│ └── _deep/ # full BNF, full access modes, full property table
├── data/properties.yaml # all 90 properties, schema-validated
├── scripts/ # validate_rdl.py, query_property.py, explain_error.py
└── assets/templates/ # 8 compilable starting points
Every normative claim cites its clause or table — [§9.6.1 k], [Table 19] — so any sentence can
be audited against the standard. Uncited statements are marked as advice.
Install
pip install agent-skills-systemrdl
That registers an agent.skills entry point, so tools that walk that group — including IVPM's
agents handler — find the skill without being told where it is. In an IVPM project, one line is
enough:
# ivpm.yaml
- name: agent-skills-systemrdl
src: pypi
ivpm update then assembles .agents/skills/, .claude/skills/, and .cursor/skills/.
Without IVPM, symlink the installed skill into your client's skills directory:
python -c "from agent_skills_systemrdl.skills import get_skill_dirs; print(get_skill_dirs()[0])"
The package has no runtime dependencies. To let the bundled scripts do real work rather than report
that they cannot, install agent-skills-systemrdl[validate]; otherwise validate_rdl.py exits 2
with a "NOT VALIDATED" banner and the skill reports its output as unchecked rather than implying
otherwise.
The repository is also a portable Agent Plugin — plugin.json at the
root and skills/systemrdl-ref — so a client can be pointed at a checkout directly. See docs/ for
other clients and the IVPM-based development setup.
Develop
./bootstrap.sh # venv under packages/python, then `ivpm update`
# (deps come from pyproject.toml via ivpm.yaml)
packages/python/bin/python -m pytest tests/ # full test suite
packages/python/bin/python tools/lint_skill.py # ladder invariants, budgets, frontmatter
packages/python/bin/python -m build . # sdist + wheel
make -C docs html # documentation (built with -W)
The skill's canonical location is src/agent_skills_systemrdl/share/skills/systemrdl-ref/, because
setuptools only packages data found under the package directory. skills/systemrdl-ref is a
relative symlink to it, which is what gives the repository its Agent Plugins layout — one copy of
the content, two shapes. CI checks the symlink survives checkout and that every file under the skill
reaches the wheel.
CI enforces the claim that the shipped examples are legal:
- every
.rdlinassets/templates/andtests/golden/compiles and elaborates; - every
```systemrdlblock in the prose compiles, or declares an inline reason why not (currently 77 compile, 26 skipped with stated reasons); - 20 negative cases must fail with their recorded diagnostics, so the error catalogue cannot drift from what the compiler actually says;
- ladder invariants, token budgets, generated-file freshness, and property coverage;
- the wheel carries all 58 skill files, and the version agrees across
__version__.py,plugin.json, andSKILL.md.
Releases are tag-driven: pushes to master build a .<run-id> dev-suffixed wheel that is never
published; a v<version> tag publishes to PyPI and the docs. See
.forgejo/workflows/ci.yml (primary) and .github/workflows/ci.yml (mirror).
Documentation
docs/ builds a Sphinx site whose reference pages {include} the skill's Markdown rather than
copying it, plus four generated analysis pages: the disclosure ladder with measured token costs, the
property index, a spec-clause map, and a coverage report.
Project
| Source | https://git.dvkit.org/fvutils/agent-skills-systemrdl.git |
| Documentation | https://dvkit.org/fvutils/agent-skills-systemrdl/ |
| Package | agent-skills-systemrdl on PyPI |
git.dvkit.org is authoritative. CI, releases, and documentation all publish from there
(.forgejo/workflows/ci.yml); any GitHub mirror runs build-and-test only.
License
Apache-2.0. The Accellera SystemRDL 2.0 specification is copyright © 2015–2018 Accellera; this repository restates its rules with citation and is not an official Accellera publication. Where this reference and the standard disagree, the standard governs.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agent_skills_systemrdl-0.1.0.tar.gz.
File metadata
- Download URL: agent_skills_systemrdl-0.1.0.tar.gz
- Upload date:
- Size: 98.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
90a7cb257b3566d2e1683a808fedd8ebab022f3f713c23b84af354a899810887
|
|
| MD5 |
f5c03bd1aead011f58259794789614a6
|
|
| BLAKE2b-256 |
39251f4f8dcfae67177f6533a83d4292960fc2c09dbffd439dd9a3da1e1e457b
|
File details
Details for the file agent_skills_systemrdl-0.1.0-py3-none-any.whl.
File metadata
- Download URL: agent_skills_systemrdl-0.1.0-py3-none-any.whl
- Upload date:
- Size: 136.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
866eb1a48be3199a0b82847ea55e25710335993c1f2a7cf28d9bad3ad184a4e1
|
|
| MD5 |
d426c876f7a362d5a7630442be666299
|
|
| BLAKE2b-256 |
169425753d206f3d7529719c35ce41ade46bd19fa6fef3f1602b218c889efd7f
|