APM

>Agent Skill

@willoscar/anchor-sheet

skilldevelopment

Extract per-subsection “anchor facts” (NO PROSE) from evidence packs so the writer is forced to include concrete numbers/benchmarks/limitations instead of generic summaries. **Trigger**: anchor sheet, anchor facts, numeric anchors, evidence hooks, 写作锚点, 数字锚点, 证据钩子. **Use when**: `outline/evidence_drafts.jsonl` exists and you want stronger, evidence-anchored writing in `sections/*.md`. **Skip if**: evidence packs are incomplete (fix `evidence-draft` first). **Network**: none. **Guardrail**: NO PROSE; do not invent facts; only select from existing evidence snippets/highlights.

development
apm::install
$apm install @willoscar/anchor-sheet
apm::skill.md
---
name: anchor-sheet
description: |
  Extract per-subsection “anchor facts” (NO PROSE) from evidence packs so the writer is forced to include concrete numbers/benchmarks/limitations instead of generic summaries.
  **Trigger**: anchor sheet, anchor facts, numeric anchors, evidence hooks, 写作锚点, 数字锚点, 证据钩子.
  **Use when**: `outline/evidence_drafts.jsonl` exists and you want stronger, evidence-anchored writing in `sections/*.md`.
  **Skip if**: evidence packs are incomplete (fix `evidence-draft` first).
  **Network**: none.
  **Guardrail**: NO PROSE; do not invent facts; only select from existing evidence snippets/highlights.
---

# Anchor Sheet (evidence → write hooks) [NO PROSE]

Purpose: make “what to actually say” explicit:
- select quantitative snippets (numbers/percentages)
- select evaluation anchors (benchmarks/datasets/metrics)
- select limitations/failure hooks

This prevents the writer from producing paragraph-shaped but **content-poor** prose.

## Inputs

- `outline/evidence_drafts.jsonl`
- `citations/ref.bib`

## Outputs

- `outline/anchor_sheet.jsonl`

## Output format (`outline/anchor_sheet.jsonl`)

JSONL (one object per H3 subsection).

Required fields:
- `sub_id`, `title`
- `anchors` (list; each anchor has `hook_type`, `text`, `citations`, and optional `paper_id/evidence_id/pointer`)

## Workflow

1. Read `outline/evidence_drafts.jsonl`.
2. Prefer anchors that contain:
   - a number (%, counts, scores)
   - an explicit benchmark/dataset/metric name
   - an explicit limitation/failure statement
3. Filter anchors to only citation keys present in `citations/ref.bib`.
4. Write `outline/anchor_sheet.jsonl`.

## Quality checklist

- [ ] Every H3 has >=10 cite-backed anchors (A150++ hard target).
- [ ] At least 1 anchor contains digits when the evidence pack contains digits.
- [ ] No placeholders (`TODO`/`…`/`(placeholder)`).

## Consumption policy (for C5 writers)

Anchors are intended to prevent “long but empty” prose. Treat them as **must-use hooks**, not optional ideas.

Recommended minimums per H3 (A150++):
- >=3 protocol anchors (benchmark/dataset/metric/budget/tool access)
- >=3 limitation/failure hooks (concrete, not generic “future work”)
- If digits exist in the evidence pack: include >=1 cited numeric anchor (digit + citation in the same paragraph)

Note:
- Anchor text is trimmed for readability and **does not** include ellipsis markers (to reduce accidental leakage into prose).

## Script

### Quick Start

- `python .codex/skills/anchor-sheet/scripts/run.py --help`
- `python .codex/skills/anchor-sheet/scripts/run.py --workspace workspaces/<ws>`

### All Options

- `--workspace <dir>`
- `--unit-id <U###>`
- `--inputs <semicolon-separated>`
- `--outputs <semicolon-separated>`
- `--checkpoint <C#>`

### Examples

- Default IO:
  - `python .codex/skills/anchor-sheet/scripts/run.py --workspace workspaces/<ws>`
- Explicit IO:
  - `python .codex/skills/anchor-sheet/scripts/run.py --workspace workspaces/<ws> --inputs "outline/evidence_drafts.jsonl;citations/ref.bib" --outputs "outline/anchor_sheet.jsonl"`

### Refinement marker (recommended; prevents churn)

When you are satisfied with anchor facts (and they are actually subsection-specific), create:
- `outline/anchor_sheet.refined.ok`

This is an explicit "I reviewed/refined this" signal:
- prevents scripts from regenerating and undoing your work
- (in strict runs) can be used as a completion signal before writing