---
name: manage-watching-domains
description: Manage domain-watch surveillance configs — seed new domains, review scan status and proposals, activate Watch Log proposals into thinking topics, pause domains, and update PIRs or watch queries
automation: manual
allowed-tools: Read, Write, Edit, Grep, Glob, Bash
user-invocable: true
argument-hint: "[review|seed|activate|pause|update] [domain-slug]"
---

# Manage Watching Domains

Human-in-the-loop manager for the domain-watch surveillance layer. Handles the full lifecycle: seeding new domains for continuous monitoring, reviewing scan status and signal level, activating Watch Log proposals into thinking topics, pausing domains, and updating intelligence requirements.

**Companion skills:**
- `.claude/skills/domain-watch/SKILL.md` — the autonomous scanning engine (runs daily, perceives and proposes)
- `.claude/skills/manage-thinking-topics/SKILL.md` — manages the thinking topics that watching domains feed into

**Architecture:** domain-watch perceives → manage-watching-domains activates → incubation-loop analyses

## State Dependencies

| Source | Location | Read | Write | Description |
|--------|----------|------|-------|-------------|
| Watching Registry | `Brain/05-Meta/Watching/WATCHING-REGISTRY.md` | ✓ | ✓ | Master list of domains + scan status |
| Domain Configs | `Brain/05-Meta/Watching/[domain-slug].md` | ✓ | ✓ | Per-domain PIRs, queries, baseline counts |
| Watch Log | `Brain/05-Meta/Watching/WATCH-LOG.md` | ✓ | ✓ | Proposals awaiting activation |
| Thinking Registry | `Brain/05-Meta/Thinking/THINKING-REGISTRY.md` | ✓ | ✓ | Destination when activating proposals |
| Thinking Files | `Brain/05-Meta/Thinking/[topic-slug].md` | | ✓ | Created during activation |

## Modes

Invoke with one of five modes. If no mode is provided, default to `review`.

---

## Mode: review

**Purpose:** Full status dashboard — what domains are active, when they last scanned, what signal level they found, and what proposals are sitting in the Watch Log awaiting your decision.

### Step 1: Read Registry and Date

```bash
date '+%Y-%m-%d'
```

Read `Brain/05-Meta/Watching/WATCHING-REGISTRY.md`. Parse all domains.

### Step 2: Load Domain Summaries

For each domain, read `Brain/05-Meta/Watching/[domain-slug].md`. Extract:
- `label` - human-readable name
- `mode` - surveillance or hypothesis
- `last_scan` - date of last scan (null = never scanned)
- `notes_at_scan` - baseline note count
- `spawn_threshold` - delta needed to trigger proposal
- `priority_intelligence_requirements` - list of PIRs (count them)
- `watch_queries` - list of search terms (count them)

### Step 3: Load Watch Log Proposals

Read `Brain/05-Meta/Watching/WATCH-LOG.md`.

Extract all proposals that are not yet marked `**Activated:**`. For each:
- Domain slug
- Signal level (HIGH/MEDIUM)
- Scan date
- Proposed central question
- Suggested slug
- Whether it has been activated or not

### Step 4: Present Status Report

```
## Watching Domains: Status Review [DATE]

### Active Domains (N)

| Domain | Mode | Last Scan | Notes @ Scan | Threshold | PIRs | Status |
|--------|------|-----------|-------------|-----------|------|--------|
| [label] | surveillance/hypothesis | YYYY-MM-DD or never | N | +N | N | active |

### Proposals Awaiting Activation (N)

| Domain | Signal | Scan Date | Proposed Question | Suggested Slug |
|--------|--------|-----------|------------------|----------------|

### Paused Domains (N)

| Domain | Paused Since | Reason |
|--------|-------------|--------|

### Summary
- [N] domains under active surveillance
- [N] proposals waiting for your activation decision
- [N] domains never scanned (next domain-watch run will establish baseline)
- Next domain-watch run: daily at 7am UTC
```

If proposals are waiting: **"[N] proposals in Watch Log — run `/manage-watching-domains activate [slug]` to seed into the incubation loop."**

If domains have `last_scan: null`: **"[N] domains have never been scanned — run `/domain-watch` to establish baselines."**

---

## Mode: seed

**Purpose:** Add a new domain to the surveillance registry.

**Argument:** domain slug (e.g., `quantum-computing-applications`)

### Step 1: Gather Requirements

If the domain slug is not provided, ask for it. Then gather:

1. **Label** - Human-readable domain name (e.g., "Quantum Computing Applications")
2. **Mode** - `surveillance` (watch for accumulation of notes on a topic) or `hypothesis` (track whether specific claims become answerable)
   - Use `surveillance` for broad domains you want to monitor
   - Use `hypothesis` for specific questions where you're waiting for evidence
