agentic instructions and guidelines
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
# OpenClaw Home Assistant Add-on Patterns
|
||||
|
||||
Always reuse existing logic in `run.sh`, `oc_config_helper.py`, and `render_nginx.py`.
|
||||
Avoid duplicate implementations for config parsing, gateway patching, or template rendering.
|
||||
Respect guidelines in AGENTS.md
|
||||
|
||||
## Stack
|
||||
|
||||
- Home Assistant add-on (Debian Bookworm base)
|
||||
- Bash runtime orchestrator (`run.sh`)
|
||||
- Python helper scripts for config/template work
|
||||
- nginx template rendering
|
||||
- YAML config schema + 6 locale translation files
|
||||
|
||||
## Source of Truth
|
||||
|
||||
- Add-on options/schema: `openclaw_assistant_dev/config.yaml`
|
||||
- Runtime boot logic: `openclaw_assistant_dev/run.sh`
|
||||
- Safe OpenClaw config edits: `openclaw_assistant_dev/oc_config_helper.py`
|
||||
- nginx + landing rendering: `openclaw_assistant_dev/render_nginx.py`
|
||||
- UI text in Home Assistant: `openclaw_assistant_dev/translations/*.yaml`
|
||||
- User-facing docs: `DOCS.md`
|
||||
|
||||
## Required Sync Rules
|
||||
|
||||
When changing add-on options, update in the same PR:
|
||||
|
||||
1. `config.yaml` option default + schema
|
||||
2. All translation files (`en`, `bg`, `de`, `es`, `pl`, `pt-BR`)
|
||||
3. `DOCS.md` config/troubleshooting sections
|
||||
4. `CHANGELOG.md`
|
||||
|
||||
When changing landing/nginx placeholders:
|
||||
- Keep template keys and `render_nginx.py` replacements in sync.
|
||||
|
||||
## Security Rules
|
||||
|
||||
- Do not log secrets/tokens.
|
||||
- For gateway token docs/UI guidance, do not use `openclaw config get gateway.auth.token` (redacted in v2026.2.22+).
|
||||
- Prefer `jq -r '.gateway.auth.token' /config/.openclaw/openclaw.json`.
|
||||
|
||||
## Editing Rules
|
||||
|
||||
- Keep fixes minimal and root-cause focused.
|
||||
- Preserve backward compatibility for existing add-on options unless migration is explicit.
|
||||
- Do not change unrelated behavior while fixing one issue.
|
||||
|
||||
## Validation Commands
|
||||
|
||||
```sh
|
||||
bash -n openclaw_assistant_dev/run.sh
|
||||
python3 -m py_compile openclaw_assistant_dev/oc_config_helper.py
|
||||
python3 -m py_compile openclaw_assistant_dev/render_nginx.py
|
||||
```
|
||||
|
||||
If behavior changes are user-visible, update `openclaw_assistant_dev/CHANGELOG.md`.
|
||||
Vendored
+9
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"recommendations": [
|
||||
"timonwong.shellcheck",
|
||||
"redhat.vscode-yaml",
|
||||
"ms-python.python",
|
||||
"ms-python.vscode-pylance",
|
||||
"esbenp.prettier-vscode"
|
||||
]
|
||||
}
|
||||
Vendored
+44
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"editor.formatOnSave": true,
|
||||
"files.insertFinalNewline": true,
|
||||
"files.trimFinalNewlines": true,
|
||||
"files.eol": "\n",
|
||||
|
||||
"[shellscript]": {
|
||||
"editor.tabSize": 2,
|
||||
"editor.insertSpaces": true
|
||||
},
|
||||
"[yaml]": {
|
||||
"editor.tabSize": 2,
|
||||
"editor.insertSpaces": true
|
||||
},
|
||||
"[python]": {
|
||||
"editor.tabSize": 4,
|
||||
"editor.insertSpaces": true
|
||||
},
|
||||
"[markdown]": {
|
||||
"editor.wordWrap": "on",
|
||||
"editor.quickSuggestions": {
|
||||
"comments": "off",
|
||||
"strings": "off",
|
||||
"other": "off"
|
||||
}
|
||||
},
|
||||
|
||||
"files.associations": {
|
||||
"*.tpl": "nginx"
|
||||
},
|
||||
|
||||
"yaml.validate": true,
|
||||
"yaml.format.enable": true,
|
||||
|
||||
"shellcheck.enable": true,
|
||||
"shellcheck.run": "onType",
|
||||
|
||||
"python.analysis.typeCheckingMode": "basic",
|
||||
"python.analysis.autoImportCompletions": true,
|
||||
|
||||
"search.exclude": {
|
||||
"**/__pycache__": true
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,108 @@
|
||||
# Repository Guidelines
|
||||
|
||||
## Project Scope
|
||||
|
||||
This repository builds the **OpenClaw Assistant (DEV)** Home Assistant add-on.
|
||||
The add-on packages OpenClaw + nginx + ttyd and manages startup/configuration glue.
|
||||
|
||||
## Architecture at a Glance
|
||||
|
||||
- Add-on root metadata/docs:
|
||||
- `README.md`
|
||||
- `DOCS.md`
|
||||
- `SECURITY.md`
|
||||
- `repository.yaml`
|
||||
- Runtime implementation (all add-on behavior lives here):
|
||||
- `openclaw_assistant_dev/run.sh` (PID 1 orchestrator)
|
||||
- `openclaw_assistant_dev/oc_config_helper.py` (safe JSON config edits)
|
||||
- `openclaw_assistant_dev/render_nginx.py` (template rendering)
|
||||
- `openclaw_assistant_dev/nginx.conf.tpl`
|
||||
- `openclaw_assistant_dev/landing.html.tpl`
|
||||
- `openclaw_assistant_dev/config.yaml` (HA options + schema)
|
||||
- `openclaw_assistant_dev/translations/*.yaml` (all locale UI strings)
|
||||
- `openclaw_assistant_dev/Dockerfile`
|
||||
- `openclaw_assistant_dev/CHANGELOG.md`
|
||||
|
||||
## Core Rules
|
||||
|
||||
- Fix root causes, not symptoms.
|
||||
- Keep edits surgical; do not refactor unrelated code.
|
||||
- Never introduce insecure defaults.
|
||||
- Never log secrets or auth tokens.
|
||||
- Keep behavior backward-compatible unless the change explicitly requires a migration.
|
||||
|
||||
## Add-on Config Coupling Rules (Critical)
|
||||
|
||||
When adding/changing any add-on option, update **all** of the following in one change:
|
||||
|
||||
1. `openclaw_assistant_dev/config.yaml`
|
||||
- `options:` default
|
||||
- `schema:` validation entry
|
||||
- comments/help text
|
||||
2. `openclaw_assistant_dev/translations/en.yaml`
|
||||
3. `openclaw_assistant_dev/translations/bg.yaml`
|
||||
4. `openclaw_assistant_dev/translations/de.yaml`
|
||||
5. `openclaw_assistant_dev/translations/es.yaml`
|
||||
6. `openclaw_assistant_dev/translations/pl.yaml`
|
||||
7. `openclaw_assistant_dev/translations/pt-BR.yaml`
|
||||
8. `DOCS.md` configuration reference / troubleshooting if user-facing
|
||||
9. `openclaw_assistant_dev/CHANGELOG.md`
|
||||
|
||||
If any of these are skipped, the UX becomes inconsistent in HA.
|
||||
|
||||
## Runtime Safety Rules
|
||||
|
||||
- `run.sh` runs with `set -euo pipefail`; avoid constructs that fail unexpectedly under `set -e`.
|
||||
- Validate all user-provided values from `/data/options.json` before injecting into shell/nginx/openclaw config.
|
||||
- Keep `run.sh` idempotent on restart (multiple starts must not corrupt state).
|
||||
- Treat `/config/` as persistent state; never wipe user data unless explicitly requested.
|
||||
|
||||
## Gateway/Auth/Security Rules
|
||||
|
||||
- OpenClaw v2026.2.22+ redacts sensitive values in `openclaw config get`.
|
||||
- For token retrieval guidance, prefer: `jq -r '.gateway.auth.token' /config/.openclaw/openclaw.json`.
|
||||
- `trusted-proxy` mode may reject direct local CLI WS calls (`trusted_proxy_user_missing`); document this clearly instead of hiding it.
|
||||
- For `lan_https` certificate logic, keep SAN generation deterministic and regeneration-triggered on SAN/IP changes.
|
||||
|
||||
## Template Coupling Rules
|
||||
|
||||
- If adding placeholders in `landing.html.tpl` or `nginx.conf.tpl`, update `render_nginx.py` in the same change.
|
||||
- If landing-page guidance changes (commands/errors), sync corresponding troubleshooting text in `DOCS.md`.
|
||||
|
||||
## Versioning and Changelog
|
||||
|
||||
- User-visible changes should update:
|
||||
- `openclaw_assistant_dev/CHANGELOG.md`
|
||||
- `openclaw_assistant_dev/config.yaml` version
|
||||
- Keep changelog entries user-facing and action-oriented.
|
||||
|
||||
## Coding Style
|
||||
|
||||
- Shell: POSIX-friendly Bash, explicit quoting, descriptive variable names.
|
||||
- Python: small focused helpers, explicit error handling, no hidden side effects.
|
||||
- YAML/Markdown: preserve existing style and structure.
|
||||
- Avoid adding dependencies unless necessary.
|
||||
|
||||
## Validation Checklist (Run After Relevant Changes)
|
||||
|
||||
From repo root:
|
||||
|
||||
```sh
|
||||
bash -n openclaw_assistant_dev/run.sh
|
||||
python3 -m py_compile openclaw_assistant_dev/oc_config_helper.py
|
||||
python3 -m py_compile openclaw_assistant_dev/render_nginx.py
|
||||
```
|
||||
|
||||
For option changes:
|
||||
- verify `config.yaml` option + schema + all translations exist
|
||||
- verify `DOCS.md` matches current behavior
|
||||
|
||||
For startup/auth/proxy/cert changes:
|
||||
- verify log messages remain clear and actionable
|
||||
- verify `landing.html.tpl` instructions match actual commands
|
||||
|
||||
## Commit Scope
|
||||
|
||||
- Group related changes only.
|
||||
- Do not include unrelated formatting churn.
|
||||
- Do not edit generated/cache folders (`__pycache__`, temporary outputs).
|
||||
Reference in New Issue
Block a user