# Classify Post To Section

> Assigns a substacker draft or published post to the best-fitting section (or to unassigned) based on content + section promises in section-map.md. Used by the Editor on every draft review (to load the right voice overlay) and by the Curator in batch mode. Trigger keywords — classify post, section assignment, which section, route post, per-draft section.

- Skill: `lyndonkl/classify-post-to-section` (Agent Skill)
- Install (CLI): `npx skillmds add lyndonkl/classify-post-to-section`
- Raw SKILL.md: https://api.skillmd.com/api/skills/lyndonkl/classify-post-to-section/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: lyndonkl (https://skillmd.com/u/lyndonkl)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/lyndonkl/classify-post-to-section

---


# Classify Post To Section

## Workflow

```
Per post (draft or published):
- [ ] Step 1: Read post body (not just title)
- [ ] Step 2: Read section-map.md for all current section promises
- [ ] Step 3: Score post fit against each section's promise (specific, testable, voice register)
- [ ] Step 4: If top score clearly above second → assign that section
- [ ] Step 5: If ambiguous between two sections → propose both; writer picks
- [ ] Step 6: If no section scores above threshold → assign `unassigned`
- [ ] Step 7: Return: {section_slug, confidence, rationale}
```

## Scoring dimensions

For each section, compute fit on:
- **Promise match**: does this post deliver on the section's one-sentence promise?
- **Voice register**: does the post's register (confessional-operational / technical-mechanistic / epistolary) match the section's voice overlay?
- **Topic tag overlap**: does the post's internal `topics` frontmatter intersect with the section's typical topic distribution?

## Worked example

**Draft**: "KV Cache as a library card catalog" — full body on KV cache mechanics, diagram-heavy, cites Vaswani et al. and Dao et al.

**Current sections**:
- `kalshi-log`: scoreboard-required, prediction markets / IPL. Promise match: low. Score: 1/5.
- `agent-workshop`: mechanism + architecture, code-fence-welcome. Promise match: high. Score: 5/5.

**Output**: `{section_slug: agent-workshop, confidence: high, rationale: "mechanism post with explicit paper citations; matches Agent Workshop register and promise"}`.

## Guardrails

1. Never assign without scoring at least 2 candidate sections.
2. If writer has manually annotated `section: X` in frontmatter, respect it — this skill only proposes when frontmatter is missing or `unassigned`.
3. Ambiguous cases return both candidates; do not arbitrarily pick.
4. "unassigned" is a valid output. Don't force fit.
5. Read body, not just title.