3. **Watch queries** - 2-4 semantic search terms that capture what to look for in the KB (these run against Local Brain Search)
4. **Priority Intelligence Requirements** - 2-4 specific questions you want answered when the domain produces new signal. These should be answerable (not vague). Examples:
   - Bad: "What's happening with quantum computing?"
   - Good: "Is there evidence that quantum advantage has been demonstrated for a practical ML task?"
5. **Spawn threshold** - How many new notes must accumulate before triggering a proposal (default: 3; use 2 for fast-moving areas, 5 for slow ones)
6. **Why this domain** - 1-2 sentences on why it warrants ongoing surveillance
7. **What would trigger incubation** - Concrete examples of the kind of signal worth an incubation topic

### Step 2: Validate Slug

Check that `Brain/05-Meta/Watching/[domain-slug].md` does NOT already exist. If it does, warn and stop.

Check the slug is not already in the registry. If it is, warn and stop.

### Step 3: Create Domain Config

```bash
date '+%Y-%m-%d'
```

Create `Brain/05-Meta/Watching/[domain-slug].md`:

```markdown
---
created: YYYY-MM-DD
updated: YYYY-MM-DD
created_by: claude-sonnet-4-6
updated_by: claude-sonnet-4-6
agent_version: 01.25
slug: [domain-slug]
label: "[Human-readable label]"
mode: [surveillance|hypothesis]
watch_queries:
  - "[primary search term]"
  - "[secondary search term]"
priority_intelligence_requirements:
  - "PIR 1: [specific answerable question]"
  - "PIR 2: [specific answerable question]"
last_scan: null
notes_at_scan: 0
spawn_threshold: [N]
---

# Watching: [Label]

## Why This Domain
[1-2 sentences on why this domain warrants ongoing surveillance]

## What Would Trigger Incubation
[Concrete examples of the kind of signal that would warrant a thinking topic]

## Related Thinking Topics
None yet.
```

### Step 4: Add to Registry

Edit `Brain/05-Meta/Watching/WATCHING-REGISTRY.md`:

Add a row to the domains table:
```
| [domain-slug] | [label] | [mode] | null | active |
```

Update `updated` and `updated_by` in frontmatter.

### Step 5: Confirm

Report:
- Domain config created at `Brain/05-Meta/Watching/[domain-slug].md`
- Registry updated - domain is now active
- First domain-watch run will establish the baseline note count (no proposal on first run)
- Subsequent runs will detect delta against baseline and score signal

---

## Mode: activate

**Purpose:** Take a Watch Log proposal and create a thinking topic from it, completing the perception → deliberation handoff.

**Argument:** suggested-slug from a Watch Log proposal (or domain-slug to pick the latest proposal for that domain)

### Step 1: Load the Proposal

Read `Brain/05-Meta/Watching/WATCH-LOG.md`.

Find the proposal matching the slug argument. If multiple proposals exist for the same domain, show them all and ask which to activate.

If the proposal is already marked `**Activated:**`, warn and stop.

Extract from the proposal:
- Proposed central question
- Suggested slug
- Initial hypotheses (H1, H2) and starting confidence
- Known evidence (note links and external sources)
- Signal basis (why this was flagged)

### Step 2: Validate No Duplicate

Check that `Brain/05-Meta/Thinking/[suggested-slug].md` does NOT already exist.

Check that the slug is not already in the Thinking Registry. If so, warn and offer to use a variant slug.

### Step 3: Gather Any Additions

Present the proposed central question and hypotheses. Ask:

> "Activating: **[suggested-slug]**
>
> Central question: [question]
> H1: [statement] (~X%)
> H2: [statement] (~Y%)
>
> Any changes before creating? (Press enter to accept as-is, or describe revisions)"

**[APPROVAL GATE]** Wait for response.

### Step 4: Create Thinking File

Create `Brain/05-Meta/Thinking/[suggested-slug].md` using the standard incubation-loop template:

```markdown
---
created: YYYY-MM-DD
updated: YYYY-MM-DD
created_by: claude-sonnet-4-6
updated_by: claude-sonnet-4-6
agent_version: 01.25
topic: "[exact central question]"
run_count: 0
last_run: null
status: active
---

# Thinking: [Topic Title]

## Central Question
[The exact question from the proposal, with any revisions]

## Why This Question Matters
[1-2 sentences synthesized from the Watch Log signal basis]

## Initial Hypotheses
| Hypothesis | Initial Confidence | Basis |
|-----------|-------------------|-------|
| H1: [statement] | X% | [from proposal known evidence] |
| H2: [statement] | Y% | [from proposal known evidence] |

## Known Evidence (Pre-Run)
[Note links and external sources from the Watch Log proposal]

## Constraints and Assumptions
[Any scope limits worth noting]

---
*Analytical runs will be appended below by the incubation loop*
```

