# fh-commons — Contention-Born Skill Habitat

**A different layer of plugin from fh-meta.**

fh-meta = meta-engineering skills for operating, diagnosing, and improving the harness itself  
fh-commons = general-purpose utility skills born from the contention layer, transplantable to any project

## Placement Criteria

When the `contention-layer` skill harvests contentions and generates new skill candidates:

| Determination | Destination |
|---|---|
| Harness engineering in nature | `fh-meta` |
| Project-general · domain-agnostic | **`fh-commons`** (this plugin) |
| Domain/team specific | field harvest (decided by the field team) |

## Skill List

| Skill | Description | Contention Parent |
|---|---|---|
| `convergence-loop` | General-purpose gate reinforcement that replaces single-pass structures with a convergence loop of up to N rounds | harvest-loop (recurring single-pass-distrust pattern across hub gates) |
| `deliberation` | Innovator → Devil-Advocate → Mediator 3-layer multi-perspective synthesis. Generates conditional verdicts without binary win/loss | Migrated from fh-meta (2026-05-23 — domain-agnostic general decision structure) |
| `ko-tech-writer` | Korean technical-writing pipeline — register detection, venue calibration, translationese scan, honesty layering, number/claim gate, perceptual QA, **spoken-script pass (Step 5-s: sound render + listening QA)** | Field-session harvest (2026-08-10 — conference tech-doc revision session, operator-driven shipping) |

## The `origin` Field

Commons skills include the following fields in their SKILL.md frontmatter:

```yaml
# Contention-born (extracted by contention-layer)
origin: contention-layer
contention-parents: [skill-A, skill-B]

# Migrated from fh-meta (reclassified as general-purpose)
origin: fh-meta
migration: "YYYY-MM-DD — reason for migration"
```
