You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+26Lines changed: 26 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -38,3 +38,29 @@ Periodic sync
38
38
39
39
If you set `SANITY_PROJECT_ID`, the app will run an immediate sync at startup and schedule periodic syncs every `SYNC_INTERVAL_SECONDS` (default 3600). You can adjust `SYNC_INTERVAL_SECONDS` in your environment.
40
40
41
+
Recent additions
42
+
----------------
43
+
44
+
-`docs/agent.md` and `docs/skills.md`: design and operational documentation for the agent and skills architecture.
45
+
-`backend/app/ai_skills/example_skill.py`: example skill implementing the `run_skill(input: dict) -> dict` contract.
46
+
-`backend/app/skills_registry.py`: dynamic loader/registry for skills under `backend/app/ai_skills/`.
47
+
-`backend/app/ai_client.py` updated to attempt executing a registered skill (env `JUSTIFICATION_SKILL` or first available) before calling the LLM; also respects `OLLAMA_TIMEOUT`.
48
+
-`tests/test_skill_contract.py`: contract test asserting that `example_skill` integrates with `ai_client`.
49
+
50
+
How to run the new contract test locally:
51
+
52
+
```powershell
53
+
python -m venv .venv
54
+
.venv\Scripts\Activate.ps1
55
+
pip install -r backend/requirements.txt
56
+
pip install pytest
57
+
pytest -q tests/test_skill_contract.py
58
+
```
59
+
60
+
Notes
61
+
-----
62
+
63
+
- I added a `.gitignore` to avoid committing `.venv` and other Python artifacts. If you already committed a virtual environment, consider removing it from the repo and keeping the `.gitignore`.
64
+
- The scheduler currently uses an in-process `APScheduler`. For production scaling we recommend leader-election via Redis or externalizing periodic work to a worker queue — see `docs/agent.md` for details.
0 commit comments