### Step 5: Add to Thinking Registry

Edit `Brain/05-Meta/Thinking/THINKING-REGISTRY.md`:

Add a row to the **Active Topics** table:
```
| [suggested-slug] | [central question] | active | 0 | null |
```

Update `updated` and `updated_by` in frontmatter.

### Step 6: Mark Proposal as Activated

Edit `Brain/05-Meta/Watching/WATCH-LOG.md`:

Find the proposal entry and append under it:
```
**Activated:** [[suggested-slug]] — YYYY-MM-DD
```

Update `updated` and `updated_by` in frontmatter.

### Step 7: Update Domain Config (Related Thinking Topics)

Edit `Brain/05-Meta/Watching/[domain-slug].md`:

In the **Related Thinking Topics** section, add:
```
- [[suggested-slug]] — activated YYYY-MM-DD
```

Update `updated` and `updated_by` in frontmatter.

### Step 8: Confirm

Report:
- Thinking file created at `Brain/05-Meta/Thinking/[suggested-slug].md`
- Added to Thinking Registry as active
- Watch Log entry marked activated
- Domain config updated with related topic link
- First incubation-loop run will apply: **ACH Audit** (move 0)

---

## Mode: pause

**Purpose:** Temporarily suspend a domain from scanning (without deleting its config or history).

**Argument:** domain slug

### Step 1: Load Domain

Read `Brain/05-Meta/Watching/[domain-slug].md`. Show:
- Label, mode, last scan date, note count at last scan
- Any related thinking topics

### Step 2: Confirm Pause

**[APPROVAL GATE]** Ask:
> "Pausing '[label]' will stop domain-watch from scanning this domain on scheduled runs. The config and Watch Log history are preserved. Reason for pausing? (or type 'cancel')"

Capture the reason.

### Step 3: Update Domain Config

Edit `Brain/05-Meta/Watching/[domain-slug].md`:
- Add `paused_reason: "[reason]"` to frontmatter
- Add `paused_on: YYYY-MM-DD` to frontmatter
- Update `updated` and `updated_by`

### Step 4: Update Watching Registry

Edit `Brain/05-Meta/Watching/WATCHING-REGISTRY.md`:
- Change the domain's `Status` column to `paused`
- Update `updated` and `updated_by` in frontmatter

### Step 5: Confirm

Report:
- Domain config updated with pause reason and date
- Registry status set to paused
- To resume: edit the domain config, remove `paused_reason` and `paused_on`, set registry status back to `active`

---

## Mode: update

**Purpose:** Modify a domain's PIRs or watch queries to sharpen its signal detection.

**Argument:** domain slug

### Step 1: Load Current Config

Read `Brain/05-Meta/Watching/[domain-slug].md`. Display current:
- Watch queries (numbered list)
- Priority Intelligence Requirements (numbered list)
- Spawn threshold

### Step 2: Gather Changes

**[APPROVAL GATE]** Ask:
> "What do you want to update for '[label]'?
> 1. Add/remove/edit a watch query
> 2. Add/remove/edit a PIR
> 3. Change the spawn threshold
> (or describe the change directly)"

Apply the requested changes. Do not overwrite other frontmatter fields.

### Step 3: Write Updated Config

Edit `Brain/05-Meta/Watching/[domain-slug].md`:
- Update the changed fields in frontmatter
- Set `updated: YYYY-MM-DD` and `updated_by: claude-sonnet-4-6`

### Step 4: Confirm

Report the specific fields changed and their new values.

---

## Error Handling

| Error | Recovery |
|-------|----------|
| Watching Registry missing | Stop; inform user to create it or run `/domain-watch` first |
| Domain config missing for registry entry | Log warning; show the slug and offer to remove the orphaned registry entry |
| Slug already exists (seed mode) | Stop; show existing file path |
| No proposals in Watch Log (activate mode) | Report; suggest running `/domain-watch` to scan domains |
| Proposal already activated (activate mode) | Stop; show the thinking topic it was activated into |
| Domain already paused (pause mode) | Show current pause reason; ask if they want to resume instead |

---

## Self-Improvement

After completing this skill's primary task, consider tactical improvements:

- [ ] **Review execution**: Were there friction points, unclear steps, or inefficiencies?
- [ ] **Identify improvements**: Could the review output, activation flow, or PIR guidance be sharper?
- [ ] **Scope check**: Only execution changes — NOT changes to the perceive-flag-propose pipeline design
- [ ] **Apply improvement** (if identified):
  - [ ] Edit this SKILL.md with the specific improvement
  - [ ] Keep changes minimal and focused
- [ ] **Version control**:
  - [ ] `git add .claude/skills/manage-watching-domains/SKILL.md`
  - [ ] `git commit -m "refactor(manage-watching-domains): <brief improvement>"`
