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:
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
Reference in New Issue
Block a user