Author the taOS OS-native agent SKILL (operate-the-OS-for-the-user) - #2283
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
📝 WalkthroughWalkthroughAdded the Changestaos-agent documentation
Estimated code review effort: 2 (Simple) | ~10 minutes 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
PR Summary by QodoAdd taos-agent SKILL docs for OS-native desktop operation via control API
AI Description
Diagram
High-Level Assessment
Files changed (3)
|
|
nemotron-super review VERDICT: No blocking issues found.
Automated first-pass review by the nemotron-super lane. The lead still reviews before merge. |
|
Reviewed at 5dc275f; one clarification added by me at 67130a3. Good build, and it shipped WITH a changelog line unprompted - noting that, since every other lane PR today needed one added. VERIFIED, because a skill doc is executable in practice - agents act on it, so an inaccurate one is worse than none:
ADDED, the one real gap: the doc told agents to drive /api/desktop/* without saying that a registry JWT cannot reach it. Verified in auth_middleware.py - /api/desktop/* appears in NO agent-bearer passthrough list (feeds, A2A, observatory, tasks, doc-review, canvas, decisions, files, scope-requests), and desktop_control scopes by request.state.user_id, which the middleware deliberately leaves unset for registry tokens. Meanwhile the files section immediately below DOES tell agents to use a registry JWT, so the natural reading is that the same bearer works for both. It does not, and an agent following this would have burned turns on 401s before working that out. Now stated explicitly, with the contrast to the files routes. Docs-only, +419/-0. Auto-merge armed on green. |
Code Review by Qodo
1. Wrong install command URL
|
| Install command (quote exactly): | ||
| `curl -fsSL https://raw.githubusercontent.com/jaylfc/tinyagentos/master/scripts/install-server.sh | sudo bash` |
There was a problem hiding this comment.
1. Wrong install command url 🐞 Bug ≡ Correctness
.claude/skills/taos-agent/SKILL.md instructs agents to quote an install command that fetches install-server.sh from jaylfc/tinyagentos, but the installer in this repo (and README) point to jaylfc/taOS. Users copy/pasting the documented command may hit a 404 or install from an unintended upstream.
Agent Prompt
### Issue description
The new taos-agent skill tells the OS-native agent to quote an install command that downloads the installer script from the wrong GitHub repository (`jaylfc/tinyagentos`). The installer script in this repo (and README) indicate the canonical source is `jaylfc/taOS`.
### Issue Context
This is explicitly marked as “quote exactly”, so a wrong URL is a high-impact copy/paste break.
### Fix Focus Areas
- .claude/skills/taos-agent/SKILL.md[81-83]
- scripts/install-server.sh[8-20]
- README.md[465-468]
### Expected fix
Update the SKILL.md install command to match the canonical raw URL used by `scripts/install-server.sh` / README (currently `https://raw.githubusercontent.com/jaylfc/taOS/master/scripts/install-server.sh`).
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
| - `POST /api/projects/{slug}/files/upload?path=<subdir>` -- multipart form field `file`. | ||
| Returns `{name, path, size, status}`. `?path=` places it in a subfolder; a conflict is | ||
| a 400. Needs `files_write`. | ||
| - `POST /api/projects/{slug}/mkdir` -- JSON `{"path": "<subdir>"}`. Needs `files_write`. |
There was a problem hiding this comment.
2. Upload conflict contract wrong 🐞 Bug ≡ Correctness
.claude/skills/taos-agent/SKILL.md claims /api/projects/{slug}/files/upload returns 400 on
conflicts, but the server implementation writes the destination file unconditionally (overwriting if
it already exists). Agents following the documented contract may inadvertently clobber existing
project files.
Agent Prompt
### Issue description
The taos-agent skill documents that `POST /api/projects/{slug}/files/upload` returns a 400 on conflicts. The current route implementation does not check for an existing destination filename and will overwrite.
### Issue Context
This skill is intended to drive agent behavior. A mismatch here can lead to silent data loss when an agent uploads a file with an existing name.
### Fix Focus Areas
- .claude/skills/taos-agent/SKILL.md[197-203]
- tinyagentos/routes/project_files.py[204-229]
### Expected fix
Pick one and make docs+code consistent:
1) **Doc fix (simplest):** Update SKILL.md to explicitly state that upload overwrites an existing file of the same name (and only errors on invalid path / path conflicts where `path` targets a file).
2) **Behavior fix (safer):** Add a destination-exists check (ideally race-safe) and return a conflict error (400/409), optionally adding an explicit overwrite flag/query param if overwrites are desired sometimes.
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
Add .claude/skills/taos-agent/SKILL.md consolidating the agent-manual OS-operation content into actionable instructions for the OS-native taOS agent. Features the hard rule that all desktop driving goes only through POST /api/desktop/command + POST /api/desktop/screenshot. Covers opening and driving apps and windows, desktop control, projects, files, memory and notes, chat conventions, image generation, and answering the user. Updates docs/agent-manual/index.md to point at the new skill and at the existing taos-development-skill. Adds a CHANGELOG entry. Draft for @taOS-dev review.
| | Agent frameworks | OpenClaw (default), Hermes, SmolAgents, Langroid, PocketFlow, OpenAI Agents SDK | | ||
| | Memory system | taOSmd, long-term memory shared by all agents | | ||
| | Community | github.com/jaylfc/tinyagentos/discussions | | ||
| | Bug reports | github.com/jaylfc/tinyagentos/issues | |
There was a problem hiding this comment.
WARNING: Bug reports URL uses wrong repository — tinyagentos should be taOS
The Key Facts table tells agents to direct users to github.com/jaylfc/tinyagentos/issues for bug reports, but this repo is jaylfc/taOS. An agent following this would send users to a non-canonical or wrong repository.
| | Bug reports | github.com/jaylfc/tinyagentos/issues | | |
| | Bug reports | github.com/jaylfc/taOS/issues | |
Reply with @kilocode-bot fix it to have Kilo Code address this issue.
| **Keep first answers under 6 sentences.** DO give the exact menu path or command when | ||
| one exists. DO NOT promise dates or features that are not in this skill. If you do not | ||
| know, say exactly: "I'm not sure about that one. The community page at | ||
| github.com/jaylfc/tinyagentos/discussions is the best place to ask, and bugs go to |
There was a problem hiding this comment.
WARNING: Bug reports URL uses wrong repository — tinyagentos should be taOS
The canned answer for "Where do I report a bug?" sends users to github.com/jaylfc/tinyagentos/issues, but the canonical repo is jaylfc/taOS.
| github.com/jaylfc/tinyagentos/discussions is the best place to ask, and bugs go to | |
| **"Where do I report a bug?"** -- github.com/jaylfc/taOS/issues, with the error |
Reply with @kilocode-bot fix it to have Kilo Code address this issue.
| memory, settings). Settings has a backups section; copying the whole data directory | ||
| while taOS is stopped is also a complete backup. | ||
|
|
||
| **"Where do I report a bug?"** -- github.com/jaylfc/tinyagentos/issues, with the error |
There was a problem hiding this comment.
WARNING: Bug reports URL uses wrong repository — tinyagentos should be taOS
Same wrong URL appears in the explicit answer shape. Agents quoting this would direct users to the wrong repo.
| **"Where do I report a bug?"** -- github.com/jaylfc/tinyagentos/issues, with the error | |
| text and what hardware you are on. |
Reply with @kilocode-bot fix it to have Kilo Code address this issue.
| **before** reasoning from scratch: | ||
|
|
||
| - In the repo: `docs/UPDATE_BREAKAGE_LOG.md` | ||
| - Latest online: `https://raw.githubusercontent.com/jaylfc/tinyagentos/master/docs/UPDATE_BREAKAGE_LOG.md` |
There was a problem hiding this comment.
WARNING: UPDATE_BREAKAGE_LOG URL uses wrong repository — tinyagentos should be taOS
The "After an update" section points agents to https://raw.githubusercontent.com/jaylfc/tinyagentos/master/docs/UPDATE_BREAKAGE_LOG.md, but the canonical repo is jaylfc/taOS.
| - Latest online: `https://raw.githubusercontent.com/jaylfc/tinyagentos/master/docs/UPDATE_BREAKAGE_LOG.md` | |
| - Latest online: `https://raw.githubusercontent.com/jaylfc/taOS/master/docs/UPDATE_BREAKAGE_LOG.md` |
Reply with @kilocode-bot fix it to have Kilo Code address this issue.
| > `request.state.user_id`, which the middleware deliberately leaves unset for registry | ||
| > tokens. A `Authorization: Bearer <registry JWT>` call here is rejected, unlike the | ||
| > project-files routes below, which ARE agent-reachable with `files_read`/`files_write`. | ||
| > Drive the desktop from the in-OS agent's session; do not retry with an agent token. The browser subscribes over |
There was a problem hiding this comment.
WARNING: Blockquote and following paragraph are merged without a blank line — creates a run-on sentence
The blockquote closes mid-line and The browser subscribes over starts immediately after it on the same line with no blank-line break. Markdown renders this as a continuation of the blockquote, making it read as one long, awkward sentence.
| > Drive the desktop from the in-OS agent's session; do not retry with an agent token. The browser subscribes over | |
| > Drive the desktop from the in-OS agent's session; do not retry with an agent token. | |
| > | |
| The browser subscribes over |
Reply with @kilocode-bot fix it to have Kilo Code address this issue.
Code Review SummaryStatus: No Issues Found | Recommendation: Merge Files Reviewed (1 file)
Previous Review Summaries (2 snapshots, latest commit a938952)Current summary above is authoritative. Previous snapshots are kept for context only. Previous review (commit a938952)Status: 5 Issues Found | Recommendation: Address before merge Overview
Issue Details (click to expand)WARNING
Files Reviewed (3 files)
Fix these issues in Kilo Cloud Previous review (commit 41dce53)Status: 5 Issues Found | Recommendation: Address before merge Overview
Issue Details (click to expand)WARNING
Files Reviewed (3 files)
Reviewed by step-3.7-flash · Input: 33.2K · Output: 1.2K · Cached: 140K |
doc-gate's failure was recorded at 11:16Z against the PREVIOUS head; the rebase at 41dce53 landed after it and doc-gate never re-reported, leaving a stale required check blocking the PR. Verified clean locally against current dev.
…ading it as a path check_doc_gate.py's Layer A scans index.md for referenced repo paths and treated the slash in 'desktop/window control' as a path that does not exist. It is prose, not a path. 'desktop and window control' reads better anyway.
CARD TITLE (intent, not commit subject): Author the taOS OS-native agent SKILL (operate-the-OS-for-the-user)
Autonomous build of board card tsk-36vlxg.
Add .claude/skills/taos-agent/SKILL.md consolidating the agent-manual
OS-operation content into actionable instructions for the OS-native taOS
agent. Features the hard rule that all desktop driving goes only through
POST /api/desktop/command + POST /api/desktop/screenshot. Covers opening
and driving apps and windows, desktop control, projects, files, memory and
notes, chat conventions, image generation, and answering the user.
Updates docs/agent-manual/index.md to point at the new skill and at the
existing taos-development-skill. Adds a CHANGELOG entry.
Draft for @taOS-dev review.
Files:
.claude/skills/taos-agent/SKILL.md | 399 +++++++++++++++++++++++++++++++++++++
CHANGELOG.md | 8 +
docs/agent-manual/index.md | 12 ++
3 files changed, 419 insertions(+)
Summary by CodeRabbit