diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 304ac16..a08797b 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -51,7 +51,7 @@ "name": "skywatch-investigations", "source": "./plugins/skywatch-investigations", "description": "Investigation toolkit for AT Protocol network analysis — MCP tools for ClickHouse data access, domain/IP/URL recon, content similarity, and Ozone labelling, with skills codifying investigation methodology and agents orchestrating the full workflow.", - "version": "0.23.4", + "version": "0.23.5", "author": { "name": "Skywatch Blue" }, diff --git a/CHANGELOG.md b/CHANGELOG.md index b5d0798..70e95be 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ All notable changes to skywatch-skills plugins are documented here. +## skywatch-investigations 0.23.5 + +**Fixed:** +- `working-the-queue`: added mandatory detail block template with structured format — profile fields, numbered posts with AT-URIs and verbatim text, moderation history, data sources, recommendation last +- `working-the-queue`: explicitly prohibits inventing alternative formats (e.g., "key evidence" summary sections) that replace content with editorialised characterisations +- `working-the-queue`: all posts reviewed must be listed — no curated subsets, no truncation, no placeholders + ## skywatch-investigations 0.23.4 **Changed:** diff --git a/plugins/skywatch-investigations/.claude-plugin/plugin.json b/plugins/skywatch-investigations/.claude-plugin/plugin.json index c8421b8..2e2cfe3 100644 --- a/plugins/skywatch-investigations/.claude-plugin/plugin.json +++ b/plugins/skywatch-investigations/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "skywatch-investigations", "description": "Investigation toolkit for AT Protocol network analysis — bundles MCP tools for ClickHouse data access, domain/IP/URL reconnaissance, content similarity detection, and Ozone moderation labelling, alongside skills codifying investigation methodology and agents orchestrating the full workflow.", - "version": "0.23.4", + "version": "0.23.5", "author": { "name": "Skywatch Blue" }, diff --git a/plugins/skywatch-investigations/CLAUDE.md b/plugins/skywatch-investigations/CLAUDE.md index 6a43af8..647d888 100644 --- a/plugins/skywatch-investigations/CLAUDE.md +++ b/plugins/skywatch-investigations/CLAUDE.md @@ -126,7 +126,7 @@ The MCP server is an external Python (FastMCP) package installed via `uvx` from | File | Purpose | |------|---------| -| `.claude-plugin/plugin.json` | Plugin manifest (name, version 0.23.4, metadata) | +| `.claude-plugin/plugin.json` | Plugin manifest (name, version 0.23.5, metadata) | | `.mcp.json` | MCP server configuration with ClickHouse env vars (Ozone env vars set via shell/settings) | | `agents/investigator.md` | Orchestrator agent, dispatches data-analyst for queries | | `agents/data-analyst.md` | ClickHouse query agent, focused on osprey_execution_results | diff --git a/plugins/skywatch-investigations/skills/working-the-queue/SKILL.md b/plugins/skywatch-investigations/skills/working-the-queue/SKILL.md index fb92ce2..e464a1b 100644 --- a/plugins/skywatch-investigations/skills/working-the-queue/SKILL.md +++ b/plugins/skywatch-investigations/skills/working-the-queue/SKILL.md @@ -290,22 +290,54 @@ The summary table is an index, not a decision surface. It helps the analyst navi ### Per-Subject Detail -The detail blocks are the decision surface — the analyst reads these to decide, not the summary table. Present a detail block for **every** subject (not just `label` recommendations). Each block must include: +The detail blocks are the decision surface — the analyst reads these to decide, not the summary table. Present a detail block for **every** subject (not just `label` recommendations). -1. **Factual content the analyst can verify.** This is the most important part. The agent's role is to gather and present evidence — the analyst makes the decision. The analyst cannot trust the agent's judgment without seeing what the agent saw. +**Do NOT invent alternative presentation formats.** No "key evidence" summary sections, no one-liner evidence lists, no collapsed characterisations. Use the template below for every subject. The template exists because previous versions of this agent replaced evidence with editorialised summaries — which is useless for moderation decisions. - Every detail block must include BOTH profile context AND post content, regardless of whether the report targets a post or an account: +**Template (mandatory format):** - - **Profile context (always included):** the account's handle, display name, and bio/description — all reproduced verbatim. This is essential context for every subject. A post cannot be evaluated without knowing who posted it. - - **For post-level subjects:** the EXACT text of the reported post, reproduced character-for-character. Include the AT-URI. For replies, also show the parent post(s) verbatim with their AT-URIs so the thread context is visible. - - **For account-level subjects:** the full text of all posts reviewed during data collection — every post, with AT-URIs. Do not sample or truncate. The analyst needs the complete evidence set to verify pattern claims. - - **NEVER summarise, paraphrase, excerpt, or editorialise content in place of showing it.** Characterisations like "right-wing reply-guy" or "combative but contextual" are not evidence — they are conclusions. Show the content, then state the conclusion separately. +``` +--- +### #[N] — [handle] ([DID]) + +**Profile:** +- Display Name: [verbatim] +- Bio: [verbatim, full text] +- Handle: [handle] + +**Report:** [reporter handle] reported [post AT-URI or account DID] — reason: "[reporter's comment verbatim]" + +**Content Reviewed:** + +1. at://did:plc:.../app.bsky.feed.post/[rkey1] + "[full verbatim post text]" -2. **The agent's recommendation and reasoning** — classification, policy basis, confidence. This comes AFTER the factual content, not instead of it. The recommendation is the agent's suggestion — the analyst decides. +2. at://did:plc:.../app.bsky.feed.post/[rkey2] + "[full verbatim post text]" -3. **Supporting context** — relevant moderation history, rule hit patterns, thread context, account relationship details. Include AT-URIs for all cited posts. +3. at://did:plc:.../app.bsky.feed.post/[rkey3] + "[full verbatim post text]" + +[...continue for ALL posts reviewed — do not truncate, sample, or summarise...] + +**Moderation History:** [prior labels, reports, actions — or "none"] + +**Data Sources:** [N] posts from ClickHouse, [N] posts from PDS list_records, profile from get_record + +**Recommendation:** [classification] — [label if applicable] at [level] +**Policy Basis:** [policy reference] +**Confidence:** [high/medium/low] +**Reasoning:** [agent's reasoning — AFTER the content, not instead of it] +--- +``` -The analyst should be able to read a detail block and make a decision without needing to go look anything up. If the reported content is an image or media that can't be displayed as text, note that and provide the AT-URI so the analyst can review it directly. +Rules: +- Every post in "Content Reviewed" must have its full AT-URI and full verbatim text. No excerpts, no "[post about X]" placeholders, no editorialisation in place of content. +- For replies, show the parent post(s) above the reply with their AT-URIs so the thread reads top-to-bottom. +- For images or media that can't be displayed as text, write "[image]" and provide the AT-URI so the analyst can review it directly. +- Profile fields are always verbatim. If a field is empty, write "(none)". +- The "Content Reviewed" section must include ALL posts the subagent reviewed, not a curated subset. If the subagent reviewed 50 posts, list all 50. +- **NEVER summarise, paraphrase, excerpt, or editorialise content in place of showing it.** Characterisations like "right-wing reply-guy" or "combative but contextual" are not evidence — they are conclusions. The content speaks for itself. **Human in the loop:** The agent presents evidence and recommendations. The analyst makes decisions. No label is applied without the analyst's explicit confirmation. Verbose output is expected and preferred — more evidence is always better than less.