willoscar/writer-context-pack
|
npx skills add https://github.com/WILLOSCAR/research-units-pipeline-skills --skill writer-context-pack
Purpose: reduce C5 “hollow writing” by giving the writer a single, per-subsection context pack:
subsection_briefs)evidence_drafts)anchor_sheet)evidence_bindingsoutline/outline.ymloutline/subsection_briefs.jsonloutline/chapter_briefs.jsonloutline/evidence_drafts.jsonloutline/anchor_sheet.jsonloutline/evidence_bindings.jsonlcitations/ref.bibreferences/source_text_hygiene.md when bad source sentences or paper self-narration leak into writer packsassets/paper_voice_palette.jsonassets/source_text_hygiene.jsonassets/context_pack_policy.jsonassets/limitation-signals.json — shared polarity rules used beforea sentence can become a limitation hook
outline/writer_context_packs.jsonloutline/writer_context_packs.jsonl)JSONL, one object per H3 subsection.
Required keys:
sub_id, title, section_id, section_titlerq, thesis, axes, paragraph_planclusters (copied from subsection briefs so writer-side evidence can still be assigned per route when comparison cards are sparse)tension_statement, evaluation_anchor_minimal (copied from subsection briefs; concrete tension + minimal eval context slots)opener_mode, opener_hint (paper-voice hint to vary subsection openers without template labels)bridge_terms, contrast_hook, required_evidence_fields (copied from subsection briefs; transition/evidence handles; NO NEW FACTS)chapter_synthesis_mode (copied from chapter briefs; helps avoid template-y “Taken together…” repeats)allowed_bibkeys_{selected,mapped,chapter,global}anchor_facts (trimmed)comparison_cards (trimmed)must_use (writer contract; minima derived from pack richness + draft_profile)do_not_repeat_phrases (rewrite triggers; high-signal generator stems to avoid repeating verbatim)pack_warnings (list; why this pack may still draft hollow if not fixed upstream)paper_voice_palette (positive paper-voice phrase palette + rewrite stems; avoids "generator voice" without brittle hard blocks)outline/paper_voice_palette.json (if present), else repo default .codex/skills/writer-context-pack/assets/paper_voice_palette.json.role_cards (section author / evidence steward / style harmonizer). Treat them as role cues and rewrite intentions, not sentence templates.pack_stats (object; raw/kept/dropped counts + trim policy so truncation/drop is not silent)Trim policy:
pack_stats.trim_policy).Treat each pack as an executable checklist, not optional context:
A150++ minima (defaults; used by gates and self-loops):
course_paper minima use a smaller context pack: paragraph_plan 6,
anchor_facts >=6, comparison_cards >=3, limitation_hooks >=2, and
allowed_bibkeys_mapped >=8. The writer-facing must_use subset is 3 anchors,
2 comparisons, and 1 limitation.
paragraph_plan (don’t skip planned paragraphs; merge only if you keep the same contrasts/anchors).paragraph_plan[].connector_phrase as semantic guidance, not copy-paste; paraphrase and vary; avoid Next, we ... narration.anchor_facts item that matches your paragraph’s claim type (eval / numeric / limitation), when present.comparison_cards to write explicit A-vs-B contrast sentences (avoid “A then B” separate summaries).thesis statement (or a faithful paraphrase with the same commitment level).This subsection ...) and avoid repeating literal opener labels (e.g., Key takeaway:) across many H3s.opener_mode / opener_hint to vary how paragraph 1 frames the subsection (tension-first vs decision-first vs lens-first).do_not_repeat_phrases as rewrite triggers (paper voice hygiene):grad-paragraph repeatedly (tension → contrast → evaluation anchor → limitation).allowed_bibkeys_selected (then allowed_bibkeys_mapped, then allowed_bibkeys_chapter). allowed_bibkeys_global is reserved for cross-cutting works mapped across many subsections (foundations/benchmarks/surveys): use it sparingly and still keep >=3 subsection-specific citations per H3.Treat the pack as a set of *writing constraints + affordances*.
tension_statement, opener_mode, opener_hint, thesiscomparison_cards, axesevaluation_anchor_minimal, evaluation_protocolevaluation_protocol as metadata only; do not replay raw benchmark-name lists as body prose.limitation_hooks, required_evidence_fieldspack_warnings (as a signal), not as copyallowed_bibkeys_selected (then mapped, then chapter, rarely global)Bad (narration opener):
This subsection surveys tool interfaces for agents ...Better (content-first opener):
A central tension in tool interfaces is balancing expressive action spaces with verifiable execution; we argue that interface contracts largely determine what evaluation claims can be trusted.Bad (meta guidance):
Therefore, survey comparisons should focus on ...Better (literature-facing observation):
Across reported protocols, comparisons often hinge on whether tools are treated as deterministic APIs or as stochastic resources, which changes both cost and failure modes.uv run python .codex/skills/writer-context-pack/scripts/run.py --helpuv run python .codex/skills/writer-context-pack/scripts/run.py --workspace <workspace>--workspace <dir>--unit-id <U###>--inputs <semicolon-separated>--outputs <semicolon-separated>--checkpoint <C#>uv run python .codex/skills/writer-context-pack/scripts/run.py --workspace <workspace>uv run python .codex/skills/writer-context-pack/scripts/run.py --workspace <workspace> --inputs "outline/outline.yml;outline/subsection_briefs.jsonl;outline/chapter_briefs.jsonl;outline/evidence_drafts.jsonl;outline/anchor_sheet.jsonl;outline/evidence_bindings.jsonl;citations/ref.bib" --outputs "outline/writer_context_packs.jsonl"When you are satisfied with writer packs (and they are consistent with briefs/bindings), create:
outline/writer_context_packs.refined.okThis is an explicit "I reviewed/refined this" signal:
Take willoscar/writer-context-pack from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.