# 02: No-AI desktop path: PyQt bot connected to the page Part of: ../spec.md **What to build:** A developer runs the no-AI skill in a PyQt project that already has a bot printing step markers. The skill chooses the desktop path and connects the bot to the dashboard: - The bot runs as its own child process, and its output is read line by line. - Specific step markers move the progress bar and step list. - A friendly-rules table turns raw output lines into plain-English log lines. - Error lines always appear, even when no rule matches. - Dark mode is remembered between launches. **Blocked by:** 01 **Status:** ready-for-agent - [ ] The skill detects the PyQt project and the bot entry point, and fills in the host template's bot command, steps, step markers and friendly rules from the bot's real output. - [ ] Clicking Run starts the bot in a separate process. The Run button disables itself while running, and the status dot goes ready → running → done/error. - [ ] Step markers match on specific substrings and the first match wins. An unrelated line containing a common word does not move progress. - [ ] Unmatched error lines are always shown. Unmatched non-error lines are hidden. - [ ] The dark-mode choice persists across app restarts. - [ ] A Python assert-based self-check covers line classification, step-marker matching and friendly-rule matching, including the "never hide an error" case. - [ ] Skill eval on test project (b), a PyQt project with a step-marker bot: the skill doesn't ask the stack question, and the running page shows real steps and log lines.