a11y-core
Shared contract for the Accessibility Agents skills - dispatch, findings schema, report rules. Read by skills, never dispatched on its own.
Reference data, not a reviewer. Python and wxPython development: packaging (PyInstaller/Nuitka), testing, desktop accessibility APIs, cross-platform paths, and framework patterns.
$ npx -y skills add Community-Access/accessibility-agents --skill kb-python-development --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/kb-python-developmentContext preview
The summary Claude sees to decide when to auto-load this skill.
Reference data, not a reviewer. Python and wxPython development: packaging (PyInstaller/Nuitka), testing, desktop accessibility APIs, cross-platform paths, and framework patterns.
name: kb-python-development description: "Reference data, not a reviewer. Python and wxPython development: packaging (PyInstaller/Nuitka), testing, desktop accessibility APIs, cross-platform paths, and framework patterns." license: MIT disable-model-invocation: true user-invocable: false metadata: tier: reference domain: cross-cutting output: none effort: low title: Python Development
Reference data for the Developer Hub, Python Specialist, and wxPython Specialist agents.
Each version, with its key features and EOL.
| Version | Key Features | EOL | |---|---|---| | 3.10 | `match/case`, `X \| Y` unions, `ParamSpec` | Oct 2026 | | 3.11 | Exception groups, `Self` type, `tomllib`, faster CPython | Oct 2027 | | 3.12 | Type parameter syntax `def f[T]()`, `@override`, f-string nesting | Oct 2028 | | 3.13 | Experimental free-threaded mode, improved error messages | Oct 2029 | | 3.14 | `async pdb.set_trace_async()`, template strings (PEP 750) | Oct 2030 |
[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "my-app" version = "1.0.0" requires-python = ">=3.10" dependencies = [] [project.optional-dependencies] dev = ["pytest>=8.0", "ruff>=0.6", "mypy>=1.11"] [project.scripts] myapp = "my_app.__main__:main" [tool.pytest.ini_options] testpaths = ["tests"] addopts = "-ra --strict-markers" [tool.ruff] target-version = "py310" line-length = 100 [tool.ruff.lint] select = ["E", "F", "W", "I", "N", "UP", "B", "SIM", "TCH"] [tool.mypy] python_version = "3.10" strict = true
exe = EXE(pyz, a.scripts, a.binaries, a.zipfiles, a.datas,
name='MyApp', console=False, icon='icon.ico')exe = EXE(pyz, a.scripts, exclude_binaries=True,
name='MyApp', console=False, icon='icon.ico')
coll = COLLECT(exe, a.binaries, a.zipfiles, a.datas, name='MyApp')Each sizer, with when to use.
| Sizer | When to Use | |---|---| | `wx.BoxSizer(wx.VERTICAL)` | Stack items top-to-bottom | | `wx.BoxSizer(wx.HORIZONTAL)` | Lay items left-to-right | | `wx.GridBagSizer(vgap, hgap)` | Form layouts with labels + controls | | `wx.FlexGridSizer(rows, cols, vgap, hgap)` | Even grid layouts | | `wx.WrapSizer` | Flow layout that wraps | | `wx.StaticBoxSizer(wx.VERTICAL, parent, "Label")` | Grouped controls with border |
# From worker thread:
wx.CallAfter(self.update_status, "Done")
wx.PostEvent(self, CustomEvent(data=result))
# NEVER do this from a worker thread:
self.status_bar.SetStatusText("Done") # CRASH or CORRUPTIONEach standard ID, with its ID and purpose.
| ID | Purpose | |---|---| | `wx.ID_OK` | OK button | | `wx.ID_CANCEL` | Cancel button | | `wx.ID_SAVE` | Save action | | `wx.ID_OPEN` | Open action | | `wx.ID_EXIT` | Exit / Quit | | `wx.ID_HELP` | Help action | | `wx.ID_NEW` | New document | | `wx.ID_UNDO` / `wx.ID_REDO` | Undo / Redo |
Each event, with its trigger.
| Event | Trigger | |---|---| | `wx.EVT_BUTTON` | Button click | | `wx.EVT_MENU` | Menu item selected | | `wx.EVT_CLOSE` | Window close requested | | `wx.EVT_SIZE` | Window resized | | `wx.EVT_TIMER` | Timer fired | | `wx.EVT_TEXT` | Text control content changed | | `wx.EVT_LIST_ITEM_SELECTED` | List item selected | | `wx.EVT_TREE_SEL_CHANGED` | Tree selection changed | | `wx.EVT_UPDATE_UI` | UI state update check |
from platformdirs import user_config_dir, user_data_dir, user_cache_dir
config = user_config_dir("MyApp", "MyCompany") # %APPDATA% / ~/Library/... / ~/.config/
data = user_data_dir("MyApp", "MyCompany")
cache = user_cache_dir("MyApp", "MyCompany")# Run all tests pytest # Run specific test file pytest tests/test_queue.py # Run specific test pytest tests/test_queue.py::test_submit_job -v # With coverage pytest --cov=mypackage --cov-report=term-missing # Stop on first failure pytest -x # Show locals on failure pytest -l
import logging
def setup_logging(level: int = logging.INFO) -> None:
logging.basicConfig(
level=level,
format="%(asctime)s %WCAG 2.2 AA enforcement for agentic coding, as a set of Agent Skills. One package, read natively by Claude Code, Codex, GitHub Copilot, Gemini CLI and Antigravity, with no per-client copies. Models forget accessibility while generating code.
Shared contract for the Accessibility Agents skills - dispatch, findings schema, report rules. Read by skills, never dispatched on its own.
Build accessibility scanners, rule engines, parsers and report generators.
Web UI accessibility lead. Use before writing or changing HTML, JSX, TSX, Vue, Svelte, CSS or templates. Picks specialists and merges their findings.
Compare audits across commits to find new, fixed and regressed issues.
Generate a W3C or EU model accessibility statement from audit results.
GitHub Actions: workflow runs, logs, re-runs and CI failure triage.