feat(openclaw): configure node for full access and install essential production tools

- Enabled native execution and nativeSkills in OpenClaw config
- Installed and linked core CLI dependencies (things3-cli, grizzly, remindctl, op, etc.)
- Deployed macOS-specific skills (Notes, Reminders, Things, TTS, Mission Control)
- Hardened node startup script with optimized PATH and daemon configuration
- Finalized environment for secure autonomous operation
This commit is contained in:
mw
2026-03-10 07:22:27 +01:00
parent 0434380915
commit fb33d6a9fe
43 changed files with 2884 additions and 0 deletions
+22
View File
@@ -0,0 +1,22 @@
# Implementation Plan: 001-weather-cli
**Tech Stack**: Python 3.12+, `httpx` (HTTP client), `argparse` or `click` (CLI), `pytest` (Testing).
## 1. Research
- **API Choice**: Use `openweathermap.org` (reputable, simple).
- **Client**: `httpx` for async-capable HTTP requests.
- **Contract**: Expected JSON response structure from OpenWeather API current weather endpoint.
## 2. Design
- **Entities**: `CityWeather` dataclass (temp, condition, unit).
- **Contract**: `WeatherService` interface.
- **CLI Interface**: `fetch-weather --city [CITY] --units [metric|imperial]`.
## 3. Constitution Check
- **Article II: Test-First**: Plan includes `pytest` for all units and services.
- **Article V: Library-First**: Logic resides in `weather_fetcher/core.py`, CLI is a wrapper in `weather_fetcher/cli.py`.
## 4. Integration Scenarios
- [ ] `WEATHER_API_KEY` set → Fetch weather for "London" → Success.
- [ ] `WEATHER_API_KEY` missing → Fetch weather → Error message.
- [ ] Invalid city "Asdfghjkl" → Error message.
+27
View File
@@ -0,0 +1,27 @@
# Spec: Weather Fetcher CLI
**Objective**: A Python CLI tool that fetches current weather for a city using a public API.
## User Stories
### US1: Fetch current weather [P1]
As a CLI user, I want to fetch the current temperature and description for a city.
- **Input**: City name (string).
- **Output**: JSON or formatted table with "Temperature (C)" and "Condition".
### US2: API Key Management [P1]
As an administrator, I want the tool to read the API key from an environment variable `WEATHER_API_KEY`.
- **Validation**: Fail with a clear error if the variable is missing.
### US3: Units selection [P2]
As a international user, I want to choose between Metric (Celsius) and Imperial (Fahrenheit) via a flag.
- **Acceptance Criteria**: `--units metric` or `--units imperial`.
## Non-Functional Requirements
- **Performance**: Response within 2 seconds.
- **Reliability**: Handle invalid city names gracefully.
## Success Criteria
- [ ] Tool returns weather for "Worms, DE".
- [ ] Tool fails gracefully for "NonExistentCity".
- [ ] All tests pass with 80% coverage.
+28
View File
@@ -0,0 +1,28 @@
# Task Breakdown: 001-weather-cli
## 1. Setup [P1]
- [ ] Task Setup: `uv init weather-cli && cd weather-cli && uv add httpx click pytest ruff mypy`
- [ ] CI: Initialize git repo and commit setup.
## 2. API Key Management [US2] [P1]
- [ ] Key verification logic: Throw exception if `WEATHER_API_KEY` is missing from environment.
## 3. Data Entities [US1] [P1] [TDD]
- [ ] Write `CityWeather` dataclass with `temp` and `condition`.
- [ ] Write tests for entity validation.
## 4. Weather Logic [US1] [US3] [P1] [TDD]
- [ ] Implement `WeatherService` using `httpx` to call OpenWeather API.
- [ ] Support units (metric/imperial).
- [ ] Handle 404/City not found and API errors.
- [ ] Write mocked API tests for service with unit coverage.
## 5. CLI Interface [US1] [US3] [P2]
- [ ] Implement command line interface using `click`.
- [ ] Integrate service and entities.
## 6. Final Polish [P1]
- [ ] Verify against `quickstart.md` scenarios.
- [ ] Run full test suite with `pytest`.
- [ ] Format with `ruff`.
- [ ] Final commit.