---
name: os-act-loop
description: Runs the KNOW → DECIDE → ACT sequence on one Action Priority account: refresh the record, re-score, draft by path, evaluate, enforce the fence, and log every touch. Use when the user says "run the loop on this account", "work this account", "take X through the OS", or after os-account-scorer names Action Priority accounts.
---

# os-act-loop

One account, one loop, three rounds maximum. This is the harness in skill form: the researcher, the drafter, and the evaluator never share a step.

## Preflight (every run)
1. Confirm `GTM-AI-OS/` is accessible. If not: "I need access to your GTM-AI-OS folder. Select it in Cowork's folder picker, or run `os-install` from the core plugin." Stop until it is.
2. Read `CLAUDE.md`, `INDEX.md`, `context/fence.md`, and the last 20 lines of `signals/log.md`.
3. Check the prerequisites below. For anything missing, ask the cold-start questions and offer: (a) run the earlier skill now, or (b) fast path: answer the questions and this skill writes a minimal version of the missing artifact marked `status: draft (fast path)`.
4. Before any connector write or external send, check `context/fence.md` for the account's bucket and the action. Auto = proceed. Approve = ask. Never = decline and name the row.
5. On finish, update the artifact row in `INDEX.md` (with `[[wikilinks]]` to the files this run read) and append one line to `signals/log.md`: `<date> | <skill> | <files read> | <produced> | <human changed> | <open question>`.

## Prerequisites
- `artifacts/os-scored-accounts.md` with the account in Action Priority.

## The loop
1. **Refresh (KNOW):** run `os-account-context` on the account. New facts enter with source-derived confidence. Nothing is promoted to Verified without a named source.
2. **Re-score (DECIDE):** run `os-account-scorer` on this account only. If it drops out of Action Priority, stop and say why.
3. **Draft (ACT):** run `os-message-architecture`. The path comes from the scores, not from the user's preference.
4. **Evaluate:** run `os-message-evaluator`. On return codes, run step 3 again with the codes. Three rounds, then escalate to the rep with the codes and stop.
5. **Fence:** read `context/fence.md` for this bucket. Send = Approve for Action Priority, so present the passed draft and wait for an explicit yes. Never send from within the loop. Any Never-row action is declined by name.
6. **Log (Scribe):** append to the account record's Touches section (date, persona, channel, status) and to `signals/log.md`. Append only. Nothing deleted.

## Output
The account record updated, the message file at `passed` or `returned`, the log lines. Report: rounds used, path taken, fence result, next action and date.

## Hand off
Say: "Replies and outcomes go into the account record's Touches and Outcome sections. `os-weekly-review` reads them."